{"version":3,"file":"ng-zorro-antd-watermark.mjs","sources":["../../components/watermark/typings.ts","../../components/watermark/util.ts","../../components/watermark/watermark.component.ts","../../components/watermark/watermark.module.ts","../../components/watermark/public-api.ts","../../components/watermark/ng-zorro-antd-watermark.ts"],"sourcesContent":["/**\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/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport interface FontType {\n  color?: string;\n  fontSize?: number;\n  fontWeight?: 'normal' | 'light' | 'weight' | number;\n  fontFamily?: string;\n  fontStyle?: 'none' | 'normal' | 'italic' | 'oblique';\n}\n\nexport interface MarkStyleType {\n  zIndex: number;\n  position: string;\n  left: string | number;\n  top: string | number;\n  width: string;\n  height: string;\n  pointerEvents: string;\n  backgroundRepeat: string;\n  backgroundPosition?: string;\n  visibility: string;\n}\n\nexport interface MarkStyleCanvasType extends MarkStyleType {\n  backgroundImage: string;\n  backgroundSize: string;\n}\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/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { MarkStyleCanvasType } from './typings';\n\n/** Returns the ratio of the device's physical pixel resolution to the css pixel resolution */\nexport function getPixelRatio(): number {\n  return window.devicePixelRatio || 1;\n}\n\nexport function toLowercaseSeparator(key: keyof MarkStyleCanvasType): string {\n  return key.replace(/([A-Z])/g, '-$1').toLowerCase();\n}\n\nexport function getStyleStr(style: MarkStyleCanvasType): string {\n  const keys = Object.keys(style) as Array<keyof MarkStyleCanvasType>;\n  const styleCss: string[] = keys.map(\n    (key: keyof MarkStyleCanvasType) => `${toLowercaseSeparator(key)}: ${style[key]};`\n  );\n  return styleCss.join(' ');\n}\n\n/** Whether to re-render the watermark */\nexport function reRendering(mutation: MutationRecord, watermarkElement?: HTMLElement): boolean {\n  let flag = false;\n  // Whether to delete the watermark node\n  if (mutation.removedNodes.length) {\n    flag = Array.from(mutation.removedNodes).some(node => node === watermarkElement);\n  }\n  // Whether the watermark dom property value has been modified\n  if (mutation.type === 'attributes' && mutation.target === watermarkElement) {\n    flag = true;\n  }\n  return flag;\n}\n\n/** Rotate with the watermark as the center point */\nexport function rotateWatermark(ctx: CanvasRenderingContext2D, rotateX: number, rotateY: number, rotate: number): void {\n  ctx.translate(rotateX, rotateY);\n  ctx.rotate((Math.PI / 180) * Number(rotate));\n  ctx.translate(-rotateX, -rotateY);\n}\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/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { isPlatformServer } from '@angular/common';\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  DOCUMENT,\n  ElementRef,\n  inject,\n  Input,\n  numberAttribute,\n  OnChanges,\n  OnInit,\n  PLATFORM_ID,\n  SimpleChanges\n} from '@angular/core';\n\nimport { FontType, MarkStyleType } from './typings';\nimport { getPixelRatio, getStyleStr, reRendering, rotateWatermark } from './util';\n\n/**\n * Base size of the canvas, 1 for parallel layout and 2 for alternate layout\n * Only alternate layout is currently supported\n */\nconst BaseSize = 2;\nconst FontGap = 3;\n\n@Component({\n  selector: 'nz-watermark',\n  exportAs: 'nzWatermark',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `<ng-content />`,\n  styles: `\n    :host {\n      position: relative;\n      display: block;\n      overflow: hidden;\n    }\n  `\n})\nexport class NzWatermarkComponent implements OnInit, OnChanges {\n  private isServer = isPlatformServer(inject(PLATFORM_ID));\n  private document = inject(DOCUMENT);\n  private el: HTMLElement = inject(ElementRef<HTMLElement>).nativeElement;\n  private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n  @Input({ transform: numberAttribute }) nzWidth: number = 120;\n  @Input({ transform: numberAttribute }) nzHeight: number = 64;\n  @Input({ transform: numberAttribute }) nzRotate: number = -22;\n  @Input({ transform: numberAttribute }) nzZIndex: number = 9;\n  @Input() nzImage: string = '';\n  @Input() nzContent: string | string[] = '';\n  @Input() nzFont: FontType = {};\n  @Input() nzGap: [number, number] = [100, 100];\n  @Input() nzOffset: [number, number] = [this.nzGap[0] / 2, this.nzGap[1] / 2];\n\n  watermarkElement: HTMLDivElement = this.document.createElement('div');\n  stopObservation: boolean = false;\n  private observer: MutationObserver | null = null;\n  // for test usage\n  private onImageLoad?: VoidFunction;\n  private onImageError?: VoidFunction;\n\n  constructor() {\n    if (this.isServer) {\n      return;\n    }\n\n    const observer = (this.observer = new MutationObserver(mutations => {\n      if (this.stopObservation) {\n        return;\n      }\n      mutations.forEach(mutation => {\n        if (reRendering(mutation, this.watermarkElement)) {\n          this.destroyWatermark();\n          this.renderWatermark();\n        }\n      });\n    }));\n\n    afterNextRender(() => this.renderWatermark());\n\n    inject(DestroyRef).onDestroy(() => observer.disconnect());\n  }\n\n  ngOnInit(): void {\n    this.observer?.observe(this.el, {\n      subtree: true,\n      childList: true,\n      attributeFilter: ['style', 'class']\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzRotate, nzZIndex, nzWidth, nzHeight, nzImage, nzContent, nzFont, gapX, gapY, offsetLeft, offsetTop } =\n      changes;\n\n    if (\n      nzRotate ||\n      nzZIndex ||\n      nzWidth ||\n      nzHeight ||\n      nzImage ||\n      nzContent ||\n      nzFont ||\n      gapX ||\n      gapY ||\n      offsetLeft ||\n      offsetTop\n    ) {\n      this.renderWatermark();\n    }\n  }\n\n  getFont(): void {\n    const font: FontType = {\n      color: 'rgba(0,0,0,.15)',\n      fontSize: 16,\n      fontWeight: 'normal',\n      fontFamily: 'sans-serif',\n      fontStyle: 'normal'\n    };\n\n    this.nzFont = { ...font, ...this.nzFont };\n    this.cdr.markForCheck();\n  }\n\n  getMarkStyle(): MarkStyleType {\n    const markStyle: MarkStyleType = {\n      zIndex: this.nzZIndex,\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      width: '100%',\n      height: '100%',\n      pointerEvents: 'none',\n      backgroundRepeat: 'repeat',\n      visibility: 'visible'\n    };\n\n    /** Calculate the style of the nzOffset */\n    let positionLeft = (this.nzOffset?.[0] ?? this.nzGap[0] / 2) - this.nzGap[0] / 2;\n    let positionTop = (this.nzOffset?.[1] ?? this.nzGap[1] / 2) - this.nzGap[1] / 2;\n    if (positionLeft > 0) {\n      markStyle.left = `${positionLeft}px`;\n      markStyle.width = `calc(100% - ${positionLeft}px)`;\n      positionLeft = 0;\n    }\n    if (positionTop > 0) {\n      markStyle.top = `${positionTop}px`;\n      markStyle.height = `calc(100% - ${positionTop}px)`;\n      positionTop = 0;\n    }\n    markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`;\n\n    return markStyle;\n  }\n\n  destroyWatermark(): void {\n    if (this.watermarkElement) {\n      this.watermarkElement.remove();\n    }\n  }\n\n  appendWatermark(base64Url: string, markWidth: number): void {\n    this.stopObservation = true;\n    this.watermarkElement.setAttribute(\n      'style',\n      getStyleStr({\n        ...this.getMarkStyle(),\n        backgroundImage: `url('${base64Url}')`,\n        backgroundSize: `${(this.nzGap[0] + markWidth) * BaseSize}px`\n      })\n    );\n    this.el.append(this.watermarkElement);\n    this.cdr.markForCheck();\n\n    // Delayed execution\n    setTimeout(() => {\n      this.stopObservation = false;\n      this.cdr.markForCheck();\n    });\n  }\n\n  getMarkSize(ctx: CanvasRenderingContext2D): [number, number] {\n    let defaultWidth = 120;\n    let defaultHeight = 64;\n    if (!this.nzImage && ctx.measureText) {\n      ctx.font = `${Number(this.nzFont.fontSize)}px ${this.nzFont.fontFamily}`;\n      const contents = Array.isArray(this.nzContent) ? this.nzContent : [this.nzContent];\n      const widths = contents.map(item => ctx.measureText(item!).width);\n      defaultWidth = Math.ceil(Math.max(...widths));\n      defaultHeight = Number(this.nzFont.fontSize) * contents.length + (contents.length - 1) * FontGap;\n    }\n    return [this.nzWidth ?? defaultWidth, this.nzHeight ?? defaultHeight];\n  }\n\n  fillTexts(ctx: CanvasRenderingContext2D, drawX: number, drawY: number, drawWidth: number, drawHeight: number): void {\n    const ratio = getPixelRatio();\n    const mergedFontSize = Number(this.nzFont.fontSize) * ratio;\n    ctx.font = `${this.nzFont.fontStyle} normal ${this.nzFont.fontWeight} ${mergedFontSize}px/${drawHeight}px ${this.nzFont.fontFamily}`;\n    if (this.nzFont.color) ctx.fillStyle = this.nzFont.color;\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'top';\n    ctx.translate(drawWidth / 2, 0);\n    const contents = Array.isArray(this.nzContent) ? this.nzContent : [this.nzContent];\n    contents?.forEach((item, index) => {\n      ctx.fillText(item ?? '', drawX, drawY + index * (mergedFontSize + FontGap * ratio));\n    });\n  }\n\n  drawText(\n    canvas: HTMLCanvasElement,\n    ctx: CanvasRenderingContext2D,\n    drawX: number,\n    drawY: number,\n    drawWidth: number,\n    drawHeight: number,\n    alternateRotateX: number,\n    alternateRotateY: number,\n    alternateDrawX: number,\n    alternateDrawY: number,\n    markWidth: number\n  ): void {\n    this.fillTexts(ctx, drawX, drawY, drawWidth, drawHeight);\n\n    /** Fill the interleaved text after rotation */\n    ctx.restore();\n    rotateWatermark(ctx, alternateRotateX, alternateRotateY, this.nzRotate);\n    this.fillTexts(ctx, alternateDrawX, alternateDrawY, drawWidth, drawHeight);\n    this.appendWatermark(canvas.toDataURL(), markWidth);\n  }\n\n  renderWatermark(): void {\n    if (this.isServer) {\n      return;\n    }\n\n    if (!this.nzContent && !this.nzImage) {\n      return;\n    }\n    const canvas: HTMLCanvasElement = this.document.createElement('canvas');\n    const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n\n    if (ctx) {\n      if (!this.watermarkElement) {\n        this.watermarkElement = this.document.createElement('div');\n      }\n      this.getFont();\n      const ratio = getPixelRatio();\n      const [markWidth, markHeight] = this.getMarkSize(ctx);\n      const canvasWidth = (this.nzGap[0] + markWidth) * ratio;\n      const canvasHeight = (this.nzGap[1] + markHeight) * ratio;\n      canvas.setAttribute('width', `${canvasWidth * BaseSize}px`);\n      canvas.setAttribute('height', `${canvasHeight * BaseSize}px`);\n\n      const drawX = (this.nzGap[0] * ratio) / 2;\n      const drawY = (this.nzGap[1] * ratio) / 2;\n      const drawWidth = markWidth * ratio;\n      const drawHeight = markHeight * ratio;\n      const rotateX = (drawWidth + this.nzGap[0] * ratio) / 2;\n      const rotateY = (drawHeight + this.nzGap[1] * ratio) / 2;\n\n      /** Alternate drawing parameters */\n      const alternateDrawX = drawX + canvasWidth;\n      const alternateDrawY = drawY + canvasHeight;\n      const alternateRotateX = rotateX + canvasWidth;\n      const alternateRotateY = rotateY + canvasHeight;\n\n      ctx.save();\n      rotateWatermark(ctx, rotateX, rotateY, this.nzRotate);\n\n      if (this.nzImage) {\n        const img = new Image();\n\n        this.onImageLoad = (): void => {\n          cleanup();\n\n          ctx.drawImage(img, drawX, drawY, drawWidth, drawHeight);\n\n          /** Draw interleaved pictures after rotation */\n          ctx.restore();\n          rotateWatermark(ctx, alternateRotateX, alternateRotateY, this.nzRotate);\n          ctx.drawImage(img, alternateDrawX, alternateDrawY, drawWidth, drawHeight);\n          this.appendWatermark(canvas.toDataURL(), markWidth);\n        };\n\n        this.onImageError = (): void => {\n          cleanup();\n\n          this.drawText(\n            canvas,\n            ctx,\n            drawX,\n            drawY,\n            drawWidth,\n            drawHeight,\n            alternateRotateX,\n            alternateRotateY,\n            alternateDrawX,\n            alternateDrawY,\n            markWidth\n          );\n        };\n\n        const cleanup = (): void => {\n          img.removeEventListener('load', this.onImageLoad!);\n          img.removeEventListener('error', this.onImageError!);\n        };\n\n        img.addEventListener('load', this.onImageLoad);\n        img.addEventListener('error', this.onImageError);\n\n        img.crossOrigin = 'anonymous';\n        img.referrerPolicy = 'no-referrer';\n        img.src = this.nzImage;\n      } else {\n        this.drawText(\n          canvas,\n          ctx,\n          drawX,\n          drawY,\n          drawWidth,\n          drawHeight,\n          alternateRotateX,\n          alternateRotateY,\n          alternateDrawX,\n          alternateDrawY,\n          markWidth\n        );\n      }\n    }\n  }\n}\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/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NzWatermarkComponent } from './watermark.component';\n\n@NgModule({\n  exports: [NzWatermarkComponent],\n  imports: [NzWatermarkComponent]\n})\nexport class NzWatermarkModule {}\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/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './typings';\nexport * from './watermark.component';\nexport * from './watermark.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}