{"version":3,"file":"eui-components-eui-tabs.mjs","sources":["../../eui-tabs/eui-tab-header/eui-tab-header.component.ts","../../eui-tabs/eui-tab-header/eui-tab-header.component.html","../../eui-tabs/eui-tab-body/eui-tab-body.component.ts","../../eui-tabs/eui-tab-body/eui-tab-body.component.html","../../eui-tabs/eui-tab/eui-tab.component.ts","../../eui-tabs/eui-tabs.component.ts","../../eui-tabs/eui-tabs.component.html","../../eui-tabs/eui-tabs-right-content/eui-tabs-right-content.component.ts","../../eui-tabs/eui-tab-header/eui-tab-header-label.ts","../../eui-tabs/eui-tab-header/eui-tab-header-sub-label.ts","../../eui-tabs/eui-tab-header/eui-tab-header-left-content.ts","../../eui-tabs/eui-tab-header/eui-tab-header-right-content.ts","../../eui-tabs/index.ts","../../eui-tabs/eui-components-eui-tabs.ts"],"sourcesContent":["import { Component, TemplateRef, ViewChild, ViewContainerRef, AfterViewInit, inject } from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n/**\n * @description\n * Custom header content component for individual tabs within eui-tabs.\n * Allows projection of custom content into the tab header area using CDK Portal.\n * Enables rich tab headers with icons, badges, or custom layouts beyond simple text labels.\n * Must be used as a child of eui-tab component to provide custom header content.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-label>Settings</eui-tab-header-label>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### With Icons and Badges\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-left-content>\n *       <eui-icon-svg icon=\"eui-notification\" size=\"s\" />\n *     </eui-tab-header-left-content>\n *     <eui-tab-header-label>Notifications</eui-tab-header-label>\n *     <eui-tab-header-sub-label>Unread messages</eui-tab-header-sub-label>\n *     <eui-tab-header-right-content>\n *       <eui-badge euiDanger>5</eui-badge>\n *     </eui-tab-header-right-content>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### Complex Layout\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-left-content>\n *       <eui-avatar [imageUrl]=\"user.avatar\" euiSizeXs />\n *     </eui-tab-header-left-content>\n *     <div>\n *       <eui-tab-header-label>{{ user.name }}</eui-tab-header-label>\n *       <eui-tab-header-sub-label>{{ user.role }}</eui-tab-header-sub-label>\n *     </div>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### Accessibility\n * - Header content contributes to tab's accessible name\n * - Icons should have appropriate aria-labels\n * - Badges should convey meaningful information\n * - Maintain logical reading order for screen readers\n *\n * ### Notes\n * - Uses CDK Portal for efficient rendering\n * - Supports structured content via sub-components\n * - Left/right content areas for flexible layouts\n * - Label and sub-label for hierarchical text\n * - Replaces simple label attribute when used\n */\n@Component({\n    selector: 'eui-tab-header',\n    templateUrl: './eui-tab-header.component.html',\n})\nexport class EuiTabHeaderComponent implements AfterViewInit {\n    @ViewChild('templateRef') templateRef: TemplateRef<HTMLElement>;\n\n    public templatePortal: TemplatePortal;\n    private viewContainerRef = inject(ViewContainerRef);\n\n    ngAfterViewInit(): void {\n        this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n    }\n}\n","<ng-template #templateRef>\n    <div class=\"eui-tab-header-wrapper\">\n        <ng-content select=\"eui-tab-header-left-content\"/>\n        <div class=\"eui-tab-header-label-wrapper\">\n            <ng-content select=\"eui-tab-header-label\"/>\n            <ng-content select=\"eui-tab-header-sub-label\"/>\n        </div>\n        <ng-content/>\n        <ng-content select=\"eui-tab-header-right-content\"/>\n    </div>\n</ng-template>\n","import { Component, Input, TemplateRef, ViewChild, ViewContainerRef, AfterViewInit, booleanAttribute, inject } from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { BehaviorSubject } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @description\n * Content container component for individual tab panels within eui-tabs.\n * Manages the display of tab content using CDK Portal for efficient rendering.\n * Provides optional padding control for custom content layouts.\n * Automatically handles content visibility based on active tab selection.\n * Must be used as a child of eui-tab component to define the tab's content area.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tab label=\"Content\">\n *   <eui-tab-body>\n *     <h2>Tab Content</h2>\n *     <p>Your content here</p>\n *   </eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### Without Padding\n * ```html\n * <eui-tab label=\"Full Width\">\n *   <eui-tab-body [hasNoContentPadding]=\"true\">\n *     <div class=\"custom-layout\">\n *       Full-width content without default padding\n *     </div>\n *   </eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### With Complex Content\n * ```html\n * <eui-tab label=\"Dashboard\">\n *   <eui-tab-body>\n *     <eui-card>\n *       <eui-card-header>Statistics</eui-card-header>\n *       <eui-card-body>\n *         <!-- Dashboard widgets -->\n *       </eui-card-body>\n *     </eui-card>\n *   </eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### Accessibility\n * - Content has role=\"tabpanel\" automatically applied\n * - Tabindex managed automatically for keyboard navigation\n * - Hidden content not rendered in DOM for performance\n * - Focus management for interactive elements within panel\n *\n * ### Notes\n * - Uses CDK Portal for efficient content rendering\n * - Only active tab content is displayed\n * - hasNoContentPadding useful for full-width layouts\n * - Supports any HTML content or Angular components\n * - Automatic focus management for nested interactive elements\n */\n@Component({\n    selector: 'eui-tab-body',\n    templateUrl: './eui-tab-body.component.html',\n    imports: [\n        AsyncPipe,\n    ],\n})\nexport class EuiTabBodyComponent implements AfterViewInit {\n    /**\n     * Removes default padding from the tab content area.\n     * Useful for full-width content, custom layouts, or when content provides its own spacing.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasNoContentPadding = false;\n\n    @ViewChild('templateRef') templateRef: TemplateRef<HTMLElement>;\n\n    public templatePortal: TemplatePortal;\n    tabIndex$ = new BehaviorSubject(0);\n    private viewContainerRef = inject(ViewContainerRef);\n\n    ngAfterViewInit(): void {\n        this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n    }\n}\n","<ng-template #templateRef>\n    <div class=\"eui-tab__body\" [tabindex]=\"tabIndex$ | async\" [class.eui-tab__body--no-padding]=\"hasNoContentPadding\">\n        <ng-content></ng-content>\n    </div>\n</ng-template>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    Input,\n    OnChanges,\n    SimpleChanges,\n    booleanAttribute,\n    forwardRef,\n    inject,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EuiTabHeaderComponent } from '../eui-tab-header/eui-tab-header.component';\nimport { EuiTabBodyComponent } from '../eui-tab-body/eui-tab-body.component';\n\n/**\n * @description\n * Individual tab component representing a single tab within eui-tabs navigation.\n * Manages tab state including active, disabled, visible, and closable states.\n * Supports custom header and body content through content projection.\n * Integrates with BaseStatesDirective for theming variants (primary, secondary, success, warning, danger).\n * Must be used as a direct child of eui-tabs component to participate in tab navigation.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tabs>\n *   <eui-tab label=\"Overview\">\n *     <eui-tab-body>\n *       <p>Overview content</p>\n *     </eui-tab-body>\n *   </eui-tab>\n *   \n *   <eui-tab label=\"Details\" [isDisabled]=\"true\">\n *     <eui-tab-body>\n *       <p>Details content</p>\n *     </eui-tab-body>\n *   </eui-tab>\n * </eui-tabs>\n * ```\n *\n * ### With Custom Header\n * ```html\n * <eui-tab [isClosable]=\"true\" euiPrimary>\n *   <eui-tab-header>\n *     <eui-tab-header-left-content>\n *       <eui-icon-svg icon=\"eui-home\" size=\"s\" />\n *     </eui-tab-header-left-content>\n *     <eui-tab-header-label>Home</eui-tab-header-label>\n *     <eui-tab-header-right-content>\n *       <eui-badge euiInfo>3</eui-badge>\n *     </eui-tab-header-right-content>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### Accessibility\n * - Tab has role=\"tab\" automatically applied\n * - Associated panel has role=\"tabpanel\"\n * - Disabled state prevents keyboard and mouse interaction\n * - Tooltip provides additional context on hover\n *\n * ### Notes\n * - Use isClosable for dismissible tabs\n * - isVisible controls display without removing from DOM\n * - Color variants via BaseStatesDirective (euiPrimary, euiSuccess, etc.)\n * - Custom handlers via isHandleCloseOnClose and isHandleActivateTab\n * - URL property enables deep linking and routing integration\n */\n@Component({\n    selector: 'eui-tab',\n    template: '<ng-content/>',\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: ['euiPrimary', 'euiSecondary', 'euiInfo', 'euiSuccess', 'euiWarning', 'euiDanger', 'euiVariant'],\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiTabComponent implements OnChanges {\n    /**\n     * Unique identifier for the tab.\n     * Used for programmatic tab selection and tracking.\n     * Required for proper tab management and routing.\n     */\n    @Input() id: string;\n    /**\n     * URL or route path associated with the tab.\n     * Enables deep linking and browser history integration for tab navigation.\n     */\n    @Input() url: string;\n    /**\n     * Data attribute used for end-to-end testing identification.\n     * @default 'eui-tab'\n     */\n    @Input() e2eAttr = 'eui-tab';\n    /**\n     * Tooltip text displayed when hovering over the tab header.\n     * Provides additional context or information about the tab content.\n     */\n    @Input() tooltip: string;\n    /**\n     * Enables a close button on the tab header for dismissible tabs.\n     * Allows users to remove or hide the tab from the tab bar.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isClosable = false;\n    /**\n     * Disables the tab, preventing user interaction and selection.\n     * Applies disabled styling and blocks tab activation.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isDisabled = false;\n    /**\n     * Controls the visibility of the tab in the tab bar.\n     * When false, hides the tab from display without removing it from the DOM.\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isVisible = true;\n    /**\n     * Enables automatic tab closure when the close button is clicked.\n     * When false, close button click must be handled externally.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isHandleCloseOnClose = false;\n    /**\n     * Enables automatic tab activation when the tab is clicked.\n     * When false, tab activation must be handled externally.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isHandleActivateTab = false;\n\n    @ContentChild(forwardRef(() => EuiTabHeaderComponent)) templateHeader: EuiTabHeaderComponent;\n    @ContentChild(forwardRef(() => EuiTabBodyComponent)) templateBody: EuiTabBodyComponent;\n\n    public isActive = false;\n\n    public isVisible$ = new BehaviorSubject(this.isVisible);\n    public isClosable$ = new BehaviorSubject(this.isClosable);\n    public isDisabled$ = new BehaviorSubject(this.isDisabled);\n    public baseStatesDirective = inject(BaseStatesDirective);\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c?.isVisible) {\n            this.isVisible$.next(c.isVisible.currentValue);\n        }\n        if (c?.isClosable) {\n            this.isClosable$.next(c.isClosable.currentValue);\n        }\n        if (c?.isDisabled) {\n            this.isDisabled$.next(c.isDisabled.currentValue);\n        }\n    }\n\n    public activateTab(): void {\n        this.isActive = true;\n    }\n\n    public deactivateTab(): void {\n        this.isActive = false;\n    }\n}\n","import {\n    Component,\n    ContentChildren,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    forwardRef,\n    AfterViewInit,\n    ElementRef,\n    ChangeDetectorRef,\n    HostBinding,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ViewChild,\n    SimpleChanges,\n    ViewChildren,\n    OnChanges,\n    OnInit,\n    inject,\n    PLATFORM_ID,\n    DOCUMENT,\n} from '@angular/core';\nimport { AsyncPipe, isPlatformBrowser, NgClass } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, style } from '@angular/animations';\nimport { Subject, startWith, takeUntil } from 'rxjs';\n\nimport { EuiAppShellService, uniqueId } from '@eui/core';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON_BUTTON } from '@eui/components/eui-icon-button';\n\nimport { EuiTabComponent } from './eui-tab/eui-tab.component';\n\n/**\n * @description\n * eUI Tabs component helps to organize content into separate views where only one view can be visible at a time.\n * Each tab's label is shown in the tab header and the active tab is designated with a primary ink bar visual.\n * The active tab may be set using the `activeTabIndex` input option or when the user selects one of the tab labels in the header.\n * When the list of tab labels exceeds the width of the header or its container, pagination controls appear to let the user scroll left and right across the tabs.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tabs [activeTabIndex]=\"0\" (activeTabChange)=\"onTabChange($event)\">\n *   <eui-tab label=\"Overview\">\n *     <eui-tab-body>\n *       <p>Overview content here</p>\n *     </eui-tab-body>\n *   </eui-tab>\n *   <eui-tab label=\"Details\">\n *     <eui-tab-body>\n *       <p>Details content here</p>\n *     </eui-tab-body>\n *   </eui-tab>\n * </eui-tabs>\n * ```\n *\n * ### With Custom Headers\n * ```html\n * <eui-tabs>\n *   <eui-tab>\n *     <eui-tab-header>\n *       <eui-tab-header-left-content>\n *         <eui-icon svgName=\"home\" />\n *       </eui-tab-header-left-content>\n *       <eui-tab-header-label>Home</eui-tab-header-label>\n *     </eui-tab-header>\n *     <eui-tab-body>Content</eui-tab-body>\n *   </eui-tab>\n * </eui-tabs>\n * ```\n *\n * ### Accessibility\n * - Use role=\"tablist\" on container (automatically applied)\n * - Each tab has role=\"tab\" and associated panel has role=\"tabpanel\"\n * - Keyboard navigation: Arrow keys to switch tabs, Tab to move focus\n * - Provide meaningful aria-label for the tabs component\n *\n * ### Notes\n * - Only one tab content is visible at a time\n * - Pagination controls appear automatically when tabs overflow\n * - Use isMainNavigation=\"true\" for primary navigation styling\n * - Use isFlat=\"true\" for flat visual style without elevation\n */\n@Component({\n    selector: 'eui-tabs',\n    templateUrl: './eui-tabs.component.html',\n    styleUrl: './eui-tabs.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgClass,\n        AsyncPipe,\n        PortalModule,\n        ...EUI_ICON,\n        ...EUI_BUTTON,\n        ...EUI_ICON_BUTTON,\n    ],\n})\nexport class EuiTabsComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n    @HostBinding('class')\n    get elementClass(): string {\n        return [\n            'eui-tabs', \n            this.isMainNavigation ? 'eui-tabs--main-navigation' : '',\n            this.isFlat ? 'eui-tabs--flat' : '',\n        ].join(' ').trim();\n    }\n    @HostBinding('attr.data-e2e')\n    /**\n     * Sets the `data-e2e` attribute for the host element.\n     *\n     * @default 'eui-tabs'\n     */\n    @Input()\n    e2eAttr = 'eui-tabs';\n    /**\n     * Index of the active tab\n     *\n     * @default 0\n     */\n    @Input() activeTabIndex = 0;\n    /**\n     * Sets the `aria-label` attribute for the host element.\n     *\n     * @default 'eUI Tabs'\n     */\n    @Input() ariaLabel = 'eUI Tabs';\n\n    @Input({ transform: booleanAttribute }) isMainNavigation = false;\n    @Input({ transform: booleanAttribute }) isFlat = false;\n\n    /**\n     * Event emitted when a tab is closed\n     */\n    @Output() tabClose = new EventEmitter<{ tab: EuiTabComponent; index: number }>();\n    /**\n     * Event emitted when a tab is activated\n     */\n    @Output() tabActivate = new EventEmitter<{ tab: EuiTabComponent; index: number }>();\n    /**\n     * Event emitted when a tab is clicked\n     */\n    @Output() tabClick = new EventEmitter<{ tab: EuiTabComponent; index: number }>();\n\n    @ContentChildren(forwardRef(() => EuiTabComponent), { descendants: false }) _tabs: QueryList<EuiTabComponent>;\n\n    @ViewChild('euiTabsHeadersContainer') euiTabsHeadersContainer: ElementRef;\n    @ViewChild('euiTabsHeaders') euiTabsHeaders: ElementRef;\n    @ViewChild('euiTabsRightContent') euiTabsRightContent: ElementRef;\n    @ViewChildren('euiTabListItems') euiTabListItems: QueryList<ElementRef>;\n\n    public tabs: EuiTabComponent[] = [];\n    public scrolling = false;\n    public navigationLeftButtonDisabled = true;\n    public navigationRightButtonDisabled = false;\n    public currentOffset = 0;\n\n    protected tabId = uniqueId();\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private platformId = inject(PLATFORM_ID);\n    private player: AnimationPlayer;\n    private stepMove = 400;\n    private scrollOffset = 40;\n    private scrollingCount = 0;\n    private cd = inject(ChangeDetectorRef);\n    private builder = inject(AnimationBuilder);\n    private euiAppShellService = inject(EuiAppShellService);\n    private document = inject(DOCUMENT);\n\n    /**\n     * Width of the tabs headers container\n     */\n    get euiTabsHeadersContainerWidth(): number {\n        return (this.euiTabsHeadersContainer?.nativeElement.clientWidth - this.euiTabsRightContentWidth);\n    }\n\n    /**\n     * Width of the tabs headers\n     */\n    get euiTabsHeadersWidth(): number {\n        return this.euiTabsHeaders?.nativeElement.clientWidth;\n    }\n\n    /**\n     * Width of the tabs right content\n     */\n    get euiTabsRightContentWidth(): number {\n        return this.euiTabsRightContent?.nativeElement?.offsetWidth || 0;\n    }\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c?.activeTabIndex && !c.activeTabIndex.isFirstChange()) {\n            this.activate(this.activeTabIndex);\n        }\n    }\n\n    ngOnInit(): void {\n        this.euiAppShellService.state$.pipe(takeUntil(this.destroy$)).subscribe((state) => {\n            this.tabsScrollingHandler();\n        });\n    }\n\n    ngAfterViewInit(): void {\n        this._tabs.changes.pipe(startWith(this._tabs), takeUntil(this.destroy$)).subscribe((tabs: QueryList<EuiTabComponent>) => {\n            this.tabs = tabs.toArray();\n            setTimeout(() => {\n                this.tabsScrollingHandler();\n            });\n\n            this.cd.detectChanges();\n        });\n\n        setTimeout(() => {\n            if (this.tabs[this.activeTabIndex]) {\n                this.cd.markForCheck();\n                this.activate(this.activeTabIndex, false, { emitEvent: false });\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Activate a tab having index passed in parameter if exists.\n     *\n     * @param index Index of the tab to close\n     * @param isAnimated Whether the tab activation should be animated\n     * @param options Object with emitEvent property to emit the event or not\n     */\n    public activateTab(index: number, isAnimated = true, options = { emitEvent: true }): void {\n        const tab = this.tabs[index];\n        if (tab) {\n            this.tabs.forEach((t) => {\n                t.deactivateTab();\n            });\n\n            this.setScrollToTabIndex(index, isAnimated);\n\n            tab.activateTab();\n            this.activeTabIndex = index;\n\n            if (options.emitEvent) {\n                this.tabActivate.emit({ tab, index });\n            }\n\n            this.cd.detectChanges();\n        }\n    }\n\n    /**\n     * Close a tab having index passed in parameter if exists.\n         * @param index Index of the tab to close\n     */\n    public closeTab(index: number): void {\n        const tab = this.tabs[index];\n        if (this.tabs[index]) {\n            this.tabs[index].deactivateTab();\n            this.tabs = this.tabs.filter((_, i) => i !== index);\n\n            if (index === this.activeTabIndex) {\n                const previousVisibleIndex = this.tabs.indexOf(this.tabs[index - 1]);\n                this.cd.markForCheck();\n\n                if (previousVisibleIndex < 0) {\n                    this.activate(0);\n                } else {\n                    this.activate(previousVisibleIndex);\n                }\n            } else {\n                if (index < this.activeTabIndex) {\n                    this.activeTabIndex = this.activeTabIndex - 1;\n                }\n            }\n\n            this.cd.detectChanges();\n            this.tabsScrollingHandler();\n        }\n    }\n\n    /**\n     * Scroll to the left handler\n     */\n    public goToLeft(): void {\n        let scrollTo = this.currentOffset + this.stepMove;\n        if (scrollTo > 0) {\n            scrollTo = 0;\n        }\n\n        this.setScrollTo(scrollTo);\n    }\n\n    /**\n     * Scroll to the rihgt handler\n     */\n    public goToRight(): void {\n        let scrollTo = this.currentOffset - this.stepMove;\n        if (Math.abs(scrollTo) > this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth) {\n            scrollTo = -(this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth) - this.scrollOffset;\n        }\n\n        this.setScrollTo(scrollTo);\n    }\n\n    /**\n     * Actions applied upon a keydown event\n     *\n     * @param i Index of the tab for each pressed key\n     * @param event The keyboard event\n     */\n    protected onKeydown(i: number, event: KeyboardEvent): void {\n        switch (event.key) {\n            case 'Enter': {\n                if (!this.tabs[i].isDisabled) {\n                    this.activate(i);\n                }\n                break;\n            }\n            case 'ArrowRight': {\n                const isLastItem = i === this.euiTabListItems.toArray().length - 1;\n                const index = isLastItem ? 0 : i + 1;\n\n                this.setScrollToTabIndex(index, false);\n                this.euiTabListItems.toArray()[index]?.nativeElement.focus();\n\n                break;\n            }\n            case 'ArrowLeft': {\n                const lastIndex = this.euiTabListItems.toArray().length - 1;\n                const index = i === 0 ? lastIndex : i - 1;\n\n                this.setScrollToTabIndex(index, false);\n                this.euiTabListItems.toArray()[index]?.nativeElement.focus();\n\n                break;\n            }\n            case 'Home': {\n                this.setScrollToTabIndex(0, false);\n                this.euiTabListItems.toArray()[0]?.nativeElement.focus();\n                event.preventDefault();\n                break;\n            }\n            case 'End': {\n                this.setScrollToTabIndex(this.euiTabListItems.toArray().length - 1, false);\n                this.euiTabListItems.toArray()[this.euiTabListItems.toArray().length - 1]?.nativeElement.focus();\n                event.preventDefault();\n                break;\n            }\n            case 'Delete': {\n                if (this.tabs[i].isClosable) {\n                    if (i === this.euiTabListItems.toArray().length - 1) {\n                        this.euiTabListItems.toArray()[i - 1]?.nativeElement.focus();\n                        this.close(i, event);\n                    } else {\n                        this.close(i, event);\n                        this.euiTabListItems.toArray()[i]?.nativeElement.focus();\n                    }\n                }\n                break;\n            }\n            default: {\n                break;\n            }\n        }\n    }\n\n    /**\n     * Click handler for tab list item\n     *\n     * @param index Index of the tab clicked\n     */\n    protected tabListItemClick(index: number): void {\n        const tab = this.tabs[index];\n\n        this.tabClick.emit({ tab, index });\n\n        this.activate(index);\n    }\n\n    /**\n     * Activates a tab\n     *\n     * @param index Index of the tab to activate\n     * @param isAnimated Whether the activation should be animated\n     * @param options Object with emitEvent property to emit the event or not\n     */\n    protected activate(index: number, isAnimated = true, options = { emitEvent: true }): void {\n        const tab = this.tabs[index];\n\n        if (tab && !tab.isHandleActivateTab) {\n            this.activateTab(index, isAnimated, options);\n        }\n    }\n\n    /**\n     * Closes a tab\n     *\n     * @param index Index of the tab to close\n     * @param e\n     */\n    protected close(index: number, e: Event): void {\n        const tab = this.tabs[index];\n\n        if (tab && !tab.isHandleCloseOnClose) {\n            this.closeTab(index);\n        }\n\n        this.tabClose.emit({ tab, index });\n        e.stopPropagation();\n    }\n\n    /**\n     * Checks if there are html elements within the tab panel, in order to focus or not the tab panel\n     * @param index The tab index\n     */\n    protected onAttached(index: number): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const tabbody = this.document.querySelector('#tabpanel-' + index + '-' + this.tabId)?.children[0];\n            if (tabbody?.children.length > 0) {\n                for (const child of Array.from(tabbody.children)) {\n                    if (this.isFocusableElement(child)) {\n                        this.tabs[index - 1].templateBody.tabIndex$.next(-1);\n                    } else {\n                        this.tabs[index - 1].templateBody.tabIndex$.next(0);\n                    }\n                }\n            } else {\n                this.tabs[index - 1].templateBody.tabIndex$.next(0);\n            }\n        }\n    }\n\n    /**\n     * Checks the existence of focusable elements\n     * @param origin The element to check\n     */\n    private isFocusableElement(origin: Element): boolean {\n        return (\n            origin.matches('button') ||\n            origin.matches('a') ||\n            origin.matches('input') ||\n            origin.matches('select') ||\n            origin.matches('textarea') ||\n            origin.matches('[tabindex]:not([tabindex=\"-1\"])')\n        );\n    }\n\n    /**\n     * Checks if the tabs headers are scrolling and calculates the scrolling position\n     */\n    private tabsScrollingHandler(): void {\n        if (this.euiTabsHeadersContainerWidth && this.euiTabsHeadersWidth) {\n\n            this.scrolling = this.euiTabsHeadersWidth > this.euiTabsHeadersContainerWidth;\n\n            if (!this.scrolling) {\n                this.scrollingCount = 0;\n                this.setScrollTo(0, false);\n                this.navigationLeftButtonDisabled = true;\n                this.navigationRightButtonDisabled = true;\n            } else {\n                const maxScrollableWidth = this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth;\n\n                if (maxScrollableWidth <= Math.abs(this.currentOffset) + this.scrollOffset && this.scrollingCount !== 0) {\n                    const scrollTo = -maxScrollableWidth - this.scrollOffset;\n                    this.setScrollTo(scrollTo);\n                } else {\n                    this.navigationRightButtonDisabled = Math.abs(this.currentOffset) >= maxScrollableWidth;\n                    this.navigationLeftButtonDisabled = this.currentOffset >= 0;\n                }\n\n                this.scrollingCount++;\n            }\n\n            this.cd.detectChanges();\n        }\n    }\n\n    /**\n     * Sets the scroll position oon the tab header specified by index\n     *\n     * @param index Index of the tab header to scroll to\n     * @param isAnimated Whether the tab activation should be animated\n     */\n    private setScrollToTabIndex(index: number, isAnimated = true): void {\n        const activeTab = this.euiTabsHeaders.nativeElement.children.item(index);\n\n        if (activeTab && !this.isActiveTabFullyVisible(activeTab) && !this.isMainNavigation) {\n            let scrollTo = 0;\n            let subsetWidth = 0;\n            for (let i = 0; i <= index; i++) {\n                subsetWidth += this.euiTabsHeaders.nativeElement.children.item(i).clientWidth;\n            }\n\n            scrollTo = this.euiTabsHeadersContainerWidth / 2 - subsetWidth;\n\n            if (Math.abs(scrollTo) > this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth + this.scrollOffset) {\n                scrollTo = -(this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth + this.scrollOffset);\n            }\n\n            if (scrollTo > 0 || (scrollTo < 0 && index === 0)) {\n                scrollTo = 0;\n            }\n\n            this.setScrollTo(scrollTo, isAnimated);\n        }\n    }\n\n    /**\n     * Sets the scroll position of the tabs headers\n     *\n     * @param scrollTo Number to set on the margin-left style property\n     * @param isAnimated Whether the tab activation should be animated\n     */\n    private setScrollTo(scrollTo: number, isAnimated = true): void {\n        const timings = isAnimated ? '500ms cubic-bezier(0.35, 0, 0.25, 1)' : 0;\n        const animation: AnimationFactory = this.builder.build([animate(timings, style({ 'margin-left': +scrollTo + 'px' }))]);\n\n        this.player = animation.create(this.euiTabsHeaders.nativeElement);\n        this.player.play();\n\n        this.currentOffset = scrollTo;\n\n        if (scrollTo === 0) {\n            this.navigationLeftButtonDisabled = true;\n        }\n        if (Math.abs(this.currentOffset) < this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth + this.scrollOffset) {\n            this.navigationRightButtonDisabled = false;\n        }\n        if (this.currentOffset < 0) {\n            this.navigationLeftButtonDisabled = false;\n        }\n        if (Math.abs(scrollTo) === this.euiTabsHeadersWidth - this.euiTabsHeadersContainerWidth + this.scrollOffset) {\n            this.navigationRightButtonDisabled = true;\n        }\n\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Checks if the active tab is fully visible\n     *\n     * @param activeTab Index of the tab to check\n     * @returns true if fully visible, false otherwise\n     */\n    private isActiveTabFullyVisible(activeTab: HTMLDivElement): boolean {\n        const fullyVisible =\n            activeTab.offsetLeft - this.scrollOffset >= 0 &&\n            activeTab.offsetLeft + activeTab.clientWidth < this.euiTabsHeadersContainerWidth - this.scrollOffset;\n\n        return fullyVisible;\n    }\n}\n","<div #euiTabsHeadersContainer class=\"eui-tabs-wrapper\" [class.eui-tabs-wrapper--scrolling]=\"scrolling\">\n    <div class=\"eui-tabs-navigation\">\n        <div class=\"eui-tabs-navigation__left-item\">\n            <eui-icon-button\n                (click)=\"goToLeft()\"\n                [euiDisabled]=\"navigationLeftButtonDisabled\"\n                icon=\"eui-chevron-left\"\n                ariaLabel=\"Scroll left\" />\n        </div>\n\n        <ul #euiTabsHeaders class=\"eui-tab-items\" [attr.data-offset]=\"currentOffset\" role=\"tablist\" [attr.aria-label]=\"ariaLabel\">\n            @for (tab of tabs; let i = $index; track tab) {\n                @if (tab.isVisible$ | async) {\n                    <li #euiTabListItems\n                        class=\"eui-tab-item\"\n                        id=\"tab-{{ i + 1 }}-{{ tabId }}\"\n                        [tabindex]=\"i === activeTabIndex ? '0' : '-1'\"\n                        role=\"tab\"\n                        attr.aria-controls=\"tabpanel-{{ i + 1 }}-{{ tabId }}\"\n                        [attr.aria-selected]=\"i === activeTabIndex\"\n                        [ngClass]=\"tab.baseStatesDirective.euiVariant ? 'eui-tab-item--' + tab.baseStatesDirective.euiVariant : ''\"\n                        [class.eui-tab-item--active]=\"i === activeTabIndex\"\n                        [class.eui-tab-item--disabled]=\"tab.isDisabled$ | async\"\n                        attr.aria-disabled=\"{{ tab.isDisabled$ | async }}\"\n                        (click)=\"tabListItemClick(i)\"\n                        (keydown)=\"onKeydown(i, $event)\">\n                        <ng-template [cdkPortalOutlet]=\"tab.templateHeader.templatePortal\"></ng-template>\n\n                        @if (tab.isClosable$ | async) {\n                            <eui-icon-button\n                                [tabindex]=\"-1\"\n                                ariaLabel=\"Closable\"\n                                euiRounded\n                                class=\"eui-tab-close-button\"\n                                icon=\"eui-close\"\n                                size=\"s\"\n                                (buttonClick)=\"close(i, $event)\">\n                            </eui-icon-button>\n                        }\n                    </li>\n                }\n            }\n        </ul>\n\n        <div class=\"eui-tabs-navigation__right-item\">\n            <eui-icon-button\n                (click)=\"goToRight()\"\n                [euiDisabled]=\"navigationRightButtonDisabled\"\n                icon=\"eui-chevron-right\"\n                ariaLabel=\"Scroll right\" />\n        </div>\n    </div>\n    <div #euiTabsRightContent class=\"eui-tabs-right-content-wrapper\">\n        <ng-content select=\"eui-tabs-right-content\"></ng-content>\n    </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n    @if (i === activeTabIndex && (tab.isDisabled$ | async) === false && tab.templateBody) {\n        <div id=\"tabpanel-{{ i + 1 }}-{{ tabId }}\" class=\"eui-tab-body-container\" role=\"tabpanel\" attr.aria-labelledby=\"tab-{{ i + 1 }}-{{ tabId }}\">\n            <ng-template [cdkPortalOutlet]=\"tab.templateBody.templatePortal\" (attached)=\"onAttached(i + 1)\"></ng-template>\n        </div>\n    }\n}\n","import { Component } from '@angular/core';\n\n/**\n * @description\n * Content projection component for displaying custom content aligned to the right side of the tabs header.\n * Automatically positions content using flexbox with left margin auto for right alignment.\n * Typically contains action buttons, filters, or supplementary controls related to tab content.\n * Must be used as a direct child of eui-tabs component to maintain proper layout structure.\n *\n * @usageNotes\n * ### Basic Usage with Button\n * ```html\n * <eui-tabs>\n *   <eui-tab label=\"Tab 1\">\n *     <eui-tab-body>Content 1</eui-tab-body>\n *   </eui-tab>\n *   <eui-tab label=\"Tab 2\">\n *     <eui-tab-body>Content 2</eui-tab-body>\n *   </eui-tab>\n *   \n *   <eui-tabs-right-content>\n *     <button euiButton euiPrimary (click)=\"addTab()\">\n *       Add Tab\n *     </button>\n *   </eui-tabs-right-content>\n * </eui-tabs>\n * ```\n *\n * ### With Multiple Controls\n * ```html\n * <eui-tabs>\n *   <!-- tabs here -->\n *   \n *   <eui-tabs-right-content>\n *     <eui-input-text placeholder=\"Filter...\" />\n *     <button euiButton euiSecondary>\n *       <eui-icon-svg icon=\"eui-settings\" />\n *     </button>\n *   </eui-tabs-right-content>\n * </eui-tabs>\n * ```\n *\n * ### Accessibility\n * - Controls should be keyboard accessible\n * - Buttons need descriptive labels or aria-labels\n * - Maintain logical tab order\n * - Interactive elements should have visible focus indicators\n *\n * ### Notes\n * - Automatically aligned to the right of tab headers\n * - Does not interfere with tab navigation controls\n * - Useful for global actions affecting all tabs\n * - Supports any content (buttons, inputs, dropdowns)\n * - Positioned at the same level as tab headers\n */\n@Component({\n    selector: 'eui-tabs-right-content',\n    template: '<ng-content/>',\n    styles: `\n    :host {\n        display: flex;\n        margin-left: auto;\n    }\n    `,\n})\nexport class EuiTabsRightContentComponent {\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * @description\n * Primary label component for displaying the main text content within custom tab headers.\n * Provides consistent styling for the principal tab title or heading.\n * Serves as the primary identifier for the tab content when using custom header layouts.\n * Must be used within eui-tab-header to provide structured label content.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-label>Dashboard</eui-tab-header-label>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### With Other Header Elements\n * ```html\n * <eui-tab-header>\n *   <eui-tab-header-left-content>\n *     <eui-icon-svg icon=\"eui-chart\" />\n *   </eui-tab-header-left-content>\n *   <eui-tab-header-label>Analytics</eui-tab-header-label>\n *   <eui-tab-header-sub-label>Last 30 days</eui-tab-header-sub-label>\n * </eui-tab-header>\n * ```\n *\n * ### Accessibility\n * - Label text is the primary accessible name for the tab\n * - Should be concise and descriptive\n * - Avoid redundant text with icons\n *\n * ### Notes\n * - Applies consistent typography and spacing\n * - Primary text identifier for the tab\n * - Works with sub-label for hierarchical information\n */\n@Component({\n    selector: 'eui-tab-header-label',\n    template: '<ng-content />',\n})\nexport class EuiTabHeaderLabelComponent {\n    @HostBinding('class') string = 'eui-tab-header-label';\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * @description\n * Sub-label component for displaying secondary descriptive text within custom tab headers.\n * Provides consistent styling for supplementary information below or alongside the main tab label.\n * Typically contains additional context, counts, or status information related to the tab.\n * Must be used within eui-tab-header to provide structured sub-label content.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-label>Messages</eui-tab-header-label>\n *     <eui-tab-header-sub-label>12 unread</eui-tab-header-sub-label>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### With Dynamic Content\n * ```html\n * <eui-tab-header>\n *   <eui-tab-header-label>Tasks</eui-tab-header-label>\n *   <eui-tab-header-sub-label>\n *     {{ completedTasks }} of {{ totalTasks }} completed\n *   </eui-tab-header-sub-label>\n * </eui-tab-header>\n * ```\n *\n * ### Accessibility\n * - Sub-label provides additional context to screen readers\n * - Should complement, not duplicate, the main label\n * - Keep text concise for better readability\n *\n * ### Notes\n * - Applies secondary text styling (smaller, lighter)\n * - Useful for counts, status, or metadata\n * - Positioned below or beside main label\n * - Optional - tabs work without sub-labels\n */\n@Component({\n    selector: 'eui-tab-header-sub-label',\n    template: '<ng-content />',\n})\nexport class EuiTabHeaderSublabelComponent {\n    @HostBinding('class') string = 'eui-tab-header-sub-label';\n}\n","import { Component, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Content projection component for displaying custom content aligned to the left side of individual tab headers.\n * Enables placement of icons, indicators, or leading visual elements within the tab header area.\n * Automatically applies left-aligned styling for consistent positioning.\n * Must be used within eui-tab-header to add left-aligned supplementary content to tabs.\n *\n * @usageNotes\n * ### Basic Usage with Icon\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-left-content>\n *       <eui-icon-svg icon=\"eui-home\" size=\"s\" />\n *     </eui-tab-header-left-content>\n *     <eui-tab-header-label>Home</eui-tab-header-label>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### With Avatar\n * ```html\n * <eui-tab-header>\n *   <eui-tab-header-left-content>\n *     <eui-avatar [imageUrl]=\"user.avatar\" euiSizeXs />\n *   </eui-tab-header-left-content>\n *   <eui-tab-header-label>{{ user.name }}</eui-tab-header-label>\n * </eui-tab-header>\n * ```\n *\n * ### Accessibility\n * - Icons should have aria-label or aria-hidden\n * - Decorative content should use aria-hidden=\"true\"\n * - Meaningful icons need descriptive labels\n *\n * ### Notes\n * - Positioned before the label text\n * - Commonly used for icons or avatars\n * - Maintains consistent spacing\n * - Supports any content (icons, badges, custom elements)\n */\n@Component({\n    selector: 'eui-tab-header-left-content',\n    template: '<ng-content />',\n})\nexport class EuiTabHeaderLeftContentComponent {\n    @HostBinding('class') string = 'eui-tab-header-left-content';\n}\n","import { Component, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Content projection component for displaying custom content aligned to the right side of individual tab headers.\n * Enables placement of badges, icons, or action buttons within the tab header area.\n * Automatically applies right-aligned styling for consistent positioning.\n * Must be used within eui-tab-header to add right-aligned supplementary content to tabs.\n *\n * @usageNotes\n * ### Basic Usage with Badge\n * ```html\n * <eui-tab>\n *   <eui-tab-header>\n *     <eui-tab-header-label>Notifications</eui-tab-header-label>\n *     <eui-tab-header-right-content>\n *       <eui-badge euiDanger>5</eui-badge>\n *     </eui-tab-header-right-content>\n *   </eui-tab-header>\n *   <eui-tab-body>Content</eui-tab-body>\n * </eui-tab>\n * ```\n *\n * ### With Multiple Elements\n * ```html\n * <eui-tab-header>\n *   <eui-tab-header-label>Tasks</eui-tab-header-label>\n *   <eui-tab-header-right-content>\n *     <eui-badge euiSuccess>3</eui-badge>\n *     <eui-icon-svg icon=\"eui-checkmark\" size=\"xs\" />\n *   </eui-tab-header-right-content>\n * </eui-tab-header>\n * ```\n *\n * ### Accessibility\n * - Badges should convey meaningful information\n * - Icons need aria-label if interactive\n * - Decorative elements use aria-hidden=\"true\"\n * - Maintain logical tab order for interactive elements\n *\n * ### Notes\n * - Positioned after the label text\n * - Commonly used for badges, counts, or status icons\n * - Maintains consistent spacing\n * - Supports multiple elements\n * - Does not interfere with close button placement\n */\n@Component({\n    selector: 'eui-tab-header-right-content',\n    template: '<ng-content />',\n})\nexport class EuiTabHeaderRightContentComponent {\n    @HostBinding('class') string = 'eui-tab-header-right-content';\n}\n","export * from './eui-tabs.component';\nexport * from './eui-tabs-right-content/eui-tabs-right-content.component';\nexport * from './eui-tab/eui-tab.component';\nexport * from './eui-tab-header/eui-tab-header.component';\nexport * from './eui-tab-header/eui-tab-header.component';\nexport * from './eui-tab-header/eui-tab-header-label';\nexport * from './eui-tab-header/eui-tab-header-sub-label';\nexport * from './eui-tab-header/eui-tab-header-left-content';\nexport * from './eui-tab-header/eui-tab-header-right-content';\nexport * from './eui-tab-body/eui-tab-body.component';\n\nimport { EuiTabsComponent } from './eui-tabs.component';\nimport { EuiTabsRightContentComponent } from './eui-tabs-right-content/eui-tabs-right-content.component';\nimport { EuiTabBodyComponent } from './eui-tab-body/eui-tab-body.component';\nimport { EuiTabHeaderComponent } from './eui-tab-header/eui-tab-header.component';\nimport { EuiTabComponent } from './eui-tab/eui-tab.component';\nimport { EuiTabHeaderLabelComponent } from './eui-tab-header/eui-tab-header-label';\nimport { EuiTabHeaderSublabelComponent } from './eui-tab-header/eui-tab-header-sub-label';\nimport { EuiTabHeaderRightContentComponent } from './eui-tab-header/eui-tab-header-right-content';\nimport { EuiTabHeaderLeftContentComponent } from './eui-tab-header/eui-tab-header-left-content';\n\nexport const EUI_TABS = [\n    EuiTabsComponent,\n    EuiTabsRightContentComponent,\n    EuiTabBodyComponent,\n    EuiTabHeaderComponent,\n    EuiTabHeaderLabelComponent,\n    EuiTabHeaderSublabelComponent,\n    EuiTabHeaderRightContentComponent,\n    EuiTabHeaderLeftContentComponent,\n    EuiTabComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}