{"version":3,"file":"edsis-component-carousel.mjs","sources":["../../../library/component/carousel/carousel.component.ts","../../../library/component/carousel/edsis-component-carousel.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport {\n  Component,\n  Directive,\n  ElementRef,\n  PLATFORM_ID,\n  computed,\n  effect,\n  forwardRef,\n  inject,\n  input,\n  output,\n  signal,\n  viewChild,\n  type InputSignal,\n  type Signal,\n} from '@angular/core';\nimport EmblaCarousel, {\n  type EmblaCarouselType,\n  type EmblaOptionsType,\n  type EmblaPluginType,\n} from 'embla-carousel';\nimport { cn } from '@edsis/component/class';\n\nexport type CarouselApi = EmblaCarouselType;\nexport type CarouselOptions = EmblaOptionsType;\nexport type CarouselPlugin = EmblaPluginType;\nexport type CarouselOrientation = 'horizontal' | 'vertical';\n\n@Directive()\nexport abstract class CarouselContextBase {\n  abstract readonly orientation: Signal<CarouselOrientation>;\n  abstract readonly canScrollPrev: Signal<boolean>;\n  abstract readonly canScrollNext: Signal<boolean>;\n\n  abstract registerViewport(viewport: HTMLElement): void;\n  abstract unregisterViewport(viewport: HTMLElement): void;\n  abstract scrollPrev(): void;\n  abstract scrollNext(): void;\n  abstract scrollTo(index: number): void;\n}\n\n@Component({\n  selector: 'Carousel',\n  providers: [{ provide: CarouselContextBase, useExisting: forwardRef(() => CarouselComponent) }],\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"region\"',\n    '[attr.aria-roledescription]': '\"carousel\"',\n    '[attr.aria-label]': 'label()',\n    '[attr.data-orientation]': 'orientation()',\n    '[attr.tabindex]': 'keyboard() ? 0 : null',\n    '(keydown)': 'onKeydown($event)',\n  },\n  template: `<ng-content />`,\n})\nexport class CarouselComponent extends CarouselContextBase {\n  override readonly orientation = input<CarouselOrientation>('horizontal');\n  readonly opts: InputSignal<CarouselOptions> = input<CarouselOptions>({});\n  readonly plugins: InputSignal<readonly CarouselPlugin[]> = input<readonly CarouselPlugin[]>([]);\n  readonly keyboard = input<boolean>(true);\n  readonly label = input<string>('Carousel');\n  readonly class = input<string>('');\n\n  readonly apiReady = output<CarouselApi>();\n  readonly apiChange = output<CarouselApi | null>();\n\n  readonly selectedIndex = signal(0);\n  readonly slideCount = signal(0);\n  override readonly canScrollPrev = signal(false);\n  override readonly canScrollNext = signal(false);\n\n  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n  private readonly viewport = signal<HTMLElement | null>(null);\n  private api: CarouselApi | null = null;\n\n  protected readonly classes = computed(() => cn('relative block', this.class()));\n\n  constructor() {\n    super();\n\n    effect((onCleanup) => {\n      const viewport = this.viewport();\n      const orientation = this.orientation();\n      const opts = this.opts();\n      const plugins = this.plugins();\n\n      if (!this.isBrowser || !viewport) {\n        this.api = null;\n        this.resetState();\n        return;\n      }\n\n      const carousel = EmblaCarousel(\n        viewport,\n        { ...opts, axis: orientation === 'horizontal' ? 'x' : 'y' },\n        [...plugins],\n      );\n      const updateState = (): void => this.updateState(carousel);\n\n      this.api = carousel;\n      this.apiChange.emit(carousel);\n      this.apiReady.emit(carousel);\n\n      updateState();\n      carousel.on('select', updateState);\n      carousel.on('reInit', updateState);\n      carousel.on('resize', updateState);\n\n      onCleanup(() => {\n        carousel.destroy();\n        if (this.api === carousel) {\n          this.api = null;\n          this.apiChange.emit(null);\n          this.resetState();\n        }\n      });\n    });\n  }\n\n  override registerViewport(viewport: HTMLElement): void {\n    this.viewport.set(viewport);\n  }\n\n  override unregisterViewport(viewport: HTMLElement): void {\n    if (this.viewport() === viewport) {\n      this.viewport.set(null);\n    }\n  }\n\n  override scrollPrev(): void {\n    this.api?.scrollPrev();\n  }\n\n  override scrollNext(): void {\n    this.api?.scrollNext();\n  }\n\n  override scrollTo(index: number): void {\n    this.api?.scrollTo(index);\n  }\n\n  protected onKeydown(event: KeyboardEvent): void {\n    if (!this.keyboard()) return;\n\n    const horizontal = this.orientation() === 'horizontal';\n    const previousKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n    const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n\n    if (event.key === previousKey) {\n      event.preventDefault();\n      this.scrollPrev();\n      return;\n    }\n\n    if (event.key === nextKey) {\n      event.preventDefault();\n      this.scrollNext();\n      return;\n    }\n\n    if (event.key === 'Home') {\n      event.preventDefault();\n      this.scrollTo(0);\n      return;\n    }\n\n    if (event.key === 'End') {\n      event.preventDefault();\n      this.scrollTo(Math.max(0, this.slideCount() - 1));\n    }\n  }\n\n  private updateState(carousel: CarouselApi): void {\n    this.slideCount.set(carousel.scrollSnapList().length);\n    this.selectedIndex.set(carousel.selectedScrollSnap());\n    this.canScrollPrev.set(carousel.canScrollPrev());\n    this.canScrollNext.set(carousel.canScrollNext());\n  }\n\n  private resetState(): void {\n    this.selectedIndex.set(0);\n    this.slideCount.set(0);\n    this.canScrollPrev.set(false);\n    this.canScrollNext.set(false);\n  }\n}\n\n@Component({\n  selector: 'CarouselContent',\n  host: {\n    '[class]': '\"block\"',\n  },\n  template: `\n    <div #viewport class=\"overflow-hidden\">\n      <div [class]=\"contentClasses()\"><ng-content /></div>\n    </div>\n  `,\n})\nexport class CarouselContentComponent {\n  private readonly ctx = inject(CarouselContextBase);\n  private readonly viewport = viewChild<ElementRef<HTMLElement>>('viewport');\n\n  readonly class = input<string>('');\n\n  protected readonly contentClasses = computed(() =>\n    cn('flex', this.ctx.orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', this.class()),\n  );\n\n  ngAfterViewInit(): void {\n    const viewport = this.viewport()?.nativeElement;\n    if (viewport) this.ctx.registerViewport(viewport);\n  }\n\n  ngOnDestroy(): void {\n    const viewport = this.viewport()?.nativeElement;\n    if (viewport) this.ctx.unregisterViewport(viewport);\n  }\n}\n\n@Component({\n  selector: 'CarouselItem',\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"group\"',\n    '[attr.aria-roledescription]': '\"slide\"',\n    '[attr.aria-label]': 'ariaLabel()',\n  },\n  template: `<ng-content />`,\n})\nexport class CarouselItemComponent {\n  private readonly ctx = inject(CarouselContextBase);\n\n  readonly ariaLabel = input<string | null>(null);\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(\n      'min-w-0 shrink-0 grow-0 basis-full',\n      this.ctx.orientation() === 'horizontal' ? 'pl-4' : 'pt-4',\n      this.class(),\n    ),\n  );\n}\n\n@Component({\n  selector: 'button[CarouselPrevious]',\n  host: {\n    '[class]': 'classes()',\n    type: 'button',\n    '[attr.aria-label]': 'label()',\n    '[disabled]': '!ctx.canScrollPrev() || null',\n    '(click)': 'ctx.scrollPrev()',\n  },\n  template: `\n    <svg\n      aria-hidden=\"true\"\n      class=\"h-4 w-4\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      stroke-width=\"2\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n    >\n      <path d=\"m15 18-6-6 6-6\" />\n    </svg>\n  `,\n})\nexport class CarouselPreviousComponent {\n  protected readonly ctx = inject(CarouselContextBase);\n\n  readonly label = input<string>('Previous slide');\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(carouselButtonClasses, carouselPreviousPlacement(this.ctx.orientation()), this.class()),\n  );\n}\n\n@Component({\n  selector: 'button[CarouselNext]',\n  host: {\n    '[class]': 'classes()',\n    type: 'button',\n    '[attr.aria-label]': 'label()',\n    '[disabled]': '!ctx.canScrollNext() || null',\n    '(click)': 'ctx.scrollNext()',\n  },\n  template: `\n    <svg\n      aria-hidden=\"true\"\n      class=\"h-4 w-4\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      stroke-width=\"2\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  `,\n})\nexport class CarouselNextComponent {\n  protected readonly ctx = inject(CarouselContextBase);\n\n  readonly label = input<string>('Next slide');\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(carouselButtonClasses, carouselNextPlacement(this.ctx.orientation()), this.class()),\n  );\n}\n\nconst carouselButtonClasses =\n  'absolute inline-flex h-8 w-8 items-center justify-center rounded-full border border-border bg-background p-0 text-foreground shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50';\n\nfunction carouselPreviousPlacement(orientation: CarouselOrientation): string {\n  return orientation === 'horizontal'\n    ? '-left-12 top-1/2 -translate-y-1/2'\n    : '-top-12 left-1/2 -translate-x-1/2 rotate-90';\n}\n\nfunction carouselNextPlacement(orientation: CarouselOrientation): string {\n  return orientation === 'horizontal'\n    ? '-right-12 top-1/2 -translate-y-1/2'\n    : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}