@vaadin-component-factory/vcf-pdf-viewer 1.0.1 → 1.0.2

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.
@@ -1,5 +1,5 @@
1
- import { parseQueryString } from './ui_utils.js';
2
-
1
+ import { parseQueryString } from './ui_utils.js';
2
+
3
3
  /* Copyright 2015 Mozilla Foundation
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,7 @@ import { parseQueryString } from './ui_utils.js';
13
13
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
- */
16
+ */
17
17
  /**
18
18
  * @typedef {Object} PDFLinkServiceOptions
19
19
  * @property {EventBus} eventBus - The application event bus.
@@ -25,614 +25,614 @@ import { parseQueryString } from './ui_utils.js';
25
25
  * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,
26
26
  * thus preserving the current zoom level in the viewer, when navigating
27
27
  * to internal destinations. The default value is `false`.
28
- */
29
-
28
+ */
29
+
30
30
  /**
31
31
  * Performs navigation functions inside PDF, such as opening specified page,
32
32
  * or destination.
33
33
  * @implements {IPDFLinkService}
34
- */
35
-
36
- class PDFLinkService {
34
+ */
35
+
36
+ class PDFLinkService {
37
37
  /**
38
38
  * @param {PDFLinkServiceOptions} options
39
- */
40
- constructor({
41
- eventBus,
42
- externalLinkTarget = null,
43
- externalLinkRel = null,
44
- ignoreDestinationZoom = false
45
- } = {}) {
46
- this.eventBus = eventBus;
47
- this.externalLinkTarget = externalLinkTarget;
48
- this.externalLinkRel = externalLinkRel;
49
- this.externalLinkEnabled = true;
50
- this._ignoreDestinationZoom = ignoreDestinationZoom;
51
- this.baseUrl = null;
52
- this.pdfDocument = null;
53
- this.pdfViewer = null;
54
- this.pdfHistory = null;
55
- this._pagesRefCache = null;
56
- }
57
-
58
- setDocument(pdfDocument, baseUrl = null) {
59
- this.baseUrl = baseUrl;
60
- this.pdfDocument = pdfDocument;
61
- this._pagesRefCache = Object.create(null);
62
- }
63
-
64
- setViewer(pdfViewer) {
65
- this.pdfViewer = pdfViewer;
66
- }
67
-
68
- setHistory(pdfHistory) {
69
- this.pdfHistory = pdfHistory;
70
- }
39
+ */
40
+ constructor({
41
+ eventBus,
42
+ externalLinkTarget = null,
43
+ externalLinkRel = null,
44
+ ignoreDestinationZoom = false
45
+ } = {}) {
46
+ this.eventBus = eventBus;
47
+ this.externalLinkTarget = externalLinkTarget;
48
+ this.externalLinkRel = externalLinkRel;
49
+ this.externalLinkEnabled = true;
50
+ this._ignoreDestinationZoom = ignoreDestinationZoom;
51
+ this.baseUrl = null;
52
+ this.pdfDocument = null;
53
+ this.pdfViewer = null;
54
+ this.pdfHistory = null;
55
+ this._pagesRefCache = null;
56
+ }
57
+
58
+ setDocument(pdfDocument, baseUrl = null) {
59
+ this.baseUrl = baseUrl;
60
+ this.pdfDocument = pdfDocument;
61
+ this._pagesRefCache = Object.create(null);
62
+ }
63
+
64
+ setViewer(pdfViewer) {
65
+ this.pdfViewer = pdfViewer;
66
+ }
67
+
68
+ setHistory(pdfHistory) {
69
+ this.pdfHistory = pdfHistory;
70
+ }
71
71
  /**
72
72
  * @type {number}
73
- */
74
-
75
-
76
- get pagesCount() {
77
- return this.pdfDocument ? this.pdfDocument.numPages : 0;
78
- }
73
+ */
74
+
75
+
76
+ get pagesCount() {
77
+ return this.pdfDocument ? this.pdfDocument.numPages : 0;
78
+ }
79
79
  /**
80
80
  * @type {number}
81
- */
82
-
83
-
84
- get page() {
85
- return this.pdfViewer.currentPageNumber;
86
- }
81
+ */
82
+
83
+
84
+ get page() {
85
+ return this.pdfViewer.currentPageNumber;
86
+ }
87
87
  /**
88
88
  * @param {number} value
89
- */
90
-
91
-
92
- set page(value) {
93
- this.pdfViewer.currentPageNumber = value;
94
- }
89
+ */
90
+
91
+
92
+ set page(value) {
93
+ this.pdfViewer.currentPageNumber = value;
94
+ }
95
95
  /**
96
96
  * @type {number}
97
- */
98
-
99
-
100
- get rotation() {
101
- return this.pdfViewer.pagesRotation;
102
- }
97
+ */
98
+
99
+
100
+ get rotation() {
101
+ return this.pdfViewer.pagesRotation;
102
+ }
103
103
  /**
104
104
  * @param {number} value
105
- */
106
-
107
-
108
- set rotation(value) {
109
- this.pdfViewer.pagesRotation = value;
110
- }
105
+ */
106
+
107
+
108
+ set rotation(value) {
109
+ this.pdfViewer.pagesRotation = value;
110
+ }
111
111
  /**
112
112
  * @private
113
- */
114
-
115
-
116
- _goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
117
- // Dest array looks like that: <page-ref> </XYZ|/FitXXX> <args..>
118
- const destRef = explicitDest[0];
119
- let pageNumber;
120
-
121
- if (typeof destRef === "object" && destRef !== null) {
122
- pageNumber = this._cachedPageNumber(destRef);
123
-
124
- if (pageNumber === null) {
125
- // Fetch the page reference if it's not yet available. This could
126
- // only occur during loading, before all pages have been resolved.
127
- this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
128
- this.cachePageRef(pageIndex + 1, destRef);
129
-
130
- this._goToDestinationHelper(rawDest, namedDest, explicitDest);
131
- }).catch(() => {
132
- console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`);
133
- });
134
- return;
135
- }
136
- } else if (Number.isInteger(destRef)) {
137
- pageNumber = destRef + 1;
138
- } else {
139
- console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`);
140
- return;
141
- }
142
-
143
- if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
144
- console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
145
- return;
146
- }
147
-
148
- if (this.pdfHistory) {
149
- // Update the browser history before scrolling the new destination into
150
- // view, to be able to accurately capture the current document position.
151
- this.pdfHistory.pushCurrentPosition();
152
- this.pdfHistory.push({
153
- namedDest,
154
- explicitDest,
155
- pageNumber
156
- });
157
- }
158
-
159
- this.pdfViewer.scrollPageIntoView({
160
- pageNumber,
161
- destArray: explicitDest,
162
- ignoreDestinationZoom: this._ignoreDestinationZoom
163
- });
164
- }
113
+ */
114
+
115
+
116
+ _goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
117
+ // Dest array looks like that: <page-ref> </XYZ|/FitXXX> <args..>
118
+ const destRef = explicitDest[0];
119
+ let pageNumber;
120
+
121
+ if (typeof destRef === "object" && destRef !== null) {
122
+ pageNumber = this._cachedPageNumber(destRef);
123
+
124
+ if (pageNumber === null) {
125
+ // Fetch the page reference if it's not yet available. This could
126
+ // only occur during loading, before all pages have been resolved.
127
+ this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
128
+ this.cachePageRef(pageIndex + 1, destRef);
129
+
130
+ this._goToDestinationHelper(rawDest, namedDest, explicitDest);
131
+ }).catch(() => {
132
+ console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`);
133
+ });
134
+ return;
135
+ }
136
+ } else if (Number.isInteger(destRef)) {
137
+ pageNumber = destRef + 1;
138
+ } else {
139
+ console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`);
140
+ return;
141
+ }
142
+
143
+ if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
144
+ console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
145
+ return;
146
+ }
147
+
148
+ if (this.pdfHistory) {
149
+ // Update the browser history before scrolling the new destination into
150
+ // view, to be able to accurately capture the current document position.
151
+ this.pdfHistory.pushCurrentPosition();
152
+ this.pdfHistory.push({
153
+ namedDest,
154
+ explicitDest,
155
+ pageNumber
156
+ });
157
+ }
158
+
159
+ this.pdfViewer.scrollPageIntoView({
160
+ pageNumber,
161
+ destArray: explicitDest,
162
+ ignoreDestinationZoom: this._ignoreDestinationZoom
163
+ });
164
+ }
165
165
  /**
166
166
  * This method will, when available, also update the browser history.
167
167
  *
168
168
  * @param {string|Array} dest - The named, or explicit, PDF destination.
169
- */
170
-
171
-
172
- async goToDestination(dest) {
173
- if (!this.pdfDocument) {
174
- return;
175
- }
176
-
177
- let namedDest, explicitDest;
178
-
179
- if (typeof dest === "string") {
180
- namedDest = dest;
181
- explicitDest = await this.pdfDocument.getDestination(dest);
182
- } else {
183
- namedDest = null;
184
- explicitDest = await dest;
185
- }
186
-
187
- if (!Array.isArray(explicitDest)) {
188
- console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
189
- return;
190
- }
191
-
192
- this._goToDestinationHelper(dest, namedDest, explicitDest);
193
- }
169
+ */
170
+
171
+
172
+ async goToDestination(dest) {
173
+ if (!this.pdfDocument) {
174
+ return;
175
+ }
176
+
177
+ let namedDest, explicitDest;
178
+
179
+ if (typeof dest === "string") {
180
+ namedDest = dest;
181
+ explicitDest = await this.pdfDocument.getDestination(dest);
182
+ } else {
183
+ namedDest = null;
184
+ explicitDest = await dest;
185
+ }
186
+
187
+ if (!Array.isArray(explicitDest)) {
188
+ console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
189
+ return;
190
+ }
191
+
192
+ this._goToDestinationHelper(dest, namedDest, explicitDest);
193
+ }
194
194
  /**
195
195
  * This method will, when available, also update the browser history.
196
196
  *
197
197
  * @param {number|string} val - The page number, or page label.
198
- */
199
-
200
-
201
- goToPage(val) {
202
- if (!this.pdfDocument) {
203
- return;
204
- }
205
-
206
- const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
207
-
208
- if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
209
- console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
210
- return;
211
- }
212
-
213
- if (this.pdfHistory) {
214
- // Update the browser history before scrolling the new page into view,
215
- // to be able to accurately capture the current document position.
216
- this.pdfHistory.pushCurrentPosition();
217
- this.pdfHistory.pushPage(pageNumber);
218
- }
219
-
220
- this.pdfViewer.scrollPageIntoView({
221
- pageNumber
222
- });
223
- }
198
+ */
199
+
200
+
201
+ goToPage(val) {
202
+ if (!this.pdfDocument) {
203
+ return;
204
+ }
205
+
206
+ const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
207
+
208
+ if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
209
+ console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
210
+ return;
211
+ }
212
+
213
+ if (this.pdfHistory) {
214
+ // Update the browser history before scrolling the new page into view,
215
+ // to be able to accurately capture the current document position.
216
+ this.pdfHistory.pushCurrentPosition();
217
+ this.pdfHistory.pushPage(pageNumber);
218
+ }
219
+
220
+ this.pdfViewer.scrollPageIntoView({
221
+ pageNumber
222
+ });
223
+ }
224
224
  /**
225
225
  * @param {string|Array} dest - The PDF destination object.
226
226
  * @returns {string} The hyperlink to the PDF object.
227
- */
228
-
229
-
230
- getDestinationHash(dest) {
231
- if (typeof dest === "string") {
232
- if (dest.length > 0) {
233
- return this.getAnchorUrl("#" + escape(dest));
234
- }
235
- } else if (Array.isArray(dest)) {
236
- const str = JSON.stringify(dest);
237
-
238
- if (str.length > 0) {
239
- return this.getAnchorUrl("#" + escape(str));
240
- }
241
- }
242
-
243
- return this.getAnchorUrl("");
244
- }
227
+ */
228
+
229
+
230
+ getDestinationHash(dest) {
231
+ if (typeof dest === "string") {
232
+ if (dest.length > 0) {
233
+ return this.getAnchorUrl("#" + escape(dest));
234
+ }
235
+ } else if (Array.isArray(dest)) {
236
+ const str = JSON.stringify(dest);
237
+
238
+ if (str.length > 0) {
239
+ return this.getAnchorUrl("#" + escape(str));
240
+ }
241
+ }
242
+
243
+ return this.getAnchorUrl("");
244
+ }
245
245
  /**
246
246
  * Prefix the full url on anchor links to make sure that links are resolved
247
247
  * relative to the current URL instead of the one defined in <base href>.
248
248
  * @param {string} anchor - The anchor hash, including the #.
249
249
  * @returns {string} The hyperlink to the PDF object.
250
- */
251
-
252
-
253
- getAnchorUrl(anchor) {
254
- return (this.baseUrl || "") + anchor;
255
- }
250
+ */
251
+
252
+
253
+ getAnchorUrl(anchor) {
254
+ return (this.baseUrl || "") + anchor;
255
+ }
256
256
  /**
257
257
  * @param {string} hash
258
- */
259
-
260
-
261
- setHash(hash) {
262
- if (!this.pdfDocument) {
263
- return;
264
- }
265
-
266
- let pageNumber, dest;
267
-
268
- if (hash.includes("=")) {
269
- const params = parseQueryString(hash);
270
-
271
- if ("search" in params) {
272
- this.eventBus.dispatch("findfromurlhash", {
273
- source: this,
274
- query: params.search.replace(/"/g, ""),
275
- phraseSearch: params.phrase === "true"
276
- });
277
- } // borrowing syntax from "Parameters for Opening PDF Files"
278
-
279
-
280
- if ("page" in params) {
281
- pageNumber = params.page | 0 || 1;
282
- }
283
-
284
- if ("zoom" in params) {
285
- // Build the destination array.
286
- const zoomArgs = params.zoom.split(","); // scale,left,top
287
-
288
- const zoomArg = zoomArgs[0];
289
- const zoomArgNumber = parseFloat(zoomArg);
290
-
291
- if (!zoomArg.includes("Fit")) {
292
- // If the zoomArg is a number, it has to get divided by 100. If it's
293
- // a string, it should stay as it is.
294
- dest = [null, {
295
- name: "XYZ"
296
- }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
297
- } else {
298
- if (zoomArg === "Fit" || zoomArg === "FitB") {
299
- dest = [null, {
300
- name: zoomArg
301
- }];
302
- } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") {
303
- dest = [null, {
304
- name: zoomArg
305
- }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
306
- } else if (zoomArg === "FitR") {
307
- if (zoomArgs.length !== 5) {
308
- console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
309
- } else {
310
- dest = [null, {
311
- name: zoomArg
312
- }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
313
- }
314
- } else {
315
- console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value.");
316
- }
317
- }
318
- }
319
-
320
- if (dest) {
321
- this.pdfViewer.scrollPageIntoView({
322
- pageNumber: pageNumber || this.page,
323
- destArray: dest,
324
- allowNegativeOffset: true
325
- });
326
- } else if (pageNumber) {
327
- this.page = pageNumber; // simple page
328
- }
329
-
330
- if ("pagemode" in params) {
331
- this.eventBus.dispatch("pagemode", {
332
- source: this,
333
- mode: params.pagemode
334
- });
335
- } // Ensure that this parameter is *always* handled last, in order to
336
- // guarantee that it won't be overridden (e.g. by the "page" parameter).
337
-
338
-
339
- if ("nameddest" in params) {
340
- this.goToDestination(params.nameddest);
341
- }
342
- } else {
343
- // Named (or explicit) destination.
344
- dest = unescape(hash);
345
-
346
- try {
347
- dest = JSON.parse(dest);
348
-
349
- if (!Array.isArray(dest)) {
350
- // Avoid incorrectly rejecting a valid named destination, such as
351
- // e.g. "4.3" or "true", because `JSON.parse` converted its type.
352
- dest = dest.toString();
353
- }
354
- } catch (ex) {}
355
-
356
- if (typeof dest === "string" || isValidExplicitDestination(dest)) {
357
- this.goToDestination(dest);
358
- return;
359
- }
360
-
361
- console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination.");
362
- }
363
- }
258
+ */
259
+
260
+
261
+ setHash(hash) {
262
+ if (!this.pdfDocument) {
263
+ return;
264
+ }
265
+
266
+ let pageNumber, dest;
267
+
268
+ if (hash.includes("=")) {
269
+ const params = parseQueryString(hash);
270
+
271
+ if ("search" in params) {
272
+ this.eventBus.dispatch("findfromurlhash", {
273
+ source: this,
274
+ query: params.search.replace(/"/g, ""),
275
+ phraseSearch: params.phrase === "true"
276
+ });
277
+ } // borrowing syntax from "Parameters for Opening PDF Files"
278
+
279
+
280
+ if ("page" in params) {
281
+ pageNumber = params.page | 0 || 1;
282
+ }
283
+
284
+ if ("zoom" in params) {
285
+ // Build the destination array.
286
+ const zoomArgs = params.zoom.split(","); // scale,left,top
287
+
288
+ const zoomArg = zoomArgs[0];
289
+ const zoomArgNumber = parseFloat(zoomArg);
290
+
291
+ if (!zoomArg.includes("Fit")) {
292
+ // If the zoomArg is a number, it has to get divided by 100. If it's
293
+ // a string, it should stay as it is.
294
+ dest = [null, {
295
+ name: "XYZ"
296
+ }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
297
+ } else {
298
+ if (zoomArg === "Fit" || zoomArg === "FitB") {
299
+ dest = [null, {
300
+ name: zoomArg
301
+ }];
302
+ } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") {
303
+ dest = [null, {
304
+ name: zoomArg
305
+ }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
306
+ } else if (zoomArg === "FitR") {
307
+ if (zoomArgs.length !== 5) {
308
+ console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
309
+ } else {
310
+ dest = [null, {
311
+ name: zoomArg
312
+ }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
313
+ }
314
+ } else {
315
+ console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value.");
316
+ }
317
+ }
318
+ }
319
+
320
+ if (dest) {
321
+ this.pdfViewer.scrollPageIntoView({
322
+ pageNumber: pageNumber || this.page,
323
+ destArray: dest,
324
+ allowNegativeOffset: true
325
+ });
326
+ } else if (pageNumber) {
327
+ this.page = pageNumber; // simple page
328
+ }
329
+
330
+ if ("pagemode" in params) {
331
+ this.eventBus.dispatch("pagemode", {
332
+ source: this,
333
+ mode: params.pagemode
334
+ });
335
+ } // Ensure that this parameter is *always* handled last, in order to
336
+ // guarantee that it won't be overridden (e.g. by the "page" parameter).
337
+
338
+
339
+ if ("nameddest" in params) {
340
+ this.goToDestination(params.nameddest);
341
+ }
342
+ } else {
343
+ // Named (or explicit) destination.
344
+ dest = unescape(hash);
345
+
346
+ try {
347
+ dest = JSON.parse(dest);
348
+
349
+ if (!Array.isArray(dest)) {
350
+ // Avoid incorrectly rejecting a valid named destination, such as
351
+ // e.g. "4.3" or "true", because `JSON.parse` converted its type.
352
+ dest = dest.toString();
353
+ }
354
+ } catch (ex) {}
355
+
356
+ if (typeof dest === "string" || isValidExplicitDestination(dest)) {
357
+ this.goToDestination(dest);
358
+ return;
359
+ }
360
+
361
+ console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination.");
362
+ }
363
+ }
364
364
  /**
365
365
  * @param {string} action
366
- */
367
-
368
-
369
- executeNamedAction(action) {
370
- // See PDF reference, table 8.45 - Named action
371
- switch (action) {
372
- case "GoBack":
373
- if (this.pdfHistory) {
374
- this.pdfHistory.back();
375
- }
376
-
377
- break;
378
-
379
- case "GoForward":
380
- if (this.pdfHistory) {
381
- this.pdfHistory.forward();
382
- }
383
-
384
- break;
385
-
386
- case "NextPage":
387
- this.pdfViewer.nextPage();
388
- break;
389
-
390
- case "PrevPage":
391
- this.pdfViewer.previousPage();
392
- break;
393
-
394
- case "LastPage":
395
- this.page = this.pagesCount;
396
- break;
397
-
398
- case "FirstPage":
399
- this.page = 1;
400
- break;
401
- // No action according to spec
402
- }
403
-
404
- this.eventBus.dispatch("namedaction", {
405
- source: this,
406
- action
407
- });
408
- }
366
+ */
367
+
368
+
369
+ executeNamedAction(action) {
370
+ // See PDF reference, table 8.45 - Named action
371
+ switch (action) {
372
+ case "GoBack":
373
+ if (this.pdfHistory) {
374
+ this.pdfHistory.back();
375
+ }
376
+
377
+ break;
378
+
379
+ case "GoForward":
380
+ if (this.pdfHistory) {
381
+ this.pdfHistory.forward();
382
+ }
383
+
384
+ break;
385
+
386
+ case "NextPage":
387
+ this.pdfViewer.nextPage();
388
+ break;
389
+
390
+ case "PrevPage":
391
+ this.pdfViewer.previousPage();
392
+ break;
393
+
394
+ case "LastPage":
395
+ this.page = this.pagesCount;
396
+ break;
397
+
398
+ case "FirstPage":
399
+ this.page = 1;
400
+ break;
401
+ // No action according to spec
402
+ }
403
+
404
+ this.eventBus.dispatch("namedaction", {
405
+ source: this,
406
+ action
407
+ });
408
+ }
409
409
  /**
410
410
  * @param {number} pageNum - page number.
411
411
  * @param {Object} pageRef - reference to the page.
412
- */
413
-
414
-
415
- cachePageRef(pageNum, pageRef) {
416
- if (!pageRef) {
417
- return;
418
- }
419
-
420
- const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
421
- this._pagesRefCache[refStr] = pageNum;
422
- }
412
+ */
413
+
414
+
415
+ cachePageRef(pageNum, pageRef) {
416
+ if (!pageRef) {
417
+ return;
418
+ }
419
+
420
+ const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
421
+ this._pagesRefCache[refStr] = pageNum;
422
+ }
423
423
  /**
424
424
  * @private
425
- */
426
-
427
-
428
- _cachedPageNumber(pageRef) {
429
- var _this$_pagesRefCache;
430
-
431
- const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
432
- return ((_this$_pagesRefCache = this._pagesRefCache) === null || _this$_pagesRefCache === void 0 ? void 0 : _this$_pagesRefCache[refStr]) || null;
433
- }
425
+ */
426
+
427
+
428
+ _cachedPageNumber(pageRef) {
429
+ var _this$_pagesRefCache;
430
+
431
+ const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
432
+ return ((_this$_pagesRefCache = this._pagesRefCache) === null || _this$_pagesRefCache === void 0 ? void 0 : _this$_pagesRefCache[refStr]) || null;
433
+ }
434
434
  /**
435
435
  * @param {number} pageNumber
436
- */
437
-
438
-
439
- isPageVisible(pageNumber) {
440
- return this.pdfViewer.isPageVisible(pageNumber);
441
- }
436
+ */
437
+
438
+
439
+ isPageVisible(pageNumber) {
440
+ return this.pdfViewer.isPageVisible(pageNumber);
441
+ }
442
442
  /**
443
443
  * @param {number} pageNumber
444
- */
445
-
446
-
447
- isPageCached(pageNumber) {
448
- return this.pdfViewer.isPageCached(pageNumber);
449
- }
450
-
451
- }
452
-
453
- function isValidExplicitDestination(dest) {
454
- if (!Array.isArray(dest)) {
455
- return false;
456
- }
457
-
458
- const destLength = dest.length;
459
-
460
- if (destLength < 2) {
461
- return false;
462
- }
463
-
464
- const page = dest[0];
465
-
466
- if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
467
- return false;
468
- }
469
-
470
- const zoom = dest[1];
471
-
472
- if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
473
- return false;
474
- }
475
-
476
- let allowNull = true;
477
-
478
- switch (zoom.name) {
479
- case "XYZ":
480
- if (destLength !== 5) {
481
- return false;
482
- }
483
-
484
- break;
485
-
486
- case "Fit":
487
- case "FitB":
488
- return destLength === 2;
489
-
490
- case "FitH":
491
- case "FitBH":
492
- case "FitV":
493
- case "FitBV":
494
- if (destLength !== 3) {
495
- return false;
496
- }
497
-
498
- break;
499
-
500
- case "FitR":
501
- if (destLength !== 6) {
502
- return false;
503
- }
504
-
505
- allowNull = false;
506
- break;
507
-
508
- default:
509
- return false;
510
- }
511
-
512
- for (let i = 2; i < destLength; i++) {
513
- const param = dest[i];
514
-
515
- if (!(typeof param === "number" || allowNull && param === null)) {
516
- return false;
517
- }
518
- }
519
-
520
- return true;
521
- }
444
+ */
445
+
446
+
447
+ isPageCached(pageNumber) {
448
+ return this.pdfViewer.isPageCached(pageNumber);
449
+ }
450
+
451
+ }
452
+
453
+ function isValidExplicitDestination(dest) {
454
+ if (!Array.isArray(dest)) {
455
+ return false;
456
+ }
457
+
458
+ const destLength = dest.length;
459
+
460
+ if (destLength < 2) {
461
+ return false;
462
+ }
463
+
464
+ const page = dest[0];
465
+
466
+ if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
467
+ return false;
468
+ }
469
+
470
+ const zoom = dest[1];
471
+
472
+ if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
473
+ return false;
474
+ }
475
+
476
+ let allowNull = true;
477
+
478
+ switch (zoom.name) {
479
+ case "XYZ":
480
+ if (destLength !== 5) {
481
+ return false;
482
+ }
483
+
484
+ break;
485
+
486
+ case "Fit":
487
+ case "FitB":
488
+ return destLength === 2;
489
+
490
+ case "FitH":
491
+ case "FitBH":
492
+ case "FitV":
493
+ case "FitBV":
494
+ if (destLength !== 3) {
495
+ return false;
496
+ }
497
+
498
+ break;
499
+
500
+ case "FitR":
501
+ if (destLength !== 6) {
502
+ return false;
503
+ }
504
+
505
+ allowNull = false;
506
+ break;
507
+
508
+ default:
509
+ return false;
510
+ }
511
+
512
+ for (let i = 2; i < destLength; i++) {
513
+ const param = dest[i];
514
+
515
+ if (!(typeof param === "number" || allowNull && param === null)) {
516
+ return false;
517
+ }
518
+ }
519
+
520
+ return true;
521
+ }
522
522
  /**
523
523
  * @implements {IPDFLinkService}
524
- */
525
-
526
-
527
- class SimpleLinkService {
528
- constructor() {
529
- this.externalLinkTarget = null;
530
- this.externalLinkRel = null;
531
- this.externalLinkEnabled = true;
532
- this._ignoreDestinationZoom = false;
533
- }
524
+ */
525
+
526
+
527
+ class SimpleLinkService {
528
+ constructor() {
529
+ this.externalLinkTarget = null;
530
+ this.externalLinkRel = null;
531
+ this.externalLinkEnabled = true;
532
+ this._ignoreDestinationZoom = false;
533
+ }
534
534
  /**
535
535
  * @type {number}
536
- */
537
-
538
-
539
- get pagesCount() {
540
- return 0;
541
- }
536
+ */
537
+
538
+
539
+ get pagesCount() {
540
+ return 0;
541
+ }
542
542
  /**
543
543
  * @type {number}
544
- */
545
-
546
-
547
- get page() {
548
- return 0;
549
- }
544
+ */
545
+
546
+
547
+ get page() {
548
+ return 0;
549
+ }
550
550
  /**
551
551
  * @param {number} value
552
- */
553
-
554
-
555
- set page(value) {}
552
+ */
553
+
554
+
555
+ set page(value) {}
556
556
  /**
557
557
  * @type {number}
558
- */
559
-
560
-
561
- get rotation() {
562
- return 0;
563
- }
558
+ */
559
+
560
+
561
+ get rotation() {
562
+ return 0;
563
+ }
564
564
  /**
565
565
  * @param {number} value
566
- */
567
-
568
-
569
- set rotation(value) {}
566
+ */
567
+
568
+
569
+ set rotation(value) {}
570
570
  /**
571
571
  * @param {string|Array} dest - The named, or explicit, PDF destination.
572
- */
573
-
574
-
575
- async goToDestination(dest) {}
572
+ */
573
+
574
+
575
+ async goToDestination(dest) {}
576
576
  /**
577
577
  * @param {number|string} val - The page number, or page label.
578
- */
579
-
580
-
581
- goToPage(val) {}
578
+ */
579
+
580
+
581
+ goToPage(val) {}
582
582
  /**
583
583
  * @param dest - The PDF destination object.
584
584
  * @returns {string} The hyperlink to the PDF object.
585
- */
586
-
587
-
588
- getDestinationHash(dest) {
589
- return "#";
590
- }
585
+ */
586
+
587
+
588
+ getDestinationHash(dest) {
589
+ return "#";
590
+ }
591
591
  /**
592
592
  * @param hash - The PDF parameters/hash.
593
593
  * @returns {string} The hyperlink to the PDF object.
594
- */
595
-
596
-
597
- getAnchorUrl(hash) {
598
- return "#";
599
- }
594
+ */
595
+
596
+
597
+ getAnchorUrl(hash) {
598
+ return "#";
599
+ }
600
600
  /**
601
601
  * @param {string} hash
602
- */
603
-
604
-
605
- setHash(hash) {}
602
+ */
603
+
604
+
605
+ setHash(hash) {}
606
606
  /**
607
607
  * @param {string} action
608
- */
609
-
610
-
611
- executeNamedAction(action) {}
608
+ */
609
+
610
+
611
+ executeNamedAction(action) {}
612
612
  /**
613
613
  * @param {number} pageNum - page number.
614
614
  * @param {Object} pageRef - reference to the page.
615
- */
616
-
617
-
618
- cachePageRef(pageNum, pageRef) {}
615
+ */
616
+
617
+
618
+ cachePageRef(pageNum, pageRef) {}
619
619
  /**
620
620
  * @param {number} pageNumber
621
- */
622
-
623
-
624
- isPageVisible(pageNumber) {
625
- return true;
626
- }
621
+ */
622
+
623
+
624
+ isPageVisible(pageNumber) {
625
+ return true;
626
+ }
627
627
  /**
628
628
  * @param {number} pageNumber
629
- */
630
-
631
-
632
- isPageCached(pageNumber) {
633
- return true;
634
- }
635
-
636
- }
637
-
638
- export { PDFLinkService, SimpleLinkService };
629
+ */
630
+
631
+
632
+ isPageCached(pageNumber) {
633
+ return true;
634
+ }
635
+
636
+ }
637
+
638
+ export { PDFLinkService, SimpleLinkService };