UNPKG

ngsl-carousel

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.2.4.

1 lines 10.1 kB
{"version":3,"sources":["ng://ngsl-carousel/src/app/ngsl-carousel/ngsl-carousel-item.directive.ts","ng://ngsl-carousel/src/app/ngsl-carousel/ngsl-carousel-dot.directive.ts","ng://ngsl-carousel/src/app/ngsl-carousel/ngsl-carousel.component.ts","ng://ngsl-carousel/src/app/ngsl-carousel/ngsl-carousel.module.ts"],"names":["NgslCarouselItemDirective","tpl","this","Directive","args","selector","TemplateRef","NgslCarouselDotDirective","CarouselItemElement","NgslCarouselComponent","builder","prototype","buildAnimation","offset","duration","action","rewindTiming","timing","build","animate","style","transform","changeSlide","setSlidesIndex","items","length","perView","currentSlide","myAnimation","player","create","carousel","nativeElement","play","goToSlide","index","dynamicTiming","next","countSlides","infinity","prev","prevSlide","nextSlide","removeDotsInDomElements","position","dotsList","toArray","forEach","dot","i","isVisible","setInitValues","trackWidth","width","ngAfterContentInit","Component","exportAs","template","AnimationBuilder","ContentChildren","ViewChildren","read","ElementRef","ViewChild","CarouselDotElement","Input","NgslCarouselModule","NgModule","imports","CommonModule","declarations","exports"],"mappings":"0YAAA,IAAAA,EAAA,WAOE,SAAAA,EAAmBC,GAAAC,KAAAD,IAAAA,6BALpBE,EAAAA,UAASC,KAAA,CAAC,CAETC,SAAU,kEAJQC,EAAAA,iBAApB,GCAAC,EAAA,WAQE,SAAAA,EAAmBN,GAAAC,KAAAD,IAAAA,kBADP,6BALbE,EAAAA,UAASC,KAAA,CAAC,CAETC,SAAU,iEAJQC,EAAAA,iBAApB,GCAAE,EAAA,oDAsBCL,EAAAA,UAASC,KAAA,CAAC,CAETC,SAAU,sCAxBZ,yDA4BCF,EAAAA,UAASC,KAAA,CAAC,CAETC,SAAU,qDA4HV,SAAAI,EAAoBC,GAAAR,KAAAQ,QAAAA,cAlGF,sBACM,iBACN,aACF,iBACI,sBACK,iBACL,eACD,cAGF,uBACF,iBACH,oBACA,qBACC,UAELD,EAAAE,UAAAC,wBAAeC,GACrB,IAAMC,EAA2B,WAAhBZ,KAAKa,OAAsBb,KAAKc,aAAed,KAAKe,OACrE,OAAOf,KAAKQ,QAAQQ,MAAM,CACxBC,EAAAA,QAAWL,EAAQ,8CAA+CM,EAAAA,MAAM,CAAEC,UAAW,cAAcR,EAAM,WAIrGJ,EAAAE,UAAAW,qBAAYP,GAClBb,KAAKqB,iBACL,IACMV,EADS,IAAMX,KAAKsB,MAAMC,OAAUvB,KAAKwB,QACvBxB,KAAKyB,aAAgBzB,KAAKwB,QAC5CE,EAAgC1B,KAAKU,gBAAgBC,GAC3DX,KAAK2B,OAASD,EAAYE,OAAO5B,KAAK6B,SAASC,eAC/C9B,KAAK2B,OAAOI,QAIdxB,EAAAE,UAAAuB,UAAA,SAAUC,GACJjC,KAAKkC,gBAEPlC,KAAKe,OAASf,KAAKe,OAAU,IAAMkB,EAAQjC,KAAKyB,eAElDzB,KAAKyB,aAAeQ,EACpBjC,KAAKoB,YAAY,gBAGnBb,EAAAE,UAAA0B,KAAA,WACE,IAAMC,EAAcpC,KAAKsB,MAAMC,OAC/B,GAAIvB,KAAKyB,aAAe,IAAMW,GAAepC,KAAKqC,SAIhD,OAHArC,KAAKyB,aAAe,EACpBzB,KAAKa,OAAS,cACdb,KAAKoB,YAAY,0BAGfpB,KAAKyB,aAAe,IAAMW,GAAgBpC,KAAKqC,YAInDrC,KAAKyB,eACLzB,KAAKa,OAAS,aACdb,KAAKoB,YAAY,gBAGnBb,EAAAE,UAAA6B,KAAA,WACE,IAAMF,EAAcpC,KAAKsB,MAAMC,OAC/B,GAA0B,IAAtBvB,KAAKyB,cAAsBzB,KAAKqC,SAIlC,OAHArC,KAAKyB,aAAeW,EAAc,EAClCpC,KAAKa,OAAS,cACdb,KAAKoB,YAAY,yBAGO,IAAtBpB,KAAKyB,cAAuBzB,KAAKqC,YAIrCrC,KAAKyB,eACLzB,KAAKa,OAAS,aACdb,KAAKoB,YAAY,gBAGXb,EAAAE,UAAAY,0BACNrB,KAAKuC,UAAkC,IAAtBvC,KAAKyB,aAAqBzB,KAAKsB,MAAMC,OAAS,EAAIvB,KAAKyB,aAAe,EACvFzB,KAAKwC,UAAYxC,KAAKyB,eAAiBzB,KAAKsB,MAAMC,OAAS,EAAI,EAAIvB,KAAKyB,aAAe,GAGjFlB,EAAAE,UAAAgC,mCACN,IAAMC,EAA0B,EAAf1C,KAAKwB,QAAcxB,KAAK2C,SAASpB,OAASvB,KAAKwB,QAAU,KAC1ExB,KAAK2C,SAASC,UAAUC,QAAQ,SAACC,EAAKC,GAC5BL,EAAJK,IAAgBD,EAAIE,WAAY,MAIhCzC,EAAAE,UAAAwC,yBACNjD,KAAKqB,iBACc,EAAfrB,KAAKwB,SACPxB,KAAKyC,0BAEPzC,KAAKkD,WAAa,CAChBC,MAAW,IAAMnD,KAAKsB,MAAMC,OAAUvB,KAAKwB,QAAO,MAMtDjB,EAAAE,UAAA2C,mBAAA,WACEpD,KAAKiD,qCA1HRI,EAAAA,UAASnD,KAAA,CAAC,CAETC,SAAU,gBACVmD,SAAU,gBACVC,SAAA,miFAvBAC,EAAAA,mDA4BCC,EAAAA,gBAAevD,KAAA,CAACJ,0BAChB4D,EAAAA,aAAYxD,KAAA,CAACI,EAAqB,CAAEqD,KAAMC,EAAAA,+BAC1CC,EAAAA,UAAS3D,KAAA,CAAC,2BAIVuD,EAAAA,gBAAevD,KAAA,CAACG,wBAChBqD,EAAAA,aAAYxD,KAAA,CAAC4D,EAAoB,CAAEH,KAAMC,EAAAA,+BACzCC,EAAAA,UAAS3D,KAAA,CAAC,4BAIV6D,EAAAA,4BACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,wBACAA,EAAAA,6BACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,cC/DHC,EAAA,oDAMCC,EAAAA,SAAQ/D,KAAA,CAAC,CACRgE,QAAS,CACPC,EAAAA,cAEFC,aAAc,CACZ7D,EACAT,EACAO,EACAC,EACAwD,GAEFO,QAAS,CACP9D,EACAT,EACAO,EACAC,EACAwD,SAtBJ","sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[ngslCarouselItem]'\n})\nexport class NgslCarouselItemDirective {\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[ngslCarouselDot]'\n})\nexport class NgslCarouselDotDirective {\n isVisible = true;\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { NgslCarouselItemDirective } from './ngsl-carousel-item.directive';\nimport { NgslCarouselDotDirective } from './ngsl-carousel-dot.directive';\nimport {\n animate,\n AnimationBuilder,\n AnimationFactory,\n AnimationPlayer,\n style\n} from '@angular/animations';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '.ngsl-carousel-item-directive'\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class CarouselItemElement {}\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '.ngsl-carousel-dot-directive'\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class CarouselDotElement {}\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'ngsl-carousel',\n exportAs: 'ngsl-carousel',\n templateUrl: './ngsl-carousel.component.html',\n styleUrls: ['./ngsl-carousel.component.scss']\n})\nexport class NgslCarouselComponent implements AfterContentInit {\n /* carousel start item */\n @ContentChildren(NgslCarouselItemDirective) items: QueryList<NgslCarouselItemDirective>;\n @ViewChildren(CarouselItemElement, { read: ElementRef }) private itemsElements: QueryList<ElementRef>;\n @ViewChild('track') private carousel: ElementRef;\n /* carousel end item */\n\n /* carousel start dot */\n @ContentChildren(NgslCarouselDotDirective) dotsList: QueryList<NgslCarouselDotDirective>;\n @ViewChildren(CarouselDotElement, { read: ElementRef }) private dotElements: QueryList<ElementRef>;\n @ViewChild('dotTrack') private dotTrack: ElementRef;\n /* carousel end dot */\n\n /* Input props start*/\n @Input() timing = 450;\n @Input() rewindTiming = 900;\n @Input() arrows = true;\n @Input() dots = true;\n @Input() infinity = true;\n @Input() dynamicTiming = false;\n @Input() autoplay = true;\n @Input() perView = 1;\n /* Input props end*/\n private player: AnimationPlayer;\n private action = null;\n currentSlide = 0;\n prevSlide = null;\n nextSlide = null;\n trackWidth = {};\n\n private buildAnimation(offset) {\n const duration = this.action === 'REWIND' ? this.rewindTiming : this.timing;\n return this.builder.build([\n animate(`${duration}ms cubic-bezier(0.165, 0.840, 0.440, 1.000)`, style({ transform: `translateX(${offset}%)` }))\n ]);\n }\n\n private changeSlide(action) {\n this.setSlidesIndex();\n const itemW = (100 / this.items.length) / this.perView;\n const offset = (itemW * this.currentSlide) * this.perView;\n const myAnimation: AnimationFactory = this.buildAnimation(-offset);\n this.player = myAnimation.create(this.carousel.nativeElement);\n this.player.play();\n // console.log(`changeSlide action: ${action}, is current slide: `, this.currentSlide + 1);\n }\n\n goToSlide(index) {\n if (this.dynamicTiming) {\n // В разработке, тестовая опция\n this.timing = this.timing + (55 * (index - this.currentSlide));\n }\n this.currentSlide = index;\n this.changeSlide('go to slide');\n }\n\n next() {\n const countSlides = this.items.length;\n if (this.currentSlide + 1 === countSlides && this.infinity) {\n this.currentSlide = 0;\n this.action = 'REWIND';\n this.changeSlide('rewind to first slide');\n return;\n }\n if (this.currentSlide + 1 === countSlides && !this.infinity) {\n return;\n }\n\n this.currentSlide++;\n this.action = 'NEXT_SLIDE';\n this.changeSlide('next slide');\n }\n\n prev() {\n const countSlides = this.items.length;\n if (this.currentSlide === 0 && this.infinity) {\n this.currentSlide = countSlides - 1;\n this.action = 'REWIND';\n this.changeSlide('rewind to last slide');\n return;\n }\n if (this.currentSlide === 0 && !this.infinity) {\n return;\n }\n\n this.currentSlide--;\n this.action = 'PREV_SLIDE';\n this.changeSlide('prev slide');\n }\n\n private setSlidesIndex() {\n this.prevSlide = this.currentSlide === 0 ? this.items.length - 1 : this.currentSlide - 1;\n this.nextSlide = this.currentSlide === this.items.length - 1 ? 0 : this.currentSlide + 1;\n }\n\n private removeDotsInDomElements() {\n const position = this.perView > 1 ? this.dotsList.length - this.perView : null;\n this.dotsList.toArray().forEach((dot, i) => {\n if (i > position) { dot.isVisible = false; }\n });\n }\n\n private setInitValues() {\n this.setSlidesIndex();\n if (this.perView > 1) {\n this.removeDotsInDomElements();\n }\n this.trackWidth = {\n width: `${(100 * this.items.length) / this.perView}%`\n };\n }\n\n constructor(private builder: AnimationBuilder) {}\n\n ngAfterContentInit() {\n this.setInitValues();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgslCarouselComponent, CarouselItemElement, CarouselDotElement } from './ngsl-carousel.component';\nimport { NgslCarouselItemDirective } from './ngsl-carousel-item.directive';\nimport { NgslCarouselDotDirective } from './ngsl-carousel-dot.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n NgslCarouselComponent,\n NgslCarouselItemDirective,\n NgslCarouselDotDirective,\n CarouselItemElement,\n CarouselDotElement\n ],\n exports: [\n NgslCarouselComponent,\n NgslCarouselItemDirective,\n NgslCarouselDotDirective,\n CarouselItemElement,\n CarouselDotElement\n ]\n\n})\nexport class NgslCarouselModule { }\n"]}