{"version":3,"file":"ng-devui-image-preview.mjs","sources":["../../devui/image-preview/transformable-element.ts","../../devui/image-preview/image-preview.component.ts","../../devui/image-preview/image-preview.component.html","../../devui/image-preview/image-preview.directive.ts","../../devui/image-preview/image-preview.module.ts","../../devui/image-preview/ng-devui-image-preview.ts"],"sourcesContent":["import { fromEvent, of, Subscription } from 'rxjs';\r\nimport { delay, tap, throttleTime } from 'rxjs/operators';\r\n\r\nexport class TransformableElement {\r\n  private _element: HTMLElement;\r\n  private _mouseDown = false;\r\n  private _originMouseX: number;\r\n  private _originMouseY: number;\r\n  private _originTranslateX = 0;\r\n  private _originTranslateY = 0;\r\n\r\n  get element(): HTMLElement {\r\n    return this._element;\r\n  }\r\n\r\n  set element(ele: HTMLElement) {\r\n    this._element = ele;\r\n    this.setElementListener();\r\n  }\r\n\r\n  private zoom: number;\r\n  private turn: number; // turn\r\n  private translateX: number; // px\r\n  private translateY: number; // px\r\n\r\n  private eventSub: Subscription;\r\n  private zoomSub: Subscription;\r\n\r\n  MIN_SCALE = 0.2;\r\n  MAX_SCALE = 2.5;\r\n\r\n  constructor(element: HTMLElement, { zoom = 1, turn = 0, translateX = 0, translateY = 0 }) {\r\n    this.element = element;\r\n    this.zoom = zoom;\r\n    this.turn = turn;\r\n    this.translateX = translateX;\r\n    this.translateY = translateY;\r\n\r\n    this.setElementTransform();\r\n  }\r\n\r\n  setElementListener() {\r\n    if (typeof window === 'undefined') {\r\n      return;\r\n    }\r\n    if (this.eventSub) {\r\n      this.eventSub.unsubscribe();\r\n    }\r\n    this.eventSub = new Subscription();\r\n    this.eventSub.add(fromEvent(this._element, 'mousewheel').subscribe(($event) => this.mouseZoom($event)));\r\n    this.eventSub.add(fromEvent(window, 'mousedown').subscribe(($event) => this.mouseDown($event)));\r\n    this.eventSub.add(fromEvent(window, 'mousemove').subscribe(($event) => this.mouseMove($event)));\r\n    this.eventSub.add(fromEvent(window, 'mouseup').subscribe(($event) => this.mouseUp($event)));\r\n  }\r\n\r\n  removeElementListener() {\r\n    if (this.eventSub) {\r\n      this.eventSub.unsubscribe();\r\n    }\r\n    if (this.zoomSub) {\r\n      this.zoomSub.unsubscribe();\r\n    }\r\n  }\r\n\r\n  mouseZoom($event) {\r\n    if (typeof document === 'undefined') {\r\n      return;\r\n    }\r\n    this.zoomSub = of($event)\r\n      .pipe(\r\n        throttleTime(300),\r\n        tap((event) => {\r\n          const value = -event.wheelDelta || event.deltaY || event.detail;\r\n          if (value < 0) {\r\n            if (this.zoom === this.MAX_SCALE) {\r\n              this.element.style.cursor = 'not-allowed';\r\n              return;\r\n            }\r\n            this.element.style.cursor = 'zoom-in';\r\n            document.body.style.cursor = 'zoom-in';\r\n            this.zoomIn(0.2);\r\n          } else {\r\n            if (this.zoom === this.MIN_SCALE) {\r\n              this.element.style.cursor = 'not-allowed';\r\n              return;\r\n            }\r\n            this.element.style.cursor = 'zoom-out';\r\n            document.body.style.cursor = 'zoom-out';\r\n            this.zoomOut(0.2);\r\n          }\r\n        }),\r\n        delay(400)\r\n      )\r\n      .subscribe(() => {\r\n        this.element.style.cursor = 'grab';\r\n        document.body.style.cursor = 'default';\r\n      });\r\n  }\r\n\r\n  mouseDown($event) {\r\n    if ($event.target !== this.element) {\r\n      return;\r\n    }\r\n\r\n    this._mouseDown = true;\r\n    this._originMouseX = $event.clientX;\r\n    this._originMouseY = $event.clientY;\r\n    this._originTranslateX = this.translateX;\r\n    this._originTranslateY = this.translateY;\r\n  }\r\n\r\n  mouseMove($event) {\r\n    if (this._mouseDown && typeof document !== 'undefined') {\r\n      $event.stopPropagation();\r\n      $event.preventDefault();\r\n      this.translateX = this._originTranslateX + ($event.clientX - this._originMouseX);\r\n      this.translateY = this._originTranslateY + ($event.clientY - this._originMouseY);\r\n      this.setElementTransform();\r\n      document.body.style.cursor = 'grabbing';\r\n      this.element.style.cursor = 'grabbing';\r\n    }\r\n  }\r\n\r\n  mouseUp($event) {\r\n    if (typeof document !== 'undefined') {\r\n      this._mouseDown = false;\r\n      document.body.style.cursor = 'default';\r\n      this.element.style.cursor = 'grab';\r\n    }\r\n  }\r\n\r\n  zoomOut(step = 0.25) {\r\n    this.zoom = Math.max(this.MIN_SCALE, this.zoom - step);\r\n    this.setElementTransform();\r\n    return this.zoom === this.MIN_SCALE;\r\n  }\r\n\r\n  zoomIn(step = 0.25) {\r\n    this.zoom = Math.min(this.MAX_SCALE, this.zoom + step);\r\n    this.setElementTransform();\r\n    return this.zoom === this.MAX_SCALE;\r\n  }\r\n\r\n  rotate() {\r\n    this.turn -= 0.25;\r\n    this.setElementTransform();\r\n  }\r\n\r\n  setOriginalScale() {\r\n    this.resetTransformProperties();\r\n    this.setElementTransform();\r\n  }\r\n\r\n  setBestScale() {\r\n    this.resetTransformProperties();\r\n    this.setElementTransform();\r\n  }\r\n\r\n  resetTransformProperties() {\r\n    this.zoom = 1;\r\n    this.translateX = 0;\r\n    this.translateY = 1;\r\n  }\r\n\r\n  setElementTransform(targetParam?, zoom = this.zoom, translateX = this.translateX, translateY = this.translateY, turn = this.turn) {\r\n    let target = targetParam;\r\n    if (!target) {\r\n      target = this.element;\r\n    }\r\n    target.style.transform = `translate(${translateX}px, ${translateY}px) scale(${zoom}) rotate(${turn}turn)`;\r\n  }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { merge } from 'lodash-es';\r\nimport { Subscription } from 'rxjs';\r\nimport { TransformableElement } from './transformable-element';\r\n\r\nexport interface IImagePreviewToolbar {\r\n  zoomIn?: boolean;\r\n  zoomOut?: boolean;\r\n  rotate?: boolean;\r\n  prev?: boolean;\r\n  next?: boolean;\r\n  index?: boolean;\r\n  scaleBest?: boolean;\r\n  scaleOriginal?: boolean;\r\n  originnalImage?: boolean;\r\n  download?: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'd-image-preview',\r\n  templateUrl: './image-preview.component.html',\r\n  styleUrls: ['./image-preview.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DImagePreviewComponent implements OnInit, OnDestroy {\r\n  @Input() set data(data) {\r\n    this._data = data;\r\n    this.images = data.images;\r\n    this.onClose = data.onClose;\r\n    this.targetImageIndex = this.images.indexOf(data.targetImage);\r\n    this.totalImageNum = this.images.length;\r\n    merge(this.toolbar, data.toolbar || {});\r\n  }\r\n\r\n  get data() {\r\n    return this._data;\r\n  }\r\n\r\n  get targetImageSrc(): string {\r\n    // 防止targetImageIndex出现-1的情况\r\n    const idx = (this.targetImageIndex >= 0 && this.targetImageIndex) || 0;\r\n    return this.images[idx].getAttribute('src');\r\n  }\r\n\r\n  toolbar: IImagePreviewToolbar = {\r\n    zoomIn: true,\r\n    zoomOut: true,\r\n    rotate: true,\r\n    prev: true,\r\n    next: true,\r\n    index: true,\r\n    scaleBest: true,\r\n    scaleOriginal: true,\r\n    originnalImage: true,\r\n    download: true,\r\n  };\r\n  transformableImageElementRef: TransformableElement;\r\n  images: HTMLElement[];\r\n  isOptimal = true;\r\n  targetImageIndex: number;\r\n  totalImageNum: number;\r\n  disabledZoomIn = false;\r\n  disabledZoomOut = false;\r\n  showInput = false;\r\n  i18nText: I18nInterface['imagePreview'];\r\n  i18nSubscription: Subscription;\r\n  document: Document;\r\n  onClose: () => void;\r\n\r\n  _data: any;\r\n\r\n  constructor(private elementRef: ElementRef, private i18n: I18nService, @Inject(DOCUMENT) private doc: any) {\r\n    this.document = this.doc;\r\n  }\r\n\r\n  @HostListener('click', ['$event'])\r\n  click($event) {\r\n    if ($event.target.classList.contains('devui-image-preview-wrapper')) {\r\n      this.onClose();\r\n    }\r\n  }\r\n\r\n  @HostListener('touchstart', ['$event'])\r\n  touchstart($event) {\r\n    $event.clientX = $event.changedTouches[0].clientX;\r\n    $event.clientY = $event.changedTouches[0].clientY;\r\n    this.transformableImageElementRef.mouseDown($event);\r\n  }\r\n\r\n  @HostListener('touchmove', ['$event'])\r\n  touchmove($event) {\r\n    $event.clientX = $event.changedTouches[0].clientX;\r\n    $event.clientY = $event.changedTouches[0].clientY;\r\n    this.transformableImageElementRef.mouseMove($event);\r\n  }\r\n\r\n  @HostListener('touchend', ['$event'])\r\n  touchend($event) {\r\n    this.transformableImageElementRef.mouseDown($event);\r\n  }\r\n\r\n  @HostListener('window:keydown.ArrowLeft', [])\r\n  arrowLeft() {\r\n    this.pre();\r\n  }\r\n\r\n  @HostListener('window:keydown.ArrowRight', [])\r\n  arrowRight() {\r\n    this.next();\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.addFullScreenStyle();\r\n    this.transformableImageElementRef = new TransformableElement(this.getImgElement(), {});\r\n    this.setI18nText();\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nText = this.i18n.getI18nText().imagePreview;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.imagePreview;\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.removeFullScreenStyle();\r\n    this.transformableImageElementRef.removeElementListener();\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  pre() {\r\n    this.targetImageIndex = (this.targetImageIndex - 1 + this.totalImageNum) % this.totalImageNum;\r\n  }\r\n\r\n  next() {\r\n    this.targetImageIndex = (this.targetImageIndex + 1) % this.totalImageNum;\r\n  }\r\n\r\n  zoomIn() {\r\n    this.disabledZoomOut = false;\r\n    this.disabledZoomIn = this.transformableImageElementRef.zoomIn();\r\n  }\r\n\r\n  zoomOut() {\r\n    this.disabledZoomIn = false;\r\n    this.disabledZoomOut = this.transformableImageElementRef.zoomOut();\r\n  }\r\n\r\n  rotate() {\r\n    this.transformableImageElementRef.rotate();\r\n  }\r\n\r\n  setScaleBest() {\r\n    this.transformableImageElementRef.setBestScale();\r\n    this.isOptimal = true;\r\n  }\r\n\r\n  setScaleOriginal() {\r\n    this.transformableImageElementRef.setOriginalScale();\r\n    this.isOptimal = false;\r\n  }\r\n\r\n  getOriginalImage(isDownload = false) {\r\n    if (!this.targetImageSrc) {\r\n      return;\r\n    }\r\n    if (!isDownload && this.targetImageSrc.startsWith('data:image')) {\r\n      const img = this.images[this.targetImageIndex] as HTMLImageElement;\r\n      const win = window.open();\r\n      const content = `\r\n        <html style=\"height: 100%;\">\r\n          <head>\r\n            <meta name=\"viewport\" content=\"width=device-width, minimum-scale=0.1\">\r\n            <title>base64 Image (${img.naturalWidth}×${img.naturalHeight})</title>\r\n          </head>\r\n          <body style=\"margin: 0px; background: #0e0e0e; height: 100%; display:flex; align-items:\"center\">\r\n            <img style=\"display: block;-webkit-user-select: none;margin: auto;\" src=\"${this.targetImageSrc}\">\r\n          </body>\r\n        </html>`;\r\n      win.document.body.outerHTML = content;\r\n      win.opener = null;\r\n    } else {\r\n      const a = document.createElement('a');\r\n      const event = new MouseEvent('click');\r\n      a.href = this.targetImageSrc;\r\n      a.rel = 'noopener';\r\n      if (isDownload) {\r\n        a.download = '';\r\n      } else {\r\n        a.target = '_blank';\r\n      }\r\n      a.dispatchEvent(event);\r\n      a.remove();\r\n    }\r\n  }\r\n\r\n  inputChange($event) {\r\n    if (!isNaN($event) && $event && $event >= 1 && $event <= this.totalImageNum) {\r\n      this.targetImageIndex = $event - 1;\r\n    }\r\n  }\r\n\r\n  private addFullScreenStyle() {\r\n    this.document.querySelector('body').classList.add('devui-fullscreen');\r\n  }\r\n\r\n  private removeFullScreenStyle() {\r\n    this.document.querySelector('body').classList.remove('devui-fullscreen');\r\n  }\r\n\r\n  private getImgElement(): HTMLElement {\r\n    return this.elementRef.nativeElement.querySelector('.devui-image-preview-main-image');\r\n  }\r\n}\r\n","<div class=\"devui-image-preview-wrapper\">\r\n  <button class=\"devui-image-preview-close-btn\" (click)=\"onClose()\">\r\n    <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <polygon\r\n          fill=\"#293040\"\r\n          fill-rule=\"nonzero\"\r\n          points=\"8 6.58578644 12.2426407 2.34314575 13.6568542 3.75735931 9.41421356 8 13.6568542 12.2426407 12.2426407 13.6568542 8 9.41421356 3.75735931 13.6568542 2.34314575 12.2426407 6.58578644 8 2.34314575 3.75735931 3.75735931 2.34314575\"\r\n        ></polygon>\r\n      </g>\r\n    </svg>\r\n  </button>\r\n  <img class=\"devui-image-preview-main-image\" [class.devui-optimal-proportion]=\"isOptimal\" [attr.src]=\"targetImageSrc | safe : 'url'\" />\r\n\r\n  <!-- TODO: button参数化重构 -->\r\n  <button class=\"devui-fixed-arrow-left\" (click)=\"pre()\" dTooltip [position]=\"'right'\" [content]=\"i18nText.pre\">\r\n    <svg width=\"18px\" height=\"18px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <polygon\r\n          fill=\"#293040\"\r\n          fill-rule=\"nonzero\"\r\n          points=\"10.7071068 12.2928932 9.29289322 13.7071068 3.58578644 8 9.29289322 2.29289322 10.7071068 3.70710678 6.41421356 8\"\r\n        ></polygon>\r\n      </g>\r\n    </svg>\r\n  </button>\r\n  <button class=\"devui-fixed-arrow-right\" (click)=\"next()\" dTooltip [position]=\"'left'\" [content]=\"i18nText.next\">\r\n    <svg width=\"18px\" height=\"18px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <polygon\r\n          fill=\"#293040\"\r\n          fill-rule=\"nonzero\"\r\n          transform=\"translate(8.146447, 8.000000) scale(-1, 1) translate(-8.146447, -8.000000) \"\r\n          points=\"11.7071068 12.2928932 10.2928932 13.7071068 4.58578644 8 10.2928932 2.29289322 11.7071068 3.70710678 7.41421356 8\"\r\n        ></polygon>\r\n      </g>\r\n    </svg>\r\n  </button>\r\n\r\n  <div class=\"devui-image-preview-toolbar\">\r\n    <button\r\n      *ngIf=\"toolbar.zoomIn\"\r\n      [class.disabled]=\"disabledZoomIn\"\r\n      (click)=\"zoomIn()\"\r\n      dTooltip\r\n      [position]=\"'top'\"\r\n      [content]=\"i18nText?.zoomIn\"\r\n    >\r\n      <svg width=\"18px\" height=\"18px\" viewBox=\"0 0 16 16\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <g fill=\"#293040\" fill-rule=\"nonzero\">\r\n            <path\r\n              d=\"M6,6 L6,4 L8,4 L8,6 L10,6 L10,8 L8,8 L8,10 L6,10 L6,8 L4,8 L4,6 L6,6 Z M12.6063847,11.1921711 L15.6568542,14.2426407 L14.2426407,15.6568542 L11.1921711,12.6063847 C10.0235906,13.4815965 8.5723351,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,8.5723351 13.4815965,10.0235906 12.6063847,11.1921711 L12.6063847,11.1921711 Z M7,12 C9.76142375,12 12,9.76142375 12,7 C12,4.23857625 9.76142375,2 7,2 C4.23857625,2 2,4.23857625 2,7 C2,9.76142375 4.23857625,12 7,12 Z\"\r\n            ></path>\r\n          </g>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <button\r\n      *ngIf=\"toolbar.zoomOut\"\r\n      [class.disabled]=\"disabledZoomOut\"\r\n      (click)=\"zoomOut()\"\r\n      dTooltip\r\n      [position]=\"'top'\"\r\n      [content]=\"i18nText.zoomOut\"\r\n    >\r\n      <svg width=\"18px\" height=\"18px\" viewBox=\"0 0 16 16\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <g fill=\"#293040\" fill-rule=\"nonzero\">\r\n            <path\r\n              d=\"M12.6063847,11.1921711 L15.6568542,14.2426407 L14.2426407,15.6568542 L11.1921711,12.6063847 C10.0235906,13.4815965 8.5723351,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,8.5723351 13.4815965,10.0235906 12.6063847,11.1921711 L12.6063847,11.1921711 Z M7,12 C9.76142375,12 12,9.76142375 12,7 C12,4.23857625 9.76142375,2 7,2 C4.23857625,2 2,4.23857625 2,7 C2,9.76142375 4.23857625,12 7,12 Z M4,6 L10,6 L10,8 L4,8 L4,6 Z\"\r\n            ></path>\r\n          </g>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <button *ngIf=\"toolbar.rotate\" (click)=\"rotate()\" dTooltip [position]=\"'top'\" [content]=\"i18nText.rotate\">\r\n      <svg width=\"18px\" height=\"18px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <path\r\n            d=\"M7.5,3.02242151 L7.5,4 L4.5,2 L7.5,0 L7.5,1.01640228 C7.66526181,1.00552468 7.83198572,1 8,1 C12.1421356,1 15.5,4.35786438 15.5,8.5 C15.5,12.6421356 12.1421356,16 8,16 C3.85786438,16 0.5,12.6421356 0.5,8.5 C0.5,6.9828355 0.950484514,5.5708873 1.72499011,4.39061882 L3.42173231,5.4510827 C2.83944149,6.32371289 2.5,7.37221604 2.5,8.5 C2.5,11.5375661 4.96243388,14 8,14 C11.0375661,14 13.5,11.5375661 13.5,8.5 C13.5,5.46243388 11.0375661,3 8,3 C7.83145515,3 7.66468102,3.00758131 7.5,3.02242151 Z M8,11 C6.61928813,11 5.5,9.88071187 5.5,8.5 C5.5,7.11928813 6.61928813,6 8,6 C9.38071187,6 10.5,7.11928813 10.5,8.5 C10.5,9.88071187 9.38071187,11 8,11 Z M8,10 C8.82842712,10 9.5,9.32842712 9.5,8.5 C9.5,7.67157288 8.82842712,7 8,7 C7.17157288,7 6.5,7.67157288 6.5,8.5 C6.5,9.32842712 7.17157288,10 8,10 Z\"\r\n            fill=\"#293040\"\r\n          ></path>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <button *ngIf=\"toolbar.prev && toolbar.next\" (click)=\"pre()\" dTooltip [position]=\"'top'\" [content]=\"i18nText.pre\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <polygon\r\n            fill=\"#293040\"\r\n            fill-rule=\"nonzero\"\r\n            points=\"10.7071068 12.2928932 9.29289322 13.7071068 3.58578644 8 9.29289322 2.29289322 10.7071068 3.70710678 6.41421356 8\"\r\n          ></polygon>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <span *ngIf=\"toolbar.index\" (click)=\"showInput = true\" class=\"devui-image-preview-index\">\r\n      <d-input-number\r\n        *ngIf=\"showInput\"\r\n        size=\"sm\"\r\n        [min]=\"1\"\r\n        [max]=\"totalImageNum\"\r\n        [autoFocus]=\"true\"\r\n        [ngModel]=\"targetImageIndex + 1\"\r\n        (keyup.enter)=\"showInput = false\"\r\n        (blur)=\"showInput = false\"\r\n        (whileValueChanging)=\"inputChange($event)\"\r\n        (ngModelChange)=\"inputChange($event)\"\r\n      >\r\n      </d-input-number>\r\n      <span *ngIf=\"!showInput\">{{ targetImageIndex + 1 + ' ' }}</span>\r\n      <span>{{ '/ ' + totalImageNum }}</span>\r\n    </span>\r\n    <button *ngIf=\"toolbar.prev && toolbar.next\" class=\"devui-next\" (click)=\"next()\" dTooltip [position]=\"'top'\" [content]=\"i18nText.next\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <polygon\r\n            fill=\"#293040\"\r\n            fill-rule=\"nonzero\"\r\n            transform=\"translate(8.146447, 8.000000) scale(-1, 1) translate(-8.146447, -8.000000) \"\r\n            points=\"11.7071068 12.2928932 10.2928932 13.7071068 4.58578644 8 10.2928932 2.29289322 11.7071068 3.70710678 7.41421356 8\"\r\n          ></polygon>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <button *ngIf=\"toolbar.scaleBest\" (click)=\"setScaleBest()\" dTooltip [position]=\"'top'\" [content]=\"i18nText.bestScale\">\r\n      <svg width=\"18px\" height=\"18px\" viewBox=\"0 0 16 16\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <path\r\n            d=\"M16,16 L11.429,16 L11.429,15 L14.456,15 L11.006,11.226 L11.652,10.519 L15.086,14.275 L15.086,11 L16,11 L16,16 Z M15.164,1.544 L12.009,4.994 L11.418,4.348 L14.558,0.914 L11.82,0.914 L11.82,0 L16,0 L16,4.571 L15.164,4.571 L15.164,1.544 Z M5,15 L5,16 L0,16 L0,11 L1,11 L1,14.275 L4.756,10.519 L5.463,11.226 L1.689,15 L5,15 Z M4.365,4.994 L0.914,1.544 L0.914,4.571 L3.41060513e-13,4.571 L3.41060513e-13,0 L4.571,0 L4.571,0.914 L1.578,0.914 L5.011,4.348 L4.365,4.994 Z\"\r\n            fill=\"#293040\"\r\n            fill-rule=\"nonzero\"\r\n          ></path>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <button *ngIf=\"toolbar.scaleOriginal\" (click)=\"setScaleOriginal()\" dTooltip [position]=\"'top'\" [content]=\"i18nText.originScale\">\r\n      <span>1:1</span>\r\n    </button>\r\n    <button *ngIf=\"toolbar.originnalImage\" (click)=\"getOriginalImage()\" dTooltip [position]=\"'top'\" [content]=\"i18nText.origin\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <g transform=\"translate(-1196.000000, -96.000000)\" fill=\"#293040\" fill-rule=\"nonzero\">\r\n            <g transform=\"translate(407.000000, 93.000000)\">\r\n              <path\r\n                d=\"M804,4 L790,4 L790,11.940983 L794.058237,9.91186456 L798.536534,13.3949845 L801.014076,11.908459\r\n                    L804,13.8990748 L804,4 Z M803.72265,14.9160251 L800.985924,13.091541 L798.463466,14.6050155 L793.941763,11.0881354\r\n                    L790.223607,12.9472136 C790.151699,12.9831673 790.07527,13.000168 790,13.0001094 L790,18 L804,18 L804,15.0000529\r\n                    C803.90455,15.0001406 803.80803,14.9729453 803.72265,14.9160251 Z M789,19 L789,3 L805,3 L805,19 L789,19 Z M801,9\r\n                    C800.447715,9 800,8.55228475 800,8 C800,7.44771525 800.447715,7 801,7 C801.552285,7 802,7.44771525 802,8 C802,8.55228475\r\n                    801.552285,9 801,9 Z\"\r\n              ></path>\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n    <button *ngIf=\"toolbar.download\" (click)=\"getOriginalImage(true)\" dTooltip [position]=\"'top'\" [content]=\"i18nText.download\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <g>\r\n            <path\r\n              d=\"M14.5,14 C14.7761424,14 15,14.2238576 15,14.5 C15,14.7761424 14.7761424,15 14.5,15 L1.5,15 C1.22385763,15 1,14.7761424 1,14.5 C1,14.2238576 1.22385763,14 1.5,14 L14.5,14 Z M8,1 C8.24545989,1 8.44960837,1.17687516 8.49194433,1.41012437 L8.5,1.5 L8.5,10.793 L11.6464466,7.64644661 C11.820013,7.47288026 12.0894374,7.45359511 12.2843055,7.58859116 L12.3535534,7.64644661 C12.5271197,7.82001296 12.5464049,8.08943736 12.4114088,8.2843055 L12.3535534,8.35355339 L8.35355339,12.3535534 L8.34128643,12.3654113 C8.32881868,12.3770608 8.31575424,12.3880797 8.30214392,12.3984173 L8.35355339,12.3535534 C8.32671912,12.3803877 8.29759357,12.4035342 8.26680652,12.422993 C8.25568247,12.4299807 8.24404667,12.4367067 8.23212724,12.4429657 C8.21827569,12.4502504 8.20453886,12.4566485 8.1905951,12.4623894 C8.17802507,12.4675915 8.16473685,12.4724419 8.15119917,12.4767316 C8.13583471,12.481552 8.12047425,12.4856039 8.10498705,12.4889143 C8.09430622,12.4912471 8.08325248,12.4932298 8.07207924,12.494843 C8.05487076,12.4972949 8.03773477,12.498877 8.02056948,12.4995793 C8.01375728,12.4998604 8.00689494,12.5 8,12.5 L7.98043349,12.4996194 C7.96293275,12.4989382 7.94546098,12.4973429 7.92809589,12.4948333 L8,12.5 C7.96390296,12.5 7.92869933,12.4961748 7.89477235,12.4889078 C7.87952575,12.4856039 7.86416529,12.481552 7.84898836,12.4767587 C7.83526315,12.4724419 7.82197493,12.4675915 7.80896344,12.4622078 C7.79546114,12.4566485 7.78172431,12.4502504 7.76824181,12.443195 C7.75595333,12.4367067 7.74431753,12.4299807 7.73298968,12.422812 C7.72729809,12.4192668 7.72146362,12.4154054 7.7156945,12.4114088 L7.69785608,12.3984173 C7.68424576,12.3880797 7.67118132,12.3770608 7.65871357,12.3654113 L7.64644661,12.3535534 L3.64644661,8.35355339 C3.45118446,8.15829124 3.45118446,7.84170876 3.64644661,7.64644661 C3.82001296,7.47288026 4.08943736,7.45359511 4.2843055,7.58859116 L4.35355339,7.64644661 L7.5,10.793 L7.5,1.5 C7.5,1.22385763 7.72385763,1 8,1 Z\"\r\n            ></path>\r\n          </g>\r\n        </g>\r\n      </svg>\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { Directive, ElementRef, HostBinding, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ModalService } from 'ng-devui/modal';\r\nimport { Subject } from 'rxjs';\r\nimport { DImagePreviewComponent, IImagePreviewToolbar } from './image-preview.component';\r\n@Directive({\r\n  selector: '[dImagePreview]',\r\n})\r\nexport class ImagePreviewDirective implements OnInit, OnDestroy {\r\n  @Input() customSub: Subject<HTMLElement>;\r\n  @Input() disableDefault = false;\r\n  @Input() toolbar: IImagePreviewToolbar;\r\n  @Input() zIndex: number;\r\n  @Input() backDropZIndex: number;\r\n\r\n  @HostBinding('class.devui-image-preview-container')\r\n  get defaultClasses() {\r\n    return !this.disableDefault;\r\n  }\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick($event) {\r\n    if (this.disableDefault) {\r\n      return;\r\n    }\r\n    const target = $event.target;\r\n    if (target && target.nodeName.toLowerCase() === 'img') {\r\n      this.imagePreView(target as HTMLElement);\r\n    }\r\n  }\r\n\r\n  constructor(private elementRef: ElementRef, private modalService: ModalService) {}\r\n\r\n  ngOnInit(): void {\r\n    if (this.customSub) {\r\n      this.customSub.subscribe((target) => {\r\n        this.imagePreView(target);\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.customSub) {\r\n      this.customSub.unsubscribe();\r\n    }\r\n  }\r\n\r\n  imagePreView(imageHTMLElement: HTMLElement) {\r\n    const modalRef = this.modalService.open({\r\n      id: 'devui-image-preview-modal',\r\n      component: DImagePreviewComponent,\r\n      zIndex: this.zIndex,\r\n      backDropZIndex: this.backDropZIndex,\r\n      showAnimation: false,\r\n      data: {\r\n        targetImage: imageHTMLElement,\r\n        toolbar: this.toolbar,\r\n        images: Array.from(this.elementRef.nativeElement.querySelectorAll('img')),\r\n        onClose: () => {\r\n          modalRef.modalInstance.hide();\r\n        },\r\n      },\r\n    });\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputNumberModule } from 'ng-devui/input-number';\nimport { ModalModule } from 'ng-devui/modal';\nimport { TooltipModule } from 'ng-devui/tooltip';\nimport { SafePipeModule } from 'ng-devui/utils';\n\nimport { DImagePreviewComponent } from './image-preview.component';\nimport { ImagePreviewDirective } from './image-preview.directive';\n\n@NgModule({\n  declarations: [DImagePreviewComponent, ImagePreviewDirective],\n  imports: [\n    CommonModule,\n    ModalModule,\n    SafePipeModule,\n    TooltipModule,\n    FormsModule,\n    InputNumberModule\n  ],\n  exports: [\n    ImagePreviewDirective\n  ],\n\n})\n\nexport class ImagePreviewModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}