{"version":3,"file":"pdf.mjs","sources":["../../../../packages/abc/pdf/pdf.config.ts","../../../../packages/abc/pdf/pdf.types.ts","../../../../packages/abc/pdf/pdf.component.ts","../../../../packages/abc/pdf/pdf.module.ts","../../../../packages/abc/pdf/pdf.ts"],"sourcesContent":["import { AlainPdfConfig } from '@delon/util/config';\n\nexport const PDF_DEFULAT_CONFIG: AlainPdfConfig = {\n  lib: `https://cdn.jsdelivr.net/npm/pdfjs-dist@3.6.x/`,\n  showAll: true,\n  renderText: true,\n  showBorders: false,\n  originalSize: true,\n  fitToPage: false,\n  autoReSize: true\n};\n","// import type { PDFDocumentProxy } from 'pdfjs-dist';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\ntype PDFDocumentProxy = NzSafeAny;\n\nexport type PdfChangeEventType =\n  | 'loaded'\n  | 'load-progress'\n  | 'pages-init'\n  | 'page-rendered'\n  | 'text-layer-rendered'\n  | 'pi'\n  | 'error';\nexport type PdfZoomScale = 'page-height' | 'page-fit' | 'page-width';\n\nexport interface PdfChangeEvent {\n  type?: PdfChangeEventType;\n  pi?: number;\n  total?: number;\n  pdf?: PDFDocumentProxy | null;\n  ev?: NzSafeAny;\n  progress?: { loaded: number; total: number };\n  error?: NzSafeAny;\n}\n\nexport enum PdfTextLayerMode {\n  DISABLE = 0,\n  ENABLE = 1,\n  ENABLE_ENHANCE = 2\n}\n\nexport enum PdfExternalLinkTarget {\n  NONE = 0, // Default value.\n  SELF = 1,\n  BLANK = 2,\n  PARENT = 3,\n  TOP = 4\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChange,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n  numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, timer, debounceTime, filter } from 'rxjs';\n\n// import type { PDFDocumentLoadingTask, PDFDocumentProxy } from 'pdfjs-dist';\n// import type { EventBus } from 'pdfjs-dist/types/web/event_utils';\n// import type { PDFFindController } from 'pdfjs-dist/types/web/pdf_find_controller';\n// import type { PDFLinkService } from 'pdfjs-dist/types/web/pdf_link_service';\n// import type { PDFViewer } from 'pdfjs-dist/types/web/pdf_viewer';\n\nimport { AlainConfigService } from '@delon/util/config';\nimport { ZoneOutside } from '@delon/util/decorator';\nimport { LazyService } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzSkeletonComponent } from 'ng-zorro-antd/skeleton';\n\nimport { PDF_DEFULAT_CONFIG } from './pdf.config';\nimport { PdfChangeEvent, PdfChangeEventType, PdfExternalLinkTarget, PdfTextLayerMode, PdfZoomScale } from './pdf.types';\n\n// TODO: Although pdfjs-dist is an optional dependency on canvas\n// will be installed automatically when the dependency is installed by default;\n// This requires a higher environment and often fails to install\ntype PDFDocumentLoadingTask = NzSafeAny;\ntype PDFDocumentProxy = NzSafeAny;\ntype EventBus = NzSafeAny;\ntype PDFFindController = NzSafeAny;\ntype PDFLinkService = NzSafeAny;\ntype PDFViewer = NzSafeAny;\n\nconst CSS_UNITS: number = 96.0 / 72.0;\nconst BORDER_WIDTH = 9;\n\n@Component({\n  selector: 'pdf',\n  exportAs: 'pdf',\n  template: `\n    @if (!inited || loading) {\n      <nz-skeleton />\n    }\n    <div class=\"pdf-container\">\n      <div class=\"pdfViewer\"></div>\n    </div>\n  `,\n  host: {\n    '[class.d-block]': `true`\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [NzSkeletonComponent]\n})\nexport class PdfComponent implements OnChanges, AfterViewInit, OnDestroy {\n  private readonly lazySrv = inject(LazyService);\n  private readonly platform = inject(Platform);\n  private readonly _el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly doc = inject(DOCUMENT);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly ngZone = inject(NgZone);\n  private readonly destroy$ = inject(DestroyRef);\n\n  inited = false;\n  private lib: string = '';\n  private _pdf?: PDFDocumentProxy | null;\n  private loadingTask?: PDFDocumentLoadingTask;\n  private _src: NzSafeAny;\n  private lastSrc?: NzSafeAny;\n  private _pi = 1;\n  private _total = 0;\n  private _showAll = true;\n  private _rotation = 0;\n  private _zoom = 1;\n  private _renderText = true;\n  private _loading = false;\n\n  private multiPageViewer?: PDFViewer;\n  private multiPageLinkService?: PDFLinkService;\n  private multiPageFindController?: PDFFindController;\n  private singlePageViewer?: PDFViewer;\n  private singlePageLinkService?: PDFLinkService;\n  private singlePageFindController?: PDFFindController;\n  private _eventBus?: EventBus;\n\n  @Input() set src(dataOrBuffer: NzSafeAny) {\n    this._src = dataOrBuffer;\n    this.load();\n  }\n  @Input({ transform: numberAttribute })\n  set pi(val: number) {\n    this._pi = this.getValidPi(val);\n    if (this.pageViewer) {\n      this.pageViewer.scrollPageIntoView({ pageNumber: this._pi });\n    }\n  }\n  @Input({ transform: booleanAttribute }) set showAll(val: boolean) {\n    this._showAll = val;\n    this.resetDoc();\n  }\n  @Input({ transform: booleanAttribute }) set renderText(val: boolean) {\n    this._renderText = val;\n    if (this.pageViewer) {\n      this.resetDoc();\n    }\n  }\n  @Input() textLayerMode = PdfTextLayerMode.ENABLE;\n  @Input({ transform: booleanAttribute }) showBorders = false;\n  @Input({ transform: booleanAttribute }) stickToPage = false;\n  @Input({ transform: booleanAttribute }) originalSize = true;\n  @Input({ transform: booleanAttribute }) fitToPage = false;\n  @Input({ transform: numberAttribute }) set zoom(val: number) {\n    if (val <= 0) return;\n    this._zoom = val;\n  }\n  @Input() zoomScale: PdfZoomScale = 'page-width';\n  @Input({ transform: numberAttribute }) set rotation(val: number) {\n    if (val % 90 !== 0) {\n      console.warn(`Invalid rotation angle, shoule be divisible by 90.`);\n      return;\n    }\n    this._rotation = val;\n  }\n  @Input({ transform: booleanAttribute }) autoReSize = true;\n  @Input() externalLinkTarget = PdfExternalLinkTarget.BLANK;\n  @Input({ transform: numberAttribute }) delay?: number;\n  @Output() readonly change = new EventEmitter<PdfChangeEvent>();\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get pdf(): PDFDocumentProxy | undefined | null {\n    return this._pdf;\n  }\n\n  get findController(): PDFFindController | undefined {\n    return this._showAll ? this.multiPageFindController : this.singlePageFindController;\n  }\n\n  get pageViewer(): PDFViewer | undefined {\n    return this._showAll ? this.multiPageViewer : this.singlePageViewer;\n  }\n\n  get linkService(): PDFLinkService | undefined {\n    return this._showAll ? this.multiPageLinkService : this.singlePageLinkService;\n  }\n\n  get eventBus(): EventBus | undefined {\n    return this._eventBus;\n  }\n\n  private get _textLayerMode(): PdfTextLayerMode {\n    return this._renderText ? this.textLayerMode : PdfTextLayerMode.DISABLE;\n  }\n\n  private get win(): NzSafeAny {\n    return this.doc.defaultView || window;\n  }\n\n  private get el(): HTMLElement {\n    return this._el.querySelector('.pdf-container') as HTMLElement;\n  }\n\n  constructor(configSrv: AlainConfigService) {\n    const cog = configSrv.merge('pdf', PDF_DEFULAT_CONFIG)!;\n    Object.assign(this, cog);\n\n    const lib = cog.lib!;\n    this.lib = lib.endsWith('/') ? lib : `${lib}/`;\n  }\n\n  private getValidPi(pi: number): number {\n    if (pi < 1) return 1;\n    const pdf = this._pdf;\n    return pdf && pi > pdf.numPages ? pdf.numPages : pi;\n  }\n\n  private emit(type: PdfChangeEventType, opt?: PdfChangeEvent): void {\n    this.ngZone.run(() =>\n      this.change.emit({\n        type,\n        pdf: this._pdf,\n        pi: this._pi,\n        total: this._total,\n        ...opt\n      })\n    );\n  }\n\n  private initDelay(): void {\n    if (!this.win.pdfjsLib) {\n      throw new Error(\n        `No window.pdfjsLib found, please make sure that cdn or local path exists, the current referenced path is: ${JSON.stringify(\n          this.lib\n        )}`\n      );\n    }\n    this.inited = true;\n    this.cdr.detectChanges();\n    this.win.pdfjsLib.GlobalWorkerOptions.workerSrc = `${this.lib}build/pdf.worker.min.js`;\n\n    timer(this.delay ?? 0)\n      .pipe(takeUntilDestroyed(this.destroy$))\n      .subscribe(() => this.load());\n  }\n\n  setLoading(status: boolean): void {\n    this.ngZone.run(() => {\n      this._loading = status;\n      this.cdr.detectChanges();\n    });\n  }\n\n  @ZoneOutside()\n  private load(): void {\n    const { _src } = this;\n    if (!this.inited || !_src) {\n      return;\n    }\n\n    if (this.lastSrc === _src) {\n      this.render();\n      return;\n    }\n\n    this.destroy();\n    this.ngZone.run(() => {\n      this._loading = true;\n      this.cdr.detectChanges();\n    });\n    this.setLoading(true);\n    const loadingTask: PDFDocumentLoadingTask = (this.loadingTask = this.win.pdfjsLib.getDocument(_src));\n    loadingTask.onProgress = (progress: { loaded: number; total: number }) => this.emit('load-progress', { progress });\n    (loadingTask.promise as PromiseLike<PDFDocumentProxy>)\n      .then(\n        pdf => {\n          this._pdf = pdf;\n          this.lastSrc = _src;\n          this._total = pdf.numPages;\n\n          this.emit('loaded');\n\n          if (!this.pageViewer) {\n            this.setupPageViewer();\n          }\n\n          this.resetDoc();\n          this.render();\n        },\n        error => this.emit('error', { error })\n      )\n      .then(() => this.setLoading(false));\n  }\n\n  @ZoneOutside()\n  private resetDoc(): void {\n    const pdf = this._pdf;\n    if (!pdf) {\n      return;\n    }\n    this.cleanDoc();\n\n    this.findController!.setDocument(pdf);\n    this.pageViewer!.setDocument(pdf);\n    this.linkService!.setDocument(pdf, null);\n  }\n\n  private cleanDoc(): void {\n    this.multiPageViewer!.setDocument(null as NzSafeAny);\n    this.singlePageViewer!.setDocument(null as NzSafeAny);\n\n    this.multiPageLinkService!.setDocument(null, null);\n    this.singlePageLinkService!.setDocument(null, null);\n\n    this.multiPageFindController!.setDocument(null as NzSafeAny);\n    this.singlePageFindController!.setDocument(null as NzSafeAny);\n  }\n\n  private render(): void {\n    const currentViewer = this.pageViewer;\n    if (!currentViewer) {\n      return;\n    }\n\n    if (this._rotation !== 0 || currentViewer.pagesRotation !== this._rotation) {\n      this.timeExec(() => {\n        currentViewer.pagesRotation = this._rotation;\n      });\n    }\n\n    if (this.stickToPage) {\n      this.timeExec(() => {\n        currentViewer.currentPageNumber = this._pi;\n      });\n    }\n\n    this.updateSize();\n  }\n\n  private timeExec(fn: () => void): void {\n    this.ngZone.runOutsideAngular(() => {\n      timer(0)\n        .pipe(takeUntilDestroyed(this.destroy$))\n        .subscribe(() => this.ngZone.runOutsideAngular(() => fn()));\n    });\n  }\n\n  @ZoneOutside()\n  private updateSize(): void {\n    const currentViewer = this.pageViewer;\n    if (!currentViewer) return;\n\n    this._pdf!.getPage(currentViewer.currentPageNumber).then((page: NzSafeAny) => {\n      const { _rotation, _zoom } = this;\n      const rotation = _rotation || page.rotate;\n      const viewportWidth =\n        page.getViewport({\n          scale: _zoom,\n          rotation\n        }).width * CSS_UNITS;\n      let scale = _zoom;\n\n      // Scale the document when it shouldn't be in original size or doesn't fit into the viewport\n      if (!this.originalSize || (this.fitToPage && viewportWidth > this.el.clientWidth)) {\n        const viewPort = page.getViewport({ scale: 1, rotation });\n        scale = this.getScale(viewPort.width, viewPort.height);\n      }\n\n      currentViewer.currentScale = scale;\n    });\n  }\n\n  private getScale(viewportWidth: number, viewportHeight: number): number {\n    const borderSize = this.showBorders ? 2 * BORDER_WIDTH : 0;\n    const el = this.el;\n    const containerWidth = el.clientWidth - borderSize;\n    const containerHeight = el.clientHeight - borderSize;\n\n    if (containerHeight === 0 || viewportHeight === 0 || containerWidth === 0 || viewportWidth === 0) {\n      return 1;\n    }\n\n    let ratio = 1;\n    switch (this.zoomScale) {\n      case 'page-fit':\n        ratio = Math.min(containerHeight / viewportHeight, containerWidth / viewportWidth);\n        break;\n      case 'page-height':\n        ratio = containerHeight / viewportHeight;\n        break;\n      case 'page-width':\n      default:\n        ratio = containerWidth / viewportWidth;\n        break;\n    }\n\n    return (this._zoom * ratio) / CSS_UNITS;\n  }\n\n  @ZoneOutside()\n  private destroy(): void {\n    const { loadingTask } = this;\n    if (loadingTask && !loadingTask.destroyed) {\n      loadingTask.destroy();\n    }\n    if (this._pdf) {\n      this._pdf.destroy();\n      this._pdf = null;\n      this.cleanDoc();\n    }\n  }\n\n  private setupPageViewer(): void {\n    this.win.pdfjsLib.disableTextLayer = !this._renderText;\n    this.win.pdfjsLib.externalLinkTarget = this.externalLinkTarget;\n\n    this.setupMultiPageViewer();\n    this.setupSinglePageViewer();\n  }\n\n  private createEventBus(): EventBus {\n    const eventBus: EventBus = new this.win.pdfjsViewer.EventBus();\n    eventBus.on(`pagesinit`, (ev: NzSafeAny) => {\n      this.emit('pages-init', { ev });\n    });\n    eventBus.on(`pagerendered`, (ev: NzSafeAny) => {\n      this.emit('page-rendered', { ev });\n    });\n    eventBus.on(`pagechanging`, (ev: NzSafeAny) => {\n      const nowPi = ev.pageNumber;\n      if (nowPi !== this._pi) {\n        this._pi = nowPi;\n        this.emit('pi', { ev });\n      }\n    });\n    eventBus.on(`textlayerrendered`, (ev: NzSafeAny) => {\n      this.emit('text-layer-rendered', { ev });\n    });\n    return eventBus;\n  }\n\n  private setupMultiPageViewer(): void {\n    const VIEWER = this.win.pdfjsViewer;\n\n    const eventBus = (this._eventBus = this.createEventBus());\n    const linkService: PDFLinkService = (this.multiPageLinkService = new VIEWER.PDFLinkService({\n      eventBus\n    }));\n    const findController: PDFFindController = (this.multiPageFindController = new VIEWER.PDFFindController({\n      eventBus,\n      linkService\n    }));\n\n    const viewer: PDFViewer = (this.multiPageViewer = new VIEWER.PDFViewer({\n      eventBus,\n      container: this.el,\n      removePageBorders: !this.showBorders,\n      textLayerMode: this._textLayerMode,\n      linkService,\n      findController\n    }));\n    linkService.setViewer(viewer);\n  }\n\n  private setupSinglePageViewer(): void {\n    const VIEWER = this.win.pdfjsViewer;\n\n    const eventBus = this.createEventBus();\n    const linkService: PDFLinkService = (this.singlePageLinkService = new VIEWER.PDFLinkService({\n      eventBus\n    }));\n    const findController: PDFFindController = (this.singlePageFindController = new VIEWER.PDFFindController({\n      eventBus,\n      linkService\n    }));\n\n    const pageViewer = (this.singlePageViewer = new VIEWER.PDFSinglePageViewer({\n      eventBus,\n      container: this.el,\n      removePageBorders: !this.showBorders,\n      textLayerMode: this._textLayerMode,\n      linkService,\n      findController\n    }));\n    linkService.setViewer(pageViewer);\n    pageViewer._currentPageNumber = this._pi;\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    if (this.win.pdfjsLib) {\n      this.initDelay();\n      return;\n    }\n    const { lib } = this;\n    this.lazySrv\n      .load(`${lib}build/pdf.min.js`)\n      .then(() => this.lazySrv.load([`${lib}web/pdf_viewer.js`, `${lib}web/pdf_viewer.css`]))\n      .then(() => this.initDelay());\n\n    this.ngZone.runOutsideAngular(() => this.initResize());\n  }\n\n  private initResize(): void {\n    fromEvent(this.win, 'resize')\n      .pipe(\n        debounceTime(100),\n        filter(() => this.autoReSize && this._pdf != null),\n        takeUntilDestroyed(this.destroy$)\n      )\n      .subscribe(() => this.updateSize());\n  }\n\n  ngOnChanges(changes: { [p in keyof PdfComponent]?: SimpleChange }): void {\n    if (this.inited && !changes.src) {\n      this.render();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\n\nimport { PdfComponent } from './pdf.component';\n\nconst COMPONENTS = [PdfComponent];\n\n@NgModule({\n  imports: [CommonModule, NzSkeletonModule, ...COMPONENTS],\n  exports: COMPONENTS\n})\nexport class PdfModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}