{"version":3,"file":"mdb-angular-ui-kit-carousel.mjs","sources":["../../../projects/mdb-angular-ui-kit/carousel/carousel-item.component.ts","../../../projects/mdb-angular-ui-kit/carousel/carousel.component.ts","../../../projects/mdb-angular-ui-kit/carousel/carousel.component.html","../../../projects/mdb-angular-ui-kit/carousel/carousel.module.ts","../../../projects/mdb-angular-ui-kit/carousel/mdb-angular-ui-kit-carousel.ts"],"sourcesContent":["import { Component, ElementRef, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'mdb-carousel-item',\n  template: '<ng-content></ng-content>',\n  standalone: false,\n})\nexport class MdbCarouselItemComponent {\n  @Input() interval: number | null = null;\n\n  @HostBinding('class.carousel-item')\n  carouselItem = true;\n\n  @HostBinding('class.active') active = false;\n\n  @HostBinding('class.carousel-item-next') next = false;\n  @HostBinding('class.carousel-item-prev') prev = false;\n  @HostBinding('class.carousel-item-start') start = false;\n  @HostBinding('class.carousel-item-end') end = false;\n\n  get host(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  constructor(private _elementRef: ElementRef) {}\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  PLATFORM_ID,\n  QueryList,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { MdbCarouselItemComponent } from './carousel-item.component';\n\nexport enum Direction {\n  UNKNOWN,\n  NEXT,\n  PREV,\n}\n\n@Component({\n  selector: 'mdb-carousel',\n  templateUrl: './carousel.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class MdbCarouselComponent implements AfterViewInit, OnDestroy {\n  @ContentChildren(MdbCarouselItemComponent) _items: QueryList<MdbCarouselItemComponent>;\n  get items(): MdbCarouselItemComponent[] {\n    return this._items && this._items.toArray();\n  }\n\n  @Input() animation: 'slide' | 'fade' = 'slide';\n\n  @Input()\n  get controls(): boolean {\n    return this._controls;\n  }\n  set controls(value: boolean) {\n    this._controls = coerceBooleanProperty(value);\n  }\n  private _controls = false;\n\n  @Input()\n  get dark(): boolean {\n    return this._dark;\n  }\n  set dark(value: boolean) {\n    this._dark = coerceBooleanProperty(value);\n  }\n  private _dark = false;\n\n  @Input()\n  get indicators(): boolean {\n    return this._indicators;\n  }\n  set indicators(value: boolean) {\n    this._indicators = coerceBooleanProperty(value);\n  }\n  private _indicators = false;\n\n  @Input()\n  get ride(): boolean {\n    return this._ride;\n  }\n  set ride(value: boolean) {\n    this._ride = coerceBooleanProperty(value);\n  }\n  private _ride = true;\n\n  @Input()\n  get interval(): number {\n    return this._interval;\n  }\n  set interval(value: number) {\n    this._interval = value;\n\n    if (this.items) {\n      this._restartInterval();\n    }\n  }\n  private _interval = 5000;\n\n  @Input() keyboard = true;\n  @Input() pause = true;\n  @Input() wrap = true;\n\n  @Output() slide: EventEmitter<void> = new EventEmitter();\n  @Output() slideChange: EventEmitter<void> = new EventEmitter();\n\n  get activeSlide(): number {\n    return this._activeSlide;\n  }\n\n  set activeSlide(index: number) {\n    if (this.items.length && this._activeSlide !== index) {\n      this._activeSlide = index;\n      this._restartInterval();\n    }\n  }\n  private _activeSlide = 0;\n\n  private _lastInterval: any;\n  private _isPlaying = false;\n  private _isSliding = false;\n\n  private readonly _destroy$: Subject<void> = new Subject<void>();\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    if (this.pause && this._isPlaying) {\n      this.stop();\n    }\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    if (this.pause && !this._isPlaying) {\n      this.play();\n    }\n  }\n\n  @HostBinding('class.d-block') display = true;\n\n  private _isBrowser: boolean;\n\n  constructor(\n    private _elementRef: ElementRef,\n    private _cdRef: ChangeDetectorRef,\n    @Inject(PLATFORM_ID) platformId: string\n  ) {\n    this._isBrowser = isPlatformBrowser(platformId);\n  }\n\n  ngAfterViewInit(): void {\n    Promise.resolve().then(() => {\n      this._setActiveSlide(this._activeSlide);\n\n      if (this._isBrowser && this.interval > 0 && this.ride) {\n        this.play();\n      }\n      this._cdRef.markForCheck();\n    });\n\n    if (this._isBrowser && this.keyboard) {\n      fromEvent(this._elementRef.nativeElement, 'keydown')\n        .pipe(takeUntil(this._destroy$))\n        .subscribe((event: KeyboardEvent) => {\n          if (event.key === 'ArrowRight') {\n            this.next();\n          } else if (event.key === 'ArrowLeft') {\n            this.prev();\n          }\n        });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._resetInterval();\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  private _setActiveSlide(index: number): void {\n    const currentSlide = this.items[this._activeSlide];\n    currentSlide.active = false;\n    this._syncItemClasses(currentSlide);\n\n    const newSlide = this.items[index];\n    newSlide.active = true;\n    this._syncItemClasses(newSlide);\n    this._activeSlide = index;\n  }\n\n  private _restartInterval(): void {\n    if (!this._isBrowser) {\n      return;\n    }\n\n    this._resetInterval();\n    const activeElement = this.items[this.activeSlide];\n    const interval = activeElement.interval ? activeElement.interval : this.interval;\n\n    if (!isNaN(interval) && interval > 0) {\n      this._lastInterval = setInterval(() => {\n        const nInterval = +interval;\n        if (this._isPlaying && !isNaN(nInterval) && nInterval > 0) {\n          this.next();\n          this._cdRef.markForCheck();\n        } else {\n          this.stop();\n        }\n      }, interval);\n    }\n  }\n\n  private _resetInterval(): void {\n    if (this._lastInterval) {\n      clearInterval(this._lastInterval);\n      this._lastInterval = null;\n    }\n  }\n\n  play(): void {\n    if (!this._isPlaying) {\n      this._isPlaying = true;\n      this._restartInterval();\n    }\n  }\n\n  stop(): void {\n    if (this._isPlaying) {\n      this._isPlaying = false;\n      this._resetInterval();\n    }\n  }\n\n  to(index: number): void {\n    if (index > this.items.length - 1 || index < 0) {\n      return;\n    }\n\n    if (this.activeSlide === index) {\n      this.stop();\n      this.play();\n      return;\n    }\n\n    const direction = index > this.activeSlide ? Direction.NEXT : Direction.PREV;\n\n    this._animateSlides(direction, this.activeSlide, index);\n    this.activeSlide = index;\n  }\n\n  next(): void {\n    if (!this._isSliding) {\n      this._slide(Direction.NEXT);\n    }\n  }\n\n  prev(): void {\n    if (!this._isSliding) {\n      this._slide(Direction.PREV);\n    }\n  }\n\n  private _slide(direction: Direction): void {\n    const isFirst = this._activeSlide === 0;\n    const isLast = this._activeSlide === this.items.length - 1;\n\n    if (!this.wrap) {\n      if ((direction === Direction.NEXT && isLast) || (direction === Direction.PREV && isFirst)) {\n        return;\n      }\n    }\n\n    const newSlideIndex = this._getNewSlideIndex(direction);\n\n    this._animateSlides(direction, this.activeSlide, newSlideIndex);\n    this.activeSlide = newSlideIndex;\n\n    this.slide.emit();\n  }\n\n  private _animateSlides(direction: Direction, currentIndex: number, nextIndex: number): void {\n    const currentItem = this.items[currentIndex];\n    const nextItem = this.items[nextIndex];\n    const currentEl = currentItem.host;\n    const nextEl = nextItem.host;\n\n    this._isSliding = true;\n\n    if (this._isPlaying) {\n      this.stop();\n    }\n\n    if (direction === Direction.NEXT) {\n      nextItem.next = true;\n      this._syncItemClasses(nextItem);\n\n      setTimeout(() => {\n        this._reflow(nextEl);\n        currentItem.start = true;\n        nextItem.start = true;\n        this._syncItemClasses(currentItem);\n        this._syncItemClasses(nextItem);\n        this._cdRef.markForCheck();\n      }, 0);\n\n      const transitionDuration = 600;\n\n      fromEvent(currentEl, 'transitionend')\n        .pipe(take(1))\n        .subscribe(() => {\n          nextItem.next = false;\n          nextItem.start = false;\n          nextItem.active = true;\n\n          currentItem.active = false;\n          currentItem.start = false;\n          currentItem.next = false;\n\n          this._syncItemClasses(currentItem);\n          this._syncItemClasses(nextItem);\n\n          this.slideChange.emit();\n          this._isSliding = false;\n          this._cdRef.markForCheck();\n        });\n\n      this._emulateTransitionEnd(currentEl, transitionDuration);\n    } else if (direction === Direction.PREV) {\n      nextItem.prev = true;\n      this._syncItemClasses(nextItem);\n\n      setTimeout(() => {\n        this._reflow(nextEl);\n        currentItem.end = true;\n        nextItem.end = true;\n        this._syncItemClasses(currentItem);\n        this._syncItemClasses(nextItem);\n        this._cdRef.markForCheck();\n      }, 0);\n\n      const transitionDuration = 600;\n\n      fromEvent(currentEl, 'transitionend')\n        .pipe(take(1))\n        .subscribe(() => {\n          nextItem.prev = false;\n          nextItem.end = false;\n          nextItem.active = true;\n\n          currentItem.active = false;\n          currentItem.end = false;\n          currentItem.prev = false;\n\n          this._syncItemClasses(currentItem);\n          this._syncItemClasses(nextItem);\n\n          this.slideChange.emit();\n          this._isSliding = false;\n          this._cdRef.markForCheck();\n        });\n\n      this._emulateTransitionEnd(currentEl, transitionDuration);\n    }\n\n    if (!this._isPlaying && this.interval > 0) {\n      this.play();\n    }\n  }\n\n  private _reflow(element: HTMLElement): number {\n    return element.offsetHeight;\n  }\n\n  private _emulateTransitionEnd(element: HTMLElement, duration: number): void {\n    let eventEmitted = false;\n    const durationPadding = 5;\n    const emulatedDuration = duration + durationPadding;\n\n    fromEvent(element, 'transitionend')\n      .pipe(take(1))\n      .subscribe(() => {\n        eventEmitted = true;\n      });\n\n    setTimeout(() => {\n      if (!eventEmitted) {\n        element.dispatchEvent(new Event('transitionend'));\n      }\n    }, emulatedDuration);\n  }\n\n  private _getNewSlideIndex(direction: Direction): number {\n    let newSlideIndex: number;\n\n    if (direction === Direction.NEXT) {\n      newSlideIndex = this._getNextSlideIndex();\n    }\n\n    if (direction === Direction.PREV) {\n      newSlideIndex = this._getPrevSlideIndex();\n    }\n\n    return newSlideIndex;\n  }\n\n  private _getNextSlideIndex(): number {\n    const isLast = this._activeSlide === this.items.length - 1;\n\n    if (!isLast) {\n      return this._activeSlide + 1;\n    } else if (this.wrap && isLast) {\n      return 0;\n    } else {\n      return this._activeSlide;\n    }\n  }\n\n  private _getPrevSlideIndex(): number {\n    const isFirst = this._activeSlide === 0;\n\n    if (!isFirst) {\n      return this._activeSlide - 1;\n    } else if (this.wrap && isFirst) {\n      return this.items.length - 1;\n    } else {\n      return this._activeSlide;\n    }\n  }\n\n  private _syncItemClasses(item: MdbCarouselItemComponent): void {\n    const itemHost = item.host;\n    itemHost.classList.toggle('active', item.active);\n    itemHost.classList.toggle('carousel-item-next', item.next);\n    itemHost.classList.toggle('carousel-item-prev', item.prev);\n    itemHost.classList.toggle('carousel-item-start', item.start);\n    itemHost.classList.toggle('carousel-item-end', item.end);\n  }\n\n  static ngAcceptInputType_controls: BooleanInput;\n  static ngAcceptInputType_dark: BooleanInput;\n  static ngAcceptInputType_indicators: BooleanInput;\n  static ngAcceptInputType_ride: BooleanInput;\n}\n","<div\n  class=\"carousel slide\"\n  [class.carousel-fade]=\"animation === 'fade'\"\n  [class.carousel-dark]=\"dark\"\n>\n  @if (indicators) {\n  <div class=\"carousel-indicators\">\n    @for (item of items; track item; let i = $index) {\n    <button\n      type=\"button\"\n      [class.active]=\"i === activeSlide\"\n      [attr.aria-current]=\"i === activeSlide\"\n      (click)=\"to(i)\"\n    ></button>\n    }\n  </div>\n  }\n\n  <div class=\"carousel-inner\">\n    <ng-content></ng-content>\n  </div>\n\n  @if (controls) {\n  <button class=\"carousel-control-prev\" type=\"button\" (click)=\"prev()\">\n    <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n    <span class=\"visually-hidden\">Previous</span>\n  </button>\n  } @if (controls) {\n  <button class=\"carousel-control-next\" type=\"button\" (click)=\"next()\">\n    <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n    <span class=\"visually-hidden\">Next</span>\n  </button>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MdbCarouselComponent } from './carousel.component';\nimport { MdbCarouselItemComponent } from './carousel-item.component';\n\n@NgModule({\n  declarations: [MdbCarouselComponent, MdbCarouselItemComponent],\n  exports: [MdbCarouselComponent, MdbCarouselItemComponent],\n  imports: [CommonModule],\n})\nexport class MdbCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}