ngx-doc-viewer 21.0.6 → 22.0.0
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.
- package/README.md +18 -3
- package/fesm2022/ngx-doc-viewer.mjs +681 -425
- package/fesm2022/ngx-doc-viewer.mjs.map +1 -1
- package/package.json +5 -5
- package/types/ngx-doc-viewer.d.ts +183 -92
|
@@ -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 {\n Component,\n Input,\n NgZone,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n Output,\n ViewChildren,\n QueryList,\n ElementRef,\n ChangeDetectorRef,\n ContentChild,\n TemplateRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { EventEmitter } from '@angular/core';\nimport {\n getDocxToHtml,\n getViewerDetails,\n googleCheckSubscription,\n iframeIsLoaded,\n isLocalFile,\n replaceLocalUrl,\n IFrameReloader,\n ViewerRecoveryConfig,\n ViewerRecoveryController,\n} from 'docviewhelper';\n\n \nexport type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';\ntype ViewerRenderPhase = 'idle' | 'loading' | 'ready' | 'error';\ninterface ViewerTemplateContext {\n $implicit: ViewerStateContext;\n state: ViewerStateContext;\n}\nexport interface ViewerStateContext {\n viewer: viewerType;\n url: string;\n phase: ViewerRenderPhase;\n errorText: string;\n retry: () => void;\n actionUrl: string;\n}\n@Component({\n selector: 'ngx-doc-viewer',\n standalone: true,\n imports: [CommonModule],\n templateUrl: 'document-viewer.component.html',\n styles: [\n `\n :host {\n display: block;\n }\n .container {\n width: 100%;\n height: 100%;\n position: relative;\n }\n .inline-document-shell {\n width: 100%;\n height: 100%;\n overflow: auto;\n background:\n linear-gradient(180deg, #eef2f7 0%, #f8fafc 100%);\n padding: 24px;\n }\n .inline-document-page {\n max-width: 900px;\n min-height: 100%;\n margin: 0 auto;\n background: #fff;\n border: 1px solid #dbe4f0;\n border-radius: 18px;\n box-shadow:\n 0 18px 40px -24px rgba(15, 23, 42, 0.3),\n 0 6px 18px -10px rgba(15, 23, 42, 0.18);\n padding: 40px 48px;\n }\n .inline-document-page,\n .inline-document-page * {\n box-sizing: border-box;\n }\n .inline-document-page {\n color: #1e293b;\n font-family:\n Georgia, Cambria, 'Times New Roman', Times, serif;\n font-size: 18px;\n line-height: 1.7;\n }\n .inline-document-page p,\n .inline-document-page ul,\n .inline-document-page ol,\n .inline-document-page blockquote,\n .inline-document-page table {\n margin: 0 0 1.1em;\n }\n .inline-document-page h1,\n .inline-document-page h2,\n .inline-document-page h3,\n .inline-document-page h4,\n .inline-document-page h5,\n .inline-document-page h6 {\n margin: 1.4em 0 0.65em;\n color: #0f172a;\n line-height: 1.25;\n }\n .inline-document-page h1:first-child,\n .inline-document-page h2:first-child,\n .inline-document-page h3:first-child,\n .inline-document-page p:first-child {\n margin-top: 0;\n }\n .inline-document-page table {\n width: 100%;\n border-collapse: collapse;\n }\n .inline-document-page td,\n .inline-document-page th {\n padding: 6px 10px;\n vertical-align: top;\n }\n .inline-document-page img {\n max-width: 100%;\n height: auto;\n }\n .inline-document-page hr {\n border: 0;\n border-top: 1px solid #dbe4f0;\n margin: 1.5em 0;\n }\n .loading-overlay {\n position: absolute;\n inset: 0;\n z-index: 1001;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.88);\n color: #475569;\n font-size: 14px;\n font-weight: 600;\n letter-spacing: 0.02em;\n text-align: center;\n padding: 16px;\n }\n .error-overlay {\n position: absolute;\n inset: 0;\n z-index: 1001;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.94);\n color: #991b1b;\n font-size: 14px;\n font-weight: 600;\n letter-spacing: 0.02em;\n text-align: center;\n padding: 16px;\n }\n .overlay-popout-google {\n width: 40px;\n height: 40px;\n right: 26px;\n top: 11.5px;\n position: absolute;\n z-index: 1000;\n }\n .overlay-popout-office {\n width: 100px;\n height: 20px;\n right: 0;\n bottom: 0;\n position: absolute;\n z-index: 1000;\n }\n .office-reload-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 1001;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background: rgba(255, 255, 255, 0.85);\n color: #475569;\n font-size: 16px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.5;\n transition: opacity 0.15s;\n padding: 0;\n }\n .office-reload-btn:hover {\n opacity: 1;\n }\n .overlay-full {\n width: 100%;\n height: 100%;\n right: 0;\n top: 0;\n position: absolute;\n z-index: 1000;\n }\n iframe {\n width: 100%;\n height: 100%;\n }\n @media (max-width: 768px) {\n .inline-document-shell {\n padding: 12px;\n }\n .inline-document-page {\n border-radius: 12px;\n padding: 22px 18px;\n }\n }\n `,\n ],\n})\nexport class NgxDocViewerComponent\n implements OnChanges, OnDestroy\n{\n @Output() loaded: EventEmitter<void> = new EventEmitter();\n @Output() loading: EventEmitter<ViewerStateContext> = new EventEmitter();\n @Output() error: EventEmitter<ViewerStateContext> = new EventEmitter();\n @Output() phaseChange: EventEmitter<ViewerStateContext> = new EventEmitter();\n @Input() url = '';\n @Input() queryParams = '';\n @Input() viewerUrl = '';\n @Input() googleCheckInterval = 3000;\n @Input() googleMaxChecks = 5;\n @Input() googleFinalRetryDelay = 0;\n @Input() disableContent: 'none' | 'all' | 'popout' | 'popout-hide' = 'none';\n @Input() googleCheckContentLoaded = true;\n @Input() viewer: viewerType = 'google';\n @Input() overrideLocalhost = '';\n @Input() loadingText = 'Loading document...';\n @Input() errorTextOverride = '';\n @Input() retryButtonText = 'Retry';\n @Input() officeAutoRetry = false;\n @Input() officeRetryDelay = 3000;\n @Input() officeReloadButtonText = '↻';\n @Input() officeReloadButtonTitle = 'Reload document';\n @Input() secondaryActionText = '';\n @Input() secondaryActionMode: 'open' | 'download' = 'open';\n @ContentChild('loadingContent', { read: TemplateRef })\n loadingTemplate?: TemplateRef<unknown>;\n @ContentChild('errorContent', { read: TemplateRef })\n errorTemplate?: TemplateRef<unknown>;\n @ContentChild('errorActions', { read: TemplateRef })\n errorActionsTemplate?: TemplateRef<unknown>;\n @ContentChild('officeReloadContent', { read: TemplateRef })\n officeReloadTemplate?: TemplateRef<unknown>;\n @ViewChildren('iframe') iframes?: QueryList<ElementRef> = undefined;\n\n public fullUrl?: SafeResourceUrl = undefined;\n public externalViewer = false;\n public docHtml = '';\n public configuredViewer: viewerType = 'google';\n public showIframe = true;\n public renderPhase: ViewerRenderPhase = 'idle';\n public errorText = '';\n public failedUrl = '';\n public retryNonce = 0;\n public loadingTemplateContext: ViewerTemplateContext = this.createTemplateContext();\n public errorTemplateContext: ViewerTemplateContext = this.createTemplateContext();\n private checkIFrameSubscription?: IFrameReloader = undefined;\n private loadVersion = 0;\n private recovery?: ViewerRecoveryController = undefined;\n private lastEmittedPhase?: ViewerRenderPhase = undefined;\n\n constructor(\n private domSanitizer: DomSanitizer,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnDestroy(): void {\n this.recovery?.dispose();\n if (this.checkIFrameSubscription) {\n this.checkIFrameSubscription.unsubscribe();\n }\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (\n changes &&\n changes['retryNonce'] &&\n changes['retryNonce'].firstChange\n ) {\n return;\n }\n if (\n changes &&\n changes['viewer'] &&\n (changes['viewer'].firstChange ||\n changes['viewer'].currentValue !== changes['viewer'].previousValue)\n ) {\n if (\n this.viewer !== 'google' &&\n this.viewer !== 'office' &&\n this.viewer !== 'mammoth' &&\n this.viewer !== 'pdf' &&\n this.viewer !== 'url'\n ) {\n console.error(\n `Unsupported viewer: '${this.viewer}'. Supported viewers: google, office, mammoth and pdf`,\n );\n }\n this.configuredViewer = this.viewer;\n this.updateTemplateContexts();\n }\n\n if (\n (changes['url'] &&\n changes['url'].currentValue !== changes['url'].previousValue) ||\n (changes['viewer'] &&\n changes['viewer'].currentValue !== changes['viewer'].previousValue) ||\n (changes['viewerUrl'] &&\n changes['viewerUrl'].currentValue !==\n changes['viewerUrl'].previousValue)\n ) {\n let viewerDetails = getViewerDetails(\n this.url,\n this.configuredViewer,\n this.queryParams,\n this.viewerUrl,\n );\n const loadVersion = ++this.loadVersion;\n const recovery = this.ensureRecovery();\n recovery.clearTimers();\n this.externalViewer = viewerDetails.externalViewer;\n if (\n viewerDetails.externalViewer &&\n this.overrideLocalhost &&\n isLocalFile(this.url)\n ) {\n const newUrl = replaceLocalUrl(this.url, this.overrideLocalhost);\n viewerDetails = getViewerDetails(\n newUrl,\n this.configuredViewer,\n this.queryParams,\n this.viewerUrl,\n );\n }\n recovery.trackSource(viewerDetails.url);\n this.docHtml = '';\n this.errorText = '';\n this.failedUrl = this.url;\n this.updateTemplateContexts();\n if (this.checkIFrameSubscription) {\n this.checkIFrameSubscription.unsubscribe();\n }\n if (!this.url) {\n this.fullUrl = undefined;\n this.showIframe = false;\n this.externalViewer = false;\n this.setRenderPhase('idle');\n this.updateTemplateContexts();\n } else if (\n viewerDetails.externalViewer ||\n this.configuredViewer === 'url' ||\n this.configuredViewer === 'pdf'\n ) {\n this.setRenderPhase('loading');\n const iframeUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\n viewerDetails.url,\n );\n this.fullUrl = undefined;\n this.showIframe = false;\n this.cdr.detectChanges();\n this.fullUrl = iframeUrl;\n this.showIframe = true;\n this.updateTemplateContexts();\n const plan = recovery.beginExternalLoad(\n () => loadVersion === this.loadVersion,\n );\n this.cdr.detectChanges();\n if (plan.modes.includes('google-probe')) {\n this.scheduleGoogleProbe();\n }\n } else if (this.configuredViewer === 'mammoth') {\n this.setRenderPhase('loading');\n this.externalViewer = false;\n this.fullUrl = undefined;\n this.showIframe = false;\n try {\n const docHtml = await getDocxToHtml(this.url);\n if (loadVersion !== this.loadVersion) {\n return;\n }\n this.ngZone.run(() => {\n this.docHtml = docHtml;\n this.setRenderPhase('ready');\n this.updateTemplateContexts();\n this.cdr.detectChanges();\n });\n } catch (error) {\n if (loadVersion !== this.loadVersion) {\n return;\n }\n this.ngZone.run(() => {\n this.errorText =\n error instanceof Error ? error.message : 'Unable to load document.';\n this.setRenderPhase('error');\n this.updateTemplateContexts();\n this.cdr.detectChanges();\n });\n }\n }\n }\n }\n\n retryLoad() {\n this.retryNonce += 1;\n const retryVersion = ++this.loadVersion;\n const recovery = this.ensureRecovery();\n recovery.clearTimers();\n this.errorText = '';\n this.setRenderPhase(this.url ? 'loading' : 'idle');\n this.updateTemplateContexts();\n\n if (!this.url) {\n return;\n }\n\n if (this.configuredViewer === 'mammoth') {\n this.docHtml = '';\n void this.reloadMammoth(retryVersion);\n return;\n }\n\n if (\n this.configuredViewer === 'google' ||\n this.configuredViewer === 'office' ||\n this.configuredViewer === 'url' ||\n this.configuredViewer === 'pdf'\n ) {\n const details = getViewerDetails(\n this.url,\n this.configuredViewer,\n this.queryParams,\n this.viewerUrl,\n );\n const finalUrl =\n details.externalViewer && this.overrideLocalhost && isLocalFile(this.url)\n ? getViewerDetails(\n replaceLocalUrl(this.url, this.overrideLocalhost),\n this.configuredViewer,\n this.queryParams,\n this.viewerUrl,\n ).url\n : details.url;\n\n this.fullUrl = undefined;\n this.showIframe = false;\n this.cdr.detectChanges();\n this.fullUrl =\n this.domSanitizer.bypassSecurityTrustResourceUrl(finalUrl);\n this.showIframe = true;\n const plan = recovery.beginExternalLoad(\n () => retryVersion === this.loadVersion,\n );\n if (plan.modes.includes('google-probe')) {\n this.scheduleGoogleProbe();\n }\n this.updateTemplateContexts();\n this.cdr.detectChanges();\n }\n }\n\n private reloadIframe(iframe: HTMLIFrameElement) {\n this.checkIFrameSubscription = googleCheckSubscription();\n this.checkIFrameSubscription.subscribe(\n iframe,\n this.googleCheckInterval,\n this.googleMaxChecks,\n );\n }\n\n private ensureRecovery(): ViewerRecoveryController {\n if (!this.recovery) {\n this.recovery = new ViewerRecoveryController(this.buildRecoveryConfig(), {\n triggerRetry: () => this.ngZone.run(() => this.retryLoad()),\n reportTimeout: () =>\n this.ngZone.run(() => {\n if (this.renderPhase !== 'loading') {\n return;\n }\n this.errorText = `The ${this.configuredViewer} viewer did not finish loading in time.`;\n this.setRenderPhase('error');\n this.updateTemplateContexts();\n this.cdr.detectChanges();\n }),\n });\n }\n this.recovery.configure(this.buildRecoveryConfig());\n return this.recovery;\n }\n\n private buildRecoveryConfig(): ViewerRecoveryConfig {\n return {\n viewer: this.configuredViewer,\n googleCheckContentLoaded: this.googleCheckContentLoaded,\n googleCheckInterval: this.googleCheckInterval,\n googleMaxChecks: this.googleMaxChecks,\n googleFinalRetryDelay: this.googleFinalRetryDelay,\n officeAutoRetry: this.officeAutoRetry,\n officeRetryDelay: this.officeRetryDelay,\n };\n }\n\n private scheduleGoogleProbe() {\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 this.ngZone.runOutsideAngular(() => {\n window.setTimeout(() => {\n const iframe = this.iframes?.first?.nativeElement as HTMLIFrameElement;\n if (iframe) {\n this.reloadIframe(iframe);\n }\n }, 0);\n });\n }\n\n iframeLoaded() {\n const iframe = this.iframes?.first?.nativeElement as HTMLIFrameElement;\n if (iframe && iframeIsLoaded(iframe)) {\n this.recovery?.notifyLoaded();\n this.setRenderPhase('ready');\n this.updateTemplateContexts();\n this.loaded.emit(undefined);\n if (this.checkIFrameSubscription) {\n this.checkIFrameSubscription.unsubscribe();\n }\n }\n }\n\n objectLoaded() {\n this.recovery?.notifyLoaded();\n this.setRenderPhase('ready');\n this.updateTemplateContexts();\n }\n\n private async reloadMammoth(loadVersion: number) {\n this.externalViewer = false;\n this.fullUrl = undefined;\n this.showIframe = false;\n try {\n const docHtml = await getDocxToHtml(this.url);\n if (loadVersion !== this.loadVersion) {\n return;\n }\n this.ngZone.run(() => {\n this.docHtml = docHtml;\n this.setRenderPhase('ready');\n this.updateTemplateContexts();\n this.cdr.detectChanges();\n });\n } catch (error) {\n if (loadVersion !== this.loadVersion) {\n return;\n }\n this.ngZone.run(() => {\n this.errorText =\n error instanceof Error ? error.message : 'Unable to load document.';\n this.setRenderPhase('error');\n this.updateTemplateContexts();\n this.cdr.detectChanges();\n });\n }\n }\n\n get displayedErrorText() {\n return this.errorTextOverride || this.errorText || 'Unable to load document.';\n }\n\n private updateTemplateContexts() {\n const state = this.createStateContext();\n this.loadingTemplateContext = { $implicit: state, state };\n this.errorTemplateContext = { $implicit: state, state };\n }\n\n private createTemplateContext(): ViewerTemplateContext {\n const state = this.createStateContext();\n return { $implicit: state, state };\n }\n\n private createStateContext(): ViewerStateContext {\n return {\n viewer: this.configuredViewer,\n url: this.failedUrl || this.url,\n phase: this.renderPhase,\n errorText: this.displayedErrorText,\n retry: () => this.retryLoad(),\n actionUrl: this.failedUrl || this.url,\n };\n }\n\n private setRenderPhase(phase: ViewerRenderPhase) {\n this.renderPhase = phase;\n this.emitLifecycleIfNeeded();\n }\n\n private emitLifecycleIfNeeded() {\n if (this.lastEmittedPhase === this.renderPhase) {\n return;\n }\n this.lastEmittedPhase = this.renderPhase;\n const state = this.createStateContext();\n this.phaseChange.emit(state);\n if (this.renderPhase === 'loading') {\n this.loading.emit(state);\n }\n if (this.renderPhase === 'error') {\n this.error.emit(state);\n }\n }\n}\n","<div class=\"container\">\n <div *ngIf=\"renderPhase === 'loading'\" class=\"loading-overlay\">\n <ng-container *ngIf=\"loadingTemplate; else defaultLoadingTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate; context: loadingTemplateContext\"></ng-container>\n </ng-container>\n <ng-template #defaultLoadingTemplate>{{ loadingText }}</ng-template>\n </div>\n <div *ngIf=\"renderPhase === 'error'\" class=\"error-overlay\">\n <ng-container *ngIf=\"errorTemplate; else defaultErrorTemplate\">\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: errorTemplateContext\"></ng-container>\n </ng-container>\n <ng-template #defaultErrorTemplate>\n <div>\n <div>{{ displayedErrorText }}</div>\n <div *ngIf=\"configuredViewer\" style=\"margin-top: 8px; color: #475569;\">\n Viewer: {{ configuredViewer }}\n </div>\n <div *ngIf=\"failedUrl\" style=\"margin-top: 4px; color: #64748b; font-size: 12px; word-break: break-word;\">\n {{ failedUrl }}\n </div>\n <ng-container *ngIf=\"errorActionsTemplate; else defaultErrorActions\">\n <ng-container *ngTemplateOutlet=\"errorActionsTemplate; context: errorTemplateContext\"></ng-container>\n </ng-container>\n <ng-template #defaultErrorActions>\n <div style=\"margin-top: 14px; display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;\">\n <button\n type=\"button\"\n (click)=\"retryLoad()\"\n style=\"border: 1px solid #fecaca; background: #fff; color: #991b1b; border-radius: 999px; padding: 8px 14px; font: inherit; cursor: pointer;\"\n >\n {{ retryButtonText }}\n </button>\n <a\n *ngIf=\"secondaryActionText && failedUrl\"\n [href]=\"failedUrl\"\n [attr.target]=\"secondaryActionMode === 'open' ? '_blank' : null\"\n [attr.rel]=\"secondaryActionMode === 'open' ? 'noreferrer' : null\"\n [attr.download]=\"secondaryActionMode === 'download' ? '' : null\"\n style=\"border: 1px solid #cbd5e1; background: #fff; color: #334155; border-radius: 999px; padding: 8px 14px; text-decoration: none; font: inherit;\"\n >\n {{ secondaryActionText }}\n </a>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"!externalViewer\">\n <div *ngIf=\"configuredViewer !== 'pdf'\" class=\"inline-document-shell\">\n <div class=\"inline-document-page\" [innerHTML]=\"docHtml\"></div>\n </div>\n <object\n (load)=\"objectLoaded()\"\n *ngIf=\"fullUrl && configuredViewer === 'pdf'\"\n [data]=\"fullUrl\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"100%\"\n >\n <p>\n Your browser does not support PDFs.\n <a [href]=\"fullUrl\">Download the PDF</a>.\n </p>\n </object>\n </ng-container>\n\n <button\n *ngIf=\"configuredViewer === 'office' && renderPhase === 'ready'\"\n class=\"office-reload-btn\"\n type=\"button\"\n [attr.title]=\"officeReloadButtonTitle\"\n (click)=\"retryLoad()\"\n >\n <ng-container *ngIf=\"officeReloadTemplate; else defaultOfficeReloadTemplate\">\n <ng-container *ngTemplateOutlet=\"officeReloadTemplate; context: errorTemplateContext\"></ng-container>\n </ng-container>\n <ng-template #defaultOfficeReloadTemplate>{{ officeReloadButtonText }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"externalViewer\">\n <iframe\n (load)=\"iframeLoaded()\"\n *ngIf=\"fullUrl && showIframe && disableContent === 'none'\"\n #iframe\n id=\"iframe-doc-viewer\"\n frameBorder=\"0\"\n allow=\"clipboard-read; clipboard-write\"\n [src]=\"fullUrl\"\n ></iframe>\n <div class=\"container\" *ngIf=\"disableContent !== 'none'\">\n <div\n [class.overlay-full]=\"disableContent === 'all'\"\n [class.overlay-popout-google]=\"\n configuredViewer === 'google' &&\n (disableContent === 'popout' || disableContent === 'popout-hide')\n \"\n [class.overlay-popout-office]=\"\n configuredViewer === 'office' &&\n (disableContent === 'popout' || disableContent === 'popout-hide')\n \"\n [style.background-color]=\"\n disableContent === 'popout-hide' ? '#fff' : 'transparent'\n \"\n ></div>\n <iframe\n (load)=\"iframeLoaded()\"\n *ngIf=\"fullUrl && showIframe\"\n #iframe\n id=\"iframe\"\n frameBorder=\"0\"\n allow=\"clipboard-read; clipboard-write\"\n [src]=\"fullUrl\"\n ></iframe>\n </div>\n </ng-container>\n</div>\n","import { NgxDocViewerComponent } from './document-viewer.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule, NgxDocViewerComponent],\n exports: [NgxDocViewerComponent],\n})\nexport class NgxDocViewerModule {}\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","names":[],"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"],"sourcesContent":["import {\n AfterRenderRef,\n Component,\n ElementRef,\n Injector,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n TemplateRef,\n afterNextRender,\n computed,\n contentChild,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport {\n DisableContent,\n IFrameReloader,\n ViewerRecoveryConfig,\n ViewerRecoveryController,\n ViewerRenderPhase,\n ViewerType,\n getDisableContentOverlay,\n getDocxToHtml,\n googleCheckSubscription,\n iframeIsLoaded,\n resolveViewerDetails,\n} from 'docviewhelper';\n\n/** @deprecated Use `ViewerType` instead. */\nexport type viewerType = ViewerType;\ninterface ViewerTemplateContext {\n $implicit: ViewerStateContext;\n state: ViewerStateContext;\n}\nexport interface ViewerStateContext {\n viewer: ViewerType;\n url: string;\n phase: ViewerRenderPhase;\n errorText: string;\n retry: () => void;\n actionUrl: string;\n}\n\nconst SUPPORTED_VIEWERS: ViewerType[] = ['google', 'office', 'mammoth', 'pdf', 'url'];\n// Inputs that change which document is shown; any of them starts a new load.\nconst SOURCE_INPUTS = ['url', 'viewer', 'viewerUrl', 'queryParams', 'overrideLocalhost'];\n\n@Component({\n selector: 'ngx-doc-viewer',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: 'document-viewer.component.html',\n styles: [\n `\n :host {\n display: block;\n }\n .container {\n width: 100%;\n height: 100%;\n position: relative;\n }\n .inline-document-shell {\n width: 100%;\n height: 100%;\n overflow: auto;\n background:\n linear-gradient(180deg, #eef2f7 0%, #f8fafc 100%);\n padding: 24px;\n }\n .inline-document-page {\n max-width: 900px;\n min-height: 100%;\n margin: 0 auto;\n background: #fff;\n border: 1px solid #dbe4f0;\n border-radius: 18px;\n box-shadow:\n 0 18px 40px -24px rgba(15, 23, 42, 0.3),\n 0 6px 18px -10px rgba(15, 23, 42, 0.18);\n padding: 40px 48px;\n }\n .inline-document-page,\n .inline-document-page * {\n box-sizing: border-box;\n }\n .inline-document-page {\n color: #1e293b;\n font-family:\n Georgia, Cambria, 'Times New Roman', Times, serif;\n font-size: 18px;\n line-height: 1.7;\n }\n .inline-document-page p,\n .inline-document-page ul,\n .inline-document-page ol,\n .inline-document-page blockquote,\n .inline-document-page table {\n margin: 0 0 1.1em;\n }\n .inline-document-page h1,\n .inline-document-page h2,\n .inline-document-page h3,\n .inline-document-page h4,\n .inline-document-page h5,\n .inline-document-page h6 {\n margin: 1.4em 0 0.65em;\n color: #0f172a;\n line-height: 1.25;\n }\n .inline-document-page h1:first-child,\n .inline-document-page h2:first-child,\n .inline-document-page h3:first-child,\n .inline-document-page p:first-child {\n margin-top: 0;\n }\n .inline-document-page table {\n width: 100%;\n border-collapse: collapse;\n }\n .inline-document-page td,\n .inline-document-page th {\n padding: 6px 10px;\n vertical-align: top;\n }\n .inline-document-page img {\n max-width: 100%;\n height: auto;\n }\n .inline-document-page hr {\n border: 0;\n border-top: 1px solid #dbe4f0;\n margin: 1.5em 0;\n }\n .loading-overlay {\n position: absolute;\n inset: 0;\n z-index: 1001;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.88);\n color: #475569;\n font-size: 14px;\n font-weight: 600;\n letter-spacing: 0.02em;\n text-align: center;\n padding: 16px;\n }\n .error-overlay {\n position: absolute;\n inset: 0;\n z-index: 1001;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.94);\n color: #991b1b;\n font-size: 14px;\n font-weight: 600;\n letter-spacing: 0.02em;\n text-align: center;\n padding: 16px;\n }\n .error-viewer {\n margin-top: 8px;\n color: #475569;\n }\n .error-url {\n margin-top: 4px;\n color: #64748b;\n font-size: 12px;\n word-break: break-word;\n }\n .error-actions {\n margin-top: 14px;\n display: flex;\n gap: 8px;\n justify-content: center;\n flex-wrap: wrap;\n }\n .retry-btn {\n border: 1px solid #fecaca;\n background: #fff;\n color: #991b1b;\n border-radius: 999px;\n padding: 8px 14px;\n font: inherit;\n cursor: pointer;\n }\n .secondary-action-btn {\n border: 1px solid #cbd5e1;\n background: #fff;\n color: #334155;\n border-radius: 999px;\n padding: 8px 14px;\n text-decoration: none;\n font: inherit;\n }\n .overlay {\n position: absolute;\n z-index: 1000;\n }\n .overlay-popout-google {\n width: 40px;\n height: 40px;\n right: 26px;\n top: 11.5px;\n }\n .overlay-popout-office {\n width: 100px;\n height: 20px;\n right: 0;\n bottom: 0;\n }\n .overlay-full {\n width: 100%;\n height: 100%;\n right: 0;\n top: 0;\n }\n .office-reload-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 1001;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background: rgba(255, 255, 255, 0.85);\n color: #475569;\n font-size: 16px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.5;\n transition: opacity 0.15s;\n padding: 0;\n }\n .office-reload-btn:hover {\n opacity: 1;\n }\n iframe,\n object {\n display: block;\n width: 100%;\n height: 100%;\n }\n @media (max-width: 768px) {\n .inline-document-shell {\n padding: 12px;\n }\n .inline-document-page {\n border-radius: 12px;\n padding: 22px 18px;\n }\n }\n `,\n ],\n})\nexport class NgxDocViewerComponent implements OnChanges, OnDestroy {\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly ngZone = inject(NgZone);\n private readonly injector = inject(Injector);\n\n readonly loaded = output<void>();\n readonly loading = output<ViewerStateContext>();\n // eslint-disable-next-line @angular-eslint/no-output-native -- public API since v21\n readonly error = output<ViewerStateContext>();\n readonly phaseChange = output<ViewerStateContext>();\n\n readonly url = input('');\n readonly queryParams = input('');\n readonly viewerUrl = input('');\n readonly googleCheckInterval = input(3000);\n readonly googleMaxChecks = input(5);\n readonly googleFinalRetryDelay = input(0);\n readonly disableContent = input<DisableContent>('none');\n readonly googleCheckContentLoaded = input(true);\n readonly viewer = input<ViewerType>('google');\n readonly overrideLocalhost = input('');\n readonly loadingText = input('Loading document...');\n readonly errorTextOverride = input('');\n readonly retryButtonText = input('Retry');\n readonly officeAutoRetry = input(false);\n readonly officeRetryDelay = input(3000);\n readonly officeReloadButtonText = input('↻');\n readonly officeReloadButtonTitle = input('Reload document');\n readonly secondaryActionText = input('');\n readonly secondaryActionMode = input<'open' | 'download'>('open');\n\n readonly loadingTemplate = contentChild('loadingContent', { read: TemplateRef });\n readonly errorTemplate = contentChild('errorContent', { read: TemplateRef });\n readonly errorActionsTemplate = contentChild('errorActions', { read: TemplateRef });\n readonly officeReloadTemplate = contentChild('officeReloadContent', {\n read: TemplateRef,\n });\n private readonly iframe = viewChild<ElementRef<HTMLIFrameElement>>('iframe');\n\n readonly renderPhase = signal<ViewerRenderPhase>('idle');\n readonly externalViewer = signal(false);\n readonly fullUrl = signal<SafeResourceUrl | undefined>(undefined);\n readonly docHtml = signal('');\n readonly errorText = signal('');\n readonly sourceUrl = signal('');\n // A new key per load remounts the iframe/object so it loads (and fires load) again.\n private readonly loadKey = signal(0);\n readonly loadKeys = computed(() => (this.fullUrl() ? [this.loadKey()] : []));\n readonly displayedErrorText = computed(\n () => this.errorTextOverride() || this.errorText() || 'Unable to load document.',\n );\n readonly overlayClass = computed(() => {\n const overlay = getDisableContentOverlay(this.viewer(), this.disableContent());\n return overlay ? `overlay overlay-${overlay}` : undefined;\n });\n readonly templateContext = computed<ViewerTemplateContext>(() => {\n const state: ViewerStateContext = {\n viewer: this.viewer(),\n url: this.sourceUrl() || this.url(),\n phase: this.renderPhase(),\n errorText: this.displayedErrorText(),\n retry: () => this.retryLoad(),\n actionUrl: this.sourceUrl() || this.url(),\n };\n return { $implicit: state, state };\n });\n\n private checkIFrameSubscription?: IFrameReloader = undefined;\n private googleProbe?: AfterRenderRef = undefined;\n private recovery?: ViewerRecoveryController = undefined;\n private lastEmittedPhase?: ViewerRenderPhase = undefined;\n\n ngOnDestroy(): void {\n this.recovery?.dispose();\n this.stopGoogleProbe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['viewer'] && !SUPPORTED_VIEWERS.includes(this.viewer())) {\n console.error(\n `Unsupported viewer: '${this.viewer()}'. Supported viewers: ${SUPPORTED_VIEWERS.join(', ')}`,\n );\n }\n if (\n SOURCE_INPUTS.some(\n (name) =>\n changes[name] &&\n changes[name].currentValue !== changes[name].previousValue,\n )\n ) {\n this.load();\n }\n }\n\n retryLoad() {\n this.load();\n }\n\n iframeLoaded() {\n const iframe = this.iframe()?.nativeElement;\n if (iframe && iframeIsLoaded(iframe)) {\n this.recovery?.notifyLoaded();\n this.checkIFrameSubscription?.unsubscribe();\n this.setRenderPhase('ready');\n }\n }\n\n objectLoaded() {\n this.recovery?.notifyLoaded();\n this.setRenderPhase('ready');\n }\n\n private load() {\n const loadKey = this.loadKey() + 1;\n const isActive = () => loadKey === this.loadKey();\n this.loadKey.set(loadKey);\n const recovery = this.ensureRecovery();\n this.stopGoogleProbe();\n\n const url = this.url();\n const viewer = this.viewer();\n const details = resolveViewerDetails({\n url,\n viewer,\n queryParams: this.queryParams(),\n viewerUrl: this.viewerUrl(),\n overrideLocalhost: this.overrideLocalhost(),\n });\n recovery.trackSource(details.url);\n this.externalViewer.set(!!url && details.externalViewer);\n this.fullUrl.set(undefined);\n this.docHtml.set('');\n this.errorText.set('');\n this.sourceUrl.set(url);\n\n if (!url) {\n recovery.clearTimers();\n this.setRenderPhase('idle');\n return;\n }\n this.setRenderPhase('loading');\n\n if (viewer === 'mammoth') {\n recovery.beginInlineLoad(isActive);\n getDocxToHtml(details.url).then(\n (html) => {\n if (!isActive()) {\n return;\n }\n recovery.notifyLoaded();\n this.docHtml.set(html);\n this.setRenderPhase('ready');\n },\n (error) => {\n if (!isActive()) {\n return;\n }\n recovery.clearTimers();\n this.errorText.set(\n error instanceof Error ? error.message : 'Unable to load document.',\n );\n this.setRenderPhase('error');\n },\n );\n return;\n }\n\n this.fullUrl.set(this.domSanitizer.bypassSecurityTrustResourceUrl(details.url));\n const plan = recovery.beginExternalLoad(isActive);\n if (plan.modes.includes('google-probe')) {\n this.startGoogleProbe(isActive);\n }\n }\n\n private ensureRecovery(): ViewerRecoveryController {\n if (!this.recovery) {\n this.recovery = new ViewerRecoveryController(this.buildRecoveryConfig(), {\n triggerRetry: () => this.retryLoad(),\n reportTimeout: () => {\n if (this.renderPhase() !== 'loading') {\n return;\n }\n this.errorText.set(\n `The ${this.viewer()} viewer did not finish loading in time.`,\n );\n this.setRenderPhase('error');\n },\n });\n }\n this.recovery.configure(this.buildRecoveryConfig());\n return this.recovery;\n }\n\n private buildRecoveryConfig(): ViewerRecoveryConfig {\n return {\n viewer: this.viewer(),\n googleCheckContentLoaded: this.googleCheckContentLoaded(),\n googleCheckInterval: this.googleCheckInterval(),\n googleMaxChecks: this.googleMaxChecks(),\n googleFinalRetryDelay: this.googleFinalRetryDelay(),\n officeAutoRetry: this.officeAutoRetry(),\n officeRetryDelay: this.officeRetryDelay(),\n };\n }\n\n // Google sometimes answers with an empty 204 page; reload the iframe until the\n // viewer shows up. Starts once the iframe for this load has been rendered.\n // see: https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives\n private startGoogleProbe(isActive: () => boolean) {\n this.googleProbe = afterNextRender(\n () => {\n this.googleProbe = undefined;\n const iframe = this.iframe()?.nativeElement;\n if (!isActive() || !iframe) {\n return;\n }\n this.checkIFrameSubscription = googleCheckSubscription();\n this.ngZone.runOutsideAngular(() =>\n this.checkIFrameSubscription?.subscribe(\n iframe,\n this.googleCheckInterval(),\n this.googleMaxChecks(),\n ),\n );\n },\n { injector: this.injector },\n );\n }\n\n private stopGoogleProbe() {\n this.googleProbe?.destroy();\n this.googleProbe = undefined;\n this.checkIFrameSubscription?.unsubscribe();\n this.checkIFrameSubscription = undefined;\n }\n\n private setRenderPhase(phase: ViewerRenderPhase) {\n this.renderPhase.set(phase);\n if (this.lastEmittedPhase === phase) {\n return;\n }\n this.lastEmittedPhase = phase;\n const { state } = this.templateContext();\n this.phaseChange.emit(state);\n if (phase === 'loading') {\n this.loading.emit(state);\n }\n if (phase === 'error') {\n this.error.emit(state);\n }\n if (phase === 'ready') {\n this.loaded.emit();\n }\n }\n}\n","<div class=\"container\">\n @if (renderPhase() === 'loading') {\n <div class=\"loading-overlay\">\n @if (loadingTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template; context: templateContext()\" />\n } @else {\n {{ loadingText() }}\n }\n </div>\n }\n @if (renderPhase() === 'error') {\n <div class=\"error-overlay\">\n @if (errorTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template; context: templateContext()\" />\n } @else {\n <div>\n <div>{{ displayedErrorText() }}</div>\n <div class=\"error-viewer\">Viewer: {{ viewer() }}</div>\n @if (sourceUrl()) {\n <div class=\"error-url\">{{ sourceUrl() }}</div>\n }\n @if (errorActionsTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template; context: templateContext()\" />\n } @else {\n <div class=\"error-actions\">\n <button type=\"button\" class=\"retry-btn\" (click)=\"retryLoad()\">\n {{ retryButtonText() }}\n </button>\n @if (secondaryActionText() && sourceUrl()) {\n <a\n class=\"secondary-action-btn\"\n [href]=\"sourceUrl()\"\n [attr.target]=\"secondaryActionMode() === 'open' ? '_blank' : null\"\n [attr.rel]=\"secondaryActionMode() === 'open' ? 'noreferrer' : null\"\n [attr.download]=\"secondaryActionMode() === 'download' ? '' : null\"\n >\n {{ secondaryActionText() }}\n </a>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (externalViewer()) {\n @for (key of loadKeys(); track key) {\n <iframe\n #iframe\n class=\"ngx-doc-viewer-iframe\"\n title=\"Document viewer\"\n frameBorder=\"0\"\n allow=\"clipboard-read; clipboard-write\"\n [src]=\"fullUrl()\"\n (load)=\"iframeLoaded()\"\n ></iframe>\n }\n @if (overlayClass(); as overlay) {\n <div\n [class]=\"overlay\"\n [style.background-color]=\"disableContent() === 'popout-hide' ? '#fff' : 'transparent'\"\n ></div>\n }\n } @else if (viewer() === 'pdf') {\n @for (key of loadKeys(); track key) {\n <object\n class=\"ngx-doc-viewer-object\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"100%\"\n [data]=\"fullUrl()\"\n (load)=\"objectLoaded()\"\n >\n <p>\n Your browser does not support PDFs.\n <a [href]=\"fullUrl()\">Download the PDF</a>.\n </p>\n </object>\n }\n } @else {\n <div class=\"inline-document-shell\">\n <div class=\"inline-document-page\" [innerHTML]=\"docHtml()\"></div>\n </div>\n }\n\n @if (viewer() === 'office' && renderPhase() === 'ready') {\n <button\n class=\"office-reload-btn\"\n type=\"button\"\n [attr.title]=\"officeReloadButtonTitle()\"\n (click)=\"retryLoad()\"\n >\n @if (officeReloadTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template; context: templateContext()\" />\n } @else {\n {{ officeReloadButtonText() }}\n }\n </button>\n }\n</div>\n","import { NgxDocViewerComponent } from './document-viewer.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule, NgxDocViewerComponent],\n exports: [NgxDocViewerComponent],\n})\nexport class NgxDocViewerModule {}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-doc-viewer",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Angular document viewer.",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
],
|
|
22
22
|
"homepage": "https://github.com/Marcelh1983/document-viewer/tree/main/packages/ngx-doc-viewer",
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@angular/core": ">=
|
|
25
|
-
"@angular/platform-browser": ">=
|
|
26
|
-
"@angular/common": ">=
|
|
24
|
+
"@angular/core": ">= 17.3.0",
|
|
25
|
+
"@angular/platform-browser": ">= 17.3.0",
|
|
26
|
+
"@angular/common": ">= 17.3.0"
|
|
27
27
|
},
|
|
28
28
|
"main": "./fesm2022/ngx-doc-viewer.mjs",
|
|
29
29
|
"module": "./fesm2022/ngx-doc-viewer.mjs",
|
|
@@ -35,6 +35,6 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"docviewhelper": "0.
|
|
38
|
+
"docviewhelper": "0.2.0"
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -1,96 +1,187 @@
|
|
|
1
|
-
import * as i0 from
|
|
2
|
-
import { OnChanges, OnDestroy,
|
|
3
|
-
import * as i1 from
|
|
4
|
-
import { SafeResourceUrl
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
type
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { OnChanges, OnDestroy, SimpleChanges, TemplateRef } from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import { SafeResourceUrl } from "@angular/platform-browser";
|
|
5
|
+
import { DisableContent, ViewerRenderPhase, ViewerType } from "docviewhelper";
|
|
6
|
+
export * from "docviewhelper";
|
|
7
|
+
/** @deprecated Use `ViewerType` instead. */
|
|
8
|
+
export type viewerType = ViewerType;
|
|
9
9
|
interface ViewerTemplateContext {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
$implicit: ViewerStateContext;
|
|
11
|
+
state: ViewerStateContext;
|
|
12
12
|
}
|
|
13
|
-
interface ViewerStateContext {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
export interface ViewerStateContext {
|
|
14
|
+
viewer: ViewerType;
|
|
15
|
+
url: string;
|
|
16
|
+
phase: ViewerRenderPhase;
|
|
17
|
+
errorText: string;
|
|
18
|
+
retry: () => void;
|
|
19
|
+
actionUrl: string;
|
|
20
20
|
}
|
|
21
|
-
declare class NgxDocViewerComponent implements OnChanges, OnDestroy {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
21
|
+
export declare class NgxDocViewerComponent implements OnChanges, OnDestroy {
|
|
22
|
+
private readonly domSanitizer;
|
|
23
|
+
private readonly ngZone;
|
|
24
|
+
private readonly injector;
|
|
25
|
+
readonly loaded: import("@angular/core").OutputEmitterRef<void>;
|
|
26
|
+
readonly loading: import("@angular/core").OutputEmitterRef<ViewerStateContext>;
|
|
27
|
+
readonly error: import("@angular/core").OutputEmitterRef<ViewerStateContext>;
|
|
28
|
+
readonly phaseChange: import("@angular/core").OutputEmitterRef<ViewerStateContext>;
|
|
29
|
+
readonly url: import("@angular/core").InputSignal<string>;
|
|
30
|
+
readonly queryParams: import("@angular/core").InputSignal<string>;
|
|
31
|
+
readonly viewerUrl: import("@angular/core").InputSignal<string>;
|
|
32
|
+
readonly googleCheckInterval: import("@angular/core").InputSignal<number>;
|
|
33
|
+
readonly googleMaxChecks: import("@angular/core").InputSignal<number>;
|
|
34
|
+
readonly googleFinalRetryDelay: import("@angular/core").InputSignal<number>;
|
|
35
|
+
readonly disableContent: import("@angular/core").InputSignal<DisableContent>;
|
|
36
|
+
readonly googleCheckContentLoaded: import("@angular/core").InputSignal<boolean>;
|
|
37
|
+
readonly viewer: import("@angular/core").InputSignal<ViewerType>;
|
|
38
|
+
readonly overrideLocalhost: import("@angular/core").InputSignal<string>;
|
|
39
|
+
readonly loadingText: import("@angular/core").InputSignal<string>;
|
|
40
|
+
readonly errorTextOverride: import("@angular/core").InputSignal<string>;
|
|
41
|
+
readonly retryButtonText: import("@angular/core").InputSignal<string>;
|
|
42
|
+
readonly officeAutoRetry: import("@angular/core").InputSignal<boolean>;
|
|
43
|
+
readonly officeRetryDelay: import("@angular/core").InputSignal<number>;
|
|
44
|
+
readonly officeReloadButtonText: import("@angular/core").InputSignal<string>;
|
|
45
|
+
readonly officeReloadButtonTitle: import("@angular/core").InputSignal<string>;
|
|
46
|
+
readonly secondaryActionText: import("@angular/core").InputSignal<string>;
|
|
47
|
+
readonly secondaryActionMode: import("@angular/core").InputSignal<"open" | "download">;
|
|
48
|
+
readonly loadingTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
49
|
+
readonly errorTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
50
|
+
readonly errorActionsTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
51
|
+
readonly officeReloadTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
52
|
+
private readonly iframe;
|
|
53
|
+
readonly renderPhase: import("@angular/core").WritableSignal<ViewerRenderPhase>;
|
|
54
|
+
readonly externalViewer: import("@angular/core").WritableSignal<boolean>;
|
|
55
|
+
readonly fullUrl: import("@angular/core").WritableSignal<SafeResourceUrl | undefined>;
|
|
56
|
+
readonly docHtml: import("@angular/core").WritableSignal<string>;
|
|
57
|
+
readonly errorText: import("@angular/core").WritableSignal<string>;
|
|
58
|
+
readonly sourceUrl: import("@angular/core").WritableSignal<string>;
|
|
59
|
+
private readonly loadKey;
|
|
60
|
+
readonly loadKeys: import("@angular/core").Signal<number[]>;
|
|
61
|
+
readonly displayedErrorText: import("@angular/core").Signal<string>;
|
|
62
|
+
readonly overlayClass: import("@angular/core").Signal<string | undefined>;
|
|
63
|
+
readonly templateContext: import("@angular/core").Signal<ViewerTemplateContext>;
|
|
64
|
+
private checkIFrameSubscription?;
|
|
65
|
+
private googleProbe?;
|
|
66
|
+
private recovery?;
|
|
67
|
+
private lastEmittedPhase?;
|
|
68
|
+
ngOnDestroy(): void;
|
|
69
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
70
|
+
retryLoad(): void;
|
|
71
|
+
iframeLoaded(): void;
|
|
72
|
+
objectLoaded(): void;
|
|
73
|
+
private load;
|
|
74
|
+
private ensureRecovery;
|
|
75
|
+
private buildRecoveryConfig;
|
|
76
|
+
private startGoogleProbe;
|
|
77
|
+
private stopGoogleProbe;
|
|
78
|
+
private setRenderPhase;
|
|
79
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxDocViewerComponent, never>;
|
|
80
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgxDocViewerComponent, "ngx-doc-viewer", never, {
|
|
81
|
+
"url": {
|
|
82
|
+
"alias": "url";
|
|
83
|
+
"required": false;
|
|
84
|
+
"isSignal": true;
|
|
85
|
+
};
|
|
86
|
+
"queryParams": {
|
|
87
|
+
"alias": "queryParams";
|
|
88
|
+
"required": false;
|
|
89
|
+
"isSignal": true;
|
|
90
|
+
};
|
|
91
|
+
"viewerUrl": {
|
|
92
|
+
"alias": "viewerUrl";
|
|
93
|
+
"required": false;
|
|
94
|
+
"isSignal": true;
|
|
95
|
+
};
|
|
96
|
+
"googleCheckInterval": {
|
|
97
|
+
"alias": "googleCheckInterval";
|
|
98
|
+
"required": false;
|
|
99
|
+
"isSignal": true;
|
|
100
|
+
};
|
|
101
|
+
"googleMaxChecks": {
|
|
102
|
+
"alias": "googleMaxChecks";
|
|
103
|
+
"required": false;
|
|
104
|
+
"isSignal": true;
|
|
105
|
+
};
|
|
106
|
+
"googleFinalRetryDelay": {
|
|
107
|
+
"alias": "googleFinalRetryDelay";
|
|
108
|
+
"required": false;
|
|
109
|
+
"isSignal": true;
|
|
110
|
+
};
|
|
111
|
+
"disableContent": {
|
|
112
|
+
"alias": "disableContent";
|
|
113
|
+
"required": false;
|
|
114
|
+
"isSignal": true;
|
|
115
|
+
};
|
|
116
|
+
"googleCheckContentLoaded": {
|
|
117
|
+
"alias": "googleCheckContentLoaded";
|
|
118
|
+
"required": false;
|
|
119
|
+
"isSignal": true;
|
|
120
|
+
};
|
|
121
|
+
"viewer": {
|
|
122
|
+
"alias": "viewer";
|
|
123
|
+
"required": false;
|
|
124
|
+
"isSignal": true;
|
|
125
|
+
};
|
|
126
|
+
"overrideLocalhost": {
|
|
127
|
+
"alias": "overrideLocalhost";
|
|
128
|
+
"required": false;
|
|
129
|
+
"isSignal": true;
|
|
130
|
+
};
|
|
131
|
+
"loadingText": {
|
|
132
|
+
"alias": "loadingText";
|
|
133
|
+
"required": false;
|
|
134
|
+
"isSignal": true;
|
|
135
|
+
};
|
|
136
|
+
"errorTextOverride": {
|
|
137
|
+
"alias": "errorTextOverride";
|
|
138
|
+
"required": false;
|
|
139
|
+
"isSignal": true;
|
|
140
|
+
};
|
|
141
|
+
"retryButtonText": {
|
|
142
|
+
"alias": "retryButtonText";
|
|
143
|
+
"required": false;
|
|
144
|
+
"isSignal": true;
|
|
145
|
+
};
|
|
146
|
+
"officeAutoRetry": {
|
|
147
|
+
"alias": "officeAutoRetry";
|
|
148
|
+
"required": false;
|
|
149
|
+
"isSignal": true;
|
|
150
|
+
};
|
|
151
|
+
"officeRetryDelay": {
|
|
152
|
+
"alias": "officeRetryDelay";
|
|
153
|
+
"required": false;
|
|
154
|
+
"isSignal": true;
|
|
155
|
+
};
|
|
156
|
+
"officeReloadButtonText": {
|
|
157
|
+
"alias": "officeReloadButtonText";
|
|
158
|
+
"required": false;
|
|
159
|
+
"isSignal": true;
|
|
160
|
+
};
|
|
161
|
+
"officeReloadButtonTitle": {
|
|
162
|
+
"alias": "officeReloadButtonTitle";
|
|
163
|
+
"required": false;
|
|
164
|
+
"isSignal": true;
|
|
165
|
+
};
|
|
166
|
+
"secondaryActionText": {
|
|
167
|
+
"alias": "secondaryActionText";
|
|
168
|
+
"required": false;
|
|
169
|
+
"isSignal": true;
|
|
170
|
+
};
|
|
171
|
+
"secondaryActionMode": {
|
|
172
|
+
"alias": "secondaryActionMode";
|
|
173
|
+
"required": false;
|
|
174
|
+
"isSignal": true;
|
|
175
|
+
};
|
|
176
|
+
}, {
|
|
177
|
+
"loaded": "loaded";
|
|
178
|
+
"loading": "loading";
|
|
179
|
+
"error": "error";
|
|
180
|
+
"phaseChange": "phaseChange";
|
|
181
|
+
}, ["loadingTemplate", "errorTemplate", "errorActionsTemplate", "officeReloadTemplate"], never, true, never>;
|
|
87
182
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export { NgxDocViewerComponent, NgxDocViewerModule };
|
|
96
|
-
export type { ViewerStateContext, viewerType };
|
|
183
|
+
export declare class NgxDocViewerModule {
|
|
184
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxDocViewerModule, never>;
|
|
185
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgxDocViewerModule, never, [typeof i1.CommonModule, typeof NgxDocViewerComponent], [typeof NgxDocViewerComponent]>;
|
|
186
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgxDocViewerModule>;
|
|
187
|
+
}
|