ngx-doc-viewer 2.1.0 → 2.1.3

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.
@@ -2,7 +2,7 @@ import { Component, Input, NgZone, Output, ViewChildren, QueryList, } from '@ang
2
2
  import { DomSanitizer } from '@angular/platform-browser';
3
3
  import { EventEmitter } from '@angular/core';
4
4
  // eslint-disable-next-line @nrwl/nx/enforce-module-boundaries
5
- import { getDocxToHtml, getViewerDetails, googleCheckSubscription, iframeIsLoaded, isLocalFile, replaceLocalUrl } from 'docviewhelper';
5
+ import { getDocxToHtml, getViewerDetails, googleCheckSubscription, iframeIsLoaded, isLocalFile, replaceLocalUrl, } from 'docviewhelper';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/platform-browser";
8
8
  import * as i2 from "@angular/common";
@@ -30,8 +30,7 @@ export class NgxDocViewerComponent {
30
30
  }
31
31
  ngAfterViewInit() {
32
32
  if (this.shouldCheckIframe) {
33
- const iframe = this.iframes?.first
34
- ?.nativeElement;
33
+ const iframe = this.iframes?.first?.nativeElement;
35
34
  if (iframe) {
36
35
  this.shouldCheckIframe = false;
37
36
  this.reloadIframe(iframe);
@@ -57,14 +56,18 @@ export class NgxDocViewerComponent {
57
56
  }
58
57
  this.configuredViewer = this.viewer;
59
58
  }
60
- if ((changes['url'] && changes['url'].currentValue !== changes['url'].previousValue) ||
59
+ if ((changes['url'] &&
60
+ changes['url'].currentValue !== changes['url'].previousValue) ||
61
61
  (changes['viewer'] &&
62
62
  changes['viewer'].currentValue !== changes['viewer'].previousValue) ||
63
63
  (changes['viewerUrl'] &&
64
- changes['viewerUrl'].currentValue !== changes['viewerUrl'].previousValue)) {
64
+ changes['viewerUrl'].currentValue !==
65
+ changes['viewerUrl'].previousValue)) {
65
66
  let viewerDetails = getViewerDetails(this.url, this.configuredViewer, this.queryParams, this.viewerUrl);
66
67
  this.externalViewer = viewerDetails.externalViewer;
67
- if (viewerDetails.externalViewer && this.overrideLocalhost && isLocalFile(this.url)) {
68
+ if (viewerDetails.externalViewer &&
69
+ this.overrideLocalhost &&
70
+ isLocalFile(this.url)) {
68
71
  const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);
69
72
  viewerDetails = getViewerDetails(newUrl, this.configuredViewer, this.queryParams, this.viewerUrl);
70
73
  }
@@ -76,7 +79,8 @@ export class NgxDocViewerComponent {
76
79
  this.fullUrl = undefined;
77
80
  }
78
81
  else if (viewerDetails.externalViewer ||
79
- this.configuredViewer === 'url') {
82
+ this.configuredViewer === 'url' ||
83
+ this.configuredViewer === 'pdf') {
80
84
  this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(viewerDetails.url);
81
85
  // see:
82
86
  // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives
@@ -107,8 +111,7 @@ export class NgxDocViewerComponent {
107
111
  this.checkIFrameSubscription.subscribe(iframe, this.googleCheckInterval, this.googleMaxChecks);
108
112
  }
109
113
  iframeLoaded() {
110
- const iframe = this.iframes?.first
111
- ?.nativeElement;
114
+ const iframe = this.iframes?.first?.nativeElement;
112
115
  if (iframe && iframeIsLoaded(iframe)) {
113
116
  this.loaded.emit(undefined);
114
117
  if (this.checkIFrameSubscription) {
@@ -117,50 +120,11 @@ export class NgxDocViewerComponent {
117
120
  }
118
121
  }
119
122
  }
120
- NgxDocViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
121
- NgxDocViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: { url: "url", queryParams: "queryParams", viewerUrl: "viewerUrl", googleCheckInterval: "googleCheckInterval", googleMaxChecks: "googleMaxChecks", disableContent: "disableContent", googleCheckContentLoaded: "googleCheckContentLoaded", viewer: "viewer", overrideLocalhost: "overrideLocalhost" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "iframes", predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerComponent, decorators: [{
123
+ NgxDocViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
124
+ NgxDocViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: { url: "url", queryParams: "queryParams", viewerUrl: "viewerUrl", googleCheckInterval: "googleCheckInterval", googleMaxChecks: "googleMaxChecks", disableContent: "disableContent", googleCheckContentLoaded: "googleCheckContentLoaded", viewer: "viewer", overrideLocalhost: "overrideLocalhost" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "iframes", predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerComponent, decorators: [{
123
126
  type: Component,
124
- args: [{ selector: 'ngx-doc-viewer', styles: [
125
- `
126
- :host {
127
- display: block;
128
- }
129
- .container {
130
- width: 100%;
131
- height: 100%;
132
- position: relative;
133
- }
134
- .overlay-popout-google {
135
- width: 40px;
136
- height: 40px;
137
- right: 26px;
138
- top: 11.5px;
139
- position: absolute;
140
- z-index: 1000;
141
- }
142
- .overlay-popout-office {
143
- width: 100px;
144
- height: 20px;
145
- right: 0;
146
- bottom: 0;
147
- position: absolute;
148
- z-index: 1000;
149
- }
150
- .overlay-full {
151
- width: 100%;
152
- height: 100%;
153
- right: 0;
154
- top: 0;
155
- position: absolute;
156
- z-index: 1000;
157
- }
158
- iframe {
159
- width: 100%;
160
- height: 100%;
161
- }
162
- `,
163
- ], template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n" }]
127
+ args: [{ selector: 'ngx-doc-viewer', template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"] }]
164
128
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { loaded: [{
165
129
  type: Output
166
130
  }], url: [{
@@ -185,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
185
149
  type: ViewChildren,
186
150
  args: ['iframe']
187
151
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb2Mtdmlld2VyL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb2Mtdmlld2VyL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsOERBQThEO0FBQzlELE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsRUFFaEIsTUFBTSxlQUFlLENBQUM7Ozs7QUFpRHZCLE1BQU0sT0FBTyxxQkFBcUI7SUFvQmhDLFlBQW9CLFlBQTBCLEVBQVUsTUFBYztRQUFsRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQjVELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUNwQixtQkFBYyxHQUE4QyxNQUFNLENBQUM7UUFDbkUsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLFdBQU0sR0FBZSxRQUFR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ImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBucndsL254L2VuZm9yY2UtbW9kdWxlLWJvdW5kYXJpZXNcclxuaW1wb3J0IHtcclxuICBnZXREb2N4VG9IdG1sLFxyXG4gIGdldFZpZXdlckRldGFpbHMsXHJcbiAgZ29vZ2xlQ2hlY2tTdWJzY3JpcHRpb24sXHJcbiAgaWZyYW1lSXNMb2FkZWQsXHJcbiAgaXNMb2NhbEZpbGUsXHJcbiAgcmVwbGFjZUxvY2FsVXJsLFxyXG4gIElGcmFtZVJlbG9hZGVyXHJcbn0gZnJvbSAnZG9jdmlld2hlbHBlcic7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbmV4cG9ydCB0eXBlIHZpZXdlclR5cGUgPSAnZ29vZ2xlJyB8ICdvZmZpY2UnIHwgJ21hbW1vdGgnIHwgJ3BkZicgfCAndXJsJztcclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ25neC1kb2Mtdmlld2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJ2RvY3VtZW50LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIDpob3N0IHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgICAuY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB9XHJcbiAgICAgIC5vdmVybGF5LXBvcG91dC1nb29nbGUge1xyXG4gICAgICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgICByaWdodDogMjZweDtcclxuICAgICAgICB0b3A6IDExLjVweDtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgfVxyXG4gICAgICAub3ZlcmxheS1wb3BvdXQtb2ZmaWNlIHtcclxuICAgICAgICB3aWR0aDogMTAwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgfVxyXG4gICAgICAub3ZlcmxheS1mdWxsIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmcmFtZSB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICBgLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hEb2NWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQE91dHB1dCgpIGxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHVybCA9ICcnO1xyXG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zID0gJyc7XHJcbiAgQElucHV0KCkgdmlld2VyVXJsID0gJyc7XHJcbiAgQElucHV0KCkgZ29vZ2xlQ2hlY2tJbnRlcnZhbCA9IDMwMDA7XHJcbiAgQElucHV0KCkgZ29vZ2xlTWF4Q2hlY2tzID0gNTtcclxuICBASW5wdXQoKSBkaXNhYmxlQ29udGVudDogJ25vbmUnIHwgJ2FsbCcgfCAncG9wb3V0JyB8ICdwb3BvdXQtaGlkZScgPSAnbm9uZSc7XHJcbiAgQElucHV0KCkgZ29vZ2xlQ2hlY2tDb250ZW50TG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSB2aWV3ZXI6IHZpZXdlclR5cGUgPSAnZ29vZ2xlJztcclxuICBASW5wdXQoKSBvdmVycmlkZUxvY2FsaG9zdCA9ICcnO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2lmcmFtZScpIGlmcmFtZXM/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gPSB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBmdWxsVXJsPzogU2FmZVJlc291cmNlVXJsID0gdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBleHRlcm5hbFZpZXdlciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkb2NIdG1sID0gJyc7XHJcbiAgcHVibGljIGNvbmZpZ3VyZWRWaWV3ZXI6IHZpZXdlclR5cGUgPSAnZ29vZ2xlJztcclxuICBwcml2YXRlIGNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uPzogSUZyYW1lUmVsb2FkZXIgPSB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBzaG91bGRDaGVja0lmcmFtZSA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7IH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkQ2hlY2tJZnJhbWUpIHtcclxuICAgICAgY29uc3QgaWZyYW1lID0gdGhpcy5pZnJhbWVzPy5maXJzdFxyXG4gICAgICAgID8ubmF0aXZlRWxlbWVudCBhcyBIVE1MSUZyYW1lRWxlbWVudDtcclxuICAgICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICAgIHRoaXMuc2hvdWxkQ2hlY2tJZnJhbWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlbG9hZElmcmFtZShpZnJhbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChcclxuICAgICAgY2hhbmdlcyAmJlxyXG4gICAgICBjaGFuZ2VzWyd2aWV3ZXInXSAmJlxyXG4gICAgICAoY2hhbmdlc1sndmlld2VyJ10uaXNGaXJzdENoYW5nZSB8fFxyXG4gICAgICAgIGNoYW5nZXNbJ3ZpZXdlciddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1sndmlld2VyJ10ucHJldmlvdXNWYWx1ZSlcclxuICAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy52aWV3ZXIgIT09ICdnb29nbGUnICYmXHJcbiAgICAgICAgdGhpcy52aWV3ZXIgIT09ICdvZmZpY2UnICYmXHJcbiAgICAgICAgdGhpcy52aWV3ZXIgIT09ICdtYW1tb3RoJyAmJlxyXG4gICAgICAgIHRoaXMudmlld2VyICE9PSAncGRmJyAmJlxyXG4gICAgICAgIHRoaXMudmlld2VyICE9PSAndXJsJ1xyXG4gICAgICApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgYFVuc3VwcG9ydGVkIHZpZXdlcjogJyR7dGhpcy52aWV3ZXJ9Jy4gU3VwcG9ydGVkIHZpZXdlcnM6IGdvb2dsZSwgb2ZmaWNlLCBtYW1tb3RoIGFuZCBwZGZgXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyZWRWaWV3ZXIgPSB0aGlzLnZpZXdlcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGFuZ2VzWyd1cmwnXSAmJiBjaGFuZ2VzWyd1cmwnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3VybCddLnByZXZpb3VzVmFsdWUpIHx8XHJcbiAgICAgIChjaGFuZ2VzWyd2aWV3ZXInXSAmJlxyXG4gICAgICAgIGNoYW5nZXNbJ3ZpZXdlciddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1sndmlld2VyJ10ucHJldmlvdXNWYWx1ZSkgfHxcclxuICAgICAgKGNoYW5nZXNbJ3ZpZXdlclVybCddICYmXHJcbiAgICAgICAgY2hhbmdlc1sndmlld2VyVXJsJ10uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWyd2aWV3ZXJVcmwnXS5wcmV2aW91c1ZhbHVlKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB2aWV3ZXJEZXRhaWxzID0gZ2V0Vmlld2VyRGV0YWlscyhcclxuICAgICAgICB0aGlzLnVybCxcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZWRWaWV3ZXIsXHJcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyxcclxuICAgICAgICB0aGlzLnZpZXdlclVybFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmV4dGVybmFsVmlld2VyID0gdmlld2VyRGV0YWlscy5leHRlcm5hbFZpZXdlcjtcclxuICAgICAgaWYgKHZpZXdlckRldGFpbHMuZXh0ZXJuYWxWaWV3ZXIgJiYgdGhpcy5vdmVycmlkZUxvY2FsaG9zdCAmJiBpc0xvY2FsRmlsZSh0aGlzLnVybCkpIHtcclxuICAgICAgICBjb25zdCBuZXdVcmwgPSByZXBsYWNlTG9jYWxVcmwodGhpcy51cmwsIHRoaXMub3ZlcnJpZGVMb2NhbGhvc3QpO1xyXG4gICAgICAgIHZpZXdlckRldGFpbHMgPSBnZXRWaWV3ZXJEZXRhaWxzKFxyXG4gICAgICAgICAgbmV3VXJsLFxyXG4gICAgICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyLFxyXG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyxcclxuICAgICAgICAgIHRoaXMudmlld2VyVXJsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRvY0h0bWwgPSAnJztcclxuICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnVybCkge1xyXG4gICAgICAgIHRoaXMuZnVsbFVybCA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB2aWV3ZXJEZXRhaWxzLmV4dGVybmFsVmlld2VyIHx8XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyID09PSAndXJsJ1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZ1bGxVcmwgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXHJcbiAgICAgICAgICB2aWV3ZXJEZXRhaWxzLnVybFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gc2VlOlxyXG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwNDE0MDM5L2dvb2dsZS1kb2NzLXZpZXdlci1yZXR1cm5pbmctMjA0LXJlc3BvbnNlcy1uby1sb25nZXItd29ya2luZy1hbHRlcm5hdGl2ZXNcclxuICAgICAgICAvLyBoYWNrIHRvIHJlbG9hZCBpZnJhbWUgaWYgaXQncyBub3QgbG9hZGVkLlxyXG4gICAgICAgIC8vIHdvdWxkIG1heWJlIGJlIGJldHRlciB0byB1c2Ugdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tIGJ1dCBzZWVtcyBub3QgdG8gd29yayB3aXRoIHNhcyB0b2tlbi5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyZWRWaWV3ZXIgPT09ICdnb29nbGUnICYmXHJcbiAgICAgICAgICB0aGlzLmdvb2dsZUNoZWNrQ29udGVudExvYWRlZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBpZiBpdCdzIG5vdCBsb2FkZWQgYWZ0ZXIgdGhlIGdvb2dsZUludGVydmFsQ2hlY2ssIHRoZW4gb3BlbiBsb2FkIGFnYWluLlxyXG4gICAgICAgICAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmlmcmFtZXM/LmZpcnN0XHJcbiAgICAgICAgICAgICAgPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxJRnJhbWVFbGVtZW50O1xyXG4gICAgICAgICAgICBpZiAoaWZyYW1lKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRJZnJhbWUoaWZyYW1lKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNob3VsZENoZWNrSWZyYW1lID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJlZFZpZXdlciA9PT0gJ21hbW1vdGgnKSB7XHJcbiAgICAgICAgdGhpcy5kb2NIdG1sID0gYXdhaXQgZ2V0RG9jeFRvSHRtbCh0aGlzLnVybCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVsb2FkSWZyYW1lKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpIHtcclxuICAgIHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24gPSBnb29nbGVDaGVja1N1YnNjcmlwdGlvbigpO1xyXG4gICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbi5zdWJzY3JpYmUoXHJcbiAgICAgIGlmcmFtZSxcclxuICAgICAgdGhpcy5nb29nbGVDaGVja0ludGVydmFsLFxyXG4gICAgICB0aGlzLmdvb2dsZU1heENoZWNrc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmcmFtZUxvYWRlZCgpIHtcclxuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuaWZyYW1lcz8uZmlyc3RcclxuICAgICAgPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxJRnJhbWVFbGVtZW50O1xyXG4gICAgaWYgKGlmcmFtZSAmJiBpZnJhbWVJc0xvYWRlZChpZnJhbWUpKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFleHRlcm5hbFZpZXdlclwiPlxyXG4gIDxkaXYgKm5nSWY9XCJjb25maWd1cmVkVmlld2VyICE9PSAncGRmJ1wiIFtpbm5lckh0bWxdPVwiZG9jSHRtbFwiPjwvZGl2PlxyXG4gIDxvYmplY3RcclxuICAgICpuZ0lmPVwiZnVsbFVybCAmJiBjb25maWd1cmVkVmlld2VyID09PSAncGRmJ1wiXHJcbiAgICBbZGF0YV09XCJmdWxsVXJsXCJcclxuICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxyXG4gICAgd2lkdGg9XCIxMDAlXCJcclxuICAgIGhlaWdodD1cIjEwMCVcIlxyXG4gID5cclxuICAgIDxwPlxyXG4gICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBQREZzLlxyXG4gICAgICA8YSBbaHJlZl09XCJmdWxsVXJsXCI+RG93bmxvYWQgdGhlIFBERjwvYT4uXHJcbiAgICA8L3A+XHJcbiAgPC9vYmplY3Q+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiZXh0ZXJuYWxWaWV3ZXJcIj5cclxuICA8aWZyYW1lXHJcbiAgICAobG9hZCk9XCJpZnJhbWVMb2FkZWQoKVwiXHJcbiAgICAqbmdJZj1cImZ1bGxVcmwgJiYgZGlzYWJsZUNvbnRlbnQgPT09ICdub25lJ1wiXHJcbiAgICAjaWZyYW1lXHJcbiAgICBpZD1cImlmcmFtZS1kb2Mtdmlld2VyXCJcclxuICAgIGZyYW1lQm9yZGVyPVwiMFwiXHJcbiAgICBbc3JjXT1cImZ1bGxVcmxcIlxyXG4gID48L2lmcmFtZT5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJkaXNhYmxlQ29udGVudCAhPT0gJ25vbmUnXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtjbGFzcy5vdmVybGF5LWZ1bGxdPVwiZGlzYWJsZUNvbnRlbnQgPT09ICdhbGwnXCJcclxuICAgICAgW2NsYXNzLm92ZXJsYXktcG9wb3V0LWdvb2dsZV09XCJcclxuICAgICAgICBjb25maWd1cmVkVmlld2VyID09PSAnZ29vZ2xlJyAmJlxyXG4gICAgICAgIChkaXNhYmxlQ29udGVudCA9PT0gJ3BvcG91dCcgfHwgZGlzYWJsZUNvbnRlbnQgPT09ICdwb3BvdXQtaGlkZScpXHJcbiAgICAgIFwiXHJcbiAgICAgIFtjbGFzcy5vdmVybGF5LXBvcG91dC1vZmZpY2VdPVwiXHJcbiAgICAgICAgY29uZmlndXJlZFZpZXdlciA9PT0gJ29mZmljZScgJiZcclxuICAgICAgICAoZGlzYWJsZUNvbnRlbnQgPT09ICdwb3BvdXQnIHx8IGRpc2FibGVDb250ZW50ID09PSAncG9wb3V0LWhpZGUnKVxyXG4gICAgICBcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJcclxuICAgICAgICBkaXNhYmxlQ29udGVudCA9PT0gJ3BvcG91dC1oaWRlJyA/ICcjZmZmJyA6ICd0cmFuc3BhcmVudCdcclxuICAgICAgXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxpZnJhbWVcclxuICAgICAgKGxvYWQpPVwiaWZyYW1lTG9hZGVkKClcIlxyXG4gICAgICAqbmdJZj1cImZ1bGxVcmxcIlxyXG4gICAgICAjaWZyYW1lXHJcbiAgICAgIGlkPVwiaWZyYW1lXCJcclxuICAgICAgZnJhbWVCb3JkZXI9XCIwXCJcclxuICAgICAgW3NyY109XCJmdWxsVXJsXCJcclxuICAgID48L2lmcmFtZT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb2Mtdmlld2VyL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb2Mtdmlld2VyL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsOERBQThEO0FBQzlELE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsR0FFaEIsTUFBTSxlQUFlLENBQUM7Ozs7QUFpRHZCLE1BQU0sT0FBTyxxQkFBcUI7SUFzQmhDLFlBQW9CLFlBQTBCLEVBQVUsTUFBYztRQUFsRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQjVELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUNwQixtQkFBYyxHQUE4QyxNQUFNLENBQUM7UUFDbkUsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLFdBQU0sR0FBZSxRQUFR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SW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQG5yd2wvbngvZW5mb3JjZS1tb2R1bGUtYm91bmRhcmllc1xyXG5pbXBvcnQge1xyXG4gIGdldERvY3hUb0h0bWwsXHJcbiAgZ2V0Vmlld2VyRGV0YWlscyxcclxuICBnb29nbGVDaGVja1N1YnNjcmlwdGlvbixcclxuICBpZnJhbWVJc0xvYWRlZCxcclxuICBpc0xvY2FsRmlsZSxcclxuICByZXBsYWNlTG9jYWxVcmwsXHJcbiAgSUZyYW1lUmVsb2FkZXIsXHJcbn0gZnJvbSAnZG9jdmlld2hlbHBlcic7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbmV4cG9ydCB0eXBlIHZpZXdlclR5cGUgPSAnZ29vZ2xlJyB8ICdvZmZpY2UnIHwgJ21hbW1vdGgnIHwgJ3BkZicgfCAndXJsJztcclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ25neC1kb2Mtdmlld2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJ2RvY3VtZW50LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIDpob3N0IHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgICAuY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB9XHJcbiAgICAgIC5vdmVybGF5LXBvcG91dC1nb29nbGUge1xyXG4gICAgICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgICByaWdodDogMjZweDtcclxuICAgICAgICB0b3A6IDExLjVweDtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgfVxyXG4gICAgICAub3ZlcmxheS1wb3BvdXQtb2ZmaWNlIHtcclxuICAgICAgICB3aWR0aDogMTAwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgfVxyXG4gICAgICAub3ZlcmxheS1mdWxsIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmcmFtZSB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICBgLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hEb2NWaWV3ZXJDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBAT3V0cHV0KCkgbG9hZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgdXJsID0gJyc7XHJcbiAgQElucHV0KCkgcXVlcnlQYXJhbXMgPSAnJztcclxuICBASW5wdXQoKSB2aWV3ZXJVcmwgPSAnJztcclxuICBASW5wdXQoKSBnb29nbGVDaGVja0ludGVydmFsID0gMzAwMDtcclxuICBASW5wdXQoKSBnb29nbGVNYXhDaGVja3MgPSA1O1xyXG4gIEBJbnB1dCgpIGRpc2FibGVDb250ZW50OiAnbm9uZScgfCAnYWxsJyB8ICdwb3BvdXQnIHwgJ3BvcG91dC1oaWRlJyA9ICdub25lJztcclxuICBASW5wdXQoKSBnb29nbGVDaGVja0NvbnRlbnRMb2FkZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHZpZXdlcjogdmlld2VyVHlwZSA9ICdnb29nbGUnO1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlTG9jYWxob3N0ID0gJyc7XHJcbiAgQFZpZXdDaGlsZHJlbignaWZyYW1lJykgaWZyYW1lcz86IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIGZ1bGxVcmw/OiBTYWZlUmVzb3VyY2VVcmwgPSB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGV4dGVybmFsVmlld2VyID0gZmFsc2U7XHJcbiAgcHVibGljIGRvY0h0bWwgPSAnJztcclxuICBwdWJsaWMgY29uZmlndXJlZFZpZXdlcjogdmlld2VyVHlwZSA9ICdnb29nbGUnO1xyXG4gIHByaXZhdGUgY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24/OiBJRnJhbWVSZWxvYWRlciA9IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIHNob3VsZENoZWNrSWZyYW1lID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZENoZWNrSWZyYW1lKSB7XHJcbiAgICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuaWZyYW1lcz8uZmlyc3Q/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElGcmFtZUVsZW1lbnQ7XHJcbiAgICAgIGlmIChpZnJhbWUpIHtcclxuICAgICAgICB0aGlzLnNob3VsZENoZWNrSWZyYW1lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRJZnJhbWUoaWZyYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGNoYW5nZXMgJiZcclxuICAgICAgY2hhbmdlc1sndmlld2VyJ10gJiZcclxuICAgICAgKGNoYW5nZXNbJ3ZpZXdlciddLmlzRmlyc3RDaGFuZ2UgfHxcclxuICAgICAgICBjaGFuZ2VzWyd2aWV3ZXInXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3ZpZXdlciddLnByZXZpb3VzVmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMudmlld2VyICE9PSAnZ29vZ2xlJyAmJlxyXG4gICAgICAgIHRoaXMudmlld2VyICE9PSAnb2ZmaWNlJyAmJlxyXG4gICAgICAgIHRoaXMudmlld2VyICE9PSAnbWFtbW90aCcgJiZcclxuICAgICAgICB0aGlzLnZpZXdlciAhPT0gJ3BkZicgJiZcclxuICAgICAgICB0aGlzLnZpZXdlciAhPT0gJ3VybCdcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIGBVbnN1cHBvcnRlZCB2aWV3ZXI6ICcke3RoaXMudmlld2VyfScuIFN1cHBvcnRlZCB2aWV3ZXJzOiBnb29nbGUsIG9mZmljZSwgbWFtbW90aCBhbmQgcGRmYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyID0gdGhpcy52aWV3ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAoY2hhbmdlc1sndXJsJ10gJiZcclxuICAgICAgICBjaGFuZ2VzWyd1cmwnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3VybCddLnByZXZpb3VzVmFsdWUpIHx8XHJcbiAgICAgIChjaGFuZ2VzWyd2aWV3ZXInXSAmJlxyXG4gICAgICAgIGNoYW5nZXNbJ3ZpZXdlciddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1sndmlld2VyJ10ucHJldmlvdXNWYWx1ZSkgfHxcclxuICAgICAgKGNoYW5nZXNbJ3ZpZXdlclVybCddICYmXHJcbiAgICAgICAgY2hhbmdlc1sndmlld2VyVXJsJ10uY3VycmVudFZhbHVlICE9PVxyXG4gICAgICAgICAgY2hhbmdlc1sndmlld2VyVXJsJ10ucHJldmlvdXNWYWx1ZSlcclxuICAgICkge1xyXG4gICAgICBsZXQgdmlld2VyRGV0YWlscyA9IGdldFZpZXdlckRldGFpbHMoXHJcbiAgICAgICAgdGhpcy51cmwsXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyLFxyXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXMsXHJcbiAgICAgICAgdGhpcy52aWV3ZXJVcmxcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5leHRlcm5hbFZpZXdlciA9IHZpZXdlckRldGFpbHMuZXh0ZXJuYWxWaWV3ZXI7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB2aWV3ZXJEZXRhaWxzLmV4dGVybmFsVmlld2VyICYmXHJcbiAgICAgICAgdGhpcy5vdmVycmlkZUxvY2FsaG9zdCAmJlxyXG4gICAgICAgIGlzTG9jYWxGaWxlKHRoaXMudXJsKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBuZXdVcmwgPSByZXBsYWNlTG9jYWxVcmwodGhpcy51cmwsIHRoaXMub3ZlcnJpZGVMb2NhbGhvc3QpO1xyXG4gICAgICAgIHZpZXdlckRldGFpbHMgPSBnZXRWaWV3ZXJEZXRhaWxzKFxyXG4gICAgICAgICAgbmV3VXJsLFxyXG4gICAgICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyLFxyXG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyxcclxuICAgICAgICAgIHRoaXMudmlld2VyVXJsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRvY0h0bWwgPSAnJztcclxuICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnVybCkge1xyXG4gICAgICAgIHRoaXMuZnVsbFVybCA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB2aWV3ZXJEZXRhaWxzLmV4dGVybmFsVmlld2VyIHx8XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyID09PSAndXJsJyB8fFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlZFZpZXdlciA9PT0gJ3BkZidcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mdWxsVXJsID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxyXG4gICAgICAgICAgdmlld2VyRGV0YWlscy51cmxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHNlZTpcclxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDQxNDAzOS9nb29nbGUtZG9jcy12aWV3ZXItcmV0dXJuaW5nLTIwNC1yZXNwb25zZXMtbm8tbG9uZ2VyLXdvcmtpbmctYWx0ZXJuYXRpdmVzXHJcbiAgICAgICAgLy8gaGFjayB0byByZWxvYWQgaWZyYW1lIGlmIGl0J3Mgbm90IGxvYWRlZC5cclxuICAgICAgICAvLyB3b3VsZCBtYXliZSBiZSBiZXR0ZXIgdG8gdXNlIHZpZXcub2ZmaWNlYXBwcy5saXZlLmNvbSBidXQgc2VlbXMgbm90IHRvIHdvcmsgd2l0aCBzYXMgdG9rZW4uXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5jb25maWd1cmVkVmlld2VyID09PSAnZ29vZ2xlJyAmJlxyXG4gICAgICAgICAgdGhpcy5nb29nbGVDaGVja0NvbnRlbnRMb2FkZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gaWYgaXQncyBub3QgbG9hZGVkIGFmdGVyIHRoZSBnb29nbGVJbnRlcnZhbENoZWNrLCB0aGVuIG9wZW4gbG9hZCBhZ2Fpbi5cclxuICAgICAgICAgICAgY29uc3QgaWZyYW1lID0gdGhpcy5pZnJhbWVzPy5maXJzdFxyXG4gICAgICAgICAgICAgID8ubmF0aXZlRWxlbWVudCBhcyBIVE1MSUZyYW1lRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkSWZyYW1lKGlmcmFtZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG91bGRDaGVja0lmcmFtZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyZWRWaWV3ZXIgPT09ICdtYW1tb3RoJykge1xyXG4gICAgICAgIHRoaXMuZG9jSHRtbCA9IGF3YWl0IGdldERvY3hUb0h0bWwodGhpcy51cmwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbG9hZElmcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uID0gZ29vZ2xlQ2hlY2tTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24uc3Vic2NyaWJlKFxyXG4gICAgICBpZnJhbWUsXHJcbiAgICAgIHRoaXMuZ29vZ2xlQ2hlY2tJbnRlcnZhbCxcclxuICAgICAgdGhpcy5nb29nbGVNYXhDaGVja3NcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZnJhbWVMb2FkZWQoKSB7XHJcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmlmcmFtZXM/LmZpcnN0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxJRnJhbWVFbGVtZW50O1xyXG4gICAgaWYgKGlmcmFtZSAmJiBpZnJhbWVJc0xvYWRlZChpZnJhbWUpKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFleHRlcm5hbFZpZXdlclwiPlxyXG4gIDxkaXYgKm5nSWY9XCJjb25maWd1cmVkVmlld2VyICE9PSAncGRmJ1wiIFtpbm5lckh0bWxdPVwiZG9jSHRtbFwiPjwvZGl2PlxyXG4gIDxvYmplY3RcclxuICAgICpuZ0lmPVwiZnVsbFVybCAmJiBjb25maWd1cmVkVmlld2VyID09PSAncGRmJ1wiXHJcbiAgICBbZGF0YV09XCJmdWxsVXJsXCJcclxuICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxyXG4gICAgd2lkdGg9XCIxMDAlXCJcclxuICAgIGhlaWdodD1cIjEwMCVcIlxyXG4gID5cclxuICAgIDxwPlxyXG4gICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBQREZzLlxyXG4gICAgICA8YSBbaHJlZl09XCJmdWxsVXJsXCI+RG93bmxvYWQgdGhlIFBERjwvYT4uXHJcbiAgICA8L3A+XHJcbiAgPC9vYmplY3Q+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiZXh0ZXJuYWxWaWV3ZXJcIj5cclxuICA8aWZyYW1lXHJcbiAgICAobG9hZCk9XCJpZnJhbWVMb2FkZWQoKVwiXHJcbiAgICAqbmdJZj1cImZ1bGxVcmwgJiYgZGlzYWJsZUNvbnRlbnQgPT09ICdub25lJ1wiXHJcbiAgICAjaWZyYW1lXHJcbiAgICBpZD1cImlmcmFtZS1kb2Mtdmlld2VyXCJcclxuICAgIGZyYW1lQm9yZGVyPVwiMFwiXHJcbiAgICBbc3JjXT1cImZ1bGxVcmxcIlxyXG4gID48L2lmcmFtZT5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJkaXNhYmxlQ29udGVudCAhPT0gJ25vbmUnXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtjbGFzcy5vdmVybGF5LWZ1bGxdPVwiZGlzYWJsZUNvbnRlbnQgPT09ICdhbGwnXCJcclxuICAgICAgW2NsYXNzLm92ZXJsYXktcG9wb3V0LWdvb2dsZV09XCJcclxuICAgICAgICBjb25maWd1cmVkVmlld2VyID09PSAnZ29vZ2xlJyAmJlxyXG4gICAgICAgIChkaXNhYmxlQ29udGVudCA9PT0gJ3BvcG91dCcgfHwgZGlzYWJsZUNvbnRlbnQgPT09ICdwb3BvdXQtaGlkZScpXHJcbiAgICAgIFwiXHJcbiAgICAgIFtjbGFzcy5vdmVybGF5LXBvcG91dC1vZmZpY2VdPVwiXHJcbiAgICAgICAgY29uZmlndXJlZFZpZXdlciA9PT0gJ29mZmljZScgJiZcclxuICAgICAgICAoZGlzYWJsZUNvbnRlbnQgPT09ICdwb3BvdXQnIHx8IGRpc2FibGVDb250ZW50ID09PSAncG9wb3V0LWhpZGUnKVxyXG4gICAgICBcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJcclxuICAgICAgICBkaXNhYmxlQ29udGVudCA9PT0gJ3BvcG91dC1oaWRlJyA/ICcjZmZmJyA6ICd0cmFuc3BhcmVudCdcclxuICAgICAgXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxpZnJhbWVcclxuICAgICAgKGxvYWQpPVwiaWZyYW1lTG9hZGVkKClcIlxyXG4gICAgICAqbmdJZj1cImZ1bGxVcmxcIlxyXG4gICAgICAjaWZyYW1lXHJcbiAgICAgIGlkPVwiaWZyYW1lXCJcclxuICAgICAgZnJhbWVCb3JkZXI9XCIwXCJcclxuICAgICAgW3NyY109XCJmdWxsVXJsXCJcclxuICAgID48L2lmcmFtZT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -4,10 +4,10 @@ import { CommonModule } from '@angular/common';
4
4
  import * as i0 from "@angular/core";
5
5
  export class NgxDocViewerModule {
6
6
  }
7
- NgxDocViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- NgxDocViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, declarations: [NgxDocViewerComponent], imports: [CommonModule], exports: [NgxDocViewerComponent] });
9
- NgxDocViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, imports: [[CommonModule]] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, decorators: [{
7
+ NgxDocViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ NgxDocViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, declarations: [NgxDocViewerComponent], imports: [CommonModule], exports: [NgxDocViewerComponent] });
9
+ NgxDocViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, imports: [CommonModule] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [CommonModule],
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
15
15
  exports: [NgxDocViewerComponent],
16
16
  }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb2Mtdmlld2VyL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUhkLHFCQUFxQixhQUQxQixZQUFZLGFBRVoscUJBQXFCO2dIQUVwQixrQkFBa0IsWUFKcEIsQ0FBQyxZQUFZLENBQUM7MkZBSVosa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5neERvY1ZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW05neERvY1ZpZXdlckNvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW05neERvY1ZpZXdlckNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hEb2NWaWV3ZXJNb2R1bGUge31cclxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb2Mtdmlld2VyL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUhkLHFCQUFxQixhQUQxQixZQUFZLGFBRVoscUJBQXFCO2dIQUVwQixrQkFBa0IsWUFKbkIsWUFBWTsyRkFJWCxrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmd4RG9jVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kb2N1bWVudC12aWV3ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgZGVjbGFyYXRpb25zOiBbTmd4RG9jVmlld2VyQ29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbTmd4RG9jVmlld2VyQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neERvY1ZpZXdlck1vZHVsZSB7fVxyXG4iXX0=
@@ -59,14 +59,18 @@ class NgxDocViewerComponent {
59
59
  }
60
60
  this.configuredViewer = this.viewer;
61
61
  }
62
- if ((changes['url'] && changes['url'].currentValue !== changes['url'].previousValue) ||
62
+ if ((changes['url'] &&
63
+ changes['url'].currentValue !== changes['url'].previousValue) ||
63
64
  (changes['viewer'] &&
64
65
  changes['viewer'].currentValue !== changes['viewer'].previousValue) ||
65
66
  (changes['viewerUrl'] &&
66
- changes['viewerUrl'].currentValue !== changes['viewerUrl'].previousValue)) {
67
+ changes['viewerUrl'].currentValue !==
68
+ changes['viewerUrl'].previousValue)) {
67
69
  let viewerDetails = getViewerDetails(this.url, this.configuredViewer, this.queryParams, this.viewerUrl);
68
70
  this.externalViewer = viewerDetails.externalViewer;
69
- if (viewerDetails.externalViewer && this.overrideLocalhost && isLocalFile(this.url)) {
71
+ if (viewerDetails.externalViewer &&
72
+ this.overrideLocalhost &&
73
+ isLocalFile(this.url)) {
70
74
  const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);
71
75
  viewerDetails = getViewerDetails(newUrl, this.configuredViewer, this.queryParams, this.viewerUrl);
72
76
  }
@@ -78,7 +82,8 @@ class NgxDocViewerComponent {
78
82
  this.fullUrl = undefined;
79
83
  }
80
84
  else if (viewerDetails.externalViewer ||
81
- this.configuredViewer === 'url') {
85
+ this.configuredViewer === 'url' ||
86
+ this.configuredViewer === 'pdf') {
82
87
  this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(viewerDetails.url);
83
88
  // see:
84
89
  // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives
@@ -120,50 +125,11 @@ class NgxDocViewerComponent {
120
125
  }
121
126
  }
122
127
  }
123
- NgxDocViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
124
- NgxDocViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: { url: "url", queryParams: "queryParams", viewerUrl: "viewerUrl", googleCheckInterval: "googleCheckInterval", googleMaxChecks: "googleMaxChecks", disableContent: "disableContent", googleCheckContentLoaded: "googleCheckContentLoaded", viewer: "viewer", overrideLocalhost: "overrideLocalhost" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "iframes", predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerComponent, decorators: [{
128
+ NgxDocViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
129
+ NgxDocViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: { url: "url", queryParams: "queryParams", viewerUrl: "viewerUrl", googleCheckInterval: "googleCheckInterval", googleMaxChecks: "googleMaxChecks", disableContent: "disableContent", googleCheckContentLoaded: "googleCheckContentLoaded", viewer: "viewer", overrideLocalhost: "overrideLocalhost" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "iframes", predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerComponent, decorators: [{
126
131
  type: Component,
127
- args: [{ selector: 'ngx-doc-viewer', styles: [
128
- `
129
- :host {
130
- display: block;
131
- }
132
- .container {
133
- width: 100%;
134
- height: 100%;
135
- position: relative;
136
- }
137
- .overlay-popout-google {
138
- width: 40px;
139
- height: 40px;
140
- right: 26px;
141
- top: 11.5px;
142
- position: absolute;
143
- z-index: 1000;
144
- }
145
- .overlay-popout-office {
146
- width: 100px;
147
- height: 20px;
148
- right: 0;
149
- bottom: 0;
150
- position: absolute;
151
- z-index: 1000;
152
- }
153
- .overlay-full {
154
- width: 100%;
155
- height: 100%;
156
- right: 0;
157
- top: 0;
158
- position: absolute;
159
- z-index: 1000;
160
- }
161
- iframe {
162
- width: 100%;
163
- height: 100%;
164
- }
165
- `,
166
- ], template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n" }]
132
+ args: [{ selector: 'ngx-doc-viewer', template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"] }]
167
133
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { loaded: [{
168
134
  type: Output
169
135
  }], url: [{
@@ -191,10 +157,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
191
157
 
192
158
  class NgxDocViewerModule {
193
159
  }
194
- NgxDocViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
195
- NgxDocViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, declarations: [NgxDocViewerComponent], imports: [CommonModule], exports: [NgxDocViewerComponent] });
196
- NgxDocViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, imports: [[CommonModule]] });
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, decorators: [{
160
+ NgxDocViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
161
+ NgxDocViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, declarations: [NgxDocViewerComponent], imports: [CommonModule], exports: [NgxDocViewerComponent] });
162
+ NgxDocViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, imports: [CommonModule] });
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, decorators: [{
198
164
  type: NgModule,
199
165
  args: [{
200
166
  imports: [CommonModule],
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-doc-viewer.mjs","sources":["../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.ts","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.html","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.module.ts","../../../../packages/ngx-doc-viewer/src/ngx-doc-viewer.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n Output,\r\n ViewChildren,\r\n QueryList,\r\n ElementRef,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { EventEmitter } from '@angular/core';\r\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\r\nimport {\r\n getDocxToHtml,\r\n getViewerDetails,\r\n googleCheckSubscription,\r\n iframeIsLoaded,\r\n isLocalFile,\r\n replaceLocalUrl,\r\n IFrameReloader\r\n} from 'docviewhelper';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ngx-doc-viewer',\r\n templateUrl: 'document-viewer.component.html',\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n .container {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n .overlay-popout-google {\r\n width: 40px;\r\n height: 40px;\r\n right: 26px;\r\n top: 11.5px;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-popout-office {\r\n width: 100px;\r\n height: 20px;\r\n right: 0;\r\n bottom: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-full {\r\n width: 100%;\r\n height: 100%;\r\n right: 0;\r\n top: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n iframe {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class NgxDocViewerComponent implements OnChanges, OnDestroy, AfterViewInit {\r\n @Output() loaded: EventEmitter<void> = new EventEmitter();\r\n @Input() url = '';\r\n @Input() queryParams = '';\r\n @Input() viewerUrl = '';\r\n @Input() googleCheckInterval = 3000;\r\n @Input() googleMaxChecks = 5;\r\n @Input() disableContent: 'none' | 'all' | 'popout' | 'popout-hide' = 'none';\r\n @Input() googleCheckContentLoaded = true;\r\n @Input() viewer: viewerType = 'google';\r\n @Input() overrideLocalhost = '';\r\n @ViewChildren('iframe') iframes?: QueryList<ElementRef> = undefined;\r\n\r\n public fullUrl?: SafeResourceUrl = undefined;\r\n public externalViewer = false;\r\n public docHtml = '';\r\n public configuredViewer: viewerType = 'google';\r\n private checkIFrameSubscription?: IFrameReloader = undefined;\r\n private shouldCheckIframe = false;\r\n\r\n constructor(private domSanitizer: DomSanitizer, private ngZone: NgZone) { }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.shouldCheckIframe) {\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.shouldCheckIframe = false;\r\n this.reloadIframe(iframe);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n if (\r\n changes &&\r\n changes['viewer'] &&\r\n (changes['viewer'].isFirstChange ||\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue)\r\n ) {\r\n if (\r\n this.viewer !== 'google' &&\r\n this.viewer !== 'office' &&\r\n this.viewer !== 'mammoth' &&\r\n this.viewer !== 'pdf' &&\r\n this.viewer !== 'url'\r\n ) {\r\n console.error(\r\n `Unsupported viewer: '${this.viewer}'. Supported viewers: google, office, mammoth and pdf`\r\n );\r\n }\r\n this.configuredViewer = this.viewer;\r\n }\r\n\r\n if (\r\n (changes['url'] && changes['url'].currentValue !== changes['url'].previousValue) ||\r\n (changes['viewer'] &&\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue) ||\r\n (changes['viewerUrl'] &&\r\n changes['viewerUrl'].currentValue !== changes['viewerUrl'].previousValue)\r\n ) {\r\n let viewerDetails = getViewerDetails(\r\n this.url,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n this.externalViewer = viewerDetails.externalViewer;\r\n if (viewerDetails.externalViewer && this.overrideLocalhost && isLocalFile(this.url)) {\r\n const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);\r\n viewerDetails = getViewerDetails(\r\n newUrl,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n }\r\n this.docHtml = '';\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n if (!this.url) {\r\n this.fullUrl = undefined;\r\n } else if (\r\n viewerDetails.externalViewer ||\r\n this.configuredViewer === 'url'\r\n ) {\r\n this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n viewerDetails.url\r\n );\r\n // see:\r\n // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives\r\n // hack to reload iframe if it's not loaded.\r\n // would maybe be better to use view.officeapps.live.com but seems not to work with sas token.\r\n if (\r\n this.configuredViewer === 'google' &&\r\n this.googleCheckContentLoaded\r\n ) {\r\n this.ngZone.runOutsideAngular(() => {\r\n // if it's not loaded after the googleIntervalCheck, then open load again.\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.reloadIframe(iframe);\r\n } else {\r\n this.shouldCheckIframe = true;\r\n }\r\n });\r\n }\r\n } else if (this.configuredViewer === 'mammoth') {\r\n this.docHtml = await getDocxToHtml(this.url);\r\n }\r\n }\r\n }\r\n\r\n private reloadIframe(iframe: HTMLIFrameElement) {\r\n this.checkIFrameSubscription = googleCheckSubscription();\r\n this.checkIFrameSubscription.subscribe(\r\n iframe,\r\n this.googleCheckInterval,\r\n this.googleMaxChecks\r\n );\r\n }\r\n\r\n iframeLoaded() {\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe && iframeIsLoaded(iframe)) {\r\n this.loaded.emit(undefined);\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n","import { NgxDocViewerComponent } from './document-viewer.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [NgxDocViewerComponent],\r\n exports: [NgxDocViewerComponent],\r\n})\r\nexport class NgxDocViewerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-doc-viewer.mjs","sources":["../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.ts","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.html","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.module.ts","../../../../packages/ngx-doc-viewer/src/ngx-doc-viewer.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n Output,\r\n ViewChildren,\r\n QueryList,\r\n ElementRef,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { EventEmitter } from '@angular/core';\r\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\r\nimport {\r\n getDocxToHtml,\r\n getViewerDetails,\r\n googleCheckSubscription,\r\n iframeIsLoaded,\r\n isLocalFile,\r\n replaceLocalUrl,\r\n IFrameReloader,\r\n} from 'docviewhelper';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ngx-doc-viewer',\r\n templateUrl: 'document-viewer.component.html',\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n .container {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n .overlay-popout-google {\r\n width: 40px;\r\n height: 40px;\r\n right: 26px;\r\n top: 11.5px;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-popout-office {\r\n width: 100px;\r\n height: 20px;\r\n right: 0;\r\n bottom: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-full {\r\n width: 100%;\r\n height: 100%;\r\n right: 0;\r\n top: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n iframe {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class NgxDocViewerComponent\r\n implements OnChanges, OnDestroy, AfterViewInit\r\n{\r\n @Output() loaded: EventEmitter<void> = new EventEmitter();\r\n @Input() url = '';\r\n @Input() queryParams = '';\r\n @Input() viewerUrl = '';\r\n @Input() googleCheckInterval = 3000;\r\n @Input() googleMaxChecks = 5;\r\n @Input() disableContent: 'none' | 'all' | 'popout' | 'popout-hide' = 'none';\r\n @Input() googleCheckContentLoaded = true;\r\n @Input() viewer: viewerType = 'google';\r\n @Input() overrideLocalhost = '';\r\n @ViewChildren('iframe') iframes?: QueryList<ElementRef> = undefined;\r\n\r\n public fullUrl?: SafeResourceUrl = undefined;\r\n public externalViewer = false;\r\n public docHtml = '';\r\n public configuredViewer: viewerType = 'google';\r\n private checkIFrameSubscription?: IFrameReloader = undefined;\r\n private shouldCheckIframe = false;\r\n\r\n constructor(private domSanitizer: DomSanitizer, private ngZone: NgZone) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.shouldCheckIframe) {\r\n const iframe = this.iframes?.first?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.shouldCheckIframe = false;\r\n this.reloadIframe(iframe);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n if (\r\n changes &&\r\n changes['viewer'] &&\r\n (changes['viewer'].isFirstChange ||\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue)\r\n ) {\r\n if (\r\n this.viewer !== 'google' &&\r\n this.viewer !== 'office' &&\r\n this.viewer !== 'mammoth' &&\r\n this.viewer !== 'pdf' &&\r\n this.viewer !== 'url'\r\n ) {\r\n console.error(\r\n `Unsupported viewer: '${this.viewer}'. Supported viewers: google, office, mammoth and pdf`\r\n );\r\n }\r\n this.configuredViewer = this.viewer;\r\n }\r\n\r\n if (\r\n (changes['url'] &&\r\n changes['url'].currentValue !== changes['url'].previousValue) ||\r\n (changes['viewer'] &&\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue) ||\r\n (changes['viewerUrl'] &&\r\n changes['viewerUrl'].currentValue !==\r\n changes['viewerUrl'].previousValue)\r\n ) {\r\n let viewerDetails = getViewerDetails(\r\n this.url,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n this.externalViewer = viewerDetails.externalViewer;\r\n if (\r\n viewerDetails.externalViewer &&\r\n this.overrideLocalhost &&\r\n isLocalFile(this.url)\r\n ) {\r\n const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);\r\n viewerDetails = getViewerDetails(\r\n newUrl,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n }\r\n this.docHtml = '';\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n if (!this.url) {\r\n this.fullUrl = undefined;\r\n } else if (\r\n viewerDetails.externalViewer ||\r\n this.configuredViewer === 'url' ||\r\n this.configuredViewer === 'pdf'\r\n ) {\r\n this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n viewerDetails.url\r\n );\r\n // see:\r\n // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives\r\n // hack to reload iframe if it's not loaded.\r\n // would maybe be better to use view.officeapps.live.com but seems not to work with sas token.\r\n if (\r\n this.configuredViewer === 'google' &&\r\n this.googleCheckContentLoaded\r\n ) {\r\n this.ngZone.runOutsideAngular(() => {\r\n // if it's not loaded after the googleIntervalCheck, then open load again.\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.reloadIframe(iframe);\r\n } else {\r\n this.shouldCheckIframe = true;\r\n }\r\n });\r\n }\r\n } else if (this.configuredViewer === 'mammoth') {\r\n this.docHtml = await getDocxToHtml(this.url);\r\n }\r\n }\r\n }\r\n\r\n private reloadIframe(iframe: HTMLIFrameElement) {\r\n this.checkIFrameSubscription = googleCheckSubscription();\r\n this.checkIFrameSubscription.subscribe(\r\n iframe,\r\n this.googleCheckInterval,\r\n this.googleMaxChecks\r\n );\r\n }\r\n\r\n iframeLoaded() {\r\n const iframe = this.iframes?.first?.nativeElement as HTMLIFrameElement;\r\n if (iframe && iframeIsLoaded(iframe)) {\r\n this.loaded.emit(undefined);\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n","import { NgxDocViewerComponent } from './document-viewer.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [NgxDocViewerComponent],\r\n exports: [NgxDocViewerComponent],\r\n})\r\nexport class NgxDocViewerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -30,8 +30,7 @@ class NgxDocViewerComponent {
30
30
  }
31
31
  ngAfterViewInit() {
32
32
  if (this.shouldCheckIframe) {
33
- const iframe = this.iframes?.first
34
- ?.nativeElement;
33
+ const iframe = this.iframes?.first?.nativeElement;
35
34
  if (iframe) {
36
35
  this.shouldCheckIframe = false;
37
36
  this.reloadIframe(iframe);
@@ -57,14 +56,18 @@ class NgxDocViewerComponent {
57
56
  }
58
57
  this.configuredViewer = this.viewer;
59
58
  }
60
- if ((changes['url'] && changes['url'].currentValue !== changes['url'].previousValue) ||
59
+ if ((changes['url'] &&
60
+ changes['url'].currentValue !== changes['url'].previousValue) ||
61
61
  (changes['viewer'] &&
62
62
  changes['viewer'].currentValue !== changes['viewer'].previousValue) ||
63
63
  (changes['viewerUrl'] &&
64
- changes['viewerUrl'].currentValue !== changes['viewerUrl'].previousValue)) {
64
+ changes['viewerUrl'].currentValue !==
65
+ changes['viewerUrl'].previousValue)) {
65
66
  let viewerDetails = getViewerDetails(this.url, this.configuredViewer, this.queryParams, this.viewerUrl);
66
67
  this.externalViewer = viewerDetails.externalViewer;
67
- if (viewerDetails.externalViewer && this.overrideLocalhost && isLocalFile(this.url)) {
68
+ if (viewerDetails.externalViewer &&
69
+ this.overrideLocalhost &&
70
+ isLocalFile(this.url)) {
68
71
  const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);
69
72
  viewerDetails = getViewerDetails(newUrl, this.configuredViewer, this.queryParams, this.viewerUrl);
70
73
  }
@@ -76,7 +79,8 @@ class NgxDocViewerComponent {
76
79
  this.fullUrl = undefined;
77
80
  }
78
81
  else if (viewerDetails.externalViewer ||
79
- this.configuredViewer === 'url') {
82
+ this.configuredViewer === 'url' ||
83
+ this.configuredViewer === 'pdf') {
80
84
  this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(viewerDetails.url);
81
85
  // see:
82
86
  // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives
@@ -107,8 +111,7 @@ class NgxDocViewerComponent {
107
111
  this.checkIFrameSubscription.subscribe(iframe, this.googleCheckInterval, this.googleMaxChecks);
108
112
  }
109
113
  iframeLoaded() {
110
- const iframe = this.iframes?.first
111
- ?.nativeElement;
114
+ const iframe = this.iframes?.first?.nativeElement;
112
115
  if (iframe && iframeIsLoaded(iframe)) {
113
116
  this.loaded.emit(undefined);
114
117
  if (this.checkIFrameSubscription) {
@@ -117,50 +120,11 @@ class NgxDocViewerComponent {
117
120
  }
118
121
  }
119
122
  }
120
- NgxDocViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
121
- NgxDocViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: { url: "url", queryParams: "queryParams", viewerUrl: "viewerUrl", googleCheckInterval: "googleCheckInterval", googleMaxChecks: "googleMaxChecks", disableContent: "disableContent", googleCheckContentLoaded: "googleCheckContentLoaded", viewer: "viewer", overrideLocalhost: "overrideLocalhost" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "iframes", predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerComponent, decorators: [{
123
+ NgxDocViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
124
+ NgxDocViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: { url: "url", queryParams: "queryParams", viewerUrl: "viewerUrl", googleCheckInterval: "googleCheckInterval", googleMaxChecks: "googleMaxChecks", disableContent: "disableContent", googleCheckContentLoaded: "googleCheckContentLoaded", viewer: "viewer", overrideLocalhost: "overrideLocalhost" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "iframes", predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerComponent, decorators: [{
123
126
  type: Component,
124
- args: [{ selector: 'ngx-doc-viewer', styles: [
125
- `
126
- :host {
127
- display: block;
128
- }
129
- .container {
130
- width: 100%;
131
- height: 100%;
132
- position: relative;
133
- }
134
- .overlay-popout-google {
135
- width: 40px;
136
- height: 40px;
137
- right: 26px;
138
- top: 11.5px;
139
- position: absolute;
140
- z-index: 1000;
141
- }
142
- .overlay-popout-office {
143
- width: 100px;
144
- height: 20px;
145
- right: 0;
146
- bottom: 0;
147
- position: absolute;
148
- z-index: 1000;
149
- }
150
- .overlay-full {
151
- width: 100%;
152
- height: 100%;
153
- right: 0;
154
- top: 0;
155
- position: absolute;
156
- z-index: 1000;
157
- }
158
- iframe {
159
- width: 100%;
160
- height: 100%;
161
- }
162
- `,
163
- ], template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n" }]
127
+ args: [{ selector: 'ngx-doc-viewer', template: "<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block}.container{width:100%;height:100%;position:relative}.overlay-popout-google{width:40px;height:40px;right:26px;top:11.5px;position:absolute;z-index:1000}.overlay-popout-office{width:100px;height:20px;right:0;bottom:0;position:absolute;z-index:1000}.overlay-full{width:100%;height:100%;right:0;top:0;position:absolute;z-index:1000}iframe{width:100%;height:100%}\n"] }]
164
128
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { loaded: [{
165
129
  type: Output
166
130
  }], url: [{
@@ -188,10 +152,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
188
152
 
189
153
  class NgxDocViewerModule {
190
154
  }
191
- NgxDocViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
192
- NgxDocViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, declarations: [NgxDocViewerComponent], imports: [CommonModule], exports: [NgxDocViewerComponent] });
193
- NgxDocViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, imports: [[CommonModule]] });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDocViewerModule, decorators: [{
155
+ NgxDocViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
156
+ NgxDocViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, declarations: [NgxDocViewerComponent], imports: [CommonModule], exports: [NgxDocViewerComponent] });
157
+ NgxDocViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, imports: [CommonModule] });
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NgxDocViewerModule, decorators: [{
195
159
  type: NgModule,
196
160
  args: [{
197
161
  imports: [CommonModule],
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-doc-viewer.mjs","sources":["../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.ts","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.html","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.module.ts","../../../../packages/ngx-doc-viewer/src/ngx-doc-viewer.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n Output,\r\n ViewChildren,\r\n QueryList,\r\n ElementRef,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { EventEmitter } from '@angular/core';\r\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\r\nimport {\r\n getDocxToHtml,\r\n getViewerDetails,\r\n googleCheckSubscription,\r\n iframeIsLoaded,\r\n isLocalFile,\r\n replaceLocalUrl,\r\n IFrameReloader\r\n} from 'docviewhelper';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ngx-doc-viewer',\r\n templateUrl: 'document-viewer.component.html',\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n .container {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n .overlay-popout-google {\r\n width: 40px;\r\n height: 40px;\r\n right: 26px;\r\n top: 11.5px;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-popout-office {\r\n width: 100px;\r\n height: 20px;\r\n right: 0;\r\n bottom: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-full {\r\n width: 100%;\r\n height: 100%;\r\n right: 0;\r\n top: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n iframe {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class NgxDocViewerComponent implements OnChanges, OnDestroy, AfterViewInit {\r\n @Output() loaded: EventEmitter<void> = new EventEmitter();\r\n @Input() url = '';\r\n @Input() queryParams = '';\r\n @Input() viewerUrl = '';\r\n @Input() googleCheckInterval = 3000;\r\n @Input() googleMaxChecks = 5;\r\n @Input() disableContent: 'none' | 'all' | 'popout' | 'popout-hide' = 'none';\r\n @Input() googleCheckContentLoaded = true;\r\n @Input() viewer: viewerType = 'google';\r\n @Input() overrideLocalhost = '';\r\n @ViewChildren('iframe') iframes?: QueryList<ElementRef> = undefined;\r\n\r\n public fullUrl?: SafeResourceUrl = undefined;\r\n public externalViewer = false;\r\n public docHtml = '';\r\n public configuredViewer: viewerType = 'google';\r\n private checkIFrameSubscription?: IFrameReloader = undefined;\r\n private shouldCheckIframe = false;\r\n\r\n constructor(private domSanitizer: DomSanitizer, private ngZone: NgZone) { }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.shouldCheckIframe) {\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.shouldCheckIframe = false;\r\n this.reloadIframe(iframe);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n if (\r\n changes &&\r\n changes['viewer'] &&\r\n (changes['viewer'].isFirstChange ||\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue)\r\n ) {\r\n if (\r\n this.viewer !== 'google' &&\r\n this.viewer !== 'office' &&\r\n this.viewer !== 'mammoth' &&\r\n this.viewer !== 'pdf' &&\r\n this.viewer !== 'url'\r\n ) {\r\n console.error(\r\n `Unsupported viewer: '${this.viewer}'. Supported viewers: google, office, mammoth and pdf`\r\n );\r\n }\r\n this.configuredViewer = this.viewer;\r\n }\r\n\r\n if (\r\n (changes['url'] && changes['url'].currentValue !== changes['url'].previousValue) ||\r\n (changes['viewer'] &&\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue) ||\r\n (changes['viewerUrl'] &&\r\n changes['viewerUrl'].currentValue !== changes['viewerUrl'].previousValue)\r\n ) {\r\n let viewerDetails = getViewerDetails(\r\n this.url,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n this.externalViewer = viewerDetails.externalViewer;\r\n if (viewerDetails.externalViewer && this.overrideLocalhost && isLocalFile(this.url)) {\r\n const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);\r\n viewerDetails = getViewerDetails(\r\n newUrl,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n }\r\n this.docHtml = '';\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n if (!this.url) {\r\n this.fullUrl = undefined;\r\n } else if (\r\n viewerDetails.externalViewer ||\r\n this.configuredViewer === 'url'\r\n ) {\r\n this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n viewerDetails.url\r\n );\r\n // see:\r\n // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives\r\n // hack to reload iframe if it's not loaded.\r\n // would maybe be better to use view.officeapps.live.com but seems not to work with sas token.\r\n if (\r\n this.configuredViewer === 'google' &&\r\n this.googleCheckContentLoaded\r\n ) {\r\n this.ngZone.runOutsideAngular(() => {\r\n // if it's not loaded after the googleIntervalCheck, then open load again.\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.reloadIframe(iframe);\r\n } else {\r\n this.shouldCheckIframe = true;\r\n }\r\n });\r\n }\r\n } else if (this.configuredViewer === 'mammoth') {\r\n this.docHtml = await getDocxToHtml(this.url);\r\n }\r\n }\r\n }\r\n\r\n private reloadIframe(iframe: HTMLIFrameElement) {\r\n this.checkIFrameSubscription = googleCheckSubscription();\r\n this.checkIFrameSubscription.subscribe(\r\n iframe,\r\n this.googleCheckInterval,\r\n this.googleMaxChecks\r\n );\r\n }\r\n\r\n iframeLoaded() {\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe && iframeIsLoaded(iframe)) {\r\n this.loaded.emit(undefined);\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n","import { NgxDocViewerComponent } from './document-viewer.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [NgxDocViewerComponent],\r\n exports: [NgxDocViewerComponent],\r\n})\r\nexport class NgxDocViewerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-doc-viewer.mjs","sources":["../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.ts","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.component.html","../../../../packages/ngx-doc-viewer/src/lib/document-viewer.module.ts","../../../../packages/ngx-doc-viewer/src/ngx-doc-viewer.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n Output,\r\n ViewChildren,\r\n QueryList,\r\n ElementRef,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { EventEmitter } from '@angular/core';\r\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\r\nimport {\r\n getDocxToHtml,\r\n getViewerDetails,\r\n googleCheckSubscription,\r\n iframeIsLoaded,\r\n isLocalFile,\r\n replaceLocalUrl,\r\n IFrameReloader,\r\n} from 'docviewhelper';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ngx-doc-viewer',\r\n templateUrl: 'document-viewer.component.html',\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n .container {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n .overlay-popout-google {\r\n width: 40px;\r\n height: 40px;\r\n right: 26px;\r\n top: 11.5px;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-popout-office {\r\n width: 100px;\r\n height: 20px;\r\n right: 0;\r\n bottom: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n .overlay-full {\r\n width: 100%;\r\n height: 100%;\r\n right: 0;\r\n top: 0;\r\n position: absolute;\r\n z-index: 1000;\r\n }\r\n iframe {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class NgxDocViewerComponent\r\n implements OnChanges, OnDestroy, AfterViewInit\r\n{\r\n @Output() loaded: EventEmitter<void> = new EventEmitter();\r\n @Input() url = '';\r\n @Input() queryParams = '';\r\n @Input() viewerUrl = '';\r\n @Input() googleCheckInterval = 3000;\r\n @Input() googleMaxChecks = 5;\r\n @Input() disableContent: 'none' | 'all' | 'popout' | 'popout-hide' = 'none';\r\n @Input() googleCheckContentLoaded = true;\r\n @Input() viewer: viewerType = 'google';\r\n @Input() overrideLocalhost = '';\r\n @ViewChildren('iframe') iframes?: QueryList<ElementRef> = undefined;\r\n\r\n public fullUrl?: SafeResourceUrl = undefined;\r\n public externalViewer = false;\r\n public docHtml = '';\r\n public configuredViewer: viewerType = 'google';\r\n private checkIFrameSubscription?: IFrameReloader = undefined;\r\n private shouldCheckIframe = false;\r\n\r\n constructor(private domSanitizer: DomSanitizer, private ngZone: NgZone) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.shouldCheckIframe) {\r\n const iframe = this.iframes?.first?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.shouldCheckIframe = false;\r\n this.reloadIframe(iframe);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n if (\r\n changes &&\r\n changes['viewer'] &&\r\n (changes['viewer'].isFirstChange ||\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue)\r\n ) {\r\n if (\r\n this.viewer !== 'google' &&\r\n this.viewer !== 'office' &&\r\n this.viewer !== 'mammoth' &&\r\n this.viewer !== 'pdf' &&\r\n this.viewer !== 'url'\r\n ) {\r\n console.error(\r\n `Unsupported viewer: '${this.viewer}'. Supported viewers: google, office, mammoth and pdf`\r\n );\r\n }\r\n this.configuredViewer = this.viewer;\r\n }\r\n\r\n if (\r\n (changes['url'] &&\r\n changes['url'].currentValue !== changes['url'].previousValue) ||\r\n (changes['viewer'] &&\r\n changes['viewer'].currentValue !== changes['viewer'].previousValue) ||\r\n (changes['viewerUrl'] &&\r\n changes['viewerUrl'].currentValue !==\r\n changes['viewerUrl'].previousValue)\r\n ) {\r\n let viewerDetails = getViewerDetails(\r\n this.url,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n this.externalViewer = viewerDetails.externalViewer;\r\n if (\r\n viewerDetails.externalViewer &&\r\n this.overrideLocalhost &&\r\n isLocalFile(this.url)\r\n ) {\r\n const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);\r\n viewerDetails = getViewerDetails(\r\n newUrl,\r\n this.configuredViewer,\r\n this.queryParams,\r\n this.viewerUrl\r\n );\r\n }\r\n this.docHtml = '';\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n if (!this.url) {\r\n this.fullUrl = undefined;\r\n } else if (\r\n viewerDetails.externalViewer ||\r\n this.configuredViewer === 'url' ||\r\n this.configuredViewer === 'pdf'\r\n ) {\r\n this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n viewerDetails.url\r\n );\r\n // see:\r\n // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives\r\n // hack to reload iframe if it's not loaded.\r\n // would maybe be better to use view.officeapps.live.com but seems not to work with sas token.\r\n if (\r\n this.configuredViewer === 'google' &&\r\n this.googleCheckContentLoaded\r\n ) {\r\n this.ngZone.runOutsideAngular(() => {\r\n // if it's not loaded after the googleIntervalCheck, then open load again.\r\n const iframe = this.iframes?.first\r\n ?.nativeElement as HTMLIFrameElement;\r\n if (iframe) {\r\n this.reloadIframe(iframe);\r\n } else {\r\n this.shouldCheckIframe = true;\r\n }\r\n });\r\n }\r\n } else if (this.configuredViewer === 'mammoth') {\r\n this.docHtml = await getDocxToHtml(this.url);\r\n }\r\n }\r\n }\r\n\r\n private reloadIframe(iframe: HTMLIFrameElement) {\r\n this.checkIFrameSubscription = googleCheckSubscription();\r\n this.checkIFrameSubscription.subscribe(\r\n iframe,\r\n this.googleCheckInterval,\r\n this.googleMaxChecks\r\n );\r\n }\r\n\r\n iframeLoaded() {\r\n const iframe = this.iframes?.first?.nativeElement as HTMLIFrameElement;\r\n if (iframe && iframeIsLoaded(iframe)) {\r\n this.loaded.emit(undefined);\r\n if (this.checkIFrameSubscription) {\r\n this.checkIFrameSubscription.unsubscribe();\r\n }\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"!externalViewer\">\r\n <div *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\r\n <object\r\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\r\n [data]=\"fullUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n >\r\n <p>\r\n Your browser does not support PDFs.\r\n <a [href]=\"fullUrl\">Download the PDF</a>.\r\n </p>\r\n </object>\r\n</ng-container>\r\n<ng-container *ngIf=\"externalViewer\">\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl && disableContent === 'none'\"\r\n #iframe\r\n id=\"iframe-doc-viewer\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\r\n <div\r\n [class.overlay-full]=\"disableContent === 'all'\"\r\n [class.overlay-popout-google]=\"\r\n configuredViewer === 'google' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [class.overlay-popout-office]=\"\r\n configuredViewer === 'office' &&\r\n (disableContent === 'popout' || disableContent === 'popout-hide')\r\n \"\r\n [style.background-color]=\"\r\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\r\n \"\r\n ></div>\r\n <iframe\r\n (load)=\"iframeLoaded()\"\r\n *ngIf=\"fullUrl\"\r\n #iframe\r\n id=\"iframe\"\r\n frameBorder=\"0\"\r\n [src]=\"fullUrl\"\r\n ></iframe>\r\n </div>\r\n</ng-container>\r\n","import { NgxDocViewerComponent } from './document-viewer.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [NgxDocViewerComponent],\r\n exports: [NgxDocViewerComponent],\r\n})\r\nexport class NgxDocViewerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAyEa,qBAAqB,CAAA;IAsBhC,WAAoB,CAAA,YAA0B,EAAU,MAAc,EAAA;QAAlD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAnB5D,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAE,CAAC;QACjD,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;QACT,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QACjB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QACf,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;QAC3B,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QACpB,IAAc,CAAA,cAAA,GAA8C,MAAM,CAAC;QACnE,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;QAChC,IAAM,CAAA,MAAA,GAAe,QAAQ,CAAC;QAC9B,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;QACR,IAAO,CAAA,OAAA,GAA2B,SAAS,CAAC;QAE7D,IAAO,CAAA,OAAA,GAAqB,SAAS,CAAC;QACtC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QACb,IAAgB,CAAA,gBAAA,GAAe,QAAQ,CAAC;QACvC,IAAuB,CAAA,uBAAA,GAAoB,SAAS,CAAC;QACrD,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;KAEwC;IAE1E,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,aAAkC,CAAC;AACvE,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC5C,SAAA;KACF;IAED,MAAM,WAAW,CAAC,OAAsB,EAAA;AACtC,QAAA,IACE,OAAO;YACP,OAAO,CAAC,QAAQ,CAAC;AACjB,aAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa;AAC9B,gBAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EACrE;AACA,YAAA,IACE,IAAI,CAAC,MAAM,KAAK,QAAQ;gBACxB,IAAI,CAAC,MAAM,KAAK,QAAQ;gBACxB,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,IAAI,CAAC,MAAM,KAAK,KAAK;AACrB,gBAAA,IAAI,CAAC,MAAM,KAAK,KAAK,EACrB;gBACA,OAAO,CAAC,KAAK,CACX,CAAA,qBAAA,EAAwB,IAAI,CAAC,MAAM,CAAuD,qDAAA,CAAA,CAC3F,CAAC;AACH,aAAA;AACD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;AACrC,SAAA;AAED,QAAA,IACE,CAAC,OAAO,CAAC,KAAK,CAAC;AACb,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa;aAC7D,OAAO,CAAC,QAAQ,CAAC;AAChB,gBAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;aACpE,OAAO,CAAC,WAAW,CAAC;AACnB,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;AAC/B,oBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,EACvC;YACA,IAAI,aAAa,GAAG,gBAAgB,CAClC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACf,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;YACnD,IACE,aAAa,CAAC,cAAc;AAC5B,gBAAA,IAAI,CAAC,iBAAiB;AACtB,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EACrB;AACA,gBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACjE,gBAAA,aAAa,GAAG,gBAAgB,CAC9B,MAAM,EACN,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACf,CAAC;AACH,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC5C,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACb,gBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC1B,aAAA;iBAAM,IACL,aAAa,CAAC,cAAc;gBAC5B,IAAI,CAAC,gBAAgB,KAAK,KAAK;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAC/B;AACA,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAC7D,aAAa,CAAC,GAAG,CAClB,CAAC;;;;;AAKF,gBAAA,IACE,IAAI,CAAC,gBAAgB,KAAK,QAAQ;oBAClC,IAAI,CAAC,wBAAwB,EAC7B;AACA,oBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;AAEjC,wBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK;AAChC,8BAAE,aAAkC,CAAC;AACvC,wBAAA,IAAI,MAAM,EAAE;AACV,4BAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,yBAAA;AAAM,6BAAA;AACL,4BAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC/B,yBAAA;AACH,qBAAC,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;gBAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,MAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CACpC,MAAM,EACN,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,CACrB,CAAC;KACH;IAED,YAAY,GAAA;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,aAAkC,CAAC;AACvE,QAAA,IAAI,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC5C,aAAA;AACF,SAAA;KACF;;kHAlJU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8eCzElC,khDAiDA,EAAA,MAAA,EAAA,CAAA,8XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDwBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA7CjC,SAAS;+BAEE,gBAAgB,EAAA,QAAA,EAAA,khDAAA,EAAA,MAAA,EAAA,CAAA,8XAAA,CAAA,EAAA,CAAA;wHA8ChB,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACE,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACkB,OAAO,EAAA,CAAA;sBAA9B,YAAY;uBAAC,QAAQ,CAAA;;;ME7EX,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAHd,YAAA,EAAA,CAAA,qBAAqB,CAD1B,EAAA,OAAA,EAAA,CAAA,YAAY,aAEZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAJnB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
@@ -30,5 +30,5 @@ export declare class NgxDocViewerComponent implements OnChanges, OnDestroy, Afte
30
30
  private reloadIframe;
31
31
  iframeLoaded(): void;
32
32
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxDocViewerComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxDocViewerComponent, "ngx-doc-viewer", never, { "url": "url"; "queryParams": "queryParams"; "viewerUrl": "viewerUrl"; "googleCheckInterval": "googleCheckInterval"; "googleMaxChecks": "googleMaxChecks"; "disableContent": "disableContent"; "googleCheckContentLoaded": "googleCheckContentLoaded"; "viewer": "viewer"; "overrideLocalhost": "overrideLocalhost"; }, { "loaded": "loaded"; }, never, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxDocViewerComponent, "ngx-doc-viewer", never, { "url": "url"; "queryParams": "queryParams"; "viewerUrl": "viewerUrl"; "googleCheckInterval": "googleCheckInterval"; "googleMaxChecks": "googleMaxChecks"; "disableContent": "disableContent"; "googleCheckContentLoaded": "googleCheckContentLoaded"; "viewer": "viewer"; "overrideLocalhost": "overrideLocalhost"; }, { "loaded": "loaded"; }, never, never, false>;
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-doc-viewer",
3
- "version": "2.1.0",
3
+ "version": "2.1.3",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "Angular document viewer.",
@@ -9,6 +9,16 @@
9
9
  "email": "marcel.hoekstra@outlook.com",
10
10
  "url": "https://github.com/Marcelh1983/"
11
11
  },
12
+ "funding": [
13
+ {
14
+ "type": "individual",
15
+ "url": "https://www.patreon.com/marcelh1983"
16
+ },
17
+ {
18
+ "type": "individual",
19
+ "url": "https://www.buymeacoffee.com/marcelh1983"
20
+ }
21
+ ],
12
22
  "homepage": "https://github.com/Marcelh1983/document-viewer/tree/main/packages/ngx-doc-viewer",
13
23
  "peerDependencies": {
14
24
  "@angular/core": ">= 10.0.0",
@@ -24,13 +34,13 @@
24
34
  "esm2020": "esm2020/ngx-doc-viewer.mjs",
25
35
  "fesm2020": "fesm2020/ngx-doc-viewer.mjs",
26
36
  "fesm2015": "fesm2015/ngx-doc-viewer.mjs",
27
- "typings": "ngx-doc-viewer.d.ts",
37
+ "typings": "index.d.ts",
28
38
  "exports": {
29
39
  "./package.json": {
30
40
  "default": "./package.json"
31
41
  },
32
42
  ".": {
33
- "types": "./ngx-doc-viewer.d.ts",
43
+ "types": "./index.d.ts",
34
44
  "esm2020": "./esm2020/ngx-doc-viewer.mjs",
35
45
  "es2020": "./fesm2020/ngx-doc-viewer.mjs",
36
46
  "es2015": "./fesm2015/ngx-doc-viewer.mjs",
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="ngx-doc-viewer" />
5
- export * from './index';