{"version":3,"file":"eui-components-eui-select.mjs","sources":["../../eui-select/eui-select.component.ts","../../eui-select/utils.ts","../../eui-select/eui-select-control.directive.ts","../../eui-select/eui-select-multiple.directive.ts","../../eui-select/eui-select-mutli-option.directive.ts","../../eui-select/eui-select-option.directive.ts","../../eui-select/index.ts","../../eui-select/eui-components-eui-select.ts"],"sourcesContent":["import {\n    booleanAttribute,\n    Component,\n    ComponentRef,\n    DoCheck,\n    ElementRef,\n    HostListener,\n    Injector,\n    Input,\n    OnChanges,\n    OnInit,\n    Renderer2,\n    SimpleChanges,\n    ViewContainerRef,\n    inject,\n    HostBinding,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiInputTextComponent } from '@eui/components/eui-input-text';\nimport { NgControl } from '@angular/forms';\n\n/**\n * @description\n * Select field that allows users to choose one value from a list of options.\n * `eui-select` integrates with Angular forms and supports dynamic options, object values (`ngValue`), readonly synchronization, and deterministic option rendering through EUI control value accessors.\n * It is designed to work with native `<select>` / `<option>` semantics while ensuring correct behavior with EUI styling, validation, and form state handling.\n *\n * @usageNotes\n * ### Basic usage\n * ```html\n * <select euiSelect [(ngModel)]=\"selectedValue\">\n *   <option value=\"1\">Option 1</option>\n *   <option value=\"2\">Option 2</option>\n * </select>\n * ```\n *\n * ### With placeholder\n * ```html\n * <select euiSelect placeholder=\"Select an option\" [formControl]=\"control\">\n *   <option *ngFor=\"let item of items\" [value]=\"item.id\">{{item.name}}</option>\n * </select>\n * ```\n *\n * ### Readonly mode\n * ```html\n * <select euiSelect [readonly]=\"true\" [(ngModel)]=\"value\">\n *   <option value=\"approved\">Approved</option>\n * </select>\n * ```\n *\n * ### Accessibility\n * - Use aria-label to provide context for screen readers\n * - Invalid state is automatically applied from form validation\n * - Readonly mode creates accessible text input showing selected value\n * - Native select semantics ensure keyboard navigation works as expected\n *\n * ### Notes\n * - Placeholder appears as first option when no value selected\n * - Readonly mode hides select and displays value in text input\n * - Validation state syncs automatically with Angular forms\n * - Use with `euiOption` directive for enhanced option handling\n */\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'select[euiSelect]',\n    styleUrls: ['./eui-select.scss'],\n    template: '<ng-content/>',\n})\nexport class EuiSelectComponent implements OnChanges, OnInit, DoCheck {\n\n    @HostBinding('attr.aria-label') @Input() ariaLabel = 'Select an option';\n\n    @Input() placeholder: string;\n\n    @Input({ transform: booleanAttribute }) readonly: boolean;\n\n    @Input()\n    public get isInvalid(): boolean {\n        return this._isInvalid || null;\n    }\n    public set isInvalid(state: BooleanInput) {\n        this._isInvalid = coerceBooleanProperty(state);\n        if (this._isInvalid) {\n            this.renderer.addClass(this.elementRef.nativeElement, 'eui-select--invalid');\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select--invalid');\n        }\n    }\n\n    protected _isInvalid: boolean;\n    private control: NgControl;\n    private readonlyInput: ComponentRef<EuiInputTextComponent>;\n    private placeholderOption: HTMLOptionElement;\n    private renderer = inject(Renderer2);\n    private injector = inject(Injector);\n    private elementRef = inject<ElementRef<HTMLSelectElement>>(ElementRef);\n    private viewContainerRef = inject(ViewContainerRef);\n\n    ngOnInit(): void {\n        this.renderer.addClass(this.elementRef.nativeElement, 'eui-select');\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['readonly']) {\n            if (this.readonly) {\n                // hide select element\n                this.renderer.setAttribute(this.elementRef.nativeElement, 'readonly', 'true');\n                this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n\n                // create an euiInputComponent to hold the value (for accessibility reasons)\n                this.readonlyInput = this.createReadonlyElement();\n                this.renderer.insertBefore(\n                    this.elementRef.nativeElement.parentElement,\n                    this.elementRef.nativeElement,\n                    this.readonlyInput.location.nativeElement,\n                );\n                this.setReadonlyValue(this.readonlyInput);\n            } else {\n                this.readonlyInput?.destroy();\n                this.renderer.removeAttribute(this.elementRef.nativeElement, 'readonly');\n                this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n            }\n        }\n\n        if (changes['placeholder']) {\n            this.control = this.injector.get(NgControl, undefined, { optional: true });\n            if (!this.control) {\n                // in case option Element already created update the value\n                if (changes['placeholder'].currentValue === undefined) {\n                    this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n                    // remove option element\n                    if (this.placeholderOption) {\n                        this.renderer.removeChild(this.elementRef.nativeElement, this.placeholderOption);\n                        this.placeholderOption = undefined;\n                    }\n                } else if (this.placeholderOption) {\n                    this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n                } else {\n                    // create option Element\n                    this.placeholderOption = this.renderer.createElement('option');\n\n                    this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n                    this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n                    // set attributes to act as a placeholder\n                    if (!this.elementRef.nativeElement.value) {\n                        this.renderer.setAttribute(this.placeholderOption, 'selected', '');\n                    }\n                    // append option element as the first of the select children\n                    this.elementRef.nativeElement.insertBefore(this.placeholderOption, this.elementRef.nativeElement.firstChild);\n\n                    if (this.elementRef.nativeElement.value === changes['placeholder'].currentValue) {\n                        this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n                    }\n                }\n            }\n        }\n    }\n\n    ngDoCheck(): void {\n        if (!this.control) {\n            this.control = this.injector.get(NgControl, undefined, { optional: true });\n        }\n        this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n        /** while the optionList changes but there's no selected option and there's a placeholder, add the placeholder\n         *  class. Otherwise, the placeholder will look selected but the color will be black. */\n        if (this.placeholder && this.elementRef.nativeElement.selectedIndex === 0) {\n            this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n        }\n    }\n\n    @HostListener('change', ['$any($event.target).value'])\n    onChange(value): void {\n        this.control = this.injector.get(NgControl, undefined, { optional: true });\n        if (!this.control) {\n            this.setPlaceholderClass(this.placeholder === value ? undefined : value);\n        }\n        this.syncReadOnlyValue();\n    }\n\n    syncReadOnlyValue(): void {\n        this.setReadonlyValue(this.readonlyInput);\n    }\n\n    /**\n     * set readonly value from selected options presented as comma separated string\n     *\n     * @param readonlyRef the input element to set the value\n     * @private\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 setReadonlyValue(readonlyRef: ComponentRef<EuiInputTextComponent>): any {\n        if (readonlyRef) {\n            // eslint-disable-next-line prefer-spread\n            const selectedOptions = Array.apply(null, this.elementRef.nativeElement.selectedOptions)\n                .map((i) => i.text)\n                .filter((i) => i !== this.placeholder)\n                .join(', ');\n            this.renderer.setProperty(readonlyRef.location.nativeElement, 'value', selectedOptions);\n            this.renderer.setAttribute(readonlyRef.location.nativeElement, 'aria-label', selectedOptions);\n        }\n    }\n\n    /**\n     * create readonly element\n     *\n     * @private\n     */\n    private createReadonlyElement(): ComponentRef<EuiInputTextComponent> {\n        const componentRef = this.viewContainerRef.createComponent(EuiInputTextComponent);\n        componentRef.instance.readonly = true;\n        return componentRef;\n    }\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 setPlaceholderClass(value: any): void {\n        const placeholderOption = this.elementRef.nativeElement.options[0];\n        if (!!this.placeholder && (value === undefined || value === null || value === '')) {\n            this.renderer.setAttribute(placeholderOption, 'selected', '');\n            this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n            this.renderer.removeAttribute(placeholderOption, 'selected');\n        }\n    }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _buildValueString(id: string, value: any): string {\n    if (id == null) {\n        return `${value}`;\n    }\n    if (typeof value === 'string') {\n        value = `'${value}'`;\n    }\n    if (value && typeof value === 'object') {\n        value = 'Object';\n    }\n    return `${id}: ${value}`.slice(0, 50);\n}\n\nexport function _extractId(valueString: string): string {\n    return valueString.split(':')[0];\n}\n","import { Directive, DoCheck, ElementRef, forwardRef, Injector, Input, OnChanges, Renderer2, SimpleChanges, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, SelectControlValueAccessor } from '@angular/forms';\nimport { EuiSelectComponent } from './eui-select.component';\nimport { _buildValueString } from './utils';\n\n/**\n * @description\n * Control value accessor for single-select dropdowns with EUI styling.\n * Extends Angular's SelectControlValueAccessor to handle placeholder behavior and readonly state synchronization.\n *\n * @usageNotes\n * ### Applied automatically\n * ```html\n * <select euiSelect [formControl]=\"myControl\">\n *   <option euiOption [ngValue]=\"item\" *ngFor=\"let item of items\">{{item.label}}</option>\n * </select>\n * ```\n *\n * ### Notes\n * - Automatically applied when using euiSelect with form directives\n * - Handles object values via ngValue\n * - Manages placeholder styling and selection state\n */\n@Directive({\n    selector:\n        // eslint-disable-next-line @angular-eslint/directive-selector\n        'select:not([multiple])[formControlName][euiSelect],select:not([multiple])[formControl][euiSelect],select:not([multiple])[ngModel][euiSelect]',\n    host: { '(blur)': 'onTouched()' },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => EuiSelectControlValueAccessor),\n            multi: true,\n        },\n    ],\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectControlValueAccessor extends SelectControlValueAccessor implements ControlValueAccessor, OnChanges, DoCheck {\n    @Input() placeholder: string;\n\n    private elementRef: ElementRef;\n    private renderer: Renderer2;\n    private placeholderOption: HTMLOptionElement;\n    private selectComponent = inject(EuiSelectComponent, { optional: true })!;\n    private injector = inject(Injector);\n\n    constructor() {\n        const _renderer = inject(Renderer2);\n        const _elementRef = inject(ElementRef);\n\n        super(_renderer, _elementRef);\n        this.elementRef = _elementRef;\n        this.renderer = _renderer;\n        this.onChange = (valueString: string): void => {\n            this.value = this['_getOptionValue'](valueString);\n            this.setPlaceholderClass(this.value);\n        };\n    }\n\n    ngDoCheck(): void {\n        if (this.placeholder && this.elementRef.nativeElement.selectedIndex === 0) {\n            this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n        }\n    }\n\n    /**\n     * Sets the \"value\" property on the select element.\n     *\n     * @nodoc\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    override writeValue(value: any): void {\n        super.writeValue(value);\n        this.setPlaceholderClass(value);\n        this.selectComponent?.syncReadOnlyValue();\n    }\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    override registerOnChange(fn: (value: any) => any): void {\n        this.onChange = (valueString: string): void => {\n            this.value = this['_getOptionValue'](valueString);\n            this.setPlaceholderClass(this.value);\n            fn(this.value);\n        };\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        if (isDisabled) {\n            this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', '');\n        } else {\n            this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['placeholder']) {\n            // in case option Element already created update the value\n            if (changes['placeholder'].currentValue === undefined) {\n                this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n                // remove option element\n                if (this.placeholderOption) {\n                    this.renderer.removeChild(this.elementRef.nativeElement, this.placeholderOption);\n                    this.placeholderOption = undefined;\n                }\n            } else if (this.placeholderOption) {\n                this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n            } else {\n                // create option Element\n                this.placeholderOption = this.renderer.createElement('option');\n                // const option = new EuiNgSelectOptionDirective({nativeElement: this.placeholderOption}, this.renderer, this);\n                // option.ngValue = null;\n                const id = this['_registerOption']();\n                this['_optionMap'].set(id, null);\n                const selectControlValueAccessor = this.injector.get(SelectControlValueAccessor, undefined);\n                selectControlValueAccessor['_idCounter'] = this['_idCounter'];\n                selectControlValueAccessor['_optionMap'] = this['_optionMap'];\n                this.renderer.setValue(this.placeholderOption, _buildValueString(id, null));\n                this.renderer.setProperty(this.placeholderOption, 'value', _buildValueString(id, null));\n\n                this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n                this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n                // set attributes to act as a placeholder\n                if (!this.elementRef.nativeElement.value) {\n                    this.renderer.setAttribute(this.placeholderOption, 'selected', '');\n                }\n                // append option element as the first of the select children\n                this.elementRef.nativeElement.insertBefore(this.placeholderOption, this.elementRef.nativeElement.firstChild);\n\n                if (this.elementRef.nativeElement.value === changes['placeholder'].currentValue) {\n                    this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n                }\n                if (!this.value) {\n                    this.writeValue(undefined);\n                }\n            }\n        }\n    }\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 setPlaceholderClass(value: any): void {\n        if (!!this.placeholder && (value === undefined || value === null || value === '')) {\n            try {\n                this.elementRef.nativeElement.options[0].selected = true;\n            } catch (e) {\n                /* empty */\n            }\n            this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n        }\n    }\n}\n","import { Directive, DoCheck, ElementRef, forwardRef, Injector, Input, Provider, Renderer2, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, SelectMultipleControlValueAccessor } from '@angular/forms';\nimport { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';\nimport { _extractId } from './utils';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiSelectComponent } from './eui-select.component';\n\nconst SELECT_MULTIPLE_VALUE_ACCESSOR: Provider = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => EuiSelectMultipleControlValueAccessor),\n    multi: true,\n};\n\n/** Mock interface for HTML Options */\ninterface HTMLOption {\n    value: string;\n    selected: boolean;\n}\n\n/** Mock interface for HTMLCollection */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nabstract class HTMLCollection {\n    // TODO(issue/24571): remove '!'.\n    length!: number;\n    abstract item(_: number): HTMLOption;\n}\n\n/**\n * @description\n * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select\n * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @see `EuiSelectControlValueAccessor`\n *\n * @usageNotes\n *\n * ### Using a multi-select control\n *\n * The follow example shows you how to use a multi-select control with a reactive form.\n *\n * ```ts\n * const countryControl = new FormControl();\n * ```\n *\n * ```\n * <select euiSelect multiple name=\"countries\" [formControl]=\"countryControl\">\n *   <option euiOption *ngFor=\"let country of countries\" [ngValue]=\"country\">\n *     {{ country.name }}\n *   </option>\n * </select>\n * ```\n *\n * ### Customizing option selection\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * See the `SelectControlValueAccessor` for usage.\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n@Directive({\n    selector:\n        // eslint-disable-next-line @angular-eslint/directive-selector,max-len\n        'select[multiple][formControlName][euiSelect],select[multiple][formControl][euiSelect],select[multiple][ngModel][euiSelect]',\n    host: { '(change)': 'onChange($event.target)', '(blur)': 'onTouched()' },\n    providers: [SELECT_MULTIPLE_VALUE_ACCESSOR],\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectMultipleControlValueAccessor extends SelectMultipleControlValueAccessor implements ControlValueAccessor, DoCheck {\n    @Input()\n    public get isInvalid(): boolean {\n        return this._isInvalid || null;\n    }\n    public set isInvalid(state: BooleanInput) {\n        this._isInvalid = coerceBooleanProperty(state);\n    }\n\n    /**\n     * The current value.\n     *\n     * @nodoc\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    value: any;\n\n    /** @internal */\n    _optionMap: Map<string, EuiSelectMultipleOption> = new Map<string, EuiSelectMultipleOption>();\n\n    /** @internal */\n    _idCounter = 0;\n    protected _isInvalid: boolean;\n    private elementRef: ElementRef;\n    private renderer: Renderer2;\n    private control: NgControl;\n    private selectComponent = inject(EuiSelectComponent, { optional: true })!;\n    private injector = inject(Injector);\n\n    constructor() {\n        const _renderer = inject(Renderer2);\n        const _elementRef = inject(ElementRef);\n\n        super(_renderer, _elementRef);\n        this.elementRef = _elementRef;\n        this.renderer = _renderer;\n    }\n\n    ngDoCheck(): void {\n        if (!this.control) {\n            this.control = this.injector.get(NgControl, undefined, { optional: true });\n        }\n        this._isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n    }\n\n    /**\n     * Sets the \"value\" property on one or of more of the select's options.\n     *\n     * @nodoc\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    writeValue(value: any): void {\n        this.value = value;\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        let optionSelectedStateSetter: (opt: EuiSelectMultipleOption, o: any) => void;\n        if (Array.isArray(value)) {\n            // convert values to ids\n            const ids = value.map((v) => this._getOptionId(v));\n            optionSelectedStateSetter = (opt, o): void => {\n                opt._setSelected(ids.indexOf(o.toString()) > -1);\n            };\n        } else {\n            optionSelectedStateSetter = (opt): void => {\n                opt._setSelected(false);\n            };\n        }\n        this._optionMap.forEach(optionSelectedStateSetter);\n        this.selectComponent?.syncReadOnlyValue();\n    }\n\n    /**\n     * Registers a function called when the control value changes\n     * and writes an array of the selected options.\n     *\n     * @nodoc\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    override registerOnChange(fn: (value: any) => any): void {\n        this.onChange = (element: HTMLSelectElement): void => {\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            const selected: Array<any> = [];\n            const selectedOptions = element.selectedOptions;\n            if (selectedOptions !== undefined) {\n                const options = selectedOptions;\n                // eslint-disable-next-line @typescript-eslint/prefer-for-of\n                for (let i = 0; i < options.length; i++) {\n                    const opt = options[i];\n                    const val = this._getOptionValue(opt.value);\n                    selected.push(val);\n                }\n            } else {\n                const options = element.options;\n                // eslint-disable-next-line @typescript-eslint/prefer-for-of\n                for (let i = 0; i < options.length; i++) {\n                    const opt = options[i];\n                    if (opt.selected) {\n                        const val = this._getOptionValue(opt.value);\n                        selected.push(val);\n                    }\n                }\n            }\n            this.value = selected;\n            fn(selected);\n        };\n    }\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    registerOnTouched(fn: any): void {\n        this.onTouched = (): void => {\n            const control = this.injector.get(NgControl, undefined, { optional: true });\n            this.isInvalid = control.invalid;\n            if (this.isInvalid) {\n                this.renderer.addClass(this.elementRef.nativeElement, 'eui-select--invalid');\n            }\n            fn();\n        };\n    }\n\n    /** @internal */\n    _registerOption(value: EuiSelectMultipleOption): string {\n        const id: string = (this._idCounter++).toString();\n        this._optionMap.set(id, value);\n        return id;\n    }\n\n    /** @internal */\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    _getOptionId(value: any): string | null {\n        for (const id of Array.from(this._optionMap.keys())) {\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            if (this['_compareWith'](this._optionMap.get(id)!._value, value)) {\n                return id;\n            }\n        }\n        return null;\n    }\n\n    /** @internal */\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    _getOptionValue(valueString: string): any {\n        const id: string = _extractId(valueString);\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return this._optionMap.has(id) ? this._optionMap.get(id)!._value : valueString;\n    }\n}\n","import { Directive, ElementRef, Input, OnDestroy, Renderer2, inject } from '@angular/core';\nimport { ɵNgSelectMultipleOption as NgSelectMultipleOption } from '@angular/forms';\nimport { EuiSelectMultipleControlValueAccessor } from './eui-select-multiple.directive';\nimport { _buildValueString } from './utils';\n\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `EuiSelectMultipleControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'option, option[euiOption]' })\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectMultipleOption extends NgSelectMultipleOption implements OnDestroy {\n    // TODO(issue/24571): remove '!'.\n    id!: string;\n    /** @internal */\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    _value: any;\n    private element: ElementRef;\n    private renderer: Renderer2;\n    private select: EuiSelectMultipleControlValueAccessor;\n\n    constructor() {\n        const _element = inject(ElementRef);\n        const _renderer = inject(Renderer2);\n        const _select = inject(EuiSelectMultipleControlValueAccessor, { optional: true, host: true })!;\n\n        super(_element, _renderer, _select);\n        this.element = _element;\n        this.renderer = _renderer;\n        this.select = _select;\n    }\n\n    /**\n     * @description\n     * Tracks the value bound to the option element. Unlike the value binding,\n     * ngValue supports binding to objects.\n     */\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    set ngValue(value: any) {\n        if (this.select == null) {\n            return;\n        }\n        this._value = value;\n        this._setElementValue(_buildValueString(this.id, value));\n        this.select.writeValue(this.select.value);\n    }\n\n    /**\n     * @description\n     * Tracks simple string values bound to the option element.\n     * For objects, use the `ngValue` input binding.\n     */\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    set value(value: any) {\n        if (this.select) {\n            this._value = value;\n            this._setElementValue(_buildValueString(this.id, value));\n            this.select.writeValue(this.select.value);\n        } else {\n            this._setElementValue(value);\n        }\n    }\n\n    /** @internal */\n    _setElementValue(value: string): void {\n        this.renderer.setProperty(this.element.nativeElement, 'value', value);\n    }\n\n    /** @internal */\n    _setSelected(selected: boolean): void {\n        this.renderer.setProperty(this.element.nativeElement, 'selected', selected);\n    }\n\n    /** @nodoc */\n    ngOnDestroy(): void {\n        if (this.select) {\n            this.select._optionMap.delete(this.id);\n            this.select.writeValue(this.select.value);\n        }\n    }\n}\n","import {\n    AfterViewInit,\n    booleanAttribute,\n    Directive,\n    ElementRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Renderer2,\n    SimpleChanges,\n    inject,\n} from '@angular/core';\nimport { NgSelectOption, SelectControlValueAccessor } from '@angular/forms';\nimport { EuiSelectControlValueAccessor } from './eui-select-control.directive';\nimport { EuiSelectComponent } from './eui-select.component';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/no-explicit-any\nfunction _buildValueString(id: string, value: any): string {\n    if (id == null) {\n        return `${value}`;\n    }\n    if (value && typeof value === 'object') {\n        value = 'Object';\n    }\n    return `${id}: ${value}`.slice(0, 50);\n}\n\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n * Supports object values via ngValue and synchronizes with readonly mode.\n *\n * @usageNotes\n * ### With ngValue for objects\n * ```html\n * <option euiOption [ngValue]=\"user\" [label]=\"user.name\">{{user.name}}</option>\n * ```\n *\n * ### With selected state\n * ```html\n * <option euiOption [selected]=\"isSelected\" [value]=\"id\">Label</option>\n * ```\n *\n * ### Notes\n * - Automatically applied to option elements within euiSelect\n * - Use ngValue for complex object binding\n * - Label property updates option text dynamically\n *\n * @see `EuiSelectControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n// TODO: remove that selector in eUI 17.x and replace it with `option[euiOption]` (this will be a breaking change)\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'option:not([eclSelectOption]):not([eclMultiselectOption]), option[euiOption]' })\nexport class EuiNgSelectOptionDirective extends NgSelectOption implements OnDestroy, OnChanges, AfterViewInit {\n    @Input({ transform: booleanAttribute }) selected: boolean;\n\n    @Input() label: string;\n\n    private readonly select: EuiSelectControlValueAccessor;\n    private readonly selectNative: SelectControlValueAccessor;\n    private readonly selectComponent: EuiSelectComponent;\n    private element: ElementRef<HTMLOptionElement>;\n    private renderer: Renderer2;\n\n    constructor() {\n        const _element = inject(ElementRef);\n        const _renderer = inject(Renderer2);\n        const _select = inject(EuiSelectControlValueAccessor, { optional: true, host: true })!;\n        const _selectNative = inject(SelectControlValueAccessor, { optional: true, host: true })!;\n        const _selectComponent = inject(EuiSelectComponent, { optional: true, host: true })!;\n\n        super(_element, _renderer, _select);\n        this.select = _select;\n        this.selectNative = _selectNative;\n        this.selectComponent = _selectComponent;\n        this.element = _element;\n        this.renderer = _renderer;\n    }\n\n    ngAfterViewInit(): void {\n        this.selectComponent?.syncReadOnlyValue();\n        if (this.selectNative && this.select && this.selectNative.value !== this.select.value) {\n            // TODO: This causes issues when options array change from N to 1 and the option 1 is set through setValue()\n            //       Investigate what are the regressions from the removal of this line. Issue is that the Native\n            //       control value accessor holds a mapper not in sync with the EuiSelectControlValueAccessor.\n            //\n            // this.selectNative.writeValue(this.select.value);\n        }\n    }\n\n    /**\n     * @description\n     * Tracks the value bound to the option element. Unlike the value binding,\n     * ngValue supports binding to objects.\n     */\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    override set ngValue(value: any) {\n        if (this.select == null) return;\n        this.selectNative['_idCounter'] = this.select['_idCounter'];\n        this.select['_optionMap'].set(this.id, value);\n        this.selectNative['_optionMap'] = this.select['_optionMap']; //.set(this.id, value);\n        super['_setElementValue'](_buildValueString(this.id, value));\n        this.select.writeValue(this.select.value);\n        this.selectNative.writeValue(this.select.value);\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.selected) {\n            /**\n             * in case there's a selected value, readonly attribute is true, sync it to the readonly input. The reason is\n             * that the readonly input is not aware of the selected value until the render of the view completes.\n             */\n            switch (this.selected) {\n                case true:\n                    this.renderer.setAttribute(this.element.nativeElement, 'selected', '');\n                    break;\n                default:\n                    this.renderer.removeAttribute(this.element.nativeElement, 'selected');\n            }\n            this.selectComponent?.syncReadOnlyValue();\n        }\n\n        if (changes.label) {\n            this.renderer.setProperty(this.element.nativeElement, 'innerText', changes.label.currentValue);\n            this.selectComponent?.syncReadOnlyValue();\n        }\n    }\n}\n","import { EuiSelectControlValueAccessor } from './eui-select-control.directive';\nimport { EuiSelectMultipleControlValueAccessor } from './eui-select-multiple.directive';\nimport { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';\nimport { EuiNgSelectOptionDirective } from './eui-select-option.directive';\nimport { EuiSelectComponent } from './eui-select.component';\n\nexport * from './eui-select.component';\nexport * from './eui-select-control.directive';\nexport * from './eui-select-option.directive';\nexport * from './eui-select-multiple.directive';\nexport * from './eui-select-mutli-option.directive';\nexport * from './utils';\n\nexport const EUI_SELECT = [\n    EuiSelectComponent,\n    EuiNgSelectOptionDirective,\n    EuiSelectControlValueAccessor,\n    EuiSelectMultipleControlValueAccessor,\n    EuiSelectMultipleOption,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_buildValueString","NgSelectMultipleOption"],"mappings":"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"}