pdfjs-dist 2.0.943 → 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 (192) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8286 -14230
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +25500 -26628
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25473 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +57878 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +407 -0
  29. package/es5/web/pdf_viewer.js +7757 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +2887 -4094
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +855 -778
  36. package/lib/core/arithmetic_decoder.js +325 -311
  37. package/lib/core/bidi.js +117 -50
  38. package/lib/core/ccitt.js +251 -89
  39. package/lib/core/ccitt_stream.js +26 -16
  40. package/lib/core/cff_parser.js +525 -197
  41. package/lib/core/charsets.js +6 -5
  42. package/lib/core/chunked_stream.js +541 -406
  43. package/lib/core/cmap.js +368 -253
  44. package/lib/core/colorspace.js +781 -800
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +609 -422
  47. package/lib/core/document.js +649 -481
  48. package/lib/core/encodings.js +33 -24
  49. package/lib/core/evaluator.js +1471 -736
  50. package/lib/core/font_renderer.js +289 -149
  51. package/lib/core/fonts.js +1067 -413
  52. package/lib/core/function.js +517 -287
  53. package/lib/core/glyphlist.js +4529 -4527
  54. package/lib/core/image.js +232 -114
  55. package/lib/core/image_utils.js +94 -0
  56. package/lib/core/jbig2.js +711 -342
  57. package/lib/core/jbig2_stream.js +31 -19
  58. package/lib/core/jpeg_stream.js +151 -26
  59. package/lib/core/jpg.js +433 -181
  60. package/lib/core/jpx.js +551 -143
  61. package/lib/core/jpx_stream.js +40 -28
  62. package/lib/core/metrics.js +2931 -2931
  63. package/lib/core/murmurhash3.js +104 -97
  64. package/lib/core/obj.js +1561 -1053
  65. package/lib/core/operator_list.js +192 -64
  66. package/lib/core/parser.js +1162 -864
  67. package/lib/core/pattern.js +224 -75
  68. package/lib/core/pdf_manager.js +154 -285
  69. package/lib/core/primitives.js +145 -69
  70. package/lib/core/ps_parser.js +212 -162
  71. package/lib/core/standard_fonts.js +245 -244
  72. package/lib/core/stream.js +353 -81
  73. package/lib/core/type1_parser.js +218 -68
  74. package/lib/core/unicode.js +1682 -1655
  75. package/lib/core/worker.js +233 -302
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +808 -862
  78. package/lib/display/api.js +1778 -1462
  79. package/lib/display/api_compatibility.js +14 -9
  80. package/lib/display/canvas.js +463 -140
  81. package/lib/display/content_disposition.js +86 -58
  82. package/lib/display/display_utils.js +524 -0
  83. package/lib/display/fetch_stream.js +202 -274
  84. package/lib/display/font_loader.js +311 -333
  85. package/lib/display/metadata.js +98 -88
  86. package/lib/display/network.js +343 -347
  87. package/lib/display/network_utils.js +46 -26
  88. package/lib/display/node_stream.js +326 -404
  89. package/lib/display/pattern_helper.js +168 -69
  90. package/lib/display/svg.js +1296 -885
  91. package/lib/display/text_layer.js +229 -103
  92. package/lib/display/transport_stream.js +290 -250
  93. package/lib/display/webgl.js +116 -83
  94. package/lib/display/worker_options.js +6 -5
  95. package/lib/display/xml_parser.js +358 -337
  96. package/lib/examples/node/domstubs.js +95 -39
  97. package/lib/pdf.js +49 -31
  98. package/lib/pdf.worker.js +7 -5
  99. package/lib/shared/compatibility.js +3 -145
  100. package/lib/shared/is_node.js +8 -7
  101. package/lib/shared/message_handler.js +367 -314
  102. package/lib/shared/util.js +421 -415
  103. package/lib/test/unit/annotation_spec.js +1570 -690
  104. package/lib/test/unit/api_spec.js +855 -493
  105. package/lib/test/unit/bidi_spec.js +12 -12
  106. package/lib/test/unit/cff_parser_spec.js +88 -61
  107. package/lib/test/unit/clitests_helper.js +9 -12
  108. package/lib/test/unit/cmap_spec.js +140 -88
  109. package/lib/test/unit/colorspace_spec.js +204 -152
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +194 -182
  112. package/lib/test/unit/custom_spec.js +50 -64
  113. package/lib/test/unit/display_svg_spec.js +53 -38
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +17 -22
  116. package/lib/test/unit/encodings_spec.js +15 -57
  117. package/lib/test/unit/evaluator_spec.js +90 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +219 -205
  120. package/lib/test/unit/jasmine-boot.js +68 -39
  121. package/lib/test/unit/message_handler_spec.js +187 -160
  122. package/lib/test/unit/metadata_spec.js +87 -34
  123. package/lib/test/unit/murmurhash3_spec.js +13 -13
  124. package/lib/test/unit/network_spec.js +26 -59
  125. package/lib/test/unit/network_utils_spec.js +187 -121
  126. package/lib/test/unit/node_stream_spec.js +98 -90
  127. package/lib/test/unit/parser_spec.js +173 -131
  128. package/lib/test/unit/pdf_find_controller_spec.js +148 -67
  129. package/lib/test/unit/pdf_find_utils_spec.js +35 -34
  130. package/lib/test/unit/pdf_history_spec.js +45 -33
  131. package/lib/test/unit/primitives_spec.js +161 -126
  132. package/lib/test/unit/stream_spec.js +22 -15
  133. package/lib/test/unit/test_utils.js +149 -98
  134. package/lib/test/unit/testreporter.js +36 -18
  135. package/lib/test/unit/type1_parser_spec.js +46 -44
  136. package/lib/test/unit/ui_utils_spec.js +388 -372
  137. package/lib/test/unit/unicode_spec.js +49 -46
  138. package/lib/test/unit/util_spec.js +144 -248
  139. package/lib/web/annotation_layer_builder.js +75 -95
  140. package/lib/web/app.js +1538 -1147
  141. package/lib/web/app_options.js +116 -104
  142. package/lib/web/base_viewer.js +950 -775
  143. package/lib/web/chromecom.js +217 -225
  144. package/lib/web/debugger.js +236 -148
  145. package/lib/web/download_manager.js +50 -50
  146. package/lib/web/firefox_print_service.js +51 -33
  147. package/lib/web/firefoxcom.js +225 -352
  148. package/lib/web/genericcom.js +30 -93
  149. package/lib/web/genericl10n.js +26 -143
  150. package/lib/web/grab_to_pan.js +57 -33
  151. package/lib/web/interfaces.js +105 -232
  152. package/lib/web/overlay_manager.js +73 -227
  153. package/lib/web/password_prompt.js +44 -62
  154. package/lib/web/pdf_attachment_viewer.js +118 -123
  155. package/lib/web/pdf_cursor_tools.js +89 -93
  156. package/lib/web/pdf_document_properties.js +242 -281
  157. package/lib/web/pdf_find_bar.js +157 -163
  158. package/lib/web/pdf_find_controller.js +598 -454
  159. package/lib/web/pdf_find_utils.js +32 -16
  160. package/lib/web/pdf_history.js +481 -355
  161. package/lib/web/pdf_link_service.js +355 -323
  162. package/lib/web/pdf_outline_viewer.js +167 -152
  163. package/lib/web/pdf_page_view.js +511 -457
  164. package/lib/web/pdf_presentation_mode.js +347 -335
  165. package/lib/web/pdf_print_service.js +133 -103
  166. package/lib/web/pdf_rendering_queue.js +98 -100
  167. package/lib/web/pdf_sidebar.js +323 -299
  168. package/lib/web/pdf_sidebar_resizer.js +107 -108
  169. package/lib/web/pdf_single_page_viewer.js +94 -146
  170. package/lib/web/pdf_thumbnail_view.js +319 -269
  171. package/lib/web/pdf_thumbnail_viewer.js +219 -199
  172. package/lib/web/pdf_viewer.component.js +111 -32
  173. package/lib/web/pdf_viewer.js +61 -101
  174. package/lib/web/preferences.js +87 -272
  175. package/lib/web/secondary_toolbar.js +207 -220
  176. package/lib/web/text_layer_builder.js +322 -322
  177. package/lib/web/toolbar.js +227 -180
  178. package/lib/web/ui_utils.js +476 -421
  179. package/lib/web/view_history.js +59 -208
  180. package/lib/web/viewer_compatibility.js +9 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +36 -22
  183. package/web/pdf_viewer.js +4407 -4516
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -441
  189. package/lib/shared/streams_polyfill.js +0 -39
  190. package/lib/shared/url_polyfill.js +0 -50
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
  192. package/lib/web/dom_events.js +0 -140
@@ -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 2018 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.
@@ -19,146 +19,160 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
23
-
24
- 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; };
22
+ "use strict";
25
23
 
26
24
  var FontInspector = function FontInspectorClosure() {
27
- var fonts, createObjectURL;
25
+ var fonts;
28
26
  var active = false;
29
- var fontAttribute = 'data-font-name';
27
+ var fontAttribute = "data-font-name";
28
+
30
29
  function removeSelection() {
31
- var divs = document.querySelectorAll('div[' + fontAttribute + ']');
32
- for (var i = 0, ii = divs.length; i < ii; ++i) {
33
- var div = divs[i];
34
- div.className = '';
30
+ const divs = document.querySelectorAll(`span[${fontAttribute}]`);
31
+
32
+ for (const div of divs) {
33
+ div.className = "";
35
34
  }
36
35
  }
36
+
37
37
  function resetSelection() {
38
- var divs = document.querySelectorAll('div[' + fontAttribute + ']');
39
- for (var i = 0, ii = divs.length; i < ii; ++i) {
40
- var div = divs[i];
41
- div.className = 'debuggerHideText';
38
+ const divs = document.querySelectorAll(`span[${fontAttribute}]`);
39
+
40
+ for (const div of divs) {
41
+ div.className = "debuggerHideText";
42
42
  }
43
43
  }
44
+
44
45
  function selectFont(fontName, show) {
45
- var divs = document.querySelectorAll('div[' + fontAttribute + '=' + fontName + ']');
46
- for (var i = 0, ii = divs.length; i < ii; ++i) {
47
- var div = divs[i];
48
- div.className = show ? 'debuggerShowText' : 'debuggerHideText';
46
+ const divs = document.querySelectorAll(`span[${fontAttribute}=${fontName}]`);
47
+
48
+ for (const div of divs) {
49
+ div.className = show ? "debuggerShowText" : "debuggerHideText";
49
50
  }
50
51
  }
52
+
51
53
  function textLayerClick(e) {
52
- if (!e.target.dataset.fontName || e.target.tagName.toUpperCase() !== 'DIV') {
54
+ if (!e.target.dataset.fontName || e.target.tagName.toUpperCase() !== "SPAN") {
53
55
  return;
54
56
  }
57
+
55
58
  var fontName = e.target.dataset.fontName;
56
- var selects = document.getElementsByTagName('input');
59
+ var selects = document.getElementsByTagName("input");
60
+
57
61
  for (var i = 0; i < selects.length; ++i) {
58
62
  var select = selects[i];
63
+
59
64
  if (select.dataset.fontName !== fontName) {
60
65
  continue;
61
66
  }
67
+
62
68
  select.checked = !select.checked;
63
69
  selectFont(fontName, select.checked);
64
70
  select.scrollIntoView();
65
71
  }
66
72
  }
73
+
67
74
  return {
68
- id: 'FontInspector',
69
- name: 'Font Inspector',
75
+ id: "FontInspector",
76
+ name: "Font Inspector",
70
77
  panel: null,
71
78
  manager: null,
72
79
  init: function init(pdfjsLib) {
73
80
  var panel = this.panel;
74
- panel.setAttribute('style', 'padding: 5px;');
75
- var tmp = document.createElement('button');
76
- tmp.addEventListener('click', resetSelection);
77
- tmp.textContent = 'Refresh';
81
+ var tmp = document.createElement("button");
82
+ tmp.addEventListener("click", resetSelection);
83
+ tmp.textContent = "Refresh";
78
84
  panel.appendChild(tmp);
79
- fonts = document.createElement('div');
85
+ fonts = document.createElement("div");
80
86
  panel.appendChild(fonts);
81
- createObjectURL = pdfjsLib.createObjectURL;
82
87
  },
83
88
  cleanup: function cleanup() {
84
- fonts.textContent = '';
89
+ fonts.textContent = "";
85
90
  },
86
91
  enabled: false,
92
+
87
93
  get active() {
88
94
  return active;
89
95
  },
96
+
90
97
  set active(value) {
91
98
  active = value;
99
+
92
100
  if (active) {
93
- document.body.addEventListener('click', textLayerClick, true);
101
+ document.body.addEventListener("click", textLayerClick, true);
94
102
  resetSelection();
95
103
  } else {
96
- document.body.removeEventListener('click', textLayerClick, true);
104
+ document.body.removeEventListener("click", textLayerClick, true);
97
105
  removeSelection();
98
106
  }
99
107
  },
100
- fontAdded: function fontAdded(fontObj, url) {
101
- var _this = this;
102
108
 
109
+ fontAdded: function fontAdded(fontObj, url) {
103
110
  function properties(obj, list) {
104
- var moreInfo = document.createElement('table');
111
+ var moreInfo = document.createElement("table");
112
+
105
113
  for (var i = 0; i < list.length; i++) {
106
- var tr = document.createElement('tr');
107
- var td1 = document.createElement('td');
114
+ var tr = document.createElement("tr");
115
+ var td1 = document.createElement("td");
108
116
  td1.textContent = list[i];
109
117
  tr.appendChild(td1);
110
- var td2 = document.createElement('td');
118
+ var td2 = document.createElement("td");
111
119
  td2.textContent = obj[list[i]].toString();
112
120
  tr.appendChild(td2);
113
121
  moreInfo.appendChild(tr);
114
122
  }
123
+
115
124
  return moreInfo;
116
125
  }
117
- var moreInfo = properties(fontObj, ['name', 'type']);
118
- var fontName = fontObj.loadedName;
119
- var font = document.createElement('div');
120
- var name = document.createElement('span');
126
+
127
+ var moreInfo = properties(fontObj, ["name", "type"]);
128
+ const fontName = fontObj.loadedName;
129
+ var font = document.createElement("div");
130
+ var name = document.createElement("span");
121
131
  name.textContent = fontName;
122
- var download = document.createElement('a');
132
+ var download = document.createElement("a");
133
+
123
134
  if (url) {
124
135
  url = /url\(['"]?([^\)"']+)/.exec(url);
125
136
  download.href = url[1];
126
137
  } else if (fontObj.data) {
127
- download.href = createObjectURL(fontObj.data, fontObj.mimeType);
138
+ download.href = URL.createObjectURL(new Blob([fontObj.data], {
139
+ type: fontObj.mimeType
140
+ }));
128
141
  }
129
- download.textContent = 'Download';
130
- var logIt = document.createElement('a');
131
- logIt.href = '';
132
- logIt.textContent = 'Log';
133
- logIt.addEventListener('click', function (event) {
142
+
143
+ download.textContent = "Download";
144
+ var logIt = document.createElement("a");
145
+ logIt.href = "";
146
+ logIt.textContent = "Log";
147
+ logIt.addEventListener("click", function (event) {
134
148
  event.preventDefault();
135
149
  console.log(fontObj);
136
150
  });
137
- var select = document.createElement('input');
138
- select.setAttribute('type', 'checkbox');
151
+ const select = document.createElement("input");
152
+ select.setAttribute("type", "checkbox");
139
153
  select.dataset.fontName = fontName;
140
- select.addEventListener('click', function (select, fontName) {
141
- return function () {
142
- selectFont(fontName, select.checked);
143
- };
144
- }(select, fontName));
154
+ select.addEventListener("click", function () {
155
+ selectFont(fontName, select.checked);
156
+ });
145
157
  font.appendChild(select);
146
158
  font.appendChild(name);
147
- font.appendChild(document.createTextNode(' '));
159
+ font.appendChild(document.createTextNode(" "));
148
160
  font.appendChild(download);
149
- font.appendChild(document.createTextNode(' '));
161
+ font.appendChild(document.createTextNode(" "));
150
162
  font.appendChild(logIt);
151
163
  font.appendChild(moreInfo);
152
164
  fonts.appendChild(font);
153
- setTimeout(function () {
154
- if (_this.active) {
165
+ setTimeout(() => {
166
+ if (this.active) {
155
167
  resetSelection();
156
168
  }
157
169
  }, 2000);
158
170
  }
159
171
  };
160
172
  }();
173
+
161
174
  var opMap;
175
+
162
176
  var StepperManager = function StepperManagerClosure() {
163
177
  var steppers = [];
164
178
  var stepperDiv = null;
@@ -166,70 +180,79 @@ var StepperManager = function StepperManagerClosure() {
166
180
  var stepperChooser = null;
167
181
  var breakPoints = Object.create(null);
168
182
  return {
169
- id: 'Stepper',
170
- name: 'Stepper',
183
+ id: "Stepper",
184
+ name: "Stepper",
171
185
  panel: null,
172
186
  manager: null,
173
187
  init: function init(pdfjsLib) {
174
188
  var self = this;
175
- this.panel.setAttribute('style', 'padding: 5px;');
176
- stepperControls = document.createElement('div');
177
- stepperChooser = document.createElement('select');
178
- stepperChooser.addEventListener('change', function (event) {
189
+ stepperControls = document.createElement("div");
190
+ stepperChooser = document.createElement("select");
191
+ stepperChooser.addEventListener("change", function (event) {
179
192
  self.selectStepper(this.value);
180
193
  });
181
194
  stepperControls.appendChild(stepperChooser);
182
- stepperDiv = document.createElement('div');
195
+ stepperDiv = document.createElement("div");
183
196
  this.panel.appendChild(stepperControls);
184
197
  this.panel.appendChild(stepperDiv);
185
- if (sessionStorage.getItem('pdfjsBreakPoints')) {
186
- breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints'));
198
+
199
+ if (sessionStorage.getItem("pdfjsBreakPoints")) {
200
+ breakPoints = JSON.parse(sessionStorage.getItem("pdfjsBreakPoints"));
187
201
  }
202
+
188
203
  opMap = Object.create(null);
204
+
189
205
  for (var key in pdfjsLib.OPS) {
190
206
  opMap[pdfjsLib.OPS[key]] = key;
191
207
  }
192
208
  },
193
209
  cleanup: function cleanup() {
194
- stepperChooser.textContent = '';
195
- stepperDiv.textContent = '';
210
+ stepperChooser.textContent = "";
211
+ stepperDiv.textContent = "";
196
212
  steppers = [];
197
213
  },
198
214
  enabled: false,
199
215
  active: false,
200
216
  create: function create(pageIndex) {
201
- var debug = document.createElement('div');
202
- debug.id = 'stepper' + pageIndex;
203
- debug.setAttribute('hidden', true);
204
- debug.className = 'stepper';
217
+ var debug = document.createElement("div");
218
+ debug.id = "stepper" + pageIndex;
219
+ debug.setAttribute("hidden", true);
220
+ debug.className = "stepper";
205
221
  stepperDiv.appendChild(debug);
206
- var b = document.createElement('option');
207
- b.textContent = 'Page ' + (pageIndex + 1);
222
+ var b = document.createElement("option");
223
+ b.textContent = "Page " + (pageIndex + 1);
208
224
  b.value = pageIndex;
209
225
  stepperChooser.appendChild(b);
210
226
  var initBreakPoints = breakPoints[pageIndex] || [];
211
227
  var stepper = new Stepper(debug, pageIndex, initBreakPoints);
212
228
  steppers.push(stepper);
229
+
213
230
  if (steppers.length === 1) {
214
231
  this.selectStepper(pageIndex, false);
215
232
  }
233
+
216
234
  return stepper;
217
235
  },
218
236
  selectStepper: function selectStepper(pageIndex, selectPanel) {
219
237
  var i;
220
238
  pageIndex = pageIndex | 0;
239
+
221
240
  if (selectPanel) {
222
241
  this.manager.selectPanel(this);
223
242
  }
243
+
224
244
  for (i = 0; i < steppers.length; ++i) {
225
245
  var stepper = steppers[i];
246
+
226
247
  if (stepper.pageIndex === pageIndex) {
227
- stepper.panel.removeAttribute('hidden');
248
+ stepper.panel.removeAttribute("hidden");
228
249
  } else {
229
- stepper.panel.setAttribute('hidden', true);
250
+ stepper.panel.setAttribute("hidden", true);
230
251
  }
231
252
  }
253
+
232
254
  var options = stepperChooser.options;
255
+
233
256
  for (i = 0; i < options.length; ++i) {
234
257
  var option = options[i];
235
258
  option.selected = (option.value | 0) === pageIndex;
@@ -237,45 +260,58 @@ var StepperManager = function StepperManagerClosure() {
237
260
  },
238
261
  saveBreakPoints: function saveBreakPoints(pageIndex, bps) {
239
262
  breakPoints[pageIndex] = bps;
240
- sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints));
263
+ sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints));
241
264
  }
242
265
  };
243
266
  }();
267
+
244
268
  var Stepper = function StepperClosure() {
245
269
  function c(tag, textContent) {
246
270
  var d = document.createElement(tag);
271
+
247
272
  if (textContent) {
248
273
  d.textContent = textContent;
249
274
  }
275
+
250
276
  return d;
251
277
  }
278
+
252
279
  function simplifyArgs(args) {
253
- if (typeof args === 'string') {
280
+ if (typeof args === "string") {
254
281
  var MAX_STRING_LENGTH = 75;
255
- return args.length <= MAX_STRING_LENGTH ? args : args.substring(0, MAX_STRING_LENGTH) + '...';
282
+ return args.length <= MAX_STRING_LENGTH ? args : args.substring(0, MAX_STRING_LENGTH) + "...";
256
283
  }
257
- if ((typeof args === 'undefined' ? 'undefined' : _typeof(args)) !== 'object' || args === null) {
284
+
285
+ if (typeof args !== "object" || args === null) {
258
286
  return args;
259
287
  }
260
- if ('length' in args) {
288
+
289
+ if ("length" in args) {
261
290
  var simpleArgs = [],
262
291
  i,
263
292
  ii;
264
293
  var MAX_ITEMS = 10;
294
+
265
295
  for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {
266
296
  simpleArgs.push(simplifyArgs(args[i]));
267
297
  }
298
+
268
299
  if (i < args.length) {
269
- simpleArgs.push('...');
300
+ simpleArgs.push("...");
270
301
  }
302
+
271
303
  return simpleArgs;
272
304
  }
305
+
273
306
  var simpleObj = {};
307
+
274
308
  for (var key in args) {
275
309
  simpleObj[key] = simplifyArgs(args[key]);
276
310
  }
311
+
277
312
  return simpleObj;
278
313
  }
314
+
279
315
  function Stepper(panel, pageIndex, initialBreakPoints) {
280
316
  this.panel = panel;
281
317
  this.breakPoint = 0;
@@ -285,89 +321,106 @@ var Stepper = function StepperClosure() {
285
321
  this.currentIdx = -1;
286
322
  this.operatorListIdx = 0;
287
323
  }
324
+
288
325
  Stepper.prototype = {
289
326
  init: function init(operatorList) {
290
327
  var panel = this.panel;
291
- var content = c('div', 'c=continue, s=step');
292
- var table = c('table');
328
+ var content = c("div", "c=continue, s=step");
329
+ var table = c("table");
293
330
  content.appendChild(table);
294
331
  table.cellSpacing = 0;
295
- var headerRow = c('tr');
332
+ var headerRow = c("tr");
296
333
  table.appendChild(headerRow);
297
- headerRow.appendChild(c('th', 'Break'));
298
- headerRow.appendChild(c('th', 'Idx'));
299
- headerRow.appendChild(c('th', 'fn'));
300
- headerRow.appendChild(c('th', 'args'));
334
+ headerRow.appendChild(c("th", "Break"));
335
+ headerRow.appendChild(c("th", "Idx"));
336
+ headerRow.appendChild(c("th", "fn"));
337
+ headerRow.appendChild(c("th", "args"));
301
338
  panel.appendChild(content);
302
339
  this.table = table;
303
340
  this.updateOperatorList(operatorList);
304
341
  },
305
342
  updateOperatorList: function updateOperatorList(operatorList) {
306
343
  var self = this;
344
+
307
345
  function cboxOnClick() {
308
346
  var x = +this.dataset.idx;
347
+
309
348
  if (this.checked) {
310
349
  self.breakPoints.push(x);
311
350
  } else {
312
351
  self.breakPoints.splice(self.breakPoints.indexOf(x), 1);
313
352
  }
353
+
314
354
  StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);
315
355
  }
356
+
316
357
  var MAX_OPERATORS_COUNT = 15000;
358
+
317
359
  if (this.operatorListIdx > MAX_OPERATORS_COUNT) {
318
360
  return;
319
361
  }
362
+
320
363
  var chunk = document.createDocumentFragment();
321
364
  var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT, operatorList.fnArray.length);
365
+
322
366
  for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) {
323
- var line = c('tr');
324
- line.className = 'line';
367
+ var line = c("tr");
368
+ line.className = "line";
325
369
  line.dataset.idx = i;
326
370
  chunk.appendChild(line);
327
371
  var checked = this.breakPoints.includes(i);
328
372
  var args = operatorList.argsArray[i] || [];
329
- var breakCell = c('td');
330
- var cbox = c('input');
331
- cbox.type = 'checkbox';
332
- cbox.className = 'points';
373
+ var breakCell = c("td");
374
+ var cbox = c("input");
375
+ cbox.type = "checkbox";
376
+ cbox.className = "points";
333
377
  cbox.checked = checked;
334
378
  cbox.dataset.idx = i;
335
379
  cbox.onclick = cboxOnClick;
336
380
  breakCell.appendChild(cbox);
337
381
  line.appendChild(breakCell);
338
- line.appendChild(c('td', i.toString()));
382
+ line.appendChild(c("td", i.toString()));
339
383
  var fn = opMap[operatorList.fnArray[i]];
340
384
  var decArgs = args;
341
- if (fn === 'showText') {
385
+
386
+ if (fn === "showText") {
342
387
  var glyphs = args[0];
343
388
  var newArgs = [];
344
389
  var str = [];
390
+
345
391
  for (var j = 0; j < glyphs.length; j++) {
346
392
  var glyph = glyphs[j];
347
- if ((typeof glyph === 'undefined' ? 'undefined' : _typeof(glyph)) === 'object' && glyph !== null) {
393
+
394
+ if (typeof glyph === "object" && glyph !== null) {
348
395
  str.push(glyph.fontChar);
349
396
  } else {
350
397
  if (str.length > 0) {
351
- newArgs.push(str.join(''));
398
+ newArgs.push(str.join(""));
352
399
  str = [];
353
400
  }
401
+
354
402
  newArgs.push(glyph);
355
403
  }
356
404
  }
405
+
357
406
  if (str.length > 0) {
358
- newArgs.push(str.join(''));
407
+ newArgs.push(str.join(""));
359
408
  }
409
+
360
410
  decArgs = [newArgs];
361
411
  }
362
- line.appendChild(c('td', fn));
363
- line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs))));
412
+
413
+ line.appendChild(c("td", fn));
414
+ line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs))));
364
415
  }
416
+
365
417
  if (operatorsToDisplay < operatorList.fnArray.length) {
366
- line = c('tr');
367
- var lastCell = c('td', '...');
418
+ line = c("tr");
419
+ var lastCell = c("td", "...");
368
420
  lastCell.colspan = 4;
369
421
  chunk.appendChild(lastCell);
370
422
  }
423
+
371
424
  this.operatorListIdx = operatorList.fnArray.length;
372
425
  this.table.appendChild(chunk);
373
426
  },
@@ -375,11 +428,13 @@ var Stepper = function StepperClosure() {
375
428
  this.breakPoints.sort(function (a, b) {
376
429
  return a - b;
377
430
  });
431
+
378
432
  for (var i = 0; i < this.breakPoints.length; i++) {
379
433
  if (this.breakPoints[i] > this.currentIdx) {
380
434
  return this.breakPoints[i];
381
435
  }
382
436
  }
437
+
383
438
  return null;
384
439
  },
385
440
  breakIt: function breakIt(idx, callback) {
@@ -387,16 +442,18 @@ var Stepper = function StepperClosure() {
387
442
  var self = this;
388
443
  var dom = document;
389
444
  self.currentIdx = idx;
390
- var listener = function listener(e) {
445
+
446
+ var listener = function (e) {
391
447
  switch (e.keyCode) {
392
448
  case 83:
393
- dom.removeEventListener('keydown', listener);
449
+ dom.removeEventListener("keydown", listener);
394
450
  self.nextBreakPoint = self.currentIdx + 1;
395
451
  self.goTo(-1);
396
452
  callback();
397
453
  break;
454
+
398
455
  case 67:
399
- dom.removeEventListener('keydown', listener);
456
+ dom.removeEventListener("keydown", listener);
400
457
  var breakPoint = self.getNextBreakPoint();
401
458
  self.nextBreakPoint = breakPoint;
402
459
  self.goTo(-1);
@@ -404,15 +461,18 @@ var Stepper = function StepperClosure() {
404
461
  break;
405
462
  }
406
463
  };
407
- dom.addEventListener('keydown', listener);
464
+
465
+ dom.addEventListener("keydown", listener);
408
466
  self.goTo(idx);
409
467
  },
410
468
  goTo: function goTo(idx) {
411
- var allRows = this.panel.getElementsByClassName('line');
469
+ var allRows = this.panel.getElementsByClassName("line");
470
+
412
471
  for (var x = 0, xx = allRows.length; x < xx; ++x) {
413
472
  var row = allRows[x];
473
+
414
474
  if ((row.dataset.idx | 0) === idx) {
415
- row.style.backgroundColor = 'rgb(251,250,207)';
475
+ row.style.backgroundColor = "rgb(251,250,207)";
416
476
  row.scrollIntoView();
417
477
  } else {
418
478
  row.style.backgroundColor = null;
@@ -422,87 +482,104 @@ var Stepper = function StepperClosure() {
422
482
  };
423
483
  return Stepper;
424
484
  }();
485
+
425
486
  var Stats = function Stats() {
426
487
  var stats = [];
488
+
427
489
  function clear(node) {
428
490
  while (node.hasChildNodes()) {
429
491
  node.removeChild(node.lastChild);
430
492
  }
431
493
  }
494
+
432
495
  function getStatIndex(pageNumber) {
433
496
  for (var i = 0, ii = stats.length; i < ii; ++i) {
434
497
  if (stats[i].pageNumber === pageNumber) {
435
498
  return i;
436
499
  }
437
500
  }
501
+
438
502
  return false;
439
503
  }
504
+
440
505
  return {
441
- id: 'Stats',
442
- name: 'Stats',
506
+ id: "Stats",
507
+ name: "Stats",
443
508
  panel: null,
444
509
  manager: null,
445
- init: function init(pdfjsLib) {
446
- this.panel.setAttribute('style', 'padding: 5px;');
447
- },
510
+
511
+ init(pdfjsLib) {},
448
512
 
449
513
  enabled: false,
450
514
  active: false,
451
- add: function add(pageNumber, stat) {
515
+
516
+ add(pageNumber, stat) {
452
517
  if (!stat) {
453
518
  return;
454
519
  }
520
+
455
521
  var statsIndex = getStatIndex(pageNumber);
522
+
456
523
  if (statsIndex !== false) {
457
- var b = stats[statsIndex];
524
+ const b = stats[statsIndex];
458
525
  this.panel.removeChild(b.div);
459
526
  stats.splice(statsIndex, 1);
460
527
  }
461
- var wrapper = document.createElement('div');
462
- wrapper.className = 'stats';
463
- var title = document.createElement('div');
464
- title.className = 'title';
465
- title.textContent = 'Page: ' + pageNumber;
466
- var statsDiv = document.createElement('div');
528
+
529
+ var wrapper = document.createElement("div");
530
+ wrapper.className = "stats";
531
+ var title = document.createElement("div");
532
+ title.className = "title";
533
+ title.textContent = "Page: " + pageNumber;
534
+ var statsDiv = document.createElement("div");
467
535
  statsDiv.textContent = stat.toString();
468
536
  wrapper.appendChild(title);
469
537
  wrapper.appendChild(statsDiv);
470
538
  stats.push({
471
- pageNumber: pageNumber,
539
+ pageNumber,
472
540
  div: wrapper
473
541
  });
474
542
  stats.sort(function (a, b) {
475
543
  return a.pageNumber - b.pageNumber;
476
544
  });
477
545
  clear(this.panel);
546
+
478
547
  for (var i = 0, ii = stats.length; i < ii; ++i) {
479
548
  this.panel.appendChild(stats[i].div);
480
549
  }
481
550
  },
482
- cleanup: function cleanup() {
551
+
552
+ cleanup() {
483
553
  stats = [];
484
554
  clear(this.panel);
485
555
  }
556
+
486
557
  };
487
558
  }();
559
+
488
560
  window.PDFBug = function PDFBugClosure() {
489
561
  var panelWidth = 300;
490
562
  var buttons = [];
491
563
  var activePanel = null;
492
564
  return {
493
565
  tools: [FontInspector, StepperManager, Stats],
494
- enable: function enable(ids) {
566
+
567
+ enable(ids) {
495
568
  var all = false,
496
569
  tools = this.tools;
497
- if (ids.length === 1 && ids[0] === 'all') {
570
+
571
+ if (ids.length === 1 && ids[0] === "all") {
498
572
  all = true;
499
573
  }
574
+
500
575
  for (var i = 0; i < tools.length; ++i) {
501
576
  var tool = tools[i];
577
+
502
578
  if (all || ids.includes(tool.id)) {
503
579
  tool.enabled = true;
504
580
  }
505
581
  }
582
+
506
583
  if (!all) {
507
584
  tools.sort(function (a, b) {
508
585
  var indexA = ids.indexOf(a.id);
@@ -513,25 +590,27 @@ window.PDFBug = function PDFBugClosure() {
513
590
  });
514
591
  }
515
592
  },
516
- init: function init(pdfjsLib, container) {
517
- var ui = document.createElement('div');
518
- ui.id = 'PDFBug';
519
- var controls = document.createElement('div');
520
- controls.setAttribute('class', 'controls');
593
+
594
+ init(pdfjsLib, container) {
595
+ var ui = document.createElement("div");
596
+ ui.id = "PDFBug";
597
+ var controls = document.createElement("div");
598
+ controls.setAttribute("class", "controls");
521
599
  ui.appendChild(controls);
522
- var panels = document.createElement('div');
523
- panels.setAttribute('class', 'panels');
600
+ var panels = document.createElement("div");
601
+ panels.setAttribute("class", "panels");
524
602
  ui.appendChild(panels);
525
603
  container.appendChild(ui);
526
- container.style.right = panelWidth + 'px';
604
+ container.style.right = panelWidth + "px";
527
605
  var tools = this.tools;
528
606
  var self = this;
607
+
529
608
  for (var i = 0; i < tools.length; ++i) {
530
609
  var tool = tools[i];
531
- var panel = document.createElement('div');
532
- var panelButton = document.createElement('button');
610
+ var panel = document.createElement("div");
611
+ var panelButton = document.createElement("button");
533
612
  panelButton.textContent = tool.name;
534
- panelButton.addEventListener('click', function (selected) {
613
+ panelButton.addEventListener("click", function (selected) {
535
614
  return function (event) {
536
615
  event.preventDefault();
537
616
  self.selectPanel(selected);
@@ -541,42 +620,51 @@ window.PDFBug = function PDFBugClosure() {
541
620
  panels.appendChild(panel);
542
621
  tool.panel = panel;
543
622
  tool.manager = this;
623
+
544
624
  if (tool.enabled) {
545
625
  tool.init(pdfjsLib);
546
626
  } else {
547
- panel.textContent = tool.name + ' is disabled. To enable add ' + ' "' + tool.id + '" to the pdfBug parameter ' + 'and refresh (separate multiple by commas).';
627
+ panel.textContent = tool.name + " is disabled. To enable add " + ' "' + tool.id + '" to the pdfBug parameter ' + "and refresh (separate multiple by commas).";
548
628
  }
629
+
549
630
  buttons.push(panelButton);
550
631
  }
632
+
551
633
  this.selectPanel(0);
552
634
  },
553
- cleanup: function cleanup() {
635
+
636
+ cleanup() {
554
637
  for (var i = 0, ii = this.tools.length; i < ii; i++) {
555
638
  if (this.tools[i].enabled) {
556
639
  this.tools[i].cleanup();
557
640
  }
558
641
  }
559
642
  },
560
- selectPanel: function selectPanel(index) {
561
- if (typeof index !== 'number') {
643
+
644
+ selectPanel(index) {
645
+ if (typeof index !== "number") {
562
646
  index = this.tools.indexOf(index);
563
647
  }
648
+
564
649
  if (index === activePanel) {
565
650
  return;
566
651
  }
652
+
567
653
  activePanel = index;
568
654
  var tools = this.tools;
655
+
569
656
  for (var j = 0; j < tools.length; ++j) {
570
657
  if (j === index) {
571
- buttons[j].setAttribute('class', 'active');
658
+ buttons[j].setAttribute("class", "active");
572
659
  tools[j].active = true;
573
- tools[j].panel.removeAttribute('hidden');
660
+ tools[j].panel.removeAttribute("hidden");
574
661
  } else {
575
- buttons[j].setAttribute('class', '');
662
+ buttons[j].setAttribute("class", "");
576
663
  tools[j].active = false;
577
- tools[j].panel.setAttribute('hidden', 'true');
664
+ tools[j].panel.setAttribute("hidden", "true");
578
665
  }
579
666
  }
580
667
  }
668
+
581
669
  };
582
670
  }();