{"version":3,"file":"igniteui-angular-carousel.mjs","sources":["../../../projects/igniteui-angular/carousel/src/carousel/enums.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel-base.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.directives.ts","../../../projects/igniteui-angular/carousel/src/carousel/slide.component.ts","../../../projects/igniteui-angular/carousel/src/carousel/slide.component.html","../../../projects/igniteui-angular/carousel/src/carousel/carousel.component.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.component.html","../../../projects/igniteui-angular/carousel/src/carousel/public_api.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.module.ts","../../../projects/igniteui-angular/carousel/src/igniteui-angular-carousel.ts"],"sourcesContent":["\nexport const CarouselAnimationType = {\n    none: 'none',\n    slide: 'slide',\n    fade: 'fade'\n} as const;\nexport type CarouselAnimationType = (typeof CarouselAnimationType)[keyof typeof CarouselAnimationType];\n\nexport const CarouselIndicatorsOrientation = {\n    /**\n     * @deprecated in version 19.1.0. Use `end` instead.\n     */\n    bottom: 'bottom',\n    /**\n     * @deprecated in version 19.1.0. Use `start` instead.\n     */\n    top: 'top',\n    start: 'start',\n    end: 'end'\n} as const;\nexport type CarouselIndicatorsOrientation = (typeof CarouselIndicatorsOrientation)[keyof typeof CarouselIndicatorsOrientation];\n","import { AnimationReferenceMetadata, useAnimation } from '@angular/animations';\nimport { ChangeDetectorRef, Directive, EventEmitter, inject, OnDestroy } from '@angular/core';\nimport { IgxAngularAnimationService } from 'igniteui-angular/core';\nimport { AnimationPlayer, AnimationService } from 'igniteui-angular/core';\nimport { fadeIn, slideInLeft } from 'igniteui-angular/animations';\nimport { CarouselAnimationType } from './enums';\n\nexport enum CarouselAnimationDirection { NONE, NEXT, PREV }\n\nexport interface CarouselAnimationSettings {\n    enterAnimation: AnimationReferenceMetadata;\n    leaveAnimation: AnimationReferenceMetadata;\n}\n\n/** @hidden */\nexport interface IgxSlideComponentBase {\n    direction: CarouselAnimationDirection;\n    previous: boolean;\n}\n\n/** @hidden */\n@Directive()\nexport abstract class IgxCarouselComponentBase implements OnDestroy {\n    private animationService = inject<AnimationService>(IgxAngularAnimationService);\n    protected cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    public animationType: CarouselAnimationType = CarouselAnimationType.slide;\n\n    /** @hidden @internal */\n    public enterAnimationDone = new EventEmitter();\n    /** @hidden @internal */\n    public leaveAnimationDone = new EventEmitter();\n\n    /** @hidden */\n    protected currentItem: IgxSlideComponentBase;\n    /** @hidden */\n    protected previousItem: IgxSlideComponentBase;\n    /** @hidden */\n    protected enterAnimationPlayer?: AnimationPlayer;\n    /** @hidden */\n    protected leaveAnimationPlayer?: AnimationPlayer;\n    /** @hidden */\n    protected defaultAnimationDuration = 320;\n    /** @hidden */\n    protected animationPosition = 0;\n    /** @hidden */\n    protected newDuration = 0;\n    /** @hidden */\n    protected vertical = false;\n\n    public ngOnDestroy(): void {\n        if (this.enterAnimationPlayer) {\n            this.enterAnimationPlayer.destroy();\n            this.enterAnimationPlayer = null;\n        }\n        if (this.leaveAnimationPlayer) {\n            this.leaveAnimationPlayer.destroy();\n            this.leaveAnimationPlayer = null;\n        }\n    }\n\n    /** @hidden */\n    protected triggerAnimations() {\n        if (this.animationType !== CarouselAnimationType.none) {\n            if (this.animationStarted(this.leaveAnimationPlayer) || this.animationStarted(this.enterAnimationPlayer)) {\n                requestAnimationFrame(() => {\n                    this.resetAnimations();\n                    this.playAnimations();\n                });\n            } else {\n                this.playAnimations();\n            }\n        }\n    }\n\n    /** @hidden */\n    protected animationStarted(animation: AnimationPlayer): boolean {\n        return animation && animation.hasStarted();\n    }\n\n    /** @hidden */\n    protected playAnimations() {\n        this.playLeaveAnimation();\n        this.playEnterAnimation();\n    }\n\n    private resetAnimations() {\n        if (this.animationStarted(this.leaveAnimationPlayer)) {\n            this.leaveAnimationPlayer.reset();\n            this.leaveAnimationDone.emit();\n        }\n\n        if (this.animationStarted(this.enterAnimationPlayer)) {\n            this.enterAnimationPlayer.reset();\n            this.enterAnimationDone.emit();\n            this.cdr.markForCheck();\n        }\n    }\n\n    private getAnimation(): CarouselAnimationSettings {\n        let duration;\n        if (this.newDuration) {\n            duration = this.animationPosition ? this.animationPosition * this.newDuration : this.newDuration;\n        } else {\n            duration = this.animationPosition ? this.animationPosition * this.defaultAnimationDuration : this.defaultAnimationDuration;\n        }\n\n        const trans = this.animationPosition ? this.animationPosition * 100 : 100;\n        switch (this.animationType) {\n            case CarouselAnimationType.slide:\n                return {\n                    enterAnimation: useAnimation(slideInLeft,\n                        {\n                            params: {\n                                delay: '0s',\n                                duration: `${duration}ms`,\n                                endOpacity: 1,\n                                startOpacity: 1,\n                                fromPosition: `${this.vertical ? 'translateY' : 'translateX'}(${this.currentItem.direction === 1 ? trans : -trans}%)`,\n                                toPosition: `${this.vertical ? 'translateY(0%)' : 'translateX(0%)'}`\n                            }\n                        }),\n                    leaveAnimation: useAnimation(slideInLeft,\n                        {\n                            params: {\n                                delay: '0s',\n                                duration: `${duration}ms`,\n                                endOpacity: 1,\n                                startOpacity: 1,\n                                fromPosition: `${this.vertical ? 'translateY(0%)' : 'translateX(0%)'}`,\n                                toPosition: `${this.vertical ? 'translateY' : 'translateX'}(${this.currentItem.direction === 1 ? -trans : trans}%)`,\n                            }\n                        })\n                };\n            case CarouselAnimationType.fade:\n                return {\n                    enterAnimation: useAnimation(fadeIn,\n                        { params: { duration: `${duration}ms`, startOpacity: `${this.animationPosition}` } }),\n                    leaveAnimation: null\n                };\n        }\n        return {\n            enterAnimation: null,\n            leaveAnimation: null\n        };\n    }\n\n    private playEnterAnimation() {\n        const animation = this.getAnimation().enterAnimation;\n        if (!animation) {\n            return;\n        }\n\n        this.enterAnimationPlayer = this.animationService.buildAnimation(animation, this.getCurrentElement());\n        this.enterAnimationPlayer.animationEnd.subscribe(() => {\n            // TODO: animation may never end. Find better way to clean up the player\n            if (this.enterAnimationPlayer) {\n                this.enterAnimationPlayer.destroy();\n                this.enterAnimationPlayer = null;\n            }\n            this.animationPosition = 0;\n            this.newDuration = 0;\n            this.previousItem.previous = false;\n            this.enterAnimationDone.emit();\n            this.cdr.markForCheck();\n        });\n        this.previousItem.previous = true;\n        this.enterAnimationPlayer.play();\n    }\n\n    private playLeaveAnimation() {\n        const animation = this.getAnimation().leaveAnimation;\n        if (!animation) {\n            return;\n        }\n\n        this.leaveAnimationPlayer = this.animationService.buildAnimation(animation, this.getPreviousElement());\n        this.leaveAnimationPlayer.animationEnd.subscribe(() => {\n            // TODO: animation may never end. Find better way to clean up the player\n            if (this.leaveAnimationPlayer) {\n                this.leaveAnimationPlayer.destroy();\n                this.leaveAnimationPlayer = null;\n            }\n            this.animationPosition = 0;\n            this.newDuration = 0;\n            this.leaveAnimationDone.emit();\n        });\n        this.leaveAnimationPlayer.play();\n    }\n\n    protected abstract getPreviousElement(): HTMLElement;\n\n    protected abstract getCurrentElement(): HTMLElement;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[igxCarouselIndicator]',\n    standalone: true\n})\nexport class IgxCarouselIndicatorDirective {\n}\n\n@Directive({\n    selector: '[igxCarouselNextButton]',\n    standalone: true\n})\nexport class IgxCarouselNextButtonDirective {\n}\n\n@Directive({\n    selector: '[igxCarouselPrevButton]',\n    standalone: true\n})\nexport class IgxCarouselPrevButtonDirective {\n}\n","import { Component, OnDestroy, Input, HostBinding, Output, EventEmitter, ElementRef, AfterContentChecked, booleanAttribute, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CarouselAnimationDirection, IgxSlideComponentBase } from './carousel-base';\n\n/**\n * A slide component that usually holds an image and/or a caption text.\n * IgxSlideComponent is usually a child component of an IgxCarouselComponent.\n *\n * ```\n * <igx-slide [input bindings] >\n *    <ng-content></ng-content>\n * </igx-slide>\n * ```\n *\n * @export\n */\n@Component({\n    selector: 'igx-slide',\n    templateUrl: 'slide.component.html',\n    standalone: true\n})\nexport class IgxSlideComponent implements AfterContentChecked, OnDestroy, IgxSlideComponentBase {\n    private elementRef = inject(ElementRef);\n\n    /**\n     * Gets/sets the `index` of the slide inside the carousel.\n     * ```html\n     * <igx-carousel>\n     *  <igx-slide index=\"1\"></igx-slide>\n     * <igx-carousel>\n     * ```\n     *\n     * @memberOf IgxSlideComponent\n     */\n    @Input() public index: number;\n\n    /**\n     * Gets/sets the target `direction` for the slide.\n     * ```html\n     * <igx-carousel>\n     *  <igx-slide direction=\"NEXT\"></igx-slide>\n     * <igx-carousel>\n     * ```\n     *\n     * @memberOf IgxSlideComponent\n     */\n    @Input() public direction: CarouselAnimationDirection;\n\n    @Input()\n    public total: number;\n\n    /**\n     * Returns the `tabIndex` of the slide component.\n     * ```typescript\n     * let tabIndex =  this.carousel.tabIndex;\n     * ```\n     *\n     * @memberof IgxSlideComponent\n     * @deprecated in version 19.2.0.\n     */\n    @HostBinding('attr.tabindex')\n    public get tabIndex() {\n        return this.active ? 0 : null;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('attr.id')\n    public id: string;\n\n    /**\n     * Returns the `role` of the slide component.\n     * By default is set to `tabpanel`\n     *\n     * @memberof IgxSlideComponent\n     */\n    @HostBinding('attr.role')\n    public tab = 'tabpanel';\n\n    /** @hidden */\n    @HostBinding('attr.aria-labelledby')\n    public ariaLabelledBy;\n\n    /**\n     * Returns the class of the slide component.\n     * ```typescript\n     * let class =  this.slide.cssClass;\n     * ```\n     *\n     * @memberof IgxSlideComponent\n     */\n    @HostBinding('class.igx-slide')\n    public cssClass = 'igx-slide';\n\n    /**\n     * Gets/sets the `active` state of the slide.\n     * ```html\n     * <igx-carousel>\n     *  <igx-slide [active] =\"false\"></igx-slide>\n     * <igx-carousel>\n     * ```\n     *\n     * Two-way data binding.\n     * ```html\n     * <igx-carousel>\n     *  <igx-slide [(active)] =\"model.isActive\"></igx-slide>\n     * <igx-carousel>\n     * ```\n     *\n     * @memberof IgxSlideComponent\n     */\n    @HostBinding('class.igx-slide--current')\n    @Input({ transform: booleanAttribute })\n    public get active(): boolean {\n        return this._active;\n    }\n\n    public set active(value) {\n        this._active = value;\n        this.activeChange.emit(this._active);\n    }\n\n    @HostBinding('class.igx-slide--previous')\n    @Input({ transform: booleanAttribute }) public previous = false;\n\n    /**\n     * @hidden\n     */\n    @Output() public activeChange = new EventEmitter<boolean>();\n\n    private _active = false;\n    private _destroy$ = new Subject<boolean>();\n\n    /**\n     * Returns a reference to the carousel element in the DOM.\n     * ```typescript\n     * let nativeElement =  this.slide.nativeElement;\n     * ```\n     *\n     * @memberof IgxSlideComponent\n     */\n    public get nativeElement() {\n        return this.elementRef.nativeElement;\n    }\n\n    /**\n     * @hidden\n     */\n    public get isDestroyed(): Subject<boolean> {\n        return this._destroy$;\n    }\n\n    public ngAfterContentChecked() {\n        this.id = `panel-${this.index}`;\n        this.ariaLabelledBy = `tab-${this.index}-${this.total}`;\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnDestroy() {\n        this._destroy$.next(true);\n        this._destroy$.complete();\n    }\n}\n","<ng-content></ng-content>\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterContentInit, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Injectable, Input, IterableChangeRecord, IterableDiffer, IterableDiffers, OnDestroy, Output, QueryList, TemplateRef, ViewChild, ViewChildren, booleanAttribute, DOCUMENT, inject } from '@angular/core';\nimport { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CarouselResourceStringsEN, ICarouselResourceStrings, ɵIgxDirectionality } from 'igniteui-angular/core';\nimport { first, IBaseEventArgs, last, PlatformUtil } from 'igniteui-angular/core';\nimport { CarouselAnimationDirection, IgxCarouselComponentBase } from './carousel-base';\nimport { IgxCarouselIndicatorDirective, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective } from './carousel.directives';\nimport { IgxSlideComponent } from './slide.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { getCurrentResourceStrings, onResourceChangeHandle } from 'igniteui-angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';\n\nlet NEXT_ID = 0;\n\n\n@Injectable()\nexport class CarouselHammerConfig extends HammerGestureConfig {\n    public override overrides = {\n        pan: { direction: HammerGesturesManager.Hammer?.DIRECTION_HORIZONTAL }\n    };\n}\n/**\n * **Ignite UI for Angular Carousel** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/carousel.html)\n *\n * The Ignite UI Carousel is used to browse or navigate through a collection of slides. Slides can contain custom\n * content such as images or cards and be used for things such as on-boarding tutorials or page-based interfaces.\n * It can be used as a separate fullscreen element or inside another component.\n *\n * Example:\n * ```html\n * <igx-carousel>\n *   <igx-slide>\n *     <h3>First Slide Header</h3>\n *     <p>First slide Content</p>\n *   <igx-slide>\n *   <igx-slide>\n *     <h3>Second Slide Header</h3>\n *     <p>Second Slide Content</p>\n * </igx-carousel>\n * ```\n */\n@Component({\n    providers: [\n        {\n            provide: HAMMER_GESTURE_CONFIG,\n            useClass: CarouselHammerConfig\n        }\n    ],\n    selector: 'igx-carousel',\n    templateUrl: 'carousel.component.html',\n    styles: [`\n    :host {\n        display: block;\n        outline-style: none;\n    }`],\n    imports: [IgxButtonDirective, IgxIconComponent, NgClass, NgTemplateOutlet]\n})\nexport class IgxCarouselComponent extends IgxCarouselComponentBase implements OnDestroy, AfterContentInit {\n    private element = inject(ElementRef);\n    private iterableDiffers = inject(IterableDiffers);\n    private platformUtil = inject(PlatformUtil);\n    private dir = inject(ɵIgxDirectionality);\n    private document = inject(DOCUMENT);\n\n\n    /**\n     * Sets the `id` of the carousel.\n     * If not set, the `id` of the first carousel component will be `\"igx-carousel-0\"`.\n     * ```html\n     * <igx-carousel id=\"my-first-carousel\"></igx-carousel>\n     * ```\n     *\n     * @memberof IgxCarouselComponent\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public id = `igx-carousel-${NEXT_ID++}`;\n    /**\n     * Returns the `role` attribute of the carousel.\n     * ```typescript\n     * let carouselRole =  this.carousel.role;\n     * ```\n     *\n     * @memberof IgxCarouselComponent\n     */\n    @HostBinding('attr.role') public role = 'region';\n\n    /** @hidden */\n    @HostBinding('attr.aria-roledescription')\n    public roleDescription = 'carousel';\n\n    /** @hidden */\n    @HostBinding('attr.aria-labelledby')\n    public get labelId() {\n        return this.showIndicatorsLabel ? `${this.id}-label` : null;\n    }\n\n    /** @hidden */\n    @HostBinding('class.igx-carousel--vertical')\n\tpublic get isVertical(): boolean {\n\t\treturn this.vertical;\n\t}\n\n    /**\n     * Returns the class of the carousel component.\n     * ```typescript\n     * let class =  this.carousel.cssClass;\n     * ```\n     *\n     * @memberof IgxCarouselComponent\n     */\n    @HostBinding('class.igx-carousel')\n    public cssClass = 'igx-carousel';\n\n    /**\n     * Gets the `touch-action` style of the `list item`.\n     * ```typescript\n     * let touchAction = this.listItem.touchAction;\n     * ```\n     */\n    @HostBinding('style.touch-action')\n    public get touchAction() {\n        return this.gesturesSupport ? 'pan-y' : 'auto';\n    }\n\n    /**\n     * Sets whether the carousel should `loop` back to the first slide after reaching the last slide.\n     * Default value is `true`.\n     * ```html\n     * <igx-carousel [loop]=\"false\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input({ transform: booleanAttribute }) public loop = true;\n\n    /**\n     * Sets whether the carousel will `pause` the slide transitions on user interactions.\n     * Default value is `true`.\n     * ```html\n     *  <igx-carousel [pause]=\"false\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input({ transform: booleanAttribute }) public pause = true;\n\n    /**\n     * Controls whether the carousel should render the left/right `navigation` buttons.\n     * Default value is `true`.\n     * ```html\n     * <igx-carousel [navigation]=\"false\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input({ transform: booleanAttribute }) public navigation = true;\n\n    /**\n     * Controls whether the carousel should render the indicators.\n     * Default value is `true`.\n     * ```html\n     * <igx-carousel [indicators]=\"false\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input({ transform: booleanAttribute }) public indicators = true;\n\n\n    /**\n     * Controls whether the carousel has vertical alignment.\n     * Default value is `false`.\n     * ```html\n     * <igx-carousel [vertical]=\"true\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input({ transform: booleanAttribute }) public override vertical = false;\n\n    /**\n     * Controls whether the carousel should support gestures.\n     * Default value is `true`.\n     * ```html\n     * <igx-carousel [gesturesSupport]=\"false\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input({ transform: booleanAttribute }) public gesturesSupport = true;\n\n    /**\n     * Controls the maximum indexes that can be shown.\n     * Default value is `10`.\n     * ```html\n     * <igx-carousel [maximumIndicatorsCount]=\"5\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input() public maximumIndicatorsCount = 10;\n\n    /**\n     * Gets/sets the display mode of carousel indicators. It can be `start` or `end`.\n     * Default value is `end`.\n     * ```html\n     * <igx-carousel indicatorsOrientation=\"start\">\n     * <igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input() public indicatorsOrientation: CarouselIndicatorsOrientation = CarouselIndicatorsOrientation.end;\n\n    /**\n     * Gets/sets the animation type of carousel.\n     * Default value is `slide`.\n     * ```html\n     * <igx-carousel animationType=\"none\">\n     * <igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Input() public override animationType: CarouselAnimationType = CarouselAnimationType.slide;\n\n    /**\n     * The custom template, if any, that should be used when rendering carousel indicators\n     *\n     * ```typescript\n     * // Set in typescript\n     * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n     * myComponent.carousel.indicatorTemplate = myCustomTemplate;\n     * ```\n     * ```html\n     * <!-- Set in markup -->\n     *  <igx-carousel #carousel>\n     *      ...\n     *      <ng-template igxCarouselIndicator let-slide>\n     *         <igx-icon *ngIf=\"slide.active\">brightness_7</igx-icon>\n     *         <igx-icon *ngIf=\"!slide.active\">brightness_5</igx-icon>\n     *      </ng-template>\n     *  </igx-carousel>\n     * ```\n     */\n    @ContentChild(IgxCarouselIndicatorDirective, { read: TemplateRef, static: false })\n    public indicatorTemplate: TemplateRef<any> = null;\n\n    /**\n     * The custom template, if any, that should be used when rendering carousel next button\n     *\n     * ```typescript\n     * // Set in typescript\n     * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n     * myComponent.carousel.nextButtonTemplate = myCustomTemplate;\n     * ```\n     * ```html\n     * <!-- Set in markup -->\n     *  <igx-carousel #carousel>\n     *      ...\n     *      <ng-template igxCarouselNextButton let-disabled>\n     *          <button type=\"button\" igxButton=\"fab\" igxRipple=\"white\" [disabled]=\"disabled\">\n     *              <igx-icon name=\"add\"></igx-icon>\n     *          </button>\n     *      </ng-template>\n     *  </igx-carousel>\n     * ```\n     */\n    @ContentChild(IgxCarouselNextButtonDirective, { read: TemplateRef, static: false })\n    public nextButtonTemplate: TemplateRef<any> = null;\n\n    /**\n     * The custom template, if any, that should be used when rendering carousel previous button\n     *\n     * ```typescript\n     * // Set in typescript\n     * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n     * myComponent.carousel.prevButtonTemplate = myCustomTemplate;\n     * ```\n     * ```html\n     * <!-- Set in markup -->\n     *  <igx-carousel #carousel>\n     *      ...\n     *      <ng-template igxCarouselPrevButton let-disabled>\n     *          <button type=\"button\" igxButton=\"fab\" igxRipple=\"white\" [disabled]=\"disabled\">\n     *              <igx-icon name=\"remove\"></igx-icon>\n     *          </button>\n     *      </ng-template>\n     *  </igx-carousel>\n     * ```\n     */\n    @ContentChild(IgxCarouselPrevButtonDirective, { read: TemplateRef, static: false })\n    public prevButtonTemplate: TemplateRef<any> = null;\n\n    /**\n     * The collection of `slides` currently in the carousel.\n     * ```typescript\n     * let slides: QueryList<IgxSlideComponent> = this.carousel.slides;\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @ContentChildren(IgxSlideComponent)\n    public slides: QueryList<IgxSlideComponent>;\n\n    /**\n     * An event that is emitted after a slide transition has happened.\n     * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n     * ```html\n     * <igx-carousel (slideChanged)=\"slideChanged($event)\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Output() public slideChanged = new EventEmitter<ISlideEventArgs>();\n\n    /**\n     * An event that is emitted after a slide has been added to the carousel.\n     * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n     * ```html\n     * <igx-carousel (slideAdded)=\"slideAdded($event)\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Output() public slideAdded = new EventEmitter<ISlideEventArgs>();\n\n    /**\n     * An event that is emitted after a slide has been removed from the carousel.\n     * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n     * ```html\n     * <igx-carousel (slideRemoved)=\"slideRemoved($event)\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Output() public slideRemoved = new EventEmitter<ISlideEventArgs>();\n\n    /**\n     * An event that is emitted after the carousel has been paused.\n     * Provides a reference to the `IgxCarouselComponent` as an event argument.\n     * ```html\n     * <igx-carousel (carouselPaused)=\"carouselPaused($event)\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Output() public carouselPaused = new EventEmitter<IgxCarouselComponent>();\n\n    /**\n     * An event that is emitted after the carousel has resumed transitioning between `slides`.\n     * Provides a reference to the `IgxCarouselComponent` as an event argument.\n     * ```html\n     * <igx-carousel (carouselPlaying)=\"carouselPlaying($event)\"></igx-carousel>\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    @Output() public carouselPlaying = new EventEmitter<IgxCarouselComponent>();\n\n    @ViewChild('defaultIndicator', { read: TemplateRef, static: true })\n    private defaultIndicator: TemplateRef<any>;\n\n    @ViewChild('defaultNextButton', { read: TemplateRef, static: true })\n    private defaultNextButton: TemplateRef<any>;\n\n    @ViewChild('defaultPrevButton', { read: TemplateRef, static: true })\n    private defaultPrevButton: TemplateRef<any>;\n\n    @ViewChildren('indicators', { read: ElementRef })\n    private _indicators: QueryList<ElementRef<HTMLDivElement>>;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public stoppedByInteraction: boolean;\n    protected override currentItem: IgxSlideComponent;\n    protected override previousItem: IgxSlideComponent;\n    private _interval: number;\n    private _resourceStrings: ICarouselResourceStrings = null;\n    private _defaultResourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN);\n    private lastInterval: any;\n    private playing: boolean;\n    private destroyed: boolean;\n    private destroy$ = new Subject<any>();\n    private differ: IterableDiffer<IgxSlideComponent> | null = null;\n    private incomingSlide: IgxSlideComponent;\n    private _hasKeyboardFocusOnIndicators = false;\n\n    /**\n     * An accessor that sets the resource strings.\n     * By default it uses EN resources.\n     */\n    @Input()\n    public set resourceStrings(value: ICarouselResourceStrings) {\n        this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n    }\n\n    /**\n     * An accessor that returns the resource strings.\n     */\n    public get resourceStrings(): ICarouselResourceStrings {\n        return this._resourceStrings || this._defaultResourceStrings;\n    }\n\n    /** @hidden */\n    public get getIndicatorTemplate(): TemplateRef<any> {\n        if (this.indicatorTemplate) {\n            return this.indicatorTemplate;\n        }\n        return this.defaultIndicator;\n    }\n\n    /** @hidden */\n    public get getNextButtonTemplate(): TemplateRef<any> {\n        if (this.nextButtonTemplate) {\n            return this.nextButtonTemplate;\n        }\n\n        return this.defaultNextButton\n    }\n\n    /** @hidden */\n    public get getPrevButtonTemplate(): TemplateRef<any> {\n        if (this.prevButtonTemplate) {\n            return this.prevButtonTemplate;\n        }\n\n        return this.defaultPrevButton\n    }\n\n    /** @hidden */\n    public get indicatorsClass() {\n        return {\n            ['igx-carousel-indicators--focused']: this._hasKeyboardFocusOnIndicators,\n            [`igx-carousel-indicators--${this.getIndicatorsClass()}`]: true\n        };\n    }\n\n    /** @hidden */\n    public get showIndicators(): boolean {\n        return this.indicators && this.total <= this.maximumIndicatorsCount && this.total > 0;\n    }\n\n    /** @hidden */\n    public get showIndicatorsLabel(): boolean {\n        return this.indicators && this.total > this.maximumIndicatorsCount;\n    }\n\n    /** @hidden */\n    public get getCarouselLabel() {\n        return `${this.current + 1} ${this.resourceStrings.igx_carousel_of} ${this.total}`;\n    }\n\n    /**\n     * Returns the total number of `slides` in the carousel.\n     * ```typescript\n     * let slideCount =  this.carousel.total;\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public get total(): number {\n        return this.slides?.length;\n    }\n\n    /**\n     * The index of the slide being currently shown.\n     * ```typescript\n     * let currentSlideNumber =  this.carousel.current;\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public get current(): number {\n        return !this.currentItem ? 0 : this.currentItem.index;\n    }\n\n    /**\n     * Returns a boolean indicating if the carousel is playing.\n     * ```typescript\n     * let isPlaying =  this.carousel.isPlaying;\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public get isPlaying(): boolean {\n        return this.playing;\n    }\n\n    /**\n     * Returns а boolean indicating if the carousel is destroyed.\n     * ```typescript\n     * let isDestroyed =  this.carousel.isDestroyed;\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public get isDestroyed(): boolean {\n        return this.destroyed;\n    }\n    /**\n     * Returns a reference to the carousel element in the DOM.\n     * ```typescript\n     * let nativeElement =  this.carousel.nativeElement;\n     * ```\n     *\n     * @memberof IgxCarouselComponent\n     */\n    public get nativeElement(): any {\n        return this.element.nativeElement;\n    }\n\n    /**\n     * Returns the time `interval` in milliseconds before the slide changes.\n     * ```typescript\n     * let timeInterval = this.carousel.interval;\n     * ```\n     *\n     * @memberof IgxCarouselComponent\n     */\n    @Input()\n    public get interval(): number {\n        return this._interval;\n    }\n\n    /**\n     * Sets the time `interval` in milliseconds before the slide changes.\n     * If not set, the carousel will not change `slides` automatically.\n     * ```html\n     * <igx-carousel [interval]=\"1000\"></igx-carousel>\n     * ```\n     *\n     * @memberof IgxCarouselComponent\n     */\n    public set interval(value: number) {\n        this._interval = +value;\n        this.restartInterval();\n    }\n\n    constructor() {\n        super();\n        this.differ = this.iterableDiffers.find([]).create(null);\n        onResourceChangeHandle(this.destroy$, () => {\n            this._defaultResourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN, false);\n        }, this);\n    }\n\n    /** @hidden */\n    @HostListener('tap', ['$event'])\n    public onTap(event) {\n        // play pause only when tap on slide\n        if (event.target && event.target.classList.contains('igx-slide')) {\n            if (this.isPlaying) {\n                if (this.pause) {\n                    this.stoppedByInteraction = true;\n                }\n                this.stop();\n            } else if (this.stoppedByInteraction) {\n                this.play();\n            }\n        }\n    }\n\n    /** @hidden */\n    @HostListener('mouseenter')\n    public onMouseEnter() {\n        if (this.pause && this.isPlaying) {\n            this.stoppedByInteraction = true;\n        }\n        this.stop();\n    }\n\n    /** @hidden */\n    @HostListener('mouseleave')\n    public onMouseLeave() {\n        if (this.stoppedByInteraction) {\n            this.play();\n        }\n    }\n\n    /** @hidden */\n    @HostListener('panleft', ['$event'])\n    public onPanLeft(event) {\n        if (!this.vertical) {\n            this.pan(event);\n        }\n    }\n\n    /** @hidden */\n    @HostListener('panright', ['$event'])\n    public onPanRight(event) {\n        if (!this.vertical) {\n            this.pan(event);\n        }\n    }\n\n    /** @hidden */\n    @HostListener('panup', ['$event'])\n    public onPanUp(event) {\n        if (this.vertical) {\n            this.pan(event);\n        }\n    }\n\n    /** @hidden */\n    @HostListener('pandown', ['$event'])\n    public onPanDown(event) {\n        if (this.vertical) {\n            this.pan(event);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('panend', ['$event'])\n    public onPanEnd(event) {\n        if (!this.gesturesSupport) {\n            return;\n        }\n        event.preventDefault();\n\n        const slideSize = this.vertical\n            ? this.currentItem.nativeElement.offsetHeight\n            : this.currentItem.nativeElement.offsetWidth;\n        const panOffset = (slideSize / 1000);\n        const eventDelta = this.vertical ? event.deltaY : event.deltaX;\n        const delta = Math.abs(eventDelta) + panOffset < slideSize ? Math.abs(eventDelta) : slideSize - panOffset;\n        const velocity = Math.abs(event.velocity);\n        this.resetSlideStyles(this.currentItem);\n        if (this.incomingSlide) {\n            this.resetSlideStyles(this.incomingSlide);\n            if (slideSize / 2 < delta || velocity > 1) {\n                this.incomingSlide.direction = eventDelta < 0 ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n                this.incomingSlide.previous = false;\n\n                this.animationPosition = this.animationType === CarouselAnimationType.fade ?\n                    delta / slideSize : (slideSize - delta) / slideSize;\n\n                if (velocity > 1) {\n                    this.newDuration = this.defaultAnimationDuration / velocity;\n                }\n                this.incomingSlide.active = true;\n            } else {\n                this.currentItem.direction = eventDelta > 0 ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n                this.previousItem = this.incomingSlide;\n                this.previousItem.previous = true;\n                this.animationPosition = this.animationType === CarouselAnimationType.fade ?\n                    Math.abs((slideSize - delta) / slideSize) : delta / slideSize;\n                this.playAnimations();\n            }\n        }\n\n        if (this.stoppedByInteraction) {\n            this.play();\n        }\n    }\n\n    /** @hidden */\n    public ngAfterContentInit() {\n        this.slides.changes\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((change: QueryList<IgxSlideComponent>) => this.initSlides(change));\n\n        this.initSlides(this.slides);\n    }\n\n    /** @hidden */\n    public override ngOnDestroy() {\n        super.ngOnDestroy();\n        this.destroy$.next(true);\n        this.destroy$.complete();\n        this.destroyed = true;\n        if (this.lastInterval) {\n            clearInterval(this.lastInterval);\n        }\n    }\n\n    /** @hidden */\n    public handleKeydownPrev(event: KeyboardEvent): void {\n        if (this.platformUtil.isActivationKey(event)) {\n            event.preventDefault();\n            this.prev();\n        }\n    }\n\n    /** @hidden */\n    public handleKeydownNext(event: KeyboardEvent): void {\n        if (this.platformUtil.isActivationKey(event)) {\n            event.preventDefault();\n            this.next();\n        }\n    }\n\n    /** @hidden */\n    public handleKeyUp(event: KeyboardEvent): void {\n        if (event.key === this.platformUtil.KEYMAP.TAB) {\n            this._hasKeyboardFocusOnIndicators = true;\n        }\n    }\n\n    /** @hidden */\n    public handleFocusOut(event: FocusEvent): void {\n        const target = event.relatedTarget as HTMLElement;\n\n        if (!target || !target.classList.contains('igx-carousel-indicators__indicator')) {\n            this._hasKeyboardFocusOnIndicators = false;\n        }\n    }\n\n    /** @hidden */\n    public handleClick(): void {\n        this._hasKeyboardFocusOnIndicators = false;\n    }\n\n    /** @hidden */\n    public handleKeydown(event: KeyboardEvent): void {\n        const { key } = event;\n        const slides = this.slides.toArray();\n\n        switch (key) {\n            case this.platformUtil.KEYMAP.ARROW_LEFT:\n                this.dir.rtl ? this.next() : this.prev();\n                break;\n            case this.platformUtil.KEYMAP.ARROW_RIGHT:\n                this.dir.rtl ? this.prev() : this.next();\n                break;\n            case this.platformUtil.KEYMAP.HOME:\n                event.preventDefault();\n                this.select(this.dir.rtl ? last(slides) : first(slides));\n                break;\n            case this.platformUtil.KEYMAP.END:\n                event.preventDefault();\n                this.select(this.dir.rtl ? first(slides) : last(slides));\n                break;\n        }\n\n        this.indicatorsElements[this.current].nativeElement.focus();\n    }\n\n    /**\n     * Returns the slide corresponding to the provided `index` or null.\n     * ```typescript\n     * let slide1 =  this.carousel.get(1);\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public get(index: number): IgxSlideComponent {\n        return this.slides.find((slide) => slide.index === index);\n    }\n\n    /**\n     * Adds a new slide to the carousel.\n     * ```typescript\n     * this.carousel.add(newSlide);\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public add(slide: IgxSlideComponent) {\n        const newSlides = this.slides.toArray();\n        newSlides.push(slide);\n        this.slides.reset(newSlides);\n        this.slides.notifyOnChanges();\n    }\n\n    /**\n     * Removes a slide from the carousel.\n     * ```typescript\n     * this.carousel.remove(slide);\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public remove(slide: IgxSlideComponent) {\n        if (slide && slide === this.get(slide.index)) { // check if the requested slide for delete is present in the carousel\n            const newSlides = this.slides.toArray();\n            newSlides.splice(slide.index, 1);\n            this.slides.reset(newSlides);\n            this.slides.notifyOnChanges();\n        }\n    }\n\n    /**\n     * Switches to the passed-in slide with a given `direction`.\n     * ```typescript\n     * const slide = this.carousel.get(2);\n     * this.carousel.select(slide, CarouselAnimationDirection.NEXT);\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public select(slide: IgxSlideComponent, direction?: CarouselAnimationDirection): void;\n    /**\n     * Switches to slide by index with a given `direction`.\n     * ```typescript\n     * this.carousel.select(2, CarouselAnimationDirection.NEXT);\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public select(index: number, direction?: CarouselAnimationDirection): void;\n    public select(slideOrIndex: IgxSlideComponent | number, direction: CarouselAnimationDirection = CarouselAnimationDirection.NONE): void {\n        const slide = typeof slideOrIndex === 'number'\n            ? this.get(slideOrIndex)\n            : slideOrIndex;\n\n        if (slide && slide !== this.currentItem) {\n            slide.direction = direction;\n            slide.active = true;\n        }\n    }\n\n    /**\n     * Transitions to the next slide in the carousel.\n     * ```typescript\n     * this.carousel.next();\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public next() {\n        const index = this.getNextIndex();\n\n        if (index === 0 && !this.loop) {\n            this.stop();\n            return;\n        }\n        return this.select(this.get(index), CarouselAnimationDirection.NEXT);\n    }\n\n    /**\n     * Transitions to the previous slide in the carousel.\n     * ```typescript\n     * this.carousel.prev();\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public prev() {\n        const index = this.getPrevIndex();\n\n        if (!this.loop && index === this.total - 1) {\n            this.stop();\n            return;\n        }\n        return this.select(this.get(index), CarouselAnimationDirection.PREV);\n    }\n\n    /**\n     * Resumes playing of the carousel if in paused state.\n     * No operation otherwise.\n     * ```typescript\n     * this.carousel.play();\n     * }\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public play() {\n        if (!this.playing) {\n            this.playing = true;\n            this.carouselPlaying.emit(this);\n            this.restartInterval();\n            this.stoppedByInteraction = false;\n        }\n    }\n\n    /**\n     * Stops slide transitions if the `pause` option is set to `true`.\n     * No operation otherwise.\n     * ```typescript\n     *  this.carousel.stop();\n     * }\n     * ```\n     *\n     * @memberOf IgxCarouselComponent\n     */\n    public stop() {\n        if (this.pause) {\n            this.playing = false;\n            this.carouselPaused.emit(this);\n            this.resetInterval();\n        }\n    }\n\n    protected getPreviousElement(): HTMLElement {\n        return this.previousItem.nativeElement;\n    }\n\n    protected getCurrentElement(): HTMLElement {\n        return this.currentItem.nativeElement;\n    }\n\n    private resetInterval() {\n        if (this.lastInterval) {\n            clearInterval(this.lastInterval);\n            this.lastInterval = null;\n        }\n    }\n\n    private restartInterval() {\n        this.resetInterval();\n\n        if (!isNaN(this.interval) && this.interval > 0 && this.platformUtil.isBrowser) {\n            this.lastInterval = setInterval(() => {\n                const tick = +this.interval;\n                if (this.playing && this.total && !isNaN(tick) && tick > 0) {\n                    this.next();\n                } else {\n                    this.stop();\n                }\n            }, this.interval);\n        }\n    }\n\n    /** @hidden */\n    public get nextButtonDisabled() {\n        return !this.loop && this.current === (this.total - 1);\n    }\n\n    /** @hidden */\n    public get prevButtonDisabled() {\n        return !this.loop && this.current === 0;\n    }\n\n    private get indicatorsElements() {\n        return this._indicators.toArray();\n    }\n\n    private getIndicatorsClass(): string {\n        switch (this.indicatorsOrientation) {\n            case CarouselIndicatorsOrientation.top:\n                return CarouselIndicatorsOrientation.start;\n            case CarouselIndicatorsOrientation.bottom:\n                return CarouselIndicatorsOrientation.end;\n            default:\n                return this.indicatorsOrientation;\n        }\n    }\n\n    private getNextIndex(): number {\n        return (this.current + 1) % this.total;\n    }\n\n    private getPrevIndex(): number {\n        return this.current - 1 < 0 ? this.total - 1 : this.current - 1;\n    }\n\n    private resetSlideStyles(slide: IgxSlideComponent) {\n        slide.nativeElement.style.transform = '';\n        slide.nativeElement.style.opacity = '';\n    }\n\n    private pan(event) {\n        const slideSize = this.vertical\n            ? this.currentItem.nativeElement.offsetHeight\n            : this.currentItem.nativeElement.offsetWidth;\n        const panOffset = (slideSize / 1000);\n        const delta = this.vertical ? event.deltaY : event.deltaX;\n        const index = delta < 0 ? this.getNextIndex() : this.getPrevIndex();\n        const offset = delta < 0 ? slideSize + delta : -slideSize + delta;\n\n        if (!this.gesturesSupport || event.isFinal || Math.abs(delta) + panOffset >= slideSize) {\n            return;\n        }\n\n        if (!this.loop && ((this.current === 0 && delta > 0) || (this.current === this.total - 1 && delta < 0))) {\n            this.incomingSlide = null;\n            return;\n        }\n\n        event.preventDefault();\n        if (this.isPlaying) {\n            this.stoppedByInteraction = true;\n            this.stop();\n        }\n\n        if (this.previousItem && this.previousItem.previous) {\n            this.previousItem.previous = false;\n        }\n        this.finishAnimations();\n\n        if (this.incomingSlide) {\n            if (index !== this.incomingSlide.index) {\n                this.resetSlideStyles(this.incomingSlide);\n                this.incomingSlide.previous = false;\n                this.incomingSlide = this.get(index);\n            }\n        } else {\n            this.incomingSlide = this.get(index);\n        }\n        this.incomingSlide.previous = true;\n\n        if (this.animationType === CarouselAnimationType.fade) {\n            this.currentItem.nativeElement.style.opacity = `${Math.abs(offset) / slideSize}`;\n        } else {\n            this.currentItem.nativeElement.style.transform = this.vertical\n                ? `translateY(${delta}px)`\n                : `translateX(${delta}px)`;\n            this.incomingSlide.nativeElement.style.transform = this.vertical\n                ? `translateY(${offset}px)`\n                : `translateX(${offset}px)`;\n        }\n    }\n\n    private unsubscriber(slide: IgxSlideComponent) {\n        return merge(this.destroy$, slide.isDestroyed);\n    }\n\n    private onSlideActivated(slide: IgxSlideComponent) {\n        if (slide.active && slide !== this.currentItem) {\n            if (slide.direction === CarouselAnimationDirection.NONE) {\n                const newIndex = slide.index;\n                slide.direction = newIndex > this.current ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n            }\n\n            if (this.currentItem) {\n                if (this.previousItem && this.previousItem.previous) {\n                    this.previousItem.previous = false;\n                }\n                this.currentItem.direction = slide.direction;\n                this.currentItem.active = false;\n\n                this.previousItem = this.currentItem;\n                this.currentItem = slide;\n                this.triggerAnimations();\n            } else {\n                this.currentItem = slide;\n            }\n            this.slideChanged.emit({ carousel: this, slide });\n            this.restartInterval();\n            this.cdr.markForCheck();\n        }\n    }\n\n\n    private finishAnimations() {\n        if (this.animationStarted(this.leaveAnimationPlayer)) {\n            this.leaveAnimationPlayer.finish();\n        }\n\n        if (this.animationStarted(this.enterAnimationPlayer)) {\n            this.enterAnimationPlayer.finish();\n        }\n    }\n\n    private initSlides(change: QueryList<IgxSlideComponent>) {\n        const diff = this.differ.diff(change.toArray());\n        if (diff) {\n            this.slides.reduce((any, c, ind) => c.index = ind, 0); // reset slides indexes\n            diff.forEachAddedItem((record: IterableChangeRecord<IgxSlideComponent>) => {\n                const slide = record.item;\n                slide.total = this.total;\n                this.slideAdded.emit({ carousel: this, slide });\n                if (slide.active) {\n                    this.currentItem = slide;\n                }\n                slide.activeChange.pipe(takeUntil(this.unsubscriber(slide))).subscribe(() => this.onSlideActivated(slide));\n            });\n\n            diff.forEachRemovedItem((record: IterableChangeRecord<IgxSlideComponent>) => {\n                const slide = record.item;\n                this.slideRemoved.emit({ carousel: this, slide });\n                if (slide.active) {\n                    slide.active = false;\n                    this.currentItem = this.get(slide.index < this.total ? slide.index : this.total - 1);\n                }\n            });\n\n            this.updateSlidesSelection();\n        }\n    }\n\n    private updateSlidesSelection() {\n        if (this.platformUtil.isBrowser) {\n            requestAnimationFrame(() => {\n                if (this.currentItem) {\n                    this.currentItem.active = true;\n                    const activeSlides = this.slides.filter(slide => slide.active && slide.index !== this.currentItem.index);\n                    activeSlides.forEach(slide => slide.active = false);\n                } else if (this.total) {\n                    this.slides.first.active = true;\n                }\n                this.play();\n            });\n        }\n    }\n}\n\nexport interface ISlideEventArgs extends IBaseEventArgs {\n    carousel: IgxCarouselComponent;\n    slide: IgxSlideComponent;\n}\n","<ng-template #defaultIndicator let-slide>\n    <div class=\"igx-nav-dot\"\n        [class.igx-nav-dot--active]=\"slide.active\">\n    </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n    <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n        class=\"igx-nav-arrow\">\n    </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n    <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n        class=\"igx-nav-arrow\">\n    </igx-icon>\n</ng-template>\n\n@if (navigation && slides.length) {\n    <button\n        igxButton\n        class=\"igx-carousel__arrow--prev\"\n        [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n        [disabled]=\"prevButtonDisabled\"\n        (click)=\"prev()\"\n        (keydown)=\"handleKeydownPrev($event)\">\n        <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n    </button>\n}\n\n@if (navigation && slides.length) {\n    <button\n        igxButton\n        class=\"igx-carousel__arrow--next\"\n        [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n        [disabled]=\"nextButtonDisabled\"\n        (click)=\"next()\"\n        (keydown)=\"handleKeydownNext($event)\">\n        <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n    </button>\n}\n\n@if (showIndicators) {\n    <div [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n        @for (slide of slides; track slide) {\n            <div #indicators\n                class=\"igx-carousel-indicators__indicator\"\n                (click)=\"select(slide)\"\n                [id]=\"'tab-'+ slide.index + '-' + total\"\n                [attr.role]=\"'tab'\"\n                [attr.tabindex]=\"slide.active ? 0 : -1\"\n                [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n                [attr.aria-controls]=\"'panel-' + slide.index\"\n                [attr.aria-selected]=\"slide.active\">\n                <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n            </div>\n        }\n    </div>\n}\n\n@if (showIndicatorsLabel) {\n    <div [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n        <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n    </div>\n}\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n    <ng-content></ng-content>\n</div>\n","import { IgxCarouselComponent } from './carousel.component';\nimport { IgxCarouselIndicatorDirective, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective } from './carousel.directives';\nimport { IgxSlideComponent } from './slide.component';\n\nexport { CarouselAnimationDirection, IgxCarouselComponentBase, IgxSlideComponentBase, CarouselAnimationSettings } from './carousel-base';\nexport * from './carousel.component';\nexport * from './slide.component';\nexport * from './carousel.directives';\nexport { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';\n\n/* NOTE: Carousel directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_CAROUSEL_DIRECTIVES = [\n    IgxCarouselComponent,\n    IgxSlideComponent,\n    IgxCarouselIndicatorDirective,\n    IgxCarouselNextButtonDirective,\n    IgxCarouselPrevButtonDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_CAROUSEL_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_CAROUSEL_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_CAROUSEL_DIRECTIVES\n    ]\n})\nexport class IgxCarouselModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality","i1.IgxCarouselComponent","i2.IgxSlideComponent","i3.IgxCarouselIndicatorDirective","i3.IgxCarouselNextButtonDirective","i3.IgxCarouselPrevButtonDirective"],"mappings":"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"}