pdfjs-dist 2.0.943 → 2.1.266

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