{"version":3,"file":"primeng-carousel.mjs","sources":["../../src/app/components/carousel/carousel.ts","../../src/app/components/carousel/primeng-carousel.ts"],"sourcesContent":["import { Component, Input, ElementRef, ViewChild, AfterContentInit, TemplateRef, ContentChildren, QueryList, NgModule, NgZone, EventEmitter, Output, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, SimpleChanges } from '@angular/core';\nimport { PrimeTemplate, SharedModule, Header, Footer } from 'primeng/api';\nimport { RippleModule } from 'primeng/ripple';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\n\n@Component({\n\tselector: 'p-carousel',\n\ttemplate: `\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./carousel.css'],\n host: {\n 'class': 'p-element'\n }\n})\nexport class Carousel implements AfterContentInit {\n\n\t@Input() get page():number {\n\t\treturn this._page;\n\t}\n\tset page(val:number) {\n\t\tif (this.isCreated && val !== this._page) {\n\t\t\tif (this.autoplayInterval) {\n\t\t\t\tthis.stopAutoplay();\n\t\t\t\tthis.allowAutoplay = false;\n\t\t\t}\n\n\t\t\tif (val > this._page && val <= (this.totalDots() - 1)) {\n\t\t\t\tthis.step(-1, val);\n\t\t\t}\n\t\t\telse if (val < this._page ) {\n\t\t\t\tthis.step(1, val);\n\t\t\t}\n\t\t}\n\n\t\tthis._page = val;\n\t}\n\n\t@Input() get numVisible():number {\n\t\treturn this._numVisible;\n\t}\n\tset numVisible(val:number) {\n\t\tthis._numVisible = val;\n\t}\n\n\t@Input() get numScroll():number {\n\t\treturn this._numVisible;\n\t}\n\tset numScroll(val:number) {\n\t\tthis._numScroll = val;\n\t}\n\n\t@Input() responsiveOptions: any[];\n\n\t@Input() orientation = \"horizontal\";\n\n\t@Input() verticalViewPortHeight = \"300px\";\n\n\t@Input() contentClass: string = \"\";\n\n\t@Input() indicatorsContentClass: string = \"\";\n\n\t@Input() indicatorsContentStyle: any;\n\n\t@Input() indicatorStyleClass: string = \"\";\n\n\t@Input() indicatorStyle: any;\n\n\t@Input() get value() :any[] {\n\t\treturn this._value;\n\t};\n\tset value(val) {\n\t\tthis._value = val;\n\t}\n\n\t@Input() circular: boolean = false;\n\n\t@Input() showIndicators: boolean = true;\n\n\t@Input() showNavigators: boolean = true;\n\n\t@Input() autoplayInterval:number = 0;\n\n\t@Input() style: any;\n\n\t@Input() styleClass: string;\n\n @Output() onPage: EventEmitter = new EventEmitter();\n\n\t@ViewChild('itemsContainer') itemsContainer: ElementRef;\n\n\t@ContentChild(Header) headerFacet;\n\n @ContentChild(Footer) footerFacet;\n\n\t@ContentChildren(PrimeTemplate) templates: QueryList;\n\n\t_numVisible: number = 1;\n\n\t_numScroll: number = 1;\n\n\t_oldNumScroll: number = 0;\n\n\tprevState: any = {\n\t\tnumScroll:0,\n\t\tnumVisible:0,\n\t\tvalue: []\n\t};\n\n\tdefaultNumScroll:number = 1;\n\n\tdefaultNumVisible:number = 1;\n\n\t_page: number = 0;\n\n\t_value: any[];\n\n\tcarouselStyle:any;\n\n\tid:string;\n\n\ttotalShiftedItems;\n\n\tisRemainingItemsAdded:boolean = false;\n\n\tanimationTimeout:any;\n\n\ttranslateTimeout:any;\n\n\tremainingItems: number = 0;\n\n\t_items: any[];\n\n\tstartPos: any;\n\n\tdocumentResizeListener: any;\n\n\tclonedItemsForStarting: any[];\n\n\tclonedItemsForFinishing: any[];\n\n\tallowAutoplay: boolean;\n\n\tinterval: any;\n\n\tisCreated: boolean;\n\n\tswipeThreshold: number = 20;\n\n itemTemplate: TemplateRef;\n\n headerTemplate: TemplateRef;\n\n footerTemplate: TemplateRef;\n\n\tconstructor(public el: ElementRef, public zone: NgZone, public cd: ChangeDetectorRef) {\n\t\tthis.totalShiftedItems = this.page * this.numScroll * -1;\n\t}\n\n\tngOnChanges(simpleChange: SimpleChanges) {\n\t\tif (simpleChange.value) {\n\t\t\tif (this.circular && this._value) {\n\t\t\t\tthis.setCloneItems();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isCreated) {\n\n\t\t\tif (simpleChange.numVisible) {\n\t\t\t\tif (this.responsiveOptions) {\n\t\t\t\t\tthis.defaultNumVisible = this.numVisible;\n\t\t\t\t}\n\n\t\t\t\tif (this.isCircular()) {\n\t\t\t\t\tthis.setCloneItems();\n\t\t\t\t}\n\n\t\t\t\tthis.createStyle();\n\t\t\t\tthis.calculatePosition();\n\t\t\t}\n\n\t\t\tif (simpleChange.numScroll) {\n\t\t\t\tif (this.responsiveOptions) {\n\t\t\t\t\tthis.defaultNumScroll = this.numScroll;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.id = UniqueComponentId();\n\t\tthis.allowAutoplay = !!this.autoplayInterval;\n\n\t\tif (this.circular) {\n\t\t\tthis.setCloneItems();\n\t\t}\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.defaultNumScroll = this._numScroll;\n\t\t\tthis.defaultNumVisible = this._numVisible;\n\t\t}\n\n\t\tthis.createStyle();\n\t\tthis.calculatePosition();\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.bindDocumentListeners();\n\t\t}\n\n\t\tthis.templates.forEach((item) => {\n\t\t\tswitch (item.getType()) {\n\t\t\t\tcase 'item':\n\t\t\t\t\tthis.itemTemplate = item.template;\n break;\n\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.itemTemplate = item.template;\n break;\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterContentChecked() {\n\t\tconst isCircular = this.isCircular();\n\t\tlet totalShiftedItems = this.totalShiftedItems;\n\n\t\tif (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n\t\t\tif (this.autoplayInterval) {\n\t\t\t\tthis.stopAutoplay();\n\t\t\t}\n\n\t\t\tthis.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n\n\t\t\tlet page = this._page;\n\t\t\tif (this.totalDots() !== 0 && page >= this.totalDots()) {\n page = this.totalDots() - 1;\n\t\t\t\tthis._page = page;\n\t\t\t\tthis.onPage.emit({\n\t\t\t\t\tpage: this.page\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttotalShiftedItems = (page * this._numScroll) * -1;\n if (isCircular) {\n totalShiftedItems -= this._numVisible;\n }\n\n\t\t\tif (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n\t\t\t\ttotalShiftedItems += (-1 * this.remainingItems) + this._numScroll;\n\t\t\t\tthis.isRemainingItemsAdded = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.isRemainingItemsAdded = false;\n\t\t\t}\n\n\t\t\tif (totalShiftedItems !== this.totalShiftedItems) {\n this.totalShiftedItems = totalShiftedItems;\n }\n\n\t\t\tthis._oldNumScroll = this._numScroll;\n\t\t\tthis.prevState.numScroll = this._numScroll;\n\t\t\tthis.prevState.numVisible = this._numVisible;\n\t\t\tthis.prevState.value = [...this._value];\n\n\t\t\tif (this.totalDots() > 0 && this.itemsContainer.nativeElement) {\n\t\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\t}\n\n\t\t\tthis.isCreated = true;\n\n\t\t\tif (this.autoplayInterval && this.isAutoplay()) {\n\t\t\t\tthis.startAutoplay();\n\t\t\t}\n\t\t}\n\n\t\tif (isCircular) {\n if (this.page === 0) {\n totalShiftedItems = -1 * this._numVisible;\n }\n else if (totalShiftedItems === 0) {\n totalShiftedItems = -1 * this.value.length;\n if (this.remainingItems > 0) {\n this.isRemainingItemsAdded = true;\n }\n }\n\n if (totalShiftedItems !== this.totalShiftedItems) {\n\t\t\t\tthis.totalShiftedItems = totalShiftedItems;\n }\n\t\t}\n\t}\n\n\tcreateStyle() {\n\t\t\tif (!this.carouselStyle) {\n\t\t\t\tthis.carouselStyle = document.createElement('style');\n\t\t\t\tthis.carouselStyle.type = 'text/css';\n\t\t\t\tdocument.body.appendChild(this.carouselStyle);\n\t\t\t}\n\n\t\t\tlet innerHTML = `\n #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${ (100/ this.numVisible) }%\n\t\t\t}\n `;\n\n\t\t\tif (this.responsiveOptions) {\n\t\t\t\tthis.responsiveOptions.sort((data1, data2) => {\n\t\t\t\t\tconst value1 = data1.breakpoint;\n\t\t\t\t\tconst value2 = data2.breakpoint;\n\t\t\t\t\tlet result = null;\n\n\t\t\t\t\tif (value1 == null && value2 != null)\n\t\t\t\t\t\tresult = -1;\n\t\t\t\t\telse if (value1 != null && value2 == null)\n\t\t\t\t\t\tresult = 1;\n\t\t\t\t\telse if (value1 == null && value2 == null)\n\t\t\t\t\t\tresult = 0;\n\t\t\t\t\telse if (typeof value1 === 'string' && typeof value2 === 'string')\n\t\t\t\t\t\tresult = value1.localeCompare(value2, undefined, { numeric: true });\n\t\t\t\t\telse\n\t\t\t\t\t\tresult = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n\t\t\t\t\treturn -1 * result;\n\t\t\t\t});\n\n\t\t\t\tfor (let i = 0; i < this.responsiveOptions.length; i++) {\n\t\t\t\t\tlet res = this.responsiveOptions[i];\n\n\t\t\t\t\tinnerHTML += `\n @media screen and (max-width: ${res.breakpoint}) {\n #${this.id} .p-carousel-item {\n flex: 1 0 ${ (100/ res.numVisible) }%\n }\n }\n `\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.carouselStyle.innerHTML = innerHTML;\n\t\t}\n\n\tcalculatePosition() {\n\t\tif (this.responsiveOptions) {\n\t\t\tlet windowWidth = window.innerWidth;\n\t\t\tlet matchedResponsiveData = {\n\t\t\t\tnumVisible: this.defaultNumVisible,\n\t\t\t\tnumScroll: this.defaultNumScroll\n\t\t\t};\n\n\t\t\tfor (let i = 0; i < this.responsiveOptions.length; i++) {\n\t\t\t\tlet res = this.responsiveOptions[i];\n\n\t\t\t\tif (parseInt(res.breakpoint, 10) >= windowWidth) {\n\t\t\t\t\tmatchedResponsiveData = res;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._numScroll !== matchedResponsiveData.numScroll) {\n\t\t\t\tlet page = this._page;\n\t\t\t\tpage = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);\n\n\t\t\t\tlet totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;\n\n\t\t\t\tif (this.isCircular()) {\n\t\t\t\t\ttotalShiftedItems -= matchedResponsiveData.numVisible;\n\t\t\t\t}\n\n\t\t\t\tthis.totalShiftedItems = totalShiftedItems;\n\t\t\t\tthis._numScroll = matchedResponsiveData.numScroll;\n\n\t\t\t\tthis._page = page;\n\t\t\t\tthis.onPage.emit({\n\t\t\t\t\tpage: this.page\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this._numVisible !== matchedResponsiveData.numVisible) {\n\t\t\t\tthis._numVisible = matchedResponsiveData.numVisible;\n\t\t\t\tthis.setCloneItems();\n\t\t\t}\n\n\t\t\tthis.cd.markForCheck();\n\t\t}\n\t}\n\n\tsetCloneItems() {\n\t\tthis.clonedItemsForStarting = [];\n\t\tthis.clonedItemsForFinishing = [];\n\t\tif (this.isCircular()) {\n\t\t\tthis.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n\t\t\tthis.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n\t\t}\n\t}\n\n\tfirstIndex() {\n\t\treturn this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);\n\t}\n\n\tlastIndex() {\n\t\treturn this.firstIndex() + this.numVisible - 1;\n\t}\n\n\ttotalDots() {\n\t\treturn this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n\t}\n\n\ttotalDotsArray() {\n\t\tconst totalDots = this.totalDots();\n\t\treturn totalDots <= 0 ? [] : Array(totalDots).fill(0);\n\t}\n\n\tisVertical() {\n\t\treturn this.orientation === 'vertical';\n\t}\n\n\tisCircular() {\n\t\treturn this.circular && this.value && this.value.length >= this.numVisible;\n\t}\n\n\tisAutoplay() {\n\t\treturn this.autoplayInterval && this.allowAutoplay;\n\t}\n\n\tisForwardNavDisabled() {\n\t\treturn this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());\n\t}\n\n\tisBackwardNavDisabled() {\n\t\treturn this.isEmpty() || (this._page <= 0 && !this.isCircular());\n\t}\n\n\tisEmpty() {\n\t\treturn !this.value || this.value.length === 0;\n\t}\n\n\tnavForward(e,index?) {\n\t\tif (this.isCircular() || this._page < (this.totalDots() - 1)) {\n\t\t\tthis.step(-1, index);\n\t\t}\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (e && e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tnavBackward(e,index?) {\n\t\tif (this.isCircular() || this._page !== 0) {\n\t\t\tthis.step(1, index);\n\t\t}\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (e && e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tonDotClick(e, index) {\n\t\tlet page = this._page;\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (index > page) {\n\t\t\tthis.navForward(e, index);\n\t\t}\n\t\telse if (index < page) {\n\t\t\tthis.navBackward(e, index);\n\t\t}\n\t}\n\n\tstep(dir, page) {\n\t\tlet totalShiftedItems = this.totalShiftedItems;\n\t\tconst isCircular = this.isCircular();\n\n\t\tif (page != null) {\n\t\t\ttotalShiftedItems = (this._numScroll * page) * -1;\n\n\t\t\tif (isCircular) {\n\t\t\t\ttotalShiftedItems -= this._numVisible;\n\t\t\t}\n\n\t\t\tthis.isRemainingItemsAdded = false;\n\t\t}\n\t\telse {\n\t\t\ttotalShiftedItems += (this._numScroll * dir);\n\t\t\tif (this.isRemainingItemsAdded) {\n\t\t\t\ttotalShiftedItems += this.remainingItems - (this._numScroll * dir);\n\t\t\t\tthis.isRemainingItemsAdded = false;\n\t\t\t}\n\n\t\t\tlet originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;\n\t\t\tpage = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));\n\t\t}\n\n\t\tif (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {\n\t\t\ttotalShiftedItems = -1 * (this.value.length + this._numVisible);\n\t\t\tpage = 0;\n\t\t}\n\t\telse if (isCircular && this.page === 0 && dir === 1) {\n\t\t\ttotalShiftedItems = 0;\n\t\t\tpage = (this.totalDots() - 1);\n\t\t}\n\t\telse if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n\t\t\ttotalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));\n\t\t\tthis.isRemainingItemsAdded = true;\n\t\t}\n\n\t\tif (this.itemsContainer) {\n\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\tthis.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n\t\t}\n\n\t\tthis.totalShiftedItems = totalShiftedItems;\n\t\tthis._page = page;\n\t\tthis.onPage.emit({\n\t\t\tpage: this.page\n\t\t});\n\t}\n\n\tstartAutoplay() {\n\t\tthis.interval = setInterval(() => {\n\t\t\tif (this.totalDots() > 0) {\n\t\t\t\tif (this.page === (this.totalDots() - 1)) {\n\t\t\t\t\tthis.step(-1, 0);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.step(-1, this.page + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tthis.autoplayInterval);\n\t}\n\n\tstopAutoplay() {\n\t\tif (this.interval) {\n\t\t\tclearInterval(this.interval);\n\t\t}\n\t}\n\n\tonTransitionEnd() {\n\t\tif (this.itemsContainer) {\n\t\t\tthis.itemsContainer.nativeElement.style.transition = '';\n\n\t\t\tif ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {\n\t\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\t}\n\t\t}\n\t}\n\n\tonTouchStart(e) {\n\t\tlet touchobj = e.changedTouches[0];\n\n\t\tthis.startPos = {\n\t\t\tx: touchobj.pageX,\n\t\t\ty: touchobj.pageY\n\t\t};\n\t}\n\n\tonTouchMove(e) {\n\t\tif (e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tonTouchEnd(e) {\n\t\tlet touchobj = e.changedTouches[0];\n\n\t\tif (this.isVertical()) {\n\t\t\tthis.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n\t\t}\n\t\telse {\n\t\t\tthis.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n\t\t}\n\t}\n\n\tchangePageOnTouch(e, diff) {\n\t\tif (Math.abs(diff) > this.swipeThreshold) {\n\t\t\tif (diff < 0) {\n\t\t\t\tthis.navForward(e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.navBackward(e);\n\n\t\t\t}\n\t\t}\n\t}\n\n\tbindDocumentListeners() {\n\t\tif (!this.documentResizeListener) {\n\t\t\tthis.documentResizeListener = (e) => {\n\t\t\t\tthis.calculatePosition();\n\t\t\t};\n\n\t\t\twindow.addEventListener('resize', this.documentResizeListener);\n\t\t}\n\t}\n\n\tunbindDocumentListeners() {\n\t\tif (this.documentResizeListener) {\n\t\t\twindow.removeEventListener('resize', this.documentResizeListener);\n\t\t\tthis.documentResizeListener = null;\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.unbindDocumentListeners();\n\t\t}\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t}\n }\n\n}\n\n@NgModule({\n\timports: [CommonModule, SharedModule, RippleModule],\n\texports: [CommonModule, Carousel, SharedModule],\n\tdeclarations: [Carousel]\n})\nexport class CarouselModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}