{"version":3,"file":"ngx-full-carousel.mjs","sources":["../../../projects/ngx-full-carousel/src/lib/directives/slide-for-directive.ts","../../../projects/ngx-full-carousel/src/lib/accessibility.translations.ts","../../../projects/ngx-full-carousel/src/lib/ngx-full-carousel.ts","../../../projects/ngx-full-carousel/src/lib/ngx-full-carousel.html","../../../projects/ngx-full-carousel/src/public-api.ts","../../../projects/ngx-full-carousel/src/ngx-full-carousel.ts"],"sourcesContent":["import { Directive, inject, input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: 'ng-template[slideFor]'\r\n})\r\nexport class SlideForDirective {\r\n  template = inject(TemplateRef<any>);\r\n  slideFor = input<number>(0);\r\n}","import { AccessibilityOptions } from './ngx-full-carousel';\r\n\r\nexport const accessibilityTranslations: Record<string, AccessibilityOptions> = {\r\n    en: {\r\n        autoplayPauseLabel: 'Pause carousel autoplay',\r\n        autoplayPlayLabel: 'Resume carousel autoplay',\r\n        hostAriaLabel: 'Main carousel',\r\n        prevBtnAriaLabel: 'Go to previous slide',\r\n        nextBtnAriaLabel: 'Go to next slide',\r\n        slidesRegionAriaLabel: 'Wide carousel',\r\n        slidesRegionRoleDescription: 'Carousel',\r\n        slideAriaLabel: (currentSlide: number, total: number) =>\r\n            `Slide ${currentSlide} of ${total}`,\r\n        slideRoleDescription: 'slide',\r\n    },\r\n    es: {\r\n        autoplayPauseLabel: 'Pausar la reproducción automática del carrusel',\r\n        autoplayPlayLabel: 'Reanudar la reproducción automática del carrusel',\r\n        hostAriaLabel: 'Carrusel principal',\r\n        prevBtnAriaLabel: 'Ir a la diapositiva anterior',\r\n        nextBtnAriaLabel: 'Ir a la diapositiva siguiente',\r\n        slidesRegionAriaLabel: 'Carrusel amplio',\r\n        slidesRegionRoleDescription: 'carrusel',\r\n        slideAriaLabel: (currentSlide: number, total: number) =>\r\n            `Diapositiva ${currentSlide} de ${total}`,\r\n        slideRoleDescription: 'diapositiva',\r\n    },\r\n    fr: {\r\n        autoplayPauseLabel: 'Mettre en pause la lecture automatique du carrousel',\r\n        autoplayPlayLabel: 'Reprendre la lecture automatique du carrousel',\r\n        hostAriaLabel: 'Carrousel principal',\r\n        prevBtnAriaLabel: 'Aller à la diapositive précédente',\r\n        nextBtnAriaLabel: 'Aller à la diapositive suivante',\r\n        slidesRegionAriaLabel: 'Carrousel large',\r\n        slidesRegionRoleDescription: 'carrousel',\r\n        slideAriaLabel: (currentSlide: number, total: number) =>\r\n            `Diapositive ${currentSlide} sur ${total}`,\r\n        slideRoleDescription: 'diapositive',\r\n    },\r\n    de: {\r\n        autoplayPauseLabel: 'Automatische Wiedergabe des Karussells pausieren',\r\n        autoplayPlayLabel: 'Automatische Wiedergabe des Karussells fortsetzen',\r\n        hostAriaLabel: 'Hauptkarussell',\r\n        prevBtnAriaLabel: 'Zur vorherigen Folie gehen',\r\n        nextBtnAriaLabel: 'Zur nächsten Folie gehen',\r\n        slidesRegionAriaLabel: 'Breites Karussell',\r\n        slidesRegionRoleDescription: 'Karussell',\r\n        slideAriaLabel: (currentSlide: number, total: number) =>\r\n            `Folie ${currentSlide} von ${total}`,\r\n        slideRoleDescription: 'Folie',\r\n    },\r\n    it: {\r\n        autoplayPauseLabel: 'Metti in pausa la riproduzione automatica del carosello',\r\n        autoplayPlayLabel: 'Riprendi la riproduzione automatica del carosello',\r\n        hostAriaLabel: 'Carosello principale',\r\n        prevBtnAriaLabel: 'Vai alla diapositiva precedente',\r\n        nextBtnAriaLabel: 'Vai alla diapositiva successiva',\r\n        slidesRegionAriaLabel: 'Carosello ampio',\r\n        slidesRegionRoleDescription: 'carosello',\r\n        slideAriaLabel: (currentSlide: number, total: number) =>\r\n            `Diapositiva ${currentSlide} di ${total}`,\r\n        slideRoleDescription: 'diapositiva',\r\n    },\r\n};","import { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, effect, ElementRef, HostBinding, HostListener, inject, input, OnInit, output, QueryList, Renderer2, signal, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { SlideForDirective } from './directives/slide-for-directive';\r\nimport { accessibilityTranslations } from './accessibility.translations';\r\n\r\nexport interface CarouselItem {\r\n  image_url?: string;\r\n  backgroundColor?: string;\r\n  title?: string;\r\n  subtitle?: string;\r\n};\r\n\r\nexport interface AccessibilityOptions {\r\n  hostAriaLabel?: string;\r\n  autoplayPauseLabel?: string;\r\n  autoplayPlayLabel?: string;\r\n  prevBtnAriaLabel?: string;\r\n  nextBtnAriaLabel?: string;\r\n  slidesRegionAriaLabel?: string;\r\n  slidesRegionRoleDescription?: string;\r\n  slideAriaLabel?: (currentSlide: number, total: number) => string;\r\n  slideRoleDescription?: string;\r\n};\r\n\r\n@Component({\r\n  selector: 'ngx-full-carousel',\r\n  imports: [ NgTemplateOutlet, CommonModule],\r\n  templateUrl: './ngx-full-carousel.html',\r\n  styleUrl: './ngx-full-carousel.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgxFullCarousel implements OnInit, AfterViewInit {\r\n\r\n  /** ---------- INJECTIONS ---------- */\r\n\r\n  private el = inject(ElementRef);\r\n  private renderer = inject(Renderer2);\r\n\r\n  /** ---------- INPUTS ---------- */\r\n\r\n  slides = input<CarouselItem[]>([]);\r\n\r\n  /** STYLE INPUTS */\r\n\r\n  hasOverlay = input<boolean>(true);\r\n  transitionTime = input<number>(800);\r\n  arrowsPlacement = input<'up' | 'down' | 'auto'>('auto');\r\n  indicators = input< 'bars' |'circles' | 'none' >('bars');\r\n  hasCounter = input<boolean>(false);\r\n\r\n  /** AUTOPLAY INPUTS */\r\n  hasAutoplay = input<boolean>(true);\r\n  autoplayTime = input<number>(7000);\r\n  autoplayResumeTime = input<number>(15000);\r\n\r\n\r\n  /** ACCESIBILITY INPUTS */\r\n\r\n  lang = input<'en' | 'es' | 'fr' | 'de' | 'it'>('en');\r\n  accessibilityOptions = input<AccessibilityOptions |null>(null);\r\n\r\n  /** ---------- OUTPUTS ---------- */\r\n\r\n  selected = output<number>();\r\n\r\n  /** ---------- SIGNALS ---------- */\r\n\r\n  protected currentSlide = signal<number>(0);\r\n  protected carouselId = signal<string | null>(null);\r\n\r\n  protected prev = signal<number>(this.slides().length - 1);\r\n\r\n  private isChangingSlide = signal<boolean>(false);\r\n  protected isPlaying = signal<boolean>(true);\r\n  private isStopped = signal<boolean>(false);\r\n  \r\n  private slideWidth = signal<number>(0);\r\n\r\n  private autoplayTimer = signal<number>(0);\r\n  private resumeTimer = signal<number>(0);\r\n\r\n  protected acc = signal<AccessibilityOptions>(accessibilityTranslations['en']);\r\n\r\n  /** ---------- VIEW CHILDREN ---------- */\r\n\r\n  @ViewChildren('indicatorBtn') indicatorBtn!: QueryList<ElementRef<HTMLElement>>;\r\n  @ViewChild('indicatorsContainer') indicatorsContainer!: ElementRef<HTMLButtonElement>;\r\n  @ViewChildren('slide') slidesElements!: QueryList<ElementRef<HTMLElement>>;\r\n  @ViewChildren('slideCustomContent') slideCustomContent!: QueryList<ElementRef<HTMLElement>>;\r\n  @ContentChildren(SlideForDirective) slideTemplates!: QueryList<SlideForDirective>;\r\n  @ContentChild('outerContent') outerContent!: TemplateRef<any>;\r\n  @ViewChild('prevBtn', { static: true }) prevBtn!: ElementRef<HTMLButtonElement>;\r\n  @ViewChild('nextBtn', { static: true }) nextBtn!: ElementRef<HTMLButtonElement>;\r\n\r\n  /** ---------- HOST BINDING / HOST LISTENERS ---------- */\r\n\r\n  @HostBinding('class.user-is-tabbing') userIsTabbing = false;\r\n\r\n  @HostListener('window:resize')\r\n  onResize(){\r\n    this.calculateSlideWidth();\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  handleGlobalKeydown(event: KeyboardEvent) {\r\n    \r\n    if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n      event.preventDefault();\r\n      if (event.key === 'ArrowLeft') {\r\n        this.prevSlide();\r\n        this.prevBtn.nativeElement.focus();\r\n      };\r\n      if (event.key === 'ArrowRight') {\r\n        this.nextSlide();\r\n        this.nextBtn.nativeElement.focus();\r\n      };\r\n    }\r\n    if (event.key === 'Tab') {\r\n      this.userIsTabbing = true;\r\n    }\r\n  }\r\n\r\n\r\n  @HostListener('window:touchstart')\r\n  onTouchStart() {\r\n    this.userIsTabbing = false;\r\n  }\r\n\r\n  /** ---------- LIFE CYCLE---------- */\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      const selectedSlide = this.currentSlide();\r\n      this.selected.emit(selectedSlide);\r\n    });\r\n\r\n    effect(() => {\r\n      this.setAccOptions();\r\n      this.setGlobalAriaLabel();\r\n    });\r\n  };\r\n\r\n  ngOnInit(): void {\r\n    if(this.hasAutoplay()) this.autoplay();\r\n\r\n    this.carouselId.set(`carousel-${Math.random().toString(36).slice(2,9)}`);\r\n\r\n    this.setAccOptions();\r\n  };\r\n\r\n  ngAfterViewInit(): void {\r\n\r\n    this.setTransitionVariable();\r\n    this.setGlobalAriaLabel();\r\n\r\n    this.calculateSlideWidth();\r\n    this.setSelectorInScroll();\r\n\r\n    document.addEventListener('visibilitychange', () => {\r\n      if (document.visibilityState === 'visible') {\r\n        this.setSelectorInScroll();\r\n      }\r\n    });\r\n  };\r\n\r\n  /** ---------- METHODS --------- */\r\n\r\n  // Gets custom content for every slide set in ng-template\r\n  protected getChildren(index: number) {\r\n    return this.slideTemplates.find(t => t.slideFor() === index)?.template ?? null;\r\n  }\r\n\r\n  /**  AUTOPLAY METHODS  */\r\n\r\n  protected toggleAutoplay(){\r\n    if(this.isPlaying()){\r\n      this.stopAutoplay();\r\n    }else{\r\n      this.isStopped.set(false);\r\n      this.autoplay();\r\n    }\r\n  }\r\n\r\n  private stopAutoplay (){\r\n    clearTimeout(this.autoplayTimer());\r\n    clearTimeout(this.resumeTimer());\r\n    this.isPlaying.set(false);\r\n    this.isStopped.set(true);\r\n  }\r\n\r\n  protected resetAutoplay() {\r\n    if (this.hasAutoplay() && !this.isStopped()) {\r\n      clearTimeout(this.autoplayTimer());\r\n      clearTimeout(this.resumeTimer());\r\n      this.isPlaying.set(false);\r\n      \r\n      this.resumeTimer.set(setTimeout(() => this.autoplay(), this.autoplayResumeTime()));\r\n\r\n    }\r\n  };\r\n\r\n  private autoplay() {\r\n    if(this.isStopped()) return;\r\n    clearTimeout(this.autoplayTimer());\r\n    this.autoplayTimer.set(\r\n      setTimeout(() => {\r\n        this.goToSlide((this.currentSlide() + 1) % this.slides().length);\r\n        this.setSelectorInScroll();\r\n        this.autoplay();\r\n      }, this.autoplayTime())\r\n    );\r\n    this.isPlaying.set(true);\r\n  };\r\n\r\n  /** NAVIGATION METHODS  */\r\n\r\n  liveRegionText = signal<string>('');\r\n\r\n  protected goToSlide(index: number) {\r\n    if (this.isChangingSlide()) return;\r\n\r\n    const slides = this.slides();\r\n    if (!slides || slides.length === 0) return;\r\n    // Limitar el índice al rango válido\r\n    const clamped = Math.max(0, Math.min(index, slides.length - 1));\r\n    // Si no cambia, no hacemos nada\r\n    if (clamped === this.currentSlide()) return;\r\n\r\n    this.isChangingSlide.set(true);\r\n    this.resetAutoplay();\r\n    this.prev.set(this.currentSlide());\r\n\r\n    this.currentSlide.set(clamped);\r\n    this.setSelectorInScroll();\r\n\r\n    const slideData = slides[clamped];\r\n    const slideNumber = clamped + 1;\r\n    const totalSlides = slides.length;\r\n    this.liveRegionText.set(\r\n      `Slide ${slideNumber} of ${totalSlides}. ${slideData.title || ''} ${slideData.subtitle || ''}`.trim()\r\n    );\r\n\r\n    const newSlideEl = this.slidesElements.toArray()[clamped]?.nativeElement;\r\n\r\n    if (this.transitionTime() === 0) {\r\n      // No hay transición → desbloqueo inmediato\r\n      this.isChangingSlide.set(false);\r\n    } else if (newSlideEl) {\r\n      const onEnd = () => {\r\n        newSlideEl.removeEventListener('transitionend', onEnd);\r\n        this.isChangingSlide.set(false);\r\n      };\r\n      newSlideEl.addEventListener('transitionend', onEnd);\r\n    } else {\r\n      // fallback de seguridad\r\n      setTimeout(() => this.isChangingSlide.set(false), this.transitionTime());\r\n    }\r\n    \r\n  };\r\n\r\n  protected nextSlide() {\r\n    this.goToSlide((this.currentSlide() + 1) % this.slides().length);\r\n  }\r\n\r\n  protected prevSlide() {\r\n    if(this.currentSlide() === 0){\r\n      this.goToSlide(this.slides().length - 1);\r\n    }else{\r\n      this.goToSlide(this.currentSlide() - 1);\r\n    }\r\n    \r\n  }\r\n\r\n  private setSelectorInScroll() {\r\n\r\n    setTimeout(() => {\r\n      const clamped = this.currentSlide();\r\n      const activeButton = this.indicatorBtn.toArray()[clamped];\r\n\r\n      if (activeButton) {\r\n        const container = this.indicatorsContainer.nativeElement; // referencia al div padre de los botones\r\n        const active = activeButton.nativeElement;\r\n\r\n        const offsetLeft = active.offsetLeft;\r\n        const offsetWidth = active.offsetWidth;\r\n        // Calculamos posición para centrar el botón en el contenedor\r\n        const scrollPos = offsetLeft - (this.slideWidth() / 2) + (offsetWidth / 2);\r\n\r\n        container.scrollTo({\r\n          left: scrollPos,\r\n          behavior: 'smooth'\r\n        });\r\n      }\r\n    }, this.transitionTime());\r\n  }\r\n\r\n  private touchStartX = 0;\r\n  private startedOnIndicators = false;\r\n\r\n  protected onUserDragStart(event: TouchEvent) {\r\n    // si ya estamos en transición, ignoramos\r\n    if (this.isChangingSlide()) return;\r\n\r\n    // Detectar si el touch empezó en los selectores (robusto)\r\n    const target = event.target as HTMLElement;\r\n    this.startedOnIndicators = !!target.closest('.carousel__indicators');\r\n\r\n    // Pausar autoplay para evitar que salte mientras se arrastra\r\n    clearTimeout(this.autoplayTimer());\r\n    this.touchStartX = event.touches[0].clientX;\r\n\r\n    // No propagar para evitar conflictos con otros handlers\r\n    event.stopPropagation();\r\n  }\r\n\r\n  protected onUserDragEnd(event: TouchEvent) {\r\n    // Si estabamos en transición, ignoramos y reseteamos flag\r\n    if (this.isChangingSlide()) {\r\n      this.startedOnIndicators = false;\r\n      return;\r\n    }\r\n\r\n    // Si el touch empezó en los selectores, no lo consideramos un swipe del carousel\r\n    if (this.startedOnIndicators) {\r\n      this.startedOnIndicators = false; // reset\r\n      return;\r\n    }\r\n\r\n    const touchEndX = event.changedTouches[0].clientX;\r\n    const deltaX = touchEndX - this.touchStartX;\r\n\r\n    // pequeño umbral para considerar swipe\r\n    const THRESHOLD = 50;\r\n\r\n    event.stopPropagation();\r\n\r\n    if (Math.abs(deltaX) > THRESHOLD) {\r\n      // evitar que el touch genere un click fantasma en algunos browsers\r\n      event.preventDefault();\r\n\r\n      if (deltaX > 0) {\r\n        // swipe right -> anterior\r\n        this.prevSlide();\r\n      } else {\r\n        // swipe left -> siguiente\r\n        this.nextSlide();\r\n      }\r\n    }\r\n\r\n    // reanudar o reprogramar autoplay\r\n    this.resetAutoplay();\r\n  }\r\n\r\n  /** ACCESSIBILITY METHODS  */\r\n\r\n  private setGlobalAriaLabel(): void{\r\n    this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.acc().hostAriaLabel!);\r\n  }\r\n\r\n  private setAccOptions() {\r\n      const currentLang = this.lang() ?? 'en';\r\n      const langDefaults = accessibilityTranslations[currentLang];\r\n      const userOptions = this.accessibilityOptions() ?? {};\r\n\r\n      this.acc.set({\r\n        ...langDefaults,\r\n        ...userOptions,\r\n        slideAriaLabel: userOptions.slideAriaLabel ?? langDefaults.slideAriaLabel,\r\n      });\r\n  }\r\n\r\n  /** OTHER METHODS  */\r\n\r\n  private get transitionCssValue(): string {\r\n    return `${this.transitionTime()}ms`;\r\n  };\r\n\r\n  private calculateSlideWidth() {\r\n    const firstSlide = this.slidesElements.first;\r\n    const rect = firstSlide.nativeElement.getBoundingClientRect();\r\n    const width = Number(rect.width.toFixed(2));\r\n    this.slideWidth.set(width);\r\n  };\r\n\r\n  private setTransitionVariable(): void {\r\n    this.el.nativeElement.style.setProperty(\r\n      '--carousel-transition-time',\r\n      this.transitionCssValue\r\n    );\r\n  }\r\n\r\n\r\n}\r\n","<!-- STOP AUTOPLAY -->\r\n<button [class]=\"!hasAutoplay() ? 'carousel__autoplayBtn--sr-only' : 'carousel__autoplayBtn'\"\r\n    (click)=\"toggleAutoplay()\" \r\n    [attr.aria-label]=\"hasAutoplay() ? (isPlaying() ? acc().autoplayPauseLabel : acc().autoplayPlayLabel) : null\"\r\n    [attr.title]=\"hasAutoplay() ? (isPlaying() ? acc().autoplayPauseLabel : acc().autoplayPlayLabel) : null\"\r\n    [attr.aria-pressed]=\"hasAutoplay() ? (isPlaying() ? 'true' : 'false') : null\"\r\n    [attr.aria-hidden]=\"!hasAutoplay() ? 'true' : null\"\r\n    [attr.aria-controls]=\"carouselId()\"\r\n>\r\n    @if (hasAutoplay()) {\r\n        @if(isPlaying()){\r\n            <svg aria-hidden=\"true\" focusable=\"false\" fill=\"#ffffff\" width=\"100%\" height=\"100%\" \r\n            viewBox=\"0 0 1920 1920\"\r\n                xmlns=\"http://www.w3.org/2000/svg\">\r\n                <g stroke-width=\"0\"></g>\r\n                <g stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n                <g>\r\n                    <path d=\"M754.571 0v1920H206V0h548.571Zm960 0v1920H1166V0h548.571Z\" fill-rule=\"evenodd\"></path>\r\n                </g>\r\n            </svg>\r\n        }@else{\r\n            <svg \r\n                aria-hidden=\"true\" focusable=\"false\" fill=\"#000000\" width=\"100%\" height=\"100%\" \r\n                viewBox=\"0 0 1920 1920\"\r\n                xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#000000\">\r\n                <g stroke-width=\"0\"></g>\r\n                <g stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n                <g>\r\n                    <path d=\"M175 .024V1920l1570.845-959.927z\" fill-rule=\"evenodd\"></path>\r\n                </g>\r\n            </svg>\r\n        }\r\n    }\r\n    \r\n</button>\r\n\r\n<!-- OUTER CONTENT -->\r\n@if(outerContent){\r\n    <div class=\"carousel__outerContent\">\r\n        <ng-container [ngTemplateOutlet]=\"outerContent\"></ng-container>\r\n    </div>\r\n}\r\n\r\n<!-- READABLE CONTENT FOR EACH SLIDE -->\r\n<div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\" role=\"status\">\r\n    {{liveRegionText()}}\r\n</div>\r\n\r\n\r\n<!-- PREV ARROW (LEFT) -->\r\n<div \r\n    class=\"carousel__prevBtnContainer\" \r\n    [class.fiveOrLess]=\"slides().length <= 5\"\r\n    [class.auto]=\"arrowsPlacement() === 'auto'\"\r\n    [class.up]=\"arrowsPlacement() === 'up'\"\r\n>\r\n    <button \r\n        #prevBtn\r\n        class=\"carousel__prevBtn\" \r\n        (click)=\"prevSlide()\"\r\n        [attr.aria-label]=\"acc().prevBtnAriaLabel\"\r\n        [attr.aria-controls]=\"carouselId()\"\r\n        type=\"button\"\r\n    >\r\n            <svg aria-hidden=\"true\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" \r\n                width=\"1rem\" height=\"1rem\" \r\n                viewBox=\"320 -720 296 480\" \r\n                fill=\"#ffffff\">\r\n            <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\"/>\r\n            </svg>\r\n    </button>\r\n</div>\r\n\r\n<!-- SLIDES CONTENT -->\r\n@if(slides()){\r\n    <section \r\n        #slidesContainer\r\n        [id]=\"carouselId()\"\r\n        class=\"carousel__slides\" \r\n        (touchstart)=\"onUserDragStart($event)\"\r\n        (touchend)=\"onUserDragEnd($event)\"\r\n        (click)=\"resetAutoplay()\"\r\n\r\n        role=\"region\"\r\n        [attr.aria-roledescription]=\"acc().slidesRegionRoleDescription\"\r\n        [attr.aria-label]=\"acc().slidesRegionAriaLabel\"\r\n    >\r\n        @for (slide of slides(); track $index) {\r\n            <article \r\n                #slide\r\n                class=\"carousel__slide\"\r\n                [style.background-image]=\"slide.image_url ? 'url(' + slide.image_url + ')' : 'none'\"\r\n                [style.background-color]=\"slide.backgroundColor || 'transparent'\"\r\n                [class.fromRight]=\"$index > currentSlide()\"\r\n                [class.fromLeft]=\"$index < currentSlide()\"\r\n                [class.firstFromLeft]=\"$index === slides().length -1 && currentSlide() === 0\"\r\n                \r\n                [class.active]=\"$index === currentSlide()\"\r\n                [class.toLeft]=\"prev() === $index && currentSlide() > prev()\"\r\n                [class.toRight]=\"prev() === $index && currentSlide() < prev()\"\r\n                \r\n                [class.firstToRight]=\"$index === 0 && currentSlide() === slides().length - 1\"\r\n                \r\n                [class.overlay]=\"hasOverlay()\"\r\n\r\n                role=\"group\"\r\n                [attr.aria-roledescription]=\"acc().slideRoleDescription\"\r\n                [attr.aria-label]=\"acc().slideAriaLabel?.($index + 1, slides().length) ?? null\"\r\n                [attr.inert]=\"currentSlide() !== $index ? '' : null\"\r\n            >\r\n                <div \r\n                    #slidesContent class=\"carousel__slideContent\" \r\n                    [class.active]=\"currentSlide() === $index\"\r\n                    [attr.aria-live]=\"currentSlide() === $index ? 'polite' : null\"\r\n                    aria-atomic=\"true\" \r\n                    \r\n                >\r\n\r\n                @if(slide.title || slide.subtitle){\r\n                    <hgroup class=\"carousel__slideHeaders\">\r\n                        @if (slide.title) {\r\n                            <h2 class=\"carousel__slideTitle\">{{slide.title}}</h2>\r\n                        }\r\n\r\n                        @if (slide.subtitle) {\r\n                            <h3 class=\"carousel__slideSubtitle\">{{slide.subtitle}}</h3>\r\n                        }\r\n                    </hgroup>\r\n                }\r\n\r\n                    @if(getChildren($index)){\r\n                        <div class=\"slideCustomContent\" slideCustomContent [inert]=\"currentSlide() !== $index\">\r\n                            <ng-container [ngTemplateOutlet]=\"getChildren($index)\"></ng-container>\r\n                        </div>\r\n                    }\r\n\r\n                </div>\r\n                \r\n            </article>\r\n        }\r\n    </section>\r\n\r\n}\r\n\r\n<!-- COUNTER -->\r\n@if (hasCounter()){\r\n    <span class=\"carousel__counter\" aria-hidden=\"true\">\r\n        {{(this.currentSlide() + 1) + '/' + this.slides().length}}\r\n    </span>\r\n}\r\n\r\n\r\n<!-- NEXT ARROW (LEFT) -->\r\n<div \r\n    class=\"carousel__nextBtnContainer\" \r\n    [class.fiveOrLess]=\"slides().length <= 5\"\r\n    [class.auto]=\"arrowsPlacement() === 'auto'\"\r\n    [class.up]=\"arrowsPlacement() === 'up'\"\r\n>\r\n    <button\r\n        #nextBtn\r\n        class=\"carousel__nextBtn\" \r\n        (click)=\"nextSlide()\"\r\n        [attr.aria-label]=\"acc().nextBtnAriaLabel\"\r\n        [attr.aria-controls]=\"carouselId()\"\r\n        type=\"button\"\r\n    >\r\n            <svg aria-hidden=\"true\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" \r\n                width=\"1rem\" height=\"1rem\" \r\n                viewBox=\"320 -720 296 480\" \r\n                fill=\"#ffffff\"\r\n            >\r\n                <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\"/>\r\n            </svg>\r\n    </button>\r\n</div>\r\n\r\n\r\n<!-- INDICATORS -->\r\n@if(indicators() !== 'none'){\r\n    <section class=\"carousel__indicatorsContainer\">\r\n        <article \r\n            #indicatorsContainer \r\n            class=\"carousel__indicators\" \r\n            (touchstart)=\"onUserDragStart($event)\"\r\n            (touchend)=\"onUserDragEnd($event)\"\r\n            tabindex=\"-1\"\r\n        >\r\n            @for (indicator of slides(); track $index) {\r\n                <button \r\n                    #indicatorBtn\r\n                    class=\"carousel__indicatorBtn\" \r\n                    [class.active]=\"currentSlide() === $index\"\r\n                    (click)=\"goToSlide($index)\"\r\n                    tabindex=\"-1\"\r\n                    aria-hidden=\"true\"\r\n                >\r\n                    <span \r\n                        class=\"carousel__indicatorIcon\"\r\n                        [class.circles]=\"indicators() === 'circles'\"\r\n                    >\r\n                    </span>\r\n                </button>\r\n            }\r\n        </article>\r\n    </section>\r\n}","/*\r\n * Public API Surface of ngx-full-carousel\r\n */\r\n\r\nexport * from './lib/ngx-full-carousel';\r\nexport * from './lib/directives/slide-for-directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}