{"version":3,"file":"ng-zorro-antd-carousel.mjs","sources":["../../components/carousel/carousel-content.directive.ts","../../components/carousel/strategies/base-strategy.ts","../../components/carousel/strategies/opacity-strategy.ts","../../components/carousel/strategies/transform-strategy.ts","../../components/carousel/typings.ts","../../components/carousel/carousel.component.ts","../../components/carousel/carousel.module.ts","../../components/carousel/strategies/experimental/transform-no-loop-strategy.ts","../../components/carousel/strategies/experimental/flip-strategy.ts","../../components/carousel/public-api.ts","../../components/carousel/ng-zorro-antd-carousel.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 { Directive, ElementRef, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: '[nz-carousel-content]',\n  exportAs: 'nzCarouselContent'\n})\nexport class NzCarouselContentDirective {\n  readonly el: HTMLElement;\n\n  set isActive(value: boolean) {\n    this._active = value;\n    if (this.isActive) {\n      this.renderer.addClass(this.el, 'slick-active');\n    } else {\n      this.renderer.removeClass(this.el, 'slick-active');\n    }\n  }\n\n  get isActive(): boolean {\n    return this._active;\n  }\n\n  private _active = false;\n\n  constructor(elementRef: ElementRef, private renderer: Renderer2) {\n    this.el = elementRef.nativeElement;\n    this.renderer.addClass(elementRef.nativeElement, 'slick-slide');\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 { Platform } from '@angular/cdk/platform';\nimport { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { NzCarouselContentDirective } from '../carousel-content.directive';\nimport { FromToInterface, NzCarouselComponentAsSource, PointerVector } from '../typings';\n\nexport abstract class NzCarouselBaseStrategy<T = NzSafeAny> {\n  // Properties that strategies may want to use.\n  protected carouselComponent: NzCarouselComponentAsSource | null;\n  protected contents!: NzCarouselContentDirective[];\n  protected slickListEl!: HTMLElement;\n  protected slickTrackEl!: HTMLElement;\n  protected length!: number;\n  protected unitWidth!: number;\n  protected unitHeight!: number;\n\n  protected get maxIndex(): number {\n    return this.length - 1;\n  }\n\n  protected get firstEl(): HTMLElement {\n    return this.contents[0].el;\n  }\n\n  protected get lastEl(): HTMLElement {\n    return this.contents[this.maxIndex].el;\n  }\n\n  constructor(\n    carouselComponent: NzCarouselComponentAsSource,\n    protected cdr: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected platform: Platform,\n    protected options?: T\n  ) {\n    this.carouselComponent = carouselComponent;\n  }\n\n  /**\n   * Initialize dragging sequences.\n   *\n   * @param contents\n   */\n  withCarouselContents(contents: QueryList<NzCarouselContentDirective> | null): void {\n    const carousel = this.carouselComponent!;\n    this.slickListEl = carousel.slickListEl;\n    this.slickTrackEl = carousel.slickTrackEl;\n    this.contents = contents?.toArray() || [];\n    this.length = this.contents.length;\n\n    if (this.platform.isBrowser) {\n      const rect = carousel.el.getBoundingClientRect();\n      this.unitWidth = rect.width;\n      this.unitHeight = rect.height;\n    } else {\n      // Since we cannot call getBoundingClientRect in server, we just hide all items except for the first one.\n      contents?.forEach((content, index) => {\n        if (index === 0) {\n          this.renderer.setStyle(content.el, 'width', '100%');\n        } else {\n          this.renderer.setStyle(content.el, 'display', 'none');\n        }\n      });\n    }\n  }\n\n  /**\n   * Trigger transition.\n   */\n  abstract switch(_f: number, _t: number): Observable<void>;\n\n  /**\n   * When user drag the carousel component.\n   *\n   * @optional\n   */\n  dragging(_vector: PointerVector): void {}\n\n  /**\n   * Destroy a scroll strategy.\n   */\n  dispose(): void {}\n\n  protected getFromToInBoundary(f: number, t: number): FromToInterface {\n    const length = this.maxIndex + 1;\n    return { from: (f + length) % length, to: (t + length) % length };\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 { QueryList } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NzCarouselContentDirective } from '../carousel-content.directive';\nimport { NzCarouselBaseStrategy } from './base-strategy';\n\nexport class NzCarouselOpacityStrategy extends NzCarouselBaseStrategy {\n  override withCarouselContents(contents: QueryList<NzCarouselContentDirective> | null): void {\n    super.withCarouselContents(contents);\n\n    if (this.contents) {\n      this.slickTrackEl.style.width = `${this.length * this.unitWidth}px`;\n\n      this.contents.forEach((content: NzCarouselContentDirective, i: number) => {\n        this.renderer.setStyle(content.el, 'opacity', this.carouselComponent!.activeIndex === i ? '1' : '0');\n        this.renderer.setStyle(content.el, 'position', 'relative');\n        this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n        this.renderer.setStyle(content.el, 'left', `${-this.unitWidth * i}px`);\n        this.renderer.setStyle(content.el, 'transition', ['opacity 500ms ease 0s', 'visibility 500ms ease 0s']);\n      });\n    }\n  }\n\n  switch(_f: number, _t: number): Observable<void> {\n    const { to: t } = this.getFromToInBoundary(_f, _t);\n    const complete$ = new Subject<void>();\n\n    this.contents.forEach((content: NzCarouselContentDirective, i: number) => {\n      this.renderer.setStyle(content.el, 'opacity', t === i ? '1' : '0');\n    });\n\n    setTimeout(() => {\n      complete$.next();\n      complete$.complete();\n    }, this.carouselComponent!.nzTransitionSpeed);\n\n    return complete$;\n  }\n\n  override dispose(): void {\n    this.contents.forEach((content: NzCarouselContentDirective) => {\n      this.renderer.setStyle(content.el, 'transition', null);\n      this.renderer.setStyle(content.el, 'opacity', null);\n      this.renderer.setStyle(content.el, 'width', null);\n      this.renderer.setStyle(content.el, 'left', null);\n    });\n\n    super.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\nimport { Platform } from '@angular/cdk/platform';\nimport { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NzCarouselContentDirective } from '../carousel-content.directive';\nimport { NzCarouselComponentAsSource, PointerVector } from '../typings';\nimport { NzCarouselBaseStrategy } from './base-strategy';\n\ninterface NzCarouselTransformStrategyOptions {\n  direction: 'left' | 'right';\n}\n\nexport class NzCarouselTransformStrategy extends NzCarouselBaseStrategy<NzCarouselTransformStrategyOptions> {\n  private isDragging = false;\n  private isTransitioning = false;\n\n  private get vertical(): boolean {\n    return this.carouselComponent!.vertical;\n  }\n\n  constructor(\n    carouselComponent: NzCarouselComponentAsSource,\n    cdr: ChangeDetectorRef,\n    renderer: Renderer2,\n    platform: Platform,\n    options?: NzCarouselTransformStrategyOptions\n  ) {\n    super(carouselComponent, cdr, renderer, platform, options);\n  }\n\n  override dispose(): void {\n    super.dispose();\n    this.renderer.setStyle(this.slickTrackEl, 'transform', null);\n  }\n\n  override withCarouselContents(contents: QueryList<NzCarouselContentDirective> | null): void {\n    super.withCarouselContents(contents);\n\n    const carousel = this.carouselComponent!;\n    const activeIndex = carousel.activeIndex;\n\n    // We only do when we are in browser.\n    if (this.platform.isBrowser && this.contents.length) {\n      this.renderer.setStyle(this.slickListEl, 'height', `${this.unitHeight}px`);\n\n      if (this.vertical) {\n        this.renderer.setStyle(this.slickTrackEl, 'width', `${this.unitWidth}px`);\n        this.renderer.setStyle(this.slickTrackEl, 'height', `${this.length * this.unitHeight}px`);\n        this.renderer.setStyle(\n          this.slickTrackEl,\n          'transform',\n          `translate3d(0, ${-activeIndex * this.unitHeight}px, 0)`\n        );\n      } else {\n        this.renderer.setStyle(this.slickTrackEl, 'height', `${this.unitHeight}px`);\n        this.renderer.setStyle(this.slickTrackEl, 'width', `${this.length * this.unitWidth}px`);\n        this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-activeIndex * this.unitWidth}px, 0, 0)`);\n      }\n\n      this.contents.forEach((content: NzCarouselContentDirective) => {\n        this.renderer.setStyle(content.el, 'position', 'relative');\n        this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n        this.renderer.setStyle(content.el, 'height', `${this.unitHeight}px`);\n      });\n    }\n  }\n\n  switch(_f: number, _t: number): Observable<void> {\n    const { to: t } = this.getFromToInBoundary(_f, _t);\n    const complete$ = new Subject<void>();\n\n    this.renderer.setStyle(\n      this.slickTrackEl,\n      'transition',\n      `transform ${this.carouselComponent!.nzTransitionSpeed}ms ease`\n    );\n\n    if (this.vertical) {\n      this.verticalTransform(_f, _t);\n    } else {\n      this.horizontalTransform(_f, _t);\n    }\n\n    this.isTransitioning = true;\n    this.isDragging = false;\n\n    // TODO@hullis: use transitionEnd event instead of setTimeout\n    setTimeout(() => {\n      this.renderer.setStyle(this.slickTrackEl, 'transition', null);\n      this.contents.forEach((content: NzCarouselContentDirective) => {\n        this.renderer.setStyle(content.el, this.vertical ? 'top' : 'left', null);\n      });\n\n      if (this.vertical) {\n        this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-t * this.unitHeight}px, 0)`);\n      } else {\n        this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-t * this.unitWidth}px, 0, 0)`);\n      }\n\n      this.isTransitioning = false;\n\n      complete$.next();\n      complete$.complete();\n    }, this.carouselComponent!.nzTransitionSpeed);\n\n    return complete$.asObservable();\n  }\n\n  override dragging(_vector: PointerVector): void {\n    if (this.isTransitioning) {\n      return;\n    }\n\n    const activeIndex = this.carouselComponent!.activeIndex;\n\n    if (this.carouselComponent!.vertical) {\n      if (!this.isDragging && this.length > 2) {\n        if (activeIndex === this.maxIndex) {\n          this.prepareVerticalContext(true);\n        } else if (activeIndex === 0) {\n          this.prepareVerticalContext(false);\n        }\n      }\n      this.renderer.setStyle(\n        this.slickTrackEl,\n        'transform',\n        `translate3d(0, ${-activeIndex * this.unitHeight + _vector.x}px, 0)`\n      );\n    } else {\n      if (!this.isDragging && this.length > 2) {\n        if (activeIndex === this.maxIndex) {\n          this.prepareHorizontalContext(true);\n        } else if (activeIndex === 0) {\n          this.prepareHorizontalContext(false);\n        }\n      }\n      this.renderer.setStyle(\n        this.slickTrackEl,\n        'transform',\n        `translate3d(${-activeIndex * this.unitWidth + _vector.x}px, 0, 0)`\n      );\n    }\n\n    this.isDragging = true;\n  }\n\n  private verticalTransform(_f: number, _t: number): void {\n    const { from: f, to: t } = this.getFromToInBoundary(_f, _t);\n    const needToAdjust = this.length > 2 && _t !== t;\n\n    if (needToAdjust) {\n      this.prepareVerticalContext(t < f);\n      this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-_t * this.unitHeight}px, 0)`);\n    } else {\n      this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-t * this.unitHeight}px, 0`);\n    }\n  }\n\n  private horizontalTransform(_f: number, _t: number): void {\n    const { from: f, to: t } = this.getFromToInBoundary(_f, _t);\n    const needToAdjust = this.length > 2 && _t !== t;\n\n    if (needToAdjust) {\n      this.prepareHorizontalContext(t < f);\n      this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-_t * this.unitWidth}px, 0, 0)`);\n    } else {\n      this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-t * this.unitWidth}px, 0, 0`);\n    }\n  }\n\n  private prepareVerticalContext(lastToFirst: boolean): void {\n    if (lastToFirst) {\n      this.renderer.setStyle(this.firstEl, 'top', `${this.length * this.unitHeight}px`);\n      this.renderer.setStyle(this.lastEl, 'top', null);\n    } else {\n      this.renderer.setStyle(this.firstEl, 'top', null);\n      this.renderer.setStyle(this.lastEl, 'top', `${-this.unitHeight * this.length}px`);\n    }\n  }\n\n  private prepareHorizontalContext(lastToFirst: boolean): void {\n    if (lastToFirst) {\n      this.renderer.setStyle(this.firstEl, 'left', `${this.length * this.unitWidth}px`);\n      this.renderer.setStyle(this.lastEl, 'left', null);\n    } else {\n      this.renderer.setStyle(this.firstEl, 'left', null);\n      this.renderer.setStyle(this.lastEl, 'left', `${-this.unitWidth * this.length}px`);\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 } from '@angular/cdk/bidi';\nimport { InjectionToken, NgZone, QueryList } from '@angular/core';\n\nimport { NzCarouselContentDirective } from './carousel-content.directive';\nimport { NzCarouselBaseStrategy } from './strategies/base-strategy';\n\nexport type NzCarouselEffects = 'fade' | 'scrollx' | string;\nexport type NzCarouselDotPosition = 'top' | 'bottom' | 'left' | 'right' | string;\n\nexport interface NzCarouselComponentAsSource {\n  carouselContents: QueryList<NzCarouselContentDirective>;\n  el: HTMLElement;\n  nzTransitionSpeed: number;\n  vertical: boolean;\n  slickListEl: HTMLElement;\n  slickTrackEl: HTMLElement;\n  activeIndex: number;\n  dir: Direction;\n  ngZone: NgZone;\n}\n\nexport interface NzCarouselStrategyRegistryItem {\n  name: string;\n  strategy: NzCarouselBaseStrategy;\n}\n\nexport const NZ_CAROUSEL_CUSTOM_STRATEGIES = new InjectionToken<NzCarouselStrategyRegistryItem[]>(\n  'nz-carousel-custom-strategies'\n);\n\nexport interface PointerVector {\n  x: number;\n  y: number;\n}\n\nexport interface FromToInterface {\n  from: number;\n  to: 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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\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 { NzDragService, NzResizeService } from 'ng-zorro-antd/core/services';\nimport { BooleanInput, NumberInput, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean, InputNumber } from 'ng-zorro-antd/core/util';\n\nimport { NzCarouselContentDirective } from './carousel-content.directive';\nimport { NzCarouselBaseStrategy } from './strategies/base-strategy';\nimport { NzCarouselOpacityStrategy } from './strategies/opacity-strategy';\nimport { NzCarouselTransformStrategy } from './strategies/transform-strategy';\nimport {\n  FromToInterface,\n  NzCarouselDotPosition,\n  NzCarouselEffects,\n  NzCarouselStrategyRegistryItem,\n  NZ_CAROUSEL_CUSTOM_STRATEGIES,\n  PointerVector\n} from './typings';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'carousel';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'nz-carousel',\n  exportAs: 'nzCarousel',\n  preserveWhitespaces: false,\n  template: `\n    <div\n      class=\"slick-initialized slick-slider\"\n      [class.slick-vertical]=\"nzDotPosition === 'left' || nzDotPosition === 'right'\"\n    >\n      <div\n        #slickList\n        class=\"slick-list\"\n        tabindex=\"-1\"\n        (mousedown)=\"pointerDown($event)\"\n        (touchstart)=\"pointerDown($event)\"\n      >\n        <!-- Render carousel items. -->\n        <div class=\"slick-track\" #slickTrack>\n          <ng-content></ng-content>\n        </div>\n      </div>\n      <!-- Render dots. -->\n      <ul\n        class=\"slick-dots\"\n        *ngIf=\"nzDots\"\n        [class.slick-dots-top]=\"nzDotPosition === 'top'\"\n        [class.slick-dots-bottom]=\"nzDotPosition === 'bottom'\"\n        [class.slick-dots-left]=\"nzDotPosition === 'left'\"\n        [class.slick-dots-right]=\"nzDotPosition === 'right'\"\n      >\n        <li\n          *ngFor=\"let content of carouselContents; let i = index\"\n          [class.slick-active]=\"i === activeIndex\"\n          (click)=\"onLiClick(i)\"\n        >\n          <ng-template\n            [ngTemplateOutlet]=\"nzDotRender || renderDotTemplate\"\n            [ngTemplateOutletContext]=\"{ $implicit: i }\"\n          ></ng-template>\n        </li>\n      </ul>\n    </div>\n\n    <ng-template #renderDotTemplate let-index>\n      <button>{{ index + 1 }}</button>\n    </ng-template>\n  `,\n  host: {\n    '[class.ant-carousel-vertical]': 'vertical',\n    '[class.ant-carousel-rtl]': `dir ==='rtl'`\n  }\n})\nexport class NzCarouselComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnChanges, OnInit {\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n  static ngAcceptInputType_nzEnableSwipe: BooleanInput;\n  static ngAcceptInputType_nzDots: BooleanInput;\n  static ngAcceptInputType_nzAutoPlay: BooleanInput;\n  static ngAcceptInputType_nzAutoPlaySpeed: NumberInput;\n  static ngAcceptInputType_nzTransitionSpeed: NumberInput;\n\n  @ContentChildren(NzCarouselContentDirective) carouselContents!: QueryList<NzCarouselContentDirective>;\n\n  @ViewChild('slickList', { static: true }) slickList!: ElementRef<HTMLElement>;\n  @ViewChild('slickTrack', { static: true }) slickTrack!: ElementRef<HTMLElement>;\n\n  @Input() nzDotRender?: TemplateRef<{ $implicit: number }>;\n  @Input() @WithConfig() nzEffect: NzCarouselEffects = 'scrollx';\n  @Input() @WithConfig() @InputBoolean() nzEnableSwipe: boolean = true;\n  @Input() @WithConfig() @InputBoolean() nzDots: boolean = true;\n  @Input() @WithConfig() @InputBoolean() nzAutoPlay: boolean = false;\n  @Input() @WithConfig() @InputNumber() nzAutoPlaySpeed: number = 3000;\n  @Input() @InputNumber() nzTransitionSpeed = 500;\n\n  /**\n   * this property is passed directly to an NzCarouselBaseStrategy\n   */\n  @Input() nzStrategyOptions: NzSafeAny = undefined;\n\n  @Input()\n  // @ts-ignore\n  @WithConfig()\n  set nzDotPosition(value: NzCarouselDotPosition) {\n    this._dotPosition = value;\n    if (value === 'left' || value === 'right') {\n      this.vertical = true;\n    } else {\n      this.vertical = false;\n    }\n  }\n\n  get nzDotPosition(): NzCarouselDotPosition {\n    return this._dotPosition;\n  }\n\n  private _dotPosition: NzCarouselDotPosition = 'bottom';\n\n  @Output() readonly nzBeforeChange = new EventEmitter<FromToInterface>();\n  @Output() readonly nzAfterChange = new EventEmitter<number>();\n\n  activeIndex = 0;\n  el: HTMLElement;\n  slickListEl!: HTMLElement;\n  slickTrackEl!: HTMLElement;\n  strategy?: NzCarouselBaseStrategy;\n  vertical = false;\n  transitionInProgress: number | null = null;\n  dir: Direction = 'ltr';\n\n  private destroy$ = new Subject<void>();\n  private gestureRect: ClientRect | null = null;\n  private pointerDelta: PointerVector | null = null;\n  private isTransiting = false;\n  private isDragging = false;\n\n  constructor(\n    elementRef: ElementRef,\n    public readonly nzConfigService: NzConfigService,\n    public readonly ngZone: NgZone,\n    private readonly renderer: Renderer2,\n    private readonly cdr: ChangeDetectorRef,\n    private readonly platform: Platform,\n    private readonly resizeService: NzResizeService,\n    private readonly nzDragService: NzDragService,\n    @Optional() private directionality: Directionality,\n    @Optional() @Inject(NZ_CAROUSEL_CUSTOM_STRATEGIES) private customStrategies: NzCarouselStrategyRegistryItem[]\n  ) {\n    this.nzDotPosition = 'bottom';\n\n    this.renderer.addClass(elementRef.nativeElement, 'ant-carousel');\n    this.el = elementRef.nativeElement;\n  }\n  ngOnInit(): void {\n    this.slickListEl = this.slickList!.nativeElement;\n    this.slickTrackEl = this.slickTrack!.nativeElement;\n\n    this.dir = this.directionality.value;\n\n    this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.markContentActive(this.activeIndex);\n      this.cdr.detectChanges();\n    });\n\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent<KeyboardEvent>(this.slickListEl, 'keydown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(event => {\n          const { keyCode } = event;\n\n          if (keyCode !== LEFT_ARROW && keyCode !== RIGHT_ARROW) {\n            return;\n          }\n\n          event.preventDefault();\n\n          this.ngZone.run(() => {\n            if (keyCode === LEFT_ARROW) {\n              this.pre();\n            } else {\n              this.next();\n            }\n            this.cdr.markForCheck();\n          });\n        });\n    });\n  }\n\n  ngAfterContentInit(): void {\n    this.markContentActive(0);\n  }\n\n  ngAfterViewInit(): void {\n    this.carouselContents.changes.subscribe(() => {\n      this.markContentActive(0);\n      this.layout();\n    });\n\n    this.resizeService\n      .subscribe()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.layout();\n      });\n\n    this.switchStrategy();\n    this.markContentActive(0);\n    this.layout();\n\n    // If embedded in an entry component, it may do initial render at an inappropriate time.\n    // ngZone.onStable won't do this trick\n    // TODO: need to change this.\n    Promise.resolve().then(() => {\n      this.layout();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzEffect, nzDotPosition } = changes;\n\n    if (nzEffect && !nzEffect.isFirstChange()) {\n      this.switchStrategy();\n      this.markContentActive(0);\n      this.layout();\n    }\n\n    if (nzDotPosition && !nzDotPosition.isFirstChange()) {\n      this.switchStrategy();\n      this.markContentActive(0);\n      this.layout();\n    }\n\n    if (!this.nzAutoPlay || !this.nzAutoPlaySpeed) {\n      this.clearScheduledTransition();\n    } else {\n      this.scheduleNextTransition();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.clearScheduledTransition();\n    if (this.strategy) {\n      this.strategy.dispose();\n    }\n\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onLiClick = (index: number): void => {\n    if (this.dir === 'rtl') {\n      this.goTo(this.carouselContents.length - 1 - index);\n    } else {\n      this.goTo(index);\n    }\n  };\n\n  next(): void {\n    this.goTo(this.activeIndex + 1);\n  }\n\n  pre(): void {\n    this.goTo(this.activeIndex - 1);\n  }\n\n  goTo(index: number): void {\n    if (this.carouselContents && this.carouselContents.length && !this.isTransiting) {\n      const length = this.carouselContents.length;\n      const from = this.activeIndex;\n      const to = (index + length) % length;\n      this.isTransiting = true;\n      this.nzBeforeChange.emit({ from, to });\n      this.strategy!.switch(this.activeIndex, index).subscribe(() => {\n        this.scheduleNextTransition();\n        this.nzAfterChange.emit(to);\n        this.isTransiting = false;\n      });\n      this.markContentActive(to);\n      this.cdr.markForCheck();\n    }\n  }\n\n  private switchStrategy(): void {\n    if (this.strategy) {\n      this.strategy.dispose();\n    }\n\n    // Load custom strategies first.\n    const customStrategy = this.customStrategies ? this.customStrategies.find(s => s.name === this.nzEffect) : null;\n    if (customStrategy) {\n      this.strategy = new (customStrategy.strategy as NzSafeAny)(this, this.cdr, this.renderer, this.platform);\n      return;\n    }\n\n    this.strategy =\n      this.nzEffect === 'scrollx'\n        ? new NzCarouselTransformStrategy(this, this.cdr, this.renderer, this.platform)\n        : new NzCarouselOpacityStrategy(this, this.cdr, this.renderer, this.platform);\n  }\n\n  private scheduleNextTransition(): void {\n    this.clearScheduledTransition();\n    if (this.nzAutoPlay && this.nzAutoPlaySpeed > 0 && this.platform.isBrowser) {\n      this.transitionInProgress = setTimeout(() => {\n        this.goTo(this.activeIndex + 1);\n      }, this.nzAutoPlaySpeed);\n    }\n  }\n\n  private clearScheduledTransition(): void {\n    if (this.transitionInProgress) {\n      clearTimeout(this.transitionInProgress);\n      this.transitionInProgress = null;\n    }\n  }\n\n  private markContentActive(index: number): void {\n    this.activeIndex = index;\n\n    if (this.carouselContents) {\n      this.carouselContents.forEach((slide, i) => {\n        if (this.dir === 'rtl') {\n          slide.isActive = index === this.carouselContents.length - 1 - i;\n        } else {\n          slide.isActive = index === i;\n        }\n      });\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * Drag carousel.\n   */\n  pointerDown = (event: TouchEvent | MouseEvent): void => {\n    if (!this.isDragging && !this.isTransiting && this.nzEnableSwipe) {\n      this.clearScheduledTransition();\n      this.gestureRect = this.slickListEl.getBoundingClientRect();\n\n      this.nzDragService.requestDraggingSequence(event).subscribe(\n        delta => {\n          this.pointerDelta = delta;\n          this.isDragging = true;\n          this.strategy?.dragging(this.pointerDelta);\n        },\n        () => {},\n        () => {\n          if (this.nzEnableSwipe && this.isDragging) {\n            const xDelta = this.pointerDelta ? this.pointerDelta.x : 0;\n\n            // Switch to another slide if delta is bigger than third of the width.\n            if (Math.abs(xDelta) > this.gestureRect!.width / 3) {\n              this.goTo(xDelta > 0 ? this.activeIndex - 1 : this.activeIndex + 1);\n            } else {\n              this.goTo(this.activeIndex);\n            }\n\n            this.gestureRect = null;\n            this.pointerDelta = null;\n          }\n\n          this.isDragging = false;\n        }\n      );\n    }\n  };\n\n  layout(): void {\n    if (this.strategy) {\n      this.strategy.withCarouselContents(this.carouselContents);\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 { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzCarouselContentDirective } from './carousel-content.directive';\nimport { NzCarouselComponent } from './carousel.component';\n\n@NgModule({\n  declarations: [NzCarouselComponent, NzCarouselContentDirective],\n  exports: [NzCarouselComponent, NzCarouselContentDirective],\n  imports: [BidiModule, CommonModule, PlatformModule]\n})\nexport class NzCarouselModule {}\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 { Platform } from '@angular/cdk/platform';\nimport { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NzCarouselContentDirective } from '../../carousel-content.directive';\nimport { NzCarouselComponentAsSource, PointerVector } from '../../typings';\nimport { NzCarouselBaseStrategy } from '../base-strategy';\n\ninterface NzCarouselTransformOnLoopStrategyOptions {\n  direction: 'left' | 'right';\n}\n\n/**\n * this strategy is very much like NzCarouselTransformStrategy, but it doesn't loop between the first and the last one\n */\nexport class NzCarouselTransformNoLoopStrategy extends NzCarouselBaseStrategy<NzCarouselTransformOnLoopStrategyOptions> {\n  private isTransitioning = false;\n\n  private get vertical(): boolean {\n    return this.carouselComponent!.vertical;\n  }\n\n  constructor(\n    carouselComponent: NzCarouselComponentAsSource,\n    cdr: ChangeDetectorRef,\n    renderer: Renderer2,\n    platform: Platform,\n    options?: NzCarouselTransformOnLoopStrategyOptions\n  ) {\n    super(carouselComponent, cdr, renderer, platform, options);\n  }\n\n  override dispose(): void {\n    this.renderer.setStyle(this.slickTrackEl, 'transform', null);\n\n    super.dispose();\n  }\n\n  override withCarouselContents(contents: QueryList<NzCarouselContentDirective> | null): void {\n    super.withCarouselContents(contents);\n\n    const carousel = this.carouselComponent!;\n    const activeIndex = carousel.activeIndex;\n\n    if (this.platform.isBrowser && this.contents.length) {\n      this.renderer.setStyle(this.slickListEl, 'height', `${this.unitHeight}px`);\n\n      if (this.platform.isBrowser && this.contents.length) {\n        this.renderer.setStyle(this.slickListEl, 'height', `${this.unitHeight}px`);\n\n        if (this.vertical) {\n          this.renderer.setStyle(this.slickTrackEl, 'width', `${this.unitWidth}px`);\n          this.renderer.setStyle(this.slickTrackEl, 'height', `${this.length * this.unitHeight}px`);\n          this.renderer.setStyle(\n            this.slickTrackEl,\n            'transform',\n            `translate3d(0, ${-activeIndex * this.unitHeight}px, 0)`\n          );\n        } else {\n          this.renderer.setStyle(this.slickTrackEl, 'height', `${this.unitHeight}px`);\n          this.renderer.setStyle(this.slickTrackEl, 'width', `${this.length * this.unitWidth}px`);\n          this.renderer.setStyle(\n            this.slickTrackEl,\n            'transform',\n            `translate3d(${-activeIndex * this.unitWidth}px, 0, 0)`\n          );\n        }\n\n        this.contents.forEach((content: NzCarouselContentDirective) => {\n          this.renderer.setStyle(content.el, 'position', 'relative');\n          this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n          this.renderer.setStyle(content.el, 'height', `${this.unitHeight}px`);\n        });\n      }\n    }\n  }\n\n  switch(_f: number, _t: number): Observable<void> {\n    const to = (_t + this.length) % this.length;\n    const transitionSpeed = this.carouselComponent!.nzTransitionSpeed;\n    const complete$ = new Subject<void>();\n\n    this.renderer.setStyle(this.slickTrackEl, 'transition', `transform ${transitionSpeed}ms ease`);\n\n    if (this.vertical) {\n      this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-to * this.unitHeight}px, 0)`);\n    } else {\n      this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-to * this.unitWidth}px, 0, 0)`);\n    }\n\n    this.isTransitioning = true;\n\n    setTimeout(() => {\n      // this strategy don't need to do a following adjust\n      this.isTransitioning = false;\n\n      complete$.next();\n      complete$.complete();\n    }, transitionSpeed);\n\n    return complete$.asObservable();\n  }\n\n  override dragging(vector: PointerVector): void {\n    if (this.isTransitioning) {\n      return;\n    }\n\n    const activeIndex = this.carouselComponent!.activeIndex;\n\n    if (this.vertical) {\n      this.renderer.setStyle(\n        this.slickTrackEl,\n        'transform',\n        `translate3d(0, ${-activeIndex * this.unitHeight + vector.x}px, 0)`\n      );\n    } else {\n      this.renderer.setStyle(\n        this.slickTrackEl,\n        'transform',\n        `translate3d(${-activeIndex * this.unitWidth + vector.x}px, 0, 0)`\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 { QueryList } from '@angular/core';\nimport { Observable, Subject, timer } from 'rxjs';\n\nimport { NzCarouselContentDirective } from '../../carousel-content.directive';\nimport { NzCarouselBaseStrategy } from '../base-strategy';\n\nexport class NzCarouselFlipStrategy extends NzCarouselBaseStrategy {\n  override withCarouselContents(contents: QueryList<NzCarouselContentDirective> | null): void {\n    super.withCarouselContents(contents);\n\n    if (this.contents) {\n      this.renderer.setStyle(this.slickListEl, 'width', `${this.unitWidth}px`);\n      this.renderer.setStyle(this.slickTrackEl, 'width', `${this.length * this.unitWidth}px`);\n\n      this.contents.forEach((content: NzCarouselContentDirective, i: number) => {\n        const cur = this.carouselComponent!.activeIndex === i;\n\n        this.renderer.setStyle(content.el, 'transform', cur ? 'rotateY(0deg)' : 'rotateY(180deg)');\n        this.renderer.setStyle(content.el, 'position', 'relative');\n        this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n        this.renderer.setStyle(content.el, 'left', `${-this.unitWidth * i}px`);\n        this.renderer.setStyle(content.el, 'transform-style', 'preserve-3d');\n        this.renderer.setStyle(content.el, 'backface-visibility', 'hidden');\n      });\n\n      const { carouselComponent } = this;\n      carouselComponent!.ngZone.runOutsideAngular(() => {\n        timer(carouselComponent!.nzTransitionSpeed).subscribe(() => {\n          this.contents.forEach(c => this.renderer.setStyle(c.el, 'transition', ['transform 500ms ease 0s']));\n        });\n      });\n    }\n  }\n\n  switch(rawF: number, rawT: number): Observable<void> {\n    const { from, to } = this.getFromToInBoundary(rawF, rawT);\n    const complete$ = new Subject<void>();\n    const speed = this.carouselComponent!.nzTransitionSpeed;\n\n    timer(speed).subscribe(() => {\n      complete$.next();\n      complete$.complete();\n    });\n\n    if (rawF === rawT) {\n      return complete$;\n    }\n\n    this.contents.forEach((content: NzCarouselContentDirective, i: number) => {\n      if (i === from) {\n        this.renderer.setStyle(content.el, 'transform', 'rotateY(180deg)');\n      } else if (i === to) {\n        this.renderer.setStyle(content.el, 'transform', 'rotateY(0deg)');\n      }\n    });\n\n    return complete$.asObservable();\n  }\n\n  override dispose(): void {\n    this.contents.forEach((content: NzCarouselContentDirective) => {\n      this.renderer.setStyle(content.el, 'transition', null);\n      this.renderer.setStyle(content.el, 'transform', null);\n      this.renderer.setStyle(content.el, 'width', null);\n      this.renderer.setStyle(content.el, 'left', null);\n      this.renderer.setStyle(content.el, 'transform-style', null);\n      this.renderer.setStyle(content.el, 'backface-visibility', null);\n    });\n\n    super.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\nexport * from './carousel.module';\nexport * from './carousel.component';\nexport * from './carousel-content.directive';\nexport * from './typings';\n\nexport * from './strategies/base-strategy';\nexport { NzCarouselOpacityStrategy } from './strategies/opacity-strategy';\nexport { NzCarouselTransformStrategy } from './strategies/transform-strategy';\nexport { NzCarouselTransformNoLoopStrategy } from './strategies/experimental/transform-no-loop-strategy';\nexport { NzCarouselFlipStrategy } from './strategies/experimental/flip-strategy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}