{"version":3,"file":"sleek-slider.mjs","sources":["../../../projects/sleek-slider/src/lib/sleek-slider.component.ts","../../../projects/sleek-slider/src/lib/sleek-slider.component.html","../../../projects/sleek-slider/src/public-api.ts","../../../projects/sleek-slider/src/sleek-slider.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, ContentChild, ElementRef, HostListener, Input, OnInit, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\nimport { ResponsiveConfig, SliderOptions } from './sleek-slider-types';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport Hammer from 'hammerjs';\n@Component({\n  selector: 'sleek-slider',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './sleek-slider.component.html',\n  styleUrls: ['./sleek-slider.component.scss'],\n})\nexport class SleekSliderComponent {\n  constructor(private cdr: ChangeDetectorRef, private sanitizer: DomSanitizer) { }\n  @ContentChild('itemTemplate') itemTemplate!: TemplateRef<any>;\n  @ViewChild('rowSlider', { static: false }) rowSlider!: ElementRef;\n  @ViewChildren('galleryImage') galleryImagesIndicators!: QueryList<ElementRef>;\n  @Input() responsiveOptions: any;\n  @Input() sliderOptions: any;\n  @Input() sliderItems: any[] = [];\n  currentIndex = 0;\n  autoplayInterval: any;\n  resizeTimeout: any;\n  stepSize: number = 0;\n  indicatorsLength: number = 0;\n  indicatorsArray: any[] = [];\n  sortedResponsiveOptons: any;\n  largestBreakpoint: any;\n  translateX: number = 0;\n  translateY: number = 0;\n  isRTL: boolean = false;\n  animationSpeed: string = '0.6s';\n  animation: string = 'linear';\n  numberOfVisibleItems: number = 4;\n  maxCurrentIndex: any;\n  spaceBetween: number = 0;\n  clonedSliderItems: any[] = [];\n  safePrevButton: any;\n  safeNextButton: any;\n  customSliderItems: any = {};\n  clonedCustomSliderItems: any = {};\n  numberOfRows: number = 1;\n  rowsArray: any[] = [];\n  isTransitionEnabled = true;\n  hammer?: any;\n  isDragging: boolean = false;\n  dragStartTranslateX: number = 0;\n  dragStartTranslateY: number = 0;\n  dragThreshold: number = 50;\n  isDraggable: boolean = true;\n  isInfiniteScroll: boolean = false;\n  maxArrayKey: any;\n  autoplay: boolean = false;\n  isExternalDrag = false;\n  shouldReInitializeHammer: boolean = false;\n  customIndicators: any;\n  isVertical: boolean = false;\n  galleryImages: any;\n  height!: string;\n  @HostListener('document:click', ['$event'])\n  onSelectStart(event: Event): void {\n    this.isDragging = false;\n    if (!this.isDragging && this.shouldReInitializeHammer) {\n      this.initializeHammer()\n      this.shouldReInitializeHammer = false;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['sliderItems'] || changes['sliderOptions']) {\n      this.calculateSliderPosition();\n      this.clonedSliderItems = [...this.sliderItems];\n      this.stepSize = this.sliderOptions.stepSize;\n      this.numberOfVisibleItems = this.sliderOptions.numberOfVisibleItems;\n      this.numberOfRows = this.sliderOptions.rows ?? 1;\n      this.isVertical = this.sliderOptions.vertical ?? false;\n      if (this.isVertical && this.numberOfRows > 1) {\n        this.numberOfRows = 1;\n      }\n      this.spaceBetween = this.sliderOptions.spaceBetween ?? 0;\n      this.isRTL = this.sliderOptions.rtl || false;\n      this.animationSpeed = this.sliderOptions.animationSpeed ?? '0.6s';\n      this.animation = this.sliderOptions.animation ?? 'linear';\n      this.safeNextButton = this.sliderOptions.nextButton ? this.sanitizer.bypassSecurityTrustHtml(this.sliderOptions.nextButton) : '';\n      this.safePrevButton = this.sliderOptions.prevButton ? this.sanitizer.bypassSecurityTrustHtml(this.sliderOptions.prevButton) : '';\n      this.isDraggable = this.sliderOptions.isDraggable ?? true;\n      if ((this.sliderItems.length / this.numberOfRows <= this.numberOfVisibleItems)) {\n        this.isDraggable = false;\n      }\n      this.isInfiniteScroll = this.sliderOptions.infiniteScroll ?? false;\n      this.autoplay = this.sliderOptions.autoplay ?? false;\n      this.rowsArray = Array.from({ length: this.numberOfRows }, (_, i) => i);\n      this.customIndicators = this.sliderOptions.customIndicators;\n      this.galleryImages = this.sliderOptions.galleryImages ?? [];\n      this.height = this.sliderOptions.height ?? '300px';\n      this.calculateIndicators();\n      this.handleInfiniteScrollSliderItems();\n      this.handleMoreThanOneRowSliderItems();\n      if (!this.isInfiniteScroll) {\n        this.currentIndex = 0;\n        this.calculateSliderPosition();\n      }\n      if (this.autoplay) {\n        this.startAutoplay();\n      }\n    }\n    if (changes['responsiveOptions'] || changes['sliderOptions']) {\n      if (this.responsiveOptions && this.responsiveOptions.length > 0) {\n        this.sortedResponsiveOptons = [...this.responsiveOptions].sort((a, b) =>\n          parseInt(a.breakpoint.replace('px', ''), 10) - parseInt(b.breakpoint.replace('px', ''), 10)\n        );\n        const largestBreakpoint = this.sortedResponsiveOptons[this.sortedResponsiveOptons.length - 1];\n        if (!this.sliderOptions.numberOfVisibleItems || !this.sliderOptions.stepSize) {\n          this.sliderOptions = {\n            ...this.sliderOptions,\n            numberOfVisibleItems: this.sliderOptions.numberOfVisibleItems ?? largestBreakpoint.numVisible,\n            stepSize: this.sliderOptions.numberOfVisibleItems ?? largestBreakpoint.numScroll\n          }\n        }\n        this.applyResponsiveOptions();\n      } else {\n        this.setDefaultSliderSettings();\n      }\n\n      this.calculateSliderPosition();\n\n    }\n  }\n\n  handleMoreThanOneRowSliderItems() {\n    if (this.numberOfRows > 1) {\n      for (let key = 0; key < this.numberOfRows; key++) {\n        this.customSliderItems[key] = [];\n      }\n      for (let i = 0; i < this.sliderItems.length; i += this.numberOfRows) {\n        for (let j = 0; j < this.numberOfRows; j++) {\n          const item = this.sliderItems[i + j];\n          if (item !== undefined) {\n            this.customSliderItems[j].push(item);\n          }\n        }\n      }\n\n      if (this.isInfiniteScroll) {\n        let maxArrayLength = 0;\n        let maxArrayKey = 0;\n        this.clonedCustomSliderItems = {};\n        for (let key in this.customSliderItems) {\n          this.clonedCustomSliderItems[key] = [...this.customSliderItems[key]];\n          if (this.clonedCustomSliderItems[key].length > (this.sliderItems.length / this.numberOfRows)) {\n            maxArrayKey = +key;\n            maxArrayLength = this.clonedCustomSliderItems[key].length;\n          }\n        }\n        if (this.sliderItems.length % this.numberOfRows !== 0) {\n          const virtualItemsArray = Array.from({ length: 1 }, () => ({ id: null, type: 'virtual' }));\n          for (let key in this.clonedCustomSliderItems) {\n            if (+key > +maxArrayKey) {\n              this.clonedCustomSliderItems[key].push(...virtualItemsArray);\n            }\n          }\n        }\n      }\n\n    }\n  }\n  setDefaultSliderSettings(): void {\n    if (this.sliderOptions) {\n      this.numberOfVisibleItems = this.sliderOptions.numberOfVisibleItems ?? 1;\n      this.stepSize = this.sliderOptions.stepSize ?? 1;\n      this.calculateIndicators();\n    }\n  }\n  calculateIndicators() {\n    if (this.isInfiniteScroll) {\n      const originalLength = this.clonedSliderItems.length / this.numberOfRows;\n      const totalSlides = Math.ceil(originalLength / this.stepSize);\n      this.indicatorsLength = totalSlides;\n      this.indicatorsArray = Array.from({ length: this.indicatorsLength }, (_, i) => i);\n      this.maxCurrentIndex = Math.ceil(originalLength - this.numberOfVisibleItems);\n    } else {\n      const totalSlides = (this.clonedSliderItems.length / this.numberOfRows - this.numberOfVisibleItems) / this.stepSize + 1;\n      this.indicatorsLength = Math.ceil(totalSlides);\n      this.indicatorsArray = Array.from({ length: this.indicatorsLength }, (_, i) => i);\n      this.maxCurrentIndex = Math.ceil((this.sliderItems.length - 1) / this.numberOfRows - (this.numberOfVisibleItems - this.stepSize));\n    }\n  }\n  handleInfiniteOneRowSlider() {\n    if (!this.isInfiniteScroll) {\n      this.sliderItems = [...this.clonedSliderItems];\n      this.currentIndex = 0;\n      this.translateX = 0;\n      return;\n    }\n    if (this.sliderItems.length >= this.numberOfVisibleItems) {\n      this.sliderItems = [...this.clonedSliderItems];\n      const startClone = this.sliderItems.slice(0, this.numberOfVisibleItems);\n      const endClone = this.sliderItems.slice(-this.numberOfVisibleItems);\n      this.sliderItems = [...endClone, ...this.sliderItems, ...startClone];\n      this.currentIndex = this.numberOfVisibleItems;\n      this.translateX = - (this.currentIndex * (100 / this.numberOfVisibleItems));\n    }\n\n  }\n  handleInfiniteMultiRowSlider() {\n    if (this.sliderItems.length / this.numberOfRows < this.numberOfVisibleItems) {\n      this.isInfiniteScroll = false;\n      this.sliderItems = [...this.clonedSliderItems];\n      this.handleMoreThanOneRowSliderItems();\n      this.currentIndex = 0;\n      this.translateX = 0;\n      this.calculateIndicators();\n      return;\n    }\n    for (let key in this.clonedCustomSliderItems) {\n      if (this.clonedCustomSliderItems[key].length >= this.numberOfVisibleItems) {\n        this.customSliderItems[key] = [...this.clonedCustomSliderItems[key]];\n        const startClone = this.customSliderItems[key].slice(0, this.numberOfVisibleItems);\n        const endClone = this.customSliderItems[key].slice(-this.numberOfVisibleItems);\n        this.customSliderItems[key] = [...endClone, ...this.customSliderItems[key], ...startClone]\n      }\n    }\n    this.currentIndex = this.numberOfVisibleItems;\n    this.translateX = -(this.currentIndex * (100 / this.numberOfVisibleItems));\n  }\n  handleInfiniteScrollSliderItems() {\n    if (this.isInfiniteScroll) {\n      if (this.numberOfRows == 1) {\n        this.handleInfiniteOneRowSlider();\n      } else {\n        this.handleInfiniteMultiRowSlider();\n      }\n    }\n\n  }\n  isPrevDisabled(): boolean {\n    const boundry = this.isRTL ? this.indicatorsArray.length - 1 : 0\n    return !this.isInfiniteScroll && this.getCurrentIndicator() === boundry\n  }\n\n  isNextDisabled(): boolean {\n    const boundry = this.isRTL ? 0 : this.indicatorsArray.length - 1\n    return !this.isInfiniteScroll && this.getCurrentIndicator() === boundry\n  }\n  ngOnInit(): void {\n    window.addEventListener('resize', this.onWindowResize.bind(this));\n\n  }\n  ngAfterViewInit() {\n\n\n    setTimeout(() => {\n      this.initializeHammer();\n    }, 0);\n  }\n  setActive(index: number) {\n    this.currentIndex = index;\n      const activeEl = this.galleryImagesIndicators.toArray()[index]?.nativeElement;\n      activeEl?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      if(index > this.maxCurrentIndex+1){\n        index = 0;\n        const activeEl = this.galleryImagesIndicators.toArray()[index]?.nativeElement;\n        activeEl?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n    }\n  }\n  onWindowResize = () => {\n    clearTimeout(this.resizeTimeout);\n    this.resizeTimeout = setTimeout(() => {\n      this.applyResponsiveOptions();\n      this.calculateSliderPosition();\n      this.cdr.detectChanges();\n    }, 0);\n  };\n\n  trackItemFun(item: any, index: any) {\n    return index;\n  }\n\n  calculateSliderPosition() {\n    if (!this.isVertical) {\n      const itemWidth = 100 / this.numberOfVisibleItems;\n      this.translateX = this.isRTL ? (this.translateX = +(this.currentIndex * itemWidth)) : (this.translateX = -(this.currentIndex * itemWidth));\n    } else {\n      const itemHeight = 100 / this.numberOfVisibleItems;\n      this.translateY = -((this.currentIndex * itemHeight));\n    }\n  }\n\n  applyResponsiveOptions(): void {\n    if (!this.responsiveOptions || !Array.isArray(this.responsiveOptions) || this.responsiveOptions.length === 0) {\n      this.setDefaultSliderSettings();\n      if (this.stepSize > this.numberOfVisibleItems) {\n        this.stepSize = this.numberOfVisibleItems;\n      }\n      this.calculateIndicators();\n      return;\n    }\n    this.sortedResponsiveOptons = this.responsiveOptions.sort((a: any, b: any) =>\n      parseInt(a.breakpoint.replace('px', ''), 10) - parseInt(b.breakpoint.replace('px', ''), 10)\n    );\n    const width = window.innerWidth;\n    const largestBreakpoint = this.sortedResponsiveOptons[this.sortedResponsiveOptons.length - 1].breakpoint.replace('px', '');\n    if (width >= largestBreakpoint) {\n      this.numberOfVisibleItems = this.sliderOptions.numberOfVisibleItems;\n      this.stepSize = this.sliderOptions.stepSize;\n      this.currentIndex = this.isInfiniteScroll ? this.numberOfVisibleItems : 0;\n    } else {\n      let selectedConfig = null;\n      for (let config of this.sortedResponsiveOptons) {\n        const breakpoint = parseInt(config.breakpoint.replace('px', ''), 10);\n        if (width > breakpoint) {\n          selectedConfig = config;\n        } else if (width < breakpoint) {\n          selectedConfig = config;\n          break;\n        }\n      }\n      if (selectedConfig) {\n        this.numberOfVisibleItems = selectedConfig.numVisible;\n        this.stepSize = selectedConfig.numScroll;\n      }\n\n    }\n    if (this.stepSize > this.numberOfVisibleItems) {\n      this.stepSize = this.numberOfVisibleItems;\n    }\n    this.calculateIndicators();\n    this.handleInfiniteScrollSliderItems();\n    this.cdr.detectChanges();\n  }\n\n  slideFinite(direction: 'forward' | 'backward'): void {\n    const dir = this.isRTL ? -1 : 1;\n    const movement = direction === 'forward' ? 1 : -1;\n    const newIndex = this.currentIndex + dir * this.stepSize * movement;\n    if (newIndex >= 0 && newIndex <= Math.ceil(this.maxCurrentIndex)) {\n      this.currentIndex = newIndex;\n      this.calculateSliderPosition();\n    }\n  }\n\n  handleSingleRowInfiniteLoop() {\n    if (this.sliderItems.length < this.numberOfVisibleItems) return;\n    if (this.currentIndex >= this.sliderItems.length - this.numberOfVisibleItems) {\n      this.currentIndex = this.currentIndex - this.clonedSliderItems.length;\n    } else if (this.currentIndex < this.numberOfVisibleItems) {\n      this.currentIndex = this.numberOfVisibleItems + this.clonedSliderItems.length - (this.numberOfVisibleItems - this.currentIndex);\n    }\n  }\n\n  handleMultiRowInfiniteLoop() {\n    if (this.sliderItems.length / this.numberOfRows < this.numberOfVisibleItems) return;\n    const cloneCount = Math.max(this.numberOfVisibleItems, this.stepSize);\n    const itemsPerRow = this.clonedCustomSliderItems[0].length;\n    const totalItemsPerRow = itemsPerRow + 2 * cloneCount;\n    if (this.currentIndex >= totalItemsPerRow - this.numberOfVisibleItems) {\n      this.currentIndex = cloneCount + (this.currentIndex - (itemsPerRow + cloneCount));\n    } else if (this.currentIndex < cloneCount) {\n      this.currentIndex = itemsPerRow + cloneCount - (cloneCount - this.currentIndex);\n    }\n  }\n  slideInfinite(direction: 'forward' | 'backward'): void {\n    const dir = this.isRTL ? -1 : 1;\n    const movement = direction === 'forward' ? 1 : -1;\n    const step = dir * this.stepSize * movement;\n    this.currentIndex += step;\n    this.isTransitionEnabled = true;\n    this.calculateSliderPosition();\n    const timeout = parseFloat(this.animationSpeed) * 1000;\n    setTimeout(() => {\n      this.isTransitionEnabled = false;\n      if (this.numberOfRows === 1) {\n        this.handleSingleRowInfiniteLoop();\n      } else {\n        this.handleMultiRowInfiniteLoop();\n      }\n      this.calculateSliderPosition()\n    }, timeout)\n  }\n\n  nextFunc(): void {\n    if (this.isInfiniteScroll) {\n      this.slideInfinite('forward');\n    } else {\n      this.slideFinite('forward');\n    }\n    this.setActive(this.currentIndex)\n\n  }\n\n  prevFunc(): void {\n    if (this.isInfiniteScroll) {\n      this.slideInfinite('backward');\n    } else {\n      this.slideFinite('backward');\n    }\n    this.setActive(this.currentIndex)\n\n  }\n\n  // indicators\n  goToSlide(index: number): void {\n    this.currentIndex = this.isInfiniteScroll ? this.numberOfVisibleItems + index * this.stepSize : Math.min(index * this.stepSize, this.maxCurrentIndex);\n    this.isTransitionEnabled = true;\n    this.calculateSliderPosition();\n    this.setActive(index);\n  }\n\n  getCurrentIndicator(): number {\n    if (!this.isInfiniteScroll) {\n      return Math.ceil(this.currentIndex / this.stepSize);\n    } else {\n\n      let normalizedIndex = this.currentIndex - this.numberOfVisibleItems;\n      if (normalizedIndex < 0) {\n        normalizedIndex = this.clonedSliderItems.length + normalizedIndex;\n      } else if (normalizedIndex >= this.clonedSliderItems.length) {\n        normalizedIndex = normalizedIndex - this.clonedSliderItems.length;\n      }\n      normalizedIndex = Math.max(0, Math.min(normalizedIndex, this.clonedSliderItems.length - 1));\n      return Math.floor(normalizedIndex / this.stepSize);\n    }\n  }\n  // drag\n  private initializeHammer() {\n    if (this.hammer) {\n      this.hammer.destroy();\n    }\n    let sliderElement: HTMLElement | null = null;\n    if (this.rowSlider && this.rowSlider.nativeElement) {\n      sliderElement = this.rowSlider.nativeElement;\n    }\n    if (!sliderElement) {\n      console.warn('Slider element not found');\n      return;\n    }\n\n    this.hammer = new Hammer(sliderElement);\n    this.hammer.get('pan').set({\n      direction: Hammer.DIRECTION_HORIZONTAL,\n      threshold: 10,\n    });\n    this.hammer.on('panstart', (ev: any) => { this.onDragStart(ev) });\n    this.hammer.on('panmove', (ev: any) => { this.onDragMove(ev) });\n    this.hammer.on('panend', (ev: any) => { this.onDragEnd(ev) });\n    this.hammer.on('pancancel', (ev: any) => this.onDragEnd(ev));\n\n  }\n\n  private onDragStart(event: any): void {\n    if (!this.isDraggable || (this.sliderItems.length / this.numberOfRows <= this.numberOfVisibleItems)) {\n      this.isDragging = false;\n      return;\n    }\n    this.isDragging = true;\n    if (this.isVertical) {\n      this.dragStartTranslateY = this.translateY\n    } else {\n      this.dragStartTranslateX = this.translateX;\n    }\n    if (this.autoplay) {\n      this.stopAutoplay();\n    }\n    this.isTransitionEnabled = false;\n    this.shouldReInitializeHammer = true\n  }\n\n\n  private onDragMove(event: any): void {\n    if (!this.isDragging || !this.isDraggable || (this.sliderItems.length / this.numberOfRows <= this.numberOfVisibleItems)) return;\n    const containerSize = this.isVertical ? this.rowSlider.nativeElement.offsetHeight : this.rowSlider.nativeElement.offsetWidth;\n    const dragDirection = this.isVertical ? event.deltaY : event.deltaX;\n    const dragPercentage = (dragDirection / containerSize) * 100\n    if (this.isVertical) {\n      this.translateY = this.dragStartTranslateY + dragPercentage;\n    } else {\n      this.translateX = this.dragStartTranslateX + dragPercentage;\n    }\n    this.cdr.detectChanges();\n    this.shouldReInitializeHammer = false;\n  }\n  private onDragEnd(event: HammerInput): void {\n    if (!this.isDragging || !this.isDraggable || this.sliderItems.length / this.numberOfRows <= this.numberOfVisibleItems) {\n      return;\n    }\n\n    this.isDragging = false;\n    this.isTransitionEnabled = true;\n    const dragDistance = this.isVertical ? Math.abs(event.deltaY) : Math.abs(event.deltaX);\n    if (dragDistance < this.dragThreshold) {\n      this.calculateSliderPosition();\n      if (this.sliderOptions.autoplay) {\n        this.startAutoplay();\n      }\n      return;\n    }\n\n    let shouldMove = false;\n    const isNegativeDrag = this.isVertical ? event.deltaY < 0 : event.deltaX < 0;\n\n    if (this.isInfiniteScroll) {\n      shouldMove = true;\n    } else {\n      const canMoveForward = this.currentIndex <= this.maxCurrentIndex - this.stepSize;\n      const canMoveBackward = this.currentIndex > 0;\n\n      if (this.isRTL) {\n        shouldMove = isNegativeDrag ? canMoveBackward : canMoveForward;\n      } else {\n        shouldMove = isNegativeDrag ? canMoveForward : canMoveBackward;\n      }\n    }\n\n    if (shouldMove) {\n      const goNext = this.isRTL ? !isNegativeDrag : isNegativeDrag;\n      goNext ? this.nextFunc() : this.prevFunc();\n    } else {\n      this.calculateSliderPosition();\n    }\n\n    if (this.sliderOptions.autoplay) {\n      this.startAutoplay();\n    }\n  }\n\n\n  // autoplay\n  startAutoplay(): void {\n    if (this.autoplay) {\n      this.autoplayInterval = setInterval(() => {\n        this.nextFunc();\n      }, this.sliderOptions.autoplaySpeed || 3000); //default 3s\n    }\n  }\n  stopAutoplay(): void {\n    if (this.autoplayInterval && this.autoplay) {\n      clearInterval(this.autoplayInterval);\n    }\n  }\n  onDestroy() {\n    this.stopAutoplay();\n    window.removeEventListener('resize', this.onWindowResize);\n    if (this.resizeTimeout) {\n      clearTimeout(this.resizeTimeout);\n    }\n    if (this.hammer) {\n      this.hammer.destroy();\n    }\n\n  }\n}\n","<section\r\n  class=\"slider d-flex\"\r\n  [attr.slider-type]=\"isVertical ? 'vertical' : 'horizontal'\"\r\n  [ngStyle]=\"{\r\n    'flex-direction': isVertical ? 'row' : 'column',\r\n    height,\r\n    gap: isVertical || galleryImages.length ? '0.8rem' : ''\r\n  }\"\r\n  [dir]=\"isRTL ? 'rtl' : 'ltr'\"\r\n  (select)=\"$event.preventDefault()\"\r\n>\r\n  <div\r\n    class=\"slider-wrap\"\r\n    [class.flex-grow-1]=\"galleryImages.length || isVertical\"\r\n    (mouseenter)=\"stopAutoplay()\"\r\n    (mouseleave)=\"startAutoplay()\"\r\n  >\r\n    <div\r\n      class=\"slider-main d-flex\"\r\n      [ngClass]=\"numberOfRows > 1 || isVertical ? 'flex-column' : ''\"\r\n      #rowSlider\r\n      [ngStyle]=\"{\r\n        transform: isVertical\r\n          ? 'translateY(calc(' +\r\n            translateY +\r\n            '% - ' +\r\n            (currentIndex === 0\r\n              ? 0\r\n              : (spaceBetween * currentIndex) / numberOfVisibleItems) +\r\n            'px' +\r\n            '))'\r\n          : 'translateX(' + translateX + '%)',\r\n        transition: isTransitionEnabled\r\n          ? 'transform ' + animationSpeed + ' ' + animation\r\n          : 'none',\r\n        cursor: isDraggable ? (isDragging ? 'grabbing' : 'grab') : 'default',\r\n        gap: numberOfRows > 1 || isVertical ? spaceBetween + 'px' : null,\r\n        width: '100%',\r\n        height: '100%'\r\n      }\"\r\n      [attr.data-draggable]=\"isDraggable\"\r\n    >\r\n      <!-- Single Row -->\r\n      <ng-container *ngIf=\"numberOfRows == 1\">\r\n        <div\r\n          class=\"slider-item\"\r\n          *ngFor=\"let item of sliderItems; trackBy: trackItemFun\"\r\n          [ngStyle]=\"{\r\n            width: isVertical\r\n              ? ''\r\n              : 'calc(' +\r\n                100 / numberOfVisibleItems +\r\n                '% - ' +\r\n                spaceBetween +\r\n                'px)',\r\n            height: isVertical\r\n              ? numberOfVisibleItems > 1\r\n                ? 'calc(' +\r\n                  100 / numberOfVisibleItems +\r\n                  '% - ' +\r\n                  spaceBetween / 2 +\r\n                  'px)'\r\n                : '100%'\r\n              : '100%',\r\n            marginInline: isVertical ? '' : spaceBetween / 2 + 'px',\r\n            'pointer-events': isDragging ? 'none' : 'auto'\r\n          }\"\r\n        >\r\n          <ng-container\r\n            *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\r\n          ></ng-container>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- Multi Row (non-vertical) -->\r\n      <ng-container *ngIf=\"numberOfRows > 1 && !isVertical\">\r\n        <div\r\n          class=\"slider-row\"\r\n          *ngFor=\"let row of rowsArray; trackBy: trackItemFun\"\r\n        >\r\n          <div\r\n            class=\"slider-item\"\r\n            *ngFor=\"let item of customSliderItems[row]; trackBy: trackItemFun\"\r\n            [ngStyle]=\"{\r\n              width: 'calc(' + 100 / numberOfVisibleItems + '% - ' + spaceBetween + 'px)',\r\n              marginInline: spaceBetween / 2 + 'px'\r\n            }\"\r\n            [style.visibility]=\"item.type === 'virtual' ? 'hidden' : 'visible'\"\r\n          >\r\n            <ng-container\r\n              *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\r\n            ></ng-container>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- Navigation Buttons -->\r\n  <ng-container\r\n    *ngIf=\"\r\n      sliderOptions.navButtons &&\r\n      (isInfiniteScroll ||\r\n        (!isInfiniteScroll &&\r\n          clonedSliderItems.length / numberOfRows > numberOfVisibleItems))\r\n    \"\r\n  >\r\n    <div class=\"slider-nav\">\r\n      <button\r\n        role=\"button\"\r\n        [ngClass]=\"[isRTL ? 'next' : 'prev', isPrevDisabled() ? 'disabled' : '']\"\r\n        (click)=\"prevFunc()\"\r\n        *ngIf=\"!sliderOptions.prevButton; else customPrev\"\r\n      >\r\n        <svg\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          width=\"16\"\r\n          height=\"16\"\r\n          fill=\"currentColor\"\r\n          class=\"bi bi-chevron-left\"\r\n          viewBox=\"0 0 16 16\"\r\n        >\r\n          <path\r\n            fill-rule=\"evenodd\"\r\n            d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0\"\r\n          />\r\n        </svg>\r\n      </button>\r\n\r\n      <button\r\n        role=\"button\"\r\n        [ngClass]=\"[isRTL ? 'prev' : 'next', isNextDisabled() ? 'disabled' : '']\"\r\n        (click)=\"nextFunc()\"\r\n        *ngIf=\"!sliderOptions.nextButton; else customNext\"\r\n      >\r\n        <svg\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          width=\"16\"\r\n          height=\"16\"\r\n          fill=\"currentColor\"\r\n          class=\"bi bi-chevron-right\"\r\n          viewBox=\"0 0 16 16\"\r\n        >\r\n          <path\r\n            fill-rule=\"evenodd\"\r\n            d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708\"\r\n          />\r\n        </svg>\r\n      </button>\r\n\r\n      <ng-template #customPrev>\r\n        <button\r\n          role=\"button\"\r\n          [ngClass]=\"[isRTL ? 'next' : 'prev', isPrevDisabled() ? 'disabled' : '']\"\r\n          [innerHtml]=\"isRTL ? safeNextButton : safePrevButton\"\r\n          (click)=\"prevFunc()\"\r\n        ></button>\r\n      </ng-template>\r\n\r\n      <ng-template #customNext>\r\n        <button\r\n          role=\"button\"\r\n          [ngClass]=\"[isRTL ? 'prev' : 'next', isNextDisabled() ? 'disabled' : '']\"\r\n          [innerHtml]=\"isRTL ? safePrevButton : safeNextButton\"\r\n          (click)=\"nextFunc()\"\r\n        ></button>\r\n      </ng-template>\r\n    </div>\r\n  </ng-container>\r\n\r\n  <!-- Indicators -->\r\n  <div\r\n    class=\"slider-indicators\"\r\n    *ngIf=\"sliderOptions.indicators && indicatorsArray.length > 1\"\r\n    [ngStyle]=\"{\r\n      margin: galleryImages.length ? '' : '15px 0',\r\n      'overflow-y': 'auto',\r\n      'flex-wrap': 'nowrap',\r\n      'align-items': isVertical ? 'flex-start' : '',\r\n      'flex-direction': isVertical ? 'column' : '',\r\n      gap: '10px',\r\n      'justify-content': galleryImages.length ? 'flex-start' : 'center'\r\n    }\"\r\n  >\r\n    <ng-container *ngIf=\"customIndicators; else defaultIndicators\">\r\n      <div\r\n        *ngFor=\"let item of indicatorsArray; let i = index; trackBy: trackItemFun\"\r\n      >\r\n        <ng-container\r\n          *ngTemplateOutlet=\"customIndicators; context: { $implicit: item, index: i }\"\r\n        ></ng-container>\r\n      </div>\r\n    </ng-container>\r\n\r\n    <ng-template #defaultIndicators>\r\n      <ng-container *ngIf=\"galleryImages.length > 0; else dotIndicators\">\r\n        <div\r\n          class=\"d-flex gap-2 mx-auto\"\r\n          [ngStyle]=\"{ 'flex-direction': isVertical ? 'column' : 'row' }\"\r\n          #galleryContainer\r\n        >\r\n          <div\r\n            class=\"gallary-indicator\"\r\n            *ngFor=\"let item of galleryImages; let i = index; trackBy: trackItemFun\"\r\n            [class.active]=\"getCurrentIndicator() === i\"\r\n            #galleryImage\r\n          >\r\n            <img\r\n              (click)=\"goToSlide(i)\"\r\n              [class.active]=\"getCurrentIndicator() === i\"\r\n              [src]=\"item\"\r\n              alt=\"Gallery thumbnail\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <ng-template #dotIndicators>\r\n        <div\r\n          class=\"indicator\"\r\n          *ngFor=\"let item of indicatorsArray; let i = index; trackBy: trackItemFun\"\r\n          [class.active]=\"getCurrentIndicator() === i\"\r\n          (click)=\"goToSlide(i)\"\r\n        ></div>\r\n      </ng-template>\r\n    </ng-template>\r\n  </div>\r\n</section>\r\n","/*\n * Public API Surface of sleek-slider\n */\n\nexport * from './lib/sleek-slider.component';\n// export * form './lib/sleek-slider-types.d.ts';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}