ngx-doc-viewer
Version:
Angular document viewer.
106 lines • 14.3 kB
JavaScript
import { __decorate } from "tslib";
import { Component, Input, NgZone, OnDestroy, OnChanges, SimpleChanges, Output } from '@angular/core';
import { DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser';
import { take } from 'rxjs/operators';
import { interval } from 'rxjs';
import { EventEmitter } from '@angular/core';
var NgxDocViewerComponent = /** @class */ (function () {
function NgxDocViewerComponent(domSanitizer, ngZone) {
this.domSanitizer = domSanitizer;
this.ngZone = ngZone;
this.fullUrl = null;
this.checkIFrameSubscription = null;
this.configuredViewer = 'google';
this.loaded = new EventEmitter();
this.url = '';
this.googleCheckInterval = 3000;
}
Object.defineProperty(NgxDocViewerComponent.prototype, "viewer", {
set: function (viewer) {
var v = viewer.toLowerCase().trim();
if (v !== 'google' && v !== 'office') {
console.error("Unsupported viewer: '" + viewer + "'. Supported viewers: google, office");
}
this.configuredViewer = v;
},
enumerable: true,
configurable: true
});
NgxDocViewerComponent.prototype.ngOnDestroy = function () {
if (this.checkIFrameSubscription) {
this.checkIFrameSubscription.unsubscribe();
}
};
NgxDocViewerComponent.prototype.ngOnChanges = function (changes) {
var _this = this;
if ((changes.url && changes.url.currentValue !== changes.url.previousValue) ||
changes.viewer && changes.viewer.currentValue !== changes.viewer.previousValue) {
var u = this.url.indexOf('/') ? encodeURIComponent(this.url) : this.url;
this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.configuredViewer === 'google' ?
"https://docs.google.com/gview?url=" + u + "&embedded=true" :
"https://view.officeapps.live.com/op/embed.aspx?src=" + u);
// see: https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives
// hack to reload iframe if it's not loaded.
// would maybe be better to use view.officeapps.live.com but seems not to work with sas token.
if (this.configuredViewer === 'google') {
this.ngZone.runOutsideAngular(function () {
var iframe = document.querySelector('iframe');
_this.checkIFrame(iframe);
// if it's not loaded after the googleIntervalCheck, then open load again.
_this.checkIFrameSubscription = interval(_this.googleCheckInterval)
.pipe(take(Math.round(_this.googleCheckInterval === 0 ? 0 : 20000 / _this.googleCheckInterval)))
.subscribe(function () {
if (iframe == null) {
iframe = document.querySelector('iframe');
_this.checkIFrame(iframe);
}
_this.reloadIFrame(iframe);
});
});
}
}
};
NgxDocViewerComponent.prototype.checkIFrame = function (iframe) {
var _this = this;
if (iframe) {
iframe.onload = function () {
_this.loaded.emit(null);
if (_this.checkIFrameSubscription) {
_this.checkIFrameSubscription.unsubscribe();
}
};
}
};
NgxDocViewerComponent.prototype.reloadIFrame = function (iframe) {
if (iframe) {
console.log('reloading..');
iframe.src = iframe.src;
}
};
NgxDocViewerComponent.ctorParameters = function () { return [
{ type: DomSanitizer },
{ type: NgZone }
]; };
__decorate([
Output()
], NgxDocViewerComponent.prototype, "loaded", void 0);
__decorate([
Input()
], NgxDocViewerComponent.prototype, "url", void 0);
__decorate([
Input()
], NgxDocViewerComponent.prototype, "googleCheckInterval", void 0);
__decorate([
Input()
], NgxDocViewerComponent.prototype, "viewer", null);
NgxDocViewerComponent = __decorate([
Component({
selector: 'ngx-doc-viewer',
template: "<iframe id=\"iframe\" *ngIf=\"fullUrl\" frameBorder=\"0\" [src]=\"fullUrl\"></iframe> ",
styles: [":host {\n display: block;\n }\n iframe {\n width: 100%;\n height: 100%;\n }\n "]
})
], NgxDocViewerComponent);
return NgxDocViewerComponent;
}());
export { NgxDocViewerComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kb2Mtdmlld2VyLyIsInNvdXJjZXMiOlsiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWM3QztJQUtJLCtCQUFvQixZQUEwQixFQUFVLE1BQWM7UUFBbEQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSi9ELFlBQU8sR0FBb0IsSUFBSSxDQUFDO1FBQy9CLDRCQUF1QixHQUFpQixJQUFJLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsUUFBUSxDQUFDO1FBRzFCLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1Qsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO0lBSHNDLENBQUM7SUFJbEUsc0JBQUkseUNBQU07YUFBVixVQUFXLE1BQWM7WUFDOUIsSUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUF3QixNQUFNLHlD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TCxDQUFDOztnQkEvRGlDLFlBQVk7Z0JBQWtCLE1BQU07O0lBQzVEO1FBQVQsTUFBTSxFQUFFO3lEQUFnRDtJQUNoRDtRQUFSLEtBQUssRUFBRTtzREFBVTtJQUNUO1FBQVIsS0FBSyxFQUFFO3NFQUE0QjtJQUMzQjtRQUFSLEtBQUssRUFBRTt1REFNUDtJQWZRLHFCQUFxQjtRQVpqQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFFBQVEsRUFBRSx3RkFBZ0Y7cUJBQ2pGLGlIQU9SO1NBQ0osQ0FBQztPQUNXLHFCQUFxQixDQXFFakM7SUFBRCw0QkFBQztDQUFBLEFBckVELElBcUVDO1NBckVZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVN0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmd4LWRvYy12aWV3ZXInLFxyXG4gICAgdGVtcGxhdGU6IGA8aWZyYW1lIGlkPVwiaWZyYW1lXCIgKm5nSWY9XCJmdWxsVXJsXCIgZnJhbWVCb3JkZXI9XCIwXCIgW3NyY109XCJmdWxsVXJsXCI+PC9pZnJhbWU+IGAsXHJcbiAgICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gICAgaWZyYW1lIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RG9jVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgcHVibGljIGZ1bGxVcmw6IFNhZmVSZXNvdXJjZVVybCA9IG51bGw7XHJcbiAgICBwcml2YXRlIGNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVkVmlld2VyID0gJ2dvb2dsZSc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkgeyB9XHJcbiAgICBAT3V0cHV0KCkgbG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBJbnB1dCgpIHVybCA9ICcnO1xyXG4gICAgQElucHV0KCkgZ29vZ2xlQ2hlY2tJbnRlcnZhbCA9IDMwMDA7XHJcbiAgICBASW5wdXQoKSBzZXQgdmlld2VyKHZpZXdlcjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdiA9IHZpZXdlci50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICAgICAgICBpZiAodiAhPT0gJ2dvb2dsZScgJiYgdiAhPT0gJ29mZmljZScpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVW5zdXBwb3J0ZWQgdmlld2VyOiAnJHt2aWV3ZXJ9Jy4gU3VwcG9ydGVkIHZpZXdlcnM6IGdvb2dsZSwgb2ZmaWNlYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlZFZpZXdlciA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKChjaGFuZ2VzLnVybCAmJiBjaGFuZ2VzLnVybC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMudXJsLnByZXZpb3VzVmFsdWUpIHx8XHJcbiAgICAgICAgICAgIGNoYW5nZXMudmlld2VyICYmIGNoYW5nZXMudmlld2VyLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy52aWV3ZXIucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB1ID0gdGhpcy51cmwuaW5kZXhPZignLycpID8gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudXJsKSA6IHRoaXMudXJsO1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGxVcmwgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5jb25maWd1cmVkVmlld2VyID09PSAnZ29vZ2xlJyA/XHJcbiAgICAgICAgICAgICAgICBgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPSR7dX0mZW1iZWRkZWQ9dHJ1ZWAgOlxyXG4gICAgICAgICAgICAgICAgYGh0dHBzOi8vdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tL29wL2VtYmVkLmFzcHg/c3JjPSR7dX1gKTtcclxuICAgICAgICAgICAgLy8gc2VlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDQxNDAzOS9nb29nbGUtZG9jcy12aWV3ZXItcmV0dXJuaW5nLTIwNC1yZXNwb25zZXMtbm8tbG9uZ2VyLXdvcmtpbmctYWx0ZXJuYXRpdmVzXHJcbiAgICAgICAgICAgIC8vIGhhY2sgdG8gcmVsb2FkIGlmcmFtZSBpZiBpdCdzIG5vdCBsb2FkZWQuXHJcbiAgICAgICAgICAgIC8vIHdvdWxkIG1heWJlIGJlIGJldHRlciB0byB1c2Ugdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tIGJ1dCBzZWVtcyBub3QgdG8gd29yayB3aXRoIHNhcyB0b2tlbi5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlndXJlZFZpZXdlciA9PT0gJ2dvb2dsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZShpZnJhbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGl0J3Mgbm90IGxvYWRlZCBhZnRlciB0aGUgZ29vZ2xlSW50ZXJ2YWxDaGVjaywgdGhlbiBvcGVuIGxvYWQgYWdhaW4uXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMuZ29vZ2xlQ2hlY2tJbnRlcnZhbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKE1hdGgucm91bmQodGhpcy5nb29nbGVDaGVja0ludGVydmFsID09PSAwID8gMCA6IDIwMDAwIC8gdGhpcy5nb29nbGVDaGVja0ludGVydmFsKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlmcmFtZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZShpZnJhbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRJRnJhbWUoaWZyYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNoZWNrSUZyYW1lKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoaWZyYW1lKSB7XHJcbiAgICAgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZC5lbWl0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZElGcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVsb2FkaW5nLi4nKTtcclxuICAgICAgICAgICAgaWZyYW1lLnNyYyA9IGlmcmFtZS5zcmM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==