{"version":3,"file":"magloft-material-carousel.mjs","sources":["../../../projects/carousel/src/lib/carousel-slide/carousel-slide.component.ts","../../../projects/carousel/src/lib/carousel-slide/carousel-slide.component.html","../../../projects/carousel/src/lib/carousel.component.ts","../../../projects/carousel/src/lib/carousel.component.html","../../../projects/carousel/src/lib/carousel.module.ts","../../../projects/carousel/src/public_api.ts","../../../projects/carousel/src/magloft-material-carousel.ts"],"sourcesContent":["import { ListKeyManagerOption } from '@angular/cdk/a11y'\nimport {\n  Component,\n  Input,\n  OnInit,\n  TemplateRef,\n  ViewChild\n} from '@angular/core'\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser'\n\nimport { MatCarouselSlide } from './carousel-slide'\n\n@Component({\n  selector: 'mat-carousel-slide',\n  templateUrl: './carousel-slide.component.html',\n  styleUrls: ['./carousel-slide.component.scss']\n})\nexport class MatCarouselSlideComponent\n  implements ListKeyManagerOption, MatCarouselSlide, OnInit {\n  @Input() public image: SafeStyle\n  @Input() public overlayColor = '#00000040'\n  @Input() public hideOverlay = false\n  @Input() public disabled = false // implements ListKeyManagerOption\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @ViewChild(TemplateRef) public templateRef: TemplateRef<any>\n\n  constructor(public sanitizer: DomSanitizer) {\n  }\n\n  public ngOnInit(): void {\n    if (this.image) {\n      this.image = this.sanitizer.bypassSecurityTrustStyle(`url(\"${this.image}\")`)\n    }\n  }\n}\n","<ng-template>\n  <div class=\"carousel-slide\" [style.background-image]=\"image\">\n    <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n    <div\n      *ngIf=\"!hideOverlay\"\n      class=\"carousel-slide-overlay\"\n      [style.background-color]=\"overlayColor\"\n    ></div>\n  </div>\n</ng-template>\n","import { animate, AnimationBuilder, style } from '@angular/animations'\nimport { ListKeyManager } from '@angular/cdk/a11y'\nimport { isPlatformBrowser } from '@angular/common'\nimport type { ElementRef, QueryList } from '@angular/core'\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  PLATFORM_ID,\n  Renderer2,\n  ViewChild\n} from '@angular/core'\nimport { ThemePalette } from '@angular/material/core'\nimport { BehaviorSubject, interval, Observable, Subject } from 'rxjs'\nimport { filter, takeUntil } from 'rxjs/operators'\nimport { MatCarousel, Orientation, SvgIconOverrides } from './carousel'\nimport { MatCarouselSlideComponent } from './carousel-slide/carousel-slide.component'\n\nenum Direction { Left, Right, Index }\n\n@Component({ selector: 'mat-carousel', templateUrl: './carousel.component.html', styleUrls: ['./carousel.component.scss'] })\nexport class MatCarouselComponent\n  implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {\n  @Input() public timings = '250ms ease-in'\n  @Input() public svgIconOverrides: SvgIconOverrides\n\n  @Input()\n  public set autoplay(value: boolean) {\n    this.autoplay$.next(value)\n    this._autoplay = value\n  }\n\n  @Input()\n  public set interval(value: number) {\n    this.interval$.next(value)\n  }\n\n  public get loop(): boolean {\n    return this._loop\n  }\n  @Input()\n  public set loop(value: boolean) {\n    this.loop$.next(value)\n    this._loop = value\n  }\n\n  @Input() public hideArrows = true\n  @Input() public hideIndicators = true\n  @Input() public pauseOnHover = true\n  @Input() public color: ThemePalette = 'accent'\n\n  public get maxWidth(): string {\n    return this._maxWidth\n  }\n  @Input()\n  public set maxWidth(value: string) {\n    this._maxWidth = value\n    this.maxWidth$.next(undefined)\n  }\n\n  @Input() public maintainAspectRatio = true\n  @Input() public proportion = 25\n  @Input() public slideHeight = '100%'\n\n  @Input()\n  public set slides(value: number) {\n    this.slides$.next(value)\n  }\n\n  @Input() public useKeyboard = false\n  @Input() public useMouseWheel = false\n\n  public get orientation(): Orientation {\n    return this._orientation\n  }\n  @Input()\n  public set orientation(value: Orientation) {\n    this.orientation$.next(value)\n    this._orientation = value\n  }\n\n  @Output()\n  public animationStart: EventEmitter<number> = new EventEmitter<number>()\n\n  @Output()\n  public change: EventEmitter<number> = new EventEmitter<number>()\n\n  public get currentIndex(): number {\n    if (this.listKeyManager) {\n      return this.listKeyManager.activeItemIndex\n    }\n\n    return 0\n  }\n  public get currentSlide(): MatCarouselSlideComponent {\n    if (this.listKeyManager) {\n      return this.listKeyManager.activeItem\n    }\n\n    return null\n  }\n\n  @ContentChildren(MatCarouselSlideComponent) public slidesList: QueryList<\n    MatCarouselSlideComponent\n  >\n  @ViewChild('carouselContainer') private carouselContainer: ElementRef<\n    HTMLDivElement\n  >\n  @ViewChild('carouselList') private carouselList: ElementRef<HTMLElement>\n  public listKeyManager: ListKeyManager<MatCarouselSlideComponent>\n\n  private _autoplay = true\n  private autoplay$ = new Subject<boolean>()\n\n  private interval$ = new BehaviorSubject<number>(5000)\n  private slides$ = new BehaviorSubject<number>(null)\n\n  private _maxWidth = 'auto'\n  private maxWidth$ = new Subject<undefined>()\n\n  private _loop = true\n  private loop$ = new Subject<boolean>()\n\n  private _orientation: Orientation = 'ltr'\n  private orientation$ = new Subject<Orientation>()\n\n  private timer$: Observable<number>\n  private timerStop$ = new Subject<undefined>()\n\n  private destroy$ = new Subject<undefined>()\n  private playing = false\n\n  constructor(\n    private animationBuilder: AnimationBuilder,\n    private renderer: Renderer2,\n    private cdr: ChangeDetectorRef,\n    @Inject(PLATFORM_ID) private platformId\n  ) { }\n\n  public ngAfterContentInit(): void {\n    this.listKeyManager = new ListKeyManager(this.slidesList)\n      .withVerticalOrientation(false)\n      .withHorizontalOrientation(this._orientation)\n      .withWrap(this._loop)\n\n    this.listKeyManager.updateActiveItem(0)\n    this.listKeyManager.change\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.playAnimation())\n  }\n\n  public ngAfterViewInit(): void {\n    this.autoplay$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n      this.stopTimer()\n      this.startTimer(value)\n    })\n\n    this.interval$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n      this.stopTimer()\n      this.resetTimer(value)\n      this.startTimer(this._autoplay)\n    })\n\n    this.maxWidth$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.slideTo(0))\n\n    this.loop$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(value => this.listKeyManager.withWrap(value))\n\n    this.orientation$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(value => this.listKeyManager.withHorizontalOrientation(value))\n\n    this.slides$\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(value => value && value < this.slidesList.length)\n      )\n      .subscribe(value => this.resetSlides(value))\n\n    this.cdr.detectChanges()\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy$.next(undefined)\n    this.destroy$.complete()\n  }\n\n  public next(): void {\n    this.goto(Direction.Right)\n  }\n\n  public previous(): void {\n    this.goto(Direction.Left)\n  }\n\n  public slideTo(index: number): void {\n    this.goto(Direction.Index, index)\n  }\n\n  @HostListener('keyup', ['$event'])\n  public onKeyUp(event: KeyboardEvent): void {\n    if (this.useKeyboard && !this.playing) {\n      this.listKeyManager.onKeydown(event)\n    }\n  }\n\n  @HostListener('mouseenter')\n  public onMouseEnter(): void {\n    if (this.pauseOnHover) {\n      this.stopTimer()\n    }\n  }\n\n  @HostListener('mouseleave')\n  public onMouseLeave(): void {\n    if (this.pauseOnHover) {\n      this.startTimer(this._autoplay)\n    }\n  }\n\n  @HostListener('mousewheel', ['$event'])\n  public onMouseWheel(event: WheelEvent): void {\n    if (this.useMouseWheel) {\n      event.preventDefault() // prevent window to scroll\n      const Δ = Math.sign(event.deltaY)\n\n      if (Δ > 0) {\n        this.next()\n      } else if (Δ < 0) {\n        this.previous()\n      }\n    }\n  }\n\n  @HostListener('window:resize', ['$event'])\n  public onResize(): void {\n    // Reset carousel when window is resized\n    // in order to avoid major glitches.\n    this.slideTo(0)\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public onPan(event: any, slideElem: HTMLElement): void {\n    // https://github.com/angular/angular/issues/10541#issuecomment-346539242\n    // if y velocity is greater, it's a panup/pandown, so ignore.\n    if (Math.abs(event.velocityY) > Math.abs(event.velocityX)) {\n      return\n    }\n    let Δx = event.deltaX\n    if (this.isOutOfBounds()) {\n      Δx *= 0.2 // decelerate movement;\n    }\n\n    this.renderer.setStyle(slideElem, 'cursor', 'grabbing')\n    this.renderer.setStyle(\n      this.carouselList.nativeElement,\n      'transform',\n      this.getTranslation(this.getOffset() + Δx)\n    )\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public onPanEnd(event: any, slideElem: HTMLElement): void {\n    this.renderer.removeStyle(slideElem, 'cursor')\n\n    if (\n      !this.isOutOfBounds() &&\n      Math.abs(event.deltaX) > this.getWidth() * 0.25\n    ) {\n      if (event.deltaX <= 0) {\n        this.next()\n        return\n      }\n      this.previous()\n      return\n    }\n    this.playAnimation() // slide back, don't change current index\n  }\n\n  private isOutOfBounds(): boolean {\n    const sign = this.orientation === 'rtl' ? -1 : 1\n    const left =\n      sign *\n      (this.carouselList.nativeElement.getBoundingClientRect().left -\n        this.carouselList.nativeElement.offsetParent.getBoundingClientRect()\n          .left)\n    const lastIndex = this.slidesList.length - 1\n    const width = -this.getWidth() * lastIndex\n\n    return (\n      (this.listKeyManager.activeItemIndex === 0 && left >= 0) ||\n      (this.listKeyManager.activeItemIndex === lastIndex && left <= width)\n    )\n  }\n\n  private isVisible(): boolean {\n    if (!isPlatformBrowser(this.platformId)) {\n      return false\n    }\n\n    const elem = this.carouselContainer.nativeElement\n    const docViewTop = window.pageYOffset\n    const docViewBottom = docViewTop + window.innerHeight\n    const elemOffset = elem.getBoundingClientRect()\n    const elemTop = docViewTop + elemOffset.top\n    const elemBottom = elemTop + elemOffset.height\n\n    return elemBottom <= docViewBottom || elemTop >= docViewTop\n  }\n\n  private getOffset(): number {\n    const offset = this.listKeyManager.activeItemIndex * this.getWidth()\n    const sign = this.orientation === 'rtl' ? 1 : -1\n    return sign * offset\n  }\n\n  private getTranslation(offset: number): string {\n    return `translateX(${offset}px)`\n  }\n\n  private getWidth(): number {\n    return this.carouselContainer.nativeElement.clientWidth\n  }\n\n  private goto(direction: Direction, index?: number): void {\n    if (!this.playing) {\n      const rtl = this.orientation === 'rtl'\n\n      switch (direction) {\n        case Direction.Left:\n          return rtl\n            ? this.listKeyManager.setNextItemActive()\n            : this.listKeyManager.setPreviousItemActive()\n        case Direction.Right:\n          return rtl\n            ? this.listKeyManager.setPreviousItemActive()\n            : this.listKeyManager.setNextItemActive()\n        case Direction.Index:\n          return this.listKeyManager.setActiveItem(index)\n      }\n    }\n  }\n\n  private playAnimation(): void {\n    const translation = this.getTranslation(this.getOffset())\n    const factory = this.animationBuilder.build(\n      animate(this.timings, style({ transform: translation }))\n    )\n    const animation = factory.create(this.carouselList.nativeElement)\n\n    animation.onStart(() => {\n      this.playing = true\n      this.animationStart.emit(this.currentIndex)\n    })\n    animation.onDone(() => {\n      this.change.emit(this.currentIndex)\n      this.playing = false\n      this.renderer.setStyle(\n        this.carouselList.nativeElement,\n        'transform',\n        translation\n      )\n      animation.destroy()\n    })\n    animation.play()\n  }\n\n  private resetSlides(slides: number): void {\n    this.slidesList.reset(this.slidesList.toArray().slice(0, slides))\n  }\n\n  private resetTimer(value: number): void {\n    this.timer$ = interval(value)\n  }\n\n  private startTimer(autoplay: boolean): void {\n    if (!autoplay) {\n      return\n    }\n\n    this.timer$\n      .pipe(\n        takeUntil(this.timerStop$),\n        takeUntil(this.destroy$),\n        filter(() => this.isVisible())\n      )\n      .subscribe(() => {\n        this.listKeyManager.withWrap(true).setNextItemActive()\n        this.listKeyManager.withWrap(this.loop)\n      })\n  }\n\n  private stopTimer(): void {\n    this.timerStop$.next(undefined)\n  }\n}\n","<div\n  #carouselContainer\n  class=\"carousel\"\n  tabindex=\"0\"\n  [style.max-width]=\"maxWidth\"\n  [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n>\n  <ul\n    #carouselList\n    class=\"carousel-list\"\n    role=\"listbox\"\n    [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n    [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n  >\n    <li\n      #carouselSlide\n      *ngFor=\"let slide of slidesList\"\n      class=\"carousel-slide\"\n      role=\"option\"\n      [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n      [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n      (panleft)=\"onPan($event, carouselSlide)\"\n      (panright)=\"onPan($event, carouselSlide)\"\n      (panend)=\"onPanEnd($event, carouselSlide)\"\n      (pancancel)=\"onPanEnd($event, carouselSlide)\"\n    >\n      <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n    </li>\n  </ul>\n\n  <button\n    *ngIf=\"!hideArrows\"\n    mat-icon-button\n    type=\"button\"\n    tabindex=\"-1\"\n    [color]=\"color\"\n    [disabled]=\"!loop && currentIndex == 0\"\n    (click)=\"previous()\"\n  >\n    <mat-icon\n      *ngIf=\"svgIconOverrides?.arrowBack; else: defaultArrowBack\"\n      [svgIcon]=\"svgIconOverrides.arrowBack\"\n    ></mat-icon>\n    <ng-template #defaultArrowBack>\n      <mat-icon>arrow_back</mat-icon>\n    </ng-template>\n  </button>\n  <button\n    *ngIf=\"!hideArrows\"\n    mat-icon-button\n    type=\"button\"\n    tabindex=\"-1\"\n    [color]=\"color\"\n    [disabled]=\"!loop && currentIndex == slidesList.length - 1\"\n    (click)=\"next()\"\n  >\n    <mat-icon\n      *ngIf=\"svgIconOverrides?.arrowForward; else: defaultArrowForward\"\n      [svgIcon]=\"svgIconOverrides.arrowForward\"\n    ></mat-icon>\n    <ng-template #defaultArrowForward>\n      <mat-icon>arrow_forward</mat-icon>\n    </ng-template>\n  </button>\n\n  <div\n    *ngIf=\"!hideIndicators\"\n    class=\"carousel-indicators\"\n    tabindex=\"-1\"\n    [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n  >\n    <button\n      *ngFor=\"let slide of slidesList; let i = index\"\n      type=\"button\"\n      tabindex=\"-1\"\n      mat-mini-fab\n      [color]=\"color\"\n      [disabled]=\"i == currentIndex\"\n      (click)=\"slideTo(i)\"\n      (focus)=\"carouselContainer.focus()\"\n    ></button>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { Injectable, ModuleWithProviders, NgModule } from '@angular/core'\nimport { MatButtonModule } from '@angular/material/button'\nimport { MatIconModule } from '@angular/material/icon'\nimport { HammerGestureConfig, HammerModule, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser'\nimport { MatCarouselSlideComponent } from './carousel-slide/carousel-slide.component'\nimport { MatCarouselComponent } from './carousel.component'\n\n@Injectable()\nexport class MatCarouselHammerConfig extends HammerGestureConfig {\n  overrides = {\n    pinch: { enable: false },\n    rotate: { enable: false }\n  }\n}\n\n@NgModule({\n  declarations: [MatCarouselComponent, MatCarouselSlideComponent],\n  imports: [CommonModule, MatButtonModule, MatIconModule, HammerModule],\n  exports: [MatCarouselComponent, MatCarouselSlideComponent]\n})\nexport class MatCarouselModule {\n  static forRoot(): ModuleWithProviders<MatCarouselModule> {\n    return {\n      ngModule: MatCarouselModule,\n      providers: [\n        { provide: HAMMER_GESTURE_CONFIG, useClass: MatCarouselHammerConfig }\n      ]\n    }\n  }\n}\n","/*\n * Public API Surface of mat-carousel\n */\n\nexport * from './lib/carousel.component'\nexport * from './lib/carousel.module'\nexport * from './lib/carousel'\n\nexport * from './lib/carousel-slide/carousel-slide.component'\nexport * from './lib/carousel-slide/carousel-slide'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}