pdfjs-dist 2.0.489 → 2.2.228
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/bower.json +1 -1
- package/build/pdf.js +18515 -11402
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +48266 -37137
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/external/url/url-lib.js +627 -0
- package/image_decoders/pdf.image_decoders.js +11350 -0
- package/image_decoders/pdf.image_decoders.js.map +1 -0
- package/image_decoders/pdf.image_decoders.min.js +1 -0
- package/lib/core/annotation.js +587 -242
- package/lib/core/arithmetic_decoder.js +275 -245
- package/lib/core/bidi.js +65 -6
- package/lib/core/ccitt.js +173 -18
- package/lib/core/ccitt_stream.js +15 -6
- package/lib/core/cff_parser.js +433 -61
- package/lib/core/charsets.js +5 -4
- package/lib/core/chunked_stream.js +400 -152
- package/lib/core/cmap.js +326 -87
- package/lib/core/colorspace.js +874 -594
- package/lib/core/core_utils.js +147 -0
- package/lib/core/crypto.js +290 -45
- package/lib/core/document.js +560 -268
- package/lib/core/encodings.js +19 -10
- package/lib/core/evaluator.js +1005 -360
- package/lib/core/font_renderer.js +331 -97
- package/lib/core/fonts.js +812 -195
- package/lib/core/function.js +284 -71
- package/lib/core/glyphlist.js +4 -3
- package/lib/core/image.js +169 -62
- package/lib/core/image_utils.js +111 -0
- package/lib/core/jbig2.js +479 -66
- package/lib/core/jbig2_stream.js +19 -8
- package/lib/core/jpeg_stream.js +38 -13
- package/lib/core/jpg.js +253 -29
- package/lib/core/jpx.js +396 -6
- package/lib/core/jpx_stream.js +18 -6
- package/lib/core/metrics.js +15 -15
- package/lib/core/murmurhash3.js +56 -34
- package/lib/core/obj.js +1354 -488
- package/lib/core/operator_list.js +144 -31
- package/lib/core/parser.js +539 -191
- package/lib/core/pattern.js +148 -14
- package/lib/core/pdf_manager.js +323 -133
- package/lib/core/primitives.js +111 -24
- package/lib/core/ps_parser.js +134 -45
- package/lib/core/standard_fonts.js +17 -17
- package/lib/core/stream.js +313 -34
- package/lib/core/type1_parser.js +143 -13
- package/lib/core/unicode.js +32 -5
- package/lib/core/worker.js +217 -190
- package/lib/core/worker_stream.js +277 -0
- package/lib/display/annotation_layer.js +450 -133
- package/lib/display/api.js +1597 -784
- package/lib/display/api_compatibility.js +11 -13
- package/lib/display/canvas.js +360 -44
- package/lib/display/content_disposition.js +83 -32
- package/lib/display/display_utils.js +747 -0
- package/lib/display/fetch_stream.js +221 -90
- package/lib/display/font_loader.js +468 -236
- package/lib/display/metadata.js +38 -16
- package/lib/display/network.js +635 -428
- package/lib/display/network_utils.js +32 -19
- package/lib/display/node_stream.js +367 -175
- package/lib/display/pattern_helper.js +81 -31
- package/lib/display/svg.js +1235 -519
- package/lib/display/text_layer.js +153 -29
- package/lib/display/transport_stream.js +345 -94
- package/lib/display/webgl.js +64 -18
- package/lib/display/worker_options.js +5 -4
- package/lib/display/xml_parser.js +166 -53
- package/lib/examples/node/domstubs.js +60 -4
- package/lib/pdf.js +36 -14
- package/lib/pdf.worker.js +5 -3
- package/lib/shared/compatibility.js +158 -564
- package/lib/shared/global_scope.js +2 -2
- package/lib/shared/is_node.js +4 -4
- package/lib/shared/message_handler.js +521 -0
- package/lib/shared/streams_polyfill.js +21 -17
- package/lib/shared/url_polyfill.js +56 -0
- package/lib/shared/util.js +243 -710
- package/lib/test/unit/annotation_spec.js +870 -401
- package/lib/test/unit/api_spec.js +657 -345
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +54 -11
- package/lib/test/unit/clitests_helper.js +10 -8
- package/lib/test/unit/cmap_spec.js +95 -41
- package/lib/test/unit/colorspace_spec.js +115 -63
- package/lib/test/unit/core_utils_spec.js +191 -0
- package/lib/test/unit/crypto_spec.js +17 -5
- package/lib/test/unit/custom_spec.js +43 -55
- package/lib/test/unit/display_svg_spec.js +34 -18
- package/lib/test/unit/display_utils_spec.js +273 -0
- package/lib/test/unit/document_spec.js +8 -13
- package/lib/test/unit/encodings_spec.js +25 -45
- package/lib/test/unit/evaluator_spec.js +38 -15
- package/lib/test/unit/fetch_stream_spec.js +109 -0
- package/lib/test/unit/function_spec.js +17 -5
- package/lib/test/unit/jasmine-boot.js +33 -20
- package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
- package/lib/test/unit/metadata_spec.js +71 -11
- package/lib/test/unit/murmurhash3_spec.js +3 -3
- package/lib/test/unit/network_spec.js +19 -54
- package/lib/test/unit/network_utils_spec.js +91 -14
- package/lib/test/unit/node_stream_spec.js +56 -32
- package/lib/test/unit/parser_spec.js +162 -71
- package/lib/test/unit/pdf_find_controller_spec.js +230 -0
- package/lib/test/unit/pdf_find_utils_spec.js +63 -0
- package/lib/test/unit/pdf_history_spec.js +21 -9
- package/lib/test/unit/primitives_spec.js +53 -20
- package/lib/test/unit/stream_spec.js +12 -4
- package/lib/test/unit/test_utils.js +273 -56
- package/lib/test/unit/testreporter.js +21 -3
- package/lib/test/unit/type1_parser_spec.js +8 -6
- package/lib/test/unit/ui_utils_spec.js +454 -16
- package/lib/test/unit/unicode_spec.js +18 -15
- package/lib/test/unit/util_spec.js +87 -128
- package/lib/web/annotation_layer_builder.js +39 -22
- package/lib/web/app.js +1290 -588
- package/lib/web/app_options.js +100 -62
- package/lib/web/base_viewer.js +511 -182
- package/lib/web/chromecom.js +261 -117
- package/lib/web/debugger.js +166 -22
- package/lib/web/download_manager.js +32 -13
- package/lib/web/firefox_print_service.js +20 -10
- package/lib/web/firefoxcom.js +315 -80
- package/lib/web/genericcom.js +89 -30
- package/lib/web/genericl10n.js +142 -30
- package/lib/web/grab_to_pan.js +28 -4
- package/lib/web/interfaces.js +170 -47
- package/lib/web/overlay_manager.js +235 -85
- package/lib/web/password_prompt.js +22 -14
- package/lib/web/pdf_attachment_viewer.js +38 -18
- package/lib/web/pdf_cursor_tools.js +39 -16
- package/lib/web/pdf_document_properties.js +255 -136
- package/lib/web/pdf_find_bar.js +84 -40
- package/lib/web/pdf_find_controller.js +495 -184
- package/lib/web/pdf_find_utils.js +111 -0
- package/lib/web/pdf_history.js +190 -53
- package/lib/web/pdf_link_service.js +138 -77
- package/lib/web/pdf_outline_viewer.js +122 -46
- package/lib/web/pdf_page_view.js +191 -67
- package/lib/web/pdf_presentation_mode.js +99 -34
- package/lib/web/pdf_print_service.js +61 -13
- package/lib/web/pdf_rendering_queue.js +28 -9
- package/lib/web/pdf_sidebar.js +141 -81
- package/lib/web/pdf_sidebar_resizer.js +42 -16
- package/lib/web/pdf_single_page_viewer.js +74 -66
- package/lib/web/pdf_thumbnail_view.js +104 -33
- package/lib/web/pdf_thumbnail_viewer.js +66 -26
- package/lib/web/pdf_viewer.component.js +112 -32
- package/lib/web/pdf_viewer.js +91 -52
- package/lib/web/preferences.js +284 -89
- package/lib/web/secondary_toolbar.js +165 -40
- package/lib/web/text_layer_builder.js +134 -59
- package/lib/web/toolbar.js +78 -43
- package/lib/web/ui_utils.js +462 -136
- package/lib/web/view_history.js +215 -67
- package/lib/web/viewer_compatibility.js +4 -13
- package/package.json +5 -4
- package/web/pdf_viewer.css +79 -11
- package/web/pdf_viewer.js +6107 -3748
- package/web/pdf_viewer.js.map +1 -1
- package/lib/display/dom_utils.js +0 -309
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/test/unit/fonts_spec.js +0 -81
- package/lib/web/dom_events.js +0 -137
package/lib/web/pdf_history.js
CHANGED
@@ -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
|
5
|
+
* Copyright 2019 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,36 +19,50 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.
|
27
|
+
exports.isDestHashesEqual = isDestHashesEqual;
|
28
|
+
exports.isDestArraysEqual = isDestArraysEqual;
|
29
|
+
exports.PDFHistory = void 0;
|
30
|
+
|
31
|
+
var _ui_utils = require("./ui_utils");
|
28
32
|
|
29
|
-
|
33
|
+
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); }
|
30
34
|
|
31
|
-
|
35
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
32
36
|
|
33
|
-
|
37
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
34
38
|
|
35
|
-
var
|
39
|
+
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
40
|
+
|
41
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
36
42
|
|
37
43
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
38
44
|
|
45
|
+
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); } }
|
46
|
+
|
47
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
48
|
+
|
39
49
|
var HASH_CHANGE_TIMEOUT = 1000;
|
40
50
|
var POSITION_UPDATED_THRESHOLD = 50;
|
41
51
|
var UPDATE_VIEWAREA_TIMEOUT = 1000;
|
52
|
+
|
42
53
|
function getCurrentHash() {
|
43
54
|
return document.location.hash;
|
44
55
|
}
|
56
|
+
|
45
57
|
function parseCurrentHash(linkService) {
|
46
58
|
var hash = unescape(getCurrentHash()).substring(1);
|
47
59
|
var params = (0, _ui_utils.parseQueryString)(hash);
|
48
60
|
var page = params.page | 0;
|
61
|
+
|
49
62
|
if (!(Number.isInteger(page) && page > 0 && page <= linkService.pagesCount)) {
|
50
63
|
page = null;
|
51
64
|
}
|
65
|
+
|
52
66
|
return {
|
53
67
|
hash: hash,
|
54
68
|
page: page,
|
@@ -56,7 +70,9 @@ function parseCurrentHash(linkService) {
|
|
56
70
|
};
|
57
71
|
}
|
58
72
|
|
59
|
-
var PDFHistory =
|
73
|
+
var PDFHistory =
|
74
|
+
/*#__PURE__*/
|
75
|
+
function () {
|
60
76
|
function PDFHistory(_ref) {
|
61
77
|
var _this = this;
|
62
78
|
|
@@ -66,7 +82,7 @@ var PDFHistory = function () {
|
|
66
82
|
_classCallCheck(this, PDFHistory);
|
67
83
|
|
68
84
|
this.linkService = linkService;
|
69
|
-
this.eventBus = eventBus || (0,
|
85
|
+
this.eventBus = eventBus || (0, _ui_utils.getGlobalEventBus)();
|
70
86
|
this.initialized = false;
|
71
87
|
this.initialBookmark = null;
|
72
88
|
this.initialRotation = null;
|
@@ -82,19 +98,27 @@ var PDFHistory = function () {
|
|
82
98
|
}
|
83
99
|
|
84
100
|
_createClass(PDFHistory, [{
|
85
|
-
key:
|
86
|
-
value: function initialize(
|
87
|
-
var
|
101
|
+
key: "initialize",
|
102
|
+
value: function initialize(_ref2) {
|
103
|
+
var fingerprint = _ref2.fingerprint,
|
104
|
+
_ref2$resetHistory = _ref2.resetHistory,
|
105
|
+
resetHistory = _ref2$resetHistory === void 0 ? false : _ref2$resetHistory,
|
106
|
+
_ref2$updateUrl = _ref2.updateUrl,
|
107
|
+
updateUrl = _ref2$updateUrl === void 0 ? false : _ref2$updateUrl;
|
88
108
|
|
89
109
|
if (!fingerprint || typeof fingerprint !== 'string') {
|
90
110
|
console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
|
91
111
|
return;
|
92
112
|
}
|
113
|
+
|
93
114
|
var reInitialized = this.initialized && this.fingerprint !== fingerprint;
|
94
115
|
this.fingerprint = fingerprint;
|
116
|
+
this._updateUrl = updateUrl === true;
|
117
|
+
|
95
118
|
if (!this.initialized) {
|
96
119
|
this._bindEvents();
|
97
120
|
}
|
121
|
+
|
98
122
|
var state = window.history.state;
|
99
123
|
this.initialized = true;
|
100
124
|
this.initialBookmark = null;
|
@@ -106,7 +130,8 @@ var PDFHistory = function () {
|
|
106
130
|
this._uid = this._maxUid = 0;
|
107
131
|
this._destination = null;
|
108
132
|
this._position = null;
|
109
|
-
|
133
|
+
|
134
|
+
if (!this._isValidState(state, true) || resetHistory) {
|
110
135
|
var _parseCurrentHash = parseCurrentHash(this.linkService),
|
111
136
|
hash = _parseCurrentHash.hash,
|
112
137
|
page = _parseCurrentHash.page,
|
@@ -114,68 +139,94 @@ var PDFHistory = function () {
|
|
114
139
|
|
115
140
|
if (!hash || reInitialized || resetHistory) {
|
116
141
|
this._pushOrReplaceState(null, true);
|
142
|
+
|
117
143
|
return;
|
118
144
|
}
|
145
|
+
|
119
146
|
this._pushOrReplaceState({
|
120
147
|
hash: hash,
|
121
148
|
page: page,
|
122
149
|
rotation: rotation
|
123
150
|
}, true);
|
151
|
+
|
124
152
|
return;
|
125
153
|
}
|
154
|
+
|
126
155
|
var destination = state.destination;
|
156
|
+
|
127
157
|
this._updateInternalState(destination, state.uid, true);
|
158
|
+
|
128
159
|
if (this._uid > this._maxUid) {
|
129
160
|
this._maxUid = this._uid;
|
130
161
|
}
|
162
|
+
|
131
163
|
if (destination.rotation !== undefined) {
|
132
164
|
this.initialRotation = destination.rotation;
|
133
165
|
}
|
166
|
+
|
134
167
|
if (destination.dest) {
|
135
168
|
this.initialBookmark = JSON.stringify(destination.dest);
|
136
169
|
this._destination.page = null;
|
137
170
|
} else if (destination.hash) {
|
138
171
|
this.initialBookmark = destination.hash;
|
139
172
|
} else if (destination.page) {
|
140
|
-
this.initialBookmark =
|
173
|
+
this.initialBookmark = "page=".concat(destination.page);
|
141
174
|
}
|
142
175
|
}
|
143
176
|
}, {
|
144
|
-
key:
|
145
|
-
value: function push(
|
177
|
+
key: "push",
|
178
|
+
value: function push(_ref3) {
|
146
179
|
var _this2 = this;
|
147
180
|
|
148
|
-
var namedDest =
|
149
|
-
|
150
|
-
|
181
|
+
var _ref3$namedDest = _ref3.namedDest,
|
182
|
+
namedDest = _ref3$namedDest === void 0 ? null : _ref3$namedDest,
|
183
|
+
explicitDest = _ref3.explicitDest,
|
184
|
+
pageNumber = _ref3.pageNumber;
|
151
185
|
|
152
186
|
if (!this.initialized) {
|
153
187
|
return;
|
154
188
|
}
|
155
|
-
|
156
|
-
|
189
|
+
|
190
|
+
if (namedDest && typeof namedDest !== 'string') {
|
191
|
+
console.error('PDFHistory.push: ' + "\"".concat(namedDest, "\" is not a valid namedDest parameter."));
|
192
|
+
return;
|
193
|
+
} else if (!Array.isArray(explicitDest)) {
|
194
|
+
console.error('PDFHistory.push: ' + "\"".concat(explicitDest, "\" is not a valid explicitDest parameter."));
|
157
195
|
return;
|
196
|
+
} else if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {
|
197
|
+
if (pageNumber !== null || this._destination) {
|
198
|
+
console.error('PDFHistory.push: ' + "\"".concat(pageNumber, "\" is not a valid pageNumber parameter."));
|
199
|
+
return;
|
200
|
+
}
|
158
201
|
}
|
202
|
+
|
159
203
|
var hash = namedDest || JSON.stringify(explicitDest);
|
204
|
+
|
160
205
|
if (!hash) {
|
161
206
|
return;
|
162
207
|
}
|
208
|
+
|
163
209
|
var forceReplace = false;
|
210
|
+
|
164
211
|
if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {
|
165
212
|
if (this._destination.page) {
|
166
213
|
return;
|
167
214
|
}
|
215
|
+
|
168
216
|
forceReplace = true;
|
169
217
|
}
|
218
|
+
|
170
219
|
if (this._popStateInProgress && !forceReplace) {
|
171
220
|
return;
|
172
221
|
}
|
222
|
+
|
173
223
|
this._pushOrReplaceState({
|
174
224
|
dest: explicitDest,
|
175
225
|
hash: hash,
|
176
226
|
page: pageNumber,
|
177
227
|
rotation: this.linkService.rotation
|
178
228
|
}, forceReplace);
|
229
|
+
|
179
230
|
if (!this._popStateInProgress) {
|
180
231
|
this._popStateInProgress = true;
|
181
232
|
Promise.resolve().then(function () {
|
@@ -184,109 +235,166 @@ var PDFHistory = function () {
|
|
184
235
|
}
|
185
236
|
}
|
186
237
|
}, {
|
187
|
-
key:
|
238
|
+
key: "pushCurrentPosition",
|
188
239
|
value: function pushCurrentPosition() {
|
189
240
|
if (!this.initialized || this._popStateInProgress) {
|
190
241
|
return;
|
191
242
|
}
|
243
|
+
|
192
244
|
this._tryPushCurrentPosition();
|
193
245
|
}
|
194
246
|
}, {
|
195
|
-
key:
|
247
|
+
key: "back",
|
196
248
|
value: function back() {
|
197
249
|
if (!this.initialized || this._popStateInProgress) {
|
198
250
|
return;
|
199
251
|
}
|
252
|
+
|
200
253
|
var state = window.history.state;
|
254
|
+
|
201
255
|
if (this._isValidState(state) && state.uid > 0) {
|
202
256
|
window.history.back();
|
203
257
|
}
|
204
258
|
}
|
205
259
|
}, {
|
206
|
-
key:
|
260
|
+
key: "forward",
|
207
261
|
value: function forward() {
|
208
262
|
if (!this.initialized || this._popStateInProgress) {
|
209
263
|
return;
|
210
264
|
}
|
265
|
+
|
211
266
|
var state = window.history.state;
|
267
|
+
|
212
268
|
if (this._isValidState(state) && state.uid < this._maxUid) {
|
213
269
|
window.history.forward();
|
214
270
|
}
|
215
271
|
}
|
216
272
|
}, {
|
217
|
-
key:
|
273
|
+
key: "_pushOrReplaceState",
|
218
274
|
value: function _pushOrReplaceState(destination) {
|
219
275
|
var forceReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
220
|
-
|
221
276
|
var shouldReplace = forceReplace || !this._destination;
|
222
277
|
var newState = {
|
223
278
|
fingerprint: this.fingerprint,
|
224
279
|
uid: shouldReplace ? this._uid : this._uid + 1,
|
225
280
|
destination: destination
|
226
281
|
};
|
282
|
+
|
227
283
|
this._updateInternalState(destination, newState.uid);
|
284
|
+
|
285
|
+
var newUrl;
|
286
|
+
|
287
|
+
if (this._updateUrl && destination && destination.hash) {
|
288
|
+
var baseUrl = document.location.href.split('#')[0];
|
289
|
+
|
290
|
+
if (!baseUrl.startsWith('file://')) {
|
291
|
+
newUrl = "".concat(baseUrl, "#").concat(destination.hash);
|
292
|
+
}
|
293
|
+
}
|
294
|
+
|
228
295
|
if (shouldReplace) {
|
229
|
-
|
296
|
+
if (newUrl) {
|
297
|
+
window.history.replaceState(newState, '', newUrl);
|
298
|
+
} else {
|
299
|
+
window.history.replaceState(newState, '');
|
300
|
+
}
|
230
301
|
} else {
|
231
302
|
this._maxUid = this._uid;
|
232
|
-
|
303
|
+
|
304
|
+
if (newUrl) {
|
305
|
+
window.history.pushState(newState, '', newUrl);
|
306
|
+
} else {
|
307
|
+
window.history.pushState(newState, '');
|
308
|
+
}
|
233
309
|
}
|
234
310
|
}
|
235
311
|
}, {
|
236
|
-
key:
|
312
|
+
key: "_tryPushCurrentPosition",
|
237
313
|
value: function _tryPushCurrentPosition() {
|
238
314
|
var temporary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
239
315
|
|
240
316
|
if (!this._position) {
|
241
317
|
return;
|
242
318
|
}
|
319
|
+
|
243
320
|
var position = this._position;
|
321
|
+
|
244
322
|
if (temporary) {
|
245
|
-
position = (
|
323
|
+
position = Object.assign(Object.create(null), this._position);
|
246
324
|
position.temporary = true;
|
247
325
|
}
|
326
|
+
|
248
327
|
if (!this._destination) {
|
249
328
|
this._pushOrReplaceState(position);
|
329
|
+
|
250
330
|
return;
|
251
331
|
}
|
332
|
+
|
252
333
|
if (this._destination.temporary) {
|
253
334
|
this._pushOrReplaceState(position, true);
|
335
|
+
|
254
336
|
return;
|
255
337
|
}
|
338
|
+
|
256
339
|
if (this._destination.hash === position.hash) {
|
257
340
|
return;
|
258
341
|
}
|
342
|
+
|
259
343
|
if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {
|
260
344
|
return;
|
261
345
|
}
|
346
|
+
|
262
347
|
var forceReplace = false;
|
263
|
-
|
348
|
+
|
349
|
+
if (this._destination.page >= position.first && this._destination.page <= position.page) {
|
264
350
|
if (this._destination.dest || !this._destination.first) {
|
265
351
|
return;
|
266
352
|
}
|
353
|
+
|
267
354
|
forceReplace = true;
|
268
355
|
}
|
356
|
+
|
269
357
|
this._pushOrReplaceState(position, forceReplace);
|
270
358
|
}
|
271
359
|
}, {
|
272
|
-
key:
|
360
|
+
key: "_isValidState",
|
273
361
|
value: function _isValidState(state) {
|
362
|
+
var checkReload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
363
|
+
|
274
364
|
if (!state) {
|
275
365
|
return false;
|
276
366
|
}
|
367
|
+
|
277
368
|
if (state.fingerprint !== this.fingerprint) {
|
278
|
-
|
369
|
+
if (checkReload) {
|
370
|
+
if (typeof state.fingerprint !== 'string' || state.fingerprint.length !== this.fingerprint.length) {
|
371
|
+
return false;
|
372
|
+
}
|
373
|
+
|
374
|
+
var _performance$getEntri = performance.getEntriesByType('navigation'),
|
375
|
+
_performance$getEntri2 = _slicedToArray(_performance$getEntri, 1),
|
376
|
+
perfEntry = _performance$getEntri2[0];
|
377
|
+
|
378
|
+
if (!perfEntry || perfEntry.type !== 'reload') {
|
379
|
+
return false;
|
380
|
+
}
|
381
|
+
} else {
|
382
|
+
return false;
|
383
|
+
}
|
279
384
|
}
|
385
|
+
|
280
386
|
if (!Number.isInteger(state.uid) || state.uid < 0) {
|
281
387
|
return false;
|
282
388
|
}
|
389
|
+
|
283
390
|
if (state.destination === null || _typeof(state.destination) !== 'object') {
|
284
391
|
return false;
|
285
392
|
}
|
393
|
+
|
286
394
|
return true;
|
287
395
|
}
|
288
396
|
}, {
|
289
|
-
key:
|
397
|
+
key: "_updateInternalState",
|
290
398
|
value: function _updateInternalState(destination, uid) {
|
291
399
|
var removeTemporary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
292
400
|
|
@@ -294,55 +402,62 @@ var PDFHistory = function () {
|
|
294
402
|
clearTimeout(this._updateViewareaTimeout);
|
295
403
|
this._updateViewareaTimeout = null;
|
296
404
|
}
|
405
|
+
|
297
406
|
if (removeTemporary && destination && destination.temporary) {
|
298
407
|
delete destination.temporary;
|
299
408
|
}
|
409
|
+
|
300
410
|
this._destination = destination;
|
301
411
|
this._uid = uid;
|
302
412
|
this._numPositionUpdates = 0;
|
303
413
|
}
|
304
414
|
}, {
|
305
|
-
key:
|
306
|
-
value: function _updateViewarea(
|
415
|
+
key: "_updateViewarea",
|
416
|
+
value: function _updateViewarea(_ref4) {
|
307
417
|
var _this3 = this;
|
308
418
|
|
309
|
-
var location =
|
419
|
+
var location = _ref4.location;
|
310
420
|
|
311
421
|
if (this._updateViewareaTimeout) {
|
312
422
|
clearTimeout(this._updateViewareaTimeout);
|
313
423
|
this._updateViewareaTimeout = null;
|
314
424
|
}
|
425
|
+
|
315
426
|
this._position = {
|
316
|
-
hash: this._isViewerInPresentationMode ?
|
427
|
+
hash: this._isViewerInPresentationMode ? "page=".concat(location.pageNumber) : location.pdfOpenParams.substring(1),
|
317
428
|
page: this.linkService.page,
|
318
429
|
first: location.pageNumber,
|
319
430
|
rotation: location.rotation
|
320
431
|
};
|
432
|
+
|
321
433
|
if (this._popStateInProgress) {
|
322
434
|
return;
|
323
435
|
}
|
436
|
+
|
324
437
|
if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {
|
325
438
|
this._numPositionUpdates++;
|
326
439
|
}
|
440
|
+
|
327
441
|
if (UPDATE_VIEWAREA_TIMEOUT > 0) {
|
328
442
|
this._updateViewareaTimeout = setTimeout(function () {
|
329
443
|
if (!_this3._popStateInProgress) {
|
330
444
|
_this3._tryPushCurrentPosition(true);
|
331
445
|
}
|
446
|
+
|
332
447
|
_this3._updateViewareaTimeout = null;
|
333
448
|
}, UPDATE_VIEWAREA_TIMEOUT);
|
334
449
|
}
|
335
450
|
}
|
336
451
|
}, {
|
337
|
-
key:
|
338
|
-
value: function _popState(
|
452
|
+
key: "_popState",
|
453
|
+
value: function _popState(_ref5) {
|
339
454
|
var _this4 = this;
|
340
455
|
|
341
|
-
var state =
|
342
|
-
|
456
|
+
var state = _ref5.state;
|
343
457
|
var newHash = getCurrentHash(),
|
344
458
|
hashChanged = this._currentHash !== newHash;
|
345
459
|
this._currentHash = newHash;
|
460
|
+
|
346
461
|
if (!state || false) {
|
347
462
|
this._uid++;
|
348
463
|
|
@@ -356,12 +471,16 @@ var PDFHistory = function () {
|
|
356
471
|
page: page,
|
357
472
|
rotation: rotation
|
358
473
|
}, true);
|
474
|
+
|
359
475
|
return;
|
360
476
|
}
|
477
|
+
|
361
478
|
if (!this._isValidState(state)) {
|
362
479
|
return;
|
363
480
|
}
|
481
|
+
|
364
482
|
this._popStateInProgress = true;
|
483
|
+
|
365
484
|
if (hashChanged) {
|
366
485
|
this._blockHashChange++;
|
367
486
|
(0, _ui_utils.waitOnEventOrTimeout)({
|
@@ -372,14 +491,19 @@ var PDFHistory = function () {
|
|
372
491
|
_this4._blockHashChange--;
|
373
492
|
});
|
374
493
|
}
|
494
|
+
|
375
495
|
var destination = state.destination;
|
496
|
+
|
376
497
|
this._updateInternalState(destination, state.uid, true);
|
498
|
+
|
377
499
|
if (this._uid > this._maxUid) {
|
378
500
|
this._maxUid = this._uid;
|
379
501
|
}
|
502
|
+
|
380
503
|
if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
|
381
504
|
this.linkService.rotation = destination.rotation;
|
382
505
|
}
|
506
|
+
|
383
507
|
if (destination.dest) {
|
384
508
|
this.linkService.navigateTo(destination.dest);
|
385
509
|
} else if (destination.hash) {
|
@@ -387,31 +511,33 @@ var PDFHistory = function () {
|
|
387
511
|
} else if (destination.page) {
|
388
512
|
this.linkService.page = destination.page;
|
389
513
|
}
|
514
|
+
|
390
515
|
Promise.resolve().then(function () {
|
391
516
|
_this4._popStateInProgress = false;
|
392
517
|
});
|
393
518
|
}
|
394
519
|
}, {
|
395
|
-
key:
|
520
|
+
key: "_bindEvents",
|
396
521
|
value: function _bindEvents() {
|
397
522
|
var _this5 = this;
|
398
523
|
|
399
524
|
var _boundEvents = this._boundEvents,
|
400
525
|
eventBus = this.eventBus;
|
401
|
-
|
402
526
|
_boundEvents.updateViewarea = this._updateViewarea.bind(this);
|
403
527
|
_boundEvents.popState = this._popState.bind(this);
|
528
|
+
|
404
529
|
_boundEvents.pageHide = function (evt) {
|
405
530
|
if (!_this5._destination || _this5._destination.temporary) {
|
406
531
|
_this5._tryPushCurrentPosition();
|
407
532
|
}
|
408
533
|
};
|
534
|
+
|
409
535
|
eventBus.on('updateviewarea', _boundEvents.updateViewarea);
|
410
536
|
window.addEventListener('popstate', _boundEvents.popState);
|
411
537
|
window.addEventListener('pagehide', _boundEvents.pageHide);
|
412
538
|
}
|
413
539
|
}, {
|
414
|
-
key:
|
540
|
+
key: "popStateInProgress",
|
415
541
|
get: function get() {
|
416
542
|
return this.initialized && (this._popStateInProgress || this._blockHashChange > 0);
|
417
543
|
}
|
@@ -420,10 +546,13 @@ var PDFHistory = function () {
|
|
420
546
|
return PDFHistory;
|
421
547
|
}();
|
422
548
|
|
549
|
+
exports.PDFHistory = PDFHistory;
|
550
|
+
|
423
551
|
function isDestHashesEqual(destHash, pushHash) {
|
424
552
|
if (typeof destHash !== 'string' || typeof pushHash !== 'string') {
|
425
553
|
return false;
|
426
554
|
}
|
555
|
+
|
427
556
|
if (destHash === pushHash) {
|
428
557
|
return true;
|
429
558
|
}
|
@@ -434,42 +563,50 @@ function isDestHashesEqual(destHash, pushHash) {
|
|
434
563
|
if (nameddest === pushHash) {
|
435
564
|
return true;
|
436
565
|
}
|
566
|
+
|
437
567
|
return false;
|
438
568
|
}
|
569
|
+
|
439
570
|
function isDestArraysEqual(firstDest, secondDest) {
|
440
571
|
function isEntryEqual(first, second) {
|
441
|
-
if (
|
572
|
+
if (_typeof(first) !== _typeof(second)) {
|
442
573
|
return false;
|
443
574
|
}
|
444
|
-
|
575
|
+
|
576
|
+
if (Array.isArray(first) || Array.isArray(second)) {
|
445
577
|
return false;
|
446
578
|
}
|
447
|
-
|
579
|
+
|
580
|
+
if (first !== null && _typeof(first) === 'object' && second !== null) {
|
448
581
|
if (Object.keys(first).length !== Object.keys(second).length) {
|
449
582
|
return false;
|
450
583
|
}
|
584
|
+
|
451
585
|
for (var key in first) {
|
452
586
|
if (!isEntryEqual(first[key], second[key])) {
|
453
587
|
return false;
|
454
588
|
}
|
455
589
|
}
|
590
|
+
|
456
591
|
return true;
|
457
592
|
}
|
593
|
+
|
458
594
|
return first === second || Number.isNaN(first) && Number.isNaN(second);
|
459
595
|
}
|
460
|
-
|
596
|
+
|
597
|
+
if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
|
461
598
|
return false;
|
462
599
|
}
|
600
|
+
|
463
601
|
if (firstDest.length !== secondDest.length) {
|
464
602
|
return false;
|
465
603
|
}
|
604
|
+
|
466
605
|
for (var i = 0, ii = firstDest.length; i < ii; i++) {
|
467
606
|
if (!isEntryEqual(firstDest[i], secondDest[i])) {
|
468
607
|
return false;
|
469
608
|
}
|
470
609
|
}
|
610
|
+
|
471
611
|
return true;
|
472
|
-
}
|
473
|
-
exports.PDFHistory = PDFHistory;
|
474
|
-
exports.isDestHashesEqual = isDestHashesEqual;
|
475
|
-
exports.isDestArraysEqual = isDestArraysEqual;
|
612
|
+
}
|