{"version":3,"file":"winkong-ng-zorro-antd-extension-print.mjs","sources":["../../../components/print/nzx-print-content.directive.ts","../../../components/print/nzx-print.component.ts","../../../components/print/nzx-print-v.component.ts","../../../components/print/nzx-print.directive.ts","../../../components/print/nzx-print.module.ts","../../../components/print/public-api.ts","../../../components/print/winkong-ng-zorro-antd-extension-print.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n  selector: '[nzxPrintContent]',\n})\nexport class NzxPrintContentDirective {\n  @Input() identifierStr: string | string[] = '';\n  @Input() customStyle = '';\n  constructor(public elementRef: ElementRef) {}\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  Inject,\n  Input,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { getElementByTag } from '@winkong/ng-zorro-antd-extension/util';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n/**\n * 使用Paged.js打印\n */\n@Component({\n  selector: 'nzx-print',\n  template: `\n    <ng-content select=\"[nzxPrintHeader]\"></ng-content>\n    <div #iframeContainer></div>\n  `,\n})\nexport class NzxPrintComponent implements OnInit, AfterViewInit {\n  @Input() printTitle = 'pdf';\n  /**\n   * a4 794px1123px\n   */\n  @Input() width = 814;\n  @Input() height = 1143;\n  @Input() enablePreview = true;\n  @Input() identifierStr: string | string[] = '';\n  @Input() pagedCDN = '';\n\n  @ViewChild('iframeContainer', { read: ElementRef, static: true })\n  private containerRef!: ElementRef;\n\n  @ContentChild(NzxPrintContentDirective, { read: ElementRef, static: true })\n  private _printEl!: ElementRef;\n  private iframeEl!: HTMLIFrameElement;\n  private _title = this.document.title;\n\n  private afterPrint = () => {\n    this.iframeEl.contentWindow!.parent.document.title = this._title;\n  };\n  private beforePrint = () => {\n    this.iframeEl.contentWindow!.parent.document.title = this.printTitle;\n  };\n\n  constructor(\n    private platform: Platform,\n    @Inject(DOCUMENT) private document: Document\n  ) {}\n\n  ngOnInit(): void {\n    if (!this.pagedCDN) {\n      throw new Error('pagedCDN is required');\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.render();\n  }\n\n  print() {\n    if (this.iframeEl.contentWindow) {\n      this.iframeEl.contentWindow.focus();\n      this.iframeEl.contentWindow.print();\n    }\n  }\n\n  refresh() {\n    setTimeout(() => {\n      this.render();\n    }, 100);\n  }\n\n  private render() {\n    this.iframeEl = this.document.createElement('iframe');\n    this.iframeEl.height = this.height + '';\n    this.iframeEl.width = this.width + '';\n    this.iframeEl.style.border = '1px solid #ccc';\n    this.iframeEl.style.background = '#fff';\n\n    if (!this.enablePreview) {\n      this.iframeEl.style.visibility = 'hidden';\n      if (this.platform.FIREFOX) {\n        this.iframeEl.setAttribute(\n          'style',\n          'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0'\n        );\n      } else {\n        this.iframeEl.setAttribute(\n          'style',\n          'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'\n        );\n      }\n    }\n    if (this.containerRef) {\n      this.containerRef.nativeElement.innerHTML = '';\n      this.containerRef.nativeElement.appendChild(this.iframeEl);\n    }\n\n    if (this.iframeEl.contentWindow) {\n      this.iframeEl.contentWindow.document.open();\n      this.iframeEl.contentWindow.document.write(this.getTemplateStr());\n      this.iframeEl.contentWindow.document.close();\n      // chorme bug\n      this.iframeEl.contentWindow.onbeforeprint = this.beforePrint;\n      this.iframeEl.contentWindow.onafterprint = this.afterPrint;\n    }\n  }\n\n  private getTemplateStr() {\n    const styles = getElementByTag('style', this.identifierStr);\n\n    const scripts = `\n        <script src=\"${this.pagedCDN}\"></script>\n        <script>\n          class RepeatingTableHeaders extends Paged.Handler {\n            constructor(chunker, polisher, caller) {\n              super(chunker, polisher, caller);\n            }\n\n            afterPageLayout(pageElement, page, breakToken, chunker) {\n              let tables = pageElement.querySelectorAll('table[data-split-from]');\n              tables.forEach((table) => {\n                let ref = table.dataset.ref;\n                let sourceTable = chunker.source.querySelector(\n                  \"[data-ref='\" + ref + \"']\"\n                );\n                let header = sourceTable.querySelector('thead');\n                if (header) {\n                  let clonedHeader = header.cloneNode(true);\n                  table.insertBefore(clonedHeader, table.firstChild);\n                }\n              });\n            }\n          }\n          Paged.registerHandlers(RepeatingTableHeaders);\n        </script>\n      `;\n\n    let html = `\n        <!DOCTYPE html>\n        <html>\n          <head>\n          <meta charset=\"utf-8\" />\n          <title>${this.printTitle}</title>\n          <base href=\"/\" />\n          <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n          <link\n            rel=\"preconnect\"\n            href=\"https://winkong-frontend.oss-cn-qingdao.aliyuncs.com\"\n          />\n          <style>\n              ::-webkit-scrollbar {\n                width: 5px;\n                height: 5px;\n              }\n              ::-webkit-scrollbar-thumb {\n                background-color: #999;\n                -webkit-border-radius: 5px;\n                border-radius: 5px;\n              }\n              ::-webkit-scrollbar-thumb:vertical:hover {\n                background-color: #666;\n              }\n              ::-webkit-scrollbar-thumb:vertical:active {\n                background-color: #666;\n              }\n              ::-webkit-scrollbar-button {\n                display: none;\n              }\n              ::-webkit-scrollbar-track {\n                background-color: #f1f1f1;\n              }\n          </style>\n\n            ${styles}\n            ${scripts}\n          </head>\n          <body>\n            ${this._printEl.nativeElement.outerHTML}\n          </body>\n        </html>\n      `;\n    html = html.replace(/<!---->/g, ' ');\n    return html;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport {\n  CoreViewer,\n  Navigation,\n  PageViewMode,\n  Payload,\n  SingleDocumentOptions,\n} from '@vivliostyle/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n/**\n * Vivliostyle 打印\n */\n@Component({\n  selector: 'nzx-print-v',\n  template: `\n    <ng-content select=\"[nzxPrintHeader]\"></ng-content>\n\n    <div #vivView [ngStyle]=\"{ margin: '10px 0' }\"></div>\n\n    <div nz-row nzJustify=\"end\" *ngIf=\"enablePreview\">\n      <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>\n      <nz-pagination\n        [nzPageIndex]=\"1\"\n        [nzTotal]=\"pageTotal\"\n        [nzPageSize]=\"1\"\n        [nzSize]=\"'small'\"\n        [nzShowTotal]=\"totalTemplate\"\n        nzShowQuickJumper\n        (nzPageIndexChange)=\"onPageIndexChange($event)\"\n      ></nz-pagination>\n    </div>\n  `,\n})\nexport class NzxPrintVComponent implements OnDestroy, AfterViewInit {\n  @Input() printTitle = 'pdf';\n  /**\n   * a4 794px1123px\n   */\n  @Input() width = 814;\n  @Input() height = 1143;\n  @Input() enablePreview = true;\n  @Input() pixelRatio = 8;\n  @Output() pageRenderComplete = new EventEmitter<boolean>();\n\n  viewer: CoreViewer | undefined;\n  pageTotal = 0;\n\n  @ViewChild('vivView')\n  private vivViewRef!: ElementRef<HTMLDivElement>;\n\n  @ContentChildren(NzxPrintContentDirective)\n  private _printElQueryList!: QueryList<NzxPrintContentDirective>;\n  private _title = document.title;\n  private iframeEl!: HTMLIFrameElement;\n  private _isRenderComplete = false;\n\n  constructor(private platform: Platform, private cd: ChangeDetectorRef) {}\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.createIframeWrapper();\n    }, 1000);\n  }\n\n  ngOnDestroy(): void {\n    if (this.viewer) {\n      this.clearView();\n    }\n  }\n\n  onPageIndexChange(num: number) {\n    if (this.viewer) {\n      this.viewer.navigateToPage(Navigation.EPAGE, num - 1);\n    }\n  }\n\n  print() {\n    if (this._isRenderComplete) {\n      this.iframeEl.contentWindow!.print();\n    } else {\n      console.warn('rending...');\n    }\n  }\n\n  refresh() {\n    setTimeout(() => {\n      this.createIframeWrapper();\n    }, 100);\n  }\n\n  private createIframeWrapper() {\n    if (this.vivViewRef) {\n      this.clearView();\n\n      this.iframeEl = document.createElement('iframe');\n      this.iframeEl.height = this.height + '';\n      this.iframeEl.width = this.width + '';\n      this.iframeEl.style.border = '1px solid #ccc';\n      this.iframeEl.style.background = '#fff';\n\n      const template = `\n        <!DOCTYPE html>\n        <html data-vivliostyle-paginated=\"true\">\n          <head>\n            <meta charset=\"utf-8\" />\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n            <base href=\"/\" />\n            <title>${this.printTitle}</title>\n            <style>\n              html[data-vivliostyle-paginated] {\n                width: 100%;\n                height: 100%;\n              }\n              html[data-vivliostyle-paginated] body,\n              html[data-vivliostyle-paginated] [data-vivliostyle-viewer-viewport] {\n                width: 100% !important;\n                height: 100% !important;\n                background: #fff;\n              }\n              html[data-vivliostyle-paginated],\n              html[data-vivliostyle-paginated] body {\n                margin: 0;\n                padding: 0;\n              }\n            </style>\n            <style id=\"vivliostyle-page-rules\"></style>\n          </head>\n          <body>\n            <div id=\"vivliostyle-viewer-viewport\"></div>\n          </body>\n        </html>\n      `;\n\n      if (!this.enablePreview) {\n        this.vivViewRef.nativeElement.setAttribute(\n          'style',\n          'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'\n        );\n      }\n\n      this.iframeEl.srcdoc = template;\n      this.vivViewRef.nativeElement.appendChild(this.iframeEl);\n      this.iframeEl.contentWindow!.onbeforeprint = () => {\n        this.iframeEl.contentWindow!.parent.document.title = this.printTitle;\n      };\n      this.iframeEl.contentWindow!.onafterprint = () => {\n        this.iframeEl.contentWindow!.parent.document.title = this._title;\n      };\n      this.createVivViewer();\n    }\n  }\n\n  private createVivViewer() {\n    this.iframeEl.onload = () => {\n      const els: NzxPrintContentDirective[] = this._printElQueryList.toArray();\n      const templates = this.getVivTemplates(els);\n      const options: SingleDocumentOptions[] = [];\n      templates.forEach((template) => {\n        const docBlob = new Blob([template], {\n          type: 'text/html',\n        });\n        const docURL = URL.createObjectURL(docBlob);\n        options.push({ url: docURL });\n      });\n      this.viewer = new CoreViewer(\n        {\n          viewportElement: this.iframeEl.contentWindow?.document.body\n            .firstElementChild as HTMLElement,\n        },\n        {\n          pageViewMode: PageViewMode.SINGLE_PAGE,\n          pixelRatio: this.pixelRatio,\n        }\n      );\n      this.viewer.loadDocument(options);\n      this.createListener(this.viewer);\n    };\n  }\n\n  private handleError = (payload: Payload) => {\n    console.log('error::', payload);\n  };\n\n  private handleReadyStateChange = (payload: Payload) => {\n    this._isRenderComplete = false;\n    this.pageRenderComplete.emit(false);\n    if (this.viewer && this.viewer.readyState === 'complete') {\n      const intervalTag = setInterval(() => {\n        if (\n          this.iframeEl &&\n          this.iframeEl.contentWindow &&\n          this.iframeEl.contentWindow.document\n        ) {\n          const images =\n            this.iframeEl.contentWindow.document.getElementsByTagName('img');\n\n          let allImagesLoaded = true;\n          for (let i = 0; i < images.length; i++) {\n            if (!images[i].complete) {\n              allImagesLoaded = false;\n              break;\n            }\n          }\n          if (allImagesLoaded) {\n            console.log('All images in iframe loaded successfully');\n            this.pageRenderComplete.emit(true);\n            this._isRenderComplete = true;\n            clearInterval(intervalTag);\n          }\n        }\n      }, 1000);\n    }\n  };\n\n  private handleHyperlink = (payload: Payload) => {\n    console.log('handleHyperlink::', payload);\n  };\n\n  private handleLoaded = (payload: Payload) => {\n    console.log('handleLoaded::', payload);\n  };\n\n  private handleNavigation = (payload: Payload) => {\n    this.pageTotal = payload.epageCount;\n    this.cd.markForCheck();\n  };\n\n  private createListener(viewer: CoreViewer) {\n    viewer.addListener('error', this.handleError);\n    viewer.addListener('readystatechange', this.handleReadyStateChange);\n    viewer.addListener('loaded', this.handleLoaded);\n    viewer.addListener('hyperlink', this.handleHyperlink);\n    viewer.addListener('nav', this.handleNavigation);\n  }\n\n  private removeListeners(viewer: CoreViewer) {\n    viewer.removeListener('error', this.handleError);\n    viewer.removeListener('readystatechange', this.handleReadyStateChange);\n    viewer.removeListener('loaded', this.handleLoaded);\n    viewer.removeListener('hyperlink', this.handleHyperlink);\n    viewer.removeListener('nav', this.handleNavigation);\n  }\n\n  private getStyles(identifierStr: string | string[]): string {\n    const stylesArray: string[] = [];\n    const styleElements = document.getElementsByTagName('style');\n    const length = styleElements.length;\n    let identifiers: string[] = [];\n    if (Array.isArray(identifierStr)) {\n      identifiers = [...identifierStr];\n    } else {\n      identifiers = [identifierStr];\n    }\n    for (let index = 0; index < length; index++) {\n      identifiers.forEach((s) => {\n        if (styleElements[index].outerHTML.includes(s)) {\n          const formateStr = styleElements[index].outerHTML.replace(\n            /\\/\\*[\\s\\S]*?\\*\\//g,\n            ''\n          );\n          stylesArray.push(formateStr);\n        }\n      });\n    }\n    return stylesArray.join('\\r\\n');\n  }\n\n  private getVivTemplates(directives: NzxPrintContentDirective[]) {\n    const templates: string[] = [];\n    directives.forEach((d) => {\n      let styles = '';\n      if (d.identifierStr || d.identifierStr.length > 0) {\n        styles = this.getStyles(d.identifierStr);\n      }\n\n      let html = `\n          <!DOCTYPE html>\n          <html>\n            <head>\n            <meta charset=\"utf-8\" />\n            <title>${this.printTitle}</title>\n            <base href=\"/\" />\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n             ${d.customStyle}\n             ${styles}\n            </head>\n            <body>\n              ${d.elementRef.nativeElement.outerHTML}\n            </body>\n          </html>\n        `;\n      html = html.replace(/<!---->/g, ' ');\n      templates.push(html);\n    });\n\n    return templates;\n  }\n\n  private clearView() {\n    if (this.viewer) {\n      this.removeListeners(this.viewer);\n    }\n    this.vivViewRef.nativeElement.innerHTML = '';\n    this.viewer = undefined;\n    this._isRenderComplete = false;\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  HostListener,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { getElementByTag } from '@winkong/ng-zorro-antd-extension/util';\n\n/**\n * 常规打印\n */\n@Directive({\n  selector: 'button[nzxPrint]',\n})\nexport class NzxPrintDirective implements OnInit, AfterViewInit {\n  @Input() printEl: HTMLElement | string | undefined;\n  @Input() printTitle: string | undefined = 'pdf';\n  @Input() identifierStr: string | string[] = '';\n  private _printEl!: HTMLElement;\n\n  ngOnInit(): void {\n    if (!this.printEl) {\n      throw new Error(\n        'The \"printEl\" input is required for the nzxPrint directive.'\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.getElement();\n  }\n\n  @HostListener('click')\n  private print(): void {\n    const newWin = window.open('', '_blank');\n\n    if (newWin) {\n      const styles = getElementByTag('style', this.identifierStr);\n      const links = getElementByTag('link');\n      const baseTag = getElementByTag('base');\n\n      const scripts = `\n      <script>\n        window.onload = function () {\n          window.print();\n        };\n        window.onafterprint = function () {\n          window.close();\n        };\n      </script>\n      `;\n\n      let html = `\n      <!DOCTYPE html>\n        <html>\n          <head>\n            <title>${this.printTitle}</title>\n            ${baseTag}\n            ${links}\n            ${styles}\n            ${scripts}\n          </head>\n          <body>\n            ${this._printEl.outerHTML}\n          </body>\n        </html>\n      `;\n      html = html.replace(/<!---->/g, ' ');\n      newWin.document.open();\n      newWin.document.write(html);\n      newWin.document.close();\n    }\n  }\n\n  private getElement(): void {\n    if (typeof this.printEl === 'string') {\n      const el: HTMLElement | null = document.querySelector(this.printEl);\n      if (el) {\n        this._printEl = el;\n      } else {\n        throw new Error('printEl is not find');\n      }\n    } else if (this.printEl instanceof HTMLElement) {\n      this._printEl = this.printEl;\n    } else {\n      throw new Error('printEl is invalid');\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NzxPrintComponent } from './nzx-print.component';\nimport { NzxPrintDirective } from './nzx-print.directive';\nimport { NzxPrintVComponent } from './nzx-print-v.component';\nimport { NzPaginationModule } from '@winkong/ng-zorro-antd/pagination';\nimport { NzGridModule } from '@winkong/ng-zorro-antd/grid';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n@NgModule({\n  declarations: [\n    NzxPrintComponent,\n    NzxPrintVComponent,\n    NzxPrintDirective,\n    NzxPrintContentDirective,\n  ],\n  imports: [CommonModule, NzGridModule, NzPaginationModule],\n  exports: [\n    NzxPrintComponent,\n    NzxPrintVComponent,\n    NzxPrintContentDirective,\n    NzxPrintDirective,\n  ],\n})\nexport class NzxPrintModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/@winkong/ng-zorro-antd/blob/master/LICENSE\n */\nexport * from './nzx-print.component';\nexport * from './nzx-print-v.component';\nexport * from './nzx-print.directive';\nexport * from './nzx-print.module';\nexport * from './nzx-print-content.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}