{"version":3,"file":"taiga-ui-kit-components-carousel.mjs","sources":["../../../projects/kit/components/carousel/carousel.directive.ts","../../../projects/kit/components/carousel/carousel-autoscroll.directive.ts","../../../projects/kit/components/carousel/carousel-scroll.directive.ts","../../../projects/kit/components/carousel/carousel.component.ts","../../../projects/kit/components/carousel/carousel.template.html","../../../projects/kit/components/carousel/carousel-buttons.directive.ts","../../../projects/kit/components/carousel/carousel.ts","../../../projects/kit/components/carousel/taiga-ui-kit-components-carousel.ts"],"sourcesContent":["import {isPlatformServer} from '@angular/common';\nimport {Directive, inject, Input, NgZone, PLATFORM_ID} from '@angular/core';\nimport {WA_PAGE_VISIBILITY} from '@ng-web-apis/common';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIfMap, tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n    BehaviorSubject,\n    combineLatest,\n    EMPTY,\n    interval,\n    map,\n    merge,\n    Observable,\n} from 'rxjs';\n\n@Directive({\n    standalone: true,\n})\nexport class TuiCarouselDirective extends Observable<unknown> {\n    private readonly el = tuiInjectElement();\n    private readonly platform = inject(PLATFORM_ID);\n    private readonly visible$ = inject(WA_PAGE_VISIBILITY);\n    private readonly zone = inject(NgZone);\n    private readonly duration$ = new BehaviorSubject(0);\n    private readonly running$ = merge(\n        tuiTypedFromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)),\n        tuiTypedFromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)),\n        tuiTypedFromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)),\n        tuiTypedFromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)),\n        this.visible$,\n    );\n\n    private readonly output$ = isPlatformServer(this.platform)\n        ? EMPTY\n        : combineLatest([this.duration$, this.running$]).pipe(\n              tuiIfMap(\n                  ([duration]) => interval(duration).pipe(tuiZoneOptimized(this.zone)),\n                  (values) => values.every(Boolean),\n              ),\n          );\n\n    constructor() {\n        super((subscriber) => this.output$.subscribe(subscriber));\n    }\n\n    @Input()\n    public set duration(duration: number) {\n        this.duration$.next(Number.isNaN(duration) ? this.duration$.value : duration);\n    }\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiCarouselDirective} from './carousel.directive';\n\n@Directive({\n    standalone: true,\n    selector: '[tuiCarouselAutoscroll]',\n})\nexport class TuiCarouselAutoscroll {\n    @Output()\n    public readonly tuiCarouselAutoscroll = inject(TuiCarouselDirective);\n}\n","import {Directive, Output} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, tap, throttleTime} from 'rxjs';\n\n@Directive({\n    standalone: true,\n    selector: '[tuiCarouselScroll]',\n})\nexport class TuiCarouselScroll {\n    private readonly el = tuiInjectElement();\n\n    @Output()\n    public readonly tuiCarouselScroll = tuiTypedFromEvent(this.el, 'wheel').pipe(\n        filter(({deltaX}) => Math.abs(deltaX) > 20),\n        throttleTime(500, tuiZonefreeScheduler()),\n        map(({deltaX}) => Math.sign(deltaX)),\n        tap(() => {\n            // So we always have space to scroll and overflow-behavior saves us from back nav\n            this.el.scrollLeft = 10;\n        }),\n    );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    TemplateRef,\n} from '@angular/core';\nimport {WaIntersectionObserver} from '@ng-web-apis/intersection-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiSwipeDirection} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_SWIPE_OPTIONS, TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\n@Component({\n    standalone: true,\n    selector: 'tui-carousel',\n    imports: [\n        AsyncPipe,\n        NgForOf,\n        NgIf,\n        NgTemplateOutlet,\n        TuiCarouselAutoscroll,\n        TuiCarouselScroll,\n        TuiPan,\n        TuiSwipe,\n        WaIntersectionObserver,\n    ],\n    templateUrl: './carousel.template.html',\n    styleUrls: ['./carousel.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{provide: TUI_SWIPE_OPTIONS, useValue: {timeout: 200, threshold: 30}}],\n    hostDirectives: [\n        {\n            directive: TuiCarouselDirective,\n            inputs: ['duration'],\n        },\n    ],\n    host: {\n        '[class._transitioned]': 'transitioned',\n        '[class._draggable]': 'draggable',\n        '(touchstart)': 'onTransitioned(false)',\n        '(touchend)': 'onTransitioned(true)',\n        '(mousedown)': 'onTransitioned(false)',\n        '(document:mouseup.zoneless)': 'onTransitioned(true)',\n    },\n})\nexport class TuiCarouselComponent {\n    private readonly el = tuiInjectElement();\n    private readonly cdr = inject(ChangeDetectorRef);\n    private readonly isMobile = inject(TUI_IS_MOBILE);\n    private readonly directive = inject(TuiCarouselDirective);\n    private translate = 0;\n\n    @ContentChildren(TuiItem, {read: TemplateRef})\n    protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n        EMPTY_QUERY;\n\n    protected transitioned = true;\n\n    protected index = 0;\n\n    @Input()\n    public draggable = false;\n\n    @Input()\n    public itemsCount = 1;\n\n    @Output()\n    public readonly indexChange = new EventEmitter<number>();\n\n    @Output()\n    public readonly shift = new EventEmitter<number>();\n\n    @Input('index')\n    public set indexSetter(index: number) {\n        this.index = index;\n        this.directive.duration = NaN;\n    }\n\n    public next(): void {\n        if (this.items && this.index === this.items.length - this.itemsCount) {\n            return;\n        }\n\n        this.updateIndex(this.index + 1);\n    }\n\n    public prev(): void {\n        this.updateIndex(this.index - 1);\n    }\n\n    protected get transform(): string {\n        return `translateX(${100 * this.x}%)`;\n    }\n\n    @tuiPure\n    protected getStyle(itemsCount: number): Partial<CSSStyleDeclaration> {\n        const percent = `${100 / itemsCount}%`;\n\n        return {\n            flexBasis: percent,\n            minWidth: percent,\n            maxWidth: percent,\n        };\n    }\n\n    protected onTransitioned(transitioned: boolean): void {\n        this.transitioned = transitioned;\n\n        if (!transitioned) {\n            this.translate = this.computedTranslate;\n        }\n\n        this.onShift();\n    }\n\n    protected isDisabled(index: number): boolean {\n        return index < this.index || index >= this.index + this.itemsCount;\n    }\n\n    protected onIntersection(\n        {intersectionRatio}: IntersectionObserverEntry,\n        index: number,\n    ): void {\n        if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {\n            this.updateIndex(this.index < index ? index - this.itemsCount + 1 : index);\n        }\n    }\n\n    protected onScroll(delta: number): void {\n        if (!this.isMobile) {\n            if (delta > 0) {\n                this.next();\n            } else {\n                this.prev();\n            }\n        }\n    }\n\n    protected onPan(x: number): void {\n        if (!this.computedDraggable) {\n            return;\n        }\n\n        const min = 1 - this.items.length / this.itemsCount;\n\n        this.translate = tuiClamp(x / this.el.clientWidth + this.translate, min, 0);\n\n        this.onShift();\n    }\n\n    protected onSwipe(direction: TuiSwipeDirection): void {\n        if (direction === 'left') {\n            this.next();\n        } else if (direction === 'right') {\n            this.prev();\n        }\n    }\n\n    protected onAutoscroll(): void {\n        this.updateIndex(this.index === this.items.length - 1 ? 0 : this.index + 1);\n    }\n\n    protected onShift(): void {\n        this.shift.emit(Math.abs((this.x % 1) + 0.5) * 2);\n    }\n\n    private get x(): number {\n        return this.transitioned ? this.computedTranslate : this.translate;\n    }\n\n    private get computedTranslate(): number {\n        return -this.index / this.itemsCount;\n    }\n\n    private get computedDraggable(): boolean {\n        return this.isMobile || this.draggable;\n    }\n\n    private updateIndex(index: number): void {\n        this.index = tuiClamp(index, 0, this.items.length - 1);\n        this.indexChange.emit(this.index);\n        this.cdr.markForCheck();\n    }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<div\n    class=\"t-scroller\"\n    (tuiCarouselScroll)=\"onScroll($event)\"\n>\n    <div\n        waIntersectionObserver\n        waIntersectionThreshold=\"0.5\"\n        class=\"t-wrapper\"\n    >\n        <div\n            class=\"t-items\"\n            [style.transform]=\"transform\"\n            (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n            (tuiPan)=\"onPan($event[0])\"\n            (tuiSwipe)=\"onSwipe($event.direction)\"\n        >\n            <fieldset\n                *ngFor=\"let item of items; let i = index\"\n                class=\"t-item\"\n                [disabled]=\"isDisabled(i)\"\n                [style]=\"getStyle(itemsCount)\"\n                (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n            >\n                <ng-container [ngTemplateOutlet]=\"item\" />\n            </fieldset>\n        </div>\n    </div>\n</div>\n","import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n    standalone: true,\n    selector: '[tuiCarouselButtons]',\n    providers: [\n        tuiButtonOptionsProvider({\n            appearance: 'secondary',\n            size: 'm',\n        }),\n    ],\n})\nexport class TuiCarouselButtons {}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiCarouselComponent} from './carousel.component';\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselButtons} from './carousel-buttons.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\nexport const TuiCarousel = [\n    TuiItem,\n    TuiCarouselComponent,\n    TuiCarouselDirective,\n    TuiCarouselAutoscroll,\n    TuiCarouselButtons,\n    TuiCarouselScroll,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiCarouselDirective"],"mappings":"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"}