{"version":3,"file":"ngx-slick-carousel.mjs","sources":["../../src/slick.component.ts","../../src/index.ts","../../src/ngx-slick-carousel.ts"],"sourcesContent":["import { isPlatformServer } from '@angular/common';\nimport {\n  AfterViewChecked,\n  AfterViewInit,\n  Component,\n  Directive,\n  ElementRef,\n  forwardRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  output,\n  PLATFORM_ID,\n  Renderer2,\n  SimpleChanges\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\ndeclare const jQuery: JQueryStatic;\n\n/**\n * Slick component\n */\n@Component({\n  selector: 'ngx-slick-carousel',\n  exportAs: 'slick-carousel',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => SlickCarouselComponent),\n    multi: true\n  }],\n  template: '<ng-content></ng-content>',\n  standalone: false,\n})\nexport class SlickCarouselComponent implements OnDestroy, OnChanges, AfterViewInit, AfterViewChecked {\n\n  @Input() config: JQuerySlickOptions;\n  afterChange = output<{ event: JQuery.TriggeredEvent<HTMLElement>, slick: JQuerySlick, currentSlide: number, first: boolean, last: boolean }>();\n  beforeChange = output<{ event: JQuery.TriggeredEvent<HTMLElement>, slick: JQuerySlick, currentSlide: number, nextSlide: number }>();\n  breakpoint = output<{ event: JQuery.TriggeredEvent<HTMLElement>, slick: JQuerySlick, breakpoint: any }>();\n  destroy = output<{ event: JQuery.TriggeredEvent<HTMLElement>, slick: JQuerySlick }>();\n  init = output<{ event: JQuery.TriggeredEvent<HTMLElement>, slick: JQuerySlick }>();\n\n  public $instance: JQuery;\n\n  // access from parent component can be a problem with change detection timing. Please use afterChange output\n  private currentIndex = 0;\n\n  public slides: any[] = [];\n  public initialized = false;\n  private _removedSlides: SlickItemDirective[] = [];\n  private _addedSlides: SlickItemDirective[] = [];\n\n  private el = inject(ElementRef);\n  private zone = inject(NgZone);\n  private isServer = isPlatformServer(inject(PLATFORM_ID));\n\n  /**\n   * On component destroy\n   */\n  ngOnDestroy() {\n    this.unslick();\n  }\n\n  ngAfterViewInit(): void {\n    this.ngAfterViewChecked();\n  }\n\n  /**\n   * On component view checked\n   */\n  ngAfterViewChecked() {\n    if (this.isServer) {\n      return;\n    }\n    if (this._addedSlides.length > 0 || this._removedSlides.length > 0) {\n      const nextSlidesLength = this.slides.length - this._removedSlides.length + this._addedSlides.length;\n      if (!this.initialized) {\n        if (nextSlidesLength > 0) {\n          this.initSlick();\n        }\n        // if nextSlidesLength is zere, do nothing\n      } else if (nextSlidesLength === 0) { // unslick case\n        this.unslick();\n      } else {\n        this._addedSlides.forEach(slickItem => {\n          this.slides.push(slickItem);\n          this.$instance.slick('slickAdd', slickItem.el.nativeElement);\n        });\n        this._addedSlides = [];\n\n        this._removedSlides.forEach(slickItem => {\n          const idx = this.slides.indexOf(slickItem);\n          this.slides = this.slides.filter(s => s !== slickItem);\n          this.$instance.slick('slickRemove', idx);\n        });\n        this._removedSlides = [];\n      }\n    }\n  }\n\n  /**\n   * init slick\n   */\n  initSlick() {\n    this.slides = this._addedSlides;\n    this._addedSlides = [];\n    this._removedSlides = [];\n\n    this.$instance = jQuery(this.el.nativeElement);\n\n    this.$instance.on('init', (event, slick: JQuerySlick) => {\n      this.zone.run(() => {\n        this.init.emit({ event, slick });\n      });\n    });\n\n    this.$instance.slick(this.config);\n\n    this.zone.run(() => {\n      this.initialized = true;\n\n      this.currentIndex = this.config?.initialSlide || 0;\n    });\n\n    this.$instance.on('afterChange', (event, slick: JQuerySlick, currentSlide: number) => {\n      this.zone.run(() => {\n          this.afterChange.emit({\n              event,\n              slick,\n              currentSlide,\n              first: currentSlide === 0,\n              last: slick.$slides.length === currentSlide + slick.options.slidesToScroll\n          });\n          this.currentIndex = currentSlide;\n      });\n    });\n\n    this.$instance.on('beforeChange', (event, slick: JQuerySlick, currentSlide: number, nextSlide: number) => {\n      this.zone.run(() => {\n        this.beforeChange.emit({ event, slick, currentSlide, nextSlide });\n        this.currentIndex = nextSlide;\n      });\n    });\n\n    this.$instance.on('breakpoint', (event, slick: JQuerySlick, breakpoint) => {\n      this.zone.run(() => {\n        this.breakpoint.emit({ event, slick, breakpoint });\n      });\n    });\n\n    this.$instance.on('destroy', (event, slick: JQuerySlick) => {\n      this.zone.run(() => {\n        this.destroy.emit({ event, slick });\n        this.initialized = false;\n      });\n    });\n  }\n\n  addSlide(slickItem: SlickItemDirective) {\n    this._addedSlides.push(slickItem);\n  }\n\n  removeSlide(slickItem: SlickItemDirective) {\n    this._removedSlides.push(slickItem);\n  }\n\n  /**\n   * Slick Method\n   */\n  public slickGoTo(index: number) {\n    this.$instance.slick('slickGoTo', index);\n  }\n\n  public slickNext() {\n    this.$instance.slick('slickNext');\n  }\n\n  public slickPrev() {\n    this.$instance.slick('slickPrev');\n  }\n\n  public slickPause() {\n    this.$instance.slick('slickPause');\n  }\n\n  public slickPlay() {\n    this.$instance.slick('slickPlay');\n  }\n\n  public unslick() {\n    if (this.$instance) {\n      this.$instance.slick('unslick');\n      this.$instance = undefined;\n    }\n    this.initialized = false;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.initialized) {\n      const config = changes['config'];\n      if (config.previousValue !== config.currentValue && config.currentValue !== undefined) {\n        const refresh = config.currentValue['refresh'];\n        const newOptions = Object.assign({}, config.currentValue);\n        delete newOptions['refresh'];\n\n        this.$instance.slick('slickSetOption', newOptions, refresh);\n      }\n    }\n  }\n\n}\n\n@Directive({\n  selector: '[ngxSlickItem]',\n  standalone: false\n})\nexport class SlickItemDirective implements OnInit, OnDestroy {\n  private carousel = inject(SlickCarouselComponent, { host: true });\n\n  renderer = inject(Renderer2);\n  el = inject(ElementRef);\n  isServer = isPlatformServer(inject(PLATFORM_ID));\n\n  ngOnInit() {\n    this.carousel.addSlide(this);\n    if (this.isServer && this.carousel.slides.length > 0) {\n      // Do not show other slides in server side rendering (broken ui can be affacted to Core Web Vitals)\n      this.renderer.setStyle(this.el, 'display', 'none');\n    }\n  }\n\n  ngOnDestroy() {\n    this.carousel.removeSlide(this);\n  }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {SlickCarouselComponent, SlickItemDirective} from './slick.component';\n\nexport * from './slick.component';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    SlickCarouselComponent,\n    SlickItemDirective,\n  ],\n  exports: [\n    SlickCarouselComponent,\n    SlickItemDirective,\n  ]\n})\nexport class SlickCarouselModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}