{"version":3,"file":"ng-nest-ui-carousel.mjs","sources":["../../../../lib/ng-nest/ui/carousel/carousel.property.ts","../../../../lib/ng-nest/ui/carousel/carousel.component.ts","../../../../lib/ng-nest/ui/carousel/carousel.component.html","../../../../lib/ng-nest/ui/carousel/carousel-panel.component.ts","../../../../lib/ng-nest/ui/carousel/carousel-panel.component.html","../../../../lib/ng-nest/ui/carousel/carousel.module.ts","../../../../lib/ng-nest/ui/carousel/ng-nest-ui-carousel.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToNumber, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport type { XNumber, XBoolean, XShadow, XDisplayDirection, XTrigger } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Carousel\r\n * @selector x-carousel\r\n * @decorator component\r\n */\r\nexport const XCarouselPrefix = 'x-carousel';\r\nconst X_CAROUSEL_CONFIG_NAME = 'carousel';\r\n\r\n/**\r\n * Carousel Property\r\n */\r\n@Component({ selector: `${XCarouselPrefix}-property`, template: '' })\r\nexport class XCarouselProperty extends XPropertyFunction(X_CAROUSEL_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 当前激活的幻灯片索引\r\n   * @en_US Index of the currently active slide\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel [active]=\"1\" (activeChange)=\"activeChange($event)\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * <x-carousel [(active)]=\"active\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   * ```typescript\r\n   * active = signal(1)\r\n   * activeChange(active: number) {\r\n   *   console.log(active)\r\n   * }\r\n   * ```\r\n   *\r\n   */\r\n  readonly active = model<number>(0);\r\n  /**\r\n   * @zh_CN 幻灯片高度\r\n   * @en_US Slide height\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel height=\"18rem\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly height = input<string, XNumber>(this.config?.height ?? '15rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 切换器触发方式\r\n   * @en_US Switcher trigger method\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel trigger=\"click\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly trigger = input<XCarouselTrigger>(this.config?.trigger ?? 'hover');\r\n  /**\r\n   * @zh_CN 箭头显示隐藏方式\r\n   * @en_US Arrow shows how to hide\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel arrow=\"always\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * <x-carousel arrow=\"never\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly arrow = input<XCarouselArrow>(this.config?.arrow ?? 'hover');\r\n  /**\r\n   * @zh_CN 幻灯片轮播方向\r\n   * @en_US Slide rotation direction\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel direction=\"vertical\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly direction = input<XCarouselDirection>(this.config?.direction ?? 'horizontal');\r\n  /**\r\n   * @zh_CN 自动切换\r\n   * @en_US Automatic switching\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel autoplay=\"false\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly autoplay = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 自动切换时间间隔，ms\r\n   * @en_US Automatic switching time interval. ms\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel interval=\"5000\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly interval = input<number, XNumber>(3000, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 切换器是否显示在外面\r\n   * @en_US Whether the switcher is displayed outside\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel outside>\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly outside = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 是否以卡片的方式显示幻灯片\r\n   * @en_US Whether to display the slideshow as a card\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel card>\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly card = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 显示文字\r\n   * @en_US Display text\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel text=\"text info\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly text = input<string>('');\r\n  /**\r\n   * @zh_CN 显示进度条\r\n   * @en_US Show progress\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel progress>\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly progress = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 进度条颜色\r\n   * @en_US Progress color\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel progress progressColor=\"blue\">\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly progressColor = input<string>('');\r\n  /**\r\n   * @zh_CN 显示当前页面\r\n   * @en_US Show current page\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel current>\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly current = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 指示器切换方式\r\n * @en_US Indicator switching method\r\n */\r\nexport type XCarouselTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 切换箭头显示方式\r\n * @en_US Toggle arrow display\r\n */\r\nexport type XCarouselArrow = XShadow;\r\n\r\n/**\r\n * @zh_CN 走马灯展示的方向\r\n * @en_US The direction of the revolving lantern\r\n */\r\nexport type XCarouselDirection = XDisplayDirection;\r\n\r\n/**\r\n * Carousel Panel\r\n * @selector x-carousel-panel\r\n * @decorator component\r\n */\r\nexport const XCarouselPanelPrefix = 'x-carousel-panel';\r\n\r\n/**\r\n * Carousel Panel Property\r\n */\r\n@Component({ selector: `${XCarouselPanelPrefix}-property`, template: '' })\r\nexport class XCarouselPanelProperty extends XProperty {\r\n  /**\r\n   * @zh_CN 激活当前幻灯片\r\n   * @en_US Activate the current slide\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-carousel>\r\n   *   <x-carousel-panel>0</x-carousel-panel>\r\n   *   <x-carousel-panel active>1</x-carousel-panel>\r\n   * </x-carousel>\r\n   * ```\r\n   *\r\n   */\r\n  readonly active = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  PLATFORM_ID,\r\n  inject,\r\n  computed,\r\n  viewChild,\r\n  signal\r\n} from '@angular/core';\r\nimport { XCarouselPrefix, XCarouselProperty } from './carousel.property';\r\nimport { XIsUndefined, XIsChange, XIsEmpty, XResize } from '@ng-nest/ui/core';\r\nimport { Subject, Subscription, interval } from 'rxjs';\r\nimport { takeUntil, debounceTime, tap } from 'rxjs/operators';\r\nimport { NgClass, isPlatformBrowser } from '@angular/common';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XProgressComponent } from '@ng-nest/ui/progress';\r\nimport type { XResizeObserver } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n  selector: `${XCarouselPrefix}`,\r\n  imports: [NgClass, XButtonComponent, XProgressComponent],\r\n  templateUrl: './carousel.component.html',\r\n  styleUrls: ['./carousel.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCarouselComponent extends XCarouselProperty {\r\n  carousel = viewChild.required<ElementRef<HTMLElement>>('carousel');\r\n  content = viewChild.required<ElementRef<HTMLElement>>('content');\r\n  start = signal(-1);\r\n  before = signal(-1);\r\n  timer?: Subscription;\r\n  precentTimer?: Subscription;\r\n  platformId = inject(PLATFORM_ID);\r\n  isBrowser = isPlatformBrowser(this.platformId);\r\n  percent = signal(0);\r\n  count = signal(0);\r\n  panels = signal<object[]>([]);\r\n  private unSubject = new Subject<void>();\r\n  private resizeObserver!: XResizeObserver;\r\n\r\n  classMap = computed(() => ({\r\n    [`${XCarouselPrefix}-${this.direction()}`]: !XIsEmpty(this.direction())\r\n  }));\r\n\r\n  updatePanel = new Subject<void>();\r\n\r\n  page = computed(() => this.active() + 1);\r\n\r\n  ngAfterViewInit() {\r\n    this.autoplay() && this.resetInterval();\r\n    XResize(this.content().nativeElement)\r\n      .pipe(\r\n        debounceTime(30),\r\n        tap(({ resizeObserver }) => {\r\n          this.resizeObserver = resizeObserver;\r\n          this.updatePanel.next();\r\n        }),\r\n        takeUntil(this.unSubject)\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  ngOnChanges(simples: SimpleChanges): void {\r\n    const { active, interval } = simples;\r\n    XIsChange(interval) && this.autoplay() && this.resetInterval();\r\n    XIsChange(active) && this.setActiveItem(this.active());\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.timer?.unsubscribe();\r\n    this.precentTimer?.unsubscribe();\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n    this.resizeObserver?.disconnect();\r\n    this.updatePanel.complete();\r\n  }\r\n\r\n  action(index: number, increase: number, event?: string): void {\r\n    if (!XIsUndefined(event) && this.trigger() !== event) return;\r\n    this.autoplay() && this.resetInterval();\r\n    this.setActiveItem(index + increase);\r\n  }\r\n\r\n  resetInterval(): void {\r\n    if (!this.isBrowser) return;\r\n    this.timer?.unsubscribe();\r\n    if (this.progress()) {\r\n      this.precentTimer?.unsubscribe();\r\n      this.percent.set(0);\r\n      const js = this.interval() / 100;\r\n      this.precentTimer = interval(js)\r\n        .pipe(takeUntil(this.unSubject))\r\n        .subscribe(() => {\r\n          this.percent.update((x) => x + 1);\r\n        });\r\n    }\r\n    this.timer = interval(this.interval())\r\n      .pipe(takeUntil(this.unSubject))\r\n      .subscribe(() => {\r\n        this.percent.set(0);\r\n        this.setActiveItem(this.active() + 1);\r\n      });\r\n  }\r\n\r\n  setActiveItem(index: number): void {\r\n    if (this.start() === -1) return;\r\n    this.before.set(this.active());\r\n    const nextValue = index > this.start() ? 0 : index < 0 ? this.start() : index;\r\n    this.active.set(nextValue);\r\n    this.updatePanel.next();\r\n  }\r\n\r\n  getActivated(index: number) {\r\n    return this.active() === index;\r\n  }\r\n}\r\n","<div\r\n  #carousel\r\n  class=\"x-carousel\"\r\n  [ngClass]=\"classMap()\"\r\n  [class.x-carousel-arrow-always]=\"arrow() === 'always'\"\r\n  [class.x-carousel-has-current]=\"current()\"\r\n  [class.x-carousel-indicator-outside]=\"outside() || card()\"\r\n>\r\n  <div #content class=\"x-carousel-content\" [style.height]=\"height()\">\r\n    @if (arrow() !== 'never' && direction() !== 'vertical') {\r\n      <x-button class=\"arrow-left\" icon=\"fto-chevron-left\" (click)=\"action(active(), -1)\"></x-button>\r\n      <x-button class=\"arrow-right\" icon=\"fto-chevron-right\" (click)=\"action(active(), 1)\"></x-button>\r\n    }\r\n    <ng-content></ng-content>\r\n    @if (text()) {\r\n      <div class=\"x-carousel-text\">{{ text() }}</div>\r\n    }\r\n    @if (current()) {\r\n      <div class=\"x-carousel-current\">\r\n        <span class=\"x-carousel-active\">{{ page() }}</span> /\r\n        <span class=\"x-carousel-count\">{{ count() }}</span>\r\n      </div>\r\n    }\r\n    @if (progress()) {\r\n      <div class=\"x-carousel-progress\">\r\n        <x-progress [percent]=\"percent()\" [color]=\"progressColor()\" [info]=\"false\" height=\"0.325rem\"></x-progress>\r\n      </div>\r\n    }\r\n  </div>\r\n  <ul class=\"x-carousel-indicator\">\r\n    @for (panel of panels(); track $index) {\r\n      <li\r\n        [class.x-activated]=\"getActivated($index)\"\r\n        (click)=\"action($index, 0, 'click')\"\r\n        (mouseenter)=\"action($index, 0, 'hover')\"\r\n      >\r\n        <x-button type=\"text\"></x-button>\r\n      </li>\r\n    }\r\n  </ul>\r\n</div>\r\n","import {\r\n  Component,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  ChangeDetectionStrategy,\r\n  inject,\r\n  OnDestroy,\r\n  signal,\r\n  HostBinding,\r\n  computed\r\n} from '@angular/core';\r\nimport { XCarouselPanelPrefix, XCarouselPanelProperty } from './carousel.property';\r\nimport { XCarouselComponent } from './carousel.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n  selector: `${XCarouselPanelPrefix}`,\r\n  templateUrl: './carousel-panel.component.html',\r\n  styleUrls: ['./carousel-panel.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCarouselPanelComponent extends XCarouselPanelProperty implements OnInit, OnDestroy {\r\n  @HostBinding('class.x-carousel-card') get getCard() {\r\n    return !!this.carousel?.card();\r\n  }\r\n  @HostBinding('class.x-activated') get getActivated() {\r\n    return this.activeSignal();\r\n  }\r\n  @HostBinding('class.x-carousel-in-stage') get getInStage() {\r\n    return this.inStage();\r\n  }\r\n  @HostBinding('class.x-carousel-animating') get getAnimating() {\r\n    return this.animating();\r\n  }\r\n  @HostBinding('style.transform') get getTransform() {\r\n    return `${this.translateType()}(${this.translate()}px) scale(${this.scale()})`;\r\n  }\r\n  index = signal(0);\r\n  animating = signal(false);\r\n  preTranslate!: number;\r\n  cardScale = signal(0.83);\r\n  scale = signal(1);\r\n  translate = signal(0);\r\n  translateType = signal('translateX');\r\n  inStage = signal(false);\r\n  unSubject = new Subject<void>();\r\n  carousel = inject(XCarouselComponent, { optional: true, host: true });\r\n  activeSignal = signal(this.active());\r\n  card = computed(() => this.carousel?.card() ?? false);\r\n  private elementRef = inject(ElementRef);\r\n\r\n  ngOnInit() {\r\n    if (!this.carousel) return;\r\n    this.carousel.count.update((x) => x + 1);\r\n    this.carousel.start.update((x) => x + 1);\r\n    this.index.set(this.carousel.start());\r\n\r\n    this.carousel.panels.update((x) => {\r\n      x.push(this.elementRef);\r\n      return [...x];\r\n    });\r\n    this.carousel.updatePanel.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n      this.update();\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (!this.carousel) return;\r\n    this.carousel.start.update((x) => x - 1);\r\n    const idx = this.carousel.panels().indexOf(this.elementRef);\r\n    this.carousel.panels.update((x) => {\r\n      x.splice(idx, 1);\r\n      return [...x];\r\n    });\r\n  }\r\n\r\n  setActive() {\r\n    const isActive: boolean = this.carousel!.active() === this.index();\r\n    if (this.activeSignal() !== isActive) {\r\n      this.activeSignal.set(isActive);\r\n    }\r\n  }\r\n\r\n  setStyles() {\r\n    const width = this.elementRef.nativeElement.offsetWidth;\r\n    const height = this.elementRef.nativeElement.offsetHeight;\r\n    let offset = this.carousel!.active() - this.index();\r\n    let distance = width;\r\n    if (this.carousel!.card()) {\r\n      if (this.carousel!.direction() === 'vertical') {\r\n        console.warn('[x-carousel] vertical direction is not supported in card mode');\r\n      }\r\n      this.inStage.set(Math.round(Math.abs(offset)) <= 1);\r\n      this.translate.set(this.calcCardTranslate(this.index(), this.carousel!.active())!);\r\n      this.scale.set(offset === 0 ? 1 : this.cardScale());\r\n    } else {\r\n      if (this.carousel?.direction() === 'vertical') {\r\n        distance = height;\r\n        this.translateType.set('translateY');\r\n      }\r\n      const map: any = {\r\n        '-2': -distance,\r\n        '-1': distance,\r\n        '0': 0,\r\n        '1': 0 - distance,\r\n        '2': distance\r\n      };\r\n      offset = offset < -2 ? -2 : offset > 2 ? 2 : offset;\r\n      this.translate.set(map[offset]);\r\n    }\r\n    this.animating.set(\r\n      this.carousel!.active() === this.index() ||\r\n        this.carousel!.before() === this.index() ||\r\n        this.carousel!.start() === Math.abs(offset) ||\r\n        this.carousel!.card()\r\n    );\r\n  }\r\n\r\n  calcCardTranslate(index: number, activeIndex: number) {\r\n    const parentWidth = this.carousel!.carousel().nativeElement.offsetWidth;\r\n    let offset: number = index - activeIndex;\r\n    let activeFirstOrLast = this.carousel!.start() > 1 && this.carousel!.start() === Math.abs(offset);\r\n    if (this.inStage() || activeFirstOrLast) {\r\n      if (activeFirstOrLast) offset = offset < 0 ? 1 : -1;\r\n      return (parentWidth * ((2 - this.cardScale()) * offset + 1)) / 4;\r\n    } else if (index < activeIndex) {\r\n      return (-(1 + this.cardScale()) * parentWidth) / 4;\r\n    } else {\r\n      return ((3 + this.cardScale()) * parentWidth) / 4;\r\n    }\r\n  }\r\n\r\n  update() {\r\n    this.setActive();\r\n    this.setStyles();\r\n  }\r\n\r\n  panelClick() {\r\n    if (this.carousel?.card() && this.carousel?.active() !== this.index()) {\r\n      this.carousel?.autoplay() && this.carousel?.resetInterval();\r\n      this.carousel?.setActiveItem(this.index());\r\n    }\r\n  }\r\n}\r\n","<div #carouselPanel class=\"x-carousel-panel\" (click)=\"panelClick()\">\r\n  @if (card()) {\r\n    <div [hidden]=\"activeSignal()\" class=\"x-carousel-mask\"></div>\r\n  }\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XCarouselComponent } from './carousel.component';\r\nimport { XCarouselPanelComponent } from './carousel-panel.component';\r\n\r\n@NgModule({\r\n  imports: [XCarouselComponent, XCarouselPanelComponent],\r\n  exports: [XCarouselComponent, XCarouselPanelComponent]\r\n})\r\nexport class XCarouselModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil"],"mappings":"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"}