{"version":3,"file":"igniteui-angular-tabs.mjs","sources":["../../../projects/igniteui-angular/tabs/src/tabs/tabs.base.ts","../../../projects/igniteui-angular/tabs/src/tabs/tab-item.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tab-content.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-content.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-content.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tab-header.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-header.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-header.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-item.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-item.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.directives.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/public_api.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.module.ts","../../../projects/igniteui-angular/tabs/src/igniteui-angular-tabs.ts"],"sourcesContent":["import { QueryList, TemplateRef } from '@angular/core';\n\n/** @hidden */\nexport abstract class IgxTabsBase {\n    public items: QueryList<IgxTabItemBase>;\n    public selectedIndex: number;\n    public abstract selectTab(tab: IgxTabItemBase, selected: boolean);\n}\n\n/** @hidden */\nexport abstract class IgxTabItemBase {\n    public disabled: boolean;\n    public selected: boolean;\n    public headerTemplate: TemplateRef<any>;\n    public panelTemplate: TemplateRef<any>;\n    public headerComponent: IgxTabHeaderBase;\n    public panelComponent: IgxTabContentBase;\n}\n\n/** @hidden */\nexport abstract class IgxTabHeaderBase {\n    public nativeElement: HTMLElement;\n}\n\n/** @hidden */\nexport abstract class IgxTabContentBase {\n    public nativeElement: HTMLElement;\n}\n\n","import { ContentChild, Directive, EventEmitter, Input, Output, TemplateRef, ViewChild, booleanAttribute, inject } from '@angular/core';\nimport { IgxTabHeaderBase, IgxTabItemBase, IgxTabContentBase, IgxTabsBase } from './tabs.base';\nimport { CarouselAnimationDirection, IgxSlideComponentBase } from 'igniteui-angular/carousel';\n\n@Directive()\nexport abstract class IgxTabItemDirective implements IgxTabItemBase, IgxSlideComponentBase {\n    /** @hidden */\n    private tabs = inject(IgxTabsBase);\n\n    /** @hidden */\n    @ContentChild(IgxTabHeaderBase)\n    public headerComponent: IgxTabHeaderBase;\n\n    /** @hidden */\n    @ContentChild(IgxTabContentBase)\n    public panelComponent: IgxTabContentBase;\n\n    /** @hidden */\n    @ViewChild('headerTemplate', { static: true })\n    public headerTemplate: TemplateRef<any>;\n\n    /** @hidden */\n    @ViewChild('panelTemplate', { static: true })\n    public panelTemplate: TemplateRef<any>;\n\n    /**\n     * Output to enable support for two-way binding on [(selected)]\n     */\n    @Output()\n    public selectedChange = new EventEmitter<boolean>();\n\n    /**\n     * Disables the item.\n     */\n    @Input({ transform: booleanAttribute })\n    public disabled = false;\n\n    /** @hidden */\n    public direction = CarouselAnimationDirection.NONE;\n    /** @hidden */\n    public previous: boolean;\n\n    private _selected = false;\n\n    /**\n     * Gets/Sets whether an item is selected.\n     */\n    @Input({ transform: booleanAttribute })\n    public get selected(): boolean {\n        return this._selected;\n    }\n\n    public set selected(value: boolean) {\n        if (this._selected !== value) {\n            this._selected = value;\n            this.tabs.selectTab(this, this._selected);\n            this.selectedChange.emit(this._selected);\n        }\n    }\n}\n","import { Directive, ElementRef, HostBinding, inject } from '@angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabContentBase } from './tabs.base';\n\n@Directive()\nexport abstract class IgxTabContentDirective implements IgxTabContentBase {\n    /** @hidden */\n    public tab = inject(IgxTabItemDirective);\n    /** @hidden */\n    private elementRef = inject(ElementRef<HTMLElement>);\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    public role = 'tabpanel';\n\n    /** @hidden */\n    @HostBinding('attr.tabindex')\n    public get tabIndex() {\n        return this.tab.selected ? 0 : -1;\n    }\n\n    /** @hidden */\n    @HostBinding('style.z-index')\n    public get zIndex() {\n        return this.tab.selected ? 'auto' : -1;\n    }\n\n    /** @hidden */\n    public get nativeElement() {\n        return this.elementRef.nativeElement;\n    }\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { IgxTabContentDirective } from '../tab-content.directive';\nimport { IgxTabContentBase } from '../tabs.base';\n\n@Component({\n    selector: 'igx-tab-content',\n    templateUrl: 'tab-content.component.html',\n    providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }],\n    imports: []\n})\nexport class IgxTabContentComponent extends IgxTabContentDirective {\n    /** @hidden */\n    @HostBinding('class.igx-tabs__panel')\n    public cssClass = true;\n}\n","@if (tab.selected || tab.previous) {\n    <ng-content></ng-content>\n}\n","\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\nimport { PlatformUtil } from 'igniteui-angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabHeaderBase, IgxTabsBase } from './tabs.base';\n\n@Directive()\nexport abstract class IgxTabHeaderDirective implements IgxTabHeaderBase {\n    /** @hidden */\n    protected tabs = inject(IgxTabsBase);\n    /** @hidden */\n    public tab = inject(IgxTabItemDirective);\n    /** @hidden */\n    private elementRef = inject(ElementRef<HTMLElement>);\n    /** @hidden */\n    protected platform = inject(PlatformUtil);\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    public role = 'tab';\n\n    /** @hidden */\n    @HostBinding('attr.tabindex')\n    public get tabIndex() {\n        return this.tab.selected ? 0 : -1;\n    }\n\n    /** @hidden */\n    @HostBinding('attr.aria-selected')\n    public get ariaSelected() {\n        return this.tab.selected;\n    }\n\n    /** @hidden */\n    @HostBinding('attr.aria-disabled')\n    public get ariaDisabled() {\n        return this.tab.disabled;\n    }\n\n    /** @hidden */\n    @HostListener('click')\n    public onClick() {\n        if (this.tab.panelComponent) {\n            this.tabs.selectTab(this.tab, true);\n        }\n    }\n\n    /** @hidden */\n    public get nativeElement() {\n        return this.elementRef.nativeElement;\n    }\n}\n","import {\n    AfterViewInit, ContentChildren, Directive, EventEmitter,\n    Input, OnDestroy, Output, QueryList, booleanAttribute,\n    inject\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IBaseEventArgs, ɵIgxDirectionality } from 'igniteui-angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabContentBase, IgxTabsBase } from './tabs.base';\nimport { IgxCarouselComponentBase, CarouselAnimationDirection } from 'igniteui-angular/carousel';\n\nexport interface ITabsBaseEventArgs extends IBaseEventArgs {\n    readonly owner: IgxTabsDirective;\n}\n\nexport interface ITabsSelectedIndexChangingEventArgs extends ITabsBaseEventArgs {\n    cancel: boolean;\n    readonly oldIndex: number;\n    newIndex: number;\n}\n\nexport interface ITabsSelectedItemChangeEventArgs extends ITabsBaseEventArgs {\n    readonly oldItem: IgxTabItemDirective;\n    readonly newItem: IgxTabItemDirective;\n}\n\n@Directive()\nexport abstract class IgxTabsDirective extends IgxCarouselComponentBase implements IgxTabsBase, AfterViewInit, OnDestroy {\n    /** @hidden */\n    public dir = inject(ɵIgxDirectionality);\n\n    /**\n     * Gets/Sets the index of the selected item.\n     * Default value is 0 if contents are defined otherwise defaults to -1.\n     */\n    @Input()\n    public get selectedIndex(): number {\n        return this._selectedIndex;\n    }\n\n    public set selectedIndex(value: number) {\n        if (this._selectedIndex !== value) {\n            let newIndex = value;\n            const oldIndex = this._selectedIndex;\n            const args: ITabsSelectedIndexChangingEventArgs = {\n                owner: this,\n                cancel: false,\n                oldIndex,\n                newIndex\n            };\n            this.selectedIndexChanging.emit(args);\n\n            if (!args.cancel) {\n                newIndex = args.newIndex;\n                this._selectedIndex = newIndex;\n                this.selectedIndexChange.emit(this._selectedIndex);\n            }\n\n            this.updateSelectedTabs(oldIndex);\n        }\n    }\n\n    /**\n     * Enables/disables the transition animation of the contents.\n     */\n    @Input({ transform: booleanAttribute })\n    public disableAnimation = false;\n\n    /**\n     * Output to enable support for two-way binding on [(selectedIndex)]\n     */\n    @Output()\n    public selectedIndexChange = new EventEmitter<number>();\n\n    /**\n     * Emitted when the selected index is about to change.\n     */\n    @Output()\n    public selectedIndexChanging = new EventEmitter<ITabsSelectedIndexChangingEventArgs>();\n\n    /**\n     * Emitted when the selected item is changed.\n     */\n    @Output()\n    public selectedItemChange = new EventEmitter<ITabsSelectedItemChangeEventArgs>();\n\n    /**\n     * Returns the items.\n     */\n    @ContentChildren(IgxTabItemDirective)\n    public items: QueryList<IgxTabItemDirective>;\n\n    /**\n     * Gets the selected item.\n     */\n    public get selectedItem(): IgxTabItemDirective {\n        return this.items && this.selectedIndex >= 0 && this.selectedIndex < this.items.length ?\n            this.items.get(this.selectedIndex) : null;\n    }\n\n    /** @hidden */\n    @ContentChildren(IgxTabContentBase, { descendants: true })\n    public panels: QueryList<IgxTabContentBase>;\n\n    /** @hidden */\n    protected override currentItem: IgxTabItemDirective;\n    /** @hidden */\n    protected override previousItem: IgxTabItemDirective;\n    /** @hidden */\n    protected componentName: string;\n\n    private _selectedIndex = -1;\n    private _itemChanges$: Subscription;\n\n    /** @hidden */\n    public ngAfterViewInit(): void {\n        if (this._selectedIndex === -1) {\n            const hasSelectedTab = this.items.some((tab, i) => {\n                if (tab.selected) {\n                    this._selectedIndex = i;\n                }\n                return tab.selected;\n            });\n\n            if (!hasSelectedTab && this.hasPanels) {\n                this._selectedIndex = 0;\n            }\n        }\n\n        // Use promise to avoid expression changed after check error\n        Promise.resolve().then(() => {\n            this.updateSelectedTabs(null, false);\n        });\n\n        this._itemChanges$ = this.items.changes.subscribe(() => {\n            this.onItemChanges();\n        });\n\n        this.setAttributes();\n    }\n\n    /** @hidden */\n    public override ngOnDestroy(): void {\n        super.ngOnDestroy();\n        if (this._itemChanges$) {\n            this._itemChanges$.unsubscribe();\n        }\n    }\n\n    /** @hidden */\n    public selectTab(tab: IgxTabItemDirective, selected: boolean): void {\n        if (!this.items) {\n            return;\n        }\n\n        const tabs = this.items.toArray();\n\n        if (selected) {\n            const index = tabs.indexOf(tab);\n            if (index > -1) {\n                this.selectedIndex = index;\n            }\n        } else {\n            if (tabs.every(t => !t.selected)) {\n                this.selectedIndex = -1;\n            }\n        }\n    }\n\n    /** @hidden */\n    protected getPreviousElement(): HTMLElement {\n        return this.previousItem.panelComponent.nativeElement;\n    }\n\n    /** @hidden */\n    protected getCurrentElement(): HTMLElement {\n        return this.currentItem.panelComponent.nativeElement;\n    }\n\n    /** @hidden */\n    protected scrollTabHeaderIntoView() {\n    }\n\n    /** @hidden */\n    protected onItemChanges() {\n        this.setAttributes();\n\n        // Check if there is selected tab\n        let selectedIndex = -1;\n        this.items.some((tab, i) => {\n            if (tab.selected) {\n                selectedIndex = i;\n            }\n            return tab.selected;\n        });\n\n        if (selectedIndex >= 0) {\n            // Set the selected index to the tab that has selected=true\n            Promise.resolve().then(() => {\n                this.selectedIndex = selectedIndex;\n            });\n        } else {\n            if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n                // Select the tab on the same index the previous selected tab was\n                Promise.resolve().then(() => {\n                    this.updateSelectedTabs(null);\n                });\n            } else if (this.selectedIndex >= this.items.length) {\n                // Select the last tab\n                Promise.resolve().then(() => {\n                    this.selectedIndex = this.items.length - 1;\n                });\n            }\n        }\n    }\n\n    private setAttributes() {\n        this.items.forEach(item => {\n            if (item.panelComponent && !item.headerComponent.nativeElement.getAttribute('id')) {\n                const id = this.getNextTabId();\n                const tabHeaderId = `${this.componentName}-header-${id}`;\n                const tabPanelId = `${this.componentName}-content-${id}`;\n\n                this.setHeaderAttribute(item, 'id', tabHeaderId);\n                this.setHeaderAttribute(item, 'aria-controls', tabPanelId);\n                this.setPanelAttribute(item, 'id', tabPanelId);\n                this.setPanelAttribute(item, 'aria-labelledby', tabHeaderId);\n            }\n        });\n    }\n\n    private setHeaderAttribute(item: IgxTabItemDirective, attrName: string, value: string) {\n        item.headerComponent.nativeElement.setAttribute(attrName, value);\n    }\n\n    private setPanelAttribute(item: IgxTabItemDirective, attrName: string, value: string) {\n        item.panelComponent.nativeElement.setAttribute(attrName, value);\n    }\n\n    private get hasPanels() {\n        return this.panels && this.panels.length;\n    }\n\n    private updateSelectedTabs(oldSelectedIndex: number, raiseEvent = true) {\n        if (!this.items) {\n            return;\n        }\n\n        let newTab: IgxTabItemDirective;\n        const oldTab = this.currentItem;\n\n        // First select the new tab\n        if (this._selectedIndex >= 0 && this._selectedIndex < this.items.length) {\n            newTab = this.items.get(this._selectedIndex);\n            newTab.selected = true;\n        }\n        // Then unselect the other tabs\n        this.items.forEach((tab, i) => {\n            if (i !== this._selectedIndex) {\n                tab.selected = false;\n            }\n        });\n\n        if (this._selectedIndex !== oldSelectedIndex) {\n            this.scrollTabHeaderIntoView();\n            this.triggerPanelAnimations(oldSelectedIndex);\n\n            if (raiseEvent && newTab !== oldTab) {\n                this.selectedItemChange.emit({\n                    owner: this,\n                    newItem: newTab,\n                    oldItem: oldTab\n                });\n            }\n        }\n    }\n\n    private triggerPanelAnimations(oldSelectedIndex: number) {\n        const item = this.items.get(this._selectedIndex);\n\n        if (item &&\n            !this.disableAnimation &&\n            this.hasPanels &&\n            this.currentItem &&\n            !this.currentItem.selected) {\n            item.direction = (!this.dir.rtl && this._selectedIndex > oldSelectedIndex) ||\n                (this.dir.rtl && this._selectedIndex < oldSelectedIndex)\n                ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n\n            if (this.previousItem && this.previousItem.previous) {\n                this.previousItem.previous = false;\n            }\n            this.currentItem.direction = item.direction;\n\n            this.previousItem = this.currentItem;\n            this.currentItem = item;\n            this.triggerAnimations();\n        } else {\n            this.currentItem = item;\n        }\n    }\n\n    /** @hidden */\n    protected abstract getNextTabId();\n}\n","import { AfterViewInit, Component, ElementRef, HostBinding, inject, Input, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { IgxTabsBase } from '../tabs.base';\nimport { IgxTabsDirective } from '../tabs.directive';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IgxIconButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { getResizeObserver, PlatformUtil } from 'igniteui-angular/core';\n\nexport const IgxTabsAlignment = {\n    start: 'start',\n    end: 'end',\n    center: 'center',\n    justify: 'justify'\n} as const;\n\n/** @hidden */\nconst enum TabScrollButtonStyle {\n    Enabled = 'enabled',\n    Disabled = 'disabled',\n    NotDisplayed = 'not_displayed'\n}\n\nexport type IgxTabsAlignment = (typeof IgxTabsAlignment)[keyof typeof IgxTabsAlignment];\n\n/** @hidden */\nlet NEXT_TAB_ID = 0;\n\n/**\n * Tabs component is used to organize or switch between similar data sets.\n *\n * @igxModule IgxTabsModule\n *\n * @igxTheme igx-tabs-theme\n *\n * @igxKeywords tabs\n *\n * @igxGroup Layouts\n *\n * @remarks\n * The Ignite UI for Angular Tabs component places tabs at the top and allows for scrolling when there are multiple tab items on the screen.\n *\n * @example\n * ```html\n * <igx-tabs>\n *     <igx-tab-item>\n *         <igx-tab-header>\n *             <igx-icon igxTabHeaderIcon>folder</igx-icon>\n *             <span igxTabHeaderLabel>Tab 1</span>\n *         </igx-tab-header>\n *         <igx-tab-content>\n *             Content 1\n *         </igx-tab-content>\n *     </igx-tab-item>\n *     ...\n * </igx-tabs>\n * ```\n */\n@Component({\n    selector: 'igx-tabs',\n    templateUrl: 'tabs.component.html',\n    providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }],\n    imports: [IgxRippleDirective, IgxIconComponent, NgClass, NgTemplateOutlet, IgxIconButtonDirective]\n})\n\nexport class IgxTabsComponent extends IgxTabsDirective implements AfterViewInit, OnDestroy {\n    private ngZone = inject(NgZone);\n    private platform = inject(PlatformUtil);\n\n\n    /**\n     * Gets/Sets the tab alignment. Defaults to `start`.\n     */\n    @Input()\n    public get tabAlignment(): string | IgxTabsAlignment {\n        return this._tabAlignment;\n    }\n\n    public set tabAlignment(value: string | IgxTabsAlignment) {\n        this._tabAlignment = value;\n        requestAnimationFrame(() => {\n            this.updateScrollButtons();\n            this.realignSelectedIndicator();\n        });\n    }\n\n    /**\n     * Determines the tab activation.\n     * When set to auto, the tab is instantly selected while navigating with the Left/Right Arrows, Home or End keys and the corresponding panel is displayed.\n     * When set to manual, the tab is only focused. The selection happens after pressing Space or Enter.\n     * Defaults is auto.\n     */\n    @Input()\n    public activation: 'auto' | 'manual' = 'auto';\n\n    /** @hidden */\n    @ViewChild('headerContainer', { static: true })\n    public headerContainer: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('viewPort', { static: true })\n    public viewPort: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('itemsWrapper', { static: true })\n    public itemsWrapper: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('itemsContainer', { static: true })\n    public itemsContainer: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('selectedIndicator')\n    public selectedIndicator: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('scrollPrevButton')\n    public scrollPrevButton: ElementRef<HTMLButtonElement>;\n\n    /** @hidden */\n    @ViewChild('scrollNextButton')\n    public scrollNextButton: ElementRef<HTMLButtonElement>;\n\n    /** @hidden */\n    @HostBinding('class.igx-tabs')\n    public defaultClass = true;\n\n    /**  @hidden */\n    public offset = 0;\n\n    /** @hidden */\n    protected override componentName = 'igx-tabs';\n\n    private _tabAlignment: string | IgxTabsAlignment = 'start';\n    private _resizeObserver: ResizeObserver;\n\n    /** @hidden @internal */\n    public override ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n\n        this.ngZone.runOutsideAngular(() => {\n            if (this.platform.isBrowser) {\n                this._resizeObserver = new (getResizeObserver())(() => {\n                    this.updateScrollButtons();\n                    this.realignSelectedIndicator();\n                });\n                this._resizeObserver.observe(this.headerContainer.nativeElement);\n                this._resizeObserver.observe(this.viewPort.nativeElement);\n            }\n        });\n    }\n\n    /** @hidden @internal */\n    public override ngOnDestroy(): void {\n        super.ngOnDestroy();\n\n        this.ngZone.runOutsideAngular(() => {\n            this._resizeObserver?.disconnect();\n        });\n    }\n\n    /** @hidden */\n    public scrollPrev() {\n        this.scroll(false);\n    }\n\n    /** @hidden */\n    public scrollNext() {\n        this.scroll(true);\n    }\n\n    /** @hidden */\n    public realignSelectedIndicator() {\n        if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n            const header = this.items.get(this.selectedIndex).headerComponent.nativeElement;\n            this.alignSelectedIndicator(header, 0);\n        }\n    }\n\n    /** @hidden */\n    public resolveHeaderScrollClasses() {\n        return {\n            'igx-tabs__header-scroll--start': this.tabAlignment === 'start',\n            'igx-tabs__header-scroll--end': this.tabAlignment === 'end',\n            'igx-tabs__header-scroll--center': this.tabAlignment === 'center',\n            'igx-tabs__header-scroll--justify': this.tabAlignment === 'justify',\n        };\n    }\n\n    /** @hidden */\n    protected override scrollTabHeaderIntoView() {\n        if (this.selectedIndex >= 0) {\n            const tabItems = this.items.toArray();\n            const tabHeaderNativeElement = tabItems[this.selectedIndex].headerComponent.nativeElement;\n\n            // Scroll left if there is need\n            if (this.getElementOffset(tabHeaderNativeElement) < this.offset) {\n                this.scrollElement(tabHeaderNativeElement, false);\n            }\n\n            // Scroll right if there is need\n            const viewPortOffsetWidth = this.viewPort.nativeElement.offsetWidth;\n            const delta = (this.getElementOffset(tabHeaderNativeElement) + tabHeaderNativeElement.offsetWidth) - (viewPortOffsetWidth + this.offset);\n\n            // Fix for IE 11, a difference is accumulated from the widths calculations\n            if (delta > 1) {\n                this.scrollElement(tabHeaderNativeElement, true);\n            }\n\n            this.alignSelectedIndicator(tabHeaderNativeElement);\n        } else {\n            this.hideSelectedIndicator();\n        }\n    }\n\n    /** @hidden */\n    protected getNextTabId() {\n        return NEXT_TAB_ID++;\n    }\n\n    /** @hidden */\n    protected override onItemChanges() {\n        super.onItemChanges();\n\n        Promise.resolve().then(() => {\n            this.updateScrollButtons();\n        });\n    }\n\n    private alignSelectedIndicator(element: HTMLElement, duration = 0.3): void {\n        if (this.selectedIndicator) {\n            this.selectedIndicator.nativeElement.style.visibility = 'visible';\n            this.selectedIndicator.nativeElement.style.transitionDuration = duration > 0 ? `${duration}s` : 'initial';\n            this.selectedIndicator.nativeElement.style.width = `${element.offsetWidth}px`;\n            this.selectedIndicator.nativeElement.style.transform = `translate(${element.offsetLeft}px)`;\n        }\n    }\n\n    private hideSelectedIndicator(): void {\n        if (this.selectedIndicator) {\n            this.selectedIndicator.nativeElement.style.visibility = 'hidden';\n        }\n    }\n\n    private scroll(scrollNext: boolean): void {\n        const tabsArray = this.items.toArray();\n\n        for (let index = 0; index < tabsArray.length; index++) {\n            const tab = tabsArray[index];\n            const element = tab.headerComponent.nativeElement;\n            if (scrollNext) {\n                if (element.offsetWidth + this.getElementOffset(element) > this.viewPort.nativeElement.offsetWidth + this.offset) {\n                    this.scrollElement(element, scrollNext);\n                    break;\n                }\n            } else {\n                if (this.getElementOffset(element) >= this.offset) {\n                    this.scrollElement(tabsArray[index - 1].headerComponent.nativeElement, scrollNext);\n                    break;\n                }\n            }\n        }\n    }\n\n    private scrollElement(element: any, scrollNext: boolean): void {\n        const viewPortWidth = this.viewPort.nativeElement.offsetWidth;\n\n        this.offset = (scrollNext) ? element.offsetWidth + this.getElementOffset(element) - viewPortWidth : this.getElementOffset(element);\n        this.viewPort.nativeElement.scrollLeft = this.getOffset(this.offset);\n        this.updateScrollButtons();\n    }\n\n    private updateScrollButtons() {\n        const itemsContainerWidth = this.getTabItemsContainerWidth();\n\n        const scrollPrevButtonStyle = this.resolveLeftScrollButtonStyle(itemsContainerWidth);\n        this.setScrollButtonStyle(this.scrollPrevButton.nativeElement, scrollPrevButtonStyle);\n\n        const scrollNextButtonStyle = this.resolveRightScrollButtonStyle(itemsContainerWidth);\n        this.setScrollButtonStyle(this.scrollNextButton.nativeElement, scrollNextButtonStyle);\n    }\n\n    private setScrollButtonStyle(button: HTMLButtonElement, buttonStyle: TabScrollButtonStyle) {\n        if (buttonStyle === TabScrollButtonStyle.Enabled) {\n            button.disabled = false;\n            button.style.display = '';\n        } else if (buttonStyle === TabScrollButtonStyle.Disabled) {\n            button.disabled = true;\n            button.style.display = '';\n        } else if (buttonStyle === TabScrollButtonStyle.NotDisplayed) {\n            button.style.display = 'none';\n        }\n    }\n    private resolveLeftScrollButtonStyle(itemsContainerWidth: number): TabScrollButtonStyle {\n        const headerContainerWidth = this.headerContainer.nativeElement.offsetWidth;\n        const offset = this.offset;\n\n        if (offset === 0) {\n            // Fix for IE 11, a difference is accumulated from the widths calculations.\n            if (itemsContainerWidth - headerContainerWidth <= 1) {\n                return TabScrollButtonStyle.NotDisplayed;\n            }\n            return TabScrollButtonStyle.Disabled;\n        } else {\n            return TabScrollButtonStyle.Enabled;\n        }\n    }\n\n    private resolveRightScrollButtonStyle(itemsContainerWidth: number): TabScrollButtonStyle {\n        const viewPortWidth = this.viewPort.nativeElement.offsetWidth;\n        const headerContainerWidth = this.headerContainer.nativeElement.offsetWidth;\n        const offset = this.offset;\n        const total = offset + viewPortWidth;\n\n        // Fix for IE 11, a difference is accumulated from the widths calculations.\n        if (itemsContainerWidth - headerContainerWidth <= 1 && offset === 0) {\n            return TabScrollButtonStyle.NotDisplayed;\n        }\n\n        if (itemsContainerWidth > total) {\n            return TabScrollButtonStyle.Enabled;\n        } else {\n            return TabScrollButtonStyle.Disabled;\n        }\n    }\n\n    private getTabItemsContainerWidth() {\n        // We use this hacky way to get the width of the itemsContainer,\n        // because there is inconsistency in IE we cannot use offsetWidth or scrollOffset.\n        const itemsContainerChildrenCount = this.itemsContainer.nativeElement.children.length;\n        let itemsContainerWidth = 0;\n\n        if (itemsContainerChildrenCount > 1) {\n            const lastTab = this.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 1] as HTMLElement;\n            itemsContainerWidth = this.getElementOffset(lastTab) + lastTab.offsetWidth;\n        }\n\n        return itemsContainerWidth;\n    }\n\n    private getOffset(offset: number): number {\n        return this.dir.rtl ? -offset : offset;\n    }\n\n    private getElementOffset(element: HTMLElement): number {\n        return this.dir.rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;\n    }\n}\n","<div #headerContainer class=\"igx-tabs__header\">\n    <button #scrollPrevButton type=\"button\" igxIconButton=\"flat\" igxRipple tabindex=\"-1\" class=\"igx-tabs__header-button\" (click)=\"scrollPrev()\">\n        <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n    </button>\n    <div #viewPort class=\"igx-tabs__header-content\">\n        <div #itemsWrapper class=\"igx-tabs__header-wrapper\" role=\"tablist\">\n            <div #itemsContainer class=\"igx-tabs__header-scroll\" [ngClass]=\"resolveHeaderScrollClasses()\">\n                @for (tab of items; track tab; let i = $index) {\n                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                }\n            </div>\n            @if (items.length > 0) {\n                <div #selectedIndicator class=\"igx-tabs__header-active-indicator\">\n                </div>\n            }\n        </div>\n    </div>\n    <button #scrollNextButton type=\"button\" igxIconButton=\"flat\" igxRipple tabindex=\"-1\" class=\"igx-tabs__header-button\" (click)=\"scrollNext()\">\n        <igx-icon family=\"default\" name=\"next\"></igx-icon>\n    </button>\n</div>\n<div class=\"igx-tabs__panels\">\n    @for (tab of items; track tab; let i = $index) {\n        <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n    }\n</div>\n","import { AfterViewInit, Component, HostBinding, HostListener, NgZone, OnDestroy, inject } from '@angular/core';\nimport { IgxTabHeaderDirective } from '../tab-header.directive';\nimport { IgxTabHeaderBase } from '../tabs.base';\nimport { IgxTabsComponent } from './tabs.component';\nimport { getResizeObserver, ɵIgxDirectionality } from 'igniteui-angular/core';\n\n@Component({\n    selector: 'igx-tab-header',\n    templateUrl: 'tab-header.component.html',\n    providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }],\n    standalone: true\n})\nexport class IgxTabHeaderComponent extends IgxTabHeaderDirective implements AfterViewInit, OnDestroy {\n    protected override tabs = inject(IgxTabsComponent);\n    private ngZone = inject(NgZone);\n    private dir = inject(ɵIgxDirectionality);\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-tabs__header-item--selected')\n    public get provideCssClassSelected(): boolean {\n        return this.tab.selected;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-tabs__header-item--disabled')\n    public get provideCssClassDisabled(): boolean {\n        return this.tab.disabled;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-tabs__header-item')\n    public cssClass = true;\n\n    private _resizeObserver: ResizeObserver;\n\n    /** @hidden @internal */\n    @HostListener('keydown', ['$event'])\n    public keyDown(event: KeyboardEvent) {\n        let unsupportedKey = false;\n        const itemsArray = this.tabs.items.toArray();\n        const previousIndex = itemsArray.indexOf(this.tab);\n        let newIndex = previousIndex;\n        const hasDisabledItems = itemsArray.some((item) => item.disabled);\n\n        switch (event.key) {\n            case this.platform.KEYMAP.ARROW_RIGHT:\n                newIndex = this.getNewSelectionIndex(newIndex, itemsArray, event.key, hasDisabledItems);\n                break;\n            case this.platform.KEYMAP.ARROW_LEFT:\n                newIndex = this.getNewSelectionIndex(newIndex, itemsArray, event.key, hasDisabledItems);\n                break;\n            case this.platform.KEYMAP.HOME:\n                event.preventDefault();\n                newIndex = 0;\n                while (itemsArray[newIndex].disabled && newIndex < itemsArray.length) {\n                    newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n                }\n                break;\n            case this.platform.KEYMAP.END:\n                event.preventDefault();\n                newIndex = itemsArray.length - 1;\n                while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex > 0) {\n                    newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n                }\n                break;\n            case this.platform.KEYMAP.ENTER:\n            case this.platform.KEYMAP.SPACE:\n                event.preventDefault();\n                if (this.tabs.activation === 'manual') {\n                    this.nativeElement.click();\n                }\n                unsupportedKey = true;\n                break;\n            default:\n                unsupportedKey = true;\n                break;\n        }\n\n        if (!unsupportedKey) {\n            itemsArray[newIndex].headerComponent.nativeElement.focus({ preventScroll: true });\n            if (this.tabs.activation === 'auto') {\n                this.tabs.selectedIndex = newIndex;\n            }\n        }\n    }\n\n    /** @hidden @internal */\n    public ngAfterViewInit(): void {\n        this.ngZone.runOutsideAngular(() => {\n            if (this.platform.isBrowser) {\n                this._resizeObserver = new (getResizeObserver())(() => {\n                    this.tabs.realignSelectedIndicator();\n                });\n                this._resizeObserver.observe(this.nativeElement);\n            }\n        });\n    }\n\n    /** @hidden @internal */\n    public ngOnDestroy(): void {\n        this.ngZone.runOutsideAngular(() => {\n            this._resizeObserver?.disconnect();\n        });\n    }\n\n    private getNewSelectionIndex(newIndex: number, itemsArray: any[], key: string, hasDisabledItems: boolean): number {\n        if ((key === this.platform.KEYMAP.ARROW_RIGHT && !this.dir.rtl) || (key === this.platform.KEYMAP.ARROW_LEFT && this.dir.rtl)) {\n            newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n            while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex < itemsArray.length) {\n                newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n            }\n        } else {\n            newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n            while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex >= 0) {\n                newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n            }\n        }\n        return newIndex;\n    }\n}\n","<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n    <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n","import { Component } from '@angular/core';\nimport { IgxTabItemDirective } from '../tab-item.directive';\n\n@Component({\n    selector: 'igx-tab-item',\n    templateUrl: 'tab-item.component.html',\n    providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }],\n    standalone: true\n})\nexport class IgxTabItemComponent extends IgxTabItemDirective {\n\n}\n","<ng-template #headerTemplate>\n    <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n    <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[igxTabHeaderLabel],igx-tab-header-label',\n    standalone: true\n})\nexport class IgxTabHeaderLabelDirective { }\n\n@Directive({\n    selector: '[igxTabHeaderIcon],igx-tab-header-icon',\n    standalone: true\n})\nexport class IgxTabHeaderIconDirective { }\n","import { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxTabContentComponent } from './tab-content.component';\nimport { IgxTabHeaderComponent } from './tab-header.component';\nimport { IgxTabItemComponent } from './tab-item.component';\nimport { IgxTabsComponent } from './tabs.component';\nimport { IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective } from './tabs.directives';\n\nexport * from './tabs.component';\nexport * from './tab-item.component';\nexport * from './tab-header.component';\nexport * from './tabs.directives';\nexport * from './tab-content.component';\nexport {\n    ITabsSelectedIndexChangingEventArgs,\n    ITabsSelectedItemChangeEventArgs\n} from '../tabs.directive'\n\n/* NOTE: Tabs directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_TABS_DIRECTIVES = [\n    IgxTabsComponent,\n    IgxTabItemComponent,\n    IgxTabHeaderComponent,\n    IgxTabContentComponent,\n    IgxTabHeaderLabelDirective,\n    IgxTabHeaderIconDirective,\n    IgxPrefixDirective,\n    IgxSuffixDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_TABS_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_TABS_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_TABS_DIRECTIVES\n    ]\n})\nexport class IgxTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality","i1.IgxTabsComponent","i2.IgxTabItemComponent","i3.IgxTabHeaderComponent","i4.IgxTabContentComponent","i5.IgxTabHeaderLabelDirective","i5.IgxTabHeaderIconDirective"],"mappings":"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"}