{"version":3,"file":"axulus-uikit-carousel.mjs","sources":["../../src/app/components/carousel/carousel.ts","../../src/app/components/carousel/axulus-uikit-carousel.ts"],"sourcesContent":["import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgModule,\n  NgZone,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { Footer, Header, PrimeTemplate, SharedModule } from '@axulus/uikit/api';\nimport { RippleModule } from '@axulus/uikit/ripple';\nimport { UniqueComponentId } from '@axulus/uikit/utils';\n\n@Component({\n  selector: 'p-carousel',\n  template: `\n    <div\n      [attr.id]=\"id\"\n      [ngClass]=\"{\n        'p-carousel p-component': true,\n        'p-carousel-vertical': isVertical(),\n        'p-carousel-horizontal': !isVertical()\n      }\"\n      [ngStyle]=\"style\"\n      [class]=\"styleClass\"\n    >\n      <div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n        <ng-content select=\"p-header\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n      </div>\n      <div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n        <div class=\"p-carousel-container\">\n          <button\n            type=\"button\"\n            *ngIf=\"showNavigators\"\n            [ngClass]=\"{ 'p-carousel-prev p-link': true, 'p-disabled': isBackwardNavDisabled() }\"\n            [disabled]=\"isBackwardNavDisabled()\"\n            (click)=\"navBackward($event)\"\n            pRipple\n          >\n            <span\n              [ngClass]=\"{\n                'p-carousel-prev-icon pi': true,\n                'pi-chevron-left': !isVertical(),\n                'pi-chevron-up': isVertical()\n              }\"\n            ></span>\n          </button>\n          <div class=\"p-carousel-items-content\" [ngStyle]=\"{ height: isVertical() ? verticalViewPortHeight : 'auto' }\">\n            <div\n              #itemsContainer\n              class=\"p-carousel-items-container\"\n              (transitionend)=\"onTransitionEnd()\"\n              (touchend)=\"onTouchEnd($event)\"\n              (touchstart)=\"onTouchStart($event)\"\n              (touchmove)=\"onTouchMove($event)\"\n            >\n              <div\n                *ngFor=\"let item of clonedItemsForStarting; let index = index\"\n                [ngClass]=\"{\n                  'p-carousel-item p-carousel-item-cloned': true,\n                  'p-carousel-item-active': totalShiftedItems * -1 === value.length,\n                  'p-carousel-item-start': 0 === index,\n                  'p-carousel-item-end': clonedItemsForStarting.length - 1 === index\n                }\"\n              >\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n              </div>\n              <div\n                *ngFor=\"let item of value; let index = index\"\n                [ngClass]=\"{\n                  'p-carousel-item': true,\n                  'p-carousel-item-active': firstIndex() <= index && lastIndex() >= index,\n                  'p-carousel-item-start': firstIndex() === index,\n                  'p-carousel-item-end': lastIndex() === index\n                }\"\n              >\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n              </div>\n              <div\n                *ngFor=\"let item of clonedItemsForFinishing; let index = index\"\n                [ngClass]=\"{\n                  'p-carousel-item p-carousel-item-cloned': true,\n                  'p-carousel-item-active': totalShiftedItems * -1 === numVisible,\n                  'p-carousel-item-start': 0 === index,\n                  'p-carousel-item-end': clonedItemsForFinishing.length - 1 === index\n                }\"\n              >\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n              </div>\n            </div>\n          </div>\n          <button\n            type=\"button\"\n            *ngIf=\"showNavigators\"\n            [ngClass]=\"{ 'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled() }\"\n            [disabled]=\"isForwardNavDisabled()\"\n            (click)=\"navForward($event)\"\n            pRipple\n          >\n            <span\n              [ngClass]=\"{\n                'p-carousel-prev-icon pi': true,\n                'pi-chevron-right': !isVertical(),\n                'pi-chevron-down': isVertical()\n              }\"\n            ></span>\n          </button>\n        </div>\n        <ul\n          [ngClass]=\"'p-carousel-indicators p-reset'\"\n          [class]=\"indicatorsContentClass\"\n          [ngStyle]=\"indicatorsContentStyle\"\n          *ngIf=\"showIndicators\"\n        >\n          <li\n            *ngFor=\"let totalDot of totalDotsArray(); let i = index\"\n            [ngClass]=\"{ 'p-carousel-indicator': true, 'p-highlight': _page === i }\"\n          >\n            <button\n              type=\"button\"\n              [ngClass]=\"'p-link'\"\n              (click)=\"onDotClick($event, i)\"\n              [class]=\"indicatorStyleClass\"\n              [ngStyle]=\"indicatorStyle\"\n            ></button>\n          </li>\n        </ul>\n      </div>\n      <div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n        <ng-content select=\"p-footer\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n      </div>\n    </div>\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  @Input() get page(): number {\n    return this._page;\n  }\n  set page(val: number) {\n    if (this.isCreated && val !== this._page) {\n      if (this.autoplayInterval) {\n        this.stopAutoplay();\n        this.allowAutoplay = false;\n      }\n\n      if (val > this._page && val <= this.totalDots() - 1) {\n        this.step(-1, val);\n      } else if (val < this._page) {\n        this.step(1, val);\n      }\n    }\n\n    this._page = val;\n  }\n\n  @Input() get numVisible(): number {\n    return this._numVisible;\n  }\n  set numVisible(val: number) {\n    this._numVisible = val;\n  }\n\n  @Input() get numScroll(): number {\n    return this._numVisible;\n  }\n  set numScroll(val: number) {\n    this._numScroll = val;\n  }\n\n  @Input() responsiveOptions: any[];\n\n  @Input() orientation = 'horizontal';\n\n  @Input() verticalViewPortHeight = '300px';\n\n  @Input() contentClass: string = '';\n\n  @Input() indicatorsContentClass: string = '';\n\n  @Input() indicatorsContentStyle: any;\n\n  @Input() indicatorStyleClass: string = '';\n\n  @Input() indicatorStyle: any;\n\n  @Input() get value(): any[] {\n    return this._value;\n  }\n  set value(val) {\n    this._value = val;\n  }\n\n  @Input() circular: boolean = false;\n\n  @Input() showIndicators: boolean = true;\n\n  @Input() showNavigators: boolean = true;\n\n  @Input() autoplayInterval: number = 0;\n\n  @Input() style: any;\n\n  @Input() styleClass: string;\n\n  @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('itemsContainer') itemsContainer: ElementRef;\n\n  @ContentChild(Header) headerFacet;\n\n  @ContentChild(Footer) footerFacet;\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  _numVisible: number = 1;\n\n  _numScroll: number = 1;\n\n  _oldNumScroll: number = 0;\n\n  prevState: any = {\n    numScroll: 0,\n    numVisible: 0,\n    value: []\n  };\n\n  defaultNumScroll: number = 1;\n\n  defaultNumVisible: number = 1;\n\n  _page: number = 0;\n\n  _value: any[];\n\n  carouselStyle: any;\n\n  id: string;\n\n  totalShiftedItems;\n\n  isRemainingItemsAdded: boolean = false;\n\n  animationTimeout: any;\n\n  translateTimeout: any;\n\n  remainingItems: number = 0;\n\n  _items: any[];\n\n  startPos: any;\n\n  documentResizeListener: any;\n\n  clonedItemsForStarting: any[];\n\n  clonedItemsForFinishing: any[];\n\n  allowAutoplay: boolean;\n\n  interval: any;\n\n  isCreated: boolean;\n\n  swipeThreshold: number = 20;\n\n  itemTemplate: TemplateRef<any>;\n\n  headerTemplate: TemplateRef<any>;\n\n  footerTemplate: TemplateRef<any>;\n\n  constructor(\n    public el: ElementRef,\n    public zone: NgZone,\n    public cd: ChangeDetectorRef,\n    private renderer: Renderer2,\n    @Inject(DOCUMENT) private document: Document\n  ) {\n    this.totalShiftedItems = this.page * this.numScroll * -1;\n  }\n\n  ngOnChanges(simpleChange: SimpleChanges) {\n    if (simpleChange.value) {\n      if (this.circular && this._value) {\n        this.setCloneItems();\n      }\n    }\n\n    if (this.isCreated) {\n      if (simpleChange.numVisible) {\n        if (this.responsiveOptions) {\n          this.defaultNumVisible = this.numVisible;\n        }\n\n        if (this.isCircular()) {\n          this.setCloneItems();\n        }\n\n        this.createStyle();\n        this.calculatePosition();\n      }\n\n      if (simpleChange.numScroll) {\n        if (this.responsiveOptions) {\n          this.defaultNumScroll = this.numScroll;\n        }\n      }\n    }\n  }\n\n  ngAfterContentInit() {\n    this.id = UniqueComponentId();\n    this.allowAutoplay = !!this.autoplayInterval;\n\n    if (this.circular) {\n      this.setCloneItems();\n    }\n\n    if (this.responsiveOptions) {\n      this.defaultNumScroll = this._numScroll;\n      this.defaultNumVisible = this._numVisible;\n    }\n\n    this.createStyle();\n    this.calculatePosition();\n\n    if (this.responsiveOptions) {\n      this.bindDocumentListeners();\n    }\n\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'item':\n          this.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        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  ngAfterContentChecked() {\n    const isCircular = this.isCircular();\n    let totalShiftedItems = this.totalShiftedItems;\n\n    if (\n      this.value &&\n      this.itemsContainer &&\n      (this.prevState.numScroll !== this._numScroll ||\n        this.prevState.numVisible !== this._numVisible ||\n        this.prevState.value.length !== this.value.length)\n    ) {\n      if (this.autoplayInterval) {\n        this.stopAutoplay();\n      }\n\n      this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n\n      let page = this._page;\n      if (this.totalDots() !== 0 && page >= this.totalDots()) {\n        page = this.totalDots() - 1;\n        this._page = page;\n        this.onPage.emit({\n          page: this.page\n        });\n      }\n\n      totalShiftedItems = page * this._numScroll * -1;\n      if (isCircular) {\n        totalShiftedItems -= this._numVisible;\n      }\n\n      if (page === this.totalDots() - 1 && this.remainingItems > 0) {\n        totalShiftedItems += -1 * this.remainingItems + this._numScroll;\n        this.isRemainingItemsAdded = true;\n      } else {\n        this.isRemainingItemsAdded = false;\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n\n      this._oldNumScroll = this._numScroll;\n      this.prevState.numScroll = this._numScroll;\n      this.prevState.numVisible = this._numVisible;\n      this.prevState.value = [...this._value];\n\n      if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical()\n          ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)`\n          : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      }\n\n      this.isCreated = true;\n\n      if (this.autoplayInterval && this.isAutoplay()) {\n        this.startAutoplay();\n      }\n    }\n\n    if (isCircular) {\n      if (this.page === 0) {\n        totalShiftedItems = -1 * this._numVisible;\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        this.totalShiftedItems = totalShiftedItems;\n      }\n    }\n  }\n\n  createStyle() {\n    if (!this.carouselStyle) {\n      this.carouselStyle = this.renderer.createElement('style');\n      this.carouselStyle.type = 'text/css';\n      this.renderer.appendChild(this.document.head, this.carouselStyle);\n    }\n\n    let innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${100 / this.numVisible}%\n\t\t\t}\n        `;\n\n    if (this.responsiveOptions) {\n      this.responsiveOptions.sort((data1, data2) => {\n        const value1 = data1.breakpoint;\n        const value2 = data2.breakpoint;\n        let result = null;\n\n        if (value1 == null && value2 != null) result = -1;\n        else if (value1 != null && value2 == null) result = 1;\n        else if (value1 == null && value2 == null) result = 0;\n        else if (typeof value1 === 'string' && typeof value2 === 'string')\n          result = value1.localeCompare(value2, undefined, { numeric: true });\n        else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n        return -1 * result;\n      });\n\n      for (let i = 0; i < this.responsiveOptions.length; i++) {\n        let res = this.responsiveOptions[i];\n\n        innerHTML += `\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      }\n    }\n\n    this.carouselStyle.innerHTML = innerHTML;\n  }\n\n  calculatePosition() {\n    if (this.responsiveOptions) {\n      let matchedResponsiveData = {\n        numVisible: this.defaultNumVisible,\n        numScroll: this.defaultNumScroll\n      };\n\n      if (typeof window !== 'undefined') {\n        let windowWidth = window.innerWidth;\n        for (let i = 0; i < this.responsiveOptions.length; i++) {\n          let res = this.responsiveOptions[i];\n\n          if (parseInt(res.breakpoint, 10) >= windowWidth) {\n            matchedResponsiveData = res;\n          }\n        }\n      }\n\n      if (this._numScroll !== matchedResponsiveData.numScroll) {\n        let page = this._page;\n        page = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);\n\n        let totalShiftedItems = matchedResponsiveData.numScroll * this.page * -1;\n\n        if (this.isCircular()) {\n          totalShiftedItems -= matchedResponsiveData.numVisible;\n        }\n\n        this.totalShiftedItems = totalShiftedItems;\n        this._numScroll = matchedResponsiveData.numScroll;\n\n        this._page = page;\n        this.onPage.emit({\n          page: this.page\n        });\n      }\n\n      if (this._numVisible !== matchedResponsiveData.numVisible) {\n        this._numVisible = matchedResponsiveData.numVisible;\n        this.setCloneItems();\n      }\n\n      this.cd.markForCheck();\n    }\n  }\n\n  setCloneItems() {\n    this.clonedItemsForStarting = [];\n    this.clonedItemsForFinishing = [];\n    if (this.isCircular()) {\n      this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n      this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n    }\n  }\n\n  firstIndex() {\n    return this.isCircular() ? -1 * (this.totalShiftedItems + this.numVisible) : this.totalShiftedItems * -1;\n  }\n\n  lastIndex() {\n    return this.firstIndex() + this.numVisible - 1;\n  }\n\n  totalDots() {\n    return this.value?.length ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n  }\n\n  totalDotsArray() {\n    const totalDots = this.totalDots();\n    return totalDots <= 0 ? [] : Array(totalDots).fill(0);\n  }\n\n  isVertical() {\n    return this.orientation === 'vertical';\n  }\n\n  isCircular() {\n    return this.circular && this.value && this.value.length >= this.numVisible;\n  }\n\n  isAutoplay() {\n    return this.autoplayInterval && this.allowAutoplay;\n  }\n\n  isForwardNavDisabled() {\n    return this.isEmpty() || (this._page >= this.totalDots() - 1 && !this.isCircular());\n  }\n\n  isBackwardNavDisabled() {\n    return this.isEmpty() || (this._page <= 0 && !this.isCircular());\n  }\n\n  isEmpty() {\n    return !this.value || this.value.length === 0;\n  }\n\n  navForward(e, index?) {\n    if (this.isCircular() || this._page < this.totalDots() - 1) {\n      this.step(-1, index);\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e, index?) {\n    if (this.isCircular() || this._page !== 0) {\n      this.step(1, index);\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onDotClick(e, index) {\n    let page = this._page;\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (index > page) {\n      this.navForward(e, index);\n    } else if (index < page) {\n      this.navBackward(e, index);\n    }\n  }\n\n  step(dir, page) {\n    let totalShiftedItems = this.totalShiftedItems;\n    const isCircular = this.isCircular();\n\n    if (page != null) {\n      totalShiftedItems = this._numScroll * page * -1;\n\n      if (isCircular) {\n        totalShiftedItems -= this._numVisible;\n      }\n\n      this.isRemainingItemsAdded = false;\n    } else {\n      totalShiftedItems += this._numScroll * dir;\n      if (this.isRemainingItemsAdded) {\n        totalShiftedItems += this.remainingItems - this._numScroll * dir;\n        this.isRemainingItemsAdded = false;\n      }\n\n      let originalShiftedItems = isCircular ? totalShiftedItems + this._numVisible : totalShiftedItems;\n      page = Math.abs(Math.floor(originalShiftedItems / this._numScroll));\n    }\n\n    if (isCircular && this.page === this.totalDots() - 1 && dir === -1) {\n      totalShiftedItems = -1 * (this.value.length + this._numVisible);\n      page = 0;\n    } else if (isCircular && this.page === 0 && dir === 1) {\n      totalShiftedItems = 0;\n      page = this.totalDots() - 1;\n    } else if (page === this.totalDots() - 1 && this.remainingItems > 0) {\n      totalShiftedItems += this.remainingItems * -1 - this._numScroll * dir;\n      this.isRemainingItemsAdded = true;\n    }\n\n    if (this.itemsContainer) {\n      this.itemsContainer.nativeElement.style.transform = this.isVertical()\n        ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)`\n        : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n    }\n\n    this.totalShiftedItems = totalShiftedItems;\n    this._page = page;\n    this.onPage.emit({\n      page: this.page\n    });\n  }\n\n  startAutoplay() {\n    this.interval = setInterval(() => {\n      if (this.totalDots() > 0) {\n        if (this.page === this.totalDots() - 1) {\n          this.step(-1, 0);\n        } else {\n          this.step(-1, this.page + 1);\n        }\n      }\n    }, this.autoplayInterval);\n  }\n\n  stopAutoplay() {\n    if (this.interval) {\n      clearInterval(this.interval);\n    }\n  }\n\n  onTransitionEnd() {\n    if (this.itemsContainer) {\n      this.itemsContainer.nativeElement.style.transition = '';\n\n      if ((this.page === 0 || this.page === this.totalDots() - 1) && this.isCircular()) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical()\n          ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)`\n          : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      }\n    }\n  }\n\n  onTouchStart(e) {\n    let touchobj = e.changedTouches[0];\n\n    this.startPos = {\n      x: touchobj.pageX,\n      y: touchobj.pageY\n    };\n  }\n\n  onTouchMove(e) {\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n  onTouchEnd(e) {\n    let touchobj = e.changedTouches[0];\n\n    if (this.isVertical()) {\n      this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n    } else {\n      this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n    }\n  }\n\n  changePageOnTouch(e, diff) {\n    if (Math.abs(diff) > this.swipeThreshold) {\n      if (diff < 0) {\n        this.navForward(e);\n      } else {\n        this.navBackward(e);\n      }\n    }\n  }\n\n  bindDocumentListeners() {\n    if (!this.documentResizeListener && typeof window !== 'undefined') {\n      this.documentResizeListener = (e) => {\n        this.calculatePosition();\n      };\n\n      window.addEventListener('resize', this.documentResizeListener);\n    }\n  }\n\n  unbindDocumentListeners() {\n    if (this.documentResizeListener && typeof window !== 'undefined') {\n      window.removeEventListener('resize', this.documentResizeListener);\n      this.documentResizeListener = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.responsiveOptions) {\n      this.unbindDocumentListeners();\n    }\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n    }\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, SharedModule, RippleModule],\n  exports: [Carousel, SharedModule],\n  declarations: [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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"}