{"version":3,"file":"ng-zorro-antd-image.mjs","sources":["../../components/image/image-config.ts","../../components/image/image-preview-options.ts","../../components/image/image-preview-ref.ts","../../components/image/utils.ts","../../components/image/image-preview.component.ts","../../components/image/image.service.ts","../../components/image/image-group.component.ts","../../components/image/image.directive.ts","../../components/image/image.module.ts","../../components/image/public-api.ts","../../components/image/ng-zorro-antd-image.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\nimport { NzConfigKey } from 'ng-zorro-antd/core/config';\n\nexport const FADE_CLASS_NAME_MAP = {\n  enter: 'ant-fade-enter',\n  enterActive: 'ant-fade-enter-active',\n  leave: 'ant-fade-leave',\n  leaveActive: 'ant-fade-leave-active'\n};\n\nexport const IMAGE_PREVIEW_MASK_CLASS_NAME = 'ant-image-preview-mask';\nexport const NZ_CONFIG_MODULE_NAME: NzConfigKey = 'image';\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 { Direction } from '@angular/cdk/bidi';\n\nexport class NzImagePreviewOptions {\n  nzKeyboard?: boolean = true;\n  nzNoAnimation?: boolean = false;\n  nzMaskClosable?: boolean = true;\n  nzCloseOnNavigation?: boolean = true;\n  nzZIndex?: number;\n  nzZoom?: number;\n  nzRotate?: number;\n  nzDirection?: Direction;\n}\n\nexport interface NzImage {\n  src: string;\n  srcset?: string;\n  alt?: string;\n  width?: string | number;\n  height?: string | number;\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 { ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\n\nimport { NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewComponent } from './image-preview.component';\n\nexport class NzImagePreviewRef {\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    public previewInstance: NzImagePreviewComponent,\n    private config: NzImagePreviewOptions,\n    private overlayRef: OverlayRef\n  ) {\n    overlayRef\n      .keydownEvents()\n      .pipe(\n        filter(\n          event =>\n            (this.config.nzKeyboard as boolean) &&\n            (event.keyCode === ESCAPE || event.keyCode === LEFT_ARROW || event.keyCode === RIGHT_ARROW) &&\n            !hasModifierKey(event)\n        )\n      )\n      .subscribe(event => {\n        event.preventDefault();\n        if (event.keyCode === ESCAPE) {\n          this.close();\n        }\n        if (event.keyCode === LEFT_ARROW) {\n          this.prev();\n        }\n        if (event.keyCode === RIGHT_ARROW) {\n          this.next();\n        }\n      });\n\n    overlayRef.detachments().subscribe(() => {\n      this.overlayRef.dispose();\n    });\n\n    previewInstance.containerClick.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => {\n      this.close();\n    });\n\n    previewInstance.closeClick.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => {\n      this.close();\n    });\n\n    previewInstance.animationStateChanged\n      .pipe(\n        filter(event => event.phaseName === 'done' && event.toState === 'leave'),\n        take(1)\n      )\n      .subscribe(() => {\n        this.dispose();\n      });\n  }\n\n  switchTo(index: number): void {\n    this.previewInstance.switchTo(index);\n  }\n\n  next(): void {\n    this.previewInstance.next();\n  }\n\n  prev(): void {\n    this.previewInstance.prev();\n  }\n\n  close(): void {\n    this.previewInstance.startLeaveAnimation();\n  }\n\n  private dispose(): void {\n    this.destroy$.next();\n    this.overlayRef.dispose();\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\n/**\n * fit content details: https://github.com/NG-ZORRO/ng-zorro-antd/pull/6154#issuecomment-745025554\n *\n * calc position x,y point\n *\n * CASE (width <= clientWidth && height <= clientHeight):\n *\n * ------------- clientWidth -------------\n * |                                     |\n * |        ------ width ------          |\n * |        |                 |          |\n * |        |                 |          |\n * client   height            |          |\n * Height   |                 |          |\n * |        |                 |          |\n * |        -------------------          |\n * |                                     |\n * |                                     |\n * ---------------------------------------\n * fixedPosition = { x: 0, y: 0 }\n *\n *\n *\n * CASE (width > clientWidth || height > clientHeight):\n *\n * ------------- clientWidth -------------\n * |        |                            |\n * |        top                          |\n * |        |                            |\n * |--left--|--------------- width -----------------\n * |        |                                      |\n * client   |                                      |\n * Height   |                                      |\n * |        |                                      |\n * |        |                                      |\n * |        height                                 |\n * |        |                                      |\n * ---------|                                      |\n *          |                                      |\n *          |                                      |\n *          |                                      |\n *          ----------------------------------------\n *\n *\n * - left || top > 0\n *   left -> 0 || top -> 0\n *\n * - (left + width) < clientWidth || (top + height) < clientHeight\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * DEFAULT:\n * - hold position\n *\n */\nexport function getFitContentPosition(params: {\n  width: number;\n  height: number;\n  left: number;\n  top: number;\n  clientWidth: number;\n  clientHeight: number;\n}): { x?: number; y?: number } {\n  let fixPos = {};\n\n  if (params.width <= params.clientWidth && params.height <= params.clientHeight) {\n    fixPos = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  if (params.width > params.clientWidth || params.height > params.clientHeight) {\n    fixPos = {\n      x: fitPoint(params.left, params.width, params.clientWidth),\n      y: fitPoint(params.top, params.height, params.clientHeight)\n    };\n  }\n\n  return fixPos;\n}\n\nexport function getOffset(node: HTMLElement): { left: number; top: number } {\n  const box = node.getBoundingClientRect();\n  const docElem = document.documentElement;\n\n  // use docElem.scrollLeft to support IE\n  return {\n    left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),\n    top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)\n  };\n}\n\nexport function getClientSize(): { width: number; height: number } {\n  const width = document.documentElement.clientWidth;\n  const height = window.innerHeight || document.documentElement.clientHeight;\n  return {\n    width,\n    height\n  };\n}\n\nfunction fitPoint(start: number, size: number, clientSize: number): number | null {\n  const startAddSize = start + size;\n  const offsetStart = (size - clientSize) / 2;\n  let distance: number | null = null;\n\n  if (size > clientSize) {\n    if (start > 0) {\n      distance = offsetStart;\n    }\n    if (start < 0 && startAddSize < clientSize) {\n      distance = -offsetStart;\n    }\n  } else {\n    if (start < 0 || startAddSize > clientSize) {\n      distance = start < 0 ? offsetStart : -offsetStart;\n    }\n  }\n\n  return distance;\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 { AnimationEvent } from '@angular/animations';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  NgZone,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { fadeMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { isNotNil } from 'ng-zorro-antd/core/util';\n\nimport { FADE_CLASS_NAME_MAP, NZ_CONFIG_MODULE_NAME } from './image-config';\nimport { NzImage, NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewRef } from './image-preview-ref';\nimport { getClientSize, getFitContentPosition, getOffset } from './utils';\n\nexport interface NzImageContainerOperation {\n  icon: string;\n  type: string;\n\n  onClick(): void;\n}\n\nconst initialPosition = {\n  x: 0,\n  y: 0\n};\n\n@Component({\n  selector: 'nz-image-preview',\n  exportAs: 'nzImagePreview',\n  animations: [fadeMotion],\n  template: `\n    <div class=\"ant-image-preview\">\n      <div tabindex=\"0\" aria-hidden=\"true\" style=\"width: 0; height: 0; overflow: hidden; outline: none;\"></div>\n      <div class=\"ant-image-preview-content\">\n        <div class=\"ant-image-preview-body\">\n          <ul class=\"ant-image-preview-operations\">\n            <li\n              class=\"ant-image-preview-operations-operation\"\n              [class.ant-image-preview-operations-operation-disabled]=\"zoomOutDisabled && option.type === 'zoomOut'\"\n              (click)=\"option.onClick()\"\n              *ngFor=\"let option of operations\"\n            >\n              <span class=\"ant-image-preview-operations-icon\" nz-icon [nzType]=\"option.icon\" nzTheme=\"outline\"></span>\n            </li>\n          </ul>\n          <div\n            class=\"ant-image-preview-img-wrapper\"\n            #imagePreviewWrapper\n            cdkDrag\n            [style.transform]=\"previewImageWrapperTransform\"\n            [cdkDragFreeDragPosition]=\"position\"\n            (cdkDragReleased)=\"onDragReleased()\"\n          >\n            <ng-container *ngFor=\"let image of images; index as imageIndex\">\n              <img\n                cdkDragHandle\n                class=\"ant-image-preview-img\"\n                #imgRef\n                *ngIf=\"index === imageIndex\"\n                [attr.src]=\"image.src\"\n                [attr.srcset]=\"image.srcset\"\n                [attr.alt]=\"image.alt\"\n                [style.width]=\"image.width\"\n                [style.height]=\"image.height\"\n                [style.transform]=\"previewImageTransform\"\n              />\n            </ng-container>\n          </div>\n          <ng-container *ngIf=\"images.length > 1\">\n            <div\n              class=\"ant-image-preview-switch-left\"\n              [class.ant-image-preview-switch-left-disabled]=\"index <= 0\"\n              (click)=\"onSwitchLeft($event)\"\n            >\n              <span nz-icon nzType=\"left\" nzTheme=\"outline\"></span>\n            </div>\n            <div\n              class=\"ant-image-preview-switch-right\"\n              [class.ant-image-preview-switch-right-disabled]=\"index >= images.length - 1\"\n              (click)=\"onSwitchRight($event)\"\n            >\n              <span nz-icon nzType=\"right\" nzTheme=\"outline\"></span>\n            </div>\n          </ng-container>\n        </div>\n      </div>\n      <div tabindex=\"0\" aria-hidden=\"true\" style=\"width: 0; height: 0; overflow: hidden; outline: none;\"></div>\n    </div>\n  `,\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'ant-image-preview-wrap',\n    '[class.ant-image-preview-moving]': 'isDragging',\n    '[style.zIndex]': 'config.nzZIndex',\n    '[@.disabled]': 'config.nzNoAnimation',\n    '[@fadeMotion]': 'animationState',\n    '(@fadeMotion.start)': 'onAnimationStart($event)',\n    '(@fadeMotion.done)': 'onAnimationDone($event)',\n    tabindex: '-1',\n    role: 'document'\n  },\n  providers: [NzDestroyService]\n})\nexport class NzImagePreviewComponent implements OnInit {\n  images: NzImage[] = [];\n  index = 0;\n  isDragging = false;\n  visible = true;\n  animationState: 'void' | 'enter' | 'leave' = 'enter';\n  animationStateChanged = new EventEmitter<AnimationEvent>();\n\n  previewImageTransform = '';\n  previewImageWrapperTransform = '';\n  operations: NzImageContainerOperation[] = [\n    {\n      icon: 'close',\n      onClick: () => {\n        this.onClose();\n      },\n      type: 'close'\n    },\n    {\n      icon: 'zoom-in',\n      onClick: () => {\n        this.onZoomIn();\n      },\n      type: 'zoomIn'\n    },\n    {\n      icon: 'zoom-out',\n      onClick: () => {\n        this.onZoomOut();\n      },\n      type: 'zoomOut'\n    },\n    {\n      icon: 'rotate-right',\n      onClick: () => {\n        this.onRotateRight();\n      },\n      type: 'rotateRight'\n    },\n    {\n      icon: 'rotate-left',\n      onClick: () => {\n        this.onRotateLeft();\n      },\n      type: 'rotateLeft'\n    }\n  ];\n\n  zoomOutDisabled = false;\n  position = { ...initialPosition };\n  previewRef!: NzImagePreviewRef;\n  containerClick = new EventEmitter<void>();\n  closeClick = new EventEmitter<void>();\n\n  @ViewChild('imgRef') imageRef!: ElementRef<HTMLImageElement>;\n  @ViewChild('imagePreviewWrapper', { static: true }) imagePreviewWrapper!: ElementRef<HTMLElement>;\n\n  private zoom: number;\n  private rotate: number;\n\n  get animationDisabled(): boolean {\n    return this.config.nzNoAnimation ?? false;\n  }\n\n  get maskClosable(): boolean {\n    const defaultConfig: NzSafeAny = this.nzConfigService.getConfigForComponent(NZ_CONFIG_MODULE_NAME) || {};\n    return this.config.nzMaskClosable ?? defaultConfig.nzMaskClosable ?? true;\n  }\n\n  constructor(\n    private ngZone: NgZone,\n    private host: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    public nzConfigService: NzConfigService,\n    public config: NzImagePreviewOptions,\n    private overlayRef: OverlayRef,\n    private destroy$: NzDestroyService\n  ) {\n    this.zoom = this.config.nzZoom ?? 1;\n    this.rotate = this.config.nzRotate ?? 0;\n    this.updateZoomOutDisabled();\n    this.updatePreviewImageTransform();\n    this.updatePreviewImageWrapperTransform();\n  }\n\n  ngOnInit(): void {\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.host.nativeElement, 'click')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(event => {\n          if (event.target === event.currentTarget && this.maskClosable && this.containerClick.observers.length) {\n            this.ngZone.run(() => this.containerClick.emit());\n          }\n        });\n\n      fromEvent(this.imagePreviewWrapper.nativeElement, 'mousedown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.isDragging = true;\n        });\n    });\n  }\n\n  setImages(images: NzImage[]): void {\n    this.images = images;\n    this.cdr.markForCheck();\n  }\n\n  switchTo(index: number): void {\n    this.index = index;\n    this.cdr.markForCheck();\n  }\n\n  next(): void {\n    if (this.index < this.images.length - 1) {\n      this.reset();\n      this.index++;\n      this.updatePreviewImageTransform();\n      this.updatePreviewImageWrapperTransform();\n      this.updateZoomOutDisabled();\n      this.cdr.markForCheck();\n    }\n  }\n\n  prev(): void {\n    if (this.index > 0) {\n      this.reset();\n      this.index--;\n      this.updatePreviewImageTransform();\n      this.updatePreviewImageWrapperTransform();\n      this.updateZoomOutDisabled();\n      this.cdr.markForCheck();\n    }\n  }\n\n  markForCheck(): void {\n    this.cdr.markForCheck();\n  }\n\n  onClose(): void {\n    this.closeClick.emit();\n  }\n\n  onZoomIn(): void {\n    this.zoom += 1;\n    this.updatePreviewImageTransform();\n    this.updateZoomOutDisabled();\n    this.position = { ...initialPosition };\n  }\n\n  onZoomOut(): void {\n    if (this.zoom > 1) {\n      this.zoom -= 1;\n      this.updatePreviewImageTransform();\n      this.updateZoomOutDisabled();\n      this.position = { ...initialPosition };\n    }\n  }\n\n  onRotateRight(): void {\n    this.rotate += 90;\n    this.updatePreviewImageTransform();\n  }\n\n  onRotateLeft(): void {\n    this.rotate -= 90;\n    this.updatePreviewImageTransform();\n  }\n\n  onSwitchLeft(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.prev();\n  }\n\n  onSwitchRight(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.next();\n  }\n\n  onAnimationStart(event: AnimationEvent): void {\n    if (event.toState === 'enter') {\n      this.setEnterAnimationClass();\n    } else if (event.toState === 'leave') {\n      this.setLeaveAnimationClass();\n    }\n\n    this.animationStateChanged.emit(event);\n  }\n\n  onAnimationDone(event: AnimationEvent): void {\n    if (event.toState === 'enter') {\n      this.setEnterAnimationClass();\n    } else if (event.toState === 'leave') {\n      this.setLeaveAnimationClass();\n    }\n    this.animationStateChanged.emit(event);\n  }\n\n  startLeaveAnimation(): void {\n    this.animationState = 'leave';\n    this.cdr.markForCheck();\n  }\n\n  onDragReleased(): void {\n    this.isDragging = false;\n    const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n    const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n    const { left, top } = getOffset(this.imageRef.nativeElement);\n    const { width: clientWidth, height: clientHeight } = getClientSize();\n    const isRotate = this.rotate % 180 !== 0;\n    const fitContentParams = {\n      width: isRotate ? height : width,\n      height: isRotate ? width : height,\n      left,\n      top,\n      clientWidth,\n      clientHeight\n    };\n    const fitContentPos = getFitContentPosition(fitContentParams);\n    if (isNotNil(fitContentPos.x) || isNotNil(fitContentPos.y)) {\n      this.position = { ...this.position, ...fitContentPos };\n    }\n  }\n\n  private updatePreviewImageTransform(): void {\n    this.previewImageTransform = `scale3d(${this.zoom}, ${this.zoom}, 1) rotate(${this.rotate}deg)`;\n  }\n\n  private updatePreviewImageWrapperTransform(): void {\n    this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;\n  }\n\n  private updateZoomOutDisabled(): void {\n    this.zoomOutDisabled = this.zoom <= 1;\n  }\n\n  private setEnterAnimationClass(): void {\n    if (this.animationDisabled) {\n      return;\n    }\n    const backdropElement = this.overlayRef.backdropElement;\n    if (backdropElement) {\n      backdropElement.classList.add(FADE_CLASS_NAME_MAP.enter);\n      backdropElement.classList.add(FADE_CLASS_NAME_MAP.enterActive);\n    }\n  }\n\n  private setLeaveAnimationClass(): void {\n    if (this.animationDisabled) {\n      return;\n    }\n    const backdropElement = this.overlayRef.backdropElement;\n    if (backdropElement) {\n      backdropElement.classList.add(FADE_CLASS_NAME_MAP.leave);\n      backdropElement.classList.add(FADE_CLASS_NAME_MAP.leaveActive);\n    }\n  }\n\n  private reset(): void {\n    this.zoom = 1;\n    this.rotate = 0;\n    this.position = { ...initialPosition };\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 { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, Optional } from '@angular/core';\n\nimport { ImageConfig, NzConfigService } from 'ng-zorro-antd/core/config';\n\nimport { IMAGE_PREVIEW_MASK_CLASS_NAME, NZ_CONFIG_MODULE_NAME } from './image-config';\nimport { NzImage, NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewRef } from './image-preview-ref';\nimport { NzImagePreviewComponent } from './image-preview.component';\n\nexport interface NzImageService {\n  preview(images: NzImage[], option?: NzImagePreviewOptions): NzImagePreviewRef;\n}\n\n@Injectable()\nexport class NzImageService {\n  constructor(\n    private overlay: Overlay,\n    private injector: Injector,\n    private nzConfigService: NzConfigService,\n    @Optional() private directionality: Directionality\n  ) {}\n\n  preview(images: NzImage[], options?: NzImagePreviewOptions): NzImagePreviewRef {\n    return this.display(images, options);\n  }\n\n  private display(images: NzImage[], config?: NzImagePreviewOptions): NzImagePreviewRef {\n    const configMerged = { ...new NzImagePreviewOptions(), ...(config ?? {}) };\n    const overlayRef = this.createOverlay(configMerged);\n    const previewComponent = this.attachPreviewComponent(overlayRef, configMerged);\n    previewComponent.setImages(images);\n    const previewRef = new NzImagePreviewRef(previewComponent, configMerged, overlayRef);\n\n    previewComponent.previewRef = previewRef;\n    return previewRef;\n  }\n\n  private attachPreviewComponent(overlayRef: OverlayRef, config: NzImagePreviewOptions): NzImagePreviewComponent {\n    const injector = Injector.create({\n      parent: this.injector,\n      providers: [\n        { provide: OverlayRef, useValue: overlayRef },\n        { provide: NzImagePreviewOptions, useValue: config }\n      ]\n    });\n\n    const containerPortal = new ComponentPortal(NzImagePreviewComponent, null, injector);\n    const containerRef = overlayRef.attach(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  private createOverlay(config: NzImagePreviewOptions): OverlayRef {\n    const globalConfig = (this.nzConfigService.getConfigForComponent(NZ_CONFIG_MODULE_NAME) as ImageConfig) || {};\n    const overLayConfig = new OverlayConfig({\n      hasBackdrop: true,\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay.position().global(),\n      disposeOnNavigation: config.nzCloseOnNavigation ?? globalConfig.nzCloseOnNavigation ?? true,\n      backdropClass: IMAGE_PREVIEW_MASK_CLASS_NAME,\n      direction: config.nzDirection || globalConfig.nzDirection || this.directionality.value\n    });\n\n    return this.overlay.create(overLayConfig);\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 { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nimport { NzImageDirective } from './image.directive';\n\n@Component({\n  selector: 'nz-image-group',\n  exportAs: 'nzImageGroup',\n  template: '<ng-content></ng-content>',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NzImageGroupComponent {\n  images: NzImageDirective[] = [];\n\n  addImage(image: NzImageDirective): void {\n    this.images.push(image);\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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  SimpleChanges\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { BooleanInput, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { NzImageGroupComponent } from './image-group.component';\nimport { NzImageService } from './image.service';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'image';\n\nexport type ImageStatusType = 'error' | 'loading' | 'normal';\n\n@Directive({\n  selector: 'img[nz-image]',\n  exportAs: 'nzImage',\n  host: {\n    '(click)': 'onPreview()'\n  }\n})\nexport class NzImageDirective implements OnInit, OnChanges, OnDestroy {\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  static ngAcceptInputType_nzDisablePreview: BooleanInput;\n\n  @Input() nzSrc = '';\n  @Input() nzSrcset = '';\n  @Input() @InputBoolean() @WithConfig() nzDisablePreview: boolean = false;\n  @Input() @WithConfig() nzFallback: string | null = null;\n  @Input() @WithConfig() nzPlaceholder: string | null = null;\n\n  dir?: Direction;\n  backLoadImage!: HTMLImageElement;\n  status: ImageStatusType = 'normal';\n  private backLoadDestroy$: Subject<void> = new Subject();\n  private destroy$: Subject<void> = new Subject();\n\n  get previewable(): boolean {\n    return !this.nzDisablePreview && this.status !== 'error';\n  }\n\n  constructor(\n    @Inject(DOCUMENT) private document: NzSafeAny,\n    public nzConfigService: NzConfigService,\n    private elementRef: ElementRef,\n    private nzImageService: NzImageService,\n    protected cdr: ChangeDetectorRef,\n    @Optional() private parentGroup: NzImageGroupComponent,\n    @Optional() private directionality: Directionality\n  ) {}\n\n  ngOnInit(): void {\n    this.backLoad();\n    if (this.parentGroup) {\n      this.parentGroup.addImage(this);\n    }\n    if (this.directionality) {\n      this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n        this.dir = direction;\n        this.cdr.detectChanges();\n      });\n      this.dir = this.directionality.value;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onPreview(): void {\n    if (!this.previewable) {\n      return;\n    }\n\n    if (this.parentGroup) {\n      // preview inside image group\n      const previewAbleImages = this.parentGroup.images.filter(e => e.previewable);\n      const previewImages = previewAbleImages.map(e => ({ src: e.nzSrc, srcset: e.nzSrcset }));\n      const previewIndex = previewAbleImages.findIndex(el => this === el);\n      const previewRef = this.nzImageService.preview(previewImages, { nzDirection: this.dir });\n      previewRef.switchTo(previewIndex);\n    } else {\n      // preview not inside image group\n      const previewImages = [{ src: this.nzSrc, srcset: this.nzSrcset }];\n      this.nzImageService.preview(previewImages, { nzDirection: this.dir });\n    }\n  }\n\n  getElement(): ElementRef<HTMLImageElement> {\n    return this.elementRef;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzSrc } = changes;\n    if (nzSrc) {\n      this.getElement().nativeElement.src = nzSrc.currentValue;\n      this.backLoad();\n    }\n  }\n\n  /**\n   * use internal Image object handle fallback & placeholder\n   *\n   * @private\n   */\n  private backLoad(): void {\n    this.backLoadImage = this.document.createElement('img');\n    this.backLoadImage.src = this.nzSrc;\n    this.backLoadImage.srcset = this.nzSrcset;\n    this.status = 'loading';\n\n    // unsubscribe last backLoad\n    this.backLoadDestroy$.next();\n    this.backLoadDestroy$.complete();\n    this.backLoadDestroy$ = new Subject();\n    if (this.backLoadImage.complete) {\n      this.status = 'normal';\n      this.getElement().nativeElement.src = this.nzSrc;\n      this.getElement().nativeElement.srcset = this.nzSrcset;\n    } else {\n      if (this.nzPlaceholder) {\n        this.getElement().nativeElement.src = this.nzPlaceholder;\n        this.getElement().nativeElement.srcset = '';\n      } else {\n        this.getElement().nativeElement.src = this.nzSrc;\n        this.getElement().nativeElement.srcset = this.nzSrcset;\n      }\n\n      // The `nz-image` directive can be destroyed before the `load` or `error` event is dispatched,\n      // so there's no sense to keep capturing `this`.\n      fromEvent(this.backLoadImage, 'load')\n        .pipe(takeUntil(this.backLoadDestroy$), takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.status = 'normal';\n          this.getElement().nativeElement.src = this.nzSrc;\n          this.getElement().nativeElement.srcset = this.nzSrcset;\n        });\n\n      fromEvent(this.backLoadImage, 'error')\n        .pipe(takeUntil(this.backLoadDestroy$), takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.status = 'error';\n          if (this.nzFallback) {\n            this.getElement().nativeElement.src = this.nzFallback;\n            this.getElement().nativeElement.srcset = '';\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 { BidiModule } from '@angular/cdk/bidi';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\n\nimport { NzImageGroupComponent } from './image-group.component';\nimport { NzImagePreviewComponent } from './image-preview.component';\nimport { NzImageDirective } from './image.directive';\nimport { NzImageService } from './image.service';\n\n@NgModule({\n  imports: [BidiModule, OverlayModule, PortalModule, DragDropModule, CommonModule, NzIconModule, NzPipesModule],\n  exports: [NzImageDirective, NzImagePreviewComponent, NzImageGroupComponent],\n  providers: [NzImageService],\n  declarations: [NzImageDirective, NzImagePreviewComponent, NzImageGroupComponent]\n})\nexport class NzImageModule {}\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 './image.directive';\nexport * from './image.service';\nexport * from './image-config';\nexport * from './image-group.component';\nexport * from './image-preview.component';\nexport * from './image-preview-options';\nexport * from './image-preview-ref';\nexport * from './image.module';\nexport * from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NZ_CONFIG_MODULE_NAME","i2.NzImagePreviewOptions","i1","i2","i3","i2.NzImageService","i3.NzImageGroupComponent","i4"],"mappings":"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"}