{"version":3,"file":"angular-doc-viewer.mjs","sources":["../../../projects/angular-doc-viewer/src/lib/angular-doc-viewer.component.ts","../../../projects/angular-doc-viewer/src/lib/angular-doc-viewer.component.html","../../../projects/angular-doc-viewer/src/lib/angular-doc-viewer.module.ts","../../../projects/angular-doc-viewer/src/public-api.ts","../../../projects/angular-doc-viewer/src/angular-doc-viewer.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, Output, QueryList, SimpleChanges, ViewChildren } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Subscription, timer } from 'rxjs';\nimport { take } from 'rxjs/operators';\n// eslint-disable-next-line no-var\ndeclare var mammoth:any;\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';\n@Component({\n  selector: 'angular-doc-viewer',\n  templateUrl:'./angular-doc-viewer.component.html',\n  styleUrls: ['./angular-doc-viewer.component.scss']\n})\nexport class AngularDocViewerComponent implements OnChanges, OnDestroy{\n  @Output() loaded: EventEmitter<any> = new EventEmitter();\n    @Input() url = '';\n    @Input() queryParams = '';\n    @Input() viewerUrl = '';\n    @Input() googleCheckInterval = 3000;\n    @Input() disableContent: 'none' | 'all' | 'popout' | 'popout-hide' = 'none';\n    @Input() googleCheckContentLoaded = true;\n    @Input() viewer!: viewerType;\n    @ViewChildren('iframe') iframes!: QueryList<ElementRef>;\n\n    public fullUrl: SafeResourceUrl = null;\n    public externalViewer = false;\n    public docHtml:any = '';\n    public configuredViewer: viewerType = 'google';\n    private checkIFrameSubscription: Subscription = null;\n\n    private loadCount = 0\n\n    constructor(private domSanitizer: DomSanitizer, private ngZone: NgZone) { }\n\n    ngOnDestroy(): void {\n      this.loadCount = 0;\n        if (this.checkIFrameSubscription) {\n            this.checkIFrameSubscription.unsubscribe();\n        }\n    }\n\n    async ngOnChanges(changes: SimpleChanges): Promise<void> {\n        if (changes && changes.viewer && (changes.viewer.isFirstChange || changes.viewer.currentValue !== changes.viewer.previousValue)) {\n            if (this.viewer !== 'google' && this.viewer !== 'office' &&\n                this.viewer !== 'mammoth' && this.viewer !== 'pdf' && this.viewer !== 'url') {\n                console.error(`Unsupported viewer: '${this.viewer}'. Supported viewers: google, office, mammoth and pdf`);\n            }\n            if (this.viewer === 'mammoth') {\n                if (mammoth === null) {\n                    console.error('please install mammoth when using local viewer');\n                }\n            }\n            this.configuredViewer = this.viewer;\n        }\n        if (this.disableContent !== 'none' && this.viewer !== 'google') {\n        }\n        if ((changes.url && changes.url.currentValue !== changes.url.previousValue) ||\n            changes.viewer && changes.viewer.currentValue !== changes.viewer.previousValue ||\n            changes.viewerUrl && changes.viewerUrl.currentValue !== changes.viewerUrl.previousValue) {\n            if (!changes.viewerUrl) {\n                this.viewerUrl = null;\n            }\n            switch (this.configuredViewer) {\n                case 'google':\n                    this.viewerUrl = `https://docs.google.com/gview?url=%URL%&embedded=true`;\n                    break;\n                case 'office': {\n                    this.viewerUrl = `https://view.officeapps.live.com/op/embed.aspx?src=%URL%`;\n                    break;\n                }\n                case 'pdf': {\n                    this.viewerUrl = null;\n                    break;\n                }\n            }\n            this.docHtml = '';\n            this.externalViewer = this.configuredViewer === 'google' || this.configuredViewer === 'office' ||\n                this.configuredViewer === 'url';\n            if (this.checkIFrameSubscription) {\n                this.checkIFrameSubscription.unsubscribe();\n            }\n            if (!this.url) {\n                this.fullUrl = null;\n            } else if (this.configuredViewer === 'office' || this.configuredViewer === 'google'\n                || this.configuredViewer === 'pdf' || this.configuredViewer === 'url') {\n                const u = this.url.indexOf('/') ? encodeURIComponent(this.url) : this.url;\n                let url = this.viewerUrl ? this.viewerUrl.replace('%URL%', u) : this.url;\n                if (!!this.queryParams && this.configuredViewer !== 'pdf') {\n                    const start = this.queryParams.startsWith('&') ? '' : '&';\n                    url = `${url}${start}${this.queryParams}`;\n                }\n                this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(url);\n                // see:\n                // https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives\n                // hack to reload iframe if it's not loaded.\n                // would maybe be better to use view.officeapps.live.com but seems not to work with sas token.\n                if (this.configuredViewer === 'google' && this.googleCheckContentLoaded) {\n                    this.ngZone.runOutsideAngular(() => {\n                        // if it's not loaded after the googleIntervalCheck, then open load again.\n                        this.checkIFrameSubscription = timer(100, this.googleCheckInterval)\n                            .pipe(\n                                take(Math.round(this.googleCheckInterval === 0 ? 0 : 20000 / this.googleCheckInterval)))\n                            .subscribe(() => {\n                                const iframe = this.iframes?.first?.nativeElement;\n                                this.reloadIFrame(iframe);\n                            });\n                    });\n                }\n            } else if (this.configuredViewer === 'mammoth') {\n                if (!mammoth) {\n                    console.error('Please install mammoth and make sure mammoth.browser.min.js is loaded.');\n                }\n                let docUrl = await this.getDocxToHtml(this.url);\n                this.docHtml = await this.domSanitizer.bypassSecurityTrustHtml(docUrl);\n            }\n        }\n    }\n\n    iframeLoaded() {\n      this.loadCount++;\n      if (this.configuredViewer === 'google') {\n        setTimeout(() => {\n          if (this.loadCount < 2) {\n            const iframe = this.iframes?.first?.nativeElement;\n            this.reloadIFrame(iframe);\n          }\n        }, 3000)\n      }\n        this.loaded.emit(null);\n        if (this.checkIFrameSubscription) {\n            this.checkIFrameSubscription.unsubscribe();\n        }\n    }\n\n    reloadIFrame(iframe: HTMLIFrameElement) {\n        if (iframe) {\n            console.log('reloading..');\n            iframe.src = iframe.src;\n        }\n    }\n\n    private async getDocxToHtml(url: any) {\n        const arrayBuffer = await this.fileToArray(url);\n        const resultObject = await mammoth.convertToHtml({ arrayBuffer });\n        return resultObject?.value;\n    }\n\n    private async fileToArray(url: any): Promise<ArrayBuffer> {\n        return new Promise<ArrayBuffer>((resolve, reject) => {\n            try {\n                const request = new XMLHttpRequest();\n                request.open('GET', url, true);\n                request.responseType = 'blob';\n                request.onload = () => {\n                    const reader = new FileReader();\n                    reader.readAsArrayBuffer(request.response);\n                    reader.onloadend = (e) => {\n                        resolve(reader.result as ArrayBuffer);\n                    };\n                };\n                request.send();\n            } catch {\n                reject(`error while retrieving file ${url}.`);\n            }\n        });\n    }\n}\n","<ng-container *ngIf=\"!externalViewer\">\n    <div style=\"padding:20px !important\" *ngIf=\"configuredViewer !== 'pdf'\" [innerHtml]=\"docHtml\"></div>\n    <object *ngIf=\"fullUrl && configuredViewer === 'pdf'\" [data]=\"fullUrl\"\n        type=\"application/pdf\" width=\"100%\" height=\"100%\">\n        <p>Your browser does not support PDFs.\n            <a [href]=\"fullUrl\">Download the PDF</a>.</p>\n    </object>\n</ng-container>\n<ng-container *ngIf=\"externalViewer\">\n    <iframe (load)=\"iframeLoaded()\" *ngIf=\"fullUrl && disableContent === 'none'\" #iframe id=\"iframe\" frameBorder=\"0\" [src]=\"fullUrl\"></iframe>\n    <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\n        <div [class.overlay-full]=\"disableContent === 'all'\"\n            [class.overlay-popout-google]=\"configuredViewer ==='google' && (disableContent === 'popout' || disableContent === 'popout-hide')\"\n            [class.overlay-popout-office]=\"configuredViewer ==='office' && (disableContent === 'popout' || disableContent === 'popout-hide')\"\n            [style.background-color]=\"disableContent === 'popout-hide' ? '#fff': 'transparent'\">\n        </div>\n        <iframe (load)=\"iframeLoaded()\" *ngIf=\"fullUrl\" #iframe id=\"iframe\" frameBorder=\"0\" [src]=\"fullUrl\"></iframe>\n    </div>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { AngularDocViewerComponent } from './angular-doc-viewer.component';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n  declarations: [\n    AngularDocViewerComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    AngularDocViewerComponent\n  ]\n})\nexport class AngularDocViewerModule { }\n","/*\n * Public API Surface of angular-doc-viewer\n */\n\nexport * from './lib/angular-doc-viewer.component';\nexport * from './lib/angular-doc-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}