{"version":3,"file":"kariudo-ng2-pdfjs-viewer.mjs","sources":["../../src/ng2-pdfjs-viewer.component.ts","../../src/ng2-pdfjs-viewer.module.ts","../../kariudo-ng2-pdfjs-viewer.ts"],"sourcesContent":["import { Component, Input, Output, OnInit, OnDestroy, ViewChild, EventEmitter, ElementRef } from '@angular/core';\n\nexport type ChangedPage = number;\n\nexport type ChangedScale = number;\n\nexport interface ChangedRotation {\n  rotation: number;\n  page: number;\n}\n\n@Component({\n  selector: 'ng2-pdfjs-viewer',\n  template: `<iframe title=\"ng2-pdfjs-viewer\" [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\" #iframe width=\"100%\" height=\"100%\"></iframe>`\n})\nexport class PdfJsViewerComponent implements OnInit, OnDestroy {\n  @ViewChild('iframe', { static: true }) iframe: ElementRef;\n  static lastID = 0;\n  @Input() public viewerId = `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;\n  @Output() onBeforePrint: EventEmitter<void> = new EventEmitter();\n  @Output() onAfterPrint: EventEmitter<void> = new EventEmitter();\n  @Output() onDocumentLoad: EventEmitter<void> = new EventEmitter();\n  @Output() onPageChange: EventEmitter<ChangedPage> = new EventEmitter();\n  @Output() onScaleChange: EventEmitter<ChangedScale> = new EventEmitter();\n  @Output() onRotationChange: EventEmitter<ChangedRotation> = new EventEmitter();\n  @Input() public viewerFolder: string;\n  @Input() public externalWindow: boolean = false;\n  @Input() public target: string = '_blank';\n  @Input() public showSpinner: boolean = true;\n  @Input() public downloadFileName: string;\n  /** Display open file button in secondary toolbar menu. */\n  @Input() public openFile: boolean = true;\n  /** Display annotations/editor controls on toolbar. */\n  @Input() public annotations: boolean = false;\n  @Input() public download: boolean = true;\n  @Input() public startDownload: boolean;\n  @Input() public viewBookmark: boolean = true;\n  @Input() public print: boolean = true;\n  @Input() public startPrint: boolean;\n  @Input() public fullScreen: boolean = true;\n  //@Input() public showFullScreen: boolean;\n  @Input() public find: boolean = true;\n  @Input() public zoom: string;\n  @Input() public nameddest: string;\n  @Input() public pagemode: string;\n  @Input() public lastPage: boolean;\n  @Input() public rotatecw: boolean;\n  @Input() public rotateccw: boolean;\n  @Input() public cursor: string;\n  @Input() public scroll: string;\n  @Input() public spread: string;\n  @Input() public locale: string;\n  @Input() public useOnlyCssZoom: boolean = false;\n  @Input() public errorOverride: boolean = false;\n  @Input() public errorAppend: boolean = true;\n  @Input() public errorMessage: string;\n  @Input() public diagnosticLogs: boolean = false;\n\n  @Input() public externalWindowOptions: string;\n  public viewerTab: any;\n  private _src: string | Blob | Uint8Array;\n  private _page: number;\n\n  @Input()\n  public set page(_page: number) {\n    this._page = _page;\n    if(this.PDFViewerApplication) {\n      this.PDFViewerApplication.page = this._page;\n    } else {\n      if(this.diagnosticLogs) console.warn(\"Document is not loaded yet!!!. Try to set page# after full load. Ignore this warning if you are not setting page# using '.' notation. (E.g. pdfViewer.page = 5;)\");\n    }\n  }\n\n  public get page() {\n    if(this.PDFViewerApplication) {\n      return this.PDFViewerApplication.page;\n    } else {\n      if(this.diagnosticLogs) console.warn(\"Document is not loaded yet!!!. Try to retrieve page# after full load.\");\n    }\n  }\n\n  @Input()\n  public set pdfSrc(_src: string | Blob | Uint8Array) {\n    this._src = _src;\n  }\n\n  public get pdfSrc() {\n    return this._src;\n  }\n\n  public get PDFViewerApplicationOptions() {\n    let pdfViewerOptions = null;\n    if (this.externalWindow) {\n      if (this.viewerTab) {\n        pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\n      }\n    } else {\n      if (this.iframe.nativeElement.contentWindow) {\n        pdfViewerOptions = this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;\n      }\n    }\n    return pdfViewerOptions;\n  }\n\n  public get PDFViewerApplication() {\n    let pdfViewer = null;\n    if (this.externalWindow) {\n      if (this.viewerTab) {\n        pdfViewer = this.viewerTab.PDFViewerApplication;\n      }\n    } else {\n      if (this.iframe.nativeElement.contentWindow) {\n        pdfViewer = this.iframe.nativeElement.contentWindow.PDFViewerApplication;\n      }\n    }\n    if(this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer ->\", pdfViewer);\n    return pdfViewer;\n  }\n\nngOnInit(): void {   \n  // Load PDF for embedded views.\n  if (!this.externalWindow) {\n    this.loadPdf();\n  }\n\n  // Bind events.\n  this.bindToPdfJsEventBus();\n}\n\n  /**\n   * Waits for the PDF.js viewer to be ready, and binds the the event bus.\n   */\n  private bindToPdfJsEventBus() {\n    document.addEventListener(\"webviewerloaded\", () => {\n      if (this.diagnosticLogs) console.debug(\"PdfJsViewer: webviewerloaded event received\");\n      if (!this.PDFViewerApplication) {\n        if (this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer not yet (or no longer) available, events can not yet be bound.\");\n        return;\n      }\n      this.PDFViewerApplication.initializedPromise.then(() => {\n        // Configure the controls.\n        const app = this.configureVisibleFeatures();\n\n        const eventBus = app.eventBus;\n        // Once initialized, attach the events.\n        // Document Loaded.\n        eventBus.on(\"documentloaded\", () => {\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document has now been loaded!\");\n          this.onDocumentLoad.emit();\n        });\n\n        // Pages init.\n        eventBus.on(\"pagesinit\", () => {\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: All pages have been rendered!\");\n        });\n\n        // Before print.\n        eventBus.on(\"beforeprint\", () => {\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document is about to be printed!\");\n          this.onBeforePrint.emit();\n        });\n\n        // After print.\n        eventBus.on(\"afterprint\", () => {\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document has been printed!\");\n          this.onAfterPrint.emit();\n        });\n\n        // Page change.\n        eventBus.on(\"pagechanging\", (event) => {\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The page has changed:\", event.pageNumber);\n          this.onPageChange.emit(event.pageNumber);\n        });\n\n        // Rotation change.\n        eventBus.on(\"rotationchanging\", (event) => {\n          const newRotation: ChangedRotation = {\n            rotation: event.pagesRotation,\n            page: event.pageNumber\n          }\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The rotation has changed!\", event);\n          this.onRotationChange.emit(newRotation);\n        })\n\n        // Scale change.\n        eventBus.on(\"scalechanging\", (event) => {\n          const newScale: ChangedScale = event.scale;\n          if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document has scale has changed!\", newScale);\n          this.onScaleChange.emit(newScale);\n        })\n      });\n    });\n  }\n\n  private configureVisibleFeatures() {\n    const app = this.PDFViewerApplication;\n    const toolbarElement = app.appConfig.secondaryToolbar.toolbar;\n    // Display of \"open file\" button.\n    app.appConfig.secondaryToolbar.openFileButton.hidden = !this.openFile;\n    // Hide the horizontal separator in the menu if the control is hidden.\n    toolbarElement.querySelector('.horizontalToolbarSeparator').hidden = !this.openFile;\n    // Display of annotations/editor controls.\n    app.appConfig.toolbar.editorFreeTextButton.hidden = !this.annotations;\n    app.appConfig.toolbar.editorStampButton.hidden = !this.annotations;\n    app.appConfig.toolbar.editorInkButton.hidden = !this.annotations;\n    app.appConfig.toolbar.editorHighlightButton.hidden = !this.annotations;\n    return app;\n  }\n\n  public refresh(): void { // Needs to be invoked for external window or when needs to reload pdf\n    this.loadPdf();\n  }\n\n  private relaseUrl?: () => void; // Avoid memory leak with `URL.createObjectURL`\n  private loadPdf() {\n    if (!this._src) {\n      return;\n    }\n\n    if (this.externalWindow && (typeof this.viewerTab === 'undefined' || this.viewerTab.closed)) {\n      this.viewerTab = window.open('', this.target, this.externalWindowOptions || '');\n      if (this.viewerTab == null) {\n        console.error(\"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\");\n        return;\n      }\n\n      if (this.showSpinner) {\n        this.viewerTab.document.write(`\n          <style>\n          .loader {\n            position: fixed;\n            left: 40%;\n            top: 40%;\n            border: 16px solid #f3f3f3;\n            border-radius: 50%;\n            border-top: 16px solid #3498db;\n            width: 120px;\n            height: 120px;\n            animation: spin 2s linear infinite;\n          }\n          @keyframes spin {\n            0% {\n              transform: rotate(0deg);\n            }\n            100% {\n              transform: rotate(360deg);\n            }\n          }\n          </style>\n          <div class=\"loader\"></div>\n        `);\n      }\n    }\n\n    this.relaseUrl?.();\n    let fileUrl;\n    if (this._src instanceof Blob) {\n      const url = URL.createObjectURL(this._src);\n      fileUrl = encodeURIComponent(url);\n      this.relaseUrl = () => URL.revokeObjectURL(url);\n    } else if (this._src instanceof Uint8Array) {\n      let blob = new Blob([this._src], { type: \"application/pdf\" });\n      const url = URL.createObjectURL(blob);\n      this.relaseUrl = () => URL.revokeObjectURL(url);\n      fileUrl = encodeURIComponent(url);\n    } else {\n      fileUrl = this._src;\n    }\n\n    let viewerUrl;\n    if (this.viewerFolder) {\n      viewerUrl = `${this.viewerFolder}/web/viewer.html`;\n    } else {\n      viewerUrl = `assets/pdfjs/web/viewer.html`;\n    }\n\n    viewerUrl += `?file=${fileUrl}`;\n\n    if (typeof this.viewerId !== 'undefined') {\n      viewerUrl += `&viewerId=${this.viewerId}`;\n    }\n    if (typeof this.onBeforePrint !== 'undefined') {\n      viewerUrl += `&beforePrint=true`;\n    }\n    if (typeof this.onAfterPrint !== 'undefined') {\n      viewerUrl += `&afterPrint=true`;\n    }\n    if (typeof this.onDocumentLoad !== 'undefined') {\n      viewerUrl += `&pagesLoaded=true`;\n    }\n    if (typeof this.onPageChange !== 'undefined') {\n      viewerUrl += `&pageChange=true`;\n    }\n\n    if (this.downloadFileName) {\n      if(!this.downloadFileName.endsWith(\".pdf\")) {\n        this.downloadFileName += \".pdf\";\n      }\n      viewerUrl += `&fileName=${this.downloadFileName}`;\n    }\n    if (typeof this.openFile !== 'undefined') {\n      viewerUrl += `&openFile=${this.openFile}`;\n    }\n    if (typeof this.download !== 'undefined') {\n      viewerUrl += `&download=${this.download}`;\n    }\n    if (this.startDownload) {\n      viewerUrl += `&startDownload=${this.startDownload}`;\n    }\n    if (typeof this.viewBookmark !== 'undefined') {\n      viewerUrl += `&viewBookmark=${this.viewBookmark}`;\n    }\n    if (typeof this.print !== 'undefined') {\n      viewerUrl += `&print=${this.print}`;\n    }\n    if (this.startPrint) {\n      viewerUrl += `&startPrint=${this.startPrint}`;\n    }\n    if (typeof this.fullScreen !== 'undefined') {\n      viewerUrl += `&fullScreen=${this.fullScreen}`;\n    }\n    // if (this.showFullScreen) {\n    //   viewerUrl += `&showFullScreen=${this.showFullScreen}`;\n    // }\n    if (typeof this.find !== 'undefined') {\n      viewerUrl += `&find=${this.find}`;\n    }\n    if (this.lastPage) {\n      viewerUrl += `&lastpage=${this.lastPage}`;\n    }\n    if (this.rotatecw) {\n      viewerUrl += `&rotatecw=${this.rotatecw}`;\n    }\n    if (this.rotateccw) {\n      viewerUrl += `&rotateccw=${this.rotateccw}`;\n    }\n    if (this.cursor) {\n      viewerUrl += `&cursor=${this.cursor}`;\n    }\n    if (this.scroll) {\n      viewerUrl += `&scroll=${this.scroll}`;\n    }\n    if (this.spread) {\n      viewerUrl += `&spread=${this.spread}`;\n    }\n    if (this.locale) {\n      viewerUrl += `&locale=${this.locale}`;\n    }\n    if (this.useOnlyCssZoom) {\n      viewerUrl += `&useOnlyCssZoom=${this.useOnlyCssZoom}`;\n    }\n\n    if (this._page || this.zoom || this.nameddest || this.pagemode) viewerUrl += \"#\"\n    if (this._page) {\n      viewerUrl += `&page=${this._page}`;\n    }\n    if (this.zoom) {\n      viewerUrl += `&zoom=${this.zoom}`;\n    }\n    if (this.nameddest) {\n      viewerUrl += `&nameddest=${this.nameddest}`;\n    }\n    if (this.pagemode) {\n      viewerUrl += `&pagemode=${this.pagemode}`;\n    }\n    if (this.errorOverride || this.errorAppend) {\n      viewerUrl += `&errorMessage=${this.errorMessage}`;\n\n      if (this.errorOverride) {\n        viewerUrl += `&errorOverride=${this.errorOverride}`;\n      }\n      if (this.errorAppend) {\n        viewerUrl += `&errorAppend=${this.errorAppend}`;\n      }\n    }\n\n    if (this.externalWindow) {\n      this.viewerTab.location.href = viewerUrl;\n    } else {\n      this.iframe.nativeElement.contentWindow.location.replace(viewerUrl);\n    }\n    \n    if (this.diagnosticLogs) {\n      console.debug(`PdfJsViewer: Viewer URL configuration:\n        pdfSrc = ${this.pdfSrc}\n        fileUrl = ${fileUrl}\n        externalWindow = ${this.externalWindow}\n        downloadFileName = ${this.downloadFileName}\n        viewerFolder = ${this.viewerFolder}\n        openFile = ${this.openFile}\n        download = ${this.download}\n        startDownload = ${this.startDownload}\n        viewBookmark = ${this.viewBookmark}\n        print = ${this.print}\n        startPrint = ${this.startPrint}\n        fullScreen = ${this.fullScreen}\n        find = ${this.find}\n        lastPage = ${this.lastPage}\n        rotatecw = ${this.rotatecw}\n        rotateccw = ${this.rotateccw}\n        cursor = ${this.cursor}\n        scrollMode = ${this.scroll}\n        spread = ${this.spread}\n        page = ${this.page}\n        zoom = ${this.zoom}\n        nameddest = ${this.nameddest}\n        pagemode = ${this.pagemode}\n        errorOverride = ${this.errorOverride}\n        errorAppend = ${this.errorAppend}\n        errorMessage = ${this.errorMessage}\n      `);\n      }\n  }\n\n  ngOnDestroy(): void {\n    this.relaseUrl?.();\n  }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { PdfJsViewerComponent } from \"./ng2-pdfjs-viewer.component\";\n\n@NgModule({\n  imports: [CommonModule, PdfJsViewerComponent],\n  exports: [PdfJsViewerComponent],\n})\nexport class PdfJsViewerModule {\n  static forRoot(): ModuleWithProviders<PdfJsViewerModule> {\n    return {\n      ngModule: PdfJsViewerModule,\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}