{"version":3,"file":"ngx-hm-carousel.mjs","sources":["../../../../../libs/angular/ngx-hm-carousel/src/lib/ngx-hm-carousel-item.directive.ts","../../../../../libs/angular/ngx-hm-carousel/src/lib/ngx-hm-carousel-dynamic.directive.ts","../../../../../libs/angular/ngx-hm-carousel/src/lib/ngx-hm-carousel.component.ts","../../../../../libs/angular/ngx-hm-carousel/src/lib/ngx-hm-carousel.component.html","../../../../../libs/angular/ngx-hm-carousel/src/ngx-hm-carousel.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[ngx-hm-carousel-item]',\n  standalone: true,\n})\nexport class NgxHmCarouselItemDirective {}\n","import {\n  Directive,\n  TemplateRef,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport { input } from '@angular/core';\n\n// TODO: ssr problem should not hide on ssr\n// TODO: show number change should recalculate is show and init show number\n@Directive({\n  selector: '[ngxHmCarouselDynamic]',\n  standalone: true,\n})\nexport class NgxHmCarouselDynamicDirective {\n  private _view = inject(ViewContainerRef);\n  private _template = inject<TemplateRef<any>>(TemplateRef<any>);\n  index = input<number | undefined>(undefined, {\n    alias: 'ngxHmCarouselDynamic',\n  });\n  length = input(0, { alias: 'ngxHmCarouselDynamicLength' });\n  show = input(1, { alias: 'ngxHmCarouselDynamicShow' });\n\n  currentI = input(0, {\n    alias: 'ngxHmCarouselDynamicIndex',\n    transform: (value: number) => {\n      if (!this.completed) {\n        const nextI = value + this.show();\n        const prevI = value - this.show();\n        if (\n          this.index() === 0 ||\n          this.index() === this.length() - 1 ||\n          this.index() === nextI ||\n          this.index() === prevI ||\n          this.index() === value\n        ) {\n          this._view.createEmbeddedView(this._template);\n          this.completed = true;\n        }\n      }\n\n      return value;\n    },\n  });\n\n  private completed = false;\n\n  constructor() {\n    this._view.clear();\n  }\n}\n","import {\n  AsyncPipe,\n  DOCUMENT,\n  isPlatformBrowser,\n  NgTemplateOutlet,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  contentChild,\n  contentChildren,\n  DestroyRef,\n  effect,\n  ElementRef,\n  EmbeddedViewRef,\n  forwardRef,\n  inject,\n  input,\n  NgZone,\n  OnDestroy,\n  PLATFORM_ID,\n  Renderer2,\n  signal,\n  TemplateRef,\n  viewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n  BehaviorSubject,\n  bufferCount,\n  filter,\n  forkJoin,\n  fromEvent,\n  interval,\n  merge,\n  Observable,\n  of,\n  Subject,\n  Subscription,\n  switchMap,\n  takeUntil,\n  tap,\n  timer,\n} from 'rxjs';\n\nimport { resizeObservable } from '@nghedgehog/core';\n\nimport { NgxHmCarouselItemDirective } from './ngx-hm-carousel-item.directive';\nimport { NgxHmCarouselBreakPointUp } from './ngx-hm-carousel.model';\n\n@Component({\n  selector: 'ngx-hm-carousel',\n  templateUrl: './ngx-hm-carousel.component.html',\n  styleUrls: ['./ngx-hm-carousel.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NgxHmCarouselComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [NgTemplateOutlet, AsyncPipe],\n})\nexport class NgxHmCarouselComponent implements ControlValueAccessor, OnDestroy {\n  private platformId = inject<any>(PLATFORM_ID);\n  private _document = inject<any>(DOCUMENT);\n  private _destroyRef = inject<any>(DestroyRef);\n  private _renderer = inject(Renderer2);\n  private _zone = inject(NgZone);\n  private _cd = inject(ChangeDetectorRef);\n  container = viewChild.required('containerElm', { read: ElementRef });\n  btnPrev = viewChild<ElementRef>('prev');\n  btnNext = viewChild<ElementRef>('next');\n  progressContainerElm = viewChild('progress', { read: ElementRef });\n\n  // get all item elms\n  itemElms = contentChildren(NgxHmCarouselItemDirective, {\n    read: ElementRef,\n    descendants: true,\n  });\n\n  contentPrev = contentChild('carouselPrev', { read: TemplateRef });\n  contentNext = contentChild('carouselNext', { read: TemplateRef });\n  dotElm = contentChild<TemplateRef<any>>('carouselDot');\n  progressElm = contentChild<TemplateRef<any>>('carouselProgress');\n\n  infiniteContainer = contentChild('infiniteContainer', {\n    read: ViewContainerRef,\n  });\n\n  contentContent = contentChild.required('carouselContent', {\n    read: TemplateRef,\n  });\n\n  /** the data you using with *ngFor, it need when infinite mode or autoplay mode */\n  data = input<any[]>([]);\n\n  /** when infinite is true, the animation time with item, default is 400. */\n  aniTime = input(400);\n\n  /** this class will add in #containerElm when model change */\n  aniClass = input('transition');\n\n  /**\n   * this class will add when carousel auto play,\n   * this default autoplay animation is same as aniClass\n   */\n  aniClassAuto = input(this.aniClass());\n\n  /**\n   * user move picture with the container width rate,\n   * when more than that rate, it will go to next or prev,\n   * set false will never move with distance rate,\n   * default is `0.15`\n   */\n  panBoundary = input<number | false>(0.15, { alias: 'pan-boundary' });\n\n  /** when `show-num` is bigger than 1, the first item align, default is `center` */\n  align = input<'left' | 'center' | 'right'>('center');\n\n  /**\n   * disable when drag occur the child element will follow touch point.\n   * default is `false`\n   */\n  notDrag = input(false, { alias: 'not-follow-pan' });\n\n  /**\n   * the event binding state for stop auto play when mouse move over\n   */\n  mouseEnable = input(false, { alias: 'mouse-enable' });\n\n  /** each auto play between time */\n  delay = input(8000, { alias: 'between-delay' });\n\n  /** auto play direction, default is `right`. */\n  direction = input<'left' | 'right'>('right', { alias: 'autoplay-direction' });\n\n  /** how many number with each scroll, default is `1`. */\n  scrollNum = input(1, { alias: 'scroll-num' });\n\n  /** Could user scroll many item once, simulate with scrollbar, default is `false` */\n  isDragMany = input(false, { alias: 'drag-many' });\n\n  /** Minimal velocity required before recognizing, unit is in px per ms, default `0.3` */\n  swipeVelocity = input(0.3, { alias: 'swipe-velocity' });\n\n  /**\n   * switch show number with custom logic like css\n   * @media (min-width: `number`px)\n   */\n  breakpoint = input<NgxHmCarouselBreakPointUp[]>([]);\n\n  /** disable drag event with touch and mouse pan moving, default is `false` */\n  disableDrag = input(undefined, {\n    alias: 'disable-drag',\n    transform: (value: boolean) => {\n      if (this.rootElm) {\n        if (value) {\n          this.destroyHammer();\n        } else {\n          this.hammer = this.bindHammer();\n        }\n      }\n      return value;\n    },\n  });\n\n  /** is the carousel can move infinite */\n  infinite = input(false, {\n    alias: 'infinite',\n  });\n\n  /** auto play speed */\n  speed = input(undefined, {\n    alias: 'autoplay-speed',\n    transform: (value: number) => {\n      this.speedChange.next(value);\n      return value;\n    },\n  });\n\n  /** PinchRecognizer that you want to add to hammer event */\n  recognizers = input<Recognizer[]>([]);\n\n  /** PinchRecognizer that you want to add to hammer event */\n  stopPanListener = input(false);\n  private _showNum = 1;\n  /**\n   * how many number items to show once, default is `1`\n   * set `auto` to using `[breakpoint]` set value.\n   */\n  showNum = input(this._showNum, {\n    alias: 'show-num',\n    transform: (value: number | 'auto') => {\n      if (value === 'auto') {\n        this.isAutoNum = true;\n      } else {\n        this._showNum = +value;\n        if (this.rootElm) {\n          this.setViewWidth();\n          this.reSetAlignDistance();\n        }\n      }\n\n      return this._showNum;\n    },\n  });\n\n  /** is that carousel auto play */\n  autoplay = input(undefined, {\n    alias: 'autoplay',\n    transform: (value: boolean) => {\n      if (isPlatformBrowser(this.platformId)) {\n        if (this.elms) {\n          this.progressWidth = 0;\n          if (value) {\n            this.doNextSub$ = this.doNext$?.subscribe();\n          } else {\n            if (this.doNextSub$) {\n              this.doNextSub$.unsubscribe();\n            }\n          }\n        }\n      }\n      return value;\n    },\n  });\n\n  get currentIndex() {\n    return this._currentIndex;\n  }\n  set currentIndex(value) {\n    // if now index is not equal to save index, do something\n    if (this.currentIndex !== value) {\n      // if the value is not contain with the boundary not handler\n      if (\n        !this.runLoop() &&\n        !(0 <= value && value <= this.itemElms().length - 1)\n      ) {\n        return;\n      }\n      this._currentIndex = value;\n      if (this.elms) {\n        if (this.autoplay() && !this.isFromAuto) {\n          this._zone.runOutsideAngular(() => {\n            this.stopEvent.next(undefined);\n            this.callRestart();\n          });\n        }\n        this.drawView(this.currentIndex, this.hasInitWriteValue);\n        if (this.isDragMany()) {\n          this.hasInitWriteValue = true;\n        }\n      }\n      if (\n        0 <= this.currentIndex &&\n        this.currentIndex <= this.itemElms().length - 1\n      ) {\n        this._zone.run(() => {\n          this.onChange(this.currentIndex);\n          this._cd.detectChanges();\n        });\n      }\n    }\n    this.isFromAuto = false;\n  }\n\n  get progressWidth() {\n    return this._progressWidth;\n  }\n  set progressWidth(value) {\n    const containerElm = this.progressContainerElm();\n    if (this.progressElm() && containerElm && this.autoplay()) {\n      this._progressWidth = value;\n      this._renderer.setStyle(\n        (containerElm.nativeElement as HTMLElement).children[0],\n        'width',\n        `${this.progressWidth}%`,\n      );\n    }\n  }\n\n  get grabbing() {\n    return this._grabbing;\n  }\n  set grabbing(value: boolean) {\n    if (this._grabbing !== value) {\n      // console.log(value);\n      this._zone.run(() => {\n        this._grabbing = value;\n        if (value) {\n          this._renderer.addClass(this.containerElm, 'grabbing');\n        } else {\n          this.panCount = 0;\n          this.callRestart();\n          this._renderer.removeClass(this.containerElm, 'grabbing');\n        }\n        this._cd.detectChanges();\n      });\n    }\n  }\n\n  // using for check mouse or touchend\n  leaveObs$ = merge(\n    fromEvent<MouseEvent>(this._document, 'mouseup'),\n    fromEvent<TouchEvent>(this._document, 'touchend'),\n  ).pipe(\n    tap((e: Event) => {\n      this.grabbing = false;\n      e.stopPropagation();\n      e.preventDefault();\n    }),\n  );\n\n  hammer!: HammerManager | null;\n\n  private set left(value: number) {\n    if (isPlatformBrowser(this.platformId)) {\n      this._renderer.setStyle(\n        this.containerElm,\n        'transform',\n        `translateX(${value}px)`,\n      );\n    } else {\n      this._renderer.setStyle(\n        this.containerElm,\n        'transform',\n        `translateX(${value}%)`,\n      );\n    }\n  }\n\n  private get maxRightIndex() {\n    let addIndex = 0;\n    switch (this.align()) {\n      case 'left':\n        addIndex = 0;\n        break;\n      case 'center':\n        addIndex = (this.showNum() as number) - 1;\n        break;\n      case 'right':\n        addIndex = (this.showNum() as number) - 1;\n        break;\n    }\n    return this.itemElms().length - 1 - this._showNum + 1 + addIndex;\n  }\n\n  runLoop = computed(() => this.autoplay() || this.infinite());\n\n  private get lengthOne() {\n    return this.itemElms().length === 1;\n  }\n\n  private get rootElmWidth() {\n    return isPlatformBrowser(this.platformId)\n      ? this.rootElm.getBoundingClientRect().width\n      : 100;\n  }\n\n  private set containerElmWidth(value: number) {\n    this.setStyle(this.containerElm, 'width', value);\n  }\n\n  private isFromAuto = true;\n  private isAutoNum = false;\n  private mouseOnContainer = false;\n  private alignDistance = 0;\n  private elmWidth = 0;\n\n  private rootElm!: HTMLElement;\n  private containerElm!: HTMLElement;\n\n  private elms!: Array<HTMLElement>;\n  private infiniteElmRefs = signal<Array<EmbeddedViewRef<any>>>([]);\n\n  private saveTimeOut$?: Subscription;\n  private doNextSub$?: Subscription;\n  private doNext$?: Observable<any>;\n\n  private restart = new BehaviorSubject<any>(null);\n  private speedChange = new BehaviorSubject(5000);\n  private stopEvent = new Subject<any>();\n\n  private _progressWidth = 0;\n  private _currentIndex = 0;\n  private _grabbing = false;\n\n  private panCount = 0;\n\n  // this variable use for check the init value is write with ngModel,\n  // when init first, not set with animation\n  private hasInitWriteValue = false;\n\n  protected readonly itemElmsChanges = toObservable(this.itemElms);\n\n  constructor() {\n    effect(() => {\n      this.infiniteElmRefs().forEach((ref) => {\n        this.addStyle(ref.rootNodes[0], {\n          visibility: this.runLoop() ? 'visible' : 'hidden',\n        });\n      });\n    });\n\n    const effectRef = effect(\n      () => {\n        this.rootElm = this.container().nativeElement;\n        this.containerElm = this.rootElm.children[0] as HTMLElement;\n\n        this.init();\n\n        forkJoin([\n          this.bindClick(),\n          // when item changed, remove old hammer binding, and reset width\n          this.itemElmsChanges.pipe(\n            // detectChanges to change view dots\n            tap(() => {\n              if (this.currentIndex > this.itemElms().length - 1) {\n                // pass the change detection check,\n                requestAnimationFrame(() => {\n                  this.currentIndex = this.itemElms().length - 1;\n                });\n              }\n              this.destroy();\n              this.removeInfiniteElm();\n              this.init();\n              this.progressWidth = 0;\n            }),\n            tap(() => this._cd.detectChanges()),\n          ),\n          resizeObservable(this.rootElm, () => this.containerResize()),\n        ])\n          .pipe(takeUntilDestroyed(this._destroyRef))\n          .subscribe();\n\n        // only exec once\n        effectRef.destroy();\n      },\n      {\n        allowSignalWrites: true,\n      },\n    );\n  }\n\n  ngOnDestroy() {\n    this.destroy();\n  }\n\n  writeValue(value: any) {\n    if (value || value === 0) {\n      this.currentIndex = value;\n      this.hasInitWriteValue = true;\n    }\n  }\n\n  registerOnChange(fn: (value: any) => any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => any) {\n    this.onTouched = fn;\n  }\n\n  private onChange = (_: any) => {\n    //\n  };\n  private onTouched = () => {\n    //\n  };\n\n  private init() {\n    this.initVariable();\n    this.setViewWidth(true);\n    this.reSetAlignDistance();\n    if (!this.disableDrag()) {\n      this.hammer = this.bindHammer();\n    }\n    this.drawView(this.currentIndex, false);\n    if (isPlatformBrowser(this.platformId) && this.runLoop()) {\n      this.addInfiniteElm();\n    }\n  }\n\n  private destroy() {\n    this.destroyHammer();\n\n    if (this.autoplay()) {\n      this.doNextSub$?.unsubscribe();\n    }\n  }\n\n  private destroyHammer() {\n    if (this.hammer) {\n      this.hammer.destroy();\n    }\n  }\n\n  private addInfiniteElm() {\n    const infiniteContainer = this.infiniteContainer();\n    const showNum = this.showNum();\n\n    if (!infiniteContainer || typeof showNum !== 'number') return;\n    for (let i = 1; i <= showNum; i++) {\n      const elm = infiniteContainer.createEmbeddedView(this.contentContent(), {\n        $implicit: this.data()[this.itemElms().length - i],\n        index: this.itemElms().length - i,\n      });\n      this.addStyle(elm.rootNodes[0], {\n        position: 'absolute',\n        // boxShadow: `0 0 0 5000px rgba(200, 75, 75, 0.5) inset`,\n        transform: `translateX(-${100 * i}%)`,\n        visibility: this.runLoop() ? 'visible' : 'hidden',\n      });\n      this.setStyle(elm.rootNodes[0], 'width', this.elmWidth);\n\n      const elm2 = infiniteContainer.createEmbeddedView(this.contentContent(), {\n        $implicit: this.data()[i - 1],\n        index: i - 1,\n      });\n      this.addStyle(elm2.rootNodes[0], {\n        // boxShadow: `0 0 0 5000px rgba(200, 75, 75, 0.5) inset`,\n        position: 'absolute',\n        right: 0,\n        top: 0,\n        transform: `translateX(${100 * i}%)`,\n        visibility: this.runLoop() ? 'visible' : 'hidden',\n      });\n      this.setStyle(elm2.rootNodes[0], 'width', this.elmWidth);\n\n      elm.detectChanges();\n      elm2.detectChanges();\n\n      this.infiniteElmRefs.set([...this.infiniteElmRefs(), elm, elm2]);\n    }\n  }\n\n  private removeInfiniteElm() {\n    this.infiniteElmRefs().forEach((a) => {\n      a.detach();\n      a.destroy();\n    });\n    if (this.infiniteContainer()) {\n      this.infiniteContainer()!.clear();\n    }\n    this.infiniteElmRefs.set([]);\n  }\n\n  private containerResize() {\n    this.setViewWidth();\n    this.reSetAlignDistance();\n\n    const showNum = this.showNum();\n    const touchEnd = typeof showNum === 'number' && showNum >= this.elms.length;\n\n    if (this.align() !== 'center' && touchEnd) {\n      this.currentIndex = 0;\n    }\n\n    this.drawView(this.currentIndex, false);\n  }\n\n  private initVariable() {\n    this._zone.runOutsideAngular(() => {\n      this.elms = this.itemElms().map((x) => x.nativeElement);\n\n      let startEvent = this.restart.asObservable();\n      let stopEvent = this.stopEvent.asObservable();\n      if (this.mouseEnable()) {\n        startEvent = merge(\n          startEvent,\n          fromEvent(this.containerElm, 'mouseleave').pipe(\n            // when leave, we should reverse grabbing state to set the mouseOn state,\n            // because when the grabbing, the mask will on, and it will occur leave again\n            filter(() => !this.grabbing),\n            tap(() => (this.mouseOnContainer = false)),\n          ),\n        );\n        stopEvent = merge(\n          stopEvent,\n          fromEvent(this.containerElm, 'mouseover').pipe(\n            tap(() => (this.mouseOnContainer = true)),\n          ),\n        );\n      }\n\n      this.doNext$ = startEvent.pipe(\n        // not using debounceTime, it will stop mouseover event detect, will cause mouse-enable error\n        // debounceTime(this.delay),\n        switchMap(() => this.speedChange),\n        switchMap(() =>\n          timer(this.delay()).pipe(\n            switchMap(() => this.runProgress(20)),\n            tap(() => {\n              this.isFromAuto = true;\n              // console.log('next');\n              if (this.direction() === 'left') {\n                this.currentIndex -= this.scrollNum();\n              } else {\n                this.currentIndex += this.scrollNum();\n              }\n            }),\n            takeUntil(stopEvent.pipe(tap(() => (this.progressWidth = 0)))),\n          ),\n        ),\n      );\n\n      if (this.autoplay()) {\n        this.doNextSub$ = this.doNext$.subscribe();\n      }\n    });\n  }\n\n  private reSetAlignDistance() {\n    switch (this.align()) {\n      case 'center':\n        this.alignDistance = (this.rootElmWidth - this.elmWidth) / 2;\n        break;\n      case 'left':\n        this.alignDistance = 0;\n        break;\n      case 'right':\n        this.alignDistance = this.rootElmWidth - this.elmWidth;\n        break;\n    }\n  }\n\n  private setViewWidth(isInit?: boolean) {\n    if (this.isAutoNum) {\n      this._showNum = this.getAutoNum();\n    }\n    this._renderer.addClass(this.containerElm, 'grab');\n    if (isInit) {\n      // remain one elm height\n      this._renderer.addClass(\n        this.containerElm,\n        'ngx-hm-carousel-display-nowrap',\n      );\n    }\n    this.elmWidth = this.rootElmWidth / this._showNum;\n\n    this._renderer.removeClass(\n      this.containerElm,\n      'ngx-hm-carousel-display-nowrap',\n    );\n\n    this.containerElmWidth = this.elmWidth * this.elms.length;\n\n    this._renderer.setStyle(this.containerElm, 'position', 'relative');\n\n    this.infiniteElmRefs().forEach((ref) => {\n      this.setStyle(ref.rootNodes[0], 'width', this.elmWidth);\n    });\n    this.elms.forEach((elm: HTMLElement) => {\n      this.setStyle(elm, 'width', this.elmWidth);\n    });\n  }\n\n  private bindHammer() {\n    if (!isPlatformBrowser(this.platformId)) {\n      return null;\n    }\n    return this._zone.runOutsideAngular(() => {\n      const hm = new Hammer.Manager(this.containerElm);\n\n      const pan = new Hammer.Pan({\n        direction: Hammer.DIRECTION_HORIZONTAL,\n        threshold: 0,\n      });\n\n      hm.add(pan);\n\n      hm.on('panleft panright panend pancancel', (e: HammerInput) => {\n        // console.log(e.type);\n\n        if (this.stopPanListener()) {\n          return;\n        }\n\n        if (this.lengthOne) {\n          return;\n        }\n\n        this.removeContainerTransition();\n\n        if (this.autoplay()) {\n          this._zone.runOutsideAngular(() => {\n            this.stopEvent.next(undefined);\n          });\n        }\n\n        switch (e.type) {\n          case 'panleft':\n          case 'panright':\n            {\n              this.panCount++;\n              // only when panmove more than two times, set move\n              if (this.panCount < 2) {\n                return;\n              }\n\n              this.grabbing = true;\n              const showNum = this.showNum();\n              // When show-num is bigger than length, stop hammer\n              if (\n                this.align() !== 'center' &&\n                typeof showNum === 'number' &&\n                showNum >= this.elms.length\n              ) {\n                this.hammer?.stop(true);\n                return;\n              }\n              // Slow down at the first and last pane.\n              if (!this.runLoop() && this.outOfBound(e.type)) {\n                e.deltaX *= 0.2;\n              }\n\n              if (!this.notDrag()) {\n                this.left =\n                  -this.currentIndex * this.elmWidth +\n                  this.alignDistance +\n                  e.deltaX;\n              }\n\n              //  if not drag many, when bigger than half\n              if (!this.isDragMany()!) {\n                if (Math.abs(e.deltaX) > this.elmWidth * 0.5) {\n                  if (e.deltaX > 0) {\n                    this.currentIndex -= this.scrollNum();\n                  } else {\n                    this.currentIndex += this.scrollNum();\n                  }\n                  this.hammer?.stop(true);\n                  return;\n                }\n              }\n            }\n            break;\n          case 'pancancel':\n            this.drawView(this.currentIndex);\n            break;\n\n          case 'panend':\n            {\n              const panBoundary = this.panBoundary();\n              // if boundary more than rate\n              if (\n                panBoundary !== false &&\n                Math.abs(e.deltaX) > this.elmWidth * panBoundary\n              ) {\n                const moveNum = this.isDragMany()\n                  ? Math.ceil(Math.abs(e.deltaX) / this.elmWidth)\n                  : this.scrollNum();\n\n                const prevIndex = this.currentIndex - moveNum;\n                const nextIndex = this.currentIndex + moveNum;\n\n                // if right\n                if (e.deltaX > 0) {\n                  this.goPrev(prevIndex);\n                  // left\n                } else {\n                  this.goNext(nextIndex);\n                }\n                break;\n              } else if (\n                e.velocityX < -this.swipeVelocity() &&\n                e.distance > 10\n              ) {\n                this.goNext(this.currentIndex + this.scrollNum());\n              } else if (\n                e.velocityX > this.swipeVelocity() &&\n                e.distance > 10\n              ) {\n                this.goPrev(this.currentIndex - this.scrollNum());\n              } else {\n                this.drawView(this.currentIndex);\n              }\n            }\n            break;\n        }\n      });\n\n      this.recognizers().forEach((recognizer) => {\n        hm.add(recognizer);\n      });\n\n      return hm;\n    });\n  }\n\n  private goPrev(prevIndex: number) {\n    if (!this.runLoop() && prevIndex < 0) {\n      prevIndex = 0;\n      this.drawView(0);\n    }\n    this.currentIndex = prevIndex;\n  }\n\n  private goNext(nextIndex: number) {\n    if (!this.runLoop() && nextIndex > this.maxRightIndex) {\n      nextIndex = this.maxRightIndex;\n      this.drawView(nextIndex);\n    }\n    this.currentIndex = nextIndex;\n  }\n\n  private bindClick() {\n    const nextBtn = this.btnNext();\n    const prevBtn = this.btnPrev();\n    if (nextBtn && prevBtn) {\n      return forkJoin([\n        fromEvent(nextBtn.nativeElement, 'click').pipe(\n          tap(() => this.currentIndex++),\n        ),\n        fromEvent(prevBtn.nativeElement, 'click').pipe(\n          tap(() => this.currentIndex--),\n        ),\n      ]);\n    }\n    return of(null);\n  }\n\n  private callRestart() {\n    // if that is autoplay\n    // if that mouse is not on container( only mouse-enable is true, the state maybe true)\n    // if now is grabbing, skip this restart, using grabbing change restart\n    if (this.autoplay()! && !this.mouseOnContainer && !this.grabbing) {\n      this._zone.runOutsideAngular(() => {\n        this.restart.next(null);\n      });\n    }\n  }\n\n  private drawView(\n    index: number,\n    isAnimation = true,\n    isFromAuto = this.isFromAuto,\n  ) {\n    // move element only on length is more than 1\n    if (this.elms.length > 1) {\n      this.removeContainerTransition();\n      this.left = -(index * this.elmWidth - this.alignDistance);\n\n      if (isAnimation) {\n        if (isFromAuto) {\n          this._renderer.addClass(this.containerElm, this.aniClassAuto());\n        } else {\n          this._renderer.addClass(this.containerElm, this.aniClass());\n        }\n        // if infinite move to next index with timeout\n        this.infiniteHandler(index);\n      }\n    } else {\n      this.left = this.alignDistance;\n    }\n  }\n\n  private removeContainerTransition() {\n    this._renderer.removeClass(this.containerElm, this.aniClass());\n    this._renderer.removeClass(this.containerElm, this.aniClassAuto());\n  }\n\n  private infiniteHandler(index: number) {\n    if (this.runLoop()) {\n      let state = 0;\n      state = index < 0 ? -1 : state;\n      state = index > this.itemElms().length - 1 ? 1 : state;\n\n      // index = index % this._showNum;\n      if (state !== 0) {\n        switch (state) {\n          case -1:\n            this._currentIndex =\n              (this.itemElms().length + index) % this.itemElms().length;\n            break;\n          case 1:\n            this._currentIndex = index % this.itemElms().length;\n            break;\n        }\n\n        const isFromAuto = this.isFromAuto;\n        if (this.saveTimeOut$) {\n          this.saveTimeOut$.unsubscribe();\n        }\n\n        this.saveTimeOut$ = timer(this.aniTime())\n          .pipe(\n            switchMap(() => {\n              // if it is any loop carousel, the next event need wait the timeout complete\n              if (this.aniTime() === this.speed()) {\n                this.removeContainerTransition();\n                this.left =\n                  -((this._currentIndex - state) * this.elmWidth) +\n                  this.alignDistance;\n                return timer(50).pipe(\n                  tap(() => {\n                    this.drawView(\n                      this.currentIndex,\n                      this.hasInitWriteValue,\n                      isFromAuto,\n                    );\n                  }),\n                );\n              } else {\n                this.drawView(this.currentIndex, false);\n              }\n              return of(null);\n            }),\n            takeUntil(this.stopEvent),\n          )\n          .subscribe();\n      }\n    }\n  }\n\n  private outOfBound(type: 'panleft' | 'panright') {\n    switch (type) {\n      case 'panleft':\n        return this.currentIndex >= this.maxRightIndex;\n      case 'panright':\n        return this.currentIndex <= 0;\n    }\n  }\n\n  private runProgress(betweenTime: number): Observable<any> {\n    return this._zone.runOutsideAngular(() => {\n      const speed = this.speed()!;\n      const howTimes = speed / betweenTime;\n      const everyIncrease = (100 / speed) * betweenTime;\n      return interval(betweenTime).pipe(\n        tap((t) => {\n          this.progressWidth = (t % howTimes) * everyIncrease;\n        }),\n        bufferCount(howTimes),\n      );\n    });\n  }\n\n  private getAutoNum() {\n    const currWidth = this.rootElmWidth;\n    // check user has had set breakpoint\n    if (this.breakpoint().length > 0) {\n      // get the last biggest point\n      const now = this.breakpoint().find((b) => {\n        return b.width >= currWidth;\n      });\n      // if find value, it is current width\n      if (now) {\n        return now.number;\n      }\n      return this.breakpoint()[this.breakpoint().length - 1].number;\n    }\n\n    // system init show number\n    const initNum = 3;\n    // 610\n    if (currWidth > 300) {\n      return Math.floor(initNum + currWidth / 200);\n    }\n    return initNum;\n  }\n\n  private addStyle(\n    elm: HTMLElement,\n    style: { [key: string]: string | number },\n  ) {\n    if (style) {\n      Object.keys(style).forEach((key) => {\n        const value = style[key];\n        this._renderer.setStyle(elm, key, value);\n      });\n    }\n  }\n\n  private setStyle(elm: HTMLElement, style: string, value: number) {\n    if (isPlatformBrowser(this.platformId)) {\n      this._renderer.setStyle(elm, style, `${value}px`);\n    } else {\n      this._renderer.setStyle(elm, style, `${value}%`);\n    }\n  }\n}\n","<div #containerElm class=\"carousel\">\n  <!-- main content -->\n  <ng-content select=\"[ngx-hm-carousel-container]\" />\n  <!-- left -->\n  @if (contentPrev(); as prevVar) {\n    <div #prev class=\"direction left\">\n      <ng-container *ngTemplateOutlet=\"prevVar\" />\n    </div>\n  }\n  <!--  right -->\n  @if (contentNext(); as nextVar) {\n    <div #next class=\"direction right\">\n      <ng-container *ngTemplateOutlet=\"nextVar\" />\n    </div>\n  }\n  <!-- indicators -->\n  @if (dotElm(); as dotVar) {\n    <ul class=\"indicators\">\n      @for (dot of itemElms(); track dot; let i = $index) {\n        <li (click)=\"currentIndex = i\">\n          <ng-container\n            *ngTemplateOutlet=\"\n              dotVar;\n              context: {\n                $implicit: {\n                  index: i,\n                  currentIndex: currentIndex\n                }\n              }\n            \"\n          />\n        </li>\n      }\n    </ul>\n  }\n  <!-- progress -->\n  @if (autoplay() && progressElm(); as progressVar) {\n    <div #progress>\n      <ng-container *ngTemplateOutlet=\"progressVar\" />\n    </div>\n  }\n\n  @if (grabbing) {\n    <div class=\"mask\">\n      @if (leaveObs$ | async) {}\n    </div>\n  }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}