ng2-pdfjs-viewer 15.0.0 → 16.0.4

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,3 +1,3 @@
1
- export * from './src/ng2-pdfjs-viewer.component';
2
- export * from './src/ng2-pdfjs-viewer.module';
1
+ export * from './src/ng2-pdfjs-viewer.component';
2
+ export * from './src/ng2-pdfjs-viewer.module';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9uZzItcGRmanMtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL25nMi1wZGZqcy12aWV3ZXIubW9kdWxlJztcclxuIl19
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXBkZmpzLXZpZXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL25nMi1wZGZqcy12aWV3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,413 @@
1
+ import { Component, Input, Output, ViewChild, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ class PdfJsViewerComponent {
4
+ iframe;
5
+ static lastID = 0;
6
+ viewerId = `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;
7
+ onBeforePrint = new EventEmitter();
8
+ onAfterPrint = new EventEmitter();
9
+ onDocumentLoad = new EventEmitter();
10
+ onPageChange = new EventEmitter();
11
+ viewerFolder;
12
+ externalWindow = false;
13
+ target = '_blank';
14
+ showSpinner = true;
15
+ downloadFileName;
16
+ openFile = true;
17
+ download = true;
18
+ startDownload;
19
+ viewBookmark = true;
20
+ print = true;
21
+ startPrint;
22
+ fullScreen = true;
23
+ //@Input() public showFullScreen: boolean;
24
+ find = true;
25
+ zoom;
26
+ nameddest;
27
+ pagemode;
28
+ lastPage;
29
+ rotatecw;
30
+ rotateccw;
31
+ cursor;
32
+ scroll;
33
+ spread;
34
+ locale;
35
+ useOnlyCssZoom = false;
36
+ errorOverride = false;
37
+ errorAppend = true;
38
+ errorMessage;
39
+ diagnosticLogs = true;
40
+ externalWindowOptions;
41
+ viewerTab;
42
+ _src;
43
+ _page;
44
+ set page(_page) {
45
+ this._page = _page;
46
+ if (this.PDFViewerApplication) {
47
+ this.PDFViewerApplication.page = this._page;
48
+ }
49
+ else {
50
+ if (this.diagnosticLogs)
51
+ console.warn("Document is not loaded yet!!!. Try to set page# after full load. Ignore this warning if you are not setting page# using '.' notation. (E.g. pdfViewer.page = 5;)");
52
+ }
53
+ }
54
+ get page() {
55
+ if (this.PDFViewerApplication) {
56
+ return this.PDFViewerApplication.page;
57
+ }
58
+ else {
59
+ if (this.diagnosticLogs)
60
+ console.warn("Document is not loaded yet!!!. Try to retrieve page# after full load.");
61
+ }
62
+ }
63
+ set pdfSrc(_src) {
64
+ this._src = _src;
65
+ }
66
+ get pdfSrc() {
67
+ return this._src;
68
+ }
69
+ get PDFViewerApplicationOptions() {
70
+ let pdfViewerOptions = null;
71
+ if (this.externalWindow) {
72
+ if (this.viewerTab) {
73
+ pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;
74
+ }
75
+ }
76
+ else {
77
+ if (this.iframe.nativeElement.contentWindow) {
78
+ pdfViewerOptions = this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;
79
+ }
80
+ }
81
+ return pdfViewerOptions;
82
+ }
83
+ get PDFViewerApplication() {
84
+ let pdfViewer = null;
85
+ if (this.externalWindow) {
86
+ if (this.viewerTab) {
87
+ pdfViewer = this.viewerTab.PDFViewerApplication;
88
+ }
89
+ }
90
+ else {
91
+ if (this.iframe.nativeElement.contentWindow) {
92
+ pdfViewer = this.iframe.nativeElement.contentWindow.PDFViewerApplication;
93
+ }
94
+ }
95
+ return pdfViewer;
96
+ }
97
+ receiveMessage(viewerEvent) {
98
+ if (viewerEvent.data && viewerEvent.data.viewerId && viewerEvent.data.event) {
99
+ let viewerId = viewerEvent.data.viewerId;
100
+ let event = viewerEvent.data.event;
101
+ let param = viewerEvent.data.param;
102
+ if (this.viewerId == viewerId) {
103
+ if (this.onBeforePrint && event == "beforePrint") {
104
+ this.onBeforePrint.emit();
105
+ }
106
+ else if (this.onAfterPrint && event == "afterPrint") {
107
+ this.onAfterPrint.emit();
108
+ }
109
+ else if (this.onDocumentLoad && event == "pagesLoaded") {
110
+ this.onDocumentLoad.emit(param);
111
+ }
112
+ else if (this.onPageChange && event == "pageChange") {
113
+ this.onPageChange.emit(param);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ ngOnInit() {
119
+ window.addEventListener("message", this.receiveMessage.bind(this), false);
120
+ if (!this.externalWindow) { // Load pdf for embedded views
121
+ this.loadPdf();
122
+ }
123
+ }
124
+ refresh() {
125
+ this.loadPdf();
126
+ }
127
+ relaseUrl; // Avoid memory leask with `URL.createObjectURL`
128
+ loadPdf() {
129
+ if (!this._src) {
130
+ return;
131
+ }
132
+ // console.log(`Tab is - ${this.viewerTab}`);
133
+ // if (this.viewerTab) {
134
+ // console.log(`Status of window - ${this.viewerTab.closed}`);
135
+ // }
136
+ if (this.externalWindow && (typeof this.viewerTab === 'undefined' || this.viewerTab.closed)) {
137
+ this.viewerTab = window.open('', this.target, this.externalWindowOptions || '');
138
+ if (this.viewerTab == null) {
139
+ if (this.diagnosticLogs)
140
+ console.error("ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.");
141
+ return;
142
+ }
143
+ if (this.showSpinner) {
144
+ this.viewerTab.document.write(`
145
+ <style>
146
+ .loader {
147
+ position: fixed;
148
+ left: 40%;
149
+ top: 40%;
150
+ border: 16px solid #f3f3f3;
151
+ border-radius: 50%;
152
+ border-top: 16px solid #3498db;
153
+ width: 120px;
154
+ height: 120px;
155
+ animation: spin 2s linear infinite;
156
+ }
157
+ @keyframes spin {
158
+ 0% {
159
+ transform: rotate(0deg);
160
+ }
161
+ 100% {
162
+ transform: rotate(360deg);
163
+ }
164
+ }
165
+ </style>
166
+ <div class="loader"></div>
167
+ `);
168
+ }
169
+ }
170
+ this.relaseUrl?.();
171
+ let fileUrl;
172
+ //if (typeof this.src === "string") {
173
+ // fileUrl = this.src;
174
+ //}
175
+ if (this._src instanceof Blob) {
176
+ const url = URL.createObjectURL(this._src);
177
+ fileUrl = encodeURIComponent(url);
178
+ this.relaseUrl = () => URL.revokeObjectURL(url);
179
+ }
180
+ else if (this._src instanceof Uint8Array) {
181
+ let blob = new Blob([this._src], { type: "application/pdf" });
182
+ const url = URL.createObjectURL(blob);
183
+ this.relaseUrl = () => URL.revokeObjectURL(url);
184
+ fileUrl = encodeURIComponent(url);
185
+ }
186
+ else {
187
+ fileUrl = this._src;
188
+ }
189
+ let viewerUrl;
190
+ if (this.viewerFolder) {
191
+ viewerUrl = `${this.viewerFolder}/web/viewer.html`;
192
+ }
193
+ else {
194
+ viewerUrl = `assets/pdfjs/web/viewer.html`;
195
+ }
196
+ viewerUrl += `?file=${fileUrl}`;
197
+ if (typeof this.viewerId !== 'undefined') {
198
+ viewerUrl += `&viewerId=${this.viewerId}`;
199
+ }
200
+ if (typeof this.onBeforePrint !== 'undefined') {
201
+ viewerUrl += `&beforePrint=true`;
202
+ }
203
+ if (typeof this.onAfterPrint !== 'undefined') {
204
+ viewerUrl += `&afterPrint=true`;
205
+ }
206
+ if (typeof this.onDocumentLoad !== 'undefined') {
207
+ viewerUrl += `&pagesLoaded=true`;
208
+ }
209
+ if (typeof this.onPageChange !== 'undefined') {
210
+ viewerUrl += `&pageChange=true`;
211
+ }
212
+ if (this.downloadFileName) {
213
+ if (!this.downloadFileName.endsWith(".pdf")) {
214
+ this.downloadFileName += ".pdf";
215
+ }
216
+ viewerUrl += `&fileName=${this.downloadFileName}`;
217
+ }
218
+ if (typeof this.openFile !== 'undefined') {
219
+ viewerUrl += `&openFile=${this.openFile}`;
220
+ }
221
+ if (typeof this.download !== 'undefined') {
222
+ viewerUrl += `&download=${this.download}`;
223
+ }
224
+ if (this.startDownload) {
225
+ viewerUrl += `&startDownload=${this.startDownload}`;
226
+ }
227
+ if (typeof this.viewBookmark !== 'undefined') {
228
+ viewerUrl += `&viewBookmark=${this.viewBookmark}`;
229
+ }
230
+ if (typeof this.print !== 'undefined') {
231
+ viewerUrl += `&print=${this.print}`;
232
+ }
233
+ if (this.startPrint) {
234
+ viewerUrl += `&startPrint=${this.startPrint}`;
235
+ }
236
+ if (typeof this.fullScreen !== 'undefined') {
237
+ viewerUrl += `&fullScreen=${this.fullScreen}`;
238
+ }
239
+ // if (this.showFullScreen) {
240
+ // viewerUrl += `&showFullScreen=${this.showFullScreen}`;
241
+ // }
242
+ if (typeof this.find !== 'undefined') {
243
+ viewerUrl += `&find=${this.find}`;
244
+ }
245
+ if (this.lastPage) {
246
+ viewerUrl += `&lastpage=${this.lastPage}`;
247
+ }
248
+ if (this.rotatecw) {
249
+ viewerUrl += `&rotatecw=${this.rotatecw}`;
250
+ }
251
+ if (this.rotateccw) {
252
+ viewerUrl += `&rotateccw=${this.rotateccw}`;
253
+ }
254
+ if (this.cursor) {
255
+ viewerUrl += `&cursor=${this.cursor}`;
256
+ }
257
+ if (this.scroll) {
258
+ viewerUrl += `&scroll=${this.scroll}`;
259
+ }
260
+ if (this.spread) {
261
+ viewerUrl += `&spread=${this.spread}`;
262
+ }
263
+ if (this.locale) {
264
+ viewerUrl += `&locale=${this.locale}`;
265
+ }
266
+ if (this.useOnlyCssZoom) {
267
+ viewerUrl += `&useOnlyCssZoom=${this.useOnlyCssZoom}`;
268
+ }
269
+ if (this._page || this.zoom || this.nameddest || this.pagemode)
270
+ viewerUrl += "#";
271
+ if (this._page) {
272
+ viewerUrl += `&page=${this._page}`;
273
+ }
274
+ if (this.zoom) {
275
+ viewerUrl += `&zoom=${this.zoom}`;
276
+ }
277
+ if (this.nameddest) {
278
+ viewerUrl += `&nameddest=${this.nameddest}`;
279
+ }
280
+ if (this.pagemode) {
281
+ viewerUrl += `&pagemode=${this.pagemode}`;
282
+ }
283
+ if (this.errorOverride || this.errorAppend) {
284
+ viewerUrl += `&errorMessage=${this.errorMessage}`;
285
+ if (this.errorOverride) {
286
+ viewerUrl += `&errorOverride=${this.errorOverride}`;
287
+ }
288
+ if (this.errorAppend) {
289
+ viewerUrl += `&errorAppend=${this.errorAppend}`;
290
+ }
291
+ }
292
+ if (this.externalWindow) {
293
+ this.viewerTab.location.href = viewerUrl;
294
+ }
295
+ else {
296
+ this.iframe.nativeElement.src = viewerUrl;
297
+ }
298
+ // console.log(`
299
+ // pdfSrc = ${this.pdfSrc}
300
+ // fileUrl = ${fileUrl}
301
+ // externalWindow = ${this.externalWindow}
302
+ // downloadFileName = ${this.downloadFileName}
303
+ // viewerFolder = ${this.viewerFolder}
304
+ // openFile = ${this.openFile}
305
+ // download = ${this.download}
306
+ // startDownload = ${this.startDownload}
307
+ // viewBookmark = ${this.viewBookmark}
308
+ // print = ${this.print}
309
+ // startPrint = ${this.startPrint}
310
+ // fullScreen = ${this.fullScreen}
311
+ // find = ${this.find}
312
+ // lastPage = ${this.lastPage}
313
+ // rotatecw = ${this.rotatecw}
314
+ // rotateccw = ${this.rotateccw}
315
+ // cursor = ${this.cursor}
316
+ // scrollMode = ${this.scroll}
317
+ // spread = ${this.spread}
318
+ // page = ${this.page}
319
+ // zoom = ${this.zoom}
320
+ // nameddest = ${this.nameddest}
321
+ // pagemode = ${this.pagemode}
322
+ // pagemode = ${this.errorOverride}
323
+ // pagemode = ${this.errorAppend}
324
+ // pagemode = ${this.errorMessage}
325
+ // `);
326
+ }
327
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
328
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: { viewerId: "viewerId", viewerFolder: "viewerFolder", externalWindow: "externalWindow", target: "target", showSpinner: "showSpinner", downloadFileName: "downloadFileName", openFile: "openFile", download: "download", startDownload: "startDownload", viewBookmark: "viewBookmark", print: "print", startPrint: "startPrint", fullScreen: "fullScreen", find: "find", zoom: "zoom", nameddest: "nameddest", pagemode: "pagemode", lastPage: "lastPage", rotatecw: "rotatecw", rotateccw: "rotateccw", cursor: "cursor", scroll: "scroll", spread: "spread", locale: "locale", useOnlyCssZoom: "useOnlyCssZoom", errorOverride: "errorOverride", errorAppend: "errorAppend", errorMessage: "errorMessage", diagnosticLogs: "diagnosticLogs", externalWindowOptions: "externalWindowOptions", page: "page", pdfSrc: "pdfSrc" }, outputs: { onBeforePrint: "onBeforePrint", onAfterPrint: "onAfterPrint", onDocumentLoad: "onDocumentLoad", onPageChange: "onPageChange" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: `<iframe title="ng2-pdfjs-viewer" [hidden]="externalWindow || (!externalWindow && !pdfSrc)" #iframe width="100%" height="100%"></iframe>`, isInline: true });
329
+ }
330
+ export { PdfJsViewerComponent };
331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerComponent, decorators: [{
332
+ type: Component,
333
+ args: [{
334
+ selector: 'ng2-pdfjs-viewer',
335
+ template: `<iframe title="ng2-pdfjs-viewer" [hidden]="externalWindow || (!externalWindow && !pdfSrc)" #iframe width="100%" height="100%"></iframe>`
336
+ }]
337
+ }], propDecorators: { iframe: [{
338
+ type: ViewChild,
339
+ args: ['iframe', { static: true }]
340
+ }], viewerId: [{
341
+ type: Input
342
+ }], onBeforePrint: [{
343
+ type: Output
344
+ }], onAfterPrint: [{
345
+ type: Output
346
+ }], onDocumentLoad: [{
347
+ type: Output
348
+ }], onPageChange: [{
349
+ type: Output
350
+ }], viewerFolder: [{
351
+ type: Input
352
+ }], externalWindow: [{
353
+ type: Input
354
+ }], target: [{
355
+ type: Input
356
+ }], showSpinner: [{
357
+ type: Input
358
+ }], downloadFileName: [{
359
+ type: Input
360
+ }], openFile: [{
361
+ type: Input
362
+ }], download: [{
363
+ type: Input
364
+ }], startDownload: [{
365
+ type: Input
366
+ }], viewBookmark: [{
367
+ type: Input
368
+ }], print: [{
369
+ type: Input
370
+ }], startPrint: [{
371
+ type: Input
372
+ }], fullScreen: [{
373
+ type: Input
374
+ }], find: [{
375
+ type: Input
376
+ }], zoom: [{
377
+ type: Input
378
+ }], nameddest: [{
379
+ type: Input
380
+ }], pagemode: [{
381
+ type: Input
382
+ }], lastPage: [{
383
+ type: Input
384
+ }], rotatecw: [{
385
+ type: Input
386
+ }], rotateccw: [{
387
+ type: Input
388
+ }], cursor: [{
389
+ type: Input
390
+ }], scroll: [{
391
+ type: Input
392
+ }], spread: [{
393
+ type: Input
394
+ }], locale: [{
395
+ type: Input
396
+ }], useOnlyCssZoom: [{
397
+ type: Input
398
+ }], errorOverride: [{
399
+ type: Input
400
+ }], errorAppend: [{
401
+ type: Input
402
+ }], errorMessage: [{
403
+ type: Input
404
+ }], diagnosticLogs: [{
405
+ type: Input
406
+ }], externalWindowOptions: [{
407
+ type: Input
408
+ }], page: [{
409
+ type: Input
410
+ }], pdfSrc: [{
411
+ type: Input
412
+ }] } });
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXBkZmpzLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmcyLXBkZmpzLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7O0FBRXRHLE1BSWEsb0JBQW9CO0lBQ1EsTUFBTSxDQUFhO0lBQzFELE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ0YsUUFBUSxHQUFHLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZFLGFBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN0RCxZQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDckQsY0FBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3ZELFlBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQVM7SUFDckIsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxNQUFNLEdBQVcsUUFBUSxDQUFDO0lBQzFCLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxHQUFZLElBQUksQ0FBQztJQUN6QixRQUFRLEdBQVksSUFBSSxDQUFDO0lBQ3pCLGFBQWEsQ0FBVTtJQUN2QixZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLEtBQUssR0FBWSxJQUFJLENBQUM7SUFDdEIsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDM0MsMENBQTBDO0lBQzFCLElBQUksR0FBWSxJQUFJLENBQUM7SUFDckIsSUFBSSxDQUFTO0lBQ2IsU0FBUyxDQUFTO0lBQ2xCLFFBQVEsQ0FBUztJQUNqQixRQUFRLENBQVU7SUFDbEIsUUFBUSxDQUFVO0lBQ2xCLFNB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QUFNO3NCQUFyQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFFVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBTUssSUFBSTtzQkFEZCxLQUFLO2dCQW1CSyxNQUFNO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nMi1wZGZqcy12aWV3ZXInLFxyXG4gIHRlbXBsYXRlOiBgPGlmcmFtZSB0aXRsZT1cIm5nMi1wZGZqcy12aWV3ZXJcIiBbaGlkZGVuXT1cImV4dGVybmFsV2luZG93IHx8ICghZXh0ZXJuYWxXaW5kb3cgJiYgIXBkZlNyYylcIiAjaWZyYW1lIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj48L2lmcmFtZT5gXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZGZKc1ZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnaWZyYW1lJywgeyBzdGF0aWM6IHRydWUgfSkgaWZyYW1lOiBFbGVtZW50UmVmO1xyXG4gIHN0YXRpYyBsYXN0SUQgPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3ZXJJZCA9IGBuZzItcGRmanMtdmlld2VyLUlEJHsrK1BkZkpzVmlld2VyQ29tcG9uZW50Lmxhc3RJRH1gO1xyXG4gIEBPdXRwdXQoKSBvbkJlZm9yZVByaW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BZnRlclByaW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Eb2N1bWVudExvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3ZXJGb2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZXh0ZXJuYWxXaW5kb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdGFyZ2V0OiBzdHJpbmcgPSAnX2JsYW5rJztcclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd1NwaW5uZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkb3dubG9hZEZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIG9wZW5GaWxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFydERvd25sb2FkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3Qm9va21hcms6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwcmludDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHN0YXJ0UHJpbnQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIGZ1bGxTY3JlZW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8vQElucHV0KCkgcHVibGljIHNob3dGdWxsU2NyZWVuOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaW5kOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgem9vbTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lZGRlc3Q6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgcGFnZW1vZGU6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgbGFzdFBhZ2U6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIHJvdGF0ZWN3OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3RhdGVjY3c6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIGN1cnNvcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzY3JvbGw6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc3ByZWFkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGxvY2FsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VPbmx5Q3NzWm9vbTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlcnJvck92ZXJyaWRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGVycm9yQXBwZW5kOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRpYWdub3N0aWNMb2dzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGV4dGVybmFsV2luZG93T3B0aW9uczogc3RyaW5nO1xyXG4gIHB1YmxpYyB2aWV3ZXJUYWI6IGFueTtcclxuICBwcml2YXRlIF9zcmM6IHN0cmluZyB8IEJsb2IgfCBVaW50OEFycmF5O1xyXG4gIHByaXZhdGUgX3BhZ2U6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhZ2UoX3BhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5fcGFnZSA9IF9wYWdlO1xyXG4gICAgaWYodGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbikge1xyXG4gICAgICB0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uLnBhZ2UgPSB0aGlzLl9wYWdlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYodGhpcy5kaWFnbm9zdGljTG9ncykgY29uc29sZS53YXJuKFwiRG9jdW1lbnQgaXMgbm90IGxvYWRlZCB5ZXQhISEuIFRyeSB0byBzZXQgcGFnZSMgYWZ0ZXIgZnVsbCBsb2FkLiBJZ25vcmUgdGhpcyB3YXJuaW5nIGlmIHlvdSBhcmUgbm90IHNldHRpbmcgcGFnZSMgdXNpbmcgJy4nIG5vdGF0aW9uLiAoRS5nLiBwZGZWaWV3ZXIucGFnZSA9IDU7KVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGFnZSgpIHtcclxuICAgIGlmKHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24ucGFnZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuZGlhZ25vc3RpY0xvZ3MpIGNvbnNvbGUud2FybihcIkRvY3VtZW50IGlzIG5vdCBsb2FkZWQgeWV0ISEhLiBUcnkgdG8gcmV0cmlldmUgcGFnZSMgYWZ0ZXIgZnVsbCBsb2FkLlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwZGZTcmMoX3NyYzogc3RyaW5nIHwgQmxvYiB8IFVpbnQ4QXJyYXkpIHtcclxuICAgIHRoaXMuX3NyYyA9IF9zcmM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHBkZlNyYygpIHtcclxuICAgIHJldHVybiB0aGlzLl9zcmM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucygpIHtcclxuICAgIGxldCBwZGZWaWV3ZXJPcHRpb25zID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmV4dGVybmFsV2luZG93KSB7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdlclRhYikge1xyXG4gICAgICAgIHBkZlZpZXdlck9wdGlvbnMgPSB0aGlzLnZpZXdlclRhYi5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3cpIHtcclxuICAgICAgICBwZGZWaWV3ZXJPcHRpb25zID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBkZlZpZXdlck9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFBERlZpZXdlckFwcGxpY2F0aW9uKCkge1xyXG4gICAgbGV0IHBkZlZpZXdlciA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFdpbmRvdykge1xyXG4gICAgICBpZiAodGhpcy52aWV3ZXJUYWIpIHtcclxuICAgICAgICBwZGZWaWV3ZXIgPSB0aGlzLnZpZXdlclRhYi5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudFdpbmRvdykge1xyXG4gICAgICAgIHBkZlZpZXdlciA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBkZlZpZXdlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWNlaXZlTWVzc2FnZSh2aWV3ZXJFdmVudCkgIHtcclxuICAgIGlmICh2aWV3ZXJFdmVudC5kYXRhICYmIHZpZXdlckV2ZW50LmRhdGEudmlld2VySWQgJiYgdmlld2VyRXZlbnQuZGF0YS5ldmVudCkge1xyXG4gICAgICBsZXQgdmlld2VySWQgPSB2aWV3ZXJFdmVudC5kYXRhLnZpZXdlcklkO1xyXG4gICAgICBsZXQgZXZlbnQgPSB2aWV3ZXJFdmVudC5kYXRhLmV2ZW50O1xyXG4gICAgICBsZXQgcGFyYW0gPSB2aWV3ZXJFdmVudC5kYXRhLnBhcmFtO1xyXG4gICAgICBpZiAodGhpcy52aWV3ZXJJZCA9PSB2aWV3ZXJJZCkge1xyXG4gICAgICAgIGlmICh0aGlzLm9uQmVmb3JlUHJpbnQgJiYgZXZlbnQgPT0gXCJiZWZvcmVQcmludFwiKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQmVmb3JlUHJpbnQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm9uQWZ0ZXJQcmludCAmJiBldmVudCA9PSBcImFmdGVyUHJpbnRcIikge1xyXG4gICAgICAgICAgdGhpcy5vbkFmdGVyUHJpbnQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm9uRG9jdW1lbnRMb2FkICYmIGV2ZW50ID09IFwicGFnZXNMb2FkZWRcIikge1xyXG4gICAgICAgICAgdGhpcy5vbkRvY3VtZW50TG9hZC5lbWl0KHBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5vblBhZ2VDaGFuZ2UgJiYgZXZlbnQgPT0gXCJwYWdlQ2hhbmdlXCIpIHtcclxuICAgICAgICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQocGFyYW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5yZWNlaXZlTWVzc2FnZS5iaW5kKHRoaXMpLCBmYWxzZSk7XHJcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxXaW5kb3cpIHsgLy8gTG9hZCBwZGYgZm9yIGVtYmVkZGVkIHZpZXdzXHJcbiAgICAgIHRoaXMubG9hZFBkZigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZnJlc2goKTogdm9pZCB7IC8vIE5lZWRzIHRvIGJlIGludm9rZWQgZm9yIGV4dGVybmFsIHdpbmRvdyBvciB3aGVuIG5lZWRzIHRvIHJlbG9hZCBwZGZcclxuICAgIHRoaXMubG9hZFBkZigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWxhc2VVcmw/OiAoKSA9PiB2b2lkOyAvLyBBdm9pZCBtZW1vcnkgbGVhc2sgd2l0aCBgVVJMLmNyZWF0ZU9iamVjdFVSTGBcclxuICBwcml2YXRlIGxvYWRQZGYoKSB7XHJcbiAgICBpZiAoIXRoaXMuX3NyYykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coYFRhYiBpcyAtICR7dGhpcy52aWV3ZXJUYWJ9YCk7XHJcbiAgICAvLyBpZiAodGhpcy52aWV3ZXJUYWIpIHtcclxuICAgIC8vICAgY29uc29sZS5sb2coYFN0YXR1cyBvZiB3aW5kb3cgLSAke3RoaXMudmlld2VyVGFiLmNsb3NlZH1gKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFdpbmRvdyAmJiAodHlwZW9mIHRoaXMudmlld2VyVGFiID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnZpZXdlclRhYi5jbG9zZWQpKSB7XHJcbiAgICAgIHRoaXMudmlld2VyVGFiID0gd2luZG93Lm9wZW4oJycsIHRoaXMudGFyZ2V0LCB0aGlzLmV4dGVybmFsV2luZG93T3B0aW9ucyB8fCAnJyk7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdlclRhYiA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYodGhpcy5kaWFnbm9zdGljTG9ncykgY29uc29sZS5lcnJvcihcIm5nMi1wZGZqcy12aWV3ZXI6IEZvciAnZXh0ZXJuYWxXaW5kb3cgPSB0cnVlJy4gaS5lIG9wZW5pbmcgaW4gbmV3IHRhYiB0byB3b3JrLCBwb3AtdXBzIHNob3VsZCBiZSBlbmFibGVkLlwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnNob3dTcGlubmVyKSB7XHJcbiAgICAgICAgdGhpcy52aWV3ZXJUYWIuZG9jdW1lbnQud3JpdGUoYFxyXG4gICAgICAgICAgPHN0eWxlPlxyXG4gICAgICAgICAgLmxvYWRlciB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgICAgICAgbGVmdDogNDAlO1xyXG4gICAgICAgICAgICB0b3A6IDQwJTtcclxuICAgICAgICAgICAgYm9yZGVyOiAxNnB4IHNvbGlkICNmM2YzZjM7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTZweCBzb2xpZCAjMzQ5OGRiO1xyXG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTIwcHg7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAa2V5ZnJhbWVzIHNwaW4ge1xyXG4gICAgICAgICAgICAwJSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgMTAwJSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPC9zdHlsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICBgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVsYXNlVXJsPy4oKTtcclxuICAgIGxldCBmaWxlVXJsO1xyXG4gICAgLy9pZiAodHlwZW9mIHRoaXMuc3JjID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAvLyAgZmlsZVVybCA9IHRoaXMuc3JjO1xyXG4gICAgLy99XHJcbiAgICBpZiAodGhpcy5fc3JjIGluc3RhbmNlb2YgQmxvYikge1xyXG4gICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuX3NyYyk7XHJcbiAgICAgIGZpbGVVcmwgPSBlbmNvZGVVUklDb21wb25lbnQodXJsKTtcclxuICAgICAgdGhpcy5yZWxhc2VVcmwgPSAoKSA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NyYyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbdGhpcy5fc3JjXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiIH0pO1xyXG4gICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICB0aGlzLnJlbGFzZVVybCA9ICgpID0+IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgZmlsZVVybCA9IGVuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsZVVybCA9IHRoaXMuX3NyYztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdmlld2VyVXJsO1xyXG4gICAgaWYgKHRoaXMudmlld2VyRm9sZGVyKSB7XHJcbiAgICAgIHZpZXdlclVybCA9IGAke3RoaXMudmlld2VyRm9sZGVyfS93ZWIvdmlld2VyLmh0bWxgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmlld2VyVXJsID0gYGFzc2V0cy9wZGZqcy93ZWIvdmlld2VyLmh0bWxgO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXdlclVybCArPSBgP2ZpbGU9JHtmaWxlVXJsfWA7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnZpZXdlcklkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZ2aWV3ZXJJZD0ke3RoaXMudmlld2VySWR9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5vbkJlZm9yZVByaW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZiZWZvcmVQcmludD10cnVlYDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5vbkFmdGVyUHJpbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJmFmdGVyUHJpbnQ9dHJ1ZWA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMub25Eb2N1bWVudExvYWQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnBhZ2VzTG9hZGVkPXRydWVgO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9uUGFnZUNoYW5nZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmcGFnZUNoYW5nZT10cnVlYDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kb3dubG9hZEZpbGVOYW1lKSB7XHJcbiAgICAgIGlmKCF0aGlzLmRvd25sb2FkRmlsZU5hbWUuZW5kc1dpdGgoXCIucGRmXCIpKSB7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGVOYW1lICs9IFwiLnBkZlwiO1xyXG4gICAgICB9XHJcbiAgICAgIHZpZXdlclVybCArPSBgJmZpbGVOYW1lPSR7dGhpcy5kb3dubG9hZEZpbGVOYW1lfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMub3BlbkZpbGUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJm9wZW5GaWxlPSR7dGhpcy5vcGVuRmlsZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRvd25sb2FkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZkb3dubG9hZD0ke3RoaXMuZG93bmxvYWR9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN0YXJ0RG93bmxvYWQpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmc3RhcnREb3dubG9hZD0ke3RoaXMuc3RhcnREb3dubG9hZH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnZpZXdCb29rbWFyayAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmdmlld0Jvb2ttYXJrPSR7dGhpcy52aWV3Qm9va21hcmt9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5wcmludCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmcHJpbnQ9JHt0aGlzLnByaW50fWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGFydFByaW50KSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnN0YXJ0UHJpbnQ9JHt0aGlzLnN0YXJ0UHJpbnR9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5mdWxsU2NyZWVuICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZmdWxsU2NyZWVuPSR7dGhpcy5mdWxsU2NyZWVufWA7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAodGhpcy5zaG93RnVsbFNjcmVlbikge1xyXG4gICAgLy8gICB2aWV3ZXJVcmwgKz0gYCZzaG93RnVsbFNjcmVlbj0ke3RoaXMuc2hvd0Z1bGxTY3JlZW59YDtcclxuICAgIC8vIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5maW5kICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZmaW5kPSR7dGhpcy5maW5kfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sYXN0UGFnZSkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZsYXN0cGFnZT0ke3RoaXMubGFzdFBhZ2V9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJvdGF0ZWN3KSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnJvdGF0ZWN3PSR7dGhpcy5yb3RhdGVjd31gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucm90YXRlY2N3KSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnJvdGF0ZWNjdz0ke3RoaXMucm90YXRlY2N3fWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJzb3IpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmY3Vyc29yPSR7dGhpcy5jdXJzb3J9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNjcm9sbCkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZzY3JvbGw9JHt0aGlzLnNjcm9sbH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3ByZWFkKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnNwcmVhZD0ke3RoaXMuc3ByZWFkfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sb2NhbGUpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmbG9jYWxlPSR7dGhpcy5sb2NhbGV9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnVzZU9ubHlDc3Nab29tKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnVzZU9ubHlDc3Nab29tPSR7dGhpcy51c2VPbmx5Q3NzWm9vbX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9wYWdlIHx8IHRoaXMuem9vbSB8fCB0aGlzLm5hbWVkZGVzdCB8fCB0aGlzLnBhZ2Vtb2RlKSB2aWV3ZXJVcmwgKz0gXCIjXCJcclxuICAgIGlmICh0aGlzLl9wYWdlKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnBhZ2U9JHt0aGlzLl9wYWdlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy56b29tKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnpvb209JHt0aGlzLnpvb219YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm5hbWVkZGVzdCkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZuYW1lZGRlc3Q9JHt0aGlzLm5hbWVkZGVzdH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucGFnZW1vZGUpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmcGFnZW1vZGU9JHt0aGlzLnBhZ2Vtb2RlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lcnJvck92ZXJyaWRlIHx8IHRoaXMuZXJyb3JBcHBlbmQpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmZXJyb3JNZXNzYWdlPSR7dGhpcy5lcnJvck1lc3NhZ2V9YDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVycm9yT3ZlcnJpZGUpIHtcclxuICAgICAgICB2aWV3ZXJVcmwgKz0gYCZlcnJvck92ZXJyaWRlPSR7dGhpcy5lcnJvck92ZXJyaWRlfWA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZXJyb3JBcHBlbmQpIHtcclxuICAgICAgICB2aWV3ZXJVcmwgKz0gYCZlcnJvckFwcGVuZD0ke3RoaXMuZXJyb3JBcHBlbmR9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmV4dGVybmFsV2luZG93KSB7XHJcbiAgICAgIHRoaXMudmlld2VyVGFiLmxvY2F0aW9uLmhyZWYgPSB2aWV3ZXJVcmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LnNyYyA9IHZpZXdlclVybDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhgXHJcbiAgICAvLyAgIHBkZlNyYyA9ICR7dGhpcy5wZGZTcmN9XHJcbiAgICAvLyAgIGZpbGVVcmwgPSAke2ZpbGVVcmx9XHJcbiAgICAvLyAgIGV4dGVybmFsV2luZG93ID0gJHt0aGlzLmV4dGVybmFsV2luZG93fVxyXG4gICAgLy8gICBkb3dubG9hZEZpbGVOYW1lID0gJHt0aGlzLmRvd25sb2FkRmlsZU5hbWV9XHJcbiAgICAvLyAgIHZpZXdlckZvbGRlciA9ICR7dGhpcy52aWV3ZXJGb2xkZXJ9XHJcbiAgICAvLyAgIG9wZW5GaWxlID0gJHt0aGlzLm9wZW5GaWxlfVxyXG4gICAgLy8gICBkb3dubG9hZCA9ICR7dGhpcy5kb3dubG9hZH1cclxuICAgIC8vICAgc3RhcnREb3dubG9hZCA9ICR7dGhpcy5zdGFydERvd25sb2FkfVxyXG4gICAgLy8gICB2aWV3Qm9va21hcmsgPSAke3RoaXMudmlld0Jvb2ttYXJrfVxyXG4gICAgLy8gICBwcmludCA9ICR7dGhpcy5wcmludH1cclxuICAgIC8vICAgc3RhcnRQcmludCA9ICR7dGhpcy5zdGFydFByaW50fVxyXG4gICAgLy8gICBmdWxsU2NyZWVuID0gJHt0aGlzLmZ1bGxTY3JlZW59XHJcbiAgICAvLyAgIGZpbmQgPSAke3RoaXMuZmluZH1cclxuICAgIC8vICAgbGFzdFBhZ2UgPSAke3RoaXMubGFzdFBhZ2V9XHJcbiAgICAvLyAgIHJvdGF0ZWN3ID0gJHt0aGlzLnJvdGF0ZWN3fVxyXG4gICAgLy8gICByb3RhdGVjY3cgPSAke3RoaXMucm90YXRlY2N3fVxyXG4gICAgLy8gICBjdXJzb3IgPSAke3RoaXMuY3Vyc29yfVxyXG4gICAgLy8gICBzY3JvbGxNb2RlID0gJHt0aGlzLnNjcm9sbH1cclxuICAgIC8vICAgc3ByZWFkID0gJHt0aGlzLnNwcmVhZH1cclxuICAgIC8vICAgcGFnZSA9ICR7dGhpcy5wYWdlfVxyXG4gICAgLy8gICB6b29tID0gJHt0aGlzLnpvb219XHJcbiAgICAvLyAgIG5hbWVkZGVzdCA9ICR7dGhpcy5uYW1lZGRlc3R9XHJcbiAgICAvLyAgIHBhZ2Vtb2RlID0gJHt0aGlzLnBhZ2Vtb2RlfVxyXG4gICAgLy8gICBwYWdlbW9kZSA9ICR7dGhpcy5lcnJvck92ZXJyaWRlfVxyXG4gICAgLy8gICBwYWdlbW9kZSA9ICR7dGhpcy5lcnJvckFwcGVuZH1cclxuICAgIC8vICAgcGFnZW1vZGUgPSAke3RoaXMuZXJyb3JNZXNzYWdlfVxyXG4gICAgLy8gYCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { PdfJsViewerComponent } from "./ng2-pdfjs-viewer.component";
4
+ import * as i0 from "@angular/core";
5
+ class PdfJsViewerModule {
6
+ static forRoot() {
7
+ return {
8
+ ngModule: PdfJsViewerModule,
9
+ };
10
+ }
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerModule, declarations: [PdfJsViewerComponent], imports: [CommonModule], exports: [PdfJsViewerComponent] });
13
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerModule, imports: [CommonModule] });
14
+ }
15
+ export { PdfJsViewerModule };
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerModule, decorators: [{
17
+ type: NgModule,
18
+ args: [{
19
+ imports: [CommonModule],
20
+ declarations: [PdfJsViewerComponent],
21
+ exports: [PdfJsViewerComponent],
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXBkZmpzLXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmcyLXBkZmpzLXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVwRSxNQUthLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsaUJBQWlCO1NBQzVCLENBQUM7SUFDSixDQUFDO3VHQUxVLGlCQUFpQjt3R0FBakIsaUJBQWlCLGlCQUhiLG9CQUFvQixhQUR6QixZQUFZLGFBRVosb0JBQW9CO3dHQUVuQixpQkFBaUIsWUFKbEIsWUFBWTs7U0FJWCxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgUGRmSnNWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9uZzItcGRmanMtdmlld2VyLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtQZGZKc1ZpZXdlckNvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW1BkZkpzVmlld2VyQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZkpzVmlld2VyTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFBkZkpzVmlld2VyTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogUGRmSnNWaWV3ZXJNb2R1bGUsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=