pdfjs-dist 2.0.487 → 2.1.266

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

Potentially problematic release.


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

Files changed (161) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +15564 -9476
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +46644 -36309
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/external/url/url-lib.js +627 -0
  9. package/image_decoders/pdf.image_decoders.js +11430 -0
  10. package/image_decoders/pdf.image_decoders.js.map +1 -0
  11. package/image_decoders/pdf.image_decoders.min.js +1 -0
  12. package/lib/core/annotation.js +406 -131
  13. package/lib/core/arithmetic_decoder.js +275 -245
  14. package/lib/core/bidi.js +65 -6
  15. package/lib/core/ccitt.js +173 -18
  16. package/lib/core/ccitt_stream.js +15 -6
  17. package/lib/core/cff_parser.js +376 -53
  18. package/lib/core/charsets.js +5 -4
  19. package/lib/core/chunked_stream.js +387 -149
  20. package/lib/core/cmap.js +310 -75
  21. package/lib/core/colorspace.js +874 -594
  22. package/lib/core/crypto.js +290 -45
  23. package/lib/core/document.js +545 -260
  24. package/lib/core/encodings.js +19 -10
  25. package/lib/core/evaluator.js +725 -147
  26. package/lib/core/font_renderer.js +360 -91
  27. package/lib/core/fonts.js +791 -186
  28. package/lib/core/function.js +284 -71
  29. package/lib/core/glyphlist.js +3 -2
  30. package/lib/core/image.js +168 -61
  31. package/lib/core/jbig2.js +479 -66
  32. package/lib/core/jbig2_stream.js +19 -8
  33. package/lib/core/jpeg_stream.js +38 -13
  34. package/lib/core/jpg.js +252 -29
  35. package/lib/core/jpx.js +396 -6
  36. package/lib/core/jpx_stream.js +18 -6
  37. package/lib/core/metrics.js +4 -4
  38. package/lib/core/murmurhash3.js +24 -6
  39. package/lib/core/obj.js +1137 -475
  40. package/lib/core/operator_list.js +108 -6
  41. package/lib/core/parser.js +321 -68
  42. package/lib/core/pattern.js +145 -13
  43. package/lib/core/pdf_manager.js +321 -133
  44. package/lib/core/primitives.js +75 -22
  45. package/lib/core/ps_parser.js +134 -45
  46. package/lib/core/standard_fonts.js +10 -10
  47. package/lib/core/stream.js +313 -34
  48. package/lib/core/type1_parser.js +143 -13
  49. package/lib/core/unicode.js +31 -4
  50. package/lib/core/worker.js +210 -66
  51. package/lib/display/annotation_layer.js +361 -123
  52. package/lib/display/api.js +1454 -729
  53. package/lib/display/api_compatibility.js +11 -13
  54. package/lib/display/canvas.js +324 -29
  55. package/lib/display/content_disposition.js +83 -32
  56. package/lib/display/dom_utils.js +226 -41
  57. package/lib/display/fetch_stream.js +208 -84
  58. package/lib/display/font_loader.js +465 -236
  59. package/lib/display/metadata.js +38 -16
  60. package/lib/display/network.js +216 -51
  61. package/lib/display/network_utils.js +32 -19
  62. package/lib/display/node_stream.js +352 -169
  63. package/lib/display/pattern_helper.js +58 -7
  64. package/lib/display/svg.js +242 -29
  65. package/lib/display/text_layer.js +132 -18
  66. package/lib/display/transport_stream.js +171 -42
  67. package/lib/display/webgl.js +64 -18
  68. package/lib/display/worker_options.js +5 -4
  69. package/lib/display/xml_parser.js +166 -53
  70. package/lib/examples/node/domstubs.js +57 -4
  71. package/lib/pdf.js +21 -4
  72. package/lib/pdf.worker.js +5 -3
  73. package/lib/shared/compatibility.js +158 -564
  74. package/lib/shared/global_scope.js +2 -2
  75. package/lib/shared/is_node.js +4 -4
  76. package/lib/shared/message_handler.js +521 -0
  77. package/lib/shared/streams_polyfill.js +21 -17
  78. package/lib/shared/url_polyfill.js +56 -0
  79. package/lib/shared/util.js +295 -650
  80. package/lib/test/unit/annotation_spec.js +629 -345
  81. package/lib/test/unit/api_spec.js +555 -253
  82. package/lib/test/unit/bidi_spec.js +7 -7
  83. package/lib/test/unit/cff_parser_spec.js +40 -11
  84. package/lib/test/unit/clitests_helper.js +9 -7
  85. package/lib/test/unit/cmap_spec.js +80 -26
  86. package/lib/test/unit/colorspace_spec.js +99 -52
  87. package/lib/test/unit/crypto_spec.js +17 -5
  88. package/lib/test/unit/custom_spec.js +41 -53
  89. package/lib/test/unit/display_svg_spec.js +33 -17
  90. package/lib/test/unit/document_spec.js +3 -3
  91. package/lib/test/unit/dom_utils_spec.js +9 -9
  92. package/lib/test/unit/encodings_spec.js +25 -45
  93. package/lib/test/unit/evaluator_spec.js +34 -9
  94. package/lib/test/unit/function_spec.js +17 -5
  95. package/lib/test/unit/jasmine-boot.js +31 -18
  96. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  97. package/lib/test/unit/metadata_spec.js +71 -11
  98. package/lib/test/unit/murmurhash3_spec.js +3 -3
  99. package/lib/test/unit/network_spec.js +20 -5
  100. package/lib/test/unit/network_utils_spec.js +41 -14
  101. package/lib/test/unit/node_stream_spec.js +51 -27
  102. package/lib/test/unit/parser_spec.js +35 -8
  103. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  104. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  105. package/lib/test/unit/pdf_history_spec.js +21 -9
  106. package/lib/test/unit/primitives_spec.js +24 -4
  107. package/lib/test/unit/stream_spec.js +12 -4
  108. package/lib/test/unit/test_utils.js +90 -27
  109. package/lib/test/unit/testreporter.js +21 -3
  110. package/lib/test/unit/type1_parser_spec.js +8 -6
  111. package/lib/test/unit/ui_utils_spec.js +452 -14
  112. package/lib/test/unit/unicode_spec.js +14 -11
  113. package/lib/test/unit/util_spec.js +131 -9
  114. package/lib/web/annotation_layer_builder.js +39 -22
  115. package/lib/web/app.js +1240 -582
  116. package/lib/web/app_options.js +71 -41
  117. package/lib/web/base_viewer.js +508 -179
  118. package/lib/web/chromecom.js +261 -117
  119. package/lib/web/debugger.js +166 -22
  120. package/lib/web/download_manager.js +31 -13
  121. package/lib/web/firefox_print_service.js +17 -9
  122. package/lib/web/firefoxcom.js +283 -79
  123. package/lib/web/genericcom.js +89 -30
  124. package/lib/web/genericl10n.js +142 -30
  125. package/lib/web/grab_to_pan.js +26 -4
  126. package/lib/web/interfaces.js +170 -47
  127. package/lib/web/overlay_manager.js +235 -85
  128. package/lib/web/password_prompt.js +21 -13
  129. package/lib/web/pdf_attachment_viewer.js +38 -18
  130. package/lib/web/pdf_cursor_tools.js +39 -16
  131. package/lib/web/pdf_document_properties.js +80 -30
  132. package/lib/web/pdf_find_bar.js +84 -40
  133. package/lib/web/pdf_find_controller.js +495 -184
  134. package/lib/web/pdf_find_utils.js +111 -0
  135. package/lib/web/pdf_history.js +190 -53
  136. package/lib/web/pdf_link_service.js +137 -76
  137. package/lib/web/pdf_outline_viewer.js +73 -22
  138. package/lib/web/pdf_page_view.js +196 -63
  139. package/lib/web/pdf_presentation_mode.js +99 -34
  140. package/lib/web/pdf_print_service.js +57 -11
  141. package/lib/web/pdf_rendering_queue.js +27 -5
  142. package/lib/web/pdf_sidebar.js +120 -67
  143. package/lib/web/pdf_sidebar_resizer.js +42 -16
  144. package/lib/web/pdf_single_page_viewer.js +74 -66
  145. package/lib/web/pdf_thumbnail_view.js +103 -32
  146. package/lib/web/pdf_thumbnail_viewer.js +64 -24
  147. package/lib/web/pdf_viewer.component.js +112 -32
  148. package/lib/web/pdf_viewer.js +91 -52
  149. package/lib/web/preferences.js +275 -80
  150. package/lib/web/secondary_toolbar.js +165 -40
  151. package/lib/web/text_layer_builder.js +162 -65
  152. package/lib/web/toolbar.js +78 -43
  153. package/lib/web/ui_utils.js +462 -136
  154. package/lib/web/view_history.js +215 -67
  155. package/lib/web/viewer_compatibility.js +4 -13
  156. package/package.json +5 -4
  157. package/web/pdf_viewer.css +58 -1
  158. package/web/pdf_viewer.js +6346 -3919
  159. package/web/pdf_viewer.js.map +1 -1
  160. package/lib/test/unit/fonts_spec.js +0 -81
  161. 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 2018 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,38 +19,42 @@
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.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined;
27
+ exports.DefaultTextLayerFactory = exports.TextLayerBuilder = void 0;
28
28
 
29
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
29
+ var _ui_utils = require("./ui_utils");
30
30
 
31
- var _dom_events = require('./dom_events');
32
-
33
- var _pdf = require('../pdf');
31
+ var _pdf = require("../pdf");
34
32
 
35
33
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
36
34
 
35
+ 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); } }
36
+
37
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
38
+
37
39
  var EXPAND_DIVS_TIMEOUT = 300;
38
40
 
39
- var TextLayerBuilder = function () {
41
+ var TextLayerBuilder =
42
+ /*#__PURE__*/
43
+ function () {
40
44
  function TextLayerBuilder(_ref) {
41
45
  var textLayerDiv = _ref.textLayerDiv,
42
46
  eventBus = _ref.eventBus,
43
47
  pageIndex = _ref.pageIndex,
44
48
  viewport = _ref.viewport,
45
49
  _ref$findController = _ref.findController,
46
- findController = _ref$findController === undefined ? null : _ref$findController,
50
+ findController = _ref$findController === void 0 ? null : _ref$findController,
47
51
  _ref$enhanceTextSelec = _ref.enhanceTextSelection,
48
- enhanceTextSelection = _ref$enhanceTextSelec === undefined ? false : _ref$enhanceTextSelec;
52
+ enhanceTextSelection = _ref$enhanceTextSelec === void 0 ? false : _ref$enhanceTextSelec;
49
53
 
50
54
  _classCallCheck(this, TextLayerBuilder);
51
55
 
52
56
  this.textLayerDiv = textLayerDiv;
53
- this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();
57
+ this.eventBus = eventBus || (0, _ui_utils.getGlobalEventBus)();
54
58
  this.textContent = null;
55
59
  this.textContentItemsStr = [];
56
60
  this.textContentStream = null;
@@ -63,18 +67,24 @@ var TextLayerBuilder = function () {
63
67
  this.findController = findController;
64
68
  this.textLayerRenderTask = null;
65
69
  this.enhanceTextSelection = enhanceTextSelection;
70
+ this._boundEvents = Object.create(null);
71
+
72
+ this._bindEvents();
73
+
66
74
  this._bindMouse();
67
75
  }
68
76
 
69
77
  _createClass(TextLayerBuilder, [{
70
- key: '_finishRendering',
78
+ key: "_finishRendering",
71
79
  value: function _finishRendering() {
72
80
  this.renderingDone = true;
81
+
73
82
  if (!this.enhanceTextSelection) {
74
83
  var endOfContent = document.createElement('div');
75
84
  endOfContent.className = 'endOfContent';
76
85
  this.textLayerDiv.appendChild(endOfContent);
77
86
  }
87
+
78
88
  this.eventBus.dispatch('textlayerrendered', {
79
89
  source: this,
80
90
  pageNumber: this.pageNumber,
@@ -82,7 +92,7 @@ var TextLayerBuilder = function () {
82
92
  });
83
93
  }
84
94
  }, {
85
- key: 'render',
95
+ key: "render",
86
96
  value: function render() {
87
97
  var _this = this;
88
98
 
@@ -91,6 +101,7 @@ var TextLayerBuilder = function () {
91
101
  if (!(this.textContent || this.textContentStream) || this.renderingDone) {
92
102
  return;
93
103
  }
104
+
94
105
  this.cancel();
95
106
  this.textDivs = [];
96
107
  var textLayerFrag = document.createDocumentFragment();
@@ -106,12 +117,14 @@ var TextLayerBuilder = function () {
106
117
  });
107
118
  this.textLayerRenderTask.promise.then(function () {
108
119
  _this.textLayerDiv.appendChild(textLayerFrag);
120
+
109
121
  _this._finishRendering();
110
- _this.updateMatches();
122
+
123
+ _this._updateMatches();
111
124
  }, function (reason) {});
112
125
  }
113
126
  }, {
114
- key: 'cancel',
127
+ key: "cancel",
115
128
  value: function cancel() {
116
129
  if (this.textLayerRenderTask) {
117
130
  this.textLayerRenderTask.cancel();
@@ -119,87 +132,102 @@ var TextLayerBuilder = function () {
119
132
  }
120
133
  }
121
134
  }, {
122
- key: 'setTextContentStream',
135
+ key: "setTextContentStream",
123
136
  value: function setTextContentStream(readableStream) {
124
137
  this.cancel();
125
138
  this.textContentStream = readableStream;
126
139
  }
127
140
  }, {
128
- key: 'setTextContent',
141
+ key: "setTextContent",
129
142
  value: function setTextContent(textContent) {
130
143
  this.cancel();
131
144
  this.textContent = textContent;
132
145
  }
133
146
  }, {
134
- key: 'convertMatches',
135
- value: function convertMatches(matches, matchesLength) {
136
- var i = 0;
137
- var iIndex = 0;
138
- var textContentItemsStr = this.textContentItemsStr;
139
- var end = textContentItemsStr.length - 1;
140
- var queryLen = this.findController === null ? 0 : this.findController.state.query.length;
141
- var ret = [];
147
+ key: "_convertMatches",
148
+ value: function _convertMatches(matches, matchesLength) {
142
149
  if (!matches) {
143
- return ret;
150
+ return [];
144
151
  }
145
- for (var m = 0, len = matches.length; m < len; m++) {
152
+
153
+ var findController = this.findController,
154
+ textContentItemsStr = this.textContentItemsStr;
155
+ var i = 0,
156
+ iIndex = 0;
157
+ var end = textContentItemsStr.length - 1;
158
+ var queryLen = findController.state.query.length;
159
+ var result = [];
160
+
161
+ for (var m = 0, mm = matches.length; m < mm; m++) {
146
162
  var matchIdx = matches[m];
163
+
147
164
  while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {
148
165
  iIndex += textContentItemsStr[i].length;
149
166
  i++;
150
167
  }
168
+
151
169
  if (i === textContentItemsStr.length) {
152
170
  console.error('Could not find a matching mapping');
153
171
  }
172
+
154
173
  var match = {
155
174
  begin: {
156
175
  divIdx: i,
157
176
  offset: matchIdx - iIndex
158
177
  }
159
178
  };
179
+
160
180
  if (matchesLength) {
161
181
  matchIdx += matchesLength[m];
162
182
  } else {
163
183
  matchIdx += queryLen;
164
184
  }
185
+
165
186
  while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {
166
187
  iIndex += textContentItemsStr[i].length;
167
188
  i++;
168
189
  }
190
+
169
191
  match.end = {
170
192
  divIdx: i,
171
193
  offset: matchIdx - iIndex
172
194
  };
173
- ret.push(match);
195
+ result.push(match);
174
196
  }
175
- return ret;
197
+
198
+ return result;
176
199
  }
177
200
  }, {
178
- key: 'renderMatches',
179
- value: function renderMatches(matches) {
201
+ key: "_renderMatches",
202
+ value: function _renderMatches(matches) {
180
203
  if (matches.length === 0) {
181
204
  return;
182
205
  }
183
- var textContentItemsStr = this.textContentItemsStr;
184
- var textDivs = this.textDivs;
206
+
207
+ var findController = this.findController,
208
+ pageIdx = this.pageIdx,
209
+ textContentItemsStr = this.textContentItemsStr,
210
+ textDivs = this.textDivs;
211
+ var isSelectedPage = pageIdx === findController.selected.pageIdx;
212
+ var selectedMatchIdx = findController.selected.matchIdx;
213
+ var highlightAll = findController.state.highlightAll;
185
214
  var prevEnd = null;
186
- var pageIdx = this.pageIdx;
187
- var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx;
188
- var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx;
189
- var highlightAll = this.findController === null ? false : this.findController.state.highlightAll;
190
215
  var infinity = {
191
216
  divIdx: -1,
192
217
  offset: undefined
193
218
  };
219
+
194
220
  function beginText(begin, className) {
195
221
  var divIdx = begin.divIdx;
196
222
  textDivs[divIdx].textContent = '';
197
223
  appendTextToDiv(divIdx, 0, begin.offset, className);
198
224
  }
225
+
199
226
  function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
200
227
  var div = textDivs[divIdx];
201
228
  var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);
202
229
  var node = document.createTextNode(content);
230
+
203
231
  if (className) {
204
232
  var span = document.createElement('span');
205
233
  span.className = className;
@@ -207,123 +235,190 @@ var TextLayerBuilder = function () {
207
235
  div.appendChild(span);
208
236
  return;
209
237
  }
238
+
210
239
  div.appendChild(node);
211
240
  }
241
+
212
242
  var i0 = selectedMatchIdx,
213
243
  i1 = i0 + 1;
244
+
214
245
  if (highlightAll) {
215
246
  i0 = 0;
216
247
  i1 = matches.length;
217
248
  } else if (!isSelectedPage) {
218
249
  return;
219
250
  }
251
+
220
252
  for (var i = i0; i < i1; i++) {
221
253
  var match = matches[i];
222
254
  var begin = match.begin;
223
255
  var end = match.end;
224
256
  var isSelected = isSelectedPage && i === selectedMatchIdx;
225
257
  var highlightSuffix = isSelected ? ' selected' : '';
226
- if (this.findController) {
227
- this.findController.updateMatchPosition(pageIdx, i, textDivs, begin.divIdx);
258
+
259
+ if (isSelected) {
260
+ findController.scrollMatchIntoView({
261
+ element: textDivs[begin.divIdx],
262
+ pageIndex: pageIdx,
263
+ matchIndex: selectedMatchIdx
264
+ });
228
265
  }
266
+
229
267
  if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
230
268
  if (prevEnd !== null) {
231
269
  appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
232
270
  }
271
+
233
272
  beginText(begin);
234
273
  } else {
235
274
  appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
236
275
  }
276
+
237
277
  if (begin.divIdx === end.divIdx) {
238
278
  appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix);
239
279
  } else {
240
280
  appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix);
281
+
241
282
  for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
242
283
  textDivs[n0].className = 'highlight middle' + highlightSuffix;
243
284
  }
285
+
244
286
  beginText(end, 'highlight end' + highlightSuffix);
245
287
  }
288
+
246
289
  prevEnd = end;
247
290
  }
291
+
248
292
  if (prevEnd) {
249
293
  appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
250
294
  }
251
295
  }
252
296
  }, {
253
- key: 'updateMatches',
254
- value: function updateMatches() {
297
+ key: "_updateMatches",
298
+ value: function _updateMatches() {
255
299
  if (!this.renderingDone) {
256
300
  return;
257
301
  }
258
- var matches = this.matches;
259
- var textDivs = this.textDivs;
260
- var textContentItemsStr = this.textContentItemsStr;
302
+
303
+ var findController = this.findController,
304
+ matches = this.matches,
305
+ pageIdx = this.pageIdx,
306
+ textContentItemsStr = this.textContentItemsStr,
307
+ textDivs = this.textDivs;
261
308
  var clearedUntilDivIdx = -1;
262
- for (var i = 0, len = matches.length; i < len; i++) {
309
+
310
+ for (var i = 0, ii = matches.length; i < ii; i++) {
263
311
  var match = matches[i];
264
312
  var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
313
+
265
314
  for (var n = begin, end = match.end.divIdx; n <= end; n++) {
266
315
  var div = textDivs[n];
267
316
  div.textContent = textContentItemsStr[n];
268
317
  div.className = '';
269
318
  }
319
+
270
320
  clearedUntilDivIdx = match.end.divIdx + 1;
271
321
  }
272
- if (this.findController === null || !this.findController.active) {
322
+
323
+ if (!findController || !findController.highlightMatches) {
273
324
  return;
274
325
  }
275
- var pageMatches = void 0,
276
- pageMatchesLength = void 0;
277
- if (this.findController !== null) {
278
- pageMatches = this.findController.pageMatches[this.pageIdx] || null;
279
- pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null;
280
- }
281
- this.matches = this.convertMatches(pageMatches, pageMatchesLength);
282
- this.renderMatches(this.matches);
326
+
327
+ var pageMatches = findController.pageMatches[pageIdx] || null;
328
+ var pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;
329
+ this.matches = this._convertMatches(pageMatches, pageMatchesLength);
330
+
331
+ this._renderMatches(this.matches);
283
332
  }
284
333
  }, {
285
- key: '_bindMouse',
286
- value: function _bindMouse() {
334
+ key: "_bindEvents",
335
+ value: function _bindEvents() {
287
336
  var _this2 = this;
288
337
 
338
+ var eventBus = this.eventBus,
339
+ _boundEvents = this._boundEvents;
340
+
341
+ _boundEvents.pageCancelled = function (evt) {
342
+ if (evt.pageNumber !== _this2.pageNumber) {
343
+ return;
344
+ }
345
+
346
+ if (_this2.textLayerRenderTask) {
347
+ console.error('TextLayerBuilder._bindEvents: `this.cancel()` should ' + 'have been called when the page was reset, or rendering cancelled.');
348
+ return;
349
+ }
350
+
351
+ for (var name in _boundEvents) {
352
+ eventBus.off(name.toLowerCase(), _boundEvents[name]);
353
+ delete _boundEvents[name];
354
+ }
355
+ };
356
+
357
+ _boundEvents.updateTextLayerMatches = function (evt) {
358
+ if (evt.pageIndex !== _this2.pageIdx && evt.pageIndex !== -1) {
359
+ return;
360
+ }
361
+
362
+ _this2._updateMatches();
363
+ };
364
+
365
+ eventBus.on('pagecancelled', _boundEvents.pageCancelled);
366
+ eventBus.on('updatetextlayermatches', _boundEvents.updateTextLayerMatches);
367
+ }
368
+ }, {
369
+ key: "_bindMouse",
370
+ value: function _bindMouse() {
371
+ var _this3 = this;
372
+
289
373
  var div = this.textLayerDiv;
290
374
  var expandDivsTimer = null;
291
375
  div.addEventListener('mousedown', function (evt) {
292
- if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) {
293
- _this2.textLayerRenderTask.expandTextDivs(true);
376
+ if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {
377
+ _this3.textLayerRenderTask.expandTextDivs(true);
378
+
294
379
  if (expandDivsTimer) {
295
380
  clearTimeout(expandDivsTimer);
296
381
  expandDivsTimer = null;
297
382
  }
383
+
298
384
  return;
299
385
  }
386
+
300
387
  var end = div.querySelector('.endOfContent');
388
+
301
389
  if (!end) {
302
390
  return;
303
391
  }
392
+
304
393
  var adjustTop = evt.target !== div;
305
394
  adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none';
395
+
306
396
  if (adjustTop) {
307
397
  var divBounds = div.getBoundingClientRect();
308
398
  var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);
309
399
  end.style.top = (r * 100).toFixed(2) + '%';
310
400
  }
401
+
311
402
  end.classList.add('active');
312
403
  });
313
404
  div.addEventListener('mouseup', function () {
314
- if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) {
405
+ if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {
315
406
  expandDivsTimer = setTimeout(function () {
316
- if (_this2.textLayerRenderTask) {
317
- _this2.textLayerRenderTask.expandTextDivs(false);
407
+ if (_this3.textLayerRenderTask) {
408
+ _this3.textLayerRenderTask.expandTextDivs(false);
318
409
  }
410
+
319
411
  expandDivsTimer = null;
320
412
  }, EXPAND_DIVS_TIMEOUT);
321
413
  return;
322
414
  }
415
+
323
416
  var end = div.querySelector('.endOfContent');
417
+
324
418
  if (!end) {
325
419
  return;
326
420
  }
421
+
327
422
  end.style.top = '';
328
423
  end.classList.remove('active');
329
424
  });
@@ -333,16 +428,19 @@ var TextLayerBuilder = function () {
333
428
  return TextLayerBuilder;
334
429
  }();
335
430
 
336
- var DefaultTextLayerFactory = function () {
431
+ exports.TextLayerBuilder = TextLayerBuilder;
432
+
433
+ var DefaultTextLayerFactory =
434
+ /*#__PURE__*/
435
+ function () {
337
436
  function DefaultTextLayerFactory() {
338
437
  _classCallCheck(this, DefaultTextLayerFactory);
339
438
  }
340
439
 
341
440
  _createClass(DefaultTextLayerFactory, [{
342
- key: 'createTextLayerBuilder',
441
+ key: "createTextLayerBuilder",
343
442
  value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {
344
443
  var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
345
-
346
444
  return new TextLayerBuilder({
347
445
  textLayerDiv: textLayerDiv,
348
446
  pageIndex: pageIndex,
@@ -355,5 +453,4 @@ var DefaultTextLayerFactory = function () {
355
453
  return DefaultTextLayerFactory;
356
454
  }();
357
455
 
358
- exports.TextLayerBuilder = TextLayerBuilder;
359
456
  exports.DefaultTextLayerFactory = DefaultTextLayerFactory;