UNPKG

ngx-doc-viewer

Version:
106 lines 13.6 kB
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'; let NgxDocViewerComponent = class NgxDocViewerComponent { constructor(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; } set viewer(viewer) { const v = viewer.toLowerCase().trim(); if (v !== 'google' && v !== 'office') { console.error(`Unsupported viewer: '${viewer}'. Supported viewers: google, office`); } this.configuredViewer = v; } ngOnDestroy() { if (this.checkIFrameSubscription) { this.checkIFrameSubscription.unsubscribe(); } } ngOnChanges(changes) { if ((changes.url && changes.url.currentValue !== changes.url.previousValue) || changes.viewer && changes.viewer.currentValue !== changes.viewer.previousValue) { const 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(() => { let 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(() => { if (iframe == null) { iframe = document.querySelector('iframe'); this.checkIFrame(iframe); } this.reloadIFrame(iframe); }); }); } } } checkIFrame(iframe) { if (iframe) { iframe.onload = () => { this.loaded.emit(null); if (this.checkIFrameSubscription) { this.checkIFrameSubscription.unsubscribe(); } }; } } reloadIFrame(iframe) { if (iframe) { console.log('reloading..'); iframe.src = iframe.src; } } }; NgxDocViewerComponent.ctorParameters = () => [ { 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 { display: block; } iframe { width: 100%; height: 100%; } `] }) ], NgxDocViewerComponent); export { NgxDocViewerComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kb2Mtdmlld2VyLyIsInNvdXJjZXMiOlsiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWM3QyxJQUFhLHFCQUFxQixHQUFsQyxNQUFhLHFCQUFxQjtJQUs5QixZQUFvQixZQUEwQixFQUFVLE1BQWM7UUFBbEQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSi9ELFlBQU8sR0FBb0IsSUFBSSxDQUFDO1FBQy9CLDRCQUF1QixHQUFpQixJQUFJLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsUUFBUSxDQUFDO1FBRzFCLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1Qsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO0lBSHNDLENBQUM7SUFJbEUsSUFBSSxNQUFNLENBQUMsTUFBYztRQUM5QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDbEMsT0FBTyxDQUFDLEtB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SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUFoRXFDLFlBQVk7WUFBa0IsTUFBTTs7QUFDNUQ7SUFBVCxNQUFNLEVBQUU7cURBQWdEO0FBQ2hEO0lBQVIsS0FBSyxFQUFFO2tEQUFVO0FBQ1Q7SUFBUixLQUFLLEVBQUU7a0VBQTRCO0FBQzNCO0lBQVIsS0FBSyxFQUFFO21EQU1QO0FBZlEscUJBQXFCO0lBWmpDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsUUFBUSxFQUFFLGdGQUFnRjtpQkFDakY7Ozs7Ozs7S0FPUjtLQUNKLENBQUM7R0FDVyxxQkFBcUIsQ0FxRWpDO1NBckVZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVN0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmd4LWRvYy12aWV3ZXInLFxyXG4gICAgdGVtcGxhdGU6IGA8aWZyYW1lIGlkPVwiaWZyYW1lXCIgKm5nSWY9XCJmdWxsVXJsXCIgZnJhbWVCb3JkZXI9XCIwXCIgW3NyY109XCJmdWxsVXJsXCI+PC9pZnJhbWU+IGAsXHJcbiAgICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gICAgaWZyYW1lIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RG9jVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgcHVibGljIGZ1bGxVcmw6IFNhZmVSZXNvdXJjZVVybCA9IG51bGw7XHJcbiAgICBwcml2YXRlIGNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVkVmlld2VyID0gJ2dvb2dsZSc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkgeyB9XHJcbiAgICBAT3V0cHV0KCkgbG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBJbnB1dCgpIHVybCA9ICcnO1xyXG4gICAgQElucHV0KCkgZ29vZ2xlQ2hlY2tJbnRlcnZhbCA9IDMwMDA7XHJcbiAgICBASW5wdXQoKSBzZXQgdmlld2VyKHZpZXdlcjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdiA9IHZpZXdlci50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICAgICAgICBpZiAodiAhPT0gJ2dvb2dsZScgJiYgdiAhPT0gJ29mZmljZScpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVW5zdXBwb3J0ZWQgdmlld2VyOiAnJHt2aWV3ZXJ9Jy4gU3VwcG9ydGVkIHZpZXdlcnM6IGdvb2dsZSwgb2ZmaWNlYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlZFZpZXdlciA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKChjaGFuZ2VzLnVybCAmJiBjaGFuZ2VzLnVybC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMudXJsLnByZXZpb3VzVmFsdWUpIHx8XHJcbiAgICAgICAgICAgIGNoYW5nZXMudmlld2VyICYmIGNoYW5nZXMudmlld2VyLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy52aWV3ZXIucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB1ID0gdGhpcy51cmwuaW5kZXhPZignLycpID8gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudXJsKSA6IHRoaXMudXJsO1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGxVcmwgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5jb25maWd1cmVkVmlld2VyID09PSAnZ29vZ2xlJyA/XHJcbiAgICAgICAgICAgICAgICBgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPSR7dX0mZW1iZWRkZWQ9dHJ1ZWAgOlxyXG4gICAgICAgICAgICAgICAgYGh0dHBzOi8vdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tL29wL2VtYmVkLmFzcHg/c3JjPSR7dX1gKTtcclxuICAgICAgICAgICAgLy8gc2VlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDQxNDAzOS9nb29nbGUtZG9jcy12aWV3ZXItcmV0dXJuaW5nLTIwNC1yZXNwb25zZXMtbm8tbG9uZ2VyLXdvcmtpbmctYWx0ZXJuYXRpdmVzXHJcbiAgICAgICAgICAgIC8vIGhhY2sgdG8gcmVsb2FkIGlmcmFtZSBpZiBpdCdzIG5vdCBsb2FkZWQuXHJcbiAgICAgICAgICAgIC8vIHdvdWxkIG1heWJlIGJlIGJldHRlciB0byB1c2Ugdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tIGJ1dCBzZWVtcyBub3QgdG8gd29yayB3aXRoIHNhcyB0b2tlbi5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlndXJlZFZpZXdlciA9PT0gJ2dvb2dsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZShpZnJhbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGl0J3Mgbm90IGxvYWRlZCBhZnRlciB0aGUgZ29vZ2xlSW50ZXJ2YWxDaGVjaywgdGhlbiBvcGVuIGxvYWQgYWdhaW4uXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMuZ29vZ2xlQ2hlY2tJbnRlcnZhbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKE1hdGgucm91bmQodGhpcy5nb29nbGVDaGVja0ludGVydmFsID09PSAwID8gMCA6IDIwMDAwIC8gdGhpcy5nb29nbGVDaGVja0ludGVydmFsKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlmcmFtZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZShpZnJhbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRJRnJhbWUoaWZyYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNoZWNrSUZyYW1lKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoaWZyYW1lKSB7XHJcbiAgICAgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZC5lbWl0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZElGcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVsb2FkaW5nLi4nKTtcclxuICAgICAgICAgICAgaWZyYW1lLnNyYyA9IGlmcmFtZS5zcmM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==