ngx-slick-carousel
Version:
[](https://badge.fury.io/js/ngx-slick-carousel) [](https://travis-ci.com/leo6104/ngx-slick-carousel)
1 lines • 14.3 kB
Source Map (JSON)
{"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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"}