{"version":3,"file":"eui-components-directives.mjs","sources":["../../directives/eui-template.directive.ts","../../directives/eui-tooltip/animations/show-hide.ts","../../directives/eui-tooltip/container/eui-tooltip-container.component.ts","../../directives/eui-tooltip/container/eui-tooltip-container.component.html","../../directives/eui-tooltip/eui-tooltip.directive.ts","../../directives/eui-maxlength.directive.ts","../../directives/eui-has-permission.directive.ts","../../directives/eui-scroll-handler.directive.ts","../../directives/eui-smooth-scroll.directive.ts","../../directives/eui-clearable.directive.ts","../../directives/eui-loading.directive.ts","../../directives/eui-resizable/eui-resizable.component.ts","../../directives/eui-resizable/eui-resizable.component.html","../../directives/eui-resizable/eui-resizable.directive.ts","../../directives/eui-arrow-key-navigable.directive.ts","../../directives/eui-components-directives.ts"],"sourcesContent":["import { Directive, Input, TemplateRef, inject } from '@angular/core';\n\n/**\n * Directive for defining named template references that can be dynamically rendered.\n * Provides a way to identify and retrieve templates by name for content projection.\n * Commonly used in components that accept multiple template slots (headers, footers, custom content).\n * Works with TemplateRef to enable flexible content customization.\n *\n * @usageNotes\n * ```html\n * <ng-template euiTemplate=\"header\">\n *   <h2>Custom Header</h2>\n * </ng-template>\n *\n * <ng-template euiTemplate=\"footer\">\n *   <button>Custom Action</button>\n * </ng-template>\n * ```\n *\n * In component:\n * ```typescript\n * @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n *\n * getTemplate(name: string) {\n *   return this.templates.find(t => t.getType() === name)?.template;\n * }\n * ```\n *\n * ### Accessibility\n * - Template content should follow accessibility guidelines\n * - Ensure dynamic content maintains proper heading hierarchy\n * - Screen readers will announce template content when rendered\n *\n * ### Notes\n * - Use euiTemplate input to assign template name\n * - Templates retrieved via ContentChildren query in parent component\n * - getType() method returns template name for identification\n * - Supports generic typing for template context\n */\n@Directive({\n    selector: '[euiTemplate]',\n})\nexport class EuiTemplateDirective<T = never> {\n    template = inject<TemplateRef<T>>(TemplateRef);\n\n    @Input() type: string;\n    @Input('euiTemplate') name: string;\n\n    getType(): string {\n        return this.name;\n    }\n}\n\n","import { animate, state, style, transition, trigger, keyframes } from '@angular/animations';\n\n/**\n * Tooltip display animation.\n */\nexport const showHide = trigger('showHide', [\n    state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),\n    state('visible', style({ transform: 'scale(1)' })),\n    transition(\n        '* => visible',\n        animate(\n            '200ms cubic-bezier(0, 0, 0.2, 1)',\n            keyframes([\n                style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n                style({ opacity: 0.5, transform: 'scale(0.99)', offset: 0.5 }),\n                style({ opacity: 1, transform: 'scale(1)', offset: 1 }),\n            ]),\n        ),\n    ),\n    transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 }))),\n]);\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { showHide } from '../animations/show-hide';\nimport { EuiTooltipInterface } from '../models/eui-tooltip.config';\n\n@Component({\n    selector: 'eui-tooltip-container.component',\n    templateUrl: 'eui-tooltip-container.component.html',\n    // Styles are in globals: \\packages\\styles\\src\\styles\\07-elements\\directives\\_eui-tooltip.scss\n    animations: [showHide],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiTooltipContainerComponent {\n    /**\n     * Configuration provided by euiTooltip directive at instantiation.\n     *\n     * @type {EuiTooltipInterface} A config object containing e2eAttr, tooltipContent, position, contentAlign, colorClass.\n     */\n    @Input() config: EuiTooltipInterface;\n    /**\n     * Sets the `data-e2e` attribute for the host element.\n     *\n     * @default 'eui-tooltip'\n     */\n    @HostBinding('attr.data-e2e') e2e = 'eui-tooltip';\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return ['eui-tooltip', 'eui-tooltip--content-' + this.config.contentAlign, 'eui-tooltip--' + this.config.colorClass]\n            .join(' ')\n            .trim();\n    }\n    @HostBinding('@showHide') get showHide(): string {\n        return 'visible';\n    }\n}\n","<div [innerHTML]=\"config.tooltipContent\"></div>\n","import {\n    Directive,\n    Input,\n    OnInit,\n    OnDestroy,\n    ElementRef,\n    HostListener,\n    OnChanges,\n    numberAttribute,\n    booleanAttribute,\n    ComponentRef,\n    inject,\n} from '@angular/core';\nimport {\n    ConnectedOverlayPositionChange,\n    ConnectionPositionPair,\n    FlexibleConnectedPositionStrategyOrigin,\n    Overlay,\n    OverlayRef,\n} from '@angular/cdk/overlay';\nimport { BehaviorSubject, fromEvent, Subject, Subscription, take, timer } from 'rxjs';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport { EuiTooltipContainerComponent } from './container/eui-tooltip-container.component';\nimport { EuiTooltipInterface } from './models/eui-tooltip.config';\n\n/**\n * Directive for displaying contextual information in a tooltip overlay on hover or focus.\n * Provides semantic color variants and flexible positioning relative to the trigger element.\n * Automatically handles show/hide behavior with configurable delays and keyboard dismissal.\n * Built on Angular CDK Overlay for robust positioning and scroll handling.\n *\n * @usageNotes\n * Basic tooltip:\n * ```html\n * <button euiTooltip=\"Save your changes\">Save</button>\n * ```\n *\n * Tooltip with position and variant:\n * ```html\n * <span euiTooltip=\"Error occurred\" position=\"below\" euiTooltipDanger>!</span>\n * ```\n *\n * Tooltip with delays:\n * ```html\n * <a euiTooltip=\"Click for details\" [showDelay]=\"500\" [hideDelay]=\"200\">Info</a>\n * ```\n *\n * ### Accessibility\n * - Tooltip appears on both hover and keyboard focus for screen reader compatibility\n * - Press Escape key to dismiss tooltip\n * - Ensure tooltip content is non-essential as it may not be announced by all screen readers\n *\n * ### Notes\n * - Tooltip content should be brief and contextual\n * - Use semantic variants (euiTooltipDanger, euiTooltipWarning) to convey meaning\n * - Position automatically adjusts if space is insufficient (fallback positioning)\n * - Tooltip is disabled when isDisabled is true or tooltipContent is empty\n */\n@Directive({\n    selector: '[euiTooltip]',\n    exportAs: 'euiTooltip',\n})\nexport class EuiTooltipDirective implements OnChanges, OnInit, OnDestroy {\n    /**\n     * Sets the `data-e2e` attribute for the host element.\n     *\n     * @default 'eui-tooltip'\n     */\n    @Input() e2eAttr = 'eui-tooltip';\n    /**\n     * Sets the delay for the tooltip to be visible.\n     *\n     * @default 0\n     */\n    @Input({ transform: numberAttribute }) showDelay = 0;\n    /**\n     * Sets the delay for the tooltip to be hidden\n     *\n     * @default 0\n     */\n    @Input({ transform: numberAttribute }) hideDelay = 0;\n    /**\n     * Sets the alignment of the content in the tooltip.\n     *\n     * @default 'center''\n     */\n    @Input() contentAlignment: 'left' | 'right' | 'center' | 'justify' = 'center';\n    /**\n     * Sets the position of the tooltip relative to its trigger element.\n     *\n     * @default 'center''\n     */\n    @Input() position: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' | string = 'above';\n    /**\n     * Whether the tooltip is disabled.\n     *\n     * @default false (enable)\n     */\n    @Input({ transform: booleanAttribute }) isDisabled = false;\n    /**\n     * Tooltip content.\n     */\n    @Input('euiTooltip') tooltipContent: string;\n    /**\n     * Whether the tooltip has a Primary state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipPrimary = false;\n    /**\n     * Whether the tooltip has a Secondary state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipSecondary = false;\n    /**\n     * Whether the tooltip has Info state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipInfo = false;\n    /**\n     * Whether the tooltip has a Success state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipSuccess = false;\n    /**\n     * Whether the tooltip has a Warning state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipWarning = false;\n    /**\n     * Whether the tooltip has a Danger state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipDanger = false;\n    /**\n     * Whether the tooltip has Accent state.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiTooltipAccent = false;\n\n    private originX: 'start' | 'end' | 'center' = 'center';\n    private originY: 'top' | 'bottom' | 'center' = 'top';\n    private overlayX: 'start' | 'end' | 'center' = 'center';\n    private overlayY: 'top' | 'bottom' | 'center' = 'bottom';\n    private fallbackOriginX: 'start' | 'end' | 'center' = 'center';\n    private fallbackOriginY: 'top' | 'bottom' | 'center' = 'bottom';\n    private fallbackOverlayX: 'start' | 'end' | 'center' = 'center';\n    private fallbackOverlayY: 'top' | 'bottom' | 'center' = 'top';\n    private overlayRef: OverlayRef;\n    private destroy$ = new Subject<boolean>();\n    private isOpen$ = new BehaviorSubject<boolean>(false);\n    private mouseleaveSubscription = new Subscription();\n    private blurSubscription = new Subscription();\n    private showDelaySubscription = new Subscription();\n    private positionStrategySubscription = new Subscription();\n    private tooltipInstance: ComponentRef<EuiTooltipContainerComponent>;\n    private overlay = inject(Overlay);\n    private host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    ngOnChanges(): void {\n        if (this.tooltipInstance) {\n            this.tooltipInstance.setInput('config', this.getTooltipConfig());\n        }\n\n        this.setPosition();\n    }\n\n    ngOnInit(): void {\n        this.setPosition();\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n        this.mouseleaveSubscription.unsubscribe();\n        this.blurSubscription.unsubscribe();\n        this.showDelaySubscription.unsubscribe();\n        this.positionStrategySubscription.unsubscribe();\n        this.overlayRef?.dispose();\n        this.overlayRef = null;\n    }\n\n    @HostListener('mouseenter', ['$event'])\n    mouseEntering(event: MouseEvent): void {\n        this.show(event.target);\n    }\n\n    @HostListener('focus', ['$event'])\n    focused(event: FocusEvent): void {\n        this.show(event.target);\n    }\n\n    /**\n     * Returns the current open state.\n     *\n     * @returns {boolean} `true` if the element is open, otherwise `false`.\n     */\n    get isOpen(): boolean {\n        return this.isOpen$.value;\n    }\n\n    /**\n     * Method that shows a tooltip.\n     *\n     * @param origin Origin of the tooltip. Where it will be displayed.\n     */\n    public show(origin: EventTarget = this.host.nativeElement): void {\n        this.mouseleaveSubscription.unsubscribe();\n        this.blurSubscription.unsubscribe();\n        this.showDelaySubscription.unsubscribe();\n        \n        this.showDelaySubscription = timer(this.showDelay).subscribe(() => {\n            if (!this.isOpen && !this.isDisabled && this.tooltipContent) {\n                const positionStrategy = this.overlay\n                    .position()\n                    .flexibleConnectedTo(origin as FlexibleConnectedPositionStrategyOrigin)\n                    .withPositions([\n                        new ConnectionPositionPair(\n                            { originX: this.originX, originY: this.originY },\n                            { overlayX: this.overlayX, overlayY: this.overlayY },\n                        ),\n                        new ConnectionPositionPair(\n                            { originX: this.fallbackOriginX, originY: this.fallbackOriginY },\n                            { overlayX: this.fallbackOverlayX, overlayY: this.fallbackOverlayY },\n                        ),\n                    ])\n                    .withFlexibleDimensions(false)\n                    .withLockedPosition(true);\n                const scrollStrategy = this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n\n                this.overlayRef = this.overlay.create({\n                    hasBackdrop: false,\n                    panelClass: ['eui-tooltip__container', 'eui-21'],\n                    positionStrategy,\n                    scrollStrategy,\n                });\n\n                this.positionStrategySubscription = positionStrategy.positionChanges.subscribe((overlayPosition) => {\n                    this.position = this.getPosition(overlayPosition);\n                    const positionClasses = [\n                        'eui-tooltip--left',\n                        'eui-tooltip--right',\n                        'eui-tooltip--above',\n                        'eui-tooltip--below',\n                        'eui-tooltip--before',\n                        'eui-tooltip--after',\n                    ];\n                    this.overlayRef.removePanelClass(positionClasses);\n                    this.overlayRef.addPanelClass(['eui-tooltip--' + this.position]);\n                });\n\n                const componentPortal = new ComponentPortal<EuiTooltipContainerComponent>(\n                    EuiTooltipContainerComponent,\n                    null,\n                );\n\n                this.tooltipInstance = this.overlayRef.attach(componentPortal);\n                this.tooltipInstance.setInput('config', this.getTooltipConfig());\n\n                this.isOpen$.next(true);\n            }\n        });\n\n        this.mouseleaveSubscription = fromEvent(origin, 'mouseleave').subscribe(() => {\n            this.hide();\n        });\n\n        this.blurSubscription = fromEvent(origin, 'blur').subscribe(() => {\n            this.hide();\n        });\n    }\n\n    /**\n     * Method that closes a tooltip.\n     */\n    public hide(): void {\n        timer(this.hideDelay)\n            .pipe(take(1))\n            .subscribe(() => {\n                this.isOpen$.next(false);\n                this.mouseleaveSubscription.unsubscribe();\n                this.blurSubscription.unsubscribe();\n                this.showDelaySubscription.unsubscribe();\n                this.positionStrategySubscription.unsubscribe();\n                this.overlayRef?.dispose();\n                this.overlayRef = null;\n            });\n    }\n\n    @HostListener('keydown.esc', ['$any($event)'])\n    protected onEscapePressed(event: KeyboardEvent): void {\n        if (this.isOpen) {\n            event.stopPropagation();\n            this.hide();\n        }\n    }\n\n    /**\n     * Generates and returns the tooltip configuration based on the defined tooltip properties.\n     *\n     * @returns {EuiTooltipInterface} The tooltip configuration object, including attributes used in container component.\n     */\n    private getTooltipConfig(): EuiTooltipInterface {\n        let colorClass = 'secondary';\n        if (this.euiTooltipPrimary) {\n            colorClass = 'primary';\n        }\n        if (this.euiTooltipSecondary) {\n            colorClass = 'secondary';\n        }\n        if (this.euiTooltipInfo) {\n            colorClass = 'info';\n        }\n        if (this.euiTooltipSuccess) {\n            colorClass = 'success';\n        }\n        if (this.euiTooltipWarning) {\n            colorClass = 'warning';\n        }\n        if (this.euiTooltipDanger) {\n            colorClass = 'danger';\n        }\n        if (this.euiTooltipAccent) {\n            colorClass = 'accent';\n        }\n\n        return {\n            e2eAttr: this.e2eAttr,\n            tooltipContent: this.tooltipContent,\n            position: this.position,\n            contentAlign: this.contentAlignment,\n            colorClass,\n        };\n    }\n\n    /**\n     * Determines and returns the tooltip's position based on the overlay's connection pair.\n     *\n     * @param {ConnectedOverlayPositionChange} overlayPosition - The overlay position change event.\n     * @returns {string} The calculated position (`'above'`, `'below'`, `'left'`, or `'right'`).\n     */\n    private getPosition(overlayPosition: ConnectedOverlayPositionChange): string {\n        if (overlayPosition.connectionPair.originY === 'top' && overlayPosition.connectionPair.overlayY === 'bottom') {\n            return 'above';\n        }\n        if (overlayPosition.connectionPair.originY === 'bottom' && overlayPosition.connectionPair.overlayY === 'top') {\n            return 'below';\n        }\n        if (overlayPosition.connectionPair.originX === 'start' && overlayPosition.connectionPair.overlayX === 'end') {\n            return 'left';\n        }\n        if (overlayPosition.connectionPair.originX === 'end' && overlayPosition.connectionPair.overlayX === 'start') {\n            return 'right';\n        }\n    }\n\n    /**\n     * Sets the position-related properties based on the current `position` value.\n     */\n    private setPosition(): void {\n        if (this.position === 'above') {\n            this.originY = 'top';\n            this.overlayY = 'bottom';\n            this.fallbackOriginY = 'bottom';\n            this.fallbackOverlayY = 'top';\n        }\n        if (this.position === 'right' || this.position === 'after') {\n            this.originX = 'end';\n            this.originY = 'center';\n            this.overlayX = 'start';\n            this.overlayY = 'center';\n            this.fallbackOriginX = 'start';\n            this.fallbackOriginY = 'center';\n            this.fallbackOverlayX = 'end';\n            this.fallbackOverlayY = 'center';\n        }\n        if (this.position === 'below') {\n            this.originY = 'bottom';\n            this.overlayY = 'top';\n            this.fallbackOriginY = 'top';\n            this.fallbackOverlayY = 'bottom';\n        }\n        if (this.position === 'left' || this.position === 'before') {\n            this.originX = 'start';\n            this.originY = 'center';\n            this.overlayX = 'end';\n            this.overlayY = 'center';\n            this.fallbackOriginX = 'end';\n            this.fallbackOriginY = 'center';\n            this.fallbackOverlayX = 'start';\n            this.fallbackOverlayY = 'center';\n        }\n    }\n}\n","import {\n    Directive,\n    ElementRef,\n    Input,\n    Output,\n    AfterContentInit,\n    EventEmitter,\n    OnDestroy,\n    HostListener,\n    OnChanges,\n    SimpleChanges,\n    Renderer2,\n    numberAttribute,\n    booleanAttribute,\n    inject,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n/**\n * @description\n * A directive that adds maxLength functionality to input and textarea elements with visual feedback.\n * It shows the remaining characters count and provides visual indication when the limit is reached.\n *\n * @selector input[euiMaxlength], textarea[euiMaxlength], [ngModel][euiMaxlength], [formControlName][euiMaxlength]\n *\n * @example\n * ### Basic usage\n * ```html\n * <input [euiMaxlength]=\"50\">\n * ```\n *\n * ### With form control\n * ```html\n * <input [formControlName]=\"'name'\" [euiMaxlength]=\"100\">\n * ```\n *\n * ### Hide maxlength indicator\n * ```html\n * <textarea [euiMaxlength]=\"200\" [isShowMaxlength]=\"false\"></textarea>\n * ```\n *\n * @publicApi\n */\n@Directive({\n    selector: `\n    input[euiMaxlength],\n    textarea[euiMaxlength],\n    [ngModel][euiMaxlength],\n    [formControlName][euiMaxlength]`,\n})\nexport class EuiMaxLengthDirective implements AfterContentInit, OnDestroy, OnChanges {\n    /**\n     * @description\n     * It accepts number values to indicate the maxLength of an input. To reset or disable it set the value to null.\n     * NULL value will remove any MaxLength indicator even if another input like isShowMaxlength equals true.\n     */\n    @Input({ alias:'euiMaxlength', transform: numberAttribute }) maxLength: number;\n    /**\n     * @description\n     * Controls the visibility of the maxLength indicator.\n     * When true, shows a counter with remaining characters.\n     * When false, hides the counter but maintains the maxLength restriction.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isShowMaxlength = true;\n    /**\n     * @description\n     * Emits when the input value length reaches or exceeds the maxLength limit.\n     * Emits true when a limit is reached, false when below limit.\n     *\n     * @emits {boolean} True when max length is reached, false otherwise\n     */\n    @Output() maxLengthReached: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    valueChangesSubscription: Subscription;\n\n    private maxLengthSpan: HTMLSpanElement;\n    private wrapper: HTMLDivElement;\n    private lengthCalcFn: () => number;\n    private el = inject(ElementRef);\n    private renderer = inject(Renderer2);\n    private control = inject(NgControl, { self: true, optional: true })!;\n\n    constructor() {\n        // set the default length calculation behavior\n        this.setLengthCalcFactory((value) => value?.length || 0);\n    }\n\n    ngOnDestroy(): void {\n        // remove all DOM added elements\n        this.destroyMaxLengthBox();\n\n        // unsubscribe from valueChanges\n        if(this.valueChangesSubscription) {\n            this.valueChangesSubscription.unsubscribe();\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if(changes['isShowMaxlength']) {\n            if(this.isShowMaxlength) {\n                this.createMaxLengthBox();\n                this._refreshValue();\n            } else {\n                this.destroyMaxLengthBox();\n            }\n        }\n        if(changes['maxLength']) {\n            if(this.maxLength < 0) {\n                throw new Error('euiMaxlength of an input or a textarea cannot be negative.')\n            }\n            if(this.maxLength) {\n                // re-create in case you previously destroyed it\n                if(this.isShowMaxlength && !this.maxLengthSpan) {\n                    this.createMaxLengthBox();\n                }\n                this._refreshValue();\n            } else {\n                this.renderer.removeAttribute(this.el.nativeElement, 'maxLength');\n                this.destroyMaxLengthBox();\n            }\n        }\n    }\n\n    ngAfterContentInit(): void {\n        if (this.maxLength) {\n            this.createMaxLengthBox();\n            this._refreshValue();\n        }\n\n        // this subscription is needed apart from HostListener to Changes in case usage of this directive\n        // in custom component that implements ngDefaultControl\n        if (this.control?.valueChanges) {\n            this.valueChangesSubscription = this.control.valueChanges.subscribe(() => {\n                this._refreshValue();\n            });\n        }\n    }\n\n    @HostListener('change')\n    onChange(): void {\n        if(!this.control || this.control?.control.updateOn !== 'change') {\n            this._refreshValue();\n        }\n    }\n\n    @HostListener('input')\n    onInput(): void {\n        if(!this.control || this.control?.control.updateOn !== 'change') {\n            this._refreshValue();\n        }\n    }\n\n    @HostListener('paste', ['$any($event)'])\n    onPaste(event: ClipboardEvent): void {\n        // get the value from clipboard\n        const value = (event.clipboardData || window['clipboardData']).getData('text');\n        // calculate and set the maxLength based on the clipboard value\n        const input = <HTMLInputElement>this.el.nativeElement;\n        if(this.maxLength) {\n            this.renderer.setProperty(input, 'maxLength', this.calculateMaxLength(value));\n        }\n    }\n\n    /**\n     * Sets a custom function to calculate the length of the input value.\n     * Useful for implementing custom length calculation logic (e.g., counting characters differently).\n     *\n     * @param fn Function that takes a string input and returns its calculated length\n     *\n     * @example\n     * ```typescript\n     * // Custom length calculation excluding spaces\n     * directive.setLengthCalcFactory((value: string) => value.replace(/\\s/g, '').length);\n     * ```\n     */\n    public setLengthCalcFactory(fn: (input: string) => number): void {\n        this.lengthCalcFn = (): number => {\n            const value = this.getValue();\n            return fn(value);\n        }\n    }\n\n    /**\n     * Calculates the maximum length for the input element based on current value or provided value.\n     *\n     * @param value Optional value to calculate max length against (overrides the current input value)\n     * @returns {number} Calculated maximum length\n     * @private\n     */\n    private calculateMaxLength(value?: string): number {\n        const inputValue = this.getValue();\n        return (value?.length || (inputValue?.length || 0) - this.lengthCalcFn()) + this.maxLength;\n    }\n\n    /**\n     * @description\n     * Refreshes the visual state of the maxLength indicator and updates input restrictions.\n     * - Updates the remaining characters count\n     * - Applies/removes error styling\n     * - Emits maxLengthReached event\n     * - Truncates value if it exceeds maxLength\n     *\n     * @private\n     */\n    private _refreshValue(): void {\n        if(isNaN(this.maxLength)) {\n            return;\n        }\n        const input = <HTMLInputElement>this.el.nativeElement;\n        const valueLength = this.lengthCalcFn();\n        const remainingLength = this.maxLength - valueLength;\n\n        this.renderer.setProperty(input, 'maxLength', this.calculateMaxLength());\n        if(this.maxLengthSpan) {\n            // based on the remaining length add/remove the error class\n            if (remainingLength <= 0) {\n                this.renderer.addClass(this.maxLengthSpan, 'eui-input-maxlength--invalid')\n                this.maxLengthReached.emit(true);\n            } else {\n                this.renderer.removeClass(this.maxLengthSpan, 'eui-input-maxlength--invalid')\n                this.maxLengthReached.emit(false);\n            }\n            // set the value of remaining characters\n            if (remainingLength < 0) {\n                // this feature is only available when the calculation of length is not custom\n                // to support this feature you need to calculate this.maxLength also\n                if (this.control) {\n                    this.control.control.setValue(input.value.substring(0, this.calculateMaxLength()))\n                } else {\n                    input.value = input.value.substring(0, this.calculateMaxLength());\n                }\n                this.renderer.setProperty(this.maxLengthSpan, 'textContent', '0')\n            } else if (remainingLength >= 0) {\n                this.renderer.setProperty(this.maxLengthSpan, 'textContent', (this.maxLength - valueLength).toString())\n            }\n        }\n    }\n\n    /**\n     * @description\n     * Creates the maxLength indicator box in the DOM.\n     * Wraps the input element and adds the counter span with appropriate styling.\n     *\n     * @private\n     */\n    private createMaxLengthBox(): void {\n        if(this.maxLengthSpan) {\n            this.destroyMaxLengthBox();\n        }\n        // creates the span that holds the max length value which changes according to input\n        this.maxLengthSpan = this.renderer.createElement('span');\n        this.renderer.addClass(this.maxLengthSpan, 'eui-input-maxlength')\n        this.renderer.setAttribute(this.maxLengthSpan, 'textContent', this.maxLength.toString());\n\n        // create wrapper element\n        const nativeElement: HTMLElement = this.el.nativeElement;\n        if (nativeElement != null) {\n            // set width to 100%\n            this.renderer.setStyle(nativeElement, 'width', '100%');\n            const parent: Node = nativeElement.parentNode;\n            if (parent != null && this.isShowMaxlength) {\n                // creates wrapper div of input and maxLength span\n                this.wrapper = this.renderer.createElement('div');\n                this.renderer.addClass(this.wrapper, 'eui-input-maxlength-wrapper');\n                // swap, wrapper should wrap the nativeElement and maxLength span\n                parent.replaceChild(this.wrapper, nativeElement);\n                this.renderer.appendChild(this.wrapper, nativeElement);\n                this.renderer.appendChild(this.wrapper, this.maxLengthSpan);\n            }\n        }\n    }\n\n    /**\n     * @description\n     * Removes the maxLength indicator box from the DOM.\n     * Restores the original DOM structure by unwrapping the input element.\n     *\n     * @private\n     */\n    private destroyMaxLengthBox(): void {\n        // removes maxlength element from DOM\n        if(this.maxLengthSpan) {\n            this.renderer.removeChild(this.maxLengthSpan.parentElement, this.maxLengthSpan);\n            this.maxLengthSpan = undefined;\n        }\n\n        // remove wrapper from DOM\n        if(this.wrapper) {\n            // get parent node of wrapper\n            const parent: Node = this.wrapper.parentNode;\n            const nativeElement: HTMLElement = this.el.nativeElement;\n            // swap wrapper and nativeElement\n            parent?.replaceChild(nativeElement, this.wrapper);\n            // removes wrapper element from DOM\n            this.renderer.removeChild(this.wrapper.parentElement, this.wrapper);\n            this.wrapper = undefined;\n        }\n    }\n\n    /**\n     * @description\n     * Returns the current value of the input element.\n     * Handles different update strategies when used with forms.\n     *\n     * @returns {string} Current input value\n     * @private\n     */\n    private getValue(): string {\n        const input = <HTMLInputElement>this.el.nativeElement;\n        return this.control && this.control.control.updateOn === 'change' ? this.control.value : input.value;\n    }\n}\n\n","import {\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tViewContainerRef,\n\tinject,\n\tsignal,\n\tWritableSignal,\n} from '@angular/core';\nimport { EuiPermissionService } from '@eui/core';\n\nexport enum ConditionOperator {\n\tAND = 'AND',\n\tOR = 'OR',\n}\n\n/**\n * Structural directive conditionally rendering content based on user permissions.\n * Checks permissions via EuiPermissionService and shows/hides content accordingly.\n * Supports single or multiple permission checks with AND/OR logical operators.\n * Similar to *ngIf but permission-based instead of boolean-based.\n *\n * @usageNotes\n * Single permission:\n * ```html\n * <button *euiHasPermission=\"['EDIT_USER']\">Edit</button>\n * ```\n *\n * Multiple permissions (AND - all required):\n * ```html\n * <div *euiHasPermission=\"['READ_DATA', 'WRITE_DATA']\">\n *   Admin content\n * </div>\n * ```\n *\n * Multiple permissions (OR - any required):\n * ```html\n * <div *euiHasPermission=\"['MANAGER', 'ADMIN']\" euiHasPermissionOperator=\"OR\">\n *   Manager or Admin content\n * </div>\n * ```\n *\n * ### Accessibility\n * - Content completely removed from DOM when permissions not granted\n * - No visual indication of hidden content to unauthorized users\n * - Screen readers will not encounter permission-restricted content\n *\n * ### Notes\n * - Default operator is AND (all permissions required)\n * - Use OR operator when any single permission should grant access\n * - Requires EuiPermissionService to be configured in application\n * - Permission checks happen synchronously on directive initialization and input changes\n */\n@Directive({\n    selector: '[euiHasPermission]',\n})\nexport class EuiHasPermissionDirective {\n    /**\n     * @internal\n     * Array storing the current permission requirements\n     */\n    private permissions = signal<string[]>([]);\n\t/**\n\t * @internal\n\t * Logical operator for permission checks (AND/OR). Defaults to AND.\n\t */\n\tprivate operator: WritableSignal<ConditionOperator> = signal(ConditionOperator.AND);\n    /**\n     * @internal\n     * Flag tracking whether the content is currently hidden\n     */\n    private isHidden = true;\n\n\t/**\n\t * Sets the logical operator for permission checks.\n\t * 'AND' requires all permissions, 'OR' requires at least one permission.\n\t * Default: 'AND'\n\t */\n\t@Input() set euiHasPermissionOperator(operator: ConditionOperator) {\n\t\tthis.operator.set(operator || ConditionOperator.AND);\n\t\tthis.updateView();\n\t}\n\n\t/**\n\t * Array of permission strings required to display the content.\n\t * Can be single permission or multiple permissions.\n\t */\n    @Input()\n    set euiHasPermission(val) {\n        this.permissions.set(val);\n        this.updateView();\n    }\n    private templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n    private viewContainer = inject(ViewContainerRef);\n    private permissionService = inject(EuiPermissionService);\n\n    /**\n     * @internal\n     * @description\n     * Updates the view based on the current permission check results.\n     * If permissions are granted, displays the content.\n     * If permissions are not granted, hides the content.\n     */\n    private updateView(): void {\n        if (this.checkPermission()) {\n            if (this.isHidden) {\n                this.viewContainer.createEmbeddedView(this.templateRef);\n                this.isHidden = false;\n            }\n        } else {\n            this.isHidden = true;\n            this.viewContainer.clear();\n        }\n    }\n\n    /**\n     * @internal\n     * @description\n     * Checks if all required permissions are granted.\n     * Uses AND logic - all permissions must be granted for the method to return true.\n     *\n     * @returns {boolean} True if all permissions are granted, false otherwise\n     */\n    private checkPermission(): boolean {\n\t\tif (this.operator() === ConditionOperator.OR) {\n\t\t\treturn this.permissions().some((permission) =>\n\t\t\t\tthis.permissionService.checkAttributePermission(permission),\n\t\t\t);\n\t\t}\n\n\t\treturn this.permissions().every((permission) =>\n\t\t\tthis.permissionService.checkAttributePermission(permission),\n\t\t);\n\t}\n}\n","import { Directive, HostListener, OnInit, Input, booleanAttribute, numberAttribute, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Directive toggling CSS class on app header when scrolling past a threshold.\n * Monitors window scroll position and adds 'shrink-header-active' class to app wrapper.\n * Requires specific DOM structure with 'app-wrapper' and 'app-header' element IDs.\n * Typically used for sticky headers that shrink or change appearance on scroll.\n *\n * @usageNotes\n * ```html\n * <div id=\"app-wrapper\">\n *   <header id=\"app-header\">Header content</header>\n *   <main [euiScrollHandler]=\"true\">Main content</main>\n * </div>\n * ```\n *\n * ### Accessibility\n * - Visual feedback for scroll position\n * - Does not affect keyboard navigation or screen readers\n * - Ensure header remains accessible in both states\n *\n * ### Notes\n * - Requires elements with IDs 'app-wrapper' and 'app-header'\n * - Class 'shrink-header-active' added when scrolled past header height\n * - Scroll threshold automatically calculated from header height\n * - Set euiScrollHandler to false to disable\n */\n@Directive({\n    selector: '[euiScrollHandler]',\n})\nexport class EuiScrollHandlerDirective implements OnInit {\n    navIsFixed = false;\n    appHeaderHeight = 0;\n\n    @Input({ transform: booleanAttribute }) euiScrollHandler = false;\n\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private appWrapper: any;\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private appHeader: any;\n    private document = inject<Document>(DOCUMENT);\n\n    ngOnInit(): void {\n        this.appWrapper = this.document.getElementById('app-wrapper');\n        this.appHeader = this.document.getElementById('app-header');\n        if (this.appHeader) {\n            this.appHeaderHeight = this.appHeader.scrollHeight;\n        }\n    }\n\n    @HostListener('window:scroll', [])\n    onWindowScroll(): void {\n        if (this.euiScrollHandler && this.appHeaderHeight !== 0) {\n            const number = this.document.body.scrollTop || this.document.documentElement.scrollTop; // Chrome || IE/FF\n\n            if (number > this.appHeaderHeight) {\n                this.navIsFixed = true;\n                this.appWrapper.classList.add('shrink-header-active');\n            } else if (this.navIsFixed && number < this.appHeaderHeight) {\n                this.navIsFixed = false;\n                this.appWrapper.classList.remove('shrink-header-active');\n            }\n        }\n    }\n}\n\n/**\n * Directive toggling CSS class on any element when scrolling past a custom threshold.\n * More flexible alternative to euiScrollHandler with configurable element ID, class, and height.\n * Monitors window scroll and applies specified class when threshold exceeded.\n *\n * @usageNotes\n * ```html\n * <div euiScrollHandlerElement=\"myNav\"\n *      toggleClass=\"nav-fixed\"\n *      [toggleActiveHeight]=\"100\">\n *   Navigation content\n * </div>\n * ```\n *\n * ### Accessibility\n * - Visual feedback for scroll position\n * - Does not affect keyboard navigation or screen readers\n * - Ensure element remains accessible in both states\n *\n * ### Notes\n * - Element ID specified via euiScrollHandlerElement input\n * - CSS class specified via toggleClass input\n * - Scroll threshold specified via toggleActiveHeight input (in pixels)\n * - Class added when scroll position exceeds toggleActiveHeight\n */\n@Directive({\n    selector: '[euiScrollHandlerElement]',\n})\nexport class EuiScrollHandlerElementDirective {\n    @Input() euiScrollHandlerElement: string;\n    @Input() toggleClass: string;\n    @Input({ transform: numberAttribute }) toggleActiveHeight: number;\n\n    public navIsFixed = false;\n    private document = inject<Document>(DOCUMENT);\n\n    @HostListener('window:scroll', [])\n    onWindowScroll(): void {\n        const element = this.document.getElementById(this.euiScrollHandlerElement);\n        const number = this.document.body.scrollTop || this.document.documentElement.scrollTop; // Chrome || IE/FF\n\n        if (number > this.toggleActiveHeight) {\n            this.navIsFixed = true;\n            element.classList.add(this.toggleClass);\n        } else if (this.navIsFixed && number < this.toggleActiveHeight) {\n            this.navIsFixed = false;\n            element.classList.remove(this.toggleClass);\n        }\n    }\n}\n\n","/* https://www.npmjs.com/package/ng2-smooth-scroll\n   https://github.com/kavil/ng2SmoothScroll/blob/master/lib/ng2-SmoothScroll.directive.ts\n*/\n/* eslint-disable */\nimport {\n    Directive,\n    Input,\n    HostListener,\n    OnInit,\n    ElementRef,\n    numberAttribute,\n    booleanAttribute,\n    inject,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Directive scrolling smoothly to a target element when clicked.\n * Provides animated scroll with configurable duration, offset, and easing.\n * Supports scrolling within containers and callbacks before/after scroll.\n *\n * @usageNotes\n * ```html\n * <button euiScrollTo=\"targetSection\">Scroll to section</button>\n * <div id=\"targetSection\">Target content</div>\n * ```\n *\n * With options:\n * ```html\n * <a euiScrollTo=\"footer\" [duration]=\"1000\" [offset]=\"-50\">Go to footer</a>\n * ```\n *\n * ### Accessibility\n * - Smooth scroll provides better UX than instant jump\n * - Ensure target element has proper focus management\n * - Consider reduced motion preferences for accessibility\n *\n * ### Notes\n * - Target element identified by ID via euiScrollTo input\n * - Default duration is 800ms\n * - Offset adjusts final scroll position (negative scrolls higher)\n * - Supports multiple easing functions (easeInOutQuart default)\n * - Can scroll within specific container via containerId\n */\n@Directive({\n    selector: '[euiScrollTo]',\n})\nexport class EuiSmoothScrollToDirective {\n    targetElement: any;\n\n    @Input('euiScrollTo') public scrollTo: string;\n    @Input({alias: 'duration', transform: numberAttribute }) public duration: number;\n    @Input({ transform: numberAttribute }) public offset: number;\n    @Input('easing') public easing: string;\n    @Input('callbackBefore') public callbackBefore: any;\n    @Input('callbackAfter') public callbackAfter: any;\n    @Input('containerId') public containerId: string;\n    @Input('middleAlign') public middleAlign: any;\n\n    @HostListener('click') onClick() {\n        this.targetElement = document.getElementById(this.scrollTo);\n        if (!this.targetElement) {\n            return;\n        }\n\n        new SmoothScroll(this.targetElement, {\n            duration: this.duration,\n            offset: this.offset,\n            easing: this.easing,\n            callbackBefore: this.callbackBefore,\n            callbackAfter: this.callbackAfter,\n            containerId: this.containerId,\n            middleAlign: this.middleAlign\n        });\n    };\n\n}\n\n/**\n * Directive automatically scrolling to host element on initialization or click.\n * Provides animated scroll with configurable duration, offset, and easing.\n * Supports conditional scrolling and callbacks before/after scroll.\n *\n * @usageNotes\n * Scroll on init:\n * ```html\n * <div euiSmoothScroll [scrollIf]=\"shouldScroll\">Content</div>\n * ```\n *\n * Scroll on click:\n * ```html\n * <div euiSmoothScroll [scrollOnClick]=\"true\" [duration]=\"500\">Click to scroll here</div>\n * ```\n *\n * ### Accessibility\n * - Smooth scroll provides better UX than instant jump\n * - Use scrollIf to conditionally enable scrolling\n * - Consider reduced motion preferences for accessibility\n *\n * ### Notes\n * - Scrolls to host element automatically on init (unless scrollIf is false)\n * - Set scrollOnClick to true for click-triggered scrolling\n * - Default duration is 800ms\n * - Offset adjusts final scroll position\n * - Supports scrolling within specific container via containerId\n * - middleAlign centers element in viewport\n */\n@Directive({\n    selector: '[euiSmoothScroll]',\n})\nexport class EuiSmoothScrollDirective implements OnInit {\n    private platformId = inject(PLATFORM_ID);\n    private el = inject(ElementRef)\n\n    @Input('scrollIf') public scrollIf: boolean;\n    @Input({ transform: numberAttribute}) public duration: number;\n    @Input({ transform: numberAttribute}) public offset: number;\n    @Input('easing') public easing: string;\n    @Input('callbackBefore') public callbackBefore: any;\n    @Input('callbackAfter') public callbackAfter: any;\n    @Input('containerId') public containerId: string;\n    @Input({ transform: booleanAttribute }) public scrollOnClick: boolean;\n    @Input('middleAlign') public middleAlign: any;\n\n    @HostListener('click', ['$event.target']) onClick(target) {\n        if (this.scrollOnClick) {\n            this.scroll();\n        }\n    };\n\n    public ngOnInit() {\n        this.scroll();\n    }\n\n    private scroll() {\n        if (typeof this.scrollIf === 'undefined' || this.scrollIf === true) {\n            if(isPlatformBrowser(this.platformId)) {\n                setTimeout(() => {\n                    new SmoothScroll(this.el.nativeElement, {\n                        duration: this.duration,\n                        offset: this.offset,\n                        easing: this.easing,\n                        callbackBefore: this.callbackBefore,\n                        callbackAfter: this.callbackAfter,\n                        containerId: this.containerId,\n                        middleAlign: this.middleAlign\n                    });\n                }, 0);\n            }\n        }\n    }\n\n}\n\nclass SmoothScroll {\n    constructor(element: any, options: any) {\n        this.smoothScroll(element, options);\n    }\n    private smoothScroll(element, options) {\n        options = options || {};\n\n        // Options\n        let duration = options.duration || 800,\n            offset = options.offset || 0,\n            easing = options.easing || 'easeInOutQuart',\n            callbackBefore = options.callbackBefore || function () { },\n            callbackAfter = options.callbackAfter || function () { },\n            container = document.getElementById(options.containerId) || null,\n            containerPresent = (container != undefined && container != null),\n            middleAlign = options.middleAlign || false;\n\n\t\t/**\n\t\t * Retrieve current location\n\t\t */\n        let getScrollLocation = function () {\n            if (containerPresent) {\n                return container.scrollTop;\n            } else {\n                if (window.pageYOffset) {\n                    return window.pageYOffset;\n                } else {\n                    return document.documentElement.scrollTop;\n                }\n            }\n        };\n\n\t\t/**\n\t\t * Calculate easing pattern.\n\t\t *\n\t\t * 20150713 edit - zephinzer\n\t\t * - changed if-else to switch\n\t\t * @see http://archive.oreilly.com/pub/a/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html\n\t\t */\n        let getEasingPattern = function (type, time) {\n            switch (type) {\n            case 'easeInQuad': return time * time; // accelerating from zero velocity\n            case 'easeOutQuad': return time * (2 - time); // decelerating to zero velocity\n            case 'easeInOutQuad': return time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration\n            case 'easeInCubic': return time * time * time; // accelerating from zero velocity\n            case 'easeOutCubic': return (--time) * time * time + 1; // decelerating to zero velocity\n            case 'easeInOutCubic': return time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration\n            case 'easeInQuart': return time * time * time * time; // accelerating from zero velocity\n            case 'easeOutQuart': return 1 - (--time) * time * time * time; // decelerating to zero velocity\n            case 'easeInOutQuart': return time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration\n            case 'easeInQuint': return time * time * time * time * time; // accelerating from zero velocity\n            case 'easeOutQuint': return 1 + (--time) * time * time * time * time; // decelerating to zero velocity\n            case 'easeInOutQuint': return time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration\n            default: return time;\n            }\n        };\n\n\t\t/**\n\t\t * Calculate how far to scroll\n\t\t */\n        let getEndLocation = function (element) {\n            let location = 0,\n                elementRect = element.getBoundingClientRect(),\n                absoluteElementTop = elementRect.top + window.pageYOffset;\n\n            if (middleAlign) {\n                location = (absoluteElementTop + (element.offsetHeight / 2)) - (window.innerHeight / 2);\n            } else {\n                location = absoluteElementTop;\n            }\n\n            if (offset) {\n                location = location - offset;\n            }\n\n            return Math.max(location, 0);\n        };\n\n        // Initialize the whole thing\n        setTimeout(function () {\n            let currentLocation = null,\n                startLocation = getScrollLocation(),\n                endLocation = getEndLocation(element),\n                timeLapsed = 0,\n                distance = endLocation - startLocation,\n                percentage,\n                position,\n                scrollHeight,\n                internalHeight;\n\n\t\t\t/**\n\t\t\t * Stop the scrolling animation when the anchor is reached (or at the top/bottom of the page)\n\t\t\t */\n            let stopAnimation = function () {\n                currentLocation = getScrollLocation();\n                if (containerPresent) {\n                    scrollHeight = container.scrollHeight;\n                    internalHeight = container.clientHeight + currentLocation;\n                } else {\n                    scrollHeight = document.body.scrollHeight;\n                    internalHeight = window.innerHeight + currentLocation;\n                }\n\n                if (\n                    ( // condition 1\n                        position == endLocation\n                    ) ||\n                    ( // condition 2\n                        currentLocation == endLocation\n                    ) ||\n                    ( // condition 3\n                        internalHeight > scrollHeight\n                    )\n                ) { // stop\n                    clearInterval(runAnimation);\n\n                    callbackAfter(element);\n                }\n            };\n\n\t\t\t/**\n\t\t\t * Scroll the page by an increment, and check if it's time to stop\n\t\t\t */\n            let animateScroll = function () {\n                timeLapsed += 16;\n                percentage = (timeLapsed / duration);\n                percentage = (percentage > 1) ? 1 : percentage;\n                position = startLocation + (distance * getEasingPattern(easing, percentage));\n                if (containerPresent) {\n                    container.scrollTop = position;\n                } else {\n                    window.scrollTo(0, position);\n                }\n                stopAnimation();\n            };\n\n            callbackBefore(element);\n\n            let runAnimation = setInterval(animateScroll, 16);\n        }, 0);\n\n    }\n}\n/* eslint-enable */\n","import {\n    AfterViewInit,\n    booleanAttribute,\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Injector,\n    Input,\n    OnChanges,\n    Renderer2,\n    SimpleChanges,\n    ViewContainerRef,\n    inject,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgControl, NgModel } from '@angular/forms';\nimport { EuiIconSvgComponent } from '@eui/components/eui-icon';\nimport { EuiLoadingDirective } from './eui-loading.directive';\n\n/**\n * Directive adding a clear button to text and number input fields for quick value reset.\n * Dynamically creates a close icon that appears when input has content and clears value on click.\n * Automatically handles form control integration and disabled/readonly states.\n * Only works with euiInputText and euiInputNumber input types.\n *\n * @usageNotes\n * ```html\n * <input euiInputText euiClearable [(ngModel)]=\"searchTerm\" />\n * ```\n *\n * ```html\n * <input euiInputNumber euiClearable formControlName=\"amount\" />\n * ```\n *\n * ### Accessibility\n * - Clear icon has aria-label=\"Clear input field\" for screen readers\n * - Icon is keyboard accessible with Enter key support\n * - Icon hidden when input is empty to avoid confusion\n * - Disabled state removes keyboard access and pointer events\n *\n * ### Notes\n * - Only compatible with text, search, and eui-number input types\n * - Clear icon visibility toggles based on input value presence\n * - Works with both ngModel and reactive forms\n * - Dispatches 'clear' event when value is cleared\n * - Automatically manages wrapper div for icon positioning\n */\n@Directive({\n    selector: 'input[euiClearable]',\n})\nexport class EuiClearableDirective implements OnChanges, AfterViewInit {\n    @Input({ transform: booleanAttribute }) euiClearable: boolean;\n\n    @HostBinding('attr.readonly')\n    @Input()\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    get readonly(): any {\n        return this._isReadonly ? '' : null;\n    }\n    set readonly(v: BooleanInput) {\n        this._isReadonly = coerceBooleanProperty(v);\n    }\n\n    @HostBinding('disabled')\n    @Input()\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    get disabled(): any {\n        return this._disabled ? '' : null;\n    }\n    set disabled(v: BooleanInput) {\n        this._disabled = coerceBooleanProperty(v);\n    }\n\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [this._cssClasses, this.euiClearable ? `${this._elementRef.nativeElement.rootClassName}--clearable` : ''].join(' ').trim();\n    }\n    public set cssClasses(value: string) {\n        this._cssClasses = value;\n    }\n    private _cssClasses: string;\n\n    protected _clearableIcon: ComponentRef<EuiIconSvgComponent>;\n    private _euiUFlexWrapper: HTMLDivElement;\n    private _isReadonly: boolean;\n    private _disabled: boolean;\n    private _elementRef = inject(ElementRef);\n    private _viewContainerRef = inject(ViewContainerRef);\n    private _renderer = inject(Renderer2);\n    private injector = inject(Injector);\n\n    ngAfterViewInit(): void {\n        if (this._clearableIcon) {\n            const control = this.injector.get(NgControl, null, { optional: true });\n            const value = control\n                ? control instanceof NgModel\n                    ? control.model?.toString()\n                    : control.value?.toString()\n                : this._elementRef.nativeElement.value;\n            this._renderer.setStyle(this._clearableIcon.location.nativeElement, 'visibility', value?.length > 0 ? 'visible' : 'hidden');\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.euiClearable) {\n            // get a type of the control\n            const type = this._elementRef.nativeElement.type;\n            if (coerceBooleanProperty(changes['euiClearable'].currentValue)) {\n                // check if the type is not euiInputNumber or euiInputText, reset and throw error\n                if (type !== 'eui-number' && type !== 'text' && type !== 'search') {\n                    this.euiClearable = true;\n                    throw new Error('euiClearable is only allowed in euiInputNumber or euiInputText');\n                }\n                // dynamically create the icon\n                this.createClearableIcon();\n\n                // wrap them all in an eui-u-flex class\n                this.createFlexWrapper();\n                this._renderer.appendChild(this._euiUFlexWrapper, this._clearableIcon.location.nativeElement);\n            } else if (this._clearableIcon) {\n                this.removeClearableIcon();\n                const euiLoading = this.injector.get(EuiLoadingDirective, null, { optional: true })?.euiLoading;\n                if (!euiLoading) {\n                    this.removeFlexWrapper();\n                }\n            }\n        }\n\n        if (changes['readonly']) {\n            if (changes['readonly'].currentValue === false && this.euiClearable) {\n                // create wrapper\n                this.createFlexWrapper();\n                // dynamically create the icon\n                this.createClearableIcon();\n                this._renderer.appendChild(this._euiUFlexWrapper, this._clearableIcon.location.nativeElement);\n            }\n            if (changes['readonly'].currentValue === true) {\n                this.removeClearableIcon();\n                this.removeFlexWrapper();\n            }\n        }\n\n        if (changes['disabled']) {\n            if (this._clearableIcon) {\n                const disabled = changes['disabled']?.currentValue;\n                if (disabled) {\n                    this._renderer.setStyle(this._clearableIcon.location.nativeElement, 'pointer-events', 'none');\n                    this._renderer.removeAttribute(this._clearableIcon.location.nativeElement, 'tabindex');\n                } else {\n                    this._renderer.removeStyle(this._clearableIcon.location.nativeElement, 'pointer-events');\n                    this._renderer.setAttribute(this._clearableIcon.location.nativeElement, 'tabindex', '0');\n                }\n            }\n        }\n    }\n\n    @HostListener('input', ['$any($event.target).value'])\n    @HostListener('ngModelChange', ['$event'])\n    public onKeyUpAndModelChange(value): void {\n        if (this.euiClearable) {\n            const visibility = value?.toString().length > 0 ? 'visible' : 'hidden';\n            this._renderer.setStyle(this._clearableIcon.location.nativeElement, 'visibility', visibility);\n        }\n    }\n\n    private onClearableClicked(): void {\n        if (this._elementRef.nativeElement.disabled) {\n            return;\n        }\n        const control = this.injector.get(NgControl, undefined, { optional: true });\n        if (control) {\n            control.reset();\n        } else {\n            const inputEvent = new InputEvent('input', { data: null });\n            this._elementRef.nativeElement.value = null;\n            this._elementRef.nativeElement.dispatchEvent(inputEvent);\n        }\n        const clearEvent = new InputEvent('clear');\n        this._elementRef.nativeElement.dispatchEvent(clearEvent);\n        this._elementRef.nativeElement.focus();\n    }\n\n    /**\n     * creates the Clearable icon component\n     *\n     * @private\n     */\n    private createClearableIcon(): void {\n        if (!this._clearableIcon) {\n            // TODO: turn import of EuiIconSvgComponent into a type?\n            this._clearableIcon = this._viewContainerRef.createComponent(EuiIconSvgComponent);\n            this._clearableIcon.instance.set = 'eui';\n            this._clearableIcon.instance.icon = 'eui-close';\n            this._clearableIcon.instance.ariaLabel = 'Clear input field';\n            this._renderer.addClass(this._clearableIcon.location.nativeElement, 'eui-input-text--clearable-icon');\n            this._renderer.listen(this._clearableIcon.location.nativeElement, 'click', this.onClearableClicked.bind(this));\n            this._renderer.listen(this._clearableIcon.location.nativeElement, 'keydown.enter', this.onClearableClicked.bind(this));\n            const control = this.injector.get(NgControl, null, { optional: true });\n            const value = control\n                ? control instanceof NgModel\n                    ? control.model?.toString()\n                    : control.value?.toString()\n                : this._elementRef.nativeElement.value;\n            this._renderer.setStyle(this._clearableIcon.location.nativeElement, 'visibility', value?.length > 0 ? 'visible' : 'hidden');\n            if (!this._elementRef.nativeElement.disabled) {\n                this._renderer.setAttribute(this._clearableIcon.location.nativeElement, 'tabindex', '0');\n                this._clearableIcon.instance.ariaRole = 'button';\n                this._clearableIcon.instance.ariaHidden = false;\n            } else {\n                this._renderer.setStyle(this._clearableIcon.location.nativeElement, 'pointer-events', 'none');\n            }\n        }\n    }\n\n    /**\n     * detach the Clearable icon from the view\n     *\n     * @private\n     */\n    private removeClearableIcon(): void {\n        if (this._clearableIcon) {\n            const index = this._viewContainerRef.indexOf(this._clearableIcon.hostView);\n            this._viewContainerRef.detach(index);\n            this._clearableIcon = null;\n        }\n    }\n\n    /**\n     * create a flex wrapper for the input to hold the icon\n     *\n     * @private\n     */\n    private createFlexWrapper(): void {\n        if (!this._euiUFlexWrapper && !this.doesParentHasAFlexWrapper()) {\n            this._euiUFlexWrapper = this._renderer.createElement('div');\n            this._renderer.addClass(this._euiUFlexWrapper, 'eui-u-flex');\n            this._renderer.addClass(this._euiUFlexWrapper, 'eui-u-p-relative');\n            this._renderer.setAttribute(this._euiUFlexWrapper, 'flexWrapper', null);\n            this._renderer.insertBefore(\n                this._elementRef.nativeElement.parentElement,\n                this._euiUFlexWrapper,\n                this._elementRef.nativeElement,\n            );\n            this._renderer.appendChild(this._euiUFlexWrapper, this._elementRef.nativeElement);\n        }\n        if (!this._euiUFlexWrapper && this.doesParentHasAFlexWrapper()) {\n            this._euiUFlexWrapper = this._elementRef.nativeElement.parentElement;\n        }\n    }\n\n    /**\n     * checks if the parent has a flexWrapper. This is used to avoid creating multiple flexWrappers\n     *\n     * @private\n     */\n    private doesParentHasAFlexWrapper(): boolean {\n        return this._elementRef.nativeElement.parentElement.hasAttribute('flexWrapper');\n    }\n\n    /**\n     * removes the flexWrapper while keeping the input element intact\n     *\n     * @private\n     */\n    private removeFlexWrapper(): void {\n        if (this._euiUFlexWrapper) {\n            this._renderer.insertBefore(this._euiUFlexWrapper.parentElement, this._elementRef.nativeElement, this._euiUFlexWrapper);\n            this._renderer.removeChild(this._euiUFlexWrapper.parentElement, this._euiUFlexWrapper);\n            this._euiUFlexWrapper.remove();\n            this._euiUFlexWrapper = null;\n        }\n    }\n}\n","import {\n    booleanAttribute,\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostBinding,\n    Injector,\n    Input,\n    OnChanges,\n    Renderer2,\n    SimpleChanges,\n    ViewContainerRef,\n    inject,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiClearableDirective } from './eui-clearable.directive';\nimport { EuiIconSvgComponent } from '@eui/components/eui-icon';\n\n/**\n * Directive displaying a loading spinner icon inside input fields during async operations.\n * Dynamically creates and positions a loading icon that appears when euiLoading is true.\n * Automatically manages wrapper div for icon positioning and handles readonly state.\n * Compatible with euiClearable directive for combined loading and clear functionality.\n *\n * @usageNotes\n * ```html\n * <input euiInputText [euiLoading]=\"isSearching\" [(ngModel)]=\"searchTerm\" />\n * ```\n *\n * ```typescript\n * isSearching = false;\n *\n * onSearch() {\n *   this.isSearching = true;\n *   this.api.search().subscribe(() => this.isSearching = false);\n * }\n * ```\n *\n * ### Accessibility\n * - Loading icon positioned at end of input for visual feedback\n * - Input becomes readonly while loading to prevent changes during operation\n * - Icon has aria-label for screen reader announcement\n *\n * ### Notes\n * - Loading icon automatically positioned at input end\n * - Works alongside euiClearable directive without conflicts\n * - Wrapper div created automatically for icon positioning\n * - Input set to readonly state when loading is active\n */\n@Directive({\n    selector: '[euiLoading]',\n})\nexport class EuiLoadingDirective implements OnChanges {\n    @Input({ transform: booleanAttribute }) euiLoading: boolean;\n\n    @HostBinding('attr.readonly')\n    @Input()\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    get readonly(): any {\n        return this._isReadonly ? '' : null;\n    }\n    set readonly(v: BooleanInput) {\n        this._isReadonly = coerceBooleanProperty(v);\n    }\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [this._cssClasses, this.euiLoading ? `${this._elementRef.nativeElement.rootClassName}--loading` : ''].join(' ').trim();\n    }\n    public set cssClasses(value: string) {\n        this._cssClasses = value;\n    }\n    protected _loadingIcon: ComponentRef<EuiIconSvgComponent>;\n    private _euiUFlexWrapper: HTMLDivElement;\n    private _cssClasses: string;\n    private _isReadonly: boolean;\n    private _elementRef = inject(ElementRef);\n    private _viewContainerRef = inject(ViewContainerRef);\n    private _renderer = inject(Renderer2);\n    private injector = inject(Injector);\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.euiLoading) {\n            const euiClearable = this.injector.get(EuiClearableDirective, undefined, { optional: true })?.euiClearable;\n            if (coerceBooleanProperty(changes['euiLoading'].currentValue)) {\n                // wrap them all in an eui-u-flex class\n                this.createFlexWrapper();\n\n                // dynamically create the icon\n                this.createLoadingIcon();\n            } else if (this._loadingIcon) {\n                this.removeLoadingIcon();\n                if (!euiClearable) {\n                    this.removeFlexWrapper();\n                }\n            }\n        }\n\n        if (changes['readonly']) {\n            if (changes['readonly'].currentValue === false && this.euiLoading) {\n                // create wrapper\n                this.createFlexWrapper();\n\n                // dynamically create the icon\n                this.createLoadingIcon();\n                this._renderer.appendChild(this._euiUFlexWrapper, this._loadingIcon.location.nativeElement);\n            }\n            if (changes['readonly'].currentValue === true) {\n                this.removeLoadingIcon();\n                this.removeFlexWrapper();\n            }\n        }\n    }\n\n    /**\n     * create a flex wrapper for the input to hold the icon\n     *\n     * @private\n     */\n    private createFlexWrapper(): void {\n        if (!this._euiUFlexWrapper && !this.doesParentHasAFlexWrapper()) {\n            this._euiUFlexWrapper = this._renderer.createElement('div');\n            this._renderer.addClass(this._euiUFlexWrapper, 'eui-u-flex');\n            this._renderer.setAttribute(this._euiUFlexWrapper, 'flexWrapper', null);\n            this._renderer.setStyle(this._euiUFlexWrapper, 'position', 'relative');\n            this._renderer.insertBefore(\n                this._elementRef.nativeElement.parentElement,\n                this._euiUFlexWrapper,\n                this._elementRef.nativeElement,\n            );\n            this._renderer.appendChild(this._euiUFlexWrapper, this._elementRef.nativeElement);\n        }\n        if (!this._euiUFlexWrapper && this.doesParentHasAFlexWrapper()) {\n            this._euiUFlexWrapper = this._elementRef.nativeElement.parentElement;\n        }\n    }\n\n    /**\n     * checks if the parent has a flexWrapper. This is used to avoid creating multiple flexWrappers\n     *\n     * @private\n     */\n    private doesParentHasAFlexWrapper(): boolean {\n        return this._elementRef.nativeElement.parentElement.hasAttribute('flexWrapper');\n    }\n\n    /**\n     * removes the flexWrapper while keeping the input element intact\n     *\n     * @private\n     */\n    private removeFlexWrapper(): void {\n        if (this._euiUFlexWrapper) {\n            this._renderer.insertBefore(this._euiUFlexWrapper.parentElement, this._elementRef.nativeElement, this._euiUFlexWrapper);\n            this._renderer.removeChild(this._euiUFlexWrapper.parentElement, this._euiUFlexWrapper);\n            this._euiUFlexWrapper.remove();\n            this._euiUFlexWrapper = null;\n        }\n    }\n\n    /**\n     * creates the loading icon component\n     *\n     * @private\n     */\n    private createLoadingIcon(): void {\n        if (!this._loadingIcon) {\n            this._loadingIcon = this._viewContainerRef.createComponent(EuiIconSvgComponent);\n            this._loadingIcon.instance.isLoading = true;\n            this._loadingIcon.instance.isInputIcon = true;\n            this._loadingIcon.instance.euiEnd = true;\n            this._loadingIcon.instance.ariaLabel = 'XXXXX';\n            this._renderer.appendChild(this._euiUFlexWrapper, this._loadingIcon.location.nativeElement);\n        }\n    }\n\n    /**\n     * removes the loading icon component\n     *\n     * @private\n     */\n    private removeLoadingIcon(): void {\n        if (this._loadingIcon) {\n            const index = this._viewContainerRef.indexOf(this._loadingIcon.hostView);\n            this._viewContainerRef.detach(index);\n            this._loadingIcon = null;\n        }\n    }\n}\n","import { booleanAttribute, Component, HostBinding, input, ViewEncapsulation } from '@angular/core';\nimport { EUI_ICON } from '@eui/components/eui-icon';\n\n/**\n * Defines the position of the resizable handle relative to the component.\n * 'left' places the handle on the left edge for left-side resizing.\n * 'right' places the handle on the right edge for right-side resizing.\n */\nexport type EuiResizablePosition = 'left' | 'right';\n\n/**\n * A resizable container component that allows users to dynamically adjust the width of its content.\n * The component provides a draggable handle positioned on either the left or right edge, enabling\n * flexible layout adjustments. Commonly used for collapsible sidebars, adjustable panels, or\n * responsive content areas where users need manual control over element dimensions.\n */\n@Component({\n    selector: 'eui-resizable',\n    templateUrl: './eui-resizable.component.html',\n    styleUrls: ['./styles/index.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        ...EUI_ICON,\n    ],\n    standalone: true,\n})\nexport class EuiResizableComponent {\n    /**\n     * Determines the placement of the resizable handle and the direction of resize behavior.\n     * When set to 'left', the handle appears on the left edge and resizing expands/contracts from the left.\n     * When set to 'right', the handle appears on the right edge and resizing expands/contracts from the right.\n     * @default 'right'\n     */\n    position = input<EuiResizablePosition>('right');\n    /** Accessible label for the separator handle. */\n    ariaLabel = input<string>('Press the left or right arrow key to resize the panel');\n    /** Current width value in pixels for aria-valuenow. */\n    ariaValueNow = input<number>(undefined);\n    /** Minimum width value in pixels for aria-valuemin. */\n    ariaValueMin = input<number>(0);\n    /** Maximum width value in pixels for aria-valuemax. */\n    ariaValueMax = input<number>(undefined);\n    /** Determines if the resizable feature is disable or not */\n    euiResizableHidden = input(false, { transform: booleanAttribute });\n\n    @HostBinding('class') get cssClasses(): string {\n        return [\n            'eui-resizable',\n            this.position() === 'left' ? 'eui-resizable--left' : 'eui-resizable--right',\n            this.euiResizableHidden() ? 'eui-resizable--disabled' : '',\n        ].join(' ').trim();\n    }\n    @HostBinding('attr.data-e2e') e2e = 'eui-resizable';\n}\n","<div class=\"eui-resizable-icon__container\">\n    <eui-icon-svg icon=\"eui-arrows-left-right\" size=\"xs\" fillColor=\"primary\" class=\"eui-resizable-icon\"/>\n</div>\n<div\n    class=\"eui-resizable-bar\"\n    role=\"separator\"\n    aria-orientation=\"vertical\"\n    tabindex=\"0\"\n    [attr.aria-label]=\"ariaLabel()\"\n    [attr.aria-valuenow]=\"ariaValueNow()\"\n    [attr.aria-valuemin]=\"ariaValueMin()\"\n    [attr.aria-valuemax]=\"ariaValueMax()\"\n></div>\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tComponentRef,\n\tDirective,\n\tElementRef,\n\tHostBinding,\n\tOnDestroy,\n\tOnInit,\n\tRenderer2,\n\tViewContainerRef,\n\tinject,\n\tinput,\n\teffect,\n\tChangeDetectorRef,\n\tnumberAttribute,\n    booleanAttribute,\n} from '@angular/core';\nimport { distinctUntilChanged, map, takeUntil, tap } from 'rxjs/operators';\nimport { fromEvent, Subject } from 'rxjs';\n\nimport { EuiResizableComponent } from './eui-resizable.component';\nimport { CssUtils } from '@eui/core';\n\n/**\n * Defines the placement of the resizable handle and determines the direction of resizing behavior.\n * 'left' positions the handle on the left edge and resizes by adjusting from the left boundary.\n * 'right' positions the handle on the right edge and resizes by adjusting from the right boundary.\n */\nexport type EuiResizablePosition = 'left' | 'right';\n\n/**\n * Ensures the value is a non-negative pixel number.\n * @param value\n */\nconst pixelTransform = (value: string | number): number => {\n\tvalue = numberAttribute(value, 0);\n\treturn Math.max(0, value);\n}\n\n/**\n * Enables interactive resizing of a container element by dragging a handle.\n * Applies width constraints dynamically and supports left or right-side handle placement.\n * Intended for use in layouts requiring user-adjustable panel widths, such as sidebars or split views.\n */\n@Directive({\n    selector: '[euiResizable]',\n})\nexport class EuiResizableDirective implements OnInit, OnDestroy {\n\t/**\n\t * Minimum width constraint for the resizable container in pixels. Prevents the container from being resized below this value.\n\t * Accepts string or number values, automatically converted to non-negative pixels. Defaults to 0.\n\t */\n\teuiResizableMinWidth = input(0, { transform: pixelTransform });\n    /**\n     * Determines the placement of the resizable handle and the direction of resizing behavior.\n     * 'left' positions the handle on the left edge; 'right' positions it on the right edge. Defaults to 'right'.\n     */\n    euiResizablePosition = input<EuiResizablePosition>('right');\n\n    /**\n     * Determines if the resizable directive is affecting eui-app-side-container\n     */\n    euiResizableSideContainer = input(false, { transform: booleanAttribute });\n    /**\n     * Determines if the resizable feature is disable or not\n     */\n    euiResizableHidden = input(false, { transform: booleanAttribute });\n\n\t/**\n\t * Accessible label for the separator handle.\n\t * @default 'Press the left or right arrow key to resize the panel'\n\t */\n\teuiResizableAriaLabel = input<string>('Press the left or right arrow key to resize the panel');\n\n\t/**\n\t * Maximum width constraint for the resizable container in pixels.\n\t * Used for aria-valuemax on the separator handle.\n\t */\n\teuiResizableMaxWidth = input(undefined, { transform: pixelTransform });\n\n\t/**\n\t * Step size in pixels for keyboard arrow key resizing.\n\t * @default 10\n\t */\n\teuiResizableKeyStep = input(10, { transform: pixelTransform });\n\n    @HostBinding('style.width.px') styleWidth: number;\n    @HostBinding('style.min-width.px') styleMinWidth: number;\n    @HostBinding('style.max-width.px') styleMaxWidth: number;\n    @HostBinding('style.flex-basis.px') styleFlexBasisWidth: number;\n\n    private _resizableBar: ComponentRef<EuiResizableComponent>;\n    private destroy$ = new Subject<boolean>();\n    private interaction$ = new Subject<void>();\n    private _initialized = false;\n    private _documentRef = inject<Document>(DOCUMENT);\n    private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n    private _renderer = inject(Renderer2);\n    private _viewContainerRef = inject(ViewContainerRef);\n    private cd = inject(ChangeDetectorRef);\n\n    constructor() {\n        effect(() => {\n            const disabled = this.euiResizableHidden();\n            if (this._resizableBar) {\n                this._resizableBar.setInput('euiResizableHidden', disabled);\n            }\n            if (!this._initialized) {\n                return;\n            }\n            if (disabled) {\n                this._teardownInteraction();\n            } else {\n                this._setupInteraction();\n            }\n        });\n    }\n\n    ngOnInit(): void {\n        this._createResizableBar();\n        this._initialized = true;\n        if (!this.euiResizableHidden()) {\n            this._setupInteraction();\n        } else {\n            this._teardownInteraction();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    private _applySize(size: number): void {\n        const minWidth = this.euiResizableMinWidth();\n        const maxWidth = this.euiResizableMaxWidth();\n        let constrained = Math.max(Math.round(size), minWidth);\n        if (maxWidth !== undefined) {\n            constrained = Math.min(constrained, maxWidth);\n        }\n        this.styleWidth = constrained;\n        this.styleMinWidth = constrained;\n        this.styleMaxWidth = constrained;\n        this.styleFlexBasisWidth = constrained;\n        this._resizableBar.setInput('ariaValueNow', constrained);\n        if (this.euiResizableSideContainer()) {\n            CssUtils.setSideContainerWidth(constrained, this._documentRef);\n        }\n        this.cd.markForCheck();\n    }\n\n    private _onKeydown(e: KeyboardEvent): void {\n        const currentWidth = this.styleWidth ?? this._elementRef.nativeElement.getBoundingClientRect().width;\n        const step = this.euiResizableKeyStep();\n        const isLeft = this.euiResizablePosition() === 'left';\n        let newSize: number | null = null;\n\n        switch (e.key) {\n            case 'ArrowRight':\n                newSize = isLeft ? currentWidth - step : currentWidth + step;\n                break;\n            case 'ArrowLeft':\n                newSize = isLeft ? currentWidth + step : currentWidth - step;\n                break;\n            case 'Home':\n                newSize = this.euiResizableMinWidth();\n                break;\n            case 'End':\n                newSize = this.euiResizableMaxWidth() ?? currentWidth;\n                break;\n            default:\n                return;\n        }\n\n        e.preventDefault();\n        this._applySize(newSize);\n    }\n\n    private _setupInteraction(): void {\n        this.interaction$.next();\n        const bar = this._elementRef.nativeElement.querySelector('.eui-resizable-bar');\n        if (!bar) {\n            return;\n        }\n\n        bar.removeAttribute('aria-hidden');\n\n        fromEvent<MouseEvent>(bar, 'mousedown').pipe(\n            tap((e) => e.preventDefault()),\n            takeUntil(this.interaction$),\n            takeUntil(this.destroy$),\n        ).subscribe((e) => {\n            if (e.button === 0) {\n                const { width, right, left } = this._elementRef.nativeElement.getBoundingClientRect();\n\n                fromEvent<MouseEvent>(this._documentRef, 'mousemove').pipe(\n                    map(({ clientX }) => {\n                        if (this.euiResizablePosition() === 'right') {\n                            return width + clientX - right;\n                        } else {\n                            return width + (left - clientX);\n                        }\n                    }),\n                    distinctUntilChanged(),\n                    takeUntil(fromEvent(this._documentRef, 'mouseup')),\n                ).subscribe((size) => {\n                    this._applySize(size);\n                });\n            }\n        });\n\n        fromEvent<KeyboardEvent>(bar, 'keydown').pipe(\n            takeUntil(this.interaction$),\n            takeUntil(this.destroy$),\n        ).subscribe((e) => this._onKeydown(e));\n    }\n\n    private _teardownInteraction(): void {\n        this.interaction$.next();\n        const bar = this._elementRef.nativeElement.querySelector('.eui-resizable-bar');\n        if (bar) {\n            bar.setAttribute('aria-hidden', 'true');\n        }\n    }\n\n    private _createResizableBar(): void {\n        if (!this._resizableBar) {\n            this._resizableBar = this._viewContainerRef.createComponent(EuiResizableComponent);\n            this._resizableBar.setInput('position', this.euiResizablePosition());\n            this._resizableBar.setInput('ariaLabel', this.euiResizableAriaLabel());\n            this._resizableBar.setInput('ariaValueMin', this.euiResizableMinWidth());\n            this._resizableBar.setInput('ariaValueNow', Math.round(this._elementRef.nativeElement.getBoundingClientRect().width));\n            if (this.euiResizableMaxWidth() !== undefined) {\n                this._resizableBar.setInput('ariaValueMax', this.euiResizableMaxWidth());\n            }\n            this._renderer.appendChild(this._elementRef.nativeElement, this._resizableBar.location.nativeElement);\n        }\n    }\n}\n","import { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\n\n@Directive({\n    selector: '[euiArrowKeyNavigable]',\n})\n\n/**\n * Directive enabling keyboard arrow key navigation for focusable content within list items.\n * Makes rich content elements keyboard-accessible by managing focus state and tabindex.\n * Typically used in dropdown menus, list boxes, or custom navigation components.\n *\n * @usageNotes\n * ```html\n * <div euiArrowKeyNavigable>\n *   <a href=\"#\">Focusable link</a>\n *   <button>Focusable button</button>\n * </div>\n * ```\n *\n * ### Accessibility\n * - Sets tabindex=\"-1\" to remove from default tab order while allowing programmatic focus\n * - Tracks focus state for visual feedback and navigation management\n * - Use with arrow key navigation logic in parent component\n *\n * ### Notes\n * - Element is not in default tab order but can receive focus programmatically\n * - Commonly paired with list navigation components that handle arrow key events\n * - Focus state tracked via isFocused property\n */\nexport class EuiArrowKeyNavigableDirective {\n    elementRef = inject(ElementRef);\n\n    @HostBinding('attr.tabindex') tabindex = '-1';\n    isFocused = false;\n\n    @HostListener('focus')\n    onFocus(): void {\n        this.isFocused = true;\n    }\n\n    @HostListener('blur')\n    onBlur(): void {\n        this.isFocused = false;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}