UNPKG

ng2-pdf-viewer-piyapan

Version:
1 lines 51.7 kB
{"version":3,"file":"ng2-pdf-viewer-piyapan.mjs","sources":["../../src/app/utils/event-bus-utils.ts","../../src/app/utils/helpers.ts","../../src/app/pdf-viewer/pdf-viewer.component.ts","../../src/app/pdf-viewer/pdf-viewer.module.ts","../../ng2-pdf-viewer-piyapan.ts"],"sourcesContent":["import { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport type { EventBus } from 'pdfjs-dist/web/pdf_viewer';\n\nexport function createEventBus(pdfJsViewer: any, destroy$: Subject<void>) {\n  const globalEventBus: EventBus = new pdfJsViewer.EventBus();\n  attachDOMEventsToEventBus(globalEventBus, destroy$);\n  return globalEventBus;\n}\n\nfunction attachDOMEventsToEventBus(\n  eventBus: EventBus,\n  destroy$: Subject<void>\n): void {\n  fromEvent(eventBus, 'documentload')\n    .pipe(takeUntil(destroy$))\n    .subscribe(() => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('documentload', true, true, {});\n      window.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'pagerendered')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ pageNumber, cssTransform, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('pagerendered', true, true, {\n        pageNumber,\n        cssTransform,\n      });\n      source.div.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'textlayerrendered')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ pageNumber, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('textlayerrendered', true, true, { pageNumber });\n      source.textLayerDiv?.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'pagechanging')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ pageNumber, source }: any) => {\n      const event = document.createEvent('UIEvents');\n      event.initEvent('pagechanging', true, true);\n      /* tslint:disable:no-string-literal */\n      event['pageNumber'] = pageNumber;\n      source.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'pagesinit')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('pagesinit', true, true, null);\n      source.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'pagesloaded')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ pagesCount, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('pagesloaded', true, true, { pagesCount });\n      source.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'scalechange')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ scale, presetValue, source }: any) => {\n      const event = document.createEvent('UIEvents');\n      event.initEvent('scalechange', true, true);\n      /* tslint:disable:no-string-literal */\n      event['scale'] = scale;\n      /* tslint:disable:no-string-literal */\n      event['presetValue'] = presetValue;\n      source.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'updateviewarea')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ location, source }: any) => {\n      const event = document.createEvent('UIEvents');\n      event.initEvent('updateviewarea', true, true);\n      event['location'] = location;\n      source.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'find')\n    .pipe(takeUntil(destroy$))\n    .subscribe(\n      ({\n        source,\n        type,\n        query,\n        phraseSearch,\n        caseSensitive,\n        highlightAll,\n        findPrevious,\n      }: any) => {\n        if (source === window) {\n          return; // event comes from FirefoxCom, no need to replicate\n        }\n        const event = document.createEvent('CustomEvent');\n        event.initCustomEvent('find' + type, true, true, {\n          query,\n          phraseSearch,\n          caseSensitive,\n          highlightAll,\n          findPrevious,\n        });\n        window.dispatchEvent(event);\n      }\n    );\n\n  fromEvent(eventBus, 'attachmentsloaded')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ attachmentsCount, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('attachmentsloaded', true, true, {\n        attachmentsCount,\n      });\n      source.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'sidebarviewchanged')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ view, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('sidebarviewchanged', true, true, { view });\n      source.outerContainer.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'pagemode')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ mode, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('pagemode', true, true, { mode });\n      source.pdfViewer.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'namedaction')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ action, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('namedaction', true, true, { action });\n      source.pdfViewer.container.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'presentationmodechanged')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ active, switchInProgress }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('presentationmodechanged', true, true, {\n        active,\n        switchInProgress,\n      });\n      window.dispatchEvent(event);\n    });\n\n  fromEvent(eventBus, 'outlineloaded')\n    .pipe(takeUntil(destroy$))\n    .subscribe(({ outlineCount, source }: any) => {\n      const event = document.createEvent('CustomEvent');\n      event.initCustomEvent('outlineloaded', true, true, { outlineCount });\n      source.container.dispatchEvent(event);\n    });\n}\n","export function assign(obj: any, prop: string, value: any) {\n  obj[prop] = value;\n}\n\nexport function isSSR() {\n  return typeof window === 'undefined';\n}","/**\n * Created by vadimdez on 21/06/16.\n */\nimport {\n  Component,\n  Input,\n  Output,\n  ElementRef,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges,\n  OnInit,\n  OnDestroy,\n  ViewChild,\n  AfterViewChecked,\n  NgZone\n} from '@angular/core';\nimport { from, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport * as PDFJS from 'pdfjs-dist/legacy/build/pdf';\nimport * as PDFJSViewer from 'pdfjs-dist/legacy/web/pdf_viewer';\n\nimport { createEventBus } from '../utils/event-bus-utils';\nimport { assign, isSSR } from '../utils/helpers';\n\nimport type {\n  PDFSource,\n  PDFPageProxy,\n  PDFProgressData,\n  PDFDocumentProxy,\n  PDFDocumentLoadingTask,\n  PDFViewerOptions\n} from './typings';\n\nif (!isSSR()) {\n  assign(PDFJS, 'verbosity', PDFJS.VerbosityLevel.INFOS);\n}\n\nexport enum RenderTextMode {\n  DISABLED,\n  ENABLED,\n  ENHANCED\n}\n\n@Component({\n  selector: 'pdf-viewer',\n  template: `\n    <div #pdfViewerContainer class=\"ng2-pdf-viewer-container\">\n      <div class=\"pdfViewer\"></div>\n    </div>\n  `,\n  styleUrls: ['./pdf-viewer.component.scss']\n})\nexport class PdfViewerComponent\n  implements OnChanges, OnInit, OnDestroy, AfterViewChecked {\n  static CSS_UNITS = 96.0 / 72.0;\n  static BORDER_WIDTH = 9;\n\n  @ViewChild('pdfViewerContainer') pdfViewerContainer;\n\n  private isVisible = false;\n  private pdfMultiPageViewer: any;\n  private pdfMultiPageLinkService: any;\n  private pdfMultiPageFindController: any;\n\n  private pdfSinglePageViewer: any;\n  private pdfSinglePageLinkService: any;\n  private pdfSinglePageFindController: any;\n\n  private _cMapsUrl =\n    typeof PDFJS !== 'undefined'\n      ? `https://unpkg.com/pdfjs-dist@${(PDFJS as any).version}/cmaps/`\n      : null;\n  private _renderText = true;\n  private _renderTextMode: RenderTextMode = RenderTextMode.ENABLED;\n  private _stickToPage = false;\n  private _originalSize = true;\n  private _pdf: PDFDocumentProxy;\n  private _page = 1;\n  private _zoom = 1;\n  private _zoomScale: 'page-height' | 'page-fit' | 'page-width' = 'page-width';\n  private _rotation = 0;\n  private _showAll = true;\n  private _canAutoResize = true;\n  private _fitToPage = false;\n  private _externalLinkTarget = 'blank';\n  private _showBorders = false;\n  private lastLoaded: string | Uint8Array | PDFSource;\n  private _latestScrolledPage: number;\n\n  private resizeTimeout: number | null = null;\n  private pageScrollTimeout: number | null = null;\n  private isInitialized = false;\n  private loadingTask: PDFDocumentLoadingTask;\n  private destroy$ = new Subject<void>();\n\n  @Output('after-load-complete') afterLoadComplete = new EventEmitter<PDFDocumentProxy>();\n  @Output('page-rendered') pageRendered = new EventEmitter<CustomEvent>();\n  @Output('pages-initialized') pageInitialized = new EventEmitter<CustomEvent>();\n  @Output('text-layer-rendered') textLayerRendered = new EventEmitter<CustomEvent>();\n  @Output('error') onError = new EventEmitter<any>();\n  @Output('on-progress') onProgress = new EventEmitter<PDFProgressData>();\n  @Output() pageChange: EventEmitter<number> = new EventEmitter<number>(true);\n  @Input() src: string | Uint8Array | PDFSource;\n\n  @Input('c-maps-url')\n  set cMapsUrl(cMapsUrl: string) {\n    this._cMapsUrl = cMapsUrl;\n  }\n\n  @Input('page')\n  set page(_page) {\n    _page = parseInt(_page, 10) || 1;\n    const originalPage = _page;\n\n    if (this._pdf) {\n      _page = this.getValidPageNumber(_page);\n    }\n\n    this._page = _page;\n    if (originalPage !== _page) {\n      this.pageChange.emit(_page);\n    }\n  }\n\n  @Input('render-text')\n  set renderText(renderText: boolean) {\n    this._renderText = renderText;\n  }\n\n  @Input('render-text-mode')\n  set renderTextMode(renderTextMode: RenderTextMode) {\n    this._renderTextMode = renderTextMode;\n  }\n\n  @Input('original-size')\n  set originalSize(originalSize: boolean) {\n    this._originalSize = originalSize;\n  }\n\n  @Input('show-all')\n  set showAll(value: boolean) {\n    this._showAll = value;\n  }\n\n  @Input('stick-to-page')\n  set stickToPage(value: boolean) {\n    this._stickToPage = value;\n  }\n\n  @Input('zoom')\n  set zoom(value: number) {\n    if (value <= 0) {\n      return;\n    }\n\n    this._zoom = value;\n  }\n\n  get zoom() {\n    return this._zoom;\n  }\n\n  @Input('zoom-scale')\n  set zoomScale(value: 'page-height' | 'page-fit' | 'page-width') {\n    this._zoomScale = value;\n  }\n\n  get zoomScale() {\n    return this._zoomScale;\n  }\n\n  @Input('rotation')\n  set rotation(value: number) {\n    if (!(typeof value === 'number' && value % 90 === 0)) {\n      console.warn('Invalid pages rotation angle.');\n      return;\n    }\n\n    this._rotation = value;\n  }\n\n  @Input('external-link-target')\n  set externalLinkTarget(value: string) {\n    this._externalLinkTarget = value;\n  }\n\n  @Input('autoresize')\n  set autoresize(value: boolean) {\n    this._canAutoResize = Boolean(value);\n  }\n\n  @Input('fit-to-page')\n  set fitToPage(value: boolean) {\n    this._fitToPage = Boolean(value);\n  }\n\n  @Input('show-borders')\n  set showBorders(value: boolean) {\n    this._showBorders = Boolean(value);\n  }\n\n  static getLinkTarget(type: string) {\n    switch (type) {\n      case 'blank':\n        return (PDFJSViewer as any).LinkTarget.BLANK;\n      case 'none':\n        return (PDFJSViewer as any).LinkTarget.NONE;\n      case 'self':\n        return (PDFJSViewer as any).LinkTarget.SELF;\n      case 'parent':\n        return (PDFJSViewer as any).LinkTarget.PARENT;\n      case 'top':\n        return (PDFJSViewer as any).LinkTarget.TOP;\n    }\n\n    return null;\n  }\n\n  constructor(private element: ElementRef<HTMLElement>, private ngZone: NgZone) {\n    if (isSSR()) {\n      return;\n    }\n\n    let pdfWorkerSrc: string;\n\n    if (\n      window.hasOwnProperty('pdfWorkerSrc') &&\n      typeof (window as any).pdfWorkerSrc === 'string' &&\n      (window as any).pdfWorkerSrc\n    ) {\n      pdfWorkerSrc = (window as any).pdfWorkerSrc;\n    } else {\n      pdfWorkerSrc = `https://cdn.jsdelivr.net/npm/pdfjs-dist@${(PDFJS as any).version\n        }/legacy/build/pdf.worker.js`;\n    }\n\n    assign(PDFJS.GlobalWorkerOptions, 'workerSrc', pdfWorkerSrc);\n  }\n\n  ngAfterViewChecked(): void {\n    if (this.isInitialized) {\n      return;\n    }\n\n    const offset = this.pdfViewerContainer.nativeElement.offsetParent;\n\n    if (this.isVisible === true && offset == null) {\n      this.isVisible = false;\n      return;\n    }\n\n    if (this.isVisible === false && offset != null) {\n      this.isVisible = true;\n\n      setTimeout(() => {\n        this.initialize();\n        this.ngOnChanges({ src: this.src } as any);\n      });\n    }\n  }\n\n  ngOnInit() {\n    this.initialize();\n    this.setupResizeListener();\n  }\n\n  ngOnDestroy() {\n    this.clear();\n    this.destroy$.next();\n    this.loadingTask = null;\n  }\n\n  get pdfLinkService(): any {\n    return this._showAll\n      ? this.pdfMultiPageLinkService\n      : this.pdfSinglePageLinkService;\n  }\n\n  get pdfViewer(): any {\n    return this.getCurrentViewer();\n  }\n\n  get pdfFindController(): any {\n    return this._showAll\n      ? this.pdfMultiPageFindController\n      : this.pdfSinglePageFindController;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (isSSR() || !this.isVisible) {\n      return;\n    }\n\n    if ('src' in changes) {\n      this.loadPDF();\n    } else if (this._pdf) {\n      if ('renderText' in changes) {\n        this.getCurrentViewer().textLayerMode = this._renderText\n          ? this._renderTextMode\n          : RenderTextMode.DISABLED;\n        this.resetPdfDocument();\n      } else if ('showAll' in changes) {\n        this.resetPdfDocument();\n      }\n      if ('page' in changes) {\n        const { page } = changes;\n        if (page.currentValue === this._latestScrolledPage) {\n          return;\n        }\n\n        // New form of page changing: The viewer will now jump to the specified page when it is changed.\n        // This behavior is introduced by using the PDFSinglePageViewer\n        this.getCurrentViewer().scrollPageIntoView({ pageNumber: this._page });\n      }\n\n      this.update();\n    }\n  }\n\n  public updateSize() {\n    const currentViewer = this.getCurrentViewer();\n\n    from(\n      (this._pdf.getPage(\n        currentViewer.currentPageNumber\n      ) as unknown) as Promise<PDFPageProxy>\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe({\n        next: (page: PDFPageProxy) => {\n          const rotation = this._rotation || page.rotate;\n          const viewportWidth =\n            (page as any).getViewport({\n              scale: this._zoom,\n              rotation\n            }).width * PdfViewerComponent.CSS_UNITS;\n          let scale = this._zoom;\n          let stickToPage = true;\n\n          // Scale the document when it shouldn't be in original size or doesn't fit into the viewport\n          if (\n            !this._originalSize ||\n            (this._fitToPage &&\n              viewportWidth > this.pdfViewerContainer.nativeElement.clientWidth)\n          ) {\n            const viewPort = (page as any).getViewport({ scale: 1, rotation });\n            scale = this.getScale(viewPort.width, viewPort.height);\n            stickToPage = !this._stickToPage;\n          }\n\n          currentViewer.currentScale = scale;\n          if (stickToPage) currentViewer.scrollPageIntoView({ pageNumber: page.pageNumber, ignoreDestinationZoom: true })\n        }\n      });\n  }\n\n  public clear() {\n    if (this.loadingTask && !this.loadingTask.destroyed) {\n      this.loadingTask.destroy();\n    }\n\n    if (this._pdf) {\n      this._pdf.destroy();\n      this._pdf = null;\n      this.pdfMultiPageViewer.setDocument(null);\n      this.pdfSinglePageViewer.setDocument(null);\n\n      this.pdfMultiPageLinkService.setDocument(null, null);\n      this.pdfSinglePageLinkService.setDocument(null, null);\n\n      this.pdfMultiPageFindController.setDocument(null);\n      this.pdfSinglePageFindController.setDocument(null);\n    }\n  }\n\n  private getPDFLinkServiceConfig() {\n    const pdfLinkServiceConfig: any = {};\n    const linkTarget = PdfViewerComponent.getLinkTarget(this._externalLinkTarget);\n\n    if (linkTarget) {\n      pdfLinkServiceConfig.externalLinkTarget = linkTarget;\n    }\n\n    return pdfLinkServiceConfig;\n  }\n\n  private setupMultiPageViewer() {\n    assign(PDFJS, 'disableTextLayer', !this._renderText);\n\n    const eventBus = createEventBus(PDFJSViewer, this.destroy$);\n\n    fromEvent<CustomEvent>(eventBus, 'pagerendered')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event) => {\n        this.pageRendered.emit(event);\n      });\n\n    fromEvent<CustomEvent>(eventBus, 'pagesinit')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event) => {\n        this.pageInitialized.emit(event);\n      });\n\n    fromEvent(eventBus, 'pagechanging')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ pageNumber }) => {\n        if (this.pageScrollTimeout) {\n          clearTimeout(this.pageScrollTimeout);\n        }\n\n        this.pageScrollTimeout = window.setTimeout(() => {\n          this._latestScrolledPage = pageNumber;\n          this.pageChange.emit(pageNumber);\n        }, 100);\n      });\n\n    fromEvent<CustomEvent>(eventBus, 'textlayerrendered')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event) => {\n        this.textLayerRendered.emit(event);\n      });\n\n    this.pdfMultiPageLinkService = new PDFJSViewer.PDFLinkService({\n      eventBus, ...this.getPDFLinkServiceConfig()\n    });\n    this.pdfMultiPageFindController = new PDFJSViewer.PDFFindController({\n      linkService: this.pdfMultiPageLinkService,\n      eventBus,\n      updateMatchesCountOnProgress: false\n    });\n\n    const pdfOptions: PDFViewerOptions = {\n      eventBus,\n      container: this.element.nativeElement.querySelector('div'),\n      removePageBorders: !this._showBorders,\n      linkService: this.pdfMultiPageLinkService,\n      textLayerMode: this._renderText\n        ? this._renderTextMode\n        : RenderTextMode.DISABLED,\n      findController: this.pdfMultiPageFindController,\n      l10n: new PDFJSViewer.GenericL10n('en'),\n    };\n\n    this.pdfMultiPageViewer = new PDFJSViewer.PDFViewer(pdfOptions);\n    this.pdfMultiPageLinkService.setViewer(this.pdfMultiPageViewer);\n    this.pdfMultiPageFindController.setDocument(this._pdf);\n  }\n\n  private setupSinglePageViewer() {\n    assign(PDFJS, 'disableTextLayer', !this._renderText);\n\n    const eventBus = createEventBus(PDFJSViewer, this.destroy$);\n\n    fromEvent(eventBus, 'pagechanging')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ pageNumber }) => {\n        if (pageNumber !== this._page) {\n          this.page = pageNumber;\n        }\n      });\n\n    fromEvent<CustomEvent>(eventBus, 'pagerendered')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event) => {\n        this.pageRendered.emit(event);\n      });\n\n    fromEvent<CustomEvent>(eventBus, 'pagesinit')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event) => {\n        this.pageInitialized.emit(event);\n      });\n\n    fromEvent<CustomEvent>(eventBus, 'textlayerrendered')\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event) => {\n        this.textLayerRendered.emit(event);\n      });\n\n    this.pdfSinglePageLinkService = new PDFJSViewer.PDFLinkService({\n      eventBus, ...this.getPDFLinkServiceConfig()\n    });\n    this.pdfSinglePageFindController = new PDFJSViewer.PDFFindController({\n      linkService: this.pdfSinglePageLinkService,\n      eventBus,\n      updateMatchesCountOnProgress: false\n    });\n\n    const pdfOptions = {\n      eventBus,\n      container: this.element.nativeElement.querySelector('div'),\n      removePageBorders: !this._showBorders,\n      linkService: this.pdfSinglePageLinkService,\n      textLayerMode: this._renderText\n        ? this._renderTextMode\n        : RenderTextMode.DISABLED,\n      findController: this.pdfSinglePageFindController,\n      l10n: new PDFJSViewer.GenericL10n('en'),\n    };\n\n    this.pdfSinglePageViewer = new PDFJSViewer.PDFSinglePageViewer(pdfOptions);\n    this.pdfSinglePageLinkService.setViewer(this.pdfSinglePageViewer);\n    this.pdfSinglePageFindController.setDocument(this._pdf);\n\n    this.pdfSinglePageViewer._currentPageNumber = this._page;\n  }\n\n  private getValidPageNumber(page: number): number {\n    if (page < 1) {\n      return 1;\n    }\n\n    if (page > this._pdf.numPages) {\n      return this._pdf.numPages;\n    }\n\n    return page;\n  }\n\n  private getDocumentParams() {\n    const srcType = typeof this.src;\n\n    if (!this._cMapsUrl) {\n      return this.src;\n    }\n\n    const params: any = {\n      cMapUrl: this._cMapsUrl,\n      cMapPacked: true\n    };\n\n    if (srcType === 'string') {\n      params.url = this.src;\n    } else if (srcType === 'object') {\n      if ((this.src as any).byteLength !== undefined) {\n        params.data = this.src;\n      } else {\n        Object.assign(params, this.src);\n      }\n    }\n\n    return params;\n  }\n\n  private loadPDF() {\n    if (!this.src) {\n      return;\n    }\n\n    if (this.lastLoaded === this.src) {\n      this.update();\n      return;\n    }\n\n    this.clear();\n\n    this.loadingTask = PDFJS.getDocument(this.getDocumentParams());\n\n    this.loadingTask.onProgress = (progressData: PDFProgressData) => {\n      this.onProgress.emit(progressData);\n    };\n\n    const src = this.src;\n\n    from(this.loadingTask.promise as Promise<PDFDocumentProxy>)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe({\n        next: (pdf) => {\n          this._pdf = pdf;\n          this.lastLoaded = src;\n\n          this.afterLoadComplete.emit(pdf);\n\n          if (!this.pdfMultiPageViewer) {\n            this.setupMultiPageViewer();\n            this.setupSinglePageViewer();\n          }\n\n          this.resetPdfDocument();\n\n          this.update();\n        },\n        error: (error) => {\n          this.onError.emit(error);\n        }\n      });\n  }\n\n  private update() {\n    this.page = this._page;\n\n    this.render();\n  }\n\n  private render() {\n    this._page = this.getValidPageNumber(this._page);\n    const currentViewer = this.getCurrentViewer();\n\n    if (\n      this._rotation !== 0 ||\n      currentViewer.pagesRotation !== this._rotation\n    ) {\n      setTimeout(() => {\n        currentViewer.pagesRotation = this._rotation;\n      });\n    }\n\n    if (this._stickToPage) {\n      setTimeout(() => {\n        currentViewer.currentPageNumber = this._page;\n      });\n    }\n\n    this.updateSize();\n  }\n\n  private getScale(viewportWidth: number, viewportHeight: number) {\n    const borderSize = (this._showBorders ? 2 * PdfViewerComponent.BORDER_WIDTH : 0);\n    const pdfContainerWidth = this.pdfViewerContainer.nativeElement.clientWidth - borderSize;\n    const pdfContainerHeight = this.pdfViewerContainer.nativeElement.clientHeight - borderSize;\n\n    if (pdfContainerHeight === 0 || viewportHeight === 0 || pdfContainerWidth === 0 || viewportWidth === 0) {\n      return 1;\n    }\n\n    let ratio = 1;\n    switch (this._zoomScale) {\n      case 'page-fit':\n        ratio = Math.min((pdfContainerHeight / viewportHeight), (pdfContainerWidth / viewportWidth));\n        break;\n      case 'page-height':\n        ratio = (pdfContainerHeight / viewportHeight);\n        break;\n      case 'page-width':\n      default:\n        ratio = (pdfContainerWidth / viewportWidth);\n        break;\n    }\n\n    return (this._zoom * ratio) / PdfViewerComponent.CSS_UNITS;\n  }\n\n  private getCurrentViewer(): any {\n    return this._showAll ? this.pdfMultiPageViewer : this.pdfSinglePageViewer;\n  }\n\n  private resetPdfDocument() {\n    this.pdfFindController.setDocument(this._pdf);\n\n    if (this._showAll) {\n      this.pdfSinglePageViewer.setDocument(null);\n      this.pdfSinglePageLinkService.setDocument(null);\n\n      this.pdfMultiPageViewer.setDocument(this._pdf);\n      this.pdfMultiPageLinkService.setDocument(this._pdf, null);\n    } else {\n      this.pdfMultiPageViewer.setDocument(null);\n      this.pdfMultiPageLinkService.setDocument(null);\n\n      this.pdfSinglePageViewer.setDocument(this._pdf);\n      this.pdfSinglePageLinkService.setDocument(this._pdf, null);\n    }\n  }\n\n  private initialize(): void {\n    if (isSSR() || !this.isVisible) {\n      return;\n    }\n\n    this.isInitialized = true;\n    this.setupMultiPageViewer();\n    this.setupSinglePageViewer();\n  }\n\n  private setupResizeListener(): void {\n    if (isSSR()) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(window, 'resize')\n        .pipe(\n          debounceTime(100),\n          filter(() => this._canAutoResize && !!this._pdf),\n          takeUntil(this.destroy$)\n        )\n        .subscribe(() => {\n          this.updateSize();\n        });\n    });\n  }\n}\n","/**\n * Created by vadimdez on 01/11/2016.\n */\nimport { NgModule } from '@angular/core';\n\nimport { PdfViewerComponent } from './pdf-viewer.component';\n\nexport * from './typings';\n\n@NgModule({\n  declarations: [PdfViewerComponent],\n  exports: [PdfViewerComponent]\n})\nexport class PdfViewerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}