pdfjs-dist 2.3.200 → 2.4.456

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