pdfjs-dist 2.0.489 → 2.2.228

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 (169) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +18515 -11402
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +48266 -37137
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/external/url/url-lib.js +627 -0
  10. package/image_decoders/pdf.image_decoders.js +11350 -0
  11. package/image_decoders/pdf.image_decoders.js.map +1 -0
  12. package/image_decoders/pdf.image_decoders.min.js +1 -0
  13. package/lib/core/annotation.js +587 -242
  14. package/lib/core/arithmetic_decoder.js +275 -245
  15. package/lib/core/bidi.js +65 -6
  16. package/lib/core/ccitt.js +173 -18
  17. package/lib/core/ccitt_stream.js +15 -6
  18. package/lib/core/cff_parser.js +433 -61
  19. package/lib/core/charsets.js +5 -4
  20. package/lib/core/chunked_stream.js +400 -152
  21. package/lib/core/cmap.js +326 -87
  22. package/lib/core/colorspace.js +874 -594
  23. package/lib/core/core_utils.js +147 -0
  24. package/lib/core/crypto.js +290 -45
  25. package/lib/core/document.js +560 -268
  26. package/lib/core/encodings.js +19 -10
  27. package/lib/core/evaluator.js +1005 -360
  28. package/lib/core/font_renderer.js +331 -97
  29. package/lib/core/fonts.js +812 -195
  30. package/lib/core/function.js +284 -71
  31. package/lib/core/glyphlist.js +4 -3
  32. package/lib/core/image.js +169 -62
  33. package/lib/core/image_utils.js +111 -0
  34. package/lib/core/jbig2.js +479 -66
  35. package/lib/core/jbig2_stream.js +19 -8
  36. package/lib/core/jpeg_stream.js +38 -13
  37. package/lib/core/jpg.js +253 -29
  38. package/lib/core/jpx.js +396 -6
  39. package/lib/core/jpx_stream.js +18 -6
  40. package/lib/core/metrics.js +15 -15
  41. package/lib/core/murmurhash3.js +56 -34
  42. package/lib/core/obj.js +1354 -488
  43. package/lib/core/operator_list.js +144 -31
  44. package/lib/core/parser.js +539 -191
  45. package/lib/core/pattern.js +148 -14
  46. package/lib/core/pdf_manager.js +323 -133
  47. package/lib/core/primitives.js +111 -24
  48. package/lib/core/ps_parser.js +134 -45
  49. package/lib/core/standard_fonts.js +17 -17
  50. package/lib/core/stream.js +313 -34
  51. package/lib/core/type1_parser.js +143 -13
  52. package/lib/core/unicode.js +32 -5
  53. package/lib/core/worker.js +217 -190
  54. package/lib/core/worker_stream.js +277 -0
  55. package/lib/display/annotation_layer.js +450 -133
  56. package/lib/display/api.js +1597 -784
  57. package/lib/display/api_compatibility.js +11 -13
  58. package/lib/display/canvas.js +360 -44
  59. package/lib/display/content_disposition.js +83 -32
  60. package/lib/display/display_utils.js +747 -0
  61. package/lib/display/fetch_stream.js +221 -90
  62. package/lib/display/font_loader.js +468 -236
  63. package/lib/display/metadata.js +38 -16
  64. package/lib/display/network.js +635 -428
  65. package/lib/display/network_utils.js +32 -19
  66. package/lib/display/node_stream.js +367 -175
  67. package/lib/display/pattern_helper.js +81 -31
  68. package/lib/display/svg.js +1235 -519
  69. package/lib/display/text_layer.js +153 -29
  70. package/lib/display/transport_stream.js +345 -94
  71. package/lib/display/webgl.js +64 -18
  72. package/lib/display/worker_options.js +5 -4
  73. package/lib/display/xml_parser.js +166 -53
  74. package/lib/examples/node/domstubs.js +60 -4
  75. package/lib/pdf.js +36 -14
  76. package/lib/pdf.worker.js +5 -3
  77. package/lib/shared/compatibility.js +158 -564
  78. package/lib/shared/global_scope.js +2 -2
  79. package/lib/shared/is_node.js +4 -4
  80. package/lib/shared/message_handler.js +521 -0
  81. package/lib/shared/streams_polyfill.js +21 -17
  82. package/lib/shared/url_polyfill.js +56 -0
  83. package/lib/shared/util.js +243 -710
  84. package/lib/test/unit/annotation_spec.js +870 -401
  85. package/lib/test/unit/api_spec.js +657 -345
  86. package/lib/test/unit/bidi_spec.js +7 -7
  87. package/lib/test/unit/cff_parser_spec.js +54 -11
  88. package/lib/test/unit/clitests_helper.js +10 -8
  89. package/lib/test/unit/cmap_spec.js +95 -41
  90. package/lib/test/unit/colorspace_spec.js +115 -63
  91. package/lib/test/unit/core_utils_spec.js +191 -0
  92. package/lib/test/unit/crypto_spec.js +17 -5
  93. package/lib/test/unit/custom_spec.js +43 -55
  94. package/lib/test/unit/display_svg_spec.js +34 -18
  95. package/lib/test/unit/display_utils_spec.js +273 -0
  96. package/lib/test/unit/document_spec.js +8 -13
  97. package/lib/test/unit/encodings_spec.js +25 -45
  98. package/lib/test/unit/evaluator_spec.js +38 -15
  99. package/lib/test/unit/fetch_stream_spec.js +109 -0
  100. package/lib/test/unit/function_spec.js +17 -5
  101. package/lib/test/unit/jasmine-boot.js +33 -20
  102. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  103. package/lib/test/unit/metadata_spec.js +71 -11
  104. package/lib/test/unit/murmurhash3_spec.js +3 -3
  105. package/lib/test/unit/network_spec.js +19 -54
  106. package/lib/test/unit/network_utils_spec.js +91 -14
  107. package/lib/test/unit/node_stream_spec.js +56 -32
  108. package/lib/test/unit/parser_spec.js +162 -71
  109. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  110. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  111. package/lib/test/unit/pdf_history_spec.js +21 -9
  112. package/lib/test/unit/primitives_spec.js +53 -20
  113. package/lib/test/unit/stream_spec.js +12 -4
  114. package/lib/test/unit/test_utils.js +273 -56
  115. package/lib/test/unit/testreporter.js +21 -3
  116. package/lib/test/unit/type1_parser_spec.js +8 -6
  117. package/lib/test/unit/ui_utils_spec.js +454 -16
  118. package/lib/test/unit/unicode_spec.js +18 -15
  119. package/lib/test/unit/util_spec.js +87 -128
  120. package/lib/web/annotation_layer_builder.js +39 -22
  121. package/lib/web/app.js +1290 -588
  122. package/lib/web/app_options.js +100 -62
  123. package/lib/web/base_viewer.js +511 -182
  124. package/lib/web/chromecom.js +261 -117
  125. package/lib/web/debugger.js +166 -22
  126. package/lib/web/download_manager.js +32 -13
  127. package/lib/web/firefox_print_service.js +20 -10
  128. package/lib/web/firefoxcom.js +315 -80
  129. package/lib/web/genericcom.js +89 -30
  130. package/lib/web/genericl10n.js +142 -30
  131. package/lib/web/grab_to_pan.js +28 -4
  132. package/lib/web/interfaces.js +170 -47
  133. package/lib/web/overlay_manager.js +235 -85
  134. package/lib/web/password_prompt.js +22 -14
  135. package/lib/web/pdf_attachment_viewer.js +38 -18
  136. package/lib/web/pdf_cursor_tools.js +39 -16
  137. package/lib/web/pdf_document_properties.js +255 -136
  138. package/lib/web/pdf_find_bar.js +84 -40
  139. package/lib/web/pdf_find_controller.js +495 -184
  140. package/lib/web/pdf_find_utils.js +111 -0
  141. package/lib/web/pdf_history.js +190 -53
  142. package/lib/web/pdf_link_service.js +138 -77
  143. package/lib/web/pdf_outline_viewer.js +122 -46
  144. package/lib/web/pdf_page_view.js +191 -67
  145. package/lib/web/pdf_presentation_mode.js +99 -34
  146. package/lib/web/pdf_print_service.js +61 -13
  147. package/lib/web/pdf_rendering_queue.js +28 -9
  148. package/lib/web/pdf_sidebar.js +141 -81
  149. package/lib/web/pdf_sidebar_resizer.js +42 -16
  150. package/lib/web/pdf_single_page_viewer.js +74 -66
  151. package/lib/web/pdf_thumbnail_view.js +104 -33
  152. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  153. package/lib/web/pdf_viewer.component.js +112 -32
  154. package/lib/web/pdf_viewer.js +91 -52
  155. package/lib/web/preferences.js +284 -89
  156. package/lib/web/secondary_toolbar.js +165 -40
  157. package/lib/web/text_layer_builder.js +134 -59
  158. package/lib/web/toolbar.js +78 -43
  159. package/lib/web/ui_utils.js +462 -136
  160. package/lib/web/view_history.js +215 -67
  161. package/lib/web/viewer_compatibility.js +4 -13
  162. package/package.json +5 -4
  163. package/web/pdf_viewer.css +79 -11
  164. package/web/pdf_viewer.js +6107 -3748
  165. package/web/pdf_viewer.js.map +1 -1
  166. package/lib/display/dom_utils.js +0 -309
  167. package/lib/test/unit/dom_utils_spec.js +0 -89
  168. package/lib/test/unit/fonts_spec.js +0 -81
  169. 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,69 +19,215 @@
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.waitOnEventOrTimeout = exports.WaitOnType = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.getPageSizeInches = exports.roundToDivide = exports.getVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.cloneObj = exports.isFileSchema = exports.isPortraitOrientation = exports.isValidRotation = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined;
27
+ exports.isValidRotation = isValidRotation;
28
+ exports.isValidScrollMode = isValidScrollMode;
29
+ exports.isValidSpreadMode = isValidSpreadMode;
30
+ exports.isPortraitOrientation = isPortraitOrientation;
31
+ exports.getGlobalEventBus = getGlobalEventBus;
32
+ exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
33
+ exports.noContextMenuHandler = noContextMenuHandler;
34
+ exports.parseQueryString = parseQueryString;
35
+ exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
36
+ exports.getVisibleElements = getVisibleElements;
37
+ exports.roundToDivide = roundToDivide;
38
+ exports.getPageSizeInches = getPageSizeInches;
39
+ exports.approximateFraction = approximateFraction;
40
+ exports.getOutputScale = getOutputScale;
41
+ exports.scrollIntoView = scrollIntoView;
42
+ exports.watchScroll = watchScroll;
43
+ exports.binarySearchFirstItem = binarySearchFirstItem;
44
+ exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
45
+ exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
46
+ exports.moveToEndOfArray = moveToEndOfArray;
47
+ exports.WaitOnType = exports.animationStarted = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.SpreadMode = exports.ScrollMode = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = void 0;
48
+
49
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
28
50
 
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; }; }();
51
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
30
52
 
31
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
53
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
32
54
 
33
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
55
+ 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); } }
34
56
 
35
- var _pdf = require('../pdf');
57
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
36
58
 
37
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
59
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
60
+
61
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
62
+
63
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
64
+
65
+ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
66
+
67
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
68
+
69
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
70
+
71
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
38
72
 
39
73
  var CSS_UNITS = 96.0 / 72.0;
74
+ exports.CSS_UNITS = CSS_UNITS;
40
75
  var DEFAULT_SCALE_VALUE = 'auto';
76
+ exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
41
77
  var DEFAULT_SCALE = 1.0;
78
+ exports.DEFAULT_SCALE = DEFAULT_SCALE;
42
79
  var MIN_SCALE = 0.10;
80
+ exports.MIN_SCALE = MIN_SCALE;
43
81
  var MAX_SCALE = 10.0;
82
+ exports.MAX_SCALE = MAX_SCALE;
44
83
  var UNKNOWN_SCALE = 0;
84
+ exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
45
85
  var MAX_AUTO_SCALE = 1.25;
86
+ exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
46
87
  var SCROLLBAR_PADDING = 40;
88
+ exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
47
89
  var VERTICAL_PADDING = 5;
90
+ exports.VERTICAL_PADDING = VERTICAL_PADDING;
48
91
  var PresentationModeState = {
49
92
  UNKNOWN: 0,
50
93
  NORMAL: 1,
51
94
  CHANGING: 2,
52
95
  FULLSCREEN: 3
53
96
  };
97
+ exports.PresentationModeState = PresentationModeState;
54
98
  var RendererType = {
55
99
  CANVAS: 'canvas',
56
100
  SVG: 'svg'
57
101
  };
102
+ exports.RendererType = RendererType;
58
103
  var TextLayerMode = {
59
104
  DISABLE: 0,
60
105
  ENABLE: 1,
61
106
  ENABLE_ENHANCE: 2
62
107
  };
108
+ exports.TextLayerMode = TextLayerMode;
109
+ var ScrollMode = {
110
+ UNKNOWN: -1,
111
+ VERTICAL: 0,
112
+ HORIZONTAL: 1,
113
+ WRAPPED: 2
114
+ };
115
+ exports.ScrollMode = ScrollMode;
116
+ var SpreadMode = {
117
+ UNKNOWN: -1,
118
+ NONE: 0,
119
+ ODD: 1,
120
+ EVEN: 2
121
+ };
122
+ exports.SpreadMode = SpreadMode;
123
+
63
124
  function formatL10nValue(text, args) {
64
125
  if (!args) {
65
126
  return text;
66
127
  }
128
+
67
129
  return text.replace(/\{\{\s*(\w+)\s*\}\}/g, function (all, name) {
68
130
  return name in args ? args[name] : '{{' + name + '}}';
69
131
  });
70
132
  }
133
+
71
134
  var NullL10n = {
72
- getLanguage: function getLanguage() {
73
- return Promise.resolve('en-us');
74
- },
75
- getDirection: function getDirection() {
76
- return Promise.resolve('ltr');
77
- },
78
- get: function get(property, args, fallback) {
79
- return Promise.resolve(formatL10nValue(fallback, args));
80
- },
81
- translate: function translate(element) {
82
- return Promise.resolve();
83
- }
135
+ getLanguage: function () {
136
+ var _getLanguage = _asyncToGenerator(
137
+ /*#__PURE__*/
138
+ _regenerator["default"].mark(function _callee() {
139
+ return _regenerator["default"].wrap(function _callee$(_context) {
140
+ while (1) {
141
+ switch (_context.prev = _context.next) {
142
+ case 0:
143
+ return _context.abrupt("return", 'en-us');
144
+
145
+ case 1:
146
+ case "end":
147
+ return _context.stop();
148
+ }
149
+ }
150
+ }, _callee);
151
+ }));
152
+
153
+ function getLanguage() {
154
+ return _getLanguage.apply(this, arguments);
155
+ }
156
+
157
+ return getLanguage;
158
+ }(),
159
+ getDirection: function () {
160
+ var _getDirection = _asyncToGenerator(
161
+ /*#__PURE__*/
162
+ _regenerator["default"].mark(function _callee2() {
163
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
164
+ while (1) {
165
+ switch (_context2.prev = _context2.next) {
166
+ case 0:
167
+ return _context2.abrupt("return", 'ltr');
168
+
169
+ case 1:
170
+ case "end":
171
+ return _context2.stop();
172
+ }
173
+ }
174
+ }, _callee2);
175
+ }));
176
+
177
+ function getDirection() {
178
+ return _getDirection.apply(this, arguments);
179
+ }
180
+
181
+ return getDirection;
182
+ }(),
183
+ get: function () {
184
+ var _get = _asyncToGenerator(
185
+ /*#__PURE__*/
186
+ _regenerator["default"].mark(function _callee3(property, args, fallback) {
187
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
188
+ while (1) {
189
+ switch (_context3.prev = _context3.next) {
190
+ case 0:
191
+ return _context3.abrupt("return", formatL10nValue(fallback, args));
192
+
193
+ case 1:
194
+ case "end":
195
+ return _context3.stop();
196
+ }
197
+ }
198
+ }, _callee3);
199
+ }));
200
+
201
+ function get(_x, _x2, _x3) {
202
+ return _get.apply(this, arguments);
203
+ }
204
+
205
+ return get;
206
+ }(),
207
+ translate: function () {
208
+ var _translate = _asyncToGenerator(
209
+ /*#__PURE__*/
210
+ _regenerator["default"].mark(function _callee4(element) {
211
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
212
+ while (1) {
213
+ switch (_context4.prev = _context4.next) {
214
+ case 0:
215
+ case "end":
216
+ return _context4.stop();
217
+ }
218
+ }
219
+ }, _callee4);
220
+ }));
221
+
222
+ function translate(_x4) {
223
+ return _translate.apply(this, arguments);
224
+ }
225
+
226
+ return translate;
227
+ }()
84
228
  };
229
+ exports.NullL10n = NullL10n;
230
+
85
231
  function getOutputScale(ctx) {
86
232
  var devicePixelRatio = window.devicePixelRatio || 1;
87
233
  var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
@@ -92,57 +238,80 @@ function getOutputScale(ctx) {
92
238
  scaled: pixelRatio !== 1
93
239
  };
94
240
  }
241
+
95
242
  function scrollIntoView(element, spot) {
96
243
  var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
97
-
98
244
  var parent = element.offsetParent;
245
+
99
246
  if (!parent) {
100
247
  console.error('offsetParent is not set -- cannot scroll');
101
248
  return;
102
249
  }
250
+
103
251
  var offsetY = element.offsetTop + element.clientTop;
104
252
  var offsetX = element.offsetLeft + element.clientLeft;
105
- while (parent.clientHeight === parent.scrollHeight || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') {
253
+
254
+ while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') {
106
255
  if (parent.dataset._scaleY) {
107
256
  offsetY /= parent.dataset._scaleY;
108
257
  offsetX /= parent.dataset._scaleX;
109
258
  }
259
+
110
260
  offsetY += parent.offsetTop;
111
261
  offsetX += parent.offsetLeft;
112
262
  parent = parent.offsetParent;
263
+
113
264
  if (!parent) {
114
265
  return;
115
266
  }
116
267
  }
268
+
117
269
  if (spot) {
118
270
  if (spot.top !== undefined) {
119
271
  offsetY += spot.top;
120
272
  }
273
+
121
274
  if (spot.left !== undefined) {
122
275
  offsetX += spot.left;
123
276
  parent.scrollLeft = offsetX;
124
277
  }
125
278
  }
279
+
126
280
  parent.scrollTop = offsetY;
127
281
  }
282
+
128
283
  function watchScroll(viewAreaElement, callback) {
129
284
  var debounceScroll = function debounceScroll(evt) {
130
285
  if (rAF) {
131
286
  return;
132
287
  }
288
+
133
289
  rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
134
290
  rAF = null;
291
+ var currentX = viewAreaElement.scrollLeft;
292
+ var lastX = state.lastX;
293
+
294
+ if (currentX !== lastX) {
295
+ state.right = currentX > lastX;
296
+ }
297
+
298
+ state.lastX = currentX;
135
299
  var currentY = viewAreaElement.scrollTop;
136
300
  var lastY = state.lastY;
301
+
137
302
  if (currentY !== lastY) {
138
303
  state.down = currentY > lastY;
139
304
  }
305
+
140
306
  state.lastY = currentY;
141
307
  callback(state);
142
308
  });
143
309
  };
310
+
144
311
  var state = {
312
+ right: true,
145
313
  down: true,
314
+ lastX: viewAreaElement.scrollLeft,
146
315
  lastY: viewAreaElement.scrollTop,
147
316
  _eventHandler: debounceScroll
148
317
  };
@@ -150,59 +319,75 @@ function watchScroll(viewAreaElement, callback) {
150
319
  viewAreaElement.addEventListener('scroll', debounceScroll, true);
151
320
  return state;
152
321
  }
322
+
153
323
  function parseQueryString(query) {
154
324
  var parts = query.split('&');
155
325
  var params = Object.create(null);
326
+
156
327
  for (var i = 0, ii = parts.length; i < ii; ++i) {
157
328
  var param = parts[i].split('=');
158
329
  var key = param[0].toLowerCase();
159
330
  var value = param.length > 1 ? param[1] : null;
160
331
  params[decodeURIComponent(key)] = decodeURIComponent(value);
161
332
  }
333
+
162
334
  return params;
163
335
  }
336
+
164
337
  function binarySearchFirstItem(items, condition) {
165
338
  var minIndex = 0;
166
339
  var maxIndex = items.length - 1;
340
+
167
341
  if (items.length === 0 || !condition(items[maxIndex])) {
168
342
  return items.length;
169
343
  }
344
+
170
345
  if (condition(items[minIndex])) {
171
346
  return minIndex;
172
347
  }
348
+
173
349
  while (minIndex < maxIndex) {
174
350
  var currentIndex = minIndex + maxIndex >> 1;
175
351
  var currentItem = items[currentIndex];
352
+
176
353
  if (condition(currentItem)) {
177
354
  maxIndex = currentIndex;
178
355
  } else {
179
356
  minIndex = currentIndex + 1;
180
357
  }
181
358
  }
359
+
182
360
  return minIndex;
183
361
  }
362
+
184
363
  function approximateFraction(x) {
185
364
  if (Math.floor(x) === x) {
186
365
  return [x, 1];
187
366
  }
367
+
188
368
  var xinv = 1 / x;
189
369
  var limit = 8;
370
+
190
371
  if (xinv > limit) {
191
372
  return [1, limit];
192
373
  } else if (Math.floor(xinv) === xinv) {
193
374
  return [1, xinv];
194
375
  }
376
+
195
377
  var x_ = x > 1 ? xinv : x;
196
378
  var a = 0,
197
379
  b = 1,
198
380
  c = 1,
199
381
  d = 1;
382
+
200
383
  while (true) {
201
384
  var p = a + c,
202
385
  q = b + d;
386
+
203
387
  if (q > limit) {
204
388
  break;
205
389
  }
390
+
206
391
  if (x_ <= p / q) {
207
392
  c = p;
208
393
  d = q;
@@ -211,18 +396,23 @@ function approximateFraction(x) {
211
396
  b = q;
212
397
  }
213
398
  }
214
- var result = void 0;
399
+
400
+ var result;
401
+
215
402
  if (x_ - a / b < c / d - x_) {
216
403
  result = x_ === x ? [a, b] : [b, a];
217
404
  } else {
218
405
  result = x_ === x ? [c, d] : [d, c];
219
406
  }
407
+
220
408
  return result;
221
409
  }
410
+
222
411
  function roundToDivide(x, div) {
223
412
  var r = x % div;
224
413
  return r === 0 ? x : Math.round(x - r + div);
225
414
  }
415
+
226
416
  function getPageSizeInches(_ref) {
227
417
  var view = _ref.view,
228
418
  userUnit = _ref.userUnit,
@@ -242,233 +432,377 @@ function getPageSizeInches(_ref) {
242
432
  height: changeOrientation ? width : height
243
433
  };
244
434
  }
435
+
436
+ function backtrackBeforeAllVisibleElements(index, views, top) {
437
+ if (index < 2) {
438
+ return index;
439
+ }
440
+
441
+ var elt = views[index].div;
442
+ var pageTop = elt.offsetTop + elt.clientTop;
443
+
444
+ if (pageTop >= top) {
445
+ elt = views[index - 1].div;
446
+ pageTop = elt.offsetTop + elt.clientTop;
447
+ }
448
+
449
+ for (var i = index - 2; i >= 0; --i) {
450
+ elt = views[i].div;
451
+
452
+ if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {
453
+ break;
454
+ }
455
+
456
+ index = i;
457
+ }
458
+
459
+ return index;
460
+ }
461
+
245
462
  function getVisibleElements(scrollEl, views) {
246
463
  var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
247
-
464
+ var horizontal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
248
465
  var top = scrollEl.scrollTop,
249
466
  bottom = top + scrollEl.clientHeight;
250
467
  var left = scrollEl.scrollLeft,
251
468
  right = left + scrollEl.clientWidth;
252
- function isElementBottomBelowViewTop(view) {
469
+
470
+ function isElementBottomAfterViewTop(view) {
253
471
  var element = view.div;
254
472
  var elementBottom = element.offsetTop + element.clientTop + element.clientHeight;
255
473
  return elementBottom > top;
256
474
  }
475
+
476
+ function isElementRightAfterViewLeft(view) {
477
+ var element = view.div;
478
+ var elementRight = element.offsetLeft + element.clientLeft + element.clientWidth;
479
+ return elementRight > left;
480
+ }
481
+
257
482
  var visible = [],
258
- view = void 0,
259
- element = void 0;
260
- var currentHeight = void 0,
261
- viewHeight = void 0,
262
- hiddenHeight = void 0,
263
- percentHeight = void 0;
264
- var currentWidth = void 0,
265
- viewWidth = void 0;
266
- var firstVisibleElementInd = views.length === 0 ? 0 : binarySearchFirstItem(views, isElementBottomBelowViewTop);
267
- for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {
268
- view = views[i];
269
- element = view.div;
270
- currentHeight = element.offsetTop + element.clientTop;
271
- viewHeight = element.clientHeight;
272
- if (currentHeight > bottom) {
483
+ numViews = views.length;
484
+ var firstVisibleElementInd = numViews === 0 ? 0 : binarySearchFirstItem(views, horizontal ? isElementRightAfterViewLeft : isElementBottomAfterViewTop);
485
+
486
+ if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) {
487
+ firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);
488
+ }
489
+
490
+ var lastEdge = horizontal ? right : -1;
491
+
492
+ for (var i = firstVisibleElementInd; i < numViews; i++) {
493
+ var view = views[i],
494
+ element = view.div;
495
+ var currentWidth = element.offsetLeft + element.clientLeft;
496
+ var currentHeight = element.offsetTop + element.clientTop;
497
+ var viewWidth = element.clientWidth,
498
+ viewHeight = element.clientHeight;
499
+ var viewRight = currentWidth + viewWidth;
500
+ var viewBottom = currentHeight + viewHeight;
501
+
502
+ if (lastEdge === -1) {
503
+ if (viewBottom >= bottom) {
504
+ lastEdge = viewBottom;
505
+ }
506
+ } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {
273
507
  break;
274
508
  }
275
- currentWidth = element.offsetLeft + element.clientLeft;
276
- viewWidth = element.clientWidth;
277
- if (currentWidth + viewWidth < left || currentWidth > right) {
509
+
510
+ if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {
278
511
  continue;
279
512
  }
280
- hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, currentHeight + viewHeight - bottom);
281
- percentHeight = (viewHeight - hiddenHeight) * 100 / viewHeight | 0;
513
+
514
+ var hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);
515
+ var hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);
516
+ var percent = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 0;
282
517
  visible.push({
283
518
  id: view.id,
284
519
  x: currentWidth,
285
520
  y: currentHeight,
286
521
  view: view,
287
- percent: percentHeight
522
+ percent: percent
288
523
  });
289
524
  }
290
- var first = visible[0];
291
- var last = visible[visible.length - 1];
525
+
526
+ var first = visible[0],
527
+ last = visible[visible.length - 1];
528
+
292
529
  if (sortByVisibility) {
293
530
  visible.sort(function (a, b) {
294
531
  var pc = a.percent - b.percent;
532
+
295
533
  if (Math.abs(pc) > 0.001) {
296
534
  return -pc;
297
535
  }
536
+
298
537
  return a.id - b.id;
299
538
  });
300
539
  }
540
+
301
541
  return {
302
542
  first: first,
303
543
  last: last,
304
544
  views: visible
305
545
  };
306
546
  }
547
+
307
548
  function noContextMenuHandler(evt) {
308
549
  evt.preventDefault();
309
550
  }
310
- function isFileSchema(url) {
311
- var i = 0,
312
- ii = url.length;
313
- while (i < ii && url[i].trim() === '') {
314
- i++;
315
- }
316
- return url.substr(i, 7).toLowerCase() === 'file://';
317
- }
551
+
318
552
  function isDataSchema(url) {
319
553
  var i = 0,
320
554
  ii = url.length;
555
+
321
556
  while (i < ii && url[i].trim() === '') {
322
557
  i++;
323
558
  }
324
- return url.substr(i, 5).toLowerCase() === 'data:';
559
+
560
+ return url.substring(i, i + 5).toLowerCase() === 'data:';
325
561
  }
562
+
326
563
  function getPDFFileNameFromURL(url) {
327
564
  var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';
328
565
 
566
+ if (typeof url !== 'string') {
567
+ return defaultFilename;
568
+ }
569
+
329
570
  if (isDataSchema(url)) {
330
571
  console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.');
331
572
  return defaultFilename;
332
573
  }
574
+
333
575
  var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
334
576
  var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
335
577
  var splitURI = reURI.exec(url);
336
578
  var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
579
+
337
580
  if (suggestedFilename) {
338
581
  suggestedFilename = suggestedFilename[0];
582
+
339
583
  if (suggestedFilename.includes('%')) {
340
584
  try {
341
585
  suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
342
586
  } catch (ex) {}
343
587
  }
344
588
  }
589
+
345
590
  return suggestedFilename || defaultFilename;
346
591
  }
592
+
347
593
  function normalizeWheelEventDelta(evt) {
348
594
  var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);
349
595
  var angle = Math.atan2(evt.deltaY, evt.deltaX);
596
+
350
597
  if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {
351
598
  delta = -delta;
352
599
  }
600
+
353
601
  var MOUSE_DOM_DELTA_PIXEL_MODE = 0;
354
602
  var MOUSE_DOM_DELTA_LINE_MODE = 1;
355
603
  var MOUSE_PIXELS_PER_LINE = 30;
356
604
  var MOUSE_LINES_PER_PAGE = 30;
605
+
357
606
  if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {
358
607
  delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;
359
608
  } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {
360
609
  delta /= MOUSE_LINES_PER_PAGE;
361
610
  }
611
+
362
612
  return delta;
363
613
  }
614
+
364
615
  function isValidRotation(angle) {
365
616
  return Number.isInteger(angle) && angle % 90 === 0;
366
617
  }
618
+
619
+ function isValidScrollMode(mode) {
620
+ return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN;
621
+ }
622
+
623
+ function isValidSpreadMode(mode) {
624
+ return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN;
625
+ }
626
+
367
627
  function isPortraitOrientation(size) {
368
628
  return size.width <= size.height;
369
629
  }
370
- function cloneObj(obj) {
371
- var result = Object.create(null);
372
- for (var i in obj) {
373
- if (Object.prototype.hasOwnProperty.call(obj, i)) {
374
- result[i] = obj[i];
375
- }
376
- }
377
- return result;
378
- }
630
+
379
631
  var WaitOnType = {
380
632
  EVENT: 'event',
381
633
  TIMEOUT: 'timeout'
382
634
  };
635
+ exports.WaitOnType = WaitOnType;
636
+
383
637
  function waitOnEventOrTimeout(_ref2) {
384
638
  var target = _ref2.target,
385
639
  name = _ref2.name,
386
640
  _ref2$delay = _ref2.delay,
387
- delay = _ref2$delay === undefined ? 0 : _ref2$delay;
641
+ delay = _ref2$delay === void 0 ? 0 : _ref2$delay;
642
+ return new Promise(function (resolve, reject) {
643
+ if (_typeof(target) !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {
644
+ throw new Error('waitOnEventOrTimeout - invalid parameters.');
645
+ }
646
+
647
+ function handler(type) {
648
+ if (target instanceof EventBus) {
649
+ target.off(name, eventHandler);
650
+ } else {
651
+ target.removeEventListener(name, eventHandler);
652
+ }
653
+
654
+ if (timeout) {
655
+ clearTimeout(timeout);
656
+ }
657
+
658
+ resolve(type);
659
+ }
660
+
661
+ var eventHandler = handler.bind(null, WaitOnType.EVENT);
388
662
 
389
- if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {
390
- return Promise.reject(new Error('waitOnEventOrTimeout - invalid parameters.'));
391
- }
392
- var capability = (0, _pdf.createPromiseCapability)();
393
- function handler(type) {
394
663
  if (target instanceof EventBus) {
395
- target.off(name, eventHandler);
664
+ target.on(name, eventHandler);
396
665
  } else {
397
- target.removeEventListener(name, eventHandler);
666
+ target.addEventListener(name, eventHandler);
398
667
  }
399
- if (timeout) {
400
- clearTimeout(timeout);
401
- }
402
- capability.resolve(type);
403
- }
404
- var eventHandler = handler.bind(null, WaitOnType.EVENT);
405
- if (target instanceof EventBus) {
406
- target.on(name, eventHandler);
407
- } else {
408
- target.addEventListener(name, eventHandler);
409
- }
410
- var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
411
- var timeout = setTimeout(timeoutHandler, delay);
412
- return capability.promise;
668
+
669
+ var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
670
+ var timeout = setTimeout(timeoutHandler, delay);
671
+ });
413
672
  }
673
+
414
674
  var animationStarted = new Promise(function (resolve) {
675
+ if (typeof window === 'undefined') {
676
+ setTimeout(resolve, 20);
677
+ return;
678
+ }
679
+
415
680
  window.requestAnimationFrame(resolve);
416
681
  });
682
+ exports.animationStarted = animationStarted;
417
683
 
418
- var EventBus = function () {
684
+ var EventBus =
685
+ /*#__PURE__*/
686
+ function () {
419
687
  function EventBus() {
688
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
689
+ _ref3$dispatchToDOM = _ref3.dispatchToDOM,
690
+ dispatchToDOM = _ref3$dispatchToDOM === void 0 ? false : _ref3$dispatchToDOM;
691
+
420
692
  _classCallCheck(this, EventBus);
421
693
 
422
694
  this._listeners = Object.create(null);
695
+ this._dispatchToDOM = dispatchToDOM === true;
423
696
  }
424
697
 
425
698
  _createClass(EventBus, [{
426
- key: 'on',
699
+ key: "on",
427
700
  value: function on(eventName, listener) {
428
701
  var eventListeners = this._listeners[eventName];
702
+
429
703
  if (!eventListeners) {
430
704
  eventListeners = [];
431
705
  this._listeners[eventName] = eventListeners;
432
706
  }
707
+
433
708
  eventListeners.push(listener);
434
709
  }
435
710
  }, {
436
- key: 'off',
711
+ key: "off",
437
712
  value: function off(eventName, listener) {
438
713
  var eventListeners = this._listeners[eventName];
439
- var i = void 0;
714
+ var i;
715
+
440
716
  if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) {
441
717
  return;
442
718
  }
719
+
443
720
  eventListeners.splice(i, 1);
444
721
  }
445
722
  }, {
446
- key: 'dispatch',
723
+ key: "dispatch",
447
724
  value: function dispatch(eventName) {
448
725
  var eventListeners = this._listeners[eventName];
726
+
449
727
  if (!eventListeners || eventListeners.length === 0) {
728
+ if (this._dispatchToDOM) {
729
+ var _args5 = Array.prototype.slice.call(arguments, 1);
730
+
731
+ this._dispatchDOMEvent(eventName, _args5);
732
+ }
733
+
450
734
  return;
451
735
  }
736
+
452
737
  var args = Array.prototype.slice.call(arguments, 1);
453
738
  eventListeners.slice(0).forEach(function (listener) {
454
739
  listener.apply(null, args);
455
740
  });
741
+
742
+ if (this._dispatchToDOM) {
743
+ this._dispatchDOMEvent(eventName, args);
744
+ }
745
+ }
746
+ }, {
747
+ key: "_dispatchDOMEvent",
748
+ value: function _dispatchDOMEvent(eventName) {
749
+ var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
750
+ var details = Object.create(null);
751
+
752
+ if (args && args.length > 0) {
753
+ var obj = args[0];
754
+
755
+ for (var key in obj) {
756
+ var value = obj[key];
757
+
758
+ if (key === 'source') {
759
+ if (value === window || value === document) {
760
+ return;
761
+ }
762
+
763
+ continue;
764
+ }
765
+
766
+ details[key] = value;
767
+ }
768
+ }
769
+
770
+ var event = document.createEvent('CustomEvent');
771
+ event.initCustomEvent(eventName, true, true, details);
772
+ document.dispatchEvent(event);
456
773
  }
457
774
  }]);
458
775
 
459
776
  return EventBus;
460
777
  }();
461
778
 
779
+ exports.EventBus = EventBus;
780
+ var globalEventBus = null;
781
+
782
+ function getGlobalEventBus() {
783
+ var dispatchToDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
784
+
785
+ if (!globalEventBus) {
786
+ globalEventBus = new EventBus({
787
+ dispatchToDOM: dispatchToDOM
788
+ });
789
+ }
790
+
791
+ return globalEventBus;
792
+ }
793
+
462
794
  function clamp(v, min, max) {
463
795
  return Math.min(Math.max(v, min), max);
464
796
  }
465
797
 
466
- var ProgressBar = function () {
798
+ var ProgressBar =
799
+ /*#__PURE__*/
800
+ function () {
467
801
  function ProgressBar(id) {
468
- var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
469
- height = _ref3.height,
470
- width = _ref3.width,
471
- units = _ref3.units;
802
+ var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
803
+ height = _ref4.height,
804
+ width = _ref4.width,
805
+ units = _ref4.units;
472
806
 
473
807
  _classCallCheck(this, ProgressBar);
474
808
 
@@ -483,57 +817,63 @@ var ProgressBar = function () {
483
817
  }
484
818
 
485
819
  _createClass(ProgressBar, [{
486
- key: '_updateBar',
820
+ key: "_updateBar",
487
821
  value: function _updateBar() {
488
822
  if (this._indeterminate) {
489
823
  this.div.classList.add('indeterminate');
490
824
  this.div.style.width = this.width + this.units;
491
825
  return;
492
826
  }
827
+
493
828
  this.div.classList.remove('indeterminate');
494
829
  var progressSize = this.width * this._percent / 100;
495
830
  this.div.style.width = progressSize + this.units;
496
831
  }
497
832
  }, {
498
- key: 'setWidth',
833
+ key: "setWidth",
499
834
  value: function setWidth(viewer) {
500
835
  if (!viewer) {
501
836
  return;
502
837
  }
838
+
503
839
  var container = viewer.parentNode;
504
840
  var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
841
+
505
842
  if (scrollbarWidth > 0) {
506
843
  this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);');
507
844
  }
508
845
  }
509
846
  }, {
510
- key: 'hide',
847
+ key: "hide",
511
848
  value: function hide() {
512
849
  if (!this.visible) {
513
850
  return;
514
851
  }
852
+
515
853
  this.visible = false;
516
854
  this.bar.classList.add('hidden');
517
855
  document.body.classList.remove('loadingInProgress');
518
856
  }
519
857
  }, {
520
- key: 'show',
858
+ key: "show",
521
859
  value: function show() {
522
860
  if (this.visible) {
523
861
  return;
524
862
  }
863
+
525
864
  this.visible = true;
526
865
  document.body.classList.add('loadingInProgress');
527
866
  this.bar.classList.remove('hidden');
528
867
  }
529
868
  }, {
530
- key: 'percent',
869
+ key: "percent",
531
870
  get: function get() {
532
871
  return this._percent;
533
872
  },
534
873
  set: function set(val) {
535
874
  this._indeterminate = isNaN(val);
536
875
  this._percent = clamp(val, 0, 100);
876
+
537
877
  this._updateBar();
538
878
  }
539
879
  }]);
@@ -541,37 +881,23 @@ var ProgressBar = function () {
541
881
  return ProgressBar;
542
882
  }();
543
883
 
544
- exports.CSS_UNITS = CSS_UNITS;
545
- exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
546
- exports.DEFAULT_SCALE = DEFAULT_SCALE;
547
- exports.MIN_SCALE = MIN_SCALE;
548
- exports.MAX_SCALE = MAX_SCALE;
549
- exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
550
- exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
551
- exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
552
- exports.VERTICAL_PADDING = VERTICAL_PADDING;
553
- exports.isValidRotation = isValidRotation;
554
- exports.isPortraitOrientation = isPortraitOrientation;
555
- exports.isFileSchema = isFileSchema;
556
- exports.cloneObj = cloneObj;
557
- exports.PresentationModeState = PresentationModeState;
558
- exports.RendererType = RendererType;
559
- exports.TextLayerMode = TextLayerMode;
560
- exports.NullL10n = NullL10n;
561
- exports.EventBus = EventBus;
562
884
  exports.ProgressBar = ProgressBar;
563
- exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
564
- exports.noContextMenuHandler = noContextMenuHandler;
565
- exports.parseQueryString = parseQueryString;
566
- exports.getVisibleElements = getVisibleElements;
567
- exports.roundToDivide = roundToDivide;
568
- exports.getPageSizeInches = getPageSizeInches;
569
- exports.approximateFraction = approximateFraction;
570
- exports.getOutputScale = getOutputScale;
571
- exports.scrollIntoView = scrollIntoView;
572
- exports.watchScroll = watchScroll;
573
- exports.binarySearchFirstItem = binarySearchFirstItem;
574
- exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
575
- exports.animationStarted = animationStarted;
576
- exports.WaitOnType = WaitOnType;
577
- exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
885
+
886
+ function moveToEndOfArray(arr, condition) {
887
+ var moved = [],
888
+ len = arr.length;
889
+ var write = 0;
890
+
891
+ for (var read = 0; read < len; ++read) {
892
+ if (condition(arr[read])) {
893
+ moved.push(arr[read]);
894
+ } else {
895
+ arr[write] = arr[read];
896
+ ++write;
897
+ }
898
+ }
899
+
900
+ for (var _read = 0; write < len; ++_read, ++write) {
901
+ arr[write] = moved[_read];
902
+ }
903
+ }