pdfjs-dist 2.0.550 → 2.3.200

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (168) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +21618 -14369
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +22758 -11399
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/image_decoders/pdf.image_decoders.js +11500 -0
  10. package/image_decoders/pdf.image_decoders.js.map +1 -0
  11. package/image_decoders/pdf.image_decoders.min.js +1 -0
  12. package/lib/core/annotation.js +767 -258
  13. package/lib/core/arithmetic_decoder.js +275 -245
  14. package/lib/core/bidi.js +65 -6
  15. package/lib/core/ccitt.js +173 -18
  16. package/lib/core/ccitt_stream.js +15 -6
  17. package/lib/core/cff_parser.js +433 -61
  18. package/lib/core/charsets.js +5 -4
  19. package/lib/core/chunked_stream.js +428 -157
  20. package/lib/core/cmap.js +326 -87
  21. package/lib/core/colorspace.js +874 -594
  22. package/lib/core/core_utils.js +173 -0
  23. package/lib/core/crypto.js +290 -45
  24. package/lib/core/document.js +575 -272
  25. package/lib/core/encodings.js +19 -10
  26. package/lib/core/evaluator.js +1032 -351
  27. package/lib/core/font_renderer.js +331 -97
  28. package/lib/core/fonts.js +813 -196
  29. package/lib/core/function.js +253 -27
  30. package/lib/core/glyphlist.js +5 -3
  31. package/lib/core/image.js +169 -62
  32. package/lib/core/image_utils.js +111 -0
  33. package/lib/core/jbig2.js +502 -72
  34. package/lib/core/jbig2_stream.js +19 -8
  35. package/lib/core/jpeg_stream.js +38 -13
  36. package/lib/core/jpg.js +293 -52
  37. package/lib/core/jpx.js +419 -12
  38. package/lib/core/jpx_stream.js +18 -6
  39. package/lib/core/metrics.js +15 -15
  40. package/lib/core/murmurhash3.js +56 -34
  41. package/lib/core/obj.js +1368 -500
  42. package/lib/core/operator_list.js +159 -43
  43. package/lib/core/parser.js +544 -199
  44. package/lib/core/pattern.js +170 -21
  45. package/lib/core/pdf_manager.js +324 -134
  46. package/lib/core/primitives.js +169 -61
  47. package/lib/core/ps_parser.js +134 -45
  48. package/lib/core/standard_fonts.js +17 -17
  49. package/lib/core/stream.js +327 -34
  50. package/lib/core/type1_parser.js +148 -8
  51. package/lib/core/unicode.js +32 -5
  52. package/lib/core/worker.js +215 -229
  53. package/lib/core/worker_stream.js +277 -0
  54. package/lib/display/annotation_layer.js +618 -192
  55. package/lib/display/api.js +1798 -882
  56. package/lib/display/api_compatibility.js +5 -10
  57. package/lib/display/canvas.js +366 -45
  58. package/lib/display/content_disposition.js +71 -24
  59. package/lib/display/display_utils.js +777 -0
  60. package/lib/display/fetch_stream.js +205 -87
  61. package/lib/display/font_loader.js +468 -236
  62. package/lib/display/metadata.js +38 -16
  63. package/lib/display/network.js +635 -428
  64. package/lib/display/network_utils.js +38 -19
  65. package/lib/display/node_stream.js +367 -175
  66. package/lib/display/pattern_helper.js +103 -36
  67. package/lib/display/svg.js +1232 -519
  68. package/lib/display/text_layer.js +208 -75
  69. package/lib/display/transport_stream.js +345 -94
  70. package/lib/display/webgl.js +64 -18
  71. package/lib/display/worker_options.js +5 -4
  72. package/lib/display/xml_parser.js +166 -53
  73. package/lib/examples/node/domstubs.js +60 -4
  74. package/lib/pdf.js +35 -14
  75. package/lib/pdf.worker.js +5 -3
  76. package/lib/shared/compatibility.js +170 -572
  77. package/lib/shared/global_scope.js +2 -2
  78. package/lib/shared/is_node.js +4 -4
  79. package/lib/shared/message_handler.js +216 -163
  80. package/lib/shared/streams_polyfill.js +21 -17
  81. package/lib/shared/util.js +495 -385
  82. package/lib/test/unit/annotation_spec.js +1464 -401
  83. package/lib/test/unit/api_spec.js +718 -361
  84. package/lib/test/unit/bidi_spec.js +7 -7
  85. package/lib/test/unit/cff_parser_spec.js +54 -11
  86. package/lib/test/unit/clitests_helper.js +9 -10
  87. package/lib/test/unit/cmap_spec.js +95 -41
  88. package/lib/test/unit/colorspace_spec.js +115 -63
  89. package/lib/test/unit/core_utils_spec.js +191 -0
  90. package/lib/test/unit/crypto_spec.js +17 -5
  91. package/lib/test/unit/custom_spec.js +43 -55
  92. package/lib/test/unit/display_svg_spec.js +34 -18
  93. package/lib/test/unit/display_utils_spec.js +273 -0
  94. package/lib/test/unit/document_spec.js +8 -13
  95. package/lib/test/unit/encodings_spec.js +25 -45
  96. package/lib/test/unit/evaluator_spec.js +59 -20
  97. package/lib/test/unit/fetch_stream_spec.js +111 -0
  98. package/lib/test/unit/function_spec.js +17 -5
  99. package/lib/test/unit/jasmine-boot.js +33 -20
  100. package/lib/test/unit/message_handler_spec.js +30 -13
  101. package/lib/test/unit/metadata_spec.js +71 -11
  102. package/lib/test/unit/murmurhash3_spec.js +3 -3
  103. package/lib/test/unit/network_spec.js +22 -55
  104. package/lib/test/unit/network_utils_spec.js +105 -14
  105. package/lib/test/unit/node_stream_spec.js +58 -34
  106. package/lib/test/unit/parser_spec.js +162 -71
  107. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  108. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  109. package/lib/test/unit/pdf_history_spec.js +21 -9
  110. package/lib/test/unit/primitives_spec.js +55 -22
  111. package/lib/test/unit/stream_spec.js +12 -4
  112. package/lib/test/unit/test_utils.js +273 -56
  113. package/lib/test/unit/testreporter.js +21 -3
  114. package/lib/test/unit/type1_parser_spec.js +9 -7
  115. package/lib/test/unit/ui_utils_spec.js +236 -36
  116. package/lib/test/unit/unicode_spec.js +18 -15
  117. package/lib/test/unit/util_spec.js +87 -128
  118. package/lib/web/annotation_layer_builder.js +39 -22
  119. package/lib/web/app.js +1252 -609
  120. package/lib/web/app_options.js +103 -65
  121. package/lib/web/base_viewer.js +522 -242
  122. package/lib/web/chromecom.js +259 -117
  123. package/lib/web/debugger.js +166 -22
  124. package/lib/web/download_manager.js +31 -12
  125. package/lib/web/firefox_print_service.js +27 -14
  126. package/lib/web/firefoxcom.js +318 -78
  127. package/lib/web/genericcom.js +89 -30
  128. package/lib/web/genericl10n.js +142 -30
  129. package/lib/web/grab_to_pan.js +28 -4
  130. package/lib/web/interfaces.js +174 -47
  131. package/lib/web/overlay_manager.js +235 -85
  132. package/lib/web/password_prompt.js +22 -14
  133. package/lib/web/pdf_attachment_viewer.js +38 -18
  134. package/lib/web/pdf_cursor_tools.js +39 -16
  135. package/lib/web/pdf_document_properties.js +255 -136
  136. package/lib/web/pdf_find_bar.js +84 -40
  137. package/lib/web/pdf_find_controller.js +495 -184
  138. package/lib/web/pdf_find_utils.js +111 -0
  139. package/lib/web/pdf_history.js +190 -53
  140. package/lib/web/pdf_link_service.js +144 -79
  141. package/lib/web/pdf_outline_viewer.js +124 -47
  142. package/lib/web/pdf_page_view.js +194 -74
  143. package/lib/web/pdf_presentation_mode.js +99 -34
  144. package/lib/web/pdf_print_service.js +59 -13
  145. package/lib/web/pdf_rendering_queue.js +28 -9
  146. package/lib/web/pdf_sidebar.js +144 -81
  147. package/lib/web/pdf_sidebar_resizer.js +42 -16
  148. package/lib/web/pdf_single_page_viewer.js +74 -66
  149. package/lib/web/pdf_thumbnail_view.js +104 -33
  150. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  151. package/lib/web/pdf_viewer.component.js +112 -32
  152. package/lib/web/pdf_viewer.js +82 -87
  153. package/lib/web/preferences.js +284 -91
  154. package/lib/web/secondary_toolbar.js +132 -59
  155. package/lib/web/text_layer_builder.js +134 -59
  156. package/lib/web/toolbar.js +80 -43
  157. package/lib/web/ui_utils.js +400 -134
  158. package/lib/web/view_history.js +215 -67
  159. package/lib/web/viewer_compatibility.js +3 -8
  160. package/package.json +3 -2
  161. package/web/pdf_viewer.css +23 -15
  162. package/web/pdf_viewer.js +3429 -1245
  163. package/web/pdf_viewer.js.map +1 -1
  164. package/external/streams/streams-lib.js +0 -3962
  165. package/lib/display/dom_utils.js +0 -429
  166. package/lib/test/unit/dom_utils_spec.js +0 -89
  167. package/lib/test/unit/fonts_spec.js +0 -81
  168. package/lib/web/dom_events.js +0 -137
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2017 Mozilla Foundation
5
+ * Copyright 2019 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -19,98 +19,106 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.SpreadMode = exports.ScrollMode = exports.BaseViewer = undefined;
27
+ exports.BaseViewer = void 0;
28
28
 
29
- 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; }; }();
29
+ var _ui_utils = require("./ui_utils");
30
30
 
31
- var _ui_utils = require('./ui_utils');
31
+ var _pdf_rendering_queue = require("./pdf_rendering_queue");
32
32
 
33
- var _pdf_rendering_queue = require('./pdf_rendering_queue');
33
+ var _annotation_layer_builder = require("./annotation_layer_builder");
34
34
 
35
- var _annotation_layer_builder = require('./annotation_layer_builder');
35
+ var _pdf = require("../pdf");
36
36
 
37
- var _pdf = require('../pdf');
37
+ var _pdf_page_view = require("./pdf_page_view");
38
38
 
39
- var _dom_events = require('./dom_events');
39
+ var _pdf_link_service = require("./pdf_link_service");
40
40
 
41
- var _pdf_page_view = require('./pdf_page_view');
41
+ var _text_layer_builder = require("./text_layer_builder");
42
42
 
43
- var _pdf_link_service = require('./pdf_link_service');
43
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44
44
 
45
- var _text_layer_builder = require('./text_layer_builder');
45
+ 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); } }
46
46
 
47
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
47
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
48
48
 
49
49
  var DEFAULT_CACHE_SIZE = 10;
50
- var ScrollMode = {
51
- VERTICAL: 0,
52
- HORIZONTAL: 1,
53
- WRAPPED: 2
54
- };
55
- var SpreadMode = {
56
- NONE: 0,
57
- ODD: 1,
58
- EVEN: 2
59
- };
50
+
60
51
  function PDFPageViewBuffer(size) {
61
52
  var data = [];
53
+
62
54
  this.push = function (view) {
63
55
  var i = data.indexOf(view);
56
+
64
57
  if (i >= 0) {
65
58
  data.splice(i, 1);
66
59
  }
60
+
67
61
  data.push(view);
62
+
68
63
  if (data.length > size) {
69
64
  data.shift().destroy();
70
65
  }
71
66
  };
67
+
72
68
  this.resize = function (newSize, pagesToKeep) {
73
69
  size = newSize;
70
+
74
71
  if (pagesToKeep) {
75
72
  var pageIdsToKeep = new Set();
73
+
76
74
  for (var i = 0, iMax = pagesToKeep.length; i < iMax; ++i) {
77
75
  pageIdsToKeep.add(pagesToKeep[i].id);
78
76
  }
77
+
79
78
  (0, _ui_utils.moveToEndOfArray)(data, function (page) {
80
79
  return pageIdsToKeep.has(page.id);
81
80
  });
82
81
  }
82
+
83
83
  while (data.length > size) {
84
84
  data.shift().destroy();
85
85
  }
86
86
  };
87
87
  }
88
+
88
89
  function isSameScale(oldScale, newScale) {
89
90
  if (newScale === oldScale) {
90
91
  return true;
91
92
  }
93
+
92
94
  if (Math.abs(newScale - oldScale) < 1e-15) {
93
95
  return true;
94
96
  }
97
+
95
98
  return false;
96
99
  }
97
100
 
98
- var BaseViewer = function () {
101
+ var BaseViewer =
102
+ /*#__PURE__*/
103
+ function () {
99
104
  function BaseViewer(options) {
105
+ var _this = this;
106
+
100
107
  _classCallCheck(this, BaseViewer);
101
108
 
102
109
  if (this.constructor === BaseViewer) {
103
110
  throw new Error('Cannot initialize BaseViewer.');
104
111
  }
112
+
105
113
  this._name = this.constructor.name;
106
114
  this.container = options.container;
107
115
  this.viewer = options.viewer || options.container.firstElementChild;
108
- this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();
116
+ this.eventBus = options.eventBus || (0, _ui_utils.getGlobalEventBus)();
109
117
  this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
110
118
  this.downloadManager = options.downloadManager || null;
119
+ this.findController = options.findController || null;
111
120
  this.removePageBorders = options.removePageBorders || false;
112
121
  this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;
113
- this.enhanceTextSelection = options.enhanceTextSelection || false;
114
122
  this.imageResourcesPath = options.imageResourcesPath || '';
115
123
  this.renderInteractiveForms = options.renderInteractiveForms || false;
116
124
  this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
@@ -119,31 +127,39 @@ var BaseViewer = function () {
119
127
  this.useOnlyCssZoom = options.useOnlyCssZoom || false;
120
128
  this.maxCanvasPixels = options.maxCanvasPixels;
121
129
  this.l10n = options.l10n || _ui_utils.NullL10n;
122
- this.scrollMode = options.scrollMode || ScrollMode.VERTICAL;
123
- this.spreadMode = options.spreadMode || SpreadMode.NONE;
124
130
  this.defaultRenderingQueue = !options.renderingQueue;
131
+
125
132
  if (this.defaultRenderingQueue) {
126
133
  this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
127
134
  this.renderingQueue.setViewer(this);
128
135
  } else {
129
136
  this.renderingQueue = options.renderingQueue;
130
137
  }
138
+
131
139
  this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
132
140
  this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
141
+ this._onBeforeDraw = this._onAfterDraw = null;
142
+
133
143
  this._resetView();
144
+
134
145
  if (this.removePageBorders) {
135
146
  this.viewer.classList.add('removePageBorders');
136
147
  }
137
- this._updateScrollModeClasses();
148
+
149
+ Promise.resolve().then(function () {
150
+ _this.eventBus.dispatch('baseviewerinit', {
151
+ source: _this
152
+ });
153
+ });
138
154
  }
139
155
 
140
156
  _createClass(BaseViewer, [{
141
- key: 'getPageView',
157
+ key: "getPageView",
142
158
  value: function getPageView(index) {
143
159
  return this._pages[index];
144
160
  }
145
161
  }, {
146
- key: '_setCurrentPageNumber',
162
+ key: "_setCurrentPageNumber",
147
163
  value: function _setCurrentPageNumber(val) {
148
164
  var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
149
165
 
@@ -151,114 +167,156 @@ var BaseViewer = function () {
151
167
  if (resetCurrentPageView) {
152
168
  this._resetCurrentPageView();
153
169
  }
154
- return;
170
+
171
+ return true;
155
172
  }
173
+
156
174
  if (!(0 < val && val <= this.pagesCount)) {
157
- console.error(this._name + '._setCurrentPageNumber: "' + val + '" is out of bounds.');
158
- return;
175
+ return false;
159
176
  }
160
- var arg = {
177
+
178
+ this._currentPageNumber = val;
179
+ this.eventBus.dispatch('pagechanging', {
161
180
  source: this,
162
181
  pageNumber: val,
163
182
  pageLabel: this._pageLabels && this._pageLabels[val - 1]
164
- };
165
- this._currentPageNumber = val;
166
- this.eventBus.dispatch('pagechanging', arg);
167
- this.eventBus.dispatch('pagechange', arg);
183
+ });
184
+
168
185
  if (resetCurrentPageView) {
169
186
  this._resetCurrentPageView();
170
187
  }
188
+
189
+ return true;
171
190
  }
172
191
  }, {
173
- key: 'setDocument',
192
+ key: "setDocument",
174
193
  value: function setDocument(pdfDocument) {
175
- var _this = this;
194
+ var _this2 = this;
176
195
 
177
196
  if (this.pdfDocument) {
178
197
  this._cancelRendering();
198
+
179
199
  this._resetView();
200
+
201
+ if (this.findController) {
202
+ this.findController.setDocument(null);
203
+ }
180
204
  }
205
+
181
206
  this.pdfDocument = pdfDocument;
207
+
182
208
  if (!pdfDocument) {
183
209
  return;
184
210
  }
211
+
185
212
  var pagesCount = pdfDocument.numPages;
186
213
  var pagesCapability = (0, _pdf.createPromiseCapability)();
187
214
  this.pagesPromise = pagesCapability.promise;
188
215
  pagesCapability.promise.then(function () {
189
- _this._pageViewsReady = true;
190
- _this.eventBus.dispatch('pagesloaded', {
191
- source: _this,
216
+ _this2._pageViewsReady = true;
217
+
218
+ _this2.eventBus.dispatch('pagesloaded', {
219
+ source: _this2,
192
220
  pagesCount: pagesCount
193
221
  });
194
222
  });
195
- var isOnePageRenderedResolved = false;
196
223
  var onePageRenderedCapability = (0, _pdf.createPromiseCapability)();
197
224
  this.onePageRendered = onePageRenderedCapability.promise;
198
- var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) {
199
- pageView.onBeforeDraw = function () {
200
- _this._buffer.push(pageView);
201
- };
202
- pageView.onAfterDraw = function () {
203
- if (!isOnePageRenderedResolved) {
204
- isOnePageRenderedResolved = true;
205
- onePageRenderedCapability.resolve();
206
- }
207
- };
208
- };
209
225
  var firstPagePromise = pdfDocument.getPage(1);
210
226
  this.firstPagePromise = firstPagePromise;
227
+
228
+ this._onBeforeDraw = function (evt) {
229
+ var pageView = _this2._pages[evt.pageNumber - 1];
230
+
231
+ if (!pageView) {
232
+ return;
233
+ }
234
+
235
+ _this2._buffer.push(pageView);
236
+ };
237
+
238
+ this.eventBus.on('pagerender', this._onBeforeDraw);
239
+
240
+ this._onAfterDraw = function (evt) {
241
+ if (evt.cssTransform || onePageRenderedCapability.settled) {
242
+ return;
243
+ }
244
+
245
+ onePageRenderedCapability.resolve();
246
+
247
+ _this2.eventBus.off('pagerendered', _this2._onAfterDraw);
248
+
249
+ _this2._onAfterDraw = null;
250
+ };
251
+
252
+ this.eventBus.on('pagerendered', this._onAfterDraw);
211
253
  firstPagePromise.then(function (pdfPage) {
212
- var scale = _this.currentScale;
213
- var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS);
254
+ var scale = _this2.currentScale;
255
+ var viewport = pdfPage.getViewport({
256
+ scale: scale * _ui_utils.CSS_UNITS
257
+ });
258
+
214
259
  for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
215
260
  var textLayerFactory = null;
216
- if (_this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {
217
- textLayerFactory = _this;
261
+
262
+ if (_this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {
263
+ textLayerFactory = _this2;
218
264
  }
265
+
219
266
  var pageView = new _pdf_page_view.PDFPageView({
220
- container: _this._setDocumentViewerElement,
221
- eventBus: _this.eventBus,
267
+ container: _this2._setDocumentViewerElement,
268
+ eventBus: _this2.eventBus,
222
269
  id: pageNum,
223
270
  scale: scale,
224
271
  defaultViewport: viewport.clone(),
225
- renderingQueue: _this.renderingQueue,
272
+ renderingQueue: _this2.renderingQueue,
226
273
  textLayerFactory: textLayerFactory,
227
- textLayerMode: _this.textLayerMode,
228
- annotationLayerFactory: _this,
229
- imageResourcesPath: _this.imageResourcesPath,
230
- renderInteractiveForms: _this.renderInteractiveForms,
231
- renderer: _this.renderer,
232
- enableWebGL: _this.enableWebGL,
233
- useOnlyCssZoom: _this.useOnlyCssZoom,
234
- maxCanvasPixels: _this.maxCanvasPixels,
235
- l10n: _this.l10n
274
+ textLayerMode: _this2.textLayerMode,
275
+ annotationLayerFactory: _this2,
276
+ imageResourcesPath: _this2.imageResourcesPath,
277
+ renderInteractiveForms: _this2.renderInteractiveForms,
278
+ renderer: _this2.renderer,
279
+ enableWebGL: _this2.enableWebGL,
280
+ useOnlyCssZoom: _this2.useOnlyCssZoom,
281
+ maxCanvasPixels: _this2.maxCanvasPixels,
282
+ l10n: _this2.l10n
236
283
  });
237
- bindOnAfterAndBeforeDraw(pageView);
238
- _this._pages.push(pageView);
284
+
285
+ _this2._pages.push(pageView);
239
286
  }
240
- if (_this.spreadMode !== SpreadMode.NONE) {
241
- _this._regroupSpreads();
287
+
288
+ if (_this2._spreadMode !== _ui_utils.SpreadMode.NONE) {
289
+ _this2._updateSpreadMode();
242
290
  }
291
+
243
292
  onePageRenderedCapability.promise.then(function () {
293
+ if (_this2.findController) {
294
+ _this2.findController.setDocument(pdfDocument);
295
+ }
296
+
244
297
  if (pdfDocument.loadingParams['disableAutoFetch']) {
245
298
  pagesCapability.resolve();
246
299
  return;
247
300
  }
301
+
248
302
  var getPagesLeft = pagesCount;
249
303
 
250
304
  var _loop = function _loop(_pageNum) {
251
305
  pdfDocument.getPage(_pageNum).then(function (pdfPage) {
252
- var pageView = _this._pages[_pageNum - 1];
306
+ var pageView = _this2._pages[_pageNum - 1];
307
+
253
308
  if (!pageView.pdfPage) {
254
309
  pageView.setPdfPage(pdfPage);
255
310
  }
256
- _this.linkService.cachePageRef(_pageNum, pdfPage.ref);
311
+
312
+ _this2.linkService.cachePageRef(_pageNum, pdfPage.ref);
313
+
257
314
  if (--getPagesLeft === 0) {
258
315
  pagesCapability.resolve();
259
316
  }
260
317
  }, function (reason) {
261
- console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason);
318
+ console.error("Unable to get page ".concat(_pageNum, " to initialize viewer"), reason);
319
+
262
320
  if (--getPagesLeft === 0) {
263
321
  pagesCapability.resolve();
264
322
  }
@@ -269,31 +327,34 @@ var BaseViewer = function () {
269
327
  _loop(_pageNum);
270
328
  }
271
329
  });
272
- _this.eventBus.dispatch('pagesinit', { source: _this });
273
- if (_this.defaultRenderingQueue) {
274
- _this.update();
275
- }
276
- if (_this.findController) {
277
- _this.findController.resolveFirstPage();
330
+
331
+ _this2.eventBus.dispatch('pagesinit', {
332
+ source: _this2
333
+ });
334
+
335
+ if (_this2.defaultRenderingQueue) {
336
+ _this2.update();
278
337
  }
279
- }).catch(function (reason) {
338
+ })["catch"](function (reason) {
280
339
  console.error('Unable to initialize viewer', reason);
281
340
  });
282
341
  }
283
342
  }, {
284
- key: 'setPageLabels',
343
+ key: "setPageLabels",
285
344
  value: function setPageLabels(labels) {
286
345
  if (!this.pdfDocument) {
287
346
  return;
288
347
  }
348
+
289
349
  if (!labels) {
290
350
  this._pageLabels = null;
291
- } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) {
351
+ } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
292
352
  this._pageLabels = null;
293
- console.error(this._name + '.setPageLabels: Invalid page labels.');
353
+ console.error("".concat(this._name, ".setPageLabels: Invalid page labels."));
294
354
  } else {
295
355
  this._pageLabels = labels;
296
356
  }
357
+
297
358
  for (var i = 0, ii = this._pages.length; i < ii; i++) {
298
359
  var pageView = this._pages[i];
299
360
  var label = this._pageLabels && this._pageLabels[i];
@@ -301,7 +362,7 @@ var BaseViewer = function () {
301
362
  }
302
363
  }
303
364
  }, {
304
- key: '_resetView',
365
+ key: "_resetView",
305
366
  value: function _resetView() {
306
367
  this._pages = [];
307
368
  this._currentPageNumber = 1;
@@ -313,220 +374,278 @@ var BaseViewer = function () {
313
374
  this._pagesRotation = 0;
314
375
  this._pagesRequests = [];
315
376
  this._pageViewsReady = false;
377
+ this._scrollMode = _ui_utils.ScrollMode.VERTICAL;
378
+ this._spreadMode = _ui_utils.SpreadMode.NONE;
379
+
380
+ if (this._onBeforeDraw) {
381
+ this.eventBus.off('pagerender', this._onBeforeDraw);
382
+ this._onBeforeDraw = null;
383
+ }
384
+
385
+ if (this._onAfterDraw) {
386
+ this.eventBus.off('pagerendered', this._onAfterDraw);
387
+ this._onAfterDraw = null;
388
+ }
389
+
316
390
  this.viewer.textContent = '';
391
+
392
+ this._updateScrollMode();
317
393
  }
318
394
  }, {
319
- key: '_scrollUpdate',
395
+ key: "_scrollUpdate",
320
396
  value: function _scrollUpdate() {
321
397
  if (this.pagesCount === 0) {
322
398
  return;
323
399
  }
400
+
324
401
  this.update();
325
402
  }
326
403
  }, {
327
- key: '_scrollIntoView',
404
+ key: "_scrollIntoView",
328
405
  value: function _scrollIntoView(_ref) {
329
406
  var pageDiv = _ref.pageDiv,
330
407
  _ref$pageSpot = _ref.pageSpot,
331
- pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,
408
+ pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot,
332
409
  _ref$pageNumber = _ref.pageNumber,
333
- pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;
334
-
335
- throw new Error('Not implemented: _scrollIntoView');
410
+ pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber;
411
+ (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
336
412
  }
337
413
  }, {
338
- key: '_setScaleDispatchEvent',
339
- value: function _setScaleDispatchEvent(newScale, newValue) {
340
- var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
341
-
342
- var arg = {
343
- source: this,
344
- scale: newScale,
345
- presetValue: preset ? newValue : undefined
346
- };
347
- this.eventBus.dispatch('scalechanging', arg);
348
- this.eventBus.dispatch('scalechange', arg);
349
- }
350
- }, {
351
- key: '_setScaleUpdatePages',
414
+ key: "_setScaleUpdatePages",
352
415
  value: function _setScaleUpdatePages(newScale, newValue) {
353
416
  var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
354
417
  var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
355
-
356
418
  this._currentScaleValue = newValue.toString();
419
+
357
420
  if (isSameScale(this._currentScale, newScale)) {
358
421
  if (preset) {
359
- this._setScaleDispatchEvent(newScale, newValue, true);
422
+ this.eventBus.dispatch('scalechanging', {
423
+ source: this,
424
+ scale: newScale,
425
+ presetValue: newValue
426
+ });
360
427
  }
428
+
361
429
  return;
362
430
  }
431
+
363
432
  for (var i = 0, ii = this._pages.length; i < ii; i++) {
364
433
  this._pages[i].update(newScale);
365
434
  }
435
+
366
436
  this._currentScale = newScale;
437
+
367
438
  if (!noScroll) {
368
439
  var page = this._currentPageNumber,
369
- dest = void 0;
440
+ dest;
441
+
370
442
  if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {
371
443
  page = this._location.pageNumber;
372
- dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null];
444
+ dest = [null, {
445
+ name: 'XYZ'
446
+ }, this._location.left, this._location.top, null];
373
447
  }
448
+
374
449
  this.scrollPageIntoView({
375
450
  pageNumber: page,
376
451
  destArray: dest,
377
452
  allowNegativeOffset: true
378
453
  });
379
454
  }
380
- this._setScaleDispatchEvent(newScale, newValue, preset);
455
+
456
+ this.eventBus.dispatch('scalechanging', {
457
+ source: this,
458
+ scale: newScale,
459
+ presetValue: preset ? newValue : undefined
460
+ });
461
+
381
462
  if (this.defaultRenderingQueue) {
382
463
  this.update();
383
464
  }
384
465
  }
385
466
  }, {
386
- key: '_setScale',
467
+ key: "_setScale",
387
468
  value: function _setScale(value) {
388
469
  var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
389
-
390
470
  var scale = parseFloat(value);
471
+
391
472
  if (scale > 0) {
392
473
  this._setScaleUpdatePages(scale, value, noScroll, false);
393
474
  } else {
394
475
  var currentPage = this._pages[this._currentPageNumber - 1];
476
+
395
477
  if (!currentPage) {
396
478
  return;
397
479
  }
398
- var hPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
399
- var vPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
400
- if (this.scrollMode === ScrollMode.HORIZONTAL) {
401
- var temp = hPadding;
402
- hPadding = vPadding;
403
- vPadding = temp;
480
+
481
+ var noPadding = this.isInPresentationMode || this.removePageBorders;
482
+ var hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING;
483
+ var vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING;
484
+
485
+ if (!noPadding && this._isScrollModeHorizontal) {
486
+ var _ref2 = [vPadding, hPadding];
487
+ hPadding = _ref2[0];
488
+ vPadding = _ref2[1];
404
489
  }
490
+
405
491
  var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;
406
492
  var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;
493
+
407
494
  switch (value) {
408
495
  case 'page-actual':
409
496
  scale = 1;
410
497
  break;
498
+
411
499
  case 'page-width':
412
500
  scale = pageWidthScale;
413
501
  break;
502
+
414
503
  case 'page-height':
415
504
  scale = pageHeightScale;
416
505
  break;
506
+
417
507
  case 'page-fit':
418
508
  scale = Math.min(pageWidthScale, pageHeightScale);
419
509
  break;
510
+
420
511
  case 'auto':
421
512
  var horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);
422
513
  scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);
423
514
  break;
515
+
424
516
  default:
425
- console.error(this._name + '._setScale: "' + value + '" is an unknown zoom value.');
517
+ console.error("".concat(this._name, "._setScale: \"").concat(value, "\" is an unknown zoom value."));
426
518
  return;
427
519
  }
520
+
428
521
  this._setScaleUpdatePages(scale, value, noScroll, true);
429
522
  }
430
523
  }
431
524
  }, {
432
- key: '_resetCurrentPageView',
525
+ key: "_resetCurrentPageView",
433
526
  value: function _resetCurrentPageView() {
434
527
  if (this.isInPresentationMode) {
435
528
  this._setScale(this._currentScaleValue, true);
436
529
  }
530
+
437
531
  var pageView = this._pages[this._currentPageNumber - 1];
438
- this._scrollIntoView({ pageDiv: pageView.div });
532
+
533
+ this._scrollIntoView({
534
+ pageDiv: pageView.div
535
+ });
439
536
  }
440
537
  }, {
441
- key: 'scrollPageIntoView',
442
- value: function scrollPageIntoView(params) {
538
+ key: "scrollPageIntoView",
539
+ value: function scrollPageIntoView(_ref3) {
540
+ var pageNumber = _ref3.pageNumber,
541
+ _ref3$destArray = _ref3.destArray,
542
+ destArray = _ref3$destArray === void 0 ? null : _ref3$destArray,
543
+ _ref3$allowNegativeOf = _ref3.allowNegativeOffset,
544
+ allowNegativeOffset = _ref3$allowNegativeOf === void 0 ? false : _ref3$allowNegativeOf;
545
+
443
546
  if (!this.pdfDocument) {
444
547
  return;
445
548
  }
446
- var pageNumber = params.pageNumber || 0;
447
- var dest = params.destArray || null;
448
- var allowNegativeOffset = params.allowNegativeOffset || false;
449
- if (this.isInPresentationMode || !dest) {
450
- this._setCurrentPageNumber(pageNumber, true);
549
+
550
+ var pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1];
551
+
552
+ if (!pageView) {
553
+ console.error("".concat(this._name, ".scrollPageIntoView: ") + "\"".concat(pageNumber, "\" is not a valid pageNumber parameter."));
451
554
  return;
452
555
  }
453
- var pageView = this._pages[pageNumber - 1];
454
- if (!pageView) {
455
- console.error(this._name + '.scrollPageIntoView: Invalid "pageNumber" parameter.');
556
+
557
+ if (this.isInPresentationMode || !destArray) {
558
+ this._setCurrentPageNumber(pageNumber, true);
559
+
456
560
  return;
457
561
  }
562
+
458
563
  var x = 0,
459
564
  y = 0;
460
565
  var width = 0,
461
566
  height = 0,
462
- widthScale = void 0,
463
- heightScale = void 0;
567
+ widthScale,
568
+ heightScale;
464
569
  var changeOrientation = pageView.rotation % 180 === 0 ? false : true;
465
570
  var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;
466
571
  var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;
467
572
  var scale = 0;
468
- switch (dest[1].name) {
573
+
574
+ switch (destArray[1].name) {
469
575
  case 'XYZ':
470
- x = dest[2];
471
- y = dest[3];
472
- scale = dest[4];
576
+ x = destArray[2];
577
+ y = destArray[3];
578
+ scale = destArray[4];
473
579
  x = x !== null ? x : 0;
474
580
  y = y !== null ? y : pageHeight;
475
581
  break;
582
+
476
583
  case 'Fit':
477
584
  case 'FitB':
478
585
  scale = 'page-fit';
479
586
  break;
587
+
480
588
  case 'FitH':
481
589
  case 'FitBH':
482
- y = dest[2];
590
+ y = destArray[2];
483
591
  scale = 'page-width';
592
+
484
593
  if (y === null && this._location) {
485
594
  x = this._location.left;
486
595
  y = this._location.top;
487
596
  }
597
+
488
598
  break;
599
+
489
600
  case 'FitV':
490
601
  case 'FitBV':
491
- x = dest[2];
602
+ x = destArray[2];
492
603
  width = pageWidth;
493
604
  height = pageHeight;
494
605
  scale = 'page-height';
495
606
  break;
607
+
496
608
  case 'FitR':
497
- x = dest[2];
498
- y = dest[3];
499
- width = dest[4] - x;
500
- height = dest[5] - y;
609
+ x = destArray[2];
610
+ y = destArray[3];
611
+ width = destArray[4] - x;
612
+ height = destArray[5] - y;
501
613
  var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
502
614
  var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
503
615
  widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;
504
616
  heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;
505
617
  scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
506
618
  break;
619
+
507
620
  default:
508
- console.error(this._name + '.scrollPageIntoView: "' + dest[1].name + '" ' + 'is not a valid destination type.');
621
+ console.error("".concat(this._name, ".scrollPageIntoView: ") + "\"".concat(destArray[1].name, "\" is not a valid destination type."));
509
622
  return;
510
623
  }
624
+
511
625
  if (scale && scale !== this._currentScale) {
512
626
  this.currentScaleValue = scale;
513
627
  } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {
514
628
  this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
515
629
  }
516
- if (scale === 'page-fit' && !dest[4]) {
630
+
631
+ if (scale === 'page-fit' && !destArray[4]) {
517
632
  this._scrollIntoView({
518
633
  pageDiv: pageView.div,
519
634
  pageNumber: pageNumber
520
635
  });
636
+
521
637
  return;
522
638
  }
639
+
523
640
  var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
524
641
  var left = Math.min(boundingRect[0][0], boundingRect[1][0]);
525
642
  var top = Math.min(boundingRect[0][1], boundingRect[1][1]);
643
+
526
644
  if (!allowNegativeOffset) {
527
645
  left = Math.max(left, 0);
528
646
  top = Math.max(top, 0);
529
647
  }
648
+
530
649
  this._scrollIntoView({
531
650
  pageDiv: pageView.div,
532
651
  pageSpot: {
@@ -537,13 +656,7 @@ var BaseViewer = function () {
537
656
  });
538
657
  }
539
658
  }, {
540
- key: '_resizeBuffer',
541
- value: function _resizeBuffer(numVisiblePages, visiblePages) {
542
- var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
543
- this._buffer.resize(suggestedCacheSize, visiblePages);
544
- }
545
- }, {
546
- key: '_updateLocation',
659
+ key: "_updateLocation",
547
660
  value: function _updateLocation(firstPage) {
548
661
  var currentScale = this._currentScale;
549
662
  var currentScaleValue = this._currentScaleValue;
@@ -567,27 +680,93 @@ var BaseViewer = function () {
567
680
  };
568
681
  }
569
682
  }, {
570
- key: 'update',
683
+ key: "_updateHelper",
684
+ value: function _updateHelper(visiblePages) {
685
+ throw new Error('Not implemented: _updateHelper');
686
+ }
687
+ }, {
688
+ key: "update",
571
689
  value: function update() {
572
- throw new Error('Not implemented: update');
690
+ var visible = this._getVisiblePages();
691
+
692
+ var visiblePages = visible.views,
693
+ numVisiblePages = visiblePages.length;
694
+
695
+ if (numVisiblePages === 0) {
696
+ return;
697
+ }
698
+
699
+ var newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
700
+
701
+ this._buffer.resize(newCacheSize, visiblePages);
702
+
703
+ this.renderingQueue.renderHighestPriority(visible);
704
+
705
+ this._updateHelper(visiblePages);
706
+
707
+ this._updateLocation(visible.first);
708
+
709
+ this.eventBus.dispatch('updateviewarea', {
710
+ source: this,
711
+ location: this._location
712
+ });
573
713
  }
574
714
  }, {
575
- key: 'containsElement',
715
+ key: "containsElement",
576
716
  value: function containsElement(element) {
577
717
  return this.container.contains(element);
578
718
  }
579
719
  }, {
580
- key: 'focus',
720
+ key: "focus",
581
721
  value: function focus() {
582
722
  this.container.focus();
583
723
  }
584
724
  }, {
585
- key: '_getVisiblePages',
725
+ key: "_getCurrentVisiblePage",
726
+ value: function _getCurrentVisiblePage() {
727
+ if (!this.pagesCount) {
728
+ return {
729
+ views: []
730
+ };
731
+ }
732
+
733
+ var pageView = this._pages[this._currentPageNumber - 1];
734
+ var element = pageView.div;
735
+ var view = {
736
+ id: pageView.id,
737
+ x: element.offsetLeft + element.clientLeft,
738
+ y: element.offsetTop + element.clientTop,
739
+ view: pageView
740
+ };
741
+ return {
742
+ first: view,
743
+ last: view,
744
+ views: [view]
745
+ };
746
+ }
747
+ }, {
748
+ key: "_getVisiblePages",
586
749
  value: function _getVisiblePages() {
587
- throw new Error('Not implemented: _getVisiblePages');
750
+ return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._isScrollModeHorizontal);
588
751
  }
589
752
  }, {
590
- key: 'cleanup',
753
+ key: "isPageVisible",
754
+ value: function isPageVisible(pageNumber) {
755
+ if (!this.pdfDocument) {
756
+ return false;
757
+ }
758
+
759
+ if (this.pageNumber < 1 || pageNumber > this.pagesCount) {
760
+ console.error("".concat(this._name, ".isPageVisible: \"").concat(pageNumber, "\" is out of bounds."));
761
+ return false;
762
+ }
763
+
764
+ return this._getVisiblePages().views.some(function (view) {
765
+ return view.id === pageNumber;
766
+ });
767
+ }
768
+ }, {
769
+ key: "cleanup",
591
770
  value: function cleanup() {
592
771
  for (var i = 0, ii = this._pages.length; i < ii; i++) {
593
772
  if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
@@ -596,7 +775,7 @@ var BaseViewer = function () {
596
775
  }
597
776
  }
598
777
  }, {
599
- key: '_cancelRendering',
778
+ key: "_cancelRendering",
600
779
  value: function _cancelRendering() {
601
780
  for (var i = 0, ii = this._pages.length; i < ii; i++) {
602
781
  if (this._pages[i]) {
@@ -605,58 +784,58 @@ var BaseViewer = function () {
605
784
  }
606
785
  }
607
786
  }, {
608
- key: '_ensurePdfPageLoaded',
787
+ key: "_ensurePdfPageLoaded",
609
788
  value: function _ensurePdfPageLoaded(pageView) {
610
- var _this2 = this;
789
+ var _this3 = this;
611
790
 
612
791
  if (pageView.pdfPage) {
613
792
  return Promise.resolve(pageView.pdfPage);
614
793
  }
794
+
615
795
  var pageNumber = pageView.id;
796
+
616
797
  if (this._pagesRequests[pageNumber]) {
617
798
  return this._pagesRequests[pageNumber];
618
799
  }
800
+
619
801
  var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {
620
802
  if (!pageView.pdfPage) {
621
803
  pageView.setPdfPage(pdfPage);
622
804
  }
623
- _this2._pagesRequests[pageNumber] = null;
805
+
806
+ _this3._pagesRequests[pageNumber] = null;
624
807
  return pdfPage;
625
- }).catch(function (reason) {
808
+ })["catch"](function (reason) {
626
809
  console.error('Unable to get page for page view', reason);
627
- _this2._pagesRequests[pageNumber] = null;
810
+ _this3._pagesRequests[pageNumber] = null;
628
811
  });
629
812
  this._pagesRequests[pageNumber] = promise;
630
813
  return promise;
631
814
  }
632
815
  }, {
633
- key: 'forceRendering',
816
+ key: "forceRendering",
634
817
  value: function forceRendering(currentlyVisiblePages) {
635
- var _this3 = this;
818
+ var _this4 = this;
636
819
 
637
820
  var visiblePages = currentlyVisiblePages || this._getVisiblePages();
638
- var scrollAhead = this.scrollMode === ScrollMode.HORIZONTAL ? this.scroll.right : this.scroll.down;
821
+
822
+ var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;
639
823
  var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);
824
+
640
825
  if (pageView) {
641
826
  this._ensurePdfPageLoaded(pageView).then(function () {
642
- _this3.renderingQueue.renderView(pageView);
827
+ _this4.renderingQueue.renderView(pageView);
643
828
  });
829
+
644
830
  return true;
645
831
  }
832
+
646
833
  return false;
647
834
  }
648
835
  }, {
649
- key: 'getPageTextContent',
650
- value: function getPageTextContent(pageIndex) {
651
- return this.pdfDocument.getPage(pageIndex + 1).then(function (page) {
652
- return page.getTextContent({ normalizeWhitespace: true });
653
- });
654
- }
655
- }, {
656
- key: 'createTextLayerBuilder',
836
+ key: "createTextLayerBuilder",
657
837
  value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {
658
838
  var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
659
-
660
839
  return new _text_layer_builder.TextLayerBuilder({
661
840
  textLayerDiv: textLayerDiv,
662
841
  eventBus: this.eventBus,
@@ -667,12 +846,11 @@ var BaseViewer = function () {
667
846
  });
668
847
  }
669
848
  }, {
670
- key: 'createAnnotationLayerBuilder',
849
+ key: "createAnnotationLayerBuilder",
671
850
  value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {
672
851
  var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
673
852
  var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
674
853
  var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;
675
-
676
854
  return new _annotation_layer_builder.AnnotationLayerBuilder({
677
855
  pageDiv: pageDiv,
678
856
  pdfPage: pdfPage,
@@ -684,29 +862,29 @@ var BaseViewer = function () {
684
862
  });
685
863
  }
686
864
  }, {
687
- key: 'setFindController',
688
- value: function setFindController(findController) {
689
- this.findController = findController;
690
- }
691
- }, {
692
- key: 'getPagesOverview',
865
+ key: "getPagesOverview",
693
866
  value: function getPagesOverview() {
694
867
  var pagesOverview = this._pages.map(function (pageView) {
695
- var viewport = pageView.pdfPage.getViewport(1);
868
+ var viewport = pageView.pdfPage.getViewport({
869
+ scale: 1
870
+ });
696
871
  return {
697
872
  width: viewport.width,
698
873
  height: viewport.height,
699
874
  rotation: viewport.rotation
700
875
  };
701
876
  });
877
+
702
878
  if (!this.enablePrintAutoRotate) {
703
879
  return pagesOverview;
704
880
  }
881
+
705
882
  var isFirstPagePortrait = (0, _ui_utils.isPortraitOrientation)(pagesOverview[0]);
706
883
  return pagesOverview.map(function (size) {
707
884
  if (isFirstPagePortrait === (0, _ui_utils.isPortraitOrientation)(size)) {
708
885
  return size;
709
886
  }
887
+
710
888
  return {
711
889
  width: size.height,
712
890
  height: size.width,
@@ -715,52 +893,81 @@ var BaseViewer = function () {
715
893
  });
716
894
  }
717
895
  }, {
718
- key: 'setScrollMode',
719
- value: function setScrollMode(mode) {
720
- if (mode !== this.scrollMode) {
721
- this.scrollMode = mode;
722
- this._updateScrollModeClasses();
723
- this.eventBus.dispatch('scrollmodechanged', { mode: mode });
724
- var pageNumber = this._currentPageNumber;
725
- if (isNaN(this._currentScaleValue)) {
726
- this._setScale(this._currentScaleValue, this.isInPresentationMode);
727
- }
728
- this.scrollPageIntoView({ pageNumber: pageNumber });
729
- this.update();
896
+ key: "_updateScrollMode",
897
+ value: function _updateScrollMode() {
898
+ var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
899
+ var scrollMode = this._scrollMode,
900
+ viewer = this.viewer;
901
+ viewer.classList.toggle('scrollHorizontal', scrollMode === _ui_utils.ScrollMode.HORIZONTAL);
902
+ viewer.classList.toggle('scrollWrapped', scrollMode === _ui_utils.ScrollMode.WRAPPED);
903
+
904
+ if (!this.pdfDocument || !pageNumber) {
905
+ return;
730
906
  }
907
+
908
+ if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
909
+ this._setScale(this._currentScaleValue, true);
910
+ }
911
+
912
+ this._setCurrentPageNumber(pageNumber, true);
913
+
914
+ this.update();
731
915
  }
732
916
  }, {
733
- key: '_updateScrollModeClasses',
734
- value: function _updateScrollModeClasses() {
735
- var mode = this.scrollMode,
736
- classList = this.viewer.classList;
737
- classList.toggle('scrollHorizontal', mode === ScrollMode.HORIZONTAL);
738
- classList.toggle('scrollWrapped', mode === ScrollMode.WRAPPED);
739
- }
740
- }, {
741
- key: 'setSpreadMode',
742
- value: function setSpreadMode(mode) {
743
- if (mode !== this.spreadMode) {
744
- this.spreadMode = mode;
745
- this.eventBus.dispatch('spreadmodechanged', { mode: mode });
746
- this._regroupSpreads();
917
+ key: "_updateSpreadMode",
918
+ value: function _updateSpreadMode() {
919
+ var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
920
+
921
+ if (!this.pdfDocument) {
922
+ return;
923
+ }
924
+
925
+ var viewer = this.viewer,
926
+ pages = this._pages;
927
+ viewer.textContent = '';
928
+
929
+ if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
930
+ for (var i = 0, iMax = pages.length; i < iMax; ++i) {
931
+ viewer.appendChild(pages[i].div);
932
+ }
933
+ } else {
934
+ var parity = this._spreadMode - 1;
935
+ var spread = null;
936
+
937
+ for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) {
938
+ if (spread === null) {
939
+ spread = document.createElement('div');
940
+ spread.className = 'spread';
941
+ viewer.appendChild(spread);
942
+ } else if (_i % 2 === parity) {
943
+ spread = spread.cloneNode(false);
944
+ viewer.appendChild(spread);
945
+ }
946
+
947
+ spread.appendChild(pages[_i].div);
948
+ }
747
949
  }
950
+
951
+ if (!pageNumber) {
952
+ return;
953
+ }
954
+
955
+ this._setCurrentPageNumber(pageNumber, true);
956
+
957
+ this.update();
748
958
  }
749
959
  }, {
750
- key: '_regroupSpreads',
751
- value: function _regroupSpreads() {}
752
- }, {
753
- key: 'pagesCount',
960
+ key: "pagesCount",
754
961
  get: function get() {
755
962
  return this._pages.length;
756
963
  }
757
964
  }, {
758
- key: 'pageViewsReady',
965
+ key: "pageViewsReady",
759
966
  get: function get() {
760
967
  return this._pageViewsReady;
761
968
  }
762
969
  }, {
763
- key: 'currentPageNumber',
970
+ key: "currentPageNumber",
764
971
  get: function get() {
765
972
  return this._currentPageNumber;
766
973
  },
@@ -768,42 +975,57 @@ var BaseViewer = function () {
768
975
  if (!Number.isInteger(val)) {
769
976
  throw new Error('Invalid page number.');
770
977
  }
978
+
771
979
  if (!this.pdfDocument) {
772
980
  return;
773
981
  }
774
- this._setCurrentPageNumber(val, true);
982
+
983
+ if (!this._setCurrentPageNumber(val, true)) {
984
+ console.error("".concat(this._name, ".currentPageNumber: \"").concat(val, "\" is not a valid page."));
985
+ }
775
986
  }
776
987
  }, {
777
- key: 'currentPageLabel',
988
+ key: "currentPageLabel",
778
989
  get: function get() {
779
990
  return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];
780
991
  },
781
992
  set: function set(val) {
782
- var pageNumber = val | 0;
993
+ if (!this.pdfDocument) {
994
+ return;
995
+ }
996
+
997
+ var page = val | 0;
998
+
783
999
  if (this._pageLabels) {
784
1000
  var i = this._pageLabels.indexOf(val);
1001
+
785
1002
  if (i >= 0) {
786
- pageNumber = i + 1;
1003
+ page = i + 1;
787
1004
  }
788
1005
  }
789
- this.currentPageNumber = pageNumber;
1006
+
1007
+ if (!this._setCurrentPageNumber(page, true)) {
1008
+ console.error("".concat(this._name, ".currentPageLabel: \"").concat(val, "\" is not a valid page."));
1009
+ }
790
1010
  }
791
1011
  }, {
792
- key: 'currentScale',
1012
+ key: "currentScale",
793
1013
  get: function get() {
794
1014
  return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
795
1015
  },
796
1016
  set: function set(val) {
797
1017
  if (isNaN(val)) {
798
- throw new Error('Invalid numeric scale');
1018
+ throw new Error('Invalid numeric scale.');
799
1019
  }
1020
+
800
1021
  if (!this.pdfDocument) {
801
1022
  return;
802
1023
  }
1024
+
803
1025
  this._setScale(val, false);
804
1026
  }
805
1027
  }, {
806
- key: 'currentScaleValue',
1028
+ key: "currentScaleValue",
807
1029
  get: function get() {
808
1030
  return this._currentScaleValue;
809
1031
  },
@@ -811,10 +1033,11 @@ var BaseViewer = function () {
811
1033
  if (!this.pdfDocument) {
812
1034
  return;
813
1035
  }
1036
+
814
1037
  this._setScale(val, false);
815
1038
  }
816
1039
  }, {
817
- key: 'pagesRotation',
1040
+ key: "pagesRotation",
818
1041
  get: function get() {
819
1042
  return this._pagesRotation;
820
1043
  },
@@ -822,72 +1045,129 @@ var BaseViewer = function () {
822
1045
  if (!(0, _ui_utils.isValidRotation)(rotation)) {
823
1046
  throw new Error('Invalid pages rotation angle.');
824
1047
  }
1048
+
825
1049
  if (!this.pdfDocument) {
826
1050
  return;
827
1051
  }
1052
+
828
1053
  if (this._pagesRotation === rotation) {
829
1054
  return;
830
1055
  }
1056
+
831
1057
  this._pagesRotation = rotation;
832
1058
  var pageNumber = this._currentPageNumber;
1059
+
833
1060
  for (var i = 0, ii = this._pages.length; i < ii; i++) {
834
1061
  var pageView = this._pages[i];
835
1062
  pageView.update(pageView.scale, rotation);
836
1063
  }
1064
+
837
1065
  if (this._currentScaleValue) {
838
1066
  this._setScale(this._currentScaleValue, true);
839
1067
  }
1068
+
840
1069
  this.eventBus.dispatch('rotationchanging', {
841
1070
  source: this,
842
1071
  pagesRotation: rotation,
843
1072
  pageNumber: pageNumber
844
1073
  });
1074
+
845
1075
  if (this.defaultRenderingQueue) {
846
1076
  this.update();
847
1077
  }
848
1078
  }
849
1079
  }, {
850
- key: '_setDocumentViewerElement',
1080
+ key: "_setDocumentViewerElement",
851
1081
  get: function get() {
852
1082
  throw new Error('Not implemented: _setDocumentViewerElement');
853
1083
  }
854
1084
  }, {
855
- key: 'isInPresentationMode',
1085
+ key: "_isScrollModeHorizontal",
1086
+ get: function get() {
1087
+ return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL;
1088
+ }
1089
+ }, {
1090
+ key: "isInPresentationMode",
856
1091
  get: function get() {
857
1092
  return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
858
1093
  }
859
1094
  }, {
860
- key: 'isChangingPresentationMode',
1095
+ key: "isChangingPresentationMode",
861
1096
  get: function get() {
862
1097
  return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
863
1098
  }
864
1099
  }, {
865
- key: 'isHorizontalScrollbarEnabled',
1100
+ key: "isHorizontalScrollbarEnabled",
866
1101
  get: function get() {
867
1102
  return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;
868
1103
  }
869
1104
  }, {
870
- key: 'isVerticalScrollbarEnabled',
1105
+ key: "isVerticalScrollbarEnabled",
871
1106
  get: function get() {
872
1107
  return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
873
1108
  }
874
1109
  }, {
875
- key: 'hasEqualPageSizes',
1110
+ key: "hasEqualPageSizes",
876
1111
  get: function get() {
877
1112
  var firstPageView = this._pages[0];
1113
+
878
1114
  for (var i = 1, ii = this._pages.length; i < ii; ++i) {
879
1115
  var pageView = this._pages[i];
1116
+
880
1117
  if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
881
1118
  return false;
882
1119
  }
883
1120
  }
1121
+
884
1122
  return true;
885
1123
  }
1124
+ }, {
1125
+ key: "scrollMode",
1126
+ get: function get() {
1127
+ return this._scrollMode;
1128
+ },
1129
+ set: function set(mode) {
1130
+ if (this._scrollMode === mode) {
1131
+ return;
1132
+ }
1133
+
1134
+ if (!(0, _ui_utils.isValidScrollMode)(mode)) {
1135
+ throw new Error("Invalid scroll mode: ".concat(mode));
1136
+ }
1137
+
1138
+ this._scrollMode = mode;
1139
+ this.eventBus.dispatch('scrollmodechanged', {
1140
+ source: this,
1141
+ mode: mode
1142
+ });
1143
+
1144
+ this._updateScrollMode(this._currentPageNumber);
1145
+ }
1146
+ }, {
1147
+ key: "spreadMode",
1148
+ get: function get() {
1149
+ return this._spreadMode;
1150
+ },
1151
+ set: function set(mode) {
1152
+ if (this._spreadMode === mode) {
1153
+ return;
1154
+ }
1155
+
1156
+ if (!(0, _ui_utils.isValidSpreadMode)(mode)) {
1157
+ throw new Error("Invalid spread mode: ".concat(mode));
1158
+ }
1159
+
1160
+ this._spreadMode = mode;
1161
+ this.eventBus.dispatch('spreadmodechanged', {
1162
+ source: this,
1163
+ mode: mode
1164
+ });
1165
+
1166
+ this._updateSpreadMode(this._currentPageNumber);
1167
+ }
886
1168
  }]);
887
1169
 
888
1170
  return BaseViewer;
889
1171
  }();
890
1172
 
891
- exports.BaseViewer = BaseViewer;
892
- exports.ScrollMode = ScrollMode;
893
- exports.SpreadMode = SpreadMode;
1173
+ exports.BaseViewer = BaseViewer;