ng2-pdfjs-viewer 15.0.0 → 17.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.
@@ -0,0 +1,416 @@
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
+ ngOnDestroy() {
328
+ this.relaseUrl?.();
329
+ }
330
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
331
+ 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 });
332
+ }
333
+ export { PdfJsViewerComponent };
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: PdfJsViewerComponent, decorators: [{
335
+ type: Component,
336
+ args: [{
337
+ selector: 'ng2-pdfjs-viewer',
338
+ template: `<iframe title="ng2-pdfjs-viewer" [hidden]="externalWindow || (!externalWindow && !pdfSrc)" #iframe width="100%" height="100%"></iframe>`
339
+ }]
340
+ }], propDecorators: { iframe: [{
341
+ type: ViewChild,
342
+ args: ['iframe', { static: true }]
343
+ }], viewerId: [{
344
+ type: Input
345
+ }], onBeforePrint: [{
346
+ type: Output
347
+ }], onAfterPrint: [{
348
+ type: Output
349
+ }], onDocumentLoad: [{
350
+ type: Output
351
+ }], onPageChange: [{
352
+ type: Output
353
+ }], viewerFolder: [{
354
+ type: Input
355
+ }], externalWindow: [{
356
+ type: Input
357
+ }], target: [{
358
+ type: Input
359
+ }], showSpinner: [{
360
+ type: Input
361
+ }], downloadFileName: [{
362
+ type: Input
363
+ }], openFile: [{
364
+ type: Input
365
+ }], download: [{
366
+ type: Input
367
+ }], startDownload: [{
368
+ type: Input
369
+ }], viewBookmark: [{
370
+ type: Input
371
+ }], print: [{
372
+ type: Input
373
+ }], startPrint: [{
374
+ type: Input
375
+ }], fullScreen: [{
376
+ type: Input
377
+ }], find: [{
378
+ type: Input
379
+ }], zoom: [{
380
+ type: Input
381
+ }], nameddest: [{
382
+ type: Input
383
+ }], pagemode: [{
384
+ type: Input
385
+ }], lastPage: [{
386
+ type: Input
387
+ }], rotatecw: [{
388
+ type: Input
389
+ }], rotateccw: [{
390
+ type: Input
391
+ }], cursor: [{
392
+ type: Input
393
+ }], scroll: [{
394
+ type: Input
395
+ }], spread: [{
396
+ type: Input
397
+ }], locale: [{
398
+ type: Input
399
+ }], useOnlyCssZoom: [{
400
+ type: Input
401
+ }], errorOverride: [{
402
+ type: Input
403
+ }], errorAppend: [{
404
+ type: Input
405
+ }], errorMessage: [{
406
+ type: Input
407
+ }], diagnosticLogs: [{
408
+ type: Input
409
+ }], externalWindowOptions: [{
410
+ type: Input
411
+ }], page: [{
412
+ type: Input
413
+ }], pdfSrc: [{
414
+ type: Input
415
+ }] } });
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXBkZmpzLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmcyLXBkZmpzLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQUVqSCxNQUlhLG9CQUFvQjtJQUNRLE1BQU0sQ0FBYTtJQUMxRCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNGLFFBQVEsR0FBRyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2RSxhQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDdEQsWUFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3JELGNBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN2RCxZQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFTO0lBQ3JCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsTUFBTSxHQUFXLFFBQVEsQ0FBQztJQUMxQixXQUFXLEdBQVksSUFBSSxDQUFDO0lBQzVCLGdCQUFnQixDQUFTO0lBQ3pCLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFDekIsUUFBUSxHQUFZLElBQUksQ0FBQztJQUN6QixhQUFhLENBQVU7SUFDdkIsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3QixLQUFLLEdBQVksSUFBSSxDQUFDO0lBQ3RCLFVBQVUsQ0FBVTtJQUNwQixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNDLDBDQUEwQztJQUMxQixJQUFJLEdBQVksSUFBSSxDQUFDO0lBQ3JCLElBQUksQ0FBUztJQUNiLFNBQVMsQ0FBUztJQUNsQixRQUFRLENBQVM7SUFDakIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBVTtJQUNsQixT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QUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFFVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBTUssSUFBSTtzQkFEZCxLQUFLO2dCQW1CSyxNQUFNO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmcyLXBkZmpzLXZpZXdlcicsXHJcbiAgdGVtcGxhdGU6IGA8aWZyYW1lIHRpdGxlPVwibmcyLXBkZmpzLXZpZXdlclwiIFtoaWRkZW5dPVwiZXh0ZXJuYWxXaW5kb3cgfHwgKCFleHRlcm5hbFdpbmRvdyAmJiAhcGRmU3JjKVwiICNpZnJhbWUgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPjwvaWZyYW1lPmBcclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZkpzVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScsIHsgc3RhdGljOiB0cnVlIH0pIGlmcmFtZTogRWxlbWVudFJlZjtcclxuICBzdGF0aWMgbGFzdElEID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlld2VySWQgPSBgbmcyLXBkZmpzLXZpZXdlci1JRCR7KytQZGZKc1ZpZXdlckNvbXBvbmVudC5sYXN0SUR9YDtcclxuICBAT3V0cHV0KCkgb25CZWZvcmVQcmludDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQWZ0ZXJQcmludDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uRG9jdW1lbnRMb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlld2VyRm9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGV4dGVybmFsV2luZG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHRhcmdldDogc3RyaW5nID0gJ19ibGFuayc7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dTcGlubmVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWRGaWxlTmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvcGVuRmlsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGRvd25sb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc3RhcnREb3dubG9hZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlld0Jvb2ttYXJrOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcHJpbnQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFydFByaW50OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmdWxsU2NyZWVuOiBib29sZWFuID0gdHJ1ZTtcclxuICAvL0BJbnB1dCgpIHB1YmxpYyBzaG93RnVsbFNjcmVlbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgZmluZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHpvb206IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgbmFtZWRkZXN0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHBhZ2Vtb2RlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGxhc3RQYWdlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3RhdGVjdzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgcm90YXRlY2N3OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJzb3I6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHNwcmVhZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgdXNlT25seUNzc1pvb206IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZXJyb3JPdmVycmlkZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlcnJvckFwcGVuZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaWFnbm9zdGljTG9nczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBleHRlcm5hbFdpbmRvd09wdGlvbnM6IHN0cmluZztcclxuICBwdWJsaWMgdmlld2VyVGFiOiBhbnk7XHJcbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmcgfCBCbG9iIHwgVWludDhBcnJheTtcclxuICBwcml2YXRlIF9wYWdlOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYWdlKF9wYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3BhZ2UgPSBfcGFnZTtcclxuICAgIGlmKHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24pIHtcclxuICAgICAgdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5wYWdlID0gdGhpcy5fcGFnZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuZGlhZ25vc3RpY0xvZ3MpIGNvbnNvbGUud2FybihcIkRvY3VtZW50IGlzIG5vdCBsb2FkZWQgeWV0ISEhLiBUcnkgdG8gc2V0IHBhZ2UjIGFmdGVyIGZ1bGwgbG9hZC4gSWdub3JlIHRoaXMgd2FybmluZyBpZiB5b3UgYXJlIG5vdCBzZXR0aW5nIHBhZ2UjIHVzaW5nICcuJyBub3RhdGlvbi4gKEUuZy4gcGRmVmlld2VyLnBhZ2UgPSA1OylcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHBhZ2UoKSB7XHJcbiAgICBpZih0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uLnBhZ2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih0aGlzLmRpYWdub3N0aWNMb2dzKSBjb25zb2xlLndhcm4oXCJEb2N1bWVudCBpcyBub3QgbG9hZGVkIHlldCEhIS4gVHJ5IHRvIHJldHJpZXZlIHBhZ2UjIGFmdGVyIGZ1bGwgbG9hZC5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcGRmU3JjKF9zcmM6IHN0cmluZyB8IEJsb2IgfCBVaW50OEFycmF5KSB7XHJcbiAgICB0aGlzLl9zcmMgPSBfc3JjO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwZGZTcmMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3JjO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMoKSB7XHJcbiAgICBsZXQgcGRmVmlld2VyT3B0aW9ucyA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFdpbmRvdykge1xyXG4gICAgICBpZiAodGhpcy52aWV3ZXJUYWIpIHtcclxuICAgICAgICBwZGZWaWV3ZXJPcHRpb25zID0gdGhpcy52aWV3ZXJUYWIuUERGVmlld2VyQXBwbGljYXRpb25PcHRpb25zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50V2luZG93KSB7XHJcbiAgICAgICAgcGRmVmlld2VyT3B0aW9ucyA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwZGZWaWV3ZXJPcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQREZWaWV3ZXJBcHBsaWNhdGlvbigpIHtcclxuICAgIGxldCBwZGZWaWV3ZXIgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxXaW5kb3cpIHtcclxuICAgICAgaWYgKHRoaXMudmlld2VyVGFiKSB7XHJcbiAgICAgICAgcGRmVmlld2VyID0gdGhpcy52aWV3ZXJUYWIuUERGVmlld2VyQXBwbGljYXRpb247XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3cpIHtcclxuICAgICAgICBwZGZWaWV3ZXIgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwZGZWaWV3ZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVjZWl2ZU1lc3NhZ2Uodmlld2VyRXZlbnQpICB7XHJcbiAgICBpZiAodmlld2VyRXZlbnQuZGF0YSAmJiB2aWV3ZXJFdmVudC5kYXRhLnZpZXdlcklkICYmIHZpZXdlckV2ZW50LmRhdGEuZXZlbnQpIHtcclxuICAgICAgbGV0IHZpZXdlcklkID0gdmlld2VyRXZlbnQuZGF0YS52aWV3ZXJJZDtcclxuICAgICAgbGV0IGV2ZW50ID0gdmlld2VyRXZlbnQuZGF0YS5ldmVudDtcclxuICAgICAgbGV0IHBhcmFtID0gdmlld2VyRXZlbnQuZGF0YS5wYXJhbTtcclxuICAgICAgaWYgKHRoaXMudmlld2VySWQgPT0gdmlld2VySWQpIHtcclxuICAgICAgICBpZiAodGhpcy5vbkJlZm9yZVByaW50ICYmIGV2ZW50ID09IFwiYmVmb3JlUHJpbnRcIikge1xyXG4gICAgICAgICAgdGhpcy5vbkJlZm9yZVByaW50LmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5vbkFmdGVyUHJpbnQgJiYgZXZlbnQgPT0gXCJhZnRlclByaW50XCIpIHtcclxuICAgICAgICAgIHRoaXMub25BZnRlclByaW50LmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5vbkRvY3VtZW50TG9hZCAmJiBldmVudCA9PSBcInBhZ2VzTG9hZGVkXCIpIHtcclxuICAgICAgICAgIHRoaXMub25Eb2N1bWVudExvYWQuZW1pdChwYXJhbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMub25QYWdlQ2hhbmdlICYmIGV2ZW50ID09IFwicGFnZUNoYW5nZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMucmVjZWl2ZU1lc3NhZ2UuYmluZCh0aGlzKSwgZmFsc2UpO1xyXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsV2luZG93KSB7IC8vIExvYWQgcGRmIGZvciBlbWJlZGRlZCB2aWV3c1xyXG4gICAgICB0aGlzLmxvYWRQZGYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQgeyAvLyBOZWVkcyB0byBiZSBpbnZva2VkIGZvciBleHRlcm5hbCB3aW5kb3cgb3Igd2hlbiBuZWVkcyB0byByZWxvYWQgcGRmXHJcbiAgICB0aGlzLmxvYWRQZGYoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVsYXNlVXJsPzogKCkgPT4gdm9pZDsgLy8gQXZvaWQgbWVtb3J5IGxlYXNrIHdpdGggYFVSTC5jcmVhdGVPYmplY3RVUkxgXHJcbiAgcHJpdmF0ZSBsb2FkUGRmKCkge1xyXG4gICAgaWYgKCF0aGlzLl9zcmMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKGBUYWIgaXMgLSAke3RoaXMudmlld2VyVGFifWApO1xyXG4gICAgLy8gaWYgKHRoaXMudmlld2VyVGFiKSB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKGBTdGF0dXMgb2Ygd2luZG93IC0gJHt0aGlzLnZpZXdlclRhYi5jbG9zZWR9YCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxXaW5kb3cgJiYgKHR5cGVvZiB0aGlzLnZpZXdlclRhYiA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcy52aWV3ZXJUYWIuY2xvc2VkKSkge1xyXG4gICAgICB0aGlzLnZpZXdlclRhYiA9IHdpbmRvdy5vcGVuKCcnLCB0aGlzLnRhcmdldCwgdGhpcy5leHRlcm5hbFdpbmRvd09wdGlvbnMgfHwgJycpO1xyXG4gICAgICBpZiAodGhpcy52aWV3ZXJUYWIgPT0gbnVsbCkge1xyXG4gICAgICAgIGlmKHRoaXMuZGlhZ25vc3RpY0xvZ3MpIGNvbnNvbGUuZXJyb3IoXCJuZzItcGRmanMtdmlld2VyOiBGb3IgJ2V4dGVybmFsV2luZG93ID0gdHJ1ZScuIGkuZSBvcGVuaW5nIGluIG5ldyB0YWIgdG8gd29yaywgcG9wLXVwcyBzaG91bGQgYmUgZW5hYmxlZC5cIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zaG93U3Bpbm5lcikge1xyXG4gICAgICAgIHRoaXMudmlld2VyVGFiLmRvY3VtZW50LndyaXRlKGBcclxuICAgICAgICAgIDxzdHlsZT5cclxuICAgICAgICAgIC5sb2FkZXIge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgICAgIGxlZnQ6IDQwJTtcclxuICAgICAgICAgICAgdG9wOiA0MCU7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMTZweCBzb2xpZCAjZjNmM2YzO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE2cHggc29saWQgIzM0OThkYjtcclxuICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEyMHB4O1xyXG4gICAgICAgICAgICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGtleWZyYW1lcyBzcGluIHtcclxuICAgICAgICAgICAgMCUge1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDEwMCUge1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDwvc3R5bGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbGFzZVVybD8uKCk7XHJcbiAgICBsZXQgZmlsZVVybDtcclxuICAgIC8vaWYgKHR5cGVvZiB0aGlzLnNyYyA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgLy8gIGZpbGVVcmwgPSB0aGlzLnNyYztcclxuICAgIC8vfVxyXG4gICAgaWYgKHRoaXMuX3NyYyBpbnN0YW5jZW9mIEJsb2IpIHtcclxuICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLl9zcmMpO1xyXG4gICAgICBmaWxlVXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XHJcbiAgICAgIHRoaXMucmVsYXNlVXJsID0gKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLl9zcmMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgIGxldCBibG9iID0gbmV3IEJsb2IoW3RoaXMuX3NyY10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgdGhpcy5yZWxhc2VVcmwgPSAoKSA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgIGZpbGVVcmwgPSBlbmNvZGVVUklDb21wb25lbnQodXJsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbGVVcmwgPSB0aGlzLl9zcmM7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHZpZXdlclVybDtcclxuICAgIGlmICh0aGlzLnZpZXdlckZvbGRlcikge1xyXG4gICAgICB2aWV3ZXJVcmwgPSBgJHt0aGlzLnZpZXdlckZvbGRlcn0vd2ViL3ZpZXdlci5odG1sYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZpZXdlclVybCA9IGBhc3NldHMvcGRmanMvd2ViL3ZpZXdlci5odG1sYDtcclxuICAgIH1cclxuXHJcbiAgICB2aWV3ZXJVcmwgKz0gYD9maWxlPSR7ZmlsZVVybH1gO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy52aWV3ZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmdmlld2VySWQ9JHt0aGlzLnZpZXdlcklkfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMub25CZWZvcmVQcmludCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmYmVmb3JlUHJpbnQ9dHJ1ZWA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMub25BZnRlclByaW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZhZnRlclByaW50PXRydWVgO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9uRG9jdW1lbnRMb2FkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZwYWdlc0xvYWRlZD10cnVlYDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5vblBhZ2VDaGFuZ2UgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnBhZ2VDaGFuZ2U9dHJ1ZWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZG93bmxvYWRGaWxlTmFtZSkge1xyXG4gICAgICBpZighdGhpcy5kb3dubG9hZEZpbGVOYW1lLmVuZHNXaXRoKFwiLnBkZlwiKSkge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlTmFtZSArPSBcIi5wZGZcIjtcclxuICAgICAgfVxyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZmaWxlTmFtZT0ke3RoaXMuZG93bmxvYWRGaWxlTmFtZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wZW5GaWxlICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZvcGVuRmlsZT0ke3RoaXMub3BlbkZpbGV9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5kb3dubG9hZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmZG93bmxvYWQ9JHt0aGlzLmRvd25sb2FkfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGFydERvd25sb2FkKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnN0YXJ0RG93bmxvYWQ9JHt0aGlzLnN0YXJ0RG93bmxvYWR9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy52aWV3Qm9va21hcmsgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnZpZXdCb29rbWFyaz0ke3RoaXMudmlld0Jvb2ttYXJrfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMucHJpbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnByaW50PSR7dGhpcy5wcmludH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3RhcnRQcmludCkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZzdGFydFByaW50PSR7dGhpcy5zdGFydFByaW50fWA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZnVsbFNjcmVlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmZnVsbFNjcmVlbj0ke3RoaXMuZnVsbFNjcmVlbn1gO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKHRoaXMuc2hvd0Z1bGxTY3JlZW4pIHtcclxuICAgIC8vICAgdmlld2VyVXJsICs9IGAmc2hvd0Z1bGxTY3JlZW49JHt0aGlzLnNob3dGdWxsU2NyZWVufWA7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZmluZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmZmluZD0ke3RoaXMuZmluZH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGFzdFBhZ2UpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmbGFzdHBhZ2U9JHt0aGlzLmxhc3RQYWdlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yb3RhdGVjdykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZyb3RhdGVjdz0ke3RoaXMucm90YXRlY3d9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJvdGF0ZWNjdykge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZyb3RhdGVjY3c9JHt0aGlzLnJvdGF0ZWNjd31gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3Vyc29yKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJmN1cnNvcj0ke3RoaXMuY3Vyc29yfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zY3JvbGwpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmc2Nyb2xsPSR7dGhpcy5zY3JvbGx9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNwcmVhZCkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZzcHJlYWQ9JHt0aGlzLnNwcmVhZH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubG9jYWxlKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJmxvY2FsZT0ke3RoaXMubG9jYWxlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51c2VPbmx5Q3NzWm9vbSkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZ1c2VPbmx5Q3NzWm9vbT0ke3RoaXMudXNlT25seUNzc1pvb219YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5fcGFnZSB8fCB0aGlzLnpvb20gfHwgdGhpcy5uYW1lZGRlc3QgfHwgdGhpcy5wYWdlbW9kZSkgdmlld2VyVXJsICs9IFwiI1wiXHJcbiAgICBpZiAodGhpcy5fcGFnZSkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZwYWdlPSR7dGhpcy5fcGFnZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuem9vbSkge1xyXG4gICAgICB2aWV3ZXJVcmwgKz0gYCZ6b29tPSR7dGhpcy56b29tfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5uYW1lZGRlc3QpIHtcclxuICAgICAgdmlld2VyVXJsICs9IGAmbmFtZWRkZXN0PSR7dGhpcy5uYW1lZGRlc3R9YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBhZ2Vtb2RlKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJnBhZ2Vtb2RlPSR7dGhpcy5wYWdlbW9kZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZXJyb3JPdmVycmlkZSB8fCB0aGlzLmVycm9yQXBwZW5kKSB7XHJcbiAgICAgIHZpZXdlclVybCArPSBgJmVycm9yTWVzc2FnZT0ke3RoaXMuZXJyb3JNZXNzYWdlfWA7XHJcblxyXG4gICAgICBpZiAodGhpcy5lcnJvck92ZXJyaWRlKSB7XHJcbiAgICAgICAgdmlld2VyVXJsICs9IGAmZXJyb3JPdmVycmlkZT0ke3RoaXMuZXJyb3JPdmVycmlkZX1gO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVycm9yQXBwZW5kKSB7XHJcbiAgICAgICAgdmlld2VyVXJsICs9IGAmZXJyb3JBcHBlbmQ9JHt0aGlzLmVycm9yQXBwZW5kfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFdpbmRvdykge1xyXG4gICAgICB0aGlzLnZpZXdlclRhYi5sb2NhdGlvbi5ocmVmID0gdmlld2VyVXJsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5zcmMgPSB2aWV3ZXJVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coYFxyXG4gICAgLy8gICBwZGZTcmMgPSAke3RoaXMucGRmU3JjfVxyXG4gICAgLy8gICBmaWxlVXJsID0gJHtmaWxlVXJsfVxyXG4gICAgLy8gICBleHRlcm5hbFdpbmRvdyA9ICR7dGhpcy5leHRlcm5hbFdpbmRvd31cclxuICAgIC8vICAgZG93bmxvYWRGaWxlTmFtZSA9ICR7dGhpcy5kb3dubG9hZEZpbGVOYW1lfVxyXG4gICAgLy8gICB2aWV3ZXJGb2xkZXIgPSAke3RoaXMudmlld2VyRm9sZGVyfVxyXG4gICAgLy8gICBvcGVuRmlsZSA9ICR7dGhpcy5vcGVuRmlsZX1cclxuICAgIC8vICAgZG93bmxvYWQgPSAke3RoaXMuZG93bmxvYWR9XHJcbiAgICAvLyAgIHN0YXJ0RG93bmxvYWQgPSAke3RoaXMuc3RhcnREb3dubG9hZH1cclxuICAgIC8vICAgdmlld0Jvb2ttYXJrID0gJHt0aGlzLnZpZXdCb29rbWFya31cclxuICAgIC8vICAgcHJpbnQgPSAke3RoaXMucHJpbnR9XHJcbiAgICAvLyAgIHN0YXJ0UHJpbnQgPSAke3RoaXMuc3RhcnRQcmludH1cclxuICAgIC8vICAgZnVsbFNjcmVlbiA9ICR7dGhpcy5mdWxsU2NyZWVufVxyXG4gICAgLy8gICBmaW5kID0gJHt0aGlzLmZpbmR9XHJcbiAgICAvLyAgIGxhc3RQYWdlID0gJHt0aGlzLmxhc3RQYWdlfVxyXG4gICAgLy8gICByb3RhdGVjdyA9ICR7dGhpcy5yb3RhdGVjd31cclxuICAgIC8vICAgcm90YXRlY2N3ID0gJHt0aGlzLnJvdGF0ZWNjd31cclxuICAgIC8vICAgY3Vyc29yID0gJHt0aGlzLmN1cnNvcn1cclxuICAgIC8vICAgc2Nyb2xsTW9kZSA9ICR7dGhpcy5zY3JvbGx9XHJcbiAgICAvLyAgIHNwcmVhZCA9ICR7dGhpcy5zcHJlYWR9XHJcbiAgICAvLyAgIHBhZ2UgPSAke3RoaXMucGFnZX1cclxuICAgIC8vICAgem9vbSA9ICR7dGhpcy56b29tfVxyXG4gICAgLy8gICBuYW1lZGRlc3QgPSAke3RoaXMubmFtZWRkZXN0fVxyXG4gICAgLy8gICBwYWdlbW9kZSA9ICR7dGhpcy5wYWdlbW9kZX1cclxuICAgIC8vICAgcGFnZW1vZGUgPSAke3RoaXMuZXJyb3JPdmVycmlkZX1cclxuICAgIC8vICAgcGFnZW1vZGUgPSAke3RoaXMuZXJyb3JBcHBlbmR9XHJcbiAgICAvLyAgIHBhZ2Vtb2RlID0gJHt0aGlzLmVycm9yTWVzc2FnZX1cclxuICAgIC8vIGApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbGFzZVVybD8uKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -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=