pdfjs-dist 2.6.347 → 2.7.570

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 (158) hide show
  1. package/README.md +3 -3
  2. package/bower.json +1 -1
  3. package/build/pdf.js +2050 -1087
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +18219 -10436
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/es5/build/pdf.d.ts +1 -0
  10. package/es5/build/pdf.js +6623 -6654
  11. package/es5/build/pdf.js.map +1 -1
  12. package/es5/build/pdf.min.js +1 -1
  13. package/es5/build/pdf.worker.js +20815 -13888
  14. package/es5/build/pdf.worker.js.map +1 -1
  15. package/es5/build/pdf.worker.min.js +1 -1
  16. package/es5/image_decoders/pdf.image_decoders.js +3817 -4946
  17. package/es5/image_decoders/pdf.image_decoders.js.map +1 -1
  18. package/es5/image_decoders/pdf.image_decoders.min.js +1 -1
  19. package/es5/web/pdf_viewer.css +18 -15
  20. package/es5/web/pdf_viewer.js +1094 -514
  21. package/es5/web/pdf_viewer.js.map +1 -1
  22. package/image_decoders/pdf.image_decoders.js +774 -168
  23. package/image_decoders/pdf.image_decoders.js.map +1 -1
  24. package/image_decoders/pdf.image_decoders.min.js +1 -1
  25. package/lib/core/annotation.js +556 -108
  26. package/lib/core/cff_parser.js +7 -1
  27. package/lib/core/charsets.js +1 -1
  28. package/lib/core/cmap.js +20 -1
  29. package/lib/core/core_utils.js +162 -3
  30. package/lib/core/crypto.js +1 -1
  31. package/lib/core/default_appearance.js +132 -0
  32. package/lib/core/document.js +115 -9
  33. package/lib/core/encodings.js +1 -1
  34. package/lib/core/evaluator.js +168 -74
  35. package/lib/core/fonts.js +97 -11
  36. package/lib/core/function.js +5 -10
  37. package/lib/core/glyphlist.js +11 -4529
  38. package/lib/core/image_utils.js +30 -1
  39. package/lib/core/jpg.js +1 -1
  40. package/lib/core/jpx.js +5 -5
  41. package/lib/core/murmurhash3.js +1 -1
  42. package/lib/core/obj.js +123 -39
  43. package/lib/core/pattern.js +4 -4
  44. package/lib/core/primitives.js +24 -5
  45. package/lib/core/standard_fonts.js +1 -1
  46. package/lib/core/stream.js +5 -1
  47. package/lib/core/unicode.js +15 -1387
  48. package/lib/core/worker.js +58 -17
  49. package/lib/core/writer.js +68 -4
  50. package/lib/display/annotation_layer.js +712 -119
  51. package/lib/display/annotation_storage.js +21 -4
  52. package/lib/display/api.js +88 -18
  53. package/lib/display/canvas.js +414 -375
  54. package/lib/display/display_utils.js +11 -4
  55. package/lib/display/fetch_stream.js +3 -3
  56. package/lib/display/font_loader.js +2 -3
  57. package/lib/display/metadata.js +54 -20
  58. package/lib/display/node_stream.js +1 -1
  59. package/lib/display/optional_content_config.js +1 -1
  60. package/lib/display/pattern_helper.js +109 -113
  61. package/lib/display/svg.js +5 -5
  62. package/lib/display/text_layer.js +54 -54
  63. package/lib/display/transport_stream.js +4 -4
  64. package/lib/display/webgl.js +65 -68
  65. package/lib/examples/node/domstubs.js +9 -4
  66. package/lib/pdf.js +2 -2
  67. package/lib/pdf.sandbox.js +311 -0
  68. package/lib/pdf.worker.js +2 -2
  69. package/lib/shared/scripting_utils.js +84 -0
  70. package/lib/shared/util.js +129 -14
  71. package/lib/{display → shared}/xml_parser.js +112 -4
  72. package/lib/test/unit/annotation_spec.js +831 -109
  73. package/lib/test/unit/annotation_storage_spec.js +28 -10
  74. package/lib/test/unit/api_spec.js +190 -160
  75. package/lib/test/unit/bidi_spec.js +6 -6
  76. package/lib/test/unit/cff_parser_spec.js +73 -73
  77. package/lib/test/unit/clitests_helper.js +2 -0
  78. package/lib/test/unit/cmap_spec.js +48 -74
  79. package/lib/test/unit/core_utils_spec.js +34 -0
  80. package/lib/test/unit/crypto_spec.js +162 -199
  81. package/lib/test/unit/custom_spec.js +7 -18
  82. package/lib/test/unit/default_appearance_spec.js +54 -0
  83. package/lib/test/unit/display_svg_spec.js +24 -19
  84. package/lib/test/unit/display_utils_spec.js +1 -1
  85. package/lib/test/unit/document_spec.js +187 -20
  86. package/lib/test/unit/evaluator_spec.js +30 -30
  87. package/lib/test/unit/function_spec.js +165 -165
  88. package/lib/test/unit/jasmine-boot.js +52 -53
  89. package/lib/test/unit/metadata_spec.js +2 -2
  90. package/lib/test/unit/murmurhash3_spec.js +29 -16
  91. package/lib/test/unit/network_spec.js +21 -21
  92. package/lib/test/unit/pdf_find_controller_spec.js +131 -69
  93. package/lib/test/unit/pdf_find_utils_spec.js +10 -10
  94. package/lib/test/unit/scripting_spec.js +1104 -0
  95. package/lib/test/unit/stream_spec.js +8 -8
  96. package/lib/test/unit/test_utils.js +16 -19
  97. package/lib/test/unit/testreporter.js +11 -4
  98. package/lib/test/unit/type1_parser_spec.js +23 -23
  99. package/lib/test/unit/ui_utils_spec.js +78 -35
  100. package/lib/test/unit/unicode_spec.js +7 -7
  101. package/lib/test/unit/util_spec.js +26 -3
  102. package/lib/test/unit/writer_spec.js +16 -1
  103. package/lib/test/unit/xml_spec.js +117 -0
  104. package/lib/web/annotation_layer_builder.js +18 -6
  105. package/lib/web/app.js +579 -161
  106. package/lib/web/app_options.js +14 -0
  107. package/lib/web/base_tree_viewer.js +50 -0
  108. package/lib/web/base_viewer.js +350 -14
  109. package/lib/web/chromecom.js +9 -1
  110. package/lib/web/debugger.js +1 -2
  111. package/lib/web/download_manager.js +0 -15
  112. package/lib/web/firefox_print_service.js +6 -4
  113. package/lib/web/firefoxcom.js +84 -69
  114. package/lib/web/generic_scripting.js +55 -0
  115. package/lib/web/genericcom.js +9 -1
  116. package/lib/web/grab_to_pan.js +1 -1
  117. package/lib/web/interfaces.js +9 -3
  118. package/lib/web/pdf_attachment_viewer.js +1 -3
  119. package/lib/web/pdf_cursor_tools.js +20 -13
  120. package/lib/web/pdf_document_properties.js +48 -61
  121. package/lib/web/pdf_find_bar.js +1 -3
  122. package/lib/web/pdf_find_controller.js +58 -12
  123. package/lib/web/pdf_history.js +43 -21
  124. package/lib/web/pdf_layer_viewer.js +1 -9
  125. package/lib/web/pdf_link_service.js +108 -78
  126. package/lib/web/pdf_outline_viewer.js +166 -10
  127. package/lib/web/pdf_page_view.js +14 -14
  128. package/lib/web/pdf_presentation_mode.js +21 -31
  129. package/lib/web/pdf_rendering_queue.js +8 -1
  130. package/lib/web/pdf_sidebar.js +62 -107
  131. package/lib/web/pdf_sidebar_resizer.js +11 -21
  132. package/lib/web/pdf_single_page_viewer.js +8 -0
  133. package/lib/web/pdf_thumbnail_view.js +26 -26
  134. package/lib/web/pdf_thumbnail_viewer.js +13 -2
  135. package/lib/web/pdf_viewer.component.js +2 -2
  136. package/lib/web/pdf_viewer.js +3 -1
  137. package/lib/web/preferences.js +33 -44
  138. package/lib/web/text_layer_builder.js +2 -9
  139. package/lib/web/ui_utils.js +78 -46
  140. package/lib/web/viewer_compatibility.js +1 -2
  141. package/package.json +4 -1
  142. package/types/display/annotation_layer.d.ts +18 -3
  143. package/types/display/api.d.ts +110 -54
  144. package/types/display/canvas.d.ts +1 -1
  145. package/types/display/display_utils.d.ts +96 -95
  146. package/types/display/fetch_stream.d.ts +2 -2
  147. package/types/display/metadata.d.ts +4 -0
  148. package/types/display/pattern_helper.d.ts +1 -1
  149. package/types/display/text_layer.d.ts +7 -7
  150. package/types/display/transport_stream.d.ts +1 -1
  151. package/types/shared/scripting_utils.d.ts +12 -0
  152. package/types/shared/util.d.ts +281 -250
  153. package/types/shared/xml_parser.d.ts +64 -0
  154. package/web/pdf_viewer.css +18 -15
  155. package/web/pdf_viewer.js +809 -408
  156. package/web/pdf_viewer.js.map +1 -1
  157. package/webpack.js +1 -1
  158. package/types/display/xml_parser.d.ts +0 -35
@@ -26,12 +26,12 @@ Object.defineProperty(exports, "__esModule", {
26
26
  });
27
27
  exports.FirefoxPrintService = FirefoxPrintService;
28
28
 
29
+ var _pdf = require("../pdf");
30
+
29
31
  var _ui_utils = require("./ui_utils.js");
30
32
 
31
33
  var _app = require("./app.js");
32
34
 
33
- var _pdf = require("../pdf");
34
-
35
35
  function composePage(pdfDocument, pageNumber, size, printContainer, printResolution, optionalContentConfigPromise) {
36
36
  const canvas = document.createElement("canvas");
37
37
  const PRINT_UNITS = printResolution / 72.0;
@@ -76,8 +76,10 @@ function composePage(pdfDocument, pageNumber, size, printContainer, printResolut
76
76
  }
77
77
 
78
78
  obj.done();
79
- }, function (error) {
80
- console.error(error);
79
+ }, function (reason) {
80
+ if (!(reason instanceof _pdf.RenderingCancelledException)) {
81
+ console.error(reason);
82
+ }
81
83
 
82
84
  if (currentRenderTask === thisRenderTask) {
83
85
  currentRenderTask.cancel();
@@ -40,49 +40,53 @@ var _ui_utils = require("./ui_utils.js");
40
40
  throw new Error('Module "./firefoxcom.js" shall not be used outside MOZCENTRAL builds.');
41
41
  }
42
42
 
43
- const FirefoxCom = function FirefoxComClosure() {
44
- return {
45
- requestSync(action, data) {
46
- const request = document.createTextNode("");
47
- document.documentElement.appendChild(request);
48
- const sender = document.createEvent("CustomEvent");
49
- sender.initCustomEvent("pdf.js.message", true, false, {
50
- action,
51
- data,
52
- sync: true
53
- });
54
- request.dispatchEvent(sender);
55
- const response = sender.detail.response;
56
- document.documentElement.removeChild(request);
57
- return response;
58
- },
59
-
60
- request(action, data, callback) {
61
- const request = document.createTextNode("");
62
-
63
- if (callback) {
64
- document.addEventListener("pdf.js.response", function listener(event) {
65
- const node = event.target;
66
- const response = event.detail.response;
67
- document.documentElement.removeChild(node);
68
- document.removeEventListener("pdf.js.response", listener);
69
- return callback(response);
70
- });
71
- }
43
+ class FirefoxCom {
44
+ static requestSync(action, data) {
45
+ const request = document.createTextNode("");
46
+ document.documentElement.appendChild(request);
47
+ const sender = document.createEvent("CustomEvent");
48
+ sender.initCustomEvent("pdf.js.message", true, false, {
49
+ action,
50
+ data,
51
+ sync: true
52
+ });
53
+ request.dispatchEvent(sender);
54
+ const response = sender.detail.response;
55
+ request.remove();
56
+ return response;
57
+ }
72
58
 
73
- document.documentElement.appendChild(request);
74
- const sender = document.createEvent("CustomEvent");
75
- sender.initCustomEvent("pdf.js.message", true, false, {
76
- action,
77
- data,
78
- sync: false,
79
- responseExpected: !!callback
59
+ static requestAsync(action, data) {
60
+ return new Promise(resolve => {
61
+ this.request(action, data, resolve);
62
+ });
63
+ }
64
+
65
+ static request(action, data, callback = null) {
66
+ const request = document.createTextNode("");
67
+
68
+ if (callback) {
69
+ request.addEventListener("pdf.js.response", event => {
70
+ const response = event.detail.response;
71
+ event.target.remove();
72
+ callback(response);
73
+ }, {
74
+ once: true
80
75
  });
81
- return request.dispatchEvent(sender);
82
76
  }
83
77
 
84
- };
85
- }();
78
+ document.documentElement.appendChild(request);
79
+ const sender = document.createEvent("CustomEvent");
80
+ sender.initCustomEvent("pdf.js.message", true, false, {
81
+ action,
82
+ data,
83
+ sync: false,
84
+ responseExpected: !!callback
85
+ });
86
+ request.dispatchEvent(sender);
87
+ }
88
+
89
+ }
86
90
 
87
91
  exports.FirefoxCom = FirefoxCom;
88
92
 
@@ -98,36 +102,30 @@ class DownloadManager {
98
102
  const blobUrl = URL.createObjectURL(new Blob([data], {
99
103
  type: contentType
100
104
  }));
101
-
102
- const onResponse = err => {
103
- URL.revokeObjectURL(blobUrl);
104
- };
105
-
106
- FirefoxCom.request("download", {
105
+ FirefoxCom.requestAsync("download", {
107
106
  blobUrl,
108
107
  originalUrl: blobUrl,
109
108
  filename,
110
109
  isAttachment: true
111
- }, onResponse);
110
+ }).then(error => {
111
+ URL.revokeObjectURL(blobUrl);
112
+ });
112
113
  }
113
114
 
114
115
  download(blob, url, filename, sourceEventType = "download") {
115
116
  const blobUrl = URL.createObjectURL(blob);
116
-
117
- const onResponse = err => {
118
- if (err && this.onerror) {
119
- this.onerror(err);
120
- }
121
-
122
- URL.revokeObjectURL(blobUrl);
123
- };
124
-
125
- FirefoxCom.request("download", {
117
+ FirefoxCom.requestAsync("download", {
126
118
  blobUrl,
127
119
  originalUrl: url,
128
120
  filename,
129
121
  sourceEventType
130
- }, onResponse);
122
+ }).then(error => {
123
+ if (error) {
124
+ console.error("`ChromeActions.download` failed.");
125
+ }
126
+
127
+ URL.revokeObjectURL(blobUrl);
128
+ });
131
129
  }
132
130
 
133
131
  }
@@ -136,18 +134,12 @@ exports.DownloadManager = DownloadManager;
136
134
 
137
135
  class FirefoxPreferences extends _preferences.BasePreferences {
138
136
  async _writeToStorage(prefObj) {
139
- return new Promise(function (resolve) {
140
- FirefoxCom.request("setPreferences", prefObj, resolve);
141
- });
137
+ return FirefoxCom.requestAsync("setPreferences", prefObj);
142
138
  }
143
139
 
144
140
  async _readFromStorage(prefObj) {
145
- return new Promise(function (resolve) {
146
- FirefoxCom.request("getPreferences", prefObj, function (prefStr) {
147
- const readPrefs = JSON.parse(prefStr);
148
- resolve(readPrefs);
149
- });
150
- });
141
+ const prefStr = await FirefoxCom.requestAsync("getPreferences", prefObj);
142
+ return JSON.parse(prefStr);
151
143
  }
152
144
 
153
145
  }
@@ -267,6 +259,25 @@ class FirefoxComDataRangeTransport extends _pdf.PDFDataRangeTransport {
267
259
 
268
260
  }
269
261
 
262
+ class FirefoxScripting {
263
+ static async createSandbox(data) {
264
+ const success = await FirefoxCom.requestAsync("createSandbox", data);
265
+
266
+ if (!success) {
267
+ throw new Error("Cannot create sandbox.");
268
+ }
269
+ }
270
+
271
+ static async dispatchEventInSandbox(event) {
272
+ FirefoxCom.request("dispatchEventInSandbox", event);
273
+ }
274
+
275
+ static async destroySandbox() {
276
+ FirefoxCom.request("destroySandbox", null);
277
+ }
278
+
279
+ }
280
+
270
281
  class FirefoxExternalServices extends _app.DefaultExternalServices {
271
282
  static updateFindControlState(data) {
272
283
  FirefoxCom.request("updateFindControlState", data);
@@ -333,8 +344,8 @@ class FirefoxExternalServices extends _app.DefaultExternalServices {
333
344
  FirefoxCom.requestSync("initPassiveLoading", null);
334
345
  }
335
346
 
336
- static fallback(data, callback) {
337
- FirefoxCom.request("fallback", data, callback);
347
+ static async fallback(data) {
348
+ return FirefoxCom.requestAsync("fallback", data);
338
349
  }
339
350
 
340
351
  static reportTelemetry(data) {
@@ -342,7 +353,7 @@ class FirefoxExternalServices extends _app.DefaultExternalServices {
342
353
  }
343
354
 
344
355
  static createDownloadManager(options) {
345
- return new DownloadManager(options);
356
+ return new DownloadManager();
346
357
  }
347
358
 
348
359
  static createPreferences() {
@@ -354,6 +365,10 @@ class FirefoxExternalServices extends _app.DefaultExternalServices {
354
365
  return new MozL10n(mozL10n);
355
366
  }
356
367
 
368
+ static createScripting(options) {
369
+ return FirefoxScripting;
370
+ }
371
+
357
372
  static get supportsIntegratedFind() {
358
373
  const support = FirefoxCom.requestSync("supportsIntegratedFind");
359
374
  return (0, _pdf.shadow)(this, "supportsIntegratedFind", support);
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @licstart The following is the entire license notice for the
3
+ * Javascript code in this page
4
+ *
5
+ * Copyright 2020 Mozilla Foundation
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ * @licend The above is the entire license notice for the
20
+ * Javascript code in this page
21
+ */
22
+ "use strict";
23
+
24
+ Object.defineProperty(exports, "__esModule", {
25
+ value: true
26
+ });
27
+ exports.GenericScripting = void 0;
28
+
29
+ var _pdf = require("../pdf");
30
+
31
+ class GenericScripting {
32
+ constructor(sandboxBundleSrc) {
33
+ this._ready = (0, _pdf.loadScript)(sandboxBundleSrc, true).then(() => {
34
+ return window.pdfjsSandbox.QuickJSSandbox();
35
+ });
36
+ }
37
+
38
+ async createSandbox(data) {
39
+ const sandbox = await this._ready;
40
+ sandbox.create(data);
41
+ }
42
+
43
+ async dispatchEventInSandbox(event) {
44
+ const sandbox = await this._ready;
45
+ sandbox.dispatchEvent(event);
46
+ }
47
+
48
+ async destroySandbox() {
49
+ const sandbox = await this._ready;
50
+ sandbox.nukeSandbox();
51
+ }
52
+
53
+ }
54
+
55
+ exports.GenericScripting = GenericScripting;
@@ -34,6 +34,8 @@ var _download_manager = require("./download_manager.js");
34
34
 
35
35
  var _genericl10n = require("./genericl10n.js");
36
36
 
37
+ var _generic_scripting = require("./generic_scripting.js");
38
+
37
39
  ;
38
40
  const GenericCom = {};
39
41
  exports.GenericCom = GenericCom;
@@ -51,7 +53,7 @@ class GenericPreferences extends _preferences.BasePreferences {
51
53
 
52
54
  class GenericExternalServices extends _app.DefaultExternalServices {
53
55
  static createDownloadManager(options) {
54
- return new _download_manager.DownloadManager(options);
56
+ return new _download_manager.DownloadManager();
55
57
  }
56
58
 
57
59
  static createPreferences() {
@@ -64,6 +66,12 @@ class GenericExternalServices extends _app.DefaultExternalServices {
64
66
  return new _genericl10n.GenericL10n(locale);
65
67
  }
66
68
 
69
+ static createScripting({
70
+ sandboxBundleSrc
71
+ }) {
72
+ return new _generic_scripting.GenericScripting(sandboxBundleSrc);
73
+ }
74
+
67
75
  }
68
76
 
69
77
  _app.PDFViewerApplication.externalServices = GenericExternalServices;
@@ -147,7 +147,7 @@ GrabToPan.prototype = {
147
147
  }
148
148
  };
149
149
  let matchesSelector;
150
- ["webkitM", "mozM", "msM", "oM", "m"].some(function (prefix) {
150
+ ["webkitM", "mozM", "m"].some(function (prefix) {
151
151
  let name = prefix + "atches";
152
152
 
153
153
  if (name in document.documentElement) {
@@ -24,7 +24,7 @@
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.IL10n = exports.IPDFAnnotationLayerFactory = exports.IPDFTextLayerFactory = exports.IRenderableView = exports.IPDFHistory = exports.IPDFLinkService = void 0;
27
+ exports.IRenderableView = exports.IPDFTextLayerFactory = exports.IPDFLinkService = exports.IPDFHistory = exports.IPDFAnnotationLayerFactory = exports.IL10n = void 0;
28
28
 
29
29
  class IPDFLinkService {
30
30
  get pagesCount() {}
@@ -41,7 +41,9 @@ class IPDFLinkService {
41
41
 
42
42
  set externalLinkEnabled(value) {}
43
43
 
44
- navigateTo(dest) {}
44
+ async goToDestination(dest) {}
45
+
46
+ goToPage(val) {}
45
47
 
46
48
  getDestinationHash(dest) {}
47
49
 
@@ -55,6 +57,8 @@ class IPDFLinkService {
55
57
 
56
58
  isPageVisible(pageNumber) {}
57
59
 
60
+ isPageCached(pageNumber) {}
61
+
58
62
  }
59
63
 
60
64
  exports.IPDFLinkService = IPDFLinkService;
@@ -74,6 +78,8 @@ class IPDFHistory {
74
78
  pageNumber
75
79
  }) {}
76
80
 
81
+ pushPage(pageNumber) {}
82
+
77
83
  pushCurrentPosition() {}
78
84
 
79
85
  back() {}
@@ -105,7 +111,7 @@ class IPDFTextLayerFactory {
105
111
  exports.IPDFTextLayerFactory = IPDFTextLayerFactory;
106
112
 
107
113
  class IPDFAnnotationLayerFactory {
108
- createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, l10n = undefined) {}
114
+ createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, l10n = undefined, enableScripting = false, hasJSActionsPromise = null, mouseState = null) {}
109
115
 
110
116
  }
111
117
 
@@ -169,9 +169,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
169
169
  attachmentsCount++;
170
170
  }
171
171
 
172
- this.container.appendChild(fragment);
173
-
174
- this._dispatchEvent(attachmentsCount);
172
+ this._finishRendering(fragment, attachmentsCount);
175
173
  }
176
174
 
177
175
  _appendAttachment({
@@ -28,6 +28,8 @@ exports.PDFCursorTools = exports.CursorTool = void 0;
28
28
 
29
29
  var _grab_to_pan = require("./grab_to_pan.js");
30
30
 
31
+ var _ui_utils = require("./ui_utils.js");
32
+
31
33
  const CursorTool = {
32
34
  SELECT: 0,
33
35
  HAND: 1,
@@ -116,20 +118,25 @@ class PDFCursorTools {
116
118
  });
117
119
 
118
120
  this.eventBus._on("presentationmodechanged", evt => {
119
- if (evt.switchInProgress) {
120
- return;
121
- }
122
-
123
- let previouslyActive;
121
+ switch (evt.state) {
122
+ case _ui_utils.PresentationModeState.CHANGING:
123
+ break;
124
124
 
125
- if (evt.active) {
126
- previouslyActive = this.active;
127
- this.switchTool(CursorTool.SELECT);
128
- this.activeBeforePresentationMode = previouslyActive;
129
- } else {
130
- previouslyActive = this.activeBeforePresentationMode;
131
- this.activeBeforePresentationMode = null;
132
- this.switchTool(previouslyActive);
125
+ case _ui_utils.PresentationModeState.FULLSCREEN:
126
+ {
127
+ const previouslyActive = this.active;
128
+ this.switchTool(CursorTool.SELECT);
129
+ this.activeBeforePresentationMode = previouslyActive;
130
+ break;
131
+ }
132
+
133
+ case _ui_utils.PresentationModeState.NORMAL:
134
+ {
135
+ const previouslyActive = this.activeBeforePresentationMode;
136
+ this.activeBeforePresentationMode = null;
137
+ this.switchTool(previouslyActive);
138
+ break;
139
+ }
133
140
  }
134
141
  });
135
142
  }
@@ -79,7 +79,7 @@ class PDFDocumentProperties {
79
79
  });
80
80
  }
81
81
 
82
- open() {
82
+ async open() {
83
83
  const freezeFieldData = data => {
84
84
  Object.defineProperty(this, "fieldData", {
85
85
  value: Object.freeze(data),
@@ -89,64 +89,58 @@ class PDFDocumentProperties {
89
89
  });
90
90
  };
91
91
 
92
- Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(() => {
93
- const currentPageNumber = this._currentPageNumber;
94
- const pagesRotation = this._pagesRotation;
92
+ await Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]);
93
+ const currentPageNumber = this._currentPageNumber;
94
+ const pagesRotation = this._pagesRotation;
95
95
 
96
- if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) {
97
- this._updateUI();
96
+ if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) {
97
+ this._updateUI();
98
98
 
99
- return;
100
- }
99
+ return;
100
+ }
101
101
 
102
- this.pdfDocument.getMetadata().then(({
103
- info,
104
- metadata,
105
- contentDispositionFilename
106
- }) => {
107
- return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(this.maybeFileSize), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
108
- return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
109
- }), this._parseLinearization(info.IsLinearized)]);
110
- }).then(([info, metadata, fileName, fileSize, creationDate, modDate, pageSize, isLinearized]) => {
111
- freezeFieldData({
112
- fileName,
113
- fileSize,
114
- title: info.Title,
115
- author: info.Author,
116
- subject: info.Subject,
117
- keywords: info.Keywords,
118
- creationDate,
119
- modificationDate: modDate,
120
- creator: info.Creator,
121
- producer: info.Producer,
122
- version: info.PDFFormatVersion,
123
- pageCount: this.pdfDocument.numPages,
124
- pageSize,
125
- linearized: isLinearized,
126
- _currentPageNumber: currentPageNumber,
127
- _pagesRotation: pagesRotation
128
- });
129
-
130
- this._updateUI();
131
-
132
- return this.pdfDocument.getDownloadInfo();
133
- }).then(({
134
- length
135
- }) => {
136
- this.maybeFileSize = length;
137
- return this._parseFileSize(length);
138
- }).then(fileSize => {
139
- if (fileSize === this.fieldData.fileSize) {
140
- return;
141
- }
102
+ const {
103
+ info,
104
+ contentDispositionFilename,
105
+ contentLength
106
+ } = await this.pdfDocument.getMetadata();
107
+ const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
108
+ return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
109
+ }), this._parseLinearization(info.IsLinearized)]);
110
+ freezeFieldData({
111
+ fileName,
112
+ fileSize,
113
+ title: info.Title,
114
+ author: info.Author,
115
+ subject: info.Subject,
116
+ keywords: info.Keywords,
117
+ creationDate,
118
+ modificationDate,
119
+ creator: info.Creator,
120
+ producer: info.Producer,
121
+ version: info.PDFFormatVersion,
122
+ pageCount: this.pdfDocument.numPages,
123
+ pageSize,
124
+ linearized: isLinearized,
125
+ _currentPageNumber: currentPageNumber,
126
+ _pagesRotation: pagesRotation
127
+ });
142
128
 
143
- const data = Object.assign(Object.create(null), this.fieldData);
144
- data.fileSize = fileSize;
145
- freezeFieldData(data);
129
+ this._updateUI();
146
130
 
147
- this._updateUI();
148
- });
149
- });
131
+ const {
132
+ length
133
+ } = await this.pdfDocument.getDownloadInfo();
134
+
135
+ if (contentLength === length) {
136
+ return;
137
+ }
138
+
139
+ const data = Object.assign(Object.create(null), this.fieldData);
140
+ data.fileSize = await this._parseFileSize(length);
141
+ freezeFieldData(data);
142
+
143
+ this._updateUI();
150
144
  }
151
145
 
152
146
  close() {
@@ -170,16 +164,9 @@ class PDFDocumentProperties {
170
164
  this._dataAvailableCapability.resolve();
171
165
  }
172
166
 
173
- setFileSize(fileSize) {
174
- if (Number.isInteger(fileSize) && fileSize > 0) {
175
- this.maybeFileSize = fileSize;
176
- }
177
- }
178
-
179
167
  _reset() {
180
168
  this.pdfDocument = null;
181
169
  this.url = null;
182
- this.maybeFileSize = 0;
183
170
  delete this.fieldData;
184
171
  this._dataAvailableCapability = (0, _pdf.createPromiseCapability)();
185
172
  this._currentPageNumber = 1;
@@ -104,7 +104,6 @@ class PDFFindBar {
104
104
  }
105
105
 
106
106
  updateUIState(state, previous, matchesCount) {
107
- let notFound = false;
108
107
  let findMsg = "";
109
108
  let status = "";
110
109
 
@@ -118,7 +117,7 @@ class PDFFindBar {
118
117
 
119
118
  case _pdf_find_controller.FindState.NOT_FOUND:
120
119
  findMsg = this.l10n.get("find_not_found", null, "Phrase not found");
121
- notFound = true;
120
+ status = "notFound";
122
121
  break;
123
122
 
124
123
  case _pdf_find_controller.FindState.WRAPPED:
@@ -131,7 +130,6 @@ class PDFFindBar {
131
130
  break;
132
131
  }
133
132
 
134
- this.findField.classList.toggle("notFound", notFound);
135
133
  this.findField.setAttribute("data-status", status);
136
134
  Promise.resolve(findMsg).then(msg => {
137
135
  this.findMsg.textContent = msg;