{"version":3,"file":"hoabanmc-ng2-pdfjs-viewer.mjs","sources":["../../src/ng2-pdfjs-viewer.component.ts","../../index.ts","../../hoabanmc-ng2-pdfjs-viewer.ts"],"sourcesContent":["import { Component, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ng2-pdfjs-viewer',\r\n  template: `\r\n  <style>\r\n  .toolbar {\r\n    position: relative;\r\n    left: 0;\r\n    right: 0;\r\n    z-index: 9999;\r\n    cursor: default;\r\n    display: none;\r\n  }\r\n\r\n  #toolbarContainer {\r\n    width: 100%;\r\n  }\r\n\r\n  #toolbarContainer {\r\n    position: relative;\r\n    height: 32px;\r\n    background-color: #474747;\r\n    background-image: linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));\r\n  }\r\n\r\n  #toolbarViewer {\r\n    height: 32px;\r\n    display: flex;\r\n    flex-direction: row;\r\n    justify-content: flex-end;\r\n    align-items: center;\r\n  }\r\n\r\n  button{\r\n    background: none;\r\n    width: 53px;\r\n    height: 25px;\r\n    min-width: 16px;\r\n    padding: 2px 6px 0;\r\n    border: 1px solid transparent;\r\n    border-radius: 2px;\r\n    color: hsla(0,0%,100%,.8);\r\n    font-size: 12px;\r\n    line-height: 14px;\r\n    -webkit-user-select: none;\r\n       -moz-user-select: none;\r\n        -ms-user-select: none;\r\n            user-select: none;\r\n    /* Opera does not support user-select, use <... unselectable=\"on\"> instead */\r\n    cursor: pointer;\r\n    transition-property: background-color, border-color, box-shadow;\r\n    transition-duration: 150ms;\r\n    transition-timing-function: ease;\r\n  }\r\n\r\n  button:hover{\r\n    background-color: hsla(0,0%,0%,.12);\r\n    background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\r\n    background-clip: padding-box;\r\n    border: 1px solid hsla(0,0%,0%,.35);\r\n    border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);\r\n    box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\r\n                0 0 1px hsla(0,0%,100%,.15) inset,\r\n                0 1px 0 hsla(0,0%,100%,.05);\r\n  }\r\n\r\n  .loadingSpin{\r\n    display: none;\r\n    position: relative;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100vw;\r\n    height: 100vh;\r\n    background-color: rgba(0, 0, 0, .25);\r\n    z-index: 1000; \r\n  }\r\n\r\n  .loader {\r\n    z-index: 1001; \r\n    position: absolute;\r\n    left: 50%;\r\n    top: 50%;\r\n    transform: translate(-50%, -50%);\r\n    border: 16px solid #f3f3f3;\r\n    border-radius: 50%;\r\n    border-top: 16px solid #3498db;\r\n    width: 120px;\r\n    height: 120px;\r\n    -webkit-animation: spin 2s linear infinite; /* Safari */\r\n    animation: spin 2s linear infinite;\r\n  }\r\n  \r\n  /* Safari */\r\n  @-webkit-keyframes spin {\r\n    0% { -webkit-transform: rotate(0deg); }\r\n    100% { -webkit-transform: rotate(360deg); }\r\n  }\r\n  \r\n  @keyframes spin {\r\n    0% { transform: rotate(0deg); }\r\n    100% { transform: rotate(360deg); }\r\n  }\r\n  </style>\r\n  <div #viewWordBar class=\"toolbar\">\r\n    <div id=\"toolbarContainer\">\r\n      <div id=\"toolbarViewer\">\r\n          <button id=\"download\" (click)=\"downloadWordFile()\" class=\"toolbarButton download\" title=\"Download\" tabindex=\"34\" data-l10n-id=\"download\">\r\n            <img src=\"/assets/pdfjs/web/images/toolbarButton-download.png\" alt=\"Download\"/>\r\n          </button>\r\n                \r\n          <button id=\"closeFile\" (click)=\"closeWordFile()\" class=\"toolbarButton\" title=\"Close\" tabindex=\"36\" data-l10n-id=\"closeFile\">\r\n          <img src=\"/assets/pdfjs/web/images/close-file.png\" alt=\"Close\"/>\r\n          </button>\r\n        </div>\r\n      </div>\r\n  </div>\r\n  <div #loadingSpin class=\"loadingSpin\">\r\n    <div class=\"loader\"></div>\r\n  </div>\r\n  <iframe id=\"iframeDocx\" #iframeDocx title=\"ng2-pdfjs-viewer\" [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\" #iframe width=\"100%\" height=\"100%\"></iframe>\r\n\r\n  <iframe id=\"iframePDF\" #iframePDF title=\"ng2-pdfjs-viewer\" [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\" #iframe width=\"100%\" height=\"100%\"></iframe>\r\n  `\r\n})\r\nexport class PdfJsViewerComponent {\r\n  @ViewChild('viewWordBar', { static: true }) viewWordBar: ElementRef;\r\n  @ViewChild('loadingSpin', { static: true }) loadingSpin: ElementRef;\r\n  @ViewChild('iframeDocx', { static: true }) iframeDocx: ElementRef;\r\n  @ViewChild('iframePDF', { static: true }) iframePDF: ElementRef;\r\n  @Input() public viewerId: string;\r\n  @Output() onBeforePrint: EventEmitter<any> = new EventEmitter();\r\n  @Output() onAfterPrint: EventEmitter<any> = new EventEmitter();\r\n  @Output() onDocumentLoad: EventEmitter<any> = new EventEmitter();\r\n  @Output() onPageChange: EventEmitter<any> = new EventEmitter();\r\n  @Input() public viewerFolder: string;\r\n  @Input() public externalWindow: boolean = false;\r\n  @Input() public showSpinner: boolean = true;\r\n  @Input() public downloadFileName: string;\r\n  @Input() public openFile: boolean = true;\r\n  @Input() public download: boolean = true;\r\n  @Input() public startDownload: boolean;\r\n  @Input() public viewBookmark: boolean = false;\r\n  @Input() public print: boolean = true;\r\n  @Input() public startPrint: boolean;\r\n  @Input() public fullScreen: boolean = true;\r\n  //@Input() public showFullScreen: boolean;\r\n  @Input() public find: boolean = true;\r\n  @Input() public zoom: string;\r\n  @Input() public nameddest: string;\r\n  @Input() public pagemode: string;\r\n  @Input() public lastPage: boolean;\r\n  @Input() public rotatecw: boolean;\r\n  @Input() public rotateccw: boolean;\r\n  @Input() public cursor: string;\r\n  @Input() public scroll: string;\r\n  @Input() public spread: string;\r\n  @Input() public locale: string;\r\n  @Input() public useOnlyCssZoom: boolean = false;\r\n  @Input() public errorOverride: boolean = false;\r\n  @Input() public errorAppend: boolean = true;\r\n  @Input() public errorMessage: string;\r\n  @Input() public diagnosticLogs: boolean = true;\r\n\r\n  @Input() public externalWindowOptions: string;\r\n  public viewerTab: any;\r\n  private _src: string | Blob | Uint8Array;\r\n  private _page: number;\r\n\r\n  @Input() public closeButton: boolean;\r\n  @Output() closeFile: EventEmitter<boolean> = new EventEmitter();\r\n\r\n  viewerUrl;\r\n\r\n  @Input()\r\n  public set page(_page: number) {\r\n    this._page = _page;\r\n    if (this.PDFViewerApplication) {\r\n      this.PDFViewerApplication.page = this._page;\r\n    } else {\r\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;)\");\r\n    }\r\n  }\r\n\r\n  public get page() {\r\n    if (this.PDFViewerApplication) {\r\n      return this.PDFViewerApplication.page;\r\n    } else {\r\n      if (this.diagnosticLogs) console.warn(\"Document is not loaded yet!!!. Try to retrieve page# after full load.\");\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  public set pdfSrc(_src: string | Blob | Uint8Array) {\r\n    this._src = _src;\r\n  }\r\n\r\n  public get pdfSrc() {\r\n    return this._src;\r\n  }\r\n\r\n  public get PDFViewerApplicationOptions() {\r\n    let pdfViewerOptions = null;\r\n    if (this.externalWindow) {\r\n      if (this.viewerTab) {\r\n        pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\r\n      }\r\n    } else {\r\n      if (this.iframePDF.nativeElement.contentWindow) {\r\n        pdfViewerOptions = this.iframePDF.nativeElement.contentWindow.PDFViewerApplicationOptions;\r\n      }\r\n    }\r\n    return pdfViewerOptions;\r\n  }\r\n\r\n  public get PDFViewerApplication() {\r\n    let pdfViewer = null;\r\n    if (this.externalWindow) {\r\n      if (this.viewerTab) {\r\n        pdfViewer = this.viewerTab.PDFViewerApplication;\r\n      }\r\n    } else {\r\n      if (this.iframePDF.nativeElement.contentWindow) {\r\n        pdfViewer = this.iframePDF.nativeElement.contentWindow.PDFViewerApplication;\r\n      }\r\n    }\r\n    return pdfViewer;\r\n  }\r\n\r\n  public receiveMessage(viewerEvent) {\r\n    if (viewerEvent.data && viewerEvent.data.viewerId && viewerEvent.data.event) {\r\n      let viewerId = viewerEvent.data.viewerId;\r\n      let event = viewerEvent.data.event;\r\n      let param = viewerEvent.data.param;\r\n      if (this.viewerId == viewerId) {\r\n        if (this.onBeforePrint && event == \"beforePrint\") {\r\n          this.onBeforePrint.emit();\r\n        }\r\n        else if (this.onAfterPrint && event == \"afterPrint\") {\r\n          this.onAfterPrint.emit();\r\n        }\r\n        else if (this.onDocumentLoad && event == \"pagesLoaded\") {\r\n          this.onDocumentLoad.emit(param);\r\n        }\r\n        else if (this.onPageChange && event == \"pageChange\") {\r\n          this.onPageChange.emit(param);\r\n        }\r\n      }\r\n    }\r\n    if (viewerEvent.data && viewerEvent.data.event === \"closefile\") {\r\n      this.closeFile.emit(true);\r\n    } else if (viewerEvent.data && viewerEvent.data.event === \"loaderError\") {\r\n      this.loadingSpin.nativeElement.style.display = 'block';\r\n      this.iframePDF.nativeElement.style.display = 'none';\r\n\r\n      console.log('load docx!');\r\n      let url = this.getUrlFile();\r\n      let ext = this.getFileExtension(url.split('.pdf')[0]);\r\n      if (this.isValidFile(ext)) {\r\n        this.viewWordBar.nativeElement.style.display = 'block';\r\n        this.viewerUrl = `https://docs.google.com/gview?url=${url.split('.pdf')[0]}&embedded=true`;\r\n        this.iframeDocx.nativeElement.style.display = 'block';\r\n\r\n        let countTimeload = 0;\r\n        let checkContent = false;\r\n        do {\r\n          this.iframeDocx.nativeElement.src = this.viewerUrl;\r\n          setTimeout(() => {\r\n            let content = this.iframeDocx.nativeElement.contentWindow.document.getElementsByTagName('body')[0].innerHTML;\r\n            if (content !== '') {\r\n              checkContent = true;\r\n              return;\r\n            } else {\r\n              countTimeload++;\r\n            }\r\n            console.log(countTimeload, content);\r\n          }, 3000 * countTimeload);\r\n        } while (countTimeload === 4 || checkContent);\r\n\r\n        setTimeout(() => {\r\n          this.loadingSpin.nativeElement.style.display = 'none';\r\n        }, 3000 * countTimeload);\r\n      }\r\n    }\r\n  }\r\n\r\n  downloadFile(blobUrl, filename) {\r\n    var a = document.createElement('a');\r\n    if (!a.click) {\r\n      throw new Error('DownloadManager: \"a.click()\" is not supported.');\r\n    }\r\n    a.href = blobUrl;\r\n    a.target = '_parent';\r\n    if ('download' in a) {\r\n      a.download = filename;\r\n    }\r\n    (document.body || document.documentElement).appendChild(a);\r\n    a.click();\r\n    a.remove();\r\n  }\r\n\r\n\r\n  public downloadWordFile() {\r\n    console.log('download file!');\r\n    let url = this.getUrlFile();\r\n    let ext = this.getFileExtension(url.split('.pdf')[0]);\r\n    console.log(url.split('.pdf')[0]);\r\n    if (this.isValidFile(ext)) {\r\n      this.downloadFile(url.split('.pdf')[0], 'test');\r\n    }\r\n    else {\r\n      this.downloadFile(url, 'test');\r\n    }\r\n  }\r\n\r\n  public closeWordFile() {\r\n    console.log('close File!');\r\n    this.closeFile.emit(true);\r\n  }\r\n\r\n  isValidFile(str) {\r\n    switch (str.toLowerCase()) {\r\n      case 'doc':\r\n      case 'docx':\r\n      case 'xls':\r\n      case 'xlsx':\r\n        return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  getUrlFile() {\r\n    if (this._src instanceof Blob) {\r\n      return encodeURIComponent(URL.createObjectURL(this._src));\r\n    } else if (this._src instanceof Uint8Array) {\r\n      let blob = new Blob([this._src], { type: \"application/pdf\" });\r\n      return encodeURIComponent(URL.createObjectURL(blob));\r\n    } else {\r\n      return this._src;\r\n    }\r\n  }\r\n\r\n  getFileExtension(filename) {\r\n    const ext = /^.+\\.([^.]+)$/.exec(filename);\r\n    return ext == null ? '' : ext[1];\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    window.addEventListener(\"message\", this.receiveMessage.bind(this), false);\r\n    if (!this.externalWindow) { // Load pdf for embedded views\r\n      this.loadPdf();\r\n    }\r\n  }\r\n\r\n  public refresh(): void { // Needs to be invoked for external window or when needs to reload pdf\r\n    this.loadPdf();\r\n  }\r\n\r\n  private loadPdf() {\r\n    if (!this._src) {\r\n      return;\r\n    }\r\n    this.viewerUrl = '';\r\n    this.viewWordBar.nativeElement.style.display = 'none';\r\n    // console.log(`Tab is - ${this.viewerTab}`);\r\n    // if (this.viewerTab) {\r\n    //   console.log(`Status of window - ${this.viewerTab.closed}`);\r\n    // }\r\n\r\n\r\n    this.iframeDocx.nativeElement.style.display = 'none';\r\n\r\n    if (this.externalWindow && (typeof this.viewerTab === 'undefined' || this.viewerTab.closed)) {\r\n      this.viewerTab = window.open('', '_blank', this.externalWindowOptions || '');\r\n      if (this.viewerTab == null) {\r\n        if (this.diagnosticLogs) console.error(\"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\");\r\n        return;\r\n      }\r\n\r\n      if (this.showSpinner) {\r\n        this.viewerTab.document.write(`\r\n          <style>\r\n          .loader {\r\n            position: fixed;\r\n            left: 40%;\r\n            top: 40%;\r\n            border: 16px solid #f3f3f3;\r\n            border-radius: 50%;\r\n            border-top: 16px solid #3498db;\r\n            width: 120px;\r\n            height: 120px;\r\n            animation: spin 2s linear infinite;\r\n          }\r\n          @keyframes spin {\r\n            0% {\r\n              transform: rotate(0deg);\r\n            }\r\n            100% {\r\n              transform: rotate(360deg);\r\n            }\r\n          }\r\n          </style>\r\n          <div class=\"loader\"></div>\r\n        `);\r\n      }\r\n    }\r\n\r\n    let fileUrl = this.getUrlFile();\r\n    // let this.viewerUrl;\r\n    if (this.viewerFolder) {\r\n      this.viewerUrl = `${this.viewerFolder}/web/viewer.html`;\r\n    } else {\r\n      this.viewerUrl = `assets/pdfjs/web/viewer.html`;\r\n    }\r\n\r\n    this.viewerUrl += `?file=${fileUrl}`;\r\n\r\n    if (typeof this.viewerId !== 'undefined') {\r\n      this.viewerUrl += `&viewerId=${this.viewerId}`;\r\n    }\r\n    if (typeof this.onBeforePrint !== 'undefined') {\r\n      this.viewerUrl += `&beforePrint=true`;\r\n    }\r\n    if (typeof this.onAfterPrint !== 'undefined') {\r\n      this.viewerUrl += `&afterPrint=true`;\r\n    }\r\n    if (typeof this.onDocumentLoad !== 'undefined') {\r\n      this.viewerUrl += `&pagesLoaded=true`;\r\n    }\r\n    if (typeof this.onPageChange !== 'undefined') {\r\n      this.viewerUrl += `&pageChange=true`;\r\n    }\r\n    if (typeof this.closeButton !== 'undefined') {\r\n      this.viewerUrl += `&closeFile=${this.closeButton}`;\r\n    }\r\n\r\n    if (this.downloadFileName) {\r\n      if (!this.downloadFileName.endsWith(\".pdf\")) {\r\n        this.downloadFileName += \".pdf\";\r\n      }\r\n      this.viewerUrl += `&fileName=${this.downloadFileName}`;\r\n    }\r\n    if (typeof this.openFile !== 'undefined') {\r\n      this.viewerUrl += `&openFile=${this.openFile}`;\r\n    }\r\n    if (typeof this.download !== 'undefined') {\r\n      this.viewerUrl += `&download=${this.download}`;\r\n    }\r\n    if (this.startDownload) {\r\n      this.viewerUrl += `&startDownload=${this.startDownload}`;\r\n    }\r\n    if (typeof this.viewBookmark !== 'undefined') {\r\n      this.viewerUrl += `&viewBookmark=${this.viewBookmark}`;\r\n    }\r\n    if (typeof this.print !== 'undefined') {\r\n      this.viewerUrl += `&print=${this.print}`;\r\n    }\r\n    if (this.startPrint) {\r\n      this.viewerUrl += `&startPrint=${this.startPrint}`;\r\n    }\r\n    if (typeof this.fullScreen !== 'undefined') {\r\n      this.viewerUrl += `&fullScreen=${this.fullScreen}`;\r\n    }\r\n    // if (this.showFullScreen) {\r\n    //   this.viewerUrl += `&showFullScreen=${this.showFullScreen}`;\r\n    // }\r\n    if (typeof this.find !== 'undefined') {\r\n      this.viewerUrl += `&find=${this.find}`;\r\n    }\r\n    if (this.lastPage) {\r\n      this.viewerUrl += `&lastpage=${this.lastPage}`;\r\n    }\r\n    if (this.rotatecw) {\r\n      this.viewerUrl += `&rotatecw=${this.rotatecw}`;\r\n    }\r\n    if (this.rotateccw) {\r\n      this.viewerUrl += `&rotateccw=${this.rotateccw}`;\r\n    }\r\n    if (this.cursor) {\r\n      this.viewerUrl += `&cursor=${this.cursor}`;\r\n    }\r\n    if (this.scroll) {\r\n      this.viewerUrl += `&scroll=${this.scroll}`;\r\n    }\r\n    if (this.spread) {\r\n      this.viewerUrl += `&spread=${this.spread}`;\r\n    }\r\n    if (this.locale) {\r\n      this.viewerUrl += `&locale=${this.locale}`;\r\n    }\r\n    if (this.useOnlyCssZoom) {\r\n      this.viewerUrl += `&useOnlyCssZoom=${this.useOnlyCssZoom}`;\r\n    }\r\n\r\n    if (this._page || this.zoom || this.nameddest || this.pagemode) this.viewerUrl += \"#\"\r\n    if (this._page) {\r\n      this.viewerUrl += `&page=${this._page}`;\r\n    }\r\n    if (this.zoom) {\r\n      this.viewerUrl += `&zoom=${this.zoom}`;\r\n    }\r\n    if (this.nameddest) {\r\n      this.viewerUrl += `&nameddest=${this.nameddest}`;\r\n    }\r\n    if (this.pagemode) {\r\n      this.viewerUrl += `&pagemode=${this.pagemode}`;\r\n    }\r\n    if (this.errorOverride || this.errorAppend) {\r\n      this.viewerUrl += `&errorMessage=${this.errorMessage}`;\r\n\r\n      if (this.errorOverride) {\r\n        this.viewerUrl += `&errorOverride=${this.errorOverride}`;\r\n      }\r\n      if (this.errorAppend) {\r\n        this.viewerUrl += `&errorAppend=${this.errorAppend}`;\r\n      }\r\n    }\r\n\r\n    if (this.externalWindow) {\r\n      this.viewerTab.location.href = this.viewerUrl;\r\n    } else {\r\n      this.iframePDF.nativeElement.src = this.viewerUrl;\r\n    }\r\n\r\n    console.log(`\r\n      pdfSrc = ${this.pdfSrc}\r\n      fileUrl = ${fileUrl}\r\n      externalWindow = ${this.externalWindow}\r\n      downloadFileName = ${this.downloadFileName}\r\n    `);\r\n\r\n    // viewerFolder = ${this.viewerFolder}\r\n    // openFile = ${this.openFile}\r\n    // download = ${this.download}\r\n    // startDownload = ${this.startDownload}\r\n    // viewBookmark = ${this.viewBookmark}\r\n    // print = ${this.print}\r\n    // startPrint = ${this.startPrint}\r\n    // fullScreen = ${this.fullScreen}\r\n    // find = ${this.find}\r\n    // lastPage = ${this.lastPage}\r\n    // rotatecw = ${this.rotatecw}\r\n    // rotateccw = ${this.rotateccw}\r\n    // cursor = ${this.cursor}\r\n    // scrollMode = ${this.scroll}\r\n    // spread = ${this.spread}\r\n    // page = ${this.page}\r\n    // zoom = ${this.zoom}\r\n    // nameddest = ${this.nameddest}\r\n    // pagemode = ${this.pagemode}\r\n    // pagemode = ${this.errorOverride}\r\n    // pagemode = ${this.errorAppend}\r\n    // pagemode = ${this.errorMessage}\r\n  }\r\n}","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PdfJsViewerComponent } from './src/ng2-pdfjs-viewer.component';\r\n\r\nexport * from './src/ng2-pdfjs-viewer.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  declarations: [\r\n    PdfJsViewerComponent\r\n  ],\r\n  exports: [\r\n    PdfJsViewerComponent\r\n  ]\r\n})\r\nexport class PdfJsViewerModule {\r\n  static forRoot(): ModuleWithProviders<PdfJsViewerModule> {\r\n    return {\r\n      ngModule: PdfJsViewerModule\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}