{"version":3,"file":"ng-zorro-antd-image.mjs","sources":["../../components/image/image-group.component.ts","../../components/image/image-config.ts","../../components/image/image-preview-options.ts","../../components/image/utils.ts","../../components/image/image-preview.component.ts","../../components/image/image-preview-ref.ts","../../components/image/image.service.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 { ChangeDetectionStrategy, Component, Input, 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 />',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NzImageGroupComponent {\n  @Input() nzScaleStep: number | null = null;\n\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 { NzConfigKey } from 'ng-zorro-antd/core/config';\n\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  nzFlipHorizontally?: boolean;\n  nzFlipVertically?: boolean;\n  nzScaleStep?: 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\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 { CdkDrag, CdkDragEnd, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  DOCUMENT,\n  ElementRef,\n  EventEmitter,\n  inject,\n  NgZone,\n  OnInit,\n  signal,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { merge } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular, isNotNil } from 'ng-zorro-antd/core/util';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NZ_CONFIG_MODULE_NAME } from './image-config';\nimport { NzImage, NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewRef } from './image-preview-ref';\nimport { NzImageScaleStep, NzImageUrl } from './image.directive';\nimport { getClientSize, getFitContentPosition, getOffset } from './utils';\n\nexport interface NzImageContainerOperation {\n  icon: string;\n  type: string;\n  rotate?: number;\n  onClick(): void;\n}\n\nconst initialPosition = {\n  x: 0,\n  y: 0\n};\n\nexport const NZ_DEFAULT_SCALE_STEP = 0.5;\nconst NZ_DEFAULT_ZOOM = 1;\nconst NZ_DEFAULT_ROTATE = 0;\n\n@Component({\n  selector: 'nz-image-preview',\n  exportAs: 'nzImagePreview',\n  template: `\n    <div class=\"ant-image-preview-mask\"></div>\n\n    <div class=\"ant-image-preview-operations-wrapper\">\n      @if (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          <nz-icon nzType=\"left\" nzTheme=\"outline\" />\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          <nz-icon nzType=\"right\" nzTheme=\"outline\" />\n        </div>\n      }\n\n      <ul class=\"ant-image-preview-operations\">\n        @if (images.length > 1) {\n          <li class=\"ant-image-preview-operations-progress\">{{ index + 1 }} / {{ images.length }}</li>\n        }\n\n        @for (option of operations; track option) {\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          >\n            <nz-icon\n              class=\"ant-image-preview-operations-icon\"\n              [nzType]=\"option.icon\"\n              [nzRotate]=\"option.rotate ?? 0\"\n              nzTheme=\"outline\"\n            />\n          </li>\n        }\n      </ul>\n    </div>\n\n    <div\n      class=\"ant-image-preview-wrap\"\n      tabindex=\"-1\"\n      (click)=\"maskClosable && $event.target === $event.currentTarget && onClose()\"\n    >\n      <div class=\"ant-image-preview\" role=\"dialog\" aria-modal=\"true\">\n        <div tabindex=\"0\" aria-hidden=\"true\" class=\"ant-image-preview-focus-trap\"></div>\n        <div class=\"ant-image-preview-content\">\n          <div class=\"ant-image-preview-body\">\n            <div\n              class=\"ant-image-preview-img-wrapper\"\n              #imagePreviewWrapper\n              cdkDrag\n              [style.transform]=\"previewImageWrapperTransform()\"\n              [cdkDragFreeDragPosition]=\"position\"\n              (cdkDragEnded)=\"onDragEnd($event)\"\n            >\n              @for (image of images; track image) {\n                @if ($index === index) {\n                  <img\n                    cdkDragHandle\n                    class=\"ant-image-preview-img\"\n                    #imgRef\n                    [attr.src]=\"sanitizerResourceUrl(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                }\n              }\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"0\" aria-hidden=\"true\" class=\"ant-image-preview-focus-trap\"></div>\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'ant-image-preview-root',\n    '[class.ant-image-preview-moving]': 'isDragging()',\n    '[style.zIndex]': 'config.nzZIndex'\n  },\n  imports: [NzIconModule, CdkDragHandle, CdkDrag]\n})\nexport class NzImagePreviewComponent implements OnInit {\n  private readonly document = inject(DOCUMENT);\n  private readonly ngZone = inject(NgZone);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly nzConfigService = inject(NzConfigService);\n  private readonly sanitizer = inject(DomSanitizer);\n  private readonly destroyRef = inject(DestroyRef);\n  public readonly elementRef = inject(ElementRef);\n  public readonly config = inject(NzImagePreviewOptions);\n  readonly _defaultNzZoom = NZ_DEFAULT_ZOOM;\n  readonly _defaultNzScaleStep = NZ_DEFAULT_SCALE_STEP;\n  readonly _defaultNzRotate = NZ_DEFAULT_ROTATE;\n\n  readonly isDragging = signal(false);\n  images: NzImage[] = [];\n  index = 0;\n  visible = true;\n  scaleStepMap: Map<NzImageUrl, NzImageScaleStep> = new Map<NzImageUrl, NzImageScaleStep>();\n\n  protected readonly previewImageTransform = signal('');\n  protected readonly previewImageWrapperTransform = signal('');\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      icon: 'swap',\n      onClick: () => {\n        this.onHorizontalFlip();\n      },\n      type: 'flipHorizontally'\n    },\n    {\n      icon: 'swap',\n      onClick: () => {\n        this.onVerticalFlip();\n      },\n      type: 'flipVertically',\n      rotate: 90\n    }\n  ];\n\n  zoomOutDisabled = false;\n  position = { ...initialPosition };\n  previewRef!: NzImagePreviewRef;\n  closeClick = new EventEmitter<void>();\n\n  @ViewChild('imgRef') imageRef!: ElementRef<HTMLImageElement>;\n  @ViewChild('imagePreviewWrapper', { static: true }) imagePreviewWrapper!: ElementRef<HTMLElement>;\n\n  private zoom = this.config.nzZoom ?? this._defaultNzZoom;\n  private rotate = this.config.nzRotate ?? this._defaultNzRotate;\n  private scaleStep = this.config.nzScaleStep ?? this._defaultNzScaleStep;\n  private flipHorizontally = this.config.nzFlipHorizontally ?? false;\n  private flipVertically = this.config.nzFlipVertically ?? false;\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    this.updateZoomOutDisabled();\n    this.updatePreviewImageTransform();\n    this.updatePreviewImageWrapperTransform();\n  }\n\n  ngOnInit(): void {\n    merge(\n      fromEventOutsideAngular(this.imagePreviewWrapper.nativeElement, 'mousedown').pipe(map(() => true)),\n      fromEventOutsideAngular(this.imagePreviewWrapper.nativeElement, 'mouseup').pipe(map(() => false))\n    )\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(dragging => this.isDragging.set(dragging));\n\n    fromEventOutsideAngular<WheelEvent>(this.imagePreviewWrapper.nativeElement, 'wheel')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(event => {\n        this.ngZone.run(() => this.wheelZoomEventHandler(event));\n      });\n\n    fromEventOutsideAngular<KeyboardEvent>(this.document, 'keydown')\n      .pipe(\n        filter(event => event.keyCode === ESCAPE),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(() => {\n        this.ngZone.run(() => {\n          this.onClose();\n          this.markForCheck();\n        });\n      });\n  }\n\n  setImages(images: NzImage[], scaleStepMap?: Map<string, number>): void {\n    if (scaleStepMap) this.scaleStepMap = scaleStepMap;\n    this.images = images;\n    this.markForCheck();\n  }\n\n  switchTo(index: number): void {\n    this.index = index;\n    this.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.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.markForCheck();\n    }\n  }\n\n  markForCheck(): void {\n    this.cdr.markForCheck();\n  }\n\n  onClose(): void {\n    this.visible = false;\n    this.closeClick.emit();\n  }\n\n  onZoomIn(): void {\n    const zoomStep =\n      this.scaleStepMap.get(this.images[this.index].src ?? this.images[this.index].srcset) ?? this.scaleStep;\n    this.zoom += zoomStep;\n    this.updatePreviewImageTransform();\n    this.updateZoomOutDisabled();\n  }\n\n  onZoomOut(): void {\n    if (this.zoom > 1) {\n      const zoomStep =\n        this.scaleStepMap.get(this.images[this.index].src ?? this.images[this.index].srcset) ?? this.scaleStep;\n      this.zoom -= zoomStep;\n      this.updatePreviewImageTransform();\n      this.updateZoomOutDisabled();\n\n      if (this.zoom <= 1) {\n        this.reCenterImage();\n      }\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  onHorizontalFlip(): void {\n    this.flipHorizontally = !this.flipHorizontally;\n    this.updatePreviewImageTransform();\n  }\n\n  onVerticalFlip(): void {\n    this.flipVertically = !this.flipVertically;\n    this.updatePreviewImageTransform();\n  }\n\n  wheelZoomEventHandler(event: WheelEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.handlerImageTransformationWhileZoomingWithMouse(event, event.deltaY);\n    this.handleImageScaleWhileZoomingWithMouse(event.deltaY);\n\n    this.updatePreviewImageWrapperTransform();\n    this.updatePreviewImageTransform();\n\n    this.markForCheck();\n  }\n\n  onDragEnd(event: CdkDragEnd): void {\n    this.isDragging.set(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    } else if (!isNotNil(fitContentPos.x) && !isNotNil(fitContentPos.y)) {\n      this.position = {\n        x: event.source.getFreeDragPosition().x,\n        y: event.source.getFreeDragPosition().y\n      };\n    }\n  }\n\n  sanitizerResourceUrl(url: string): SafeResourceUrl {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n  }\n\n  private updatePreviewImageTransform(): void {\n    this.previewImageTransform.set(\n      `scale3d(${this.zoom * (this.flipHorizontally ? -1 : 1)}, ${\n        this.zoom * (this.flipVertically ? -1 : 1)\n      }, 1) rotate(${this.rotate}deg)`\n    );\n  }\n\n  private updatePreviewImageWrapperTransform(): void {\n    this.previewImageWrapperTransform.set(`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 handlerImageTransformationWhileZoomingWithMouse(event: WheelEvent, deltaY: number): void {\n    let scaleValue: number;\n    const imageElement = this.imageRef.nativeElement;\n\n    const elementTransform = getComputedStyle(imageElement).transform;\n    const matrixValue = elementTransform.match(/matrix.*\\((.+)\\)/);\n\n    if (matrixValue) {\n      scaleValue = +matrixValue[1].split(', ')[0];\n    } else {\n      scaleValue = this.zoom;\n    }\n\n    const x = (event.clientX - imageElement.getBoundingClientRect().x) / scaleValue;\n    const y = (event.clientY - imageElement.getBoundingClientRect().y) / scaleValue;\n    const halfOfScaleStepValue = deltaY < 0 ? this.scaleStep / 2 : -this.scaleStep / 2;\n\n    this.position.x += -x * halfOfScaleStepValue * 2 + imageElement.offsetWidth * halfOfScaleStepValue;\n    this.position.y += -y * halfOfScaleStepValue * 2 + imageElement.offsetHeight * halfOfScaleStepValue;\n  }\n\n  private handleImageScaleWhileZoomingWithMouse(deltaY: number): void {\n    if (this.isZoomedInWithMouseWheel(deltaY)) {\n      this.onZoomIn();\n    } else {\n      this.onZoomOut();\n    }\n\n    if (this.zoom <= 1) {\n      this.reCenterImage();\n    }\n  }\n\n  private isZoomedInWithMouseWheel(delta: number): boolean {\n    return delta < 0;\n  }\n\n  private reset(): void {\n    this.zoom = this.config.nzZoom ?? this._defaultNzZoom;\n    this.scaleStep = this.config.nzScaleStep ?? this._defaultNzScaleStep;\n    this.rotate = this.config.nzRotate ?? this._defaultNzRotate;\n    this.flipHorizontally = false;\n    this.flipVertically = false;\n    this.reCenterImage();\n  }\n\n  private reCenterImage(): void {\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 { 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 { generateClassName } from 'ng-zorro-antd/core/util';\n\nimport { NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewComponent } from './image-preview.component';\n\nconst CLASS_NAME = 'ant-image-preview';\nconst FADE_CLASS_NAME_MAP = {\n  enter: generateClassName(CLASS_NAME, 'fade-motion-enter'),\n  leave: generateClassName(CLASS_NAME, 'fade-motion-leave')\n};\nconst FADE_OUT_KEYFRAME_NAME = 'antFadeOut';\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    if (config.nzKeyboard) {\n      overlayRef\n        .keydownEvents()\n        .pipe(\n          filter(\n            event =>\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            previewInstance.onClose();\n          }\n          if (event.keyCode === LEFT_ARROW) {\n            this.prev();\n          }\n          if (event.keyCode === RIGHT_ARROW) {\n            this.next();\n          }\n        });\n    }\n\n    overlayRef.detachments().subscribe(() => this.overlayRef.dispose());\n\n    previewInstance.closeClick.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => this.close());\n\n    this._startEnterAnimation();\n  }\n\n  private get element(): HTMLElement {\n    return this.previewInstance.elementRef.nativeElement as HTMLElement;\n  }\n\n  private get _animationsEnabled(): boolean {\n    return !(this.config.nzNoAnimation ?? false);\n  }\n\n  private _startEnterAnimation(): void {\n    if (this._animationsEnabled) {\n      this.element.classList.add(FADE_CLASS_NAME_MAP.enter);\n    }\n  }\n\n  private _startLeaveAnimation(): void {\n    if (this._animationsEnabled) {\n      this.element.classList.remove(FADE_CLASS_NAME_MAP.enter);\n      this.element.classList.add(FADE_CLASS_NAME_MAP.leave);\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    if (this._animationsEnabled) {\n      // if animation is enabled, close after animation end\n      const onAnimationEnd = (event: AnimationEvent): void => {\n        if (event.animationName === FADE_OUT_KEYFRAME_NAME) {\n          this.element.removeEventListener('animationend', onAnimationEnd);\n          this._doClose();\n        }\n      };\n\n      this.element.addEventListener('animationend', onAnimationEnd);\n      this._startLeaveAnimation();\n    } else {\n      this._doClose();\n    }\n  }\n\n  private _doClose(): void {\n    this.destroy$.next();\n    this.overlayRef.dispose();\n    this.previewInstance = null!;\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 {\n  createBlockScrollStrategy,\n  createGlobalPositionStrategy,\n  createOverlayRef,\n  OverlayRef\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { inject, Injectable, Injector } from '@angular/core';\n\nimport { ImageConfig, NzConfigService } from 'ng-zorro-antd/core/config';\n\nimport { 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';\nimport { NzImageScaleStep, NzImageUrl } from './image.directive';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface NzImageService {\n  preview(images: NzImage[], option?: NzImagePreviewOptions): NzImagePreviewRef;\n}\n\n@Injectable()\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport class NzImageService {\n  private injector = inject(Injector);\n  private nzConfigService = inject(NzConfigService);\n  private directionality = inject(Directionality);\n\n  preview(\n    images: NzImage[],\n    options?: NzImagePreviewOptions,\n    zoomMap?: Map<NzImageUrl, NzImageScaleStep>\n  ): NzImagePreviewRef {\n    return this.display(images, options, zoomMap);\n  }\n\n  private display(\n    images: NzImage[],\n    config?: NzImagePreviewOptions,\n    scaleStepMap?: Map<NzImageUrl, NzImageScaleStep>\n  ): NzImagePreviewRef {\n    const configMerged = { ...new NzImagePreviewOptions(), ...(config ?? {}) };\n    const overlayRef = this.createOverlay(configMerged);\n    const previewComponent = this.attachPreviewComponent(overlayRef, configMerged);\n    previewComponent.setImages(images, scaleStepMap);\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\n    return createOverlayRef(this.injector, {\n      scrollStrategy: createBlockScrollStrategy(this.injector),\n      positionStrategy: createGlobalPositionStrategy(this.injector),\n      disposeOnNavigation: config.nzCloseOnNavigation ?? globalConfig.nzCloseOnNavigation ?? true,\n      direction: config.nzDirection || globalConfig.nzDirection || this.directionality.value\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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n  booleanAttribute,\n  ChangeDetectorRef,\n  DestroyRef,\n  Directive,\n  DOCUMENT,\n  ElementRef,\n  inject,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\n\nimport { NzImageGroupComponent } from './image-group.component';\nimport { NZ_DEFAULT_SCALE_STEP } from './image-preview.component';\nimport { NzImageService } from './image.service';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'image';\n\nexport type ImageStatusType = 'error' | 'loading' | 'normal';\nexport type NzImageUrl = string;\nexport type NzImageScaleStep = number;\n\n@Directive({\n  selector: 'img[nz-image]',\n  exportAs: 'nzImage',\n  host: {\n    '(click)': 'onPreview()'\n  }\n})\nexport class NzImageDirective implements OnInit, OnChanges {\n  private document: Document = inject(DOCUMENT);\n  public nzConfigService = inject(NzConfigService);\n  private elementRef = inject(ElementRef);\n  private nzImageService = inject(NzImageService);\n  protected cdr = inject(ChangeDetectorRef);\n  private directionality = inject(Directionality);\n  private destroyRef = inject(DestroyRef);\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  @Input() nzSrc = '';\n  @Input() nzSrcset = '';\n  @Input({ transform: booleanAttribute }) @WithConfig() nzDisablePreview: boolean = false;\n  @Input() @WithConfig() nzFallback: string | null = null;\n  @Input() @WithConfig() nzPlaceholder: string | null = null;\n  @Input() @WithConfig() nzScaleStep: number | null = null;\n\n  dir?: Direction;\n  backLoadImage!: HTMLImageElement;\n  status: ImageStatusType = 'normal';\n  private backLoadDestroy$ = new Subject<void>();\n\n  private parentGroup = inject(NzImageGroupComponent, { optional: true });\n\n  get previewable(): boolean {\n    return !this.nzDisablePreview && this.status !== 'error';\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(takeUntilDestroyed(this.destroyRef)).subscribe(direction => {\n        this.dir = direction;\n        this.cdr.detectChanges();\n      });\n      this.dir = this.directionality.value;\n    }\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 scaleStepMap = new Map<NzImageUrl, NzImageScaleStep>();\n      previewAbleImages.forEach(imageDirective => {\n        scaleStepMap.set(\n          imageDirective.nzSrc ?? imageDirective.nzSrcset,\n          imageDirective.nzScaleStep ?? this.parentGroup!.nzScaleStep ?? this.nzScaleStep ?? NZ_DEFAULT_SCALE_STEP\n        );\n      });\n      const previewRef = this.nzImageService.preview(\n        previewImages,\n        {\n          nzDirection: this.dir\n        },\n        scaleStepMap\n      );\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, {\n        nzDirection: this.dir,\n        nzScaleStep: this.nzScaleStep ?? NZ_DEFAULT_SCALE_STEP\n      });\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$), takeUntilDestroyed(this.destroyRef))\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$), takeUntilDestroyed(this.destroyRef))\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 { NgModule } from '@angular/core';\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: [NzImageDirective, NzImagePreviewComponent, NzImageGroupComponent],\n  exports: [NzImageDirective, NzImagePreviewComponent, NzImageGroupComponent],\n  providers: [NzImageService]\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"],"mappings":"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"}