@eui/components 19.2.3-snapshot-1747127910630 → 19.2.3-snapshot-1747224798876
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/components/EuiAutocompleteComponent.html +4 -4
- package/docs/components/EuiButtonComponent.html +5 -5
- package/docs/components/EuiCardComponent-1.html +1 -1
- package/docs/components/EuiCardHeaderRightContentComponent.html +10 -4
- package/docs/components/EuiDateRangeSelectorComponent.html +4 -4
- package/docs/components/EuiDatepickerComponent.html +4 -4
- package/docs/components/EuiDialogComponent.html +4 -4
- package/docs/components/EuiDialogContainerComponent.html +0 -4
- package/docs/components/EuiDropdownComponent.html +4 -4
- package/docs/components/EuiDropdownItemComponent.html +0 -4
- package/docs/components/EuiGrowlComponent.html +4 -4
- package/docs/components/EuiLanguageSelectorComponent.html +4 -4
- package/docs/components/EuiTimeRangepickerComponent.html +4 -4
- package/docs/components/EuiTreeListComponent.html +4 -4
- package/docs/dependencies.html +2 -2
- package/docs/js/menu-wc.js +3 -3
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +2 -0
- package/eui-button/eui-button.component.d.ts +1 -1
- package/eui-button/eui-button.component.d.ts.map +1 -1
- package/eui-card-v2/eui-card-header/eui-card-header-right-content.d.ts +3 -0
- package/eui-card-v2/eui-card-header/eui-card-header-right-content.d.ts.map +1 -1
- package/eui-chip-list/eui-chip-list.component.d.ts.map +1 -1
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts.map +1 -1
- package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
- package/eui-dialog/container/eui-dialog-container.component.d.ts.map +1 -1
- package/eui-dialog/eui-dialog.component.d.ts.map +1 -1
- package/eui-dropdown/dropdown-item/eui-dropdown-item.component.d.ts.map +1 -1
- package/eui-dropdown/eui-dropdown.component.d.ts.map +1 -1
- package/eui-growl/eui-growl.component.d.ts.map +1 -1
- package/eui-table/index.d.ts +2 -1
- package/eui-table/index.d.ts.map +1 -1
- package/eui-table-v2/index.d.ts +2 -1
- package/eui-table-v2/index.d.ts.map +1 -1
- package/eui-tree-list/eui-tree-list.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-alert.mjs +2 -2
- package/fesm2022/eui-components-eui-alert.mjs.map +1 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button.mjs +3 -2
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-card-v2.mjs +103 -93
- package/fesm2022/eui-components-eui-card-v2.mjs.map +1 -1
- package/fesm2022/eui-components-eui-chip-list.mjs +1 -1
- package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
- package/fesm2022/eui-components-eui-date-range-selector.mjs +4 -4
- package/fesm2022/eui-components-eui-date-range-selector.mjs.map +1 -1
- package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dialog.mjs +4 -4
- package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +2 -2
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-growl.mjs.map +1 -1
- package/fesm2022/eui-components-eui-language-selector.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table-v2.mjs +1 -0
- package/fesm2022/eui-components-eui-table-v2.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table.mjs +1 -0
- package/fesm2022/eui-components-eui-table.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree-list.mjs.map +1 -1
- package/package.json +7 -7
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"eui-components-eui-autocomplete.mjs","sources":["../../eui-autocomplete/eui-autocomplete-option-group/eui-autocomplete-option-group.component.ts","../../eui-autocomplete/eui-autocomplete-option/eui-autocomplete-option.component.ts","../../eui-autocomplete/animations/animations.ts","../../eui-autocomplete/eui-autocomplete.component.ts","../../eui-autocomplete/eui-autocomplete.component.html","../../eui-autocomplete/validators/force-selection-from-data.validator.ts","../../eui-autocomplete/eui-autocomplete.module.ts","../../eui-autocomplete/index.ts","../../eui-autocomplete/eui-components-eui-autocomplete.ts"],"sourcesContent":["import { Component, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\n\n/**\n * @description\n * Component used internally by `eui-autocomplete` with the option `groupBy`. It allows to display the options in groups.\n */\n@Component({\n    selector: 'eui-autocomplete-option-group',\n    template: '<ng-content/>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n})\nexport class EuiAutocompleteOptionGroupComponent {\n    /**\n     * ARIA role for the host element to ensure proper accessibility.\n     * @default 'optgroup'\n     */\n    @HostBinding('attr.role') role = 'optgroup';\n\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-autocomplete-option-group'].join(' ').trim();\n    }\n\n    /**\n     * Sets the label of the group.\n     */\n    @Input() label: string;\n\n}\n","import { Component, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Input, booleanAttribute, inject } from '@angular/core';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\n/**\n * @description\n * Component used internally by `eui-autocomplete` to display the options in the panel.\n */\n@Component({\n    selector: 'eui-autocomplete-option',\n    template: '<ng-content/>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiVariant',\n            ],\n        },\n    ],\n})\nexport class EuiAutocompleteOptionComponent {\n    /**\n     * ARIA role for the host element to ensure proper accessibility.\n     * @default 'option'\n     */\n    @HostBinding('attr.role') role = 'option';\n\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 [\n            this.baseStatesDirective.getCssClasses('eui-autocomplete-option'),\n            this.isActive ? 'eui-autocomplete-option--active' : '',\n            this.isDisabled ? 'eui-autocomplete-option--disabled' : '',\n            this.isGroupItem ? 'eui-autocomplete-option--group-item' : '',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Whether the option is active in the panel.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isActive = false;\n    /**\n     * Whether the option is disabled in the panel.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isDisabled = false;\n    /**\n     * Whether the option is displayed inside a group.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isGroupItem = false;\n    private baseStatesDirective = inject(BaseStatesDirective);\n}\n","import { animate, AnimationTriggerMetadata, group, state, style, transition, trigger } from '@angular/animations';\n\nexport const panelAnimation: AnimationTriggerMetadata = trigger('panelAnimation', [\n    state(\n        'void, hidden',\n        style({\n            opacity: 0,\n            transform: 'scaleY(0.8)',\n        }),\n    ),\n    transition(':enter, hidden => visible', [\n        group([\n            animate('0.03s linear', style({ opacity: 1 })),\n            animate('0.12s cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'scaleY(1)' })),\n        ]),\n    ]),\n    transition(':leave, visible => hidden', [animate('0.05s linear', style({ opacity: 0 }))]),\n]);\n","import {\n    Component,\n    ChangeDetectionStrategy,\n    ViewEncapsulation,\n    OnInit,\n    OnDestroy,\n    OnChanges,\n    SimpleChanges,\n    HostBinding,\n    AfterViewInit,\n    ViewContainerRef,\n    ViewChild,\n    TemplateRef,\n    ElementRef,\n    Input,\n    EventEmitter,\n    Output,\n    ChangeDetectorRef,\n    ContentChildren,\n    QueryList,\n    booleanAttribute,\n    numberAttribute,\n    inject,\n    PLATFORM_ID,\n    DoCheck,\n} from '@angular/core';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { BehaviorSubject, Subject, Subscription, filter, fromEvent, takeUntil } from 'rxjs';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n    ConnectionPositionPair,\n    FlexibleConnectedPositionStrategyOrigin,\n    Overlay,\n    OverlayModule,\n    OverlayRef,\n    PositionStrategy,\n    RepositionScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { CdkScrollable, CdkVirtualScrollViewport, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';\nimport { A11yModule, LiveAnnouncer } from '@angular/cdk/a11y';\n\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_CHIP_LIST, EuiChipDragDrop } from '@eui/components/eui-chip-list';\nimport { EUI_CHIP, EuiChip, EuiChipTooltip } from '@eui/components/eui-chip';\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\nimport { EuiAutoCompleteItem } from './models/eui-autocomplete-item.model';\nimport { panelAnimation } from './animations/animations';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EuiAutocompleteOptionComponent } from './eui-autocomplete-option/eui-autocomplete-option.component';\nimport {\n    EuiAutocompleteOptionGroupComponent,\n} from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\n\n/**\n * @description\n * `eui-autocomplete` is a text input showing some suggestions when the user types letters. It can be enhanced with chips to allow user to select multiple values.\n *\n */\n@Component({\n    templateUrl: './eui-autocomplete.component.html',\n    selector: 'eui-autocomplete, input[euiAutocomplete]',\n    styleUrls: ['./styles/_index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        NgTemplateOutlet,\n        AsyncPipe,\n        ReactiveFormsModule,\n        OverlayModule,\n        ScrollingModule,\n        A11yModule,\n        EuiAutocompleteOptionComponent,\n        EuiAutocompleteOptionGroupComponent,\n        ...EUI_INPUT_TEXT,\n        ...EUI_CHIP_LIST,\n        ...EUI_CHIP,\n        ...EUI_ICON,\n    ],\n    animations: [panelAnimation],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiSecondary',\n                'euiSuccess',\n                'euiInfo',\n                'euiWarning',\n                'euiDanger',\n                'euiAccent',\n            ],\n        },\n    ],\n})\nexport class EuiAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor, OnChanges, AfterViewInit, DoCheck {\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    public get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-autocomplete'),\n            'eui-autocomplete--chips-position-' + this.chipsPosition,\n        ]\n            .join(' ')\n            .trim();\n    }\n    /**\n     * Sets the id on the text input.\n     */\n    @Input() inputId: string;\n    /**\n     * Datas to be used in the autocomplete.\n     */\n    @Input() autocompleteData: EuiAutoCompleteItem[] = [];\n    /**\n     * Sets the maximum number of options that will be visible in the autocomplete panel.\n     *\n     * @default 5\n     */\n    @Input() visibleOptions = 5;\n    /**\n     * Sets the way the options should be retrieved.\n     *\n     * @default 'contains'\n     */\n    @Input() matching: 'startWith' | 'contains' = 'contains';\n    /**\n     * Sets the placeholder of the text input.\n     */\n    @Input() placeholder = '';\n    /**\n     * Sets the options that will be selected by default.\n     */\n    @Input() autocompleteDataSelected: EuiAutoCompleteItem[] = [];\n    /**\n     * Sets the sort criteria of the chips.\n     *\n     * @type {('ASC' | 'DESC')}\n     * @default 'ASC'\n     */\n    @Input() chipsSortOrder: 'ASC' | 'DESC' = 'ASC';\n    /**\n     * In combination with `isChipsSorted`. Sets the sort criteria of the options in the panel.\n     *\n     * @type {('ASC' | 'DESC')}\n     * @default 'ASC'\n     */\n    @Input() itemsSortOrder: 'ASC' | 'DESC' = 'ASC';\n    /**\n     * In Combination with `isItemsSorted`. Sets the position of the chips relative to the text input.\n     *\n     * @type {('top' | 'bottom' | 'inside')}\n     * @default 'top''\n     */\n    @Input() chipsPosition: 'top' | 'bottom' | 'inside' = 'top';\n    /**\n     * Sets a grouping among the options.\n     */\n    @Input() groupBy: string;\n    /**\n     * In combination with `maxVisibleChipsCount`, sets the label of the 'more label' button, if not provided an arrow right icon will be displayed only.\n     */\n    @Input() toggleLinkMoreLabel: string = null;\n    /**\n     * In combination with `maxVisibleChipsCount`, sets the label of the 'less label' button, if not provided an arrow left icon will be displayed only.\n     */\n    @Input() toggleLinkLessLabel: string = null;\n    /**\n     * Sets a CSS class to be added on the options panel container.\n     */\n    @Input() classList: string = null;\n    /**\n     * Sets the width of the options panel.\n     *\n     * @type {(string | number)}\n     */\n    @Input() panelWidth: string | number;\n    /**\n     * In combination with `isChipsDragAndDrop`, sets the name to the chips source.\n     */\n    @Input() dragAndDropSourceName: string;\n    /**\n     * In combination with `isChipsDragAndDrop`, sets the name to the chips source with which a drag and drop will be done.\n     */\n    @Input() dragAndDropConnectedTo: string[] = [];\n\n    /**\n     * In combination with `hasChips`. Whether the user can add a value, which is not part of the options, to craete a chip.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isFreeValueAllowed = true;\n    /**\n     * Whether autocomplete is in readonly mode.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isReadonly = false;\n    /**\n     * Whether loading spinner is displayed in text input.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isLoading = false;\n    /**\n     * Whether autocomplete will display the selected values with chips.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasChips = false;\n    /**\n     * Whether autocomplete will get the data asynchronously.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isAsync = false;\n    /**\n     * Whether this chip is sorted on their label.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChipsSorted = false;\n    /**\n     * Whether this item in the panel is sorted on their label.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isItemsSorted = false;\n    /**\n     * Whether the chip can be removed from the selection.\n     * When a chip is removed, its value goes back in the panel.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isChipsRemovable = true;\n    /**\n     * Whether the chips can have multiple times the same value.\n     * With this option, the value is not removed from the panel when choosen.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isDuplicateValueAllowed = false;\n    /**\n     * In combination with `hasChips`. Whether the chip is added when the text input is blurred.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isAddOnBlur  = false;\n    /**\n     * In combination with `hasChips` and `isFreeValueAllowed=false`. Whether the text input is empty after blurring when no value has been selected in the panel.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isForceSelection = false;\n    /**\n     * Whether a limited amount, defined by this option, is used to display the chips.\n     */\n    @Input({ transform: numberAttribute }) maxVisibleChipsCount = null;\n    /**\n     * Whether the chips label length is limited by the value of this option.\n     */\n    @Input({ transform: numberAttribute }) chipsLabelTruncateCount = null;\n    /**\n     * In combination with `maxVisibleChipsCount`. Whether all chips are shown by default.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isMaxVisibleChipsOpened = false;\n    /**\n     * Whether the chips can be drag and dropped.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChipsDragAndDrop = false;\n\n    public autocompleteOptions = new BehaviorSubject<EuiAutoCompleteItem[]>(this.autocompleteData);\n    public selectedOptionIndex = 0;\n    public autocompleteControl = new FormControl<string>('');\n    public isDisabled = false;\n    public chips: EuiChip[] = [];\n    public distinctOptionGroups: string[];\n    public groupedOptions = new BehaviorSubject<{ [id: string]: { options: EuiAutoCompleteItem[], ancestorLength: number } }>({});\n    public globalOptionIndex = 0;\n    public itemSize = 40;\n    public autocompleteOptionTemplate: TemplateRef<{ $implicit: EuiAutoCompleteItem }>;\n    public autocompleteOptGroupTemplate: TemplateRef<{ $implicit: { label: string } }>;\n\n    @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n    @ViewChild('templatePortalContent') templatePortalContent: TemplateRef<ElementRef>;\n    @ViewChild('inputContainerRef') inputContainerRef: ElementRef;\n    @ViewChild('virtualScrolling') virtualScrolling: CdkVirtualScrollViewport;\n    @ViewChild('input', { read: ElementRef }) input: ElementRef;\n\n    /**\n     * Event emitted when the panel is closed.\n     */\n    @Output() panelClose = new EventEmitter();\n    /**\n     * Event emitted when the panel is opened.\n     */\n    @Output() panelOpen = new EventEmitter();\n    /**\n     * Event emitted when the text input gets the focus.\n     */\n    @Output() inputFocus = new EventEmitter();\n    /**\n     * Event emitted when the text input is blurred.\n     */\n    @Output() inputBlur = new EventEmitter();\n    /**\n     * Event emitted when the text input is cleared.\n     */\n    @Output() clear = new EventEmitter();\n    /**\n     * Event emitted when an option is selected or when the selection is modified.\n     */\n    @Output() selectionChange = new EventEmitter<EuiAutoCompleteItem[]>();\n    /**\n     * Event emitted when an option is selected.\n     */\n    @Output() itemAdd = new EventEmitter<EuiAutoCompleteItem>();\n    /**\n     * Event emitted when an option is removed.\n     */\n    @Output() itemRemove = new EventEmitter<EuiAutoCompleteItem>();\n    /**\n     * Event emitted when the value of the text input changes.\n     */\n    @Output() inputChange = new EventEmitter<string>();\n    /**\n     * Event emitted when a chip drag starts.\n     */\n    @Output() chipDragStart = new EventEmitter<EuiChipDragDrop>();\n    /**\n     * Event emitted when a chip drag is released.\n     */\n    @Output() chipDragRelease = new EventEmitter<EuiChipDragDrop>();\n    /**\n     * Event emitted when a chip is dropped.\n     */\n    @Output() chipDrop = new EventEmitter<EuiChipDragDrop>();\n\n    protected hasAriaRequiredAttribute: boolean;\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private overlayRef: OverlayRef;\n    private isOpen$ = new BehaviorSubject<boolean>(false);\n    private templatePortal: TemplatePortal<unknown>;\n    private keyboardOptionSelectorHandlerSubscription = new Subscription();\n    private addOnBlurClickHandlerSubscription = new Subscription();\n    private isForceSelectionSubscription = new Subscription();\n    private keyboardSubscription = new Subscription();\n    private autocompleteOptionsSubscription = new Subscription();\n    private scrollDispatcherSubscription = new Subscription();\n    private windowResizeSubscription = new Subscription();\n    private value: EuiAutoCompleteItem | EuiAutoCompleteItem[] = null;\n    private TOP = new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, 0, [\n        'eui-autocomplete-position',\n        'eui-autocomplete-position--top',\n    ]);\n    private BOTTOM = new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 0, [\n        'eui-autocomplete-position',\n        'eui-autocomplete-position--bottom',\n    ]);\n    private preferredPositons: ConnectionPositionPair[] = [this.BOTTOM, this.TOP];\n    private overlay = inject(Overlay);\n    private cd = inject(ChangeDetectorRef);\n    private viewContainerRef = inject(ViewContainerRef);\n    private elementRef = inject(ElementRef);\n    private liveAnnouncer = inject(LiveAnnouncer);\n    private scrollDispatcher = inject(ScrollDispatcher);\n    private euiAppShellService = inject(EuiAppShellService);\n    private baseStatesDirective = inject(BaseStatesDirective);\n    private control = inject(NgControl, { self: true, optional: true })!;\n    private platformId = inject(PLATFORM_ID);\n\n    constructor() {\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n    }\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c && c.autocompleteData) {\n            this.setOptions('', this.isItemsSorted);\n        }\n\n        if (c && c.autocompleteDataSelected && this.hasChips) {\n            this.autocompleteDataSelected = c.autocompleteDataSelected.currentValue.map((s: EuiAutoCompleteItem) => ({ ...s, euiInternalId: crypto.randomUUID() }));\n            this.chips = this.mapToChip(this.autocompleteDataSelected);\n            this.setOptions('', this.isItemsSorted);\n        }\n    }\n\n    ngOnInit(): void {\n        this.euiAppShellService.state$.pipe(takeUntil(this.destroy$)).subscribe((state) => {\n            this.itemSize = state.appBaseFontSize === '16px' ? 40 : 35;\n        });\n\n        if (this.control) {\n            this.updateInputAriaRequiredAttribute(this.control);\n            this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n                this.updateInputAriaRequiredAttribute(this.control);\n            });\n        }\n\n        this.autocompleteControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value: string) => {\n            this.selectedOptionIndex = 0;\n            if (!this.isOpen) {\n                this.openPanel();\n            }\n\n            this.setOptions(value, this.isItemsSorted);\n\n            if (this.hasChips) {\n                if (!value) {\n                    this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);\n                }\n            } else {\n                if (typeof value === 'string') {\n                    const foundItem = this.autocompleteData.find((d) => d.label.toLowerCase().trim() === value.toLowerCase().trim());\n\n                    if (foundItem) {\n                        this.onChange(foundItem);\n                    } else {\n                        // eslint-disable-next-line\n                        value ? this.onChange({ label: value }) : this.onChange(null);\n                    }\n                } else {\n                    this.onChange(value === undefined ? null : value);\n                    if (!value) {\n                        this.setOptions('', this.isItemsSorted);\n                    }\n                }\n            }\n\n            this.inputChange.emit(value as string);\n        });\n\n        if (!this.isAsync) {\n            this.setOptions(Array.isArray(this.value) ? '' : this.value?.label, this.isItemsSorted);\n        }\n    }\n\n    ngDoCheck(): void {\n        if (this.control) {\n            // eslint-disable-next-line\n            this.control.touched ? this.autocompleteControl.markAsTouched() : this.autocompleteControl.markAsUntouched();\n            // eslint-disable-next-line\n            this.control.invalid ? this.autocompleteControl.setErrors(this.control.errors) : this.autocompleteControl.setErrors(null);\n            this.cd.detectChanges();\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);\n\n        this.templates.forEach((item) => {\n            if (item.getType() === 'dropdownOption') {\n                this.autocompleteOptionTemplate = item.template;\n            }\n            if (item.getType() === 'dropdownOptGroup') {\n                this.autocompleteOptGroupTemplate = item.template;\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n        this.keyboardOptionSelectorHandlerSubscription.unsubscribe();\n        this.addOnBlurClickHandlerSubscription.unsubscribe();\n        this.isForceSelectionSubscription.unsubscribe();\n        this.keyboardSubscription.unsubscribe();\n        this.autocompleteOptionsSubscription.unsubscribe();\n        this.windowResizeSubscription.unsubscribe();\n    }\n\n    /**\n     * Calculates the height that the virtual scroll need to have.\n     *\n     * @type {number}\n     */\n    get cdkVirtualScrollViewport(): number {\n        if (this.groupBy) {\n            const filteredOptionGroups: string[] = this.autocompleteOptions.value\n                .map(item => this.groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), item || self))\n                .filter((optionGroup: string) => {\n                    return (\n                        this.autocompleteOptions.value.some(\n                            (option) => this.groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), option || self) === optionGroup,\n                        )\n                    );\n                })\n                .filter((optionGroup: string, index, array: string[]) => array.indexOf(optionGroup) === index);\n\n            if (this.autocompleteOptions.value.length >= this.visibleOptions) {\n                return this.visibleOptions * this.itemSize;\n            } else {\n                const scrollItems = this.autocompleteOptions.value.length + filteredOptionGroups.length;\n                return (scrollItems > this.visibleOptions ? this.visibleOptions : scrollItems) * this.itemSize;\n            }\n        } else {\n            return this.autocompleteOptions.value.length >= this.visibleOptions ?\n                this.visibleOptions * this.itemSize :\n                this.autocompleteOptions.value.length * this.itemSize;\n        }\n    }\n\n    /**\n     * Returns the opening state of the panel.\n     *\n     * @type {boolean}\n     */\n    get isOpen(): boolean {\n        return this.isOpen$.value;\n    }\n\n    /**\n     * Checks if autocomplete options are available.\n     *\n     * @returns {boolean} `true` if options are present, otherwise `false`.\n     */\n    get hasOptionsResult(): boolean {\n        return this.autocompleteOptions.value.length > 0;\n    }\n\n    /**\n     * Method that creates and opens the panel containing autocomplete options.\n     */\n    public openPanel(): void {\n        if (!this.isOpen && !this.isReadonly) {\n            this.scrollDispatcherSubscription = this.scrollDispatcher\n                .ancestorScrolled(this.input)\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((event: CdkScrollable) => {\n                    if(isPlatformBrowser(this.platformId)) {\n                        const scrollableParent = event ? event.getElementRef().nativeElement : document.querySelector('body');\n                        if (!this.isVisible(this.input.nativeElement, scrollableParent)) {\n                            this.closePanel();\n                        }\n                    }\n                });\n\n            this.windowResizeSubscription = fromEvent(window, 'resize')\n                .pipe(takeUntil(this.destroy$))\n                .subscribe(() => {\n                    if (this.overlayRef && this.overlayRef.hasAttached() && !this.panelWidth) {\n                        this.overlayRef.updateSize({\n                            width: this.inputContainerRef.nativeElement.clientWidth,\n                        });\n                    }\n                });\n\n            const positionStrategy = this.getPositionStrategy();\n            const scrollStrategy = this.getScrollStrategy();\n\n            this.overlayRef = this.overlay.create({\n                hasBackdrop: false,\n                positionStrategy,\n                scrollStrategy,\n                disposeOnNavigation: true,\n                width: this.panelWidth ? this.panelWidth : this.inputContainerRef.nativeElement.clientWidth,\n                panelClass: ['eui-autocomplete__panel-container', this.classList],\n            });\n            this.overlayRef.attach(this.templatePortal);\n\n            document.querySelectorAll('.cdk-overlay-container')?.forEach(el => {\n                if (!el.classList.contains('eui-19')) {\n                    el.classList.add('eui-19');\n                }\n            });\n\n            this.overlayRef\n                .outsidePointerEvents()\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((e) => {\n                    const targetElement = e.target as HTMLElement;\n                    const clearElement = this.elementRef.nativeElement.querySelector('.eui-sprite-eui-close');\n                    const isElementOrChildOfElement = (element: HTMLElement, parentElement: HTMLElement): boolean => {\n                        while (element) {\n                            if (element === parentElement) {\n                                return true;\n                            }\n                            element = element.parentElement;\n                        }\n                        return false;\n                    };\n\n                    const isClearableButton = targetElement.classList.contains('eui-sprite-eui-close');\n                    const isInput = targetElement.classList.contains('eui-autocomplete__input');\n\n                    if (!isClearableButton && !isInput && !isElementOrChildOfElement(targetElement, clearElement)) {\n                        this.closePanel();\n                    }\n\n                    if (isClearableButton && !this.elementRef.nativeElement.contains(targetElement)) {\n                        this.closePanel();\n                    }\n\n                    if (isInput && !this.elementRef.nativeElement.contains(targetElement)) {\n                        this.closePanel();\n                    }\n\n                    if ((e.target as HTMLElement).classList.contains('eui-autocomplete__input')) {\n                        e.stopPropagation();\n                    }\n                });\n            this.overlayRef\n                .keydownEvents()\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((keyboardEvent) => {\n                    if (keyboardEvent.key?.toLowerCase() === 'escape') {\n                        this.closePanel();\n                    }\n                });\n\n            this.autocompleteOptionsSubscription = this.autocompleteOptions.subscribe((autocompleteOptions) => {\n                this.overlayRef.removePanelClass('eui-autocomplete__panel-container--no-option');\n                if (autocompleteOptions.length === 0) {\n                    this.selectedOptionIndex = 0;\n                    this.overlayRef.addPanelClass('eui-autocomplete__panel-container--no-option');\n                }\n            });\n\n            const liveAnnouncerSource = this.groupBy ? Object.values(this.groupedOptions.value).flatMap(group => group.options) : this.autocompleteOptions.value;\n\n            this.liveAnnouncer.clear();\n            this.liveAnnouncer.announce(liveAnnouncerSource[0]?.label);\n\n            let visibleRangeStart = 0;\n            let visibleRangeEnd = this.visibleOptions - 1;\n            this.keyboardOptionSelectorHandlerSubscription = fromEvent(this.input.nativeElement, 'keydown')\n                .pipe(\n                    filter((e: KeyboardEvent) => e.code === 'ArrowDown' || e.code === 'ArrowUp' || e.code === 'Enter' || e.code === 'Tab'),\n                    takeUntil(this.destroy$),\n                )\n                .subscribe((e: KeyboardEvent) => {\n                    if (e) {\n                        if (e.code === 'ArrowDown' && this.selectedOptionIndex < this.autocompleteOptions.value.length - 1) {\n                            this.selectedOptionIndex++;\n                            this.cd.detectChanges();\n\n                            const liveAnnouncerSource = this.groupBy ? Object.values(this.groupedOptions.value).flatMap(group => group.options) : this.autocompleteOptions.value;\n\n                            this.liveAnnouncer.clear();\n                            this.liveAnnouncer.announce(liveAnnouncerSource[this.selectedOptionIndex].label);\n\n                            e.preventDefault();\n                        }\n                        if (e.code === 'ArrowUp' && this.selectedOptionIndex > 0) {\n                            this.selectedOptionIndex--;\n                            this.cd.detectChanges();\n\n                            const liveAnnouncerSource = this.groupBy ? Object.values(this.groupedOptions.value).flatMap(group => group.options) : this.autocompleteOptions.value;\n\n                            this.liveAnnouncer.clear();\n                            this.liveAnnouncer.announce(liveAnnouncerSource[this.selectedOptionIndex].label);\n\n                            e.preventDefault();\n                        }\n\n                        const cIndex = this.selectedOptionIndex - this.virtualScrolling?.getRenderedRange().start;\n\n                        if (e.code === 'ArrowDown' && cIndex > visibleRangeEnd - visibleRangeStart - visibleRangeEnd) {\n                            let nbOptionsGroup = 0;\n                            const nbOptions = this.autocompleteOptions.value.length;\n                            if (this.groupBy) {\n                                Object.keys(this.groupedOptions.value).forEach(groupedOption => {\n                                    if (this.groupedOptions.value[groupedOption].options.length > 0 &&\n                                        this.selectedOptionIndex > this.groupedOptions.value[groupedOption].ancestorLength - 1) {\n                                        nbOptionsGroup ++;\n                                    }\n                                });\n                            }\n\n                            if ((this.selectedOptionIndex + nbOptionsGroup) > visibleRangeEnd && visibleRangeEnd <= (nbOptions + nbOptionsGroup)) {\n                                this.virtualScrolling.scrollToIndex((this.selectedOptionIndex + nbOptionsGroup) - visibleRangeEnd + visibleRangeStart);\n                                visibleRangeStart++;\n                                visibleRangeEnd++;\n                            }\n                        }\n                        if (e.code === 'ArrowUp' && cIndex < visibleRangeStart) {\n                            if (this.selectedOptionIndex < visibleRangeStart) {\n                                this.virtualScrolling.scrollToIndex(this.selectedOptionIndex);\n                                visibleRangeStart--;\n                                visibleRangeEnd--;\n                            }\n                        }\n                        if (e.code === 'Enter') {\n                            if (this.hasOptionsResult) {\n                                if (this.groupBy) {\n                                    const options = [].concat(...Object.values(this.groupedOptions.value).map(group => group.options));\n                                    this.onOptionSelected(options[this.selectedOptionIndex]);\n                                } else {\n                                    this.onOptionSelected(this.autocompleteOptions.value[this.selectedOptionIndex]);\n                                }\n                            } else if (this.hasChips && this.isFreeValueAllowed) {\n                                this.add(this.autocompleteControl.value);\n                            }\n                        }\n                        if (e.code === 'Tab') {\n                            if (this.isOpen) {\n                                if (this.isAddOnBlur  && this.hasChips && this.autocompleteControl.value?.trim().length > 0) {\n                                    this.add(this.autocompleteControl.value.trim());\n                                }\n                                if (this.isForceSelection) {\n                                    this.input.nativeElement.value = '';\n                                    this.autocompleteControl.setValue(null, { emitEvent: false });\n                                    this.setOptions('', this.isItemsSorted);\n                                }\n                                this.closePanel();\n                            }\n                        }\n                    }\n                });\n\n            this.addOnBlurClickHandlerSubscription.unsubscribe();\n            if (this.isAddOnBlur ) {\n                this.addOnBlurClickHandlerSubscription = fromEvent(document, 'click').pipe(takeUntil(this.destroy$)).subscribe((event: PointerEvent) => {\n                    if (!(event.target as HTMLElement).classList.contains('eui-autocomplete-option') && this.hasChips && this.autocompleteControl.value?.trim().length > 0) {\n                        this.add(this.autocompleteControl.value.trim());\n                    }\n                });\n            }\n\n            this.isForceSelectionSubscription.unsubscribe();\n            if (this.isForceSelection) {\n                this.isForceSelectionSubscription = fromEvent(document, 'click').pipe(takeUntil(this.destroy$)).subscribe((event: PointerEvent) => {\n                    if (!(event.target as HTMLElement).classList.contains('eui-autocomplete-option')) {\n                        this.input.nativeElement.value = '';\n                        this.autocompleteControl.setValue(null, { emitEvent: false });\n                        this.setOptions('', this.isItemsSorted);\n                    }\n                });\n            }\n\n            this.isOpen$.next(true);\n            this.panelOpen.emit();\n        }\n    }\n\n    /**\n     * Closes the autocomplete panel.\n     */\n    public closePanel(): void {\n        this.selectedOptionIndex = 0;\n        this.overlayRef.dispose();\n        this.overlayRef = null;\n        this.isOpen$.next(false);\n        this.cd.detectChanges();\n        this.keyboardOptionSelectorHandlerSubscription.unsubscribe();\n        this.autocompleteOptionsSubscription.unsubscribe();\n        this.scrollDispatcherSubscription.unsubscribe();\n        this.windowResizeSubscription.unsubscribe();\n        this.panelClose.emit();\n    }\n\n    /**\n     * Method called when an option is selected.\n     *\n     * @param e Selected option\n     */\n    public onOptionSelected(e: EuiAutoCompleteItem): void {\n        if (!e.isDisabled) {\n            if (this.hasChips) {\n                this.autocompleteDataSelected.push({ ...e, euiInternalId: crypto.randomUUID() });\n                this.chips = this.mapToChip(this.autocompleteDataSelected);\n                this.input.nativeElement.value = '';\n                this.autocompleteControl.setValue(null);\n                this.setOptions('', this.isItemsSorted);\n            } else {\n                this.autocompleteDataSelected = [e];\n                this.input.nativeElement.value = e.label;\n                this.autocompleteControl.setValue(e.label);\n            }\n\n            this.addOnBlurClickHandlerSubscription.unsubscribe();\n            this.isForceSelectionSubscription.unsubscribe();\n\n            this.selectionChange.emit(this.autocompleteDataSelected);\n            this.itemAdd.emit(e);\n            this.closePanel();\n        }\n    }\n\n    /**\n     * Method called when an option is added through the text input.\n     *\n     * @param value Value to add\n     */\n    public add(value: string): void {\n        if (!value || (!this.isFreeValueAllowed && !this.autocompleteData.find(a => a.label === value.trim()))) {\n            return;\n        }\n\n        if (!this.isDuplicateValueAllowed && this.autocompleteDataSelected.some(s => s.label.trim() === value.trim())) {\n            return;\n        }\n\n        const item = this.autocompleteData.find(a => a.label === value.trim()) || { label: value.trim(), euiInternalId: crypto.randomUUID() };\n\n        this.autocompleteDataSelected.push(item);\n        this.chips = this.mapToChip(this.autocompleteDataSelected);\n        this.input.nativeElement.value = '';\n        this.autocompleteControl.setValue(null);\n        this.closePanel();\n\n        this.addOnBlurClickHandlerSubscription.unsubscribe();\n        this.isForceSelectionSubscription.unsubscribe();\n\n        this.selectionChange.emit(this.autocompleteDataSelected);\n        this.itemAdd.emit(item);\n    }\n\n    public optionsTrackByFn(index: number, item: EuiAutoCompleteItem): string | number {\n        return item.id;\n    }\n\n    public writeValue(value: EuiAutoCompleteItem | EuiAutoCompleteItem[]): void {\n        this.value = value;\n\n        if (this.hasChips) {\n            this.autocompleteDataSelected = value ? ([...value as EuiAutoCompleteItem[]]) : [];\n            this.chips = this.mapToChip(this.autocompleteDataSelected);\n            this.autocompleteControl.patchValue(null, { emitEvent: false });\n            this.setOptions('', this.isItemsSorted);\n        } else {\n            this.autocompleteControl.patchValue(value ? (value as EuiAutoCompleteItem).label : null, { emitEvent: false });\n            const inputValue = value ? (value as EuiAutoCompleteItem).label : null;\n            this.setOptions(inputValue, this.isItemsSorted);\n        }\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        // eslint-disable-next-line\n        this.isDisabled = isDisabled;\n        // eslint-disable-next-line\n        isDisabled ? this.autocompleteControl.disable() : this.autocompleteControl.enable();\n\n        if (this.isOpen) {\n            this.closePanel();\n        }\n\n        this.cd.detectChanges();\n    }\n\n    public registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouch = fn;\n    }\n\n    public onClear(): void {\n        this.clear.emit();\n    }\n\n    /**\n     * Text input focus handler.\n     */\n    public onFocus(): void {\n        this.keyboardSubscription = fromEvent(this.input.nativeElement, 'keydown')\n            .pipe(\n                filter((event: KeyboardEvent) =>\n                    /^[a-zA-Z0-9]$/.test(event.key) ||\n                    event.key === 'Space' ||\n                    event.key === 'ArrowDown' ||\n                    event.key === 'Backspace',\n                    ),\n                )\n            .subscribe((event: KeyboardEvent) => {\n                if (!this.isOpen) {\n                    this.openPanel();\n                    event.stopPropagation();\n                }\n\n                if (this.chipsPosition === 'inside' && event.key === 'Backspace' && (!this.autocompleteControl.value || this.autocompleteControl.value.length === 0)) {\n                    const removed = this.chips.pop();\n                    this.onChipRemove({ chips: [...this.chips], removed });\n\n                    this.cd.detectChanges();\n\n                    this.overlayRef.updateSize({ width: this.inputContainerRef.nativeElement.clientWidth });\n                    this.overlayRef.updatePosition();\n                }\n            });\n\n        if (!this.isOpen) {\n            this.openPanel();\n        }\n\n        this.inputFocus.emit();\n    }\n\n    /**\n     * Text input blur handler.\n     */\n    public onBlur(): void {\n        this.keyboardSubscription.unsubscribe();\n        this.inputBlur.emit();\n        this.onTouch();\n    }\n\n    /**\n     * Called when a chip is removed.\n     *\n     * @param e Object containing the chip to remove.\n     */\n    public onChipRemove(e: { chips: EuiChip[]; removed: EuiChip | { chip: EuiChip; event: Event } }): void {\n        const event = e as { chips: EuiChip[]; removed: EuiChip };\n        const itemRemoved = this.autocompleteDataSelected.find(i => i.id === event.removed.id);\n\n        this.autocompleteDataSelected = this.autocompleteDataSelected\n            .filter(i => event.chips.find(c => c.id === i.id))\n            .filter(i => event.chips.find(c => c.euiInternalId === i.euiInternalId));\n        this.chips = this.mapToChip(this.autocompleteDataSelected);\n\n        this.setOptions('', this.isItemsSorted);\n\n        this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);\n        this.selectionChange.emit(this.autocompleteDataSelected);\n        this.itemRemove.emit(itemRemoved);\n    }\n\n    /**\n     * Called when a chip is dropped for reordering or from a source to another.\n     *\n     * @param e Object containing the chip dropped.\n     */\n    public onChipDropped(e: EuiChipDragDrop): void {\n        const data = this.autocompleteData;\n        this.autocompleteDataSelected = e.chips.map(c => data.find((a) => a.id === c.id));\n\n        this.chips = this.mapToChip(this.autocompleteDataSelected);\n        this.autocompleteOptions.next(this.filterOptions(''));\n\n        this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);\n        this.selectionChange.emit(this.autocompleteDataSelected);\n\n        this.chipDrop.emit(e);\n    }\n\n    /**\n     * Called when a chip is dragged for reordering or from a source to another.\n     *\n     * @param e Object containing the chip dragged.\n     */\n    public onChipDragStarted(e: EuiChipDragDrop): void {\n        this.chipDragStart.emit(e);\n    }\n\n    /**\n     * Called when a chip is released for reordering or from a source to another.\n     *\n     * @param e Object containing the chip released.\n     */\n    public onChipDragReleased(e: EuiChipDragDrop): void {\n        this.chipDragRelease.emit(e);\n    }\n\n    /**\n     * Calculates the item size for virtual scrolling.\n     *\n     * @returns a number representing the item size.\n     */\n    private getItemSize(): number {\n        const optionHeight = this.overlayRef?.hostElement?.querySelector('.eui-autocomplete__panel')?.querySelectorAll('.eui-autocomplete-option')[0]?.clientHeight + 1;\n        return optionHeight || 48;\n    }\n\n    /**\n     * Re-order options panel based on the input valuea and sort order.\n     *\n     * @param value Value to filter the options.\n     * @param isItemsSorted If the items are sorted.\n     */\n    private setOptions(value: string, isItemsSorted: boolean): void {\n        this.autocompleteOptions.next(isItemsSorted ? (this.orderArray(this.filterOptions(value), this.itemsSortOrder)) : this.filterOptions(value));\n\n        if (this.groupBy) {\n            const { groupedOptions, distinctOptionGroups } = this.groupingHandler(this.autocompleteOptions.value, this.groupBy);\n\n            this.groupedOptions.next(groupedOptions);\n            this.distinctOptionGroups = distinctOptionGroups;\n        }\n    }\n\n    /**\n     * Return the position strategy for the panel.\n     *\n     * @returns A CDK position strategy.\n     */\n    private getPositionStrategy(): PositionStrategy {\n        return this.overlay\n            .position()\n            .flexibleConnectedTo(this.inputContainerRef.nativeElement as FlexibleConnectedPositionStrategyOrigin)\n            .withPositions(this.preferredPositons)\n            .withFlexibleDimensions(false)\n            .withLockedPosition(true);\n    }\n\n    /**\n     * Return the scroll strategy for the panel.\n     *\n     * @returns A CDK scroll strategy.\n     */\n    private getScrollStrategy(): RepositionScrollStrategy {\n        return this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n    }\n\n    /**\n     * Refine the options based on the input value.\n     *\n     * @param inputValue Value to filter the options.\n     * @returns An array of options.\n     */\n    private filterOptions(inputValue: string): EuiAutoCompleteItem[] {\n        let data: EuiAutoCompleteItem[] = [];\n        if (inputValue) {\n            data = this.autocompleteData.filter((autocompleteItem) => {\n                if (\n                    this.matching === 'contains' &&\n                    autocompleteItem.label.toLowerCase().indexOf(inputValue.toString().toLowerCase()) !== -1\n                ) {\n                    return autocompleteItem;\n                }\n                if (\n                    this.matching === 'startWith' &&\n                    autocompleteItem.label.toLowerCase().substr(0, inputValue.toString().length) === inputValue.toLowerCase()\n                ) {\n                    return autocompleteItem;\n                }\n            });\n        } else {\n            data = this.autocompleteData;\n        }\n\n        if (this.hasChips) {\n            data = data.filter(d => !this.isDuplicateValueAllowed ? !this.autocompleteDataSelected.some(selectedItem => d.id === selectedItem.id) : true);\n        }\n\n        if (this.isItemsSorted) {\n            data = this.orderArray(data, this.itemsSortOrder);\n        }\n\n        return data;\n    }\n\n    /**\n     * Converts EuiAutoCompleteItem array to EuiChip array.\n     *\n     * @param items Array of EuiAutoCompleteItem.\n     * @returns An array of EuiChip\n     */\n    private mapToChip(items: EuiAutoCompleteItem[]): EuiChip[] {\n        const chips = items.map((selected) => {\n            return new EuiChip({\n                id: selected.id,\n                euiInternalId: selected.euiInternalId,\n                label: selected.label,\n                typeClass: selected.typeClass,\n                isOutline: selected.isOutline,\n                isRounded: selected.isRounded,\n                sizeClass: selected.sizeClass,\n                isRemovable: selected.isRemovable,\n                tooltipMessage: selected.tooltip?.tooltipMessage,\n                tooltip: new EuiChipTooltip(selected.tooltip),\n                iconClass: selected.iconClass,\n                iconSvgName: selected.iconSvgName,\n            });\n        });\n\n        return this.isChipsSorted && chips.length > 0 ? (this.orderArray(chips, this.chipsSortOrder) as EuiChip[]) : chips;\n    }\n\n    /**\n     * Sort an array of objects based on their label.\n     *\n     * @param tab Array to order\n     * @param sortOrder Sort order criteria\n     * @returns A sorted array\n     */\n    private orderArray<T extends { label: string; }>(tab: T[], sortOrder: 'ASC' | 'DESC'): T[] {\n        tab.sort((a: T, b: T) => {\n            const aObj = a.label.toLowerCase();\n            const bObj = b.label.toLowerCase();\n\n            if (sortOrder === 'ASC') {\n                if (aObj < bObj) {\n                    return -1;\n                }\n                if (aObj > bObj) {\n                    return 1;\n                }\n                return 0;\n            } else {\n                if (aObj > bObj) {\n                    return -1;\n                }\n                if (aObj < bObj) {\n                    return 1;\n                }\n                return 0;\n            }\n        });\n\n        return tab;\n    }\n\n    /**\n     * Transforms array of EuiAutoCompleteItem into a grouped object.\n     *\n     * @param options Array of EuiAutoCompleteItem\n     * @param groupBy Label of the group\n     * @returns An object containing the grouped options and the distinct option groups.\n     */\n    private groupingHandler(options: EuiAutoCompleteItem[], groupBy: string):\n    { groupedOptions: { [id: string]: { options: EuiAutoCompleteItem[], ancestorLength: number } }, distinctOptionGroups: string[] } {\n        const distinctGroups: string[] = this.autocompleteData.map(item => groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), item || self));\n        const distinctOptionGroups: string[] = [...new Set(distinctGroups)].sort((a: string, b: string) => (a > b ? 1 : -1));\n        const groupedOptions: { [id: string]: { options: EuiAutoCompleteItem[], ancestorLength: number } } = {};\n\n        let ancestorLength = 0;\n        for (const group of distinctOptionGroups) {\n            let o = options.filter(option => groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), option || self) === group);\n            if (this.isItemsSorted) {\n                o = this.orderArray(o, this.itemsSortOrder) as EuiAutoCompleteItem[];\n            }\n\n            groupedOptions[group] = { options: o, ancestorLength };\n            ancestorLength += o.length;\n        }\n\n        return { groupedOptions, distinctOptionGroups };\n    }\n\n    /**\n     * Indicates if the origin element is visible in the scrollable parent.\n     *\n     * @param origin Origin of the autocomplete\n     * @param scrollableParent Scrollable container\n     * @returns A boolean, true if visible else false.\n     */\n    private isVisible(origin: HTMLElement, scrollableParent: HTMLElement): boolean {\n        const originY = origin.getBoundingClientRect().y;\n        const scrollableParentY = Math.abs(scrollableParent.getBoundingClientRect().y);\n        const scrollableParentHeight = scrollableParent.getBoundingClientRect().height - 55;\n\n        return (\n            (originY > 0 && originY < scrollableParentHeight) ||\n            (originY - scrollableParentY > 0 && originY < scrollableParentY + scrollableParentHeight)\n        );\n    }\n\n    private onChange = <T>(change?: T): void => {\n        /** empty */\n    };\n\n    private onTouch = (): void => {\n        /** empty */\n    };\n\n    /**\n     * Updates the `aria-required` attribute on the input element.\n     * @private\n     */\n    private updateInputAriaRequiredAttribute(control: NgControl): void {\n        this.hasAriaRequiredAttribute = control?.control?.hasValidator(Validators.required);\n        this.cd.markForCheck();\n    }\n}\n","<div class=\"eui-autocomplete__wrapper\">\n    @if (chipsPosition === 'bottom') {\n        <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n    }\n    @if (hasChips) {\n        <eui-chip-list\n            [chips]=\"chips\"\n            [isChipsRemovable]=\"isChipsRemovable && !isReadonly\"\n            [maxVisibleChipsCount]=\"maxVisibleChipsCount\"\n            [isMaxVisibleChipsOpened]=\"isMaxVisibleChipsOpened\"\n            [chipsLabelTruncateCount]=\"chipsLabelTruncateCount\"\n            [toggleLinkMoreLabel]=\"toggleLinkMoreLabel\"\n            [toggleLinkLessLabel]=\"toggleLinkLessLabel\"\n            [isChipsDragAndDrop]=\"isChipsDragAndDrop\"\n            [dragAndDropSourceName]=\"dragAndDropSourceName\"\n            [dragAndDropConnectedTo]=\"dragAndDropConnectedTo\"\n            (chipDrop)=\"onChipDropped($event)\"\n            (chipDragStart)=\"onChipDragStarted($event)\"\n            (chipDragRelease)=\"onChipDragReleased($event)\"\n            (chipRemove)=\"onChipRemove($event)\">\n            <euiChipListAppendContent>\n                @if (chipsPosition === 'inside') {\n                    <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n                }\n            </euiChipListAppendContent>\n        </eui-chip-list>\n    }\n    @if (chipsPosition === 'top') {\n        <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n    }\n</div>\n\n<ng-template #control>\n    @if (!hasChips || (hasChips && !isReadonly)) {\n        <div class=\"eui-autocomplete__input-container {{ classList }}\" #inputContainerRef>\n            <input\n                [attr.id]=\"inputId\"\n                #input\n                euiInputText\n                [euiClearable]=\"!isReadonly && !isDisabled\"\n                [euiLoading]=\"isLoading\"\n                [formControl]=\"autocompleteControl\"\n                class=\"eui-autocomplete__input {{ classList }}\"\n                placeholder=\"{{ placeholder }}\"\n                autocomplete=\"off\"\n                [readonly]=\"isReadonly\"\n                (clear)=\"onClear()\"\n                (click)=\"openPanel()\"\n                (focus)=\"onFocus()\"\n                (blur)=\"onBlur()\"\n                [attr.aria-controls]=\"isOpen ? 'eui-autocomplete__panel' : null\"\n                [attr.aria-label]=\"autocompleteControl.value?.length > 0 ? autocompleteControl.value : 'Input field without value'\"\n                [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n                aria-autocomplete=\"both\"\n                aria-haspopup=\"true\" />\n        </div>\n    }\n</ng-template>\n\n<ng-template #templatePortalContent>\n    <div\n        id=\"eui-autocomplete__panel\"\n        class=\"eui-autocomplete__panel\"\n        [@panelAnimation]=\"isOpen ? 'visible' : 'hidden'\"\n        role=\"listbox\"\n        aria-live=\"polite\"\n        aria-label=\"Autocomplete panel\">\n        <cdk-virtual-scroll-viewport\n            #virtualScrolling\n            [itemSize]=\"itemSize\"\n            tabindex=\"0\"\n            minBufferPx=\"500\"\n            maxBufferPx=\"750\"\n            [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n            @if (groupBy) {\n                @for (distinctOptionGroup of distinctOptionGroups; let i = $index; track distinctOptionGroup) {\n                        @if ((groupedOptions | async)[distinctOptionGroup].options.length > 0) {\n                            <eui-autocomplete-option-group [label]=\"distinctOptionGroup\">\n                                <div class=\"eui-autocomplete-option-group__label\">\n                                    @if (autocompleteOptGroupTemplate) {\n                                        <ng-template\n                                            [ngTemplateOutlet]=\"autocompleteOptGroupTemplate\"\n                                            [ngTemplateOutletContext]=\"{ $implicit: { label: distinctOptionGroup } }\">\n                                        </ng-template>\n                                    } @else {\n                                        {{ distinctOptionGroup }}\n                                    }\n                                </div>\n                                <div class=\"eui-autocomplete-option-group__options\">\n                                    @for (autocompleteOption of (groupedOptions | async)[distinctOptionGroup].options; let j = $index; track autocompleteOption.id) {\n                                        <eui-autocomplete-option\n                                            isGroupItem\n                                            [isActive]=\"selectedOptionIndex === (groupedOptions | async)[distinctOptionGroup].ancestorLength + j\"\n                                            [isDisabled]=\"autocompleteOption.isDisabled\"\n                                            [attr.aria-disabled]=\"autocompleteOption.isDisabled\"\n                                            [euiVariant]=\"autocompleteOption.typeClass\"\n                                            (click)=\"onOptionSelected(autocompleteOption)\">\n                                            @if (autocompleteOptionTemplate) {\n                                                <ng-template\n                                                    [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n                                                    [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\">\n                                                </ng-template>\n                                            } @else {\n                                                @if (autocompleteOption.iconClass) {\n                                                    <span class=\"{{ autocompleteOption.iconClass }}\"></span>\n                                                } @else if (autocompleteOption.iconSvgName) {\n                                                    <eui-icon-svg icon=\"{{ autocompleteOption.iconSvgName }}\"></eui-icon-svg>\n                                                }\n                                                {{ autocompleteOption.label }}\n                                            }\n                                        </eui-autocomplete-option>\n                                    }\n                                </div>\n                            </eui-autocomplete-option-group>\n                        }\n                }\n            } @else {\n                <eui-autocomplete-option\n                    *cdkVirtualFor=\"let autocompleteOption of autocompleteOptions | async; let i = index; trackBy: optionsTrackByFn\"\n                    [isActive]=\"selectedOptionIndex === i\"\n                    [isDisabled]=\"autocompleteOption.isDisabled\"\n                    [attr.aria-disabled]=\"autocompleteOption.isDisabled\"\n                    [euiVariant]=\"autocompleteOption.typeClass\"\n                    (click)=\"onOptionSelected(autocompleteOption)\">\n                    @if (autocompleteOptionTemplate) {\n                        <ng-template\n                            [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n                            [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\">\n                        </ng-template>\n                    } @else {\n                        @if (autocompleteOption.iconClass) {\n                            <span class=\"{{ autocompleteOption.iconClass }}\"></span>\n                        } @else if (autocompleteOption.iconSvgName) {\n                            <eui-icon-svg icon=\"{{ autocompleteOption.iconSvgName }}\"></eui-icon-svg>\n                        }\n                        {{ autocompleteOption.label }}\n                    }\n                </eui-autocomplete-option>\n            }\n        </cdk-virtual-scroll-viewport>\n    </div>\n</ng-template>\n","import { AbstractControl } from '@angular/forms';\n\nimport { EuiAutoCompleteItem } from '../models/eui-autocomplete-item.model';\n\n/**\n * @description\n * Validator checking if the user choose the value in the panel.\n *\n * @returns A validator function that returns an error with the `isInData` to false and a list of invalid values if the validation\n * check fails, otherwise `null`.\n */\nexport const euiAutocompleteForceSelectionFromData = (control: AbstractControl<EuiAutoCompleteItem | EuiAutoCompleteItem[]>):\n    { isInData: { isInData: boolean; invalidValues: EuiAutoCompleteItem | EuiAutoCompleteItem[] } } | null => {\n    if (control.value) {\n        const isInData = Array.isArray(control.value) ? control.value.every(obj => 'id' in obj) : control.value.id !== undefined;\n        const invalidValues = Array.isArray(control.value) ? control.value.filter(v => v.id === undefined) : control.value;\n\n        return !isInData ? { isInData: { isInData, invalidValues } } : null;\n    }\n\n    return null;\n};\n","import { NgModule } from '@angular/core';\n\nimport { EuiAutocompleteComponent } from './eui-autocomplete.component';\nimport { EuiAutocompleteOptionComponent } from './eui-autocomplete-option/eui-autocomplete-option.component';\nimport { EuiAutocompleteOptionGroupComponent } from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\n\n/**\n * @description\n * Module that provides the EuiAutocomplete component and its dependencies\n *\n * @deprecated Use {@link EUI_AUTOCOMPLETE} instead.\n */\n@NgModule({\n    imports: [\n        EuiAutocompleteComponent,\n        EuiAutocompleteOptionComponent,\n        EuiAutocompleteOptionGroupComponent,\n    ],\n    exports: [EuiAutocompleteComponent],\n})\nexport class EuiAutocompleteModule {}\n","import { EuiAutocompleteOptionGroupComponent } from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\nimport { EuiAutocompleteOptionComponent } from './eui-autocomplete-option/eui-autocomplete-option.component';\nimport { EuiAutocompleteComponent } from './eui-autocomplete.component';\n\nexport * from './models/eui-autocomplete-item.model';\nexport * from './validators/force-selection-from-data.validator';\nexport * from './eui-autocomplete-option/eui-autocomplete-option.component';\nexport * from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\nexport * from './eui-autocomplete.component';\nexport * from './eui-autocomplete.module';\n\nexport const EUI_AUTOCOMPLETE = [\n        EuiAutocompleteComponent,\n        EuiAutocompleteOptionComponent,\n        EuiAutocompleteOptionGroupComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
         | 
| 1 | 
            +
            {"version":3,"file":"eui-components-eui-autocomplete.mjs","sources":["../../eui-autocomplete/eui-autocomplete-option-group/eui-autocomplete-option-group.component.ts","../../eui-autocomplete/eui-autocomplete-option/eui-autocomplete-option.component.ts","../../eui-autocomplete/animations/animations.ts","../../eui-autocomplete/eui-autocomplete.component.ts","../../eui-autocomplete/eui-autocomplete.component.html","../../eui-autocomplete/validators/force-selection-from-data.validator.ts","../../eui-autocomplete/eui-autocomplete.module.ts","../../eui-autocomplete/index.ts","../../eui-autocomplete/eui-components-eui-autocomplete.ts"],"sourcesContent":["import { Component, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\n\n/**\n * @description\n * Component used internally by `eui-autocomplete` with the option `groupBy`. It allows to display the options in groups.\n */\n@Component({\n    selector: 'eui-autocomplete-option-group',\n    template: '<ng-content/>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n})\nexport class EuiAutocompleteOptionGroupComponent {\n    /**\n     * ARIA role for the host element to ensure proper accessibility.\n     * @default 'optgroup'\n     */\n    @HostBinding('attr.role') role = 'optgroup';\n\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-autocomplete-option-group'].join(' ').trim();\n    }\n\n    /**\n     * Sets the label of the group.\n     */\n    @Input() label: string;\n\n}\n","import { Component, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Input, booleanAttribute, inject } from '@angular/core';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\n/**\n * @description\n * Component used internally by `eui-autocomplete` to display the options in the panel.\n */\n@Component({\n    selector: 'eui-autocomplete-option',\n    template: '<ng-content/>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiVariant',\n            ],\n        },\n    ],\n})\nexport class EuiAutocompleteOptionComponent {\n    /**\n     * ARIA role for the host element to ensure proper accessibility.\n     * @default 'option'\n     */\n    @HostBinding('attr.role') role = 'option';\n\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 [\n            this.baseStatesDirective.getCssClasses('eui-autocomplete-option'),\n            this.isActive ? 'eui-autocomplete-option--active' : '',\n            this.isDisabled ? 'eui-autocomplete-option--disabled' : '',\n            this.isGroupItem ? 'eui-autocomplete-option--group-item' : '',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Whether the option is active in the panel.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isActive = false;\n    /**\n     * Whether the option is disabled in the panel.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isDisabled = false;\n    /**\n     * Whether the option is displayed inside a group.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isGroupItem = false;\n    private baseStatesDirective = inject(BaseStatesDirective);\n}\n","import { animate, AnimationTriggerMetadata, group, state, style, transition, trigger } from '@angular/animations';\n\nexport const panelAnimation: AnimationTriggerMetadata = trigger('panelAnimation', [\n    state(\n        'void, hidden',\n        style({\n            opacity: 0,\n            transform: 'scaleY(0.8)',\n        }),\n    ),\n    transition(':enter, hidden => visible', [\n        group([\n            animate('0.03s linear', style({ opacity: 1 })),\n            animate('0.12s cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'scaleY(1)' })),\n        ]),\n    ]),\n    transition(':leave, visible => hidden', [animate('0.05s linear', style({ opacity: 0 }))]),\n]);\n","import {\n    Component,\n    ChangeDetectionStrategy,\n    ViewEncapsulation,\n    OnInit,\n    OnDestroy,\n    OnChanges,\n    SimpleChanges,\n    HostBinding,\n    AfterViewInit,\n    ViewContainerRef,\n    ViewChild,\n    TemplateRef,\n    ElementRef,\n    Input,\n    EventEmitter,\n    Output,\n    ChangeDetectorRef,\n    ContentChildren,\n    QueryList,\n    booleanAttribute,\n    numberAttribute,\n    inject,\n    PLATFORM_ID,\n    DoCheck,\n} from '@angular/core';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { BehaviorSubject, Subject, Subscription, filter, fromEvent, takeUntil } from 'rxjs';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n    ConnectionPositionPair,\n    FlexibleConnectedPositionStrategyOrigin,\n    Overlay,\n    OverlayModule,\n    OverlayRef,\n    PositionStrategy,\n    RepositionScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { CdkScrollable, CdkVirtualScrollViewport, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';\nimport { A11yModule, LiveAnnouncer } from '@angular/cdk/a11y';\n\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_CHIP_LIST, EuiChipDragDrop } from '@eui/components/eui-chip-list';\nimport { EUI_CHIP, EuiChip, EuiChipTooltip } from '@eui/components/eui-chip';\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\nimport { EuiAutoCompleteItem } from './models/eui-autocomplete-item.model';\nimport { panelAnimation } from './animations/animations';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EuiAutocompleteOptionComponent } from './eui-autocomplete-option/eui-autocomplete-option.component';\nimport {\n    EuiAutocompleteOptionGroupComponent,\n} from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\n\n/**\n * @description\n * `eui-autocomplete` is a text input showing some suggestions when the user types letters. It can be enhanced with chips to allow user to select multiple values.\n *\n */\n@Component({\n    templateUrl: './eui-autocomplete.component.html',\n    selector: 'eui-autocomplete, input[euiAutocomplete]',\n    styleUrl: './eui-autocomplete.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        NgTemplateOutlet,\n        AsyncPipe,\n        ReactiveFormsModule,\n        OverlayModule,\n        ScrollingModule,\n        A11yModule,\n        EuiAutocompleteOptionComponent,\n        EuiAutocompleteOptionGroupComponent,\n        ...EUI_INPUT_TEXT,\n        ...EUI_CHIP_LIST,\n        ...EUI_CHIP,\n        ...EUI_ICON,\n    ],\n    animations: [panelAnimation],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiSecondary',\n                'euiSuccess',\n                'euiInfo',\n                'euiWarning',\n                'euiDanger',\n                'euiAccent',\n            ],\n        },\n    ],\n})\nexport class EuiAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor, OnChanges, AfterViewInit, DoCheck {\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    public get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-autocomplete'),\n            'eui-autocomplete--chips-position-' + this.chipsPosition,\n        ]\n            .join(' ')\n            .trim();\n    }\n    /**\n     * Sets the id on the text input.\n     */\n    @Input() inputId: string;\n    /**\n     * Datas to be used in the autocomplete.\n     */\n    @Input() autocompleteData: EuiAutoCompleteItem[] = [];\n    /**\n     * Sets the maximum number of options that will be visible in the autocomplete panel.\n     *\n     * @default 5\n     */\n    @Input() visibleOptions = 5;\n    /**\n     * Sets the way the options should be retrieved.\n     *\n     * @default 'contains'\n     */\n    @Input() matching: 'startWith' | 'contains' = 'contains';\n    /**\n     * Sets the placeholder of the text input.\n     */\n    @Input() placeholder = '';\n    /**\n     * Sets the options that will be selected by default.\n     */\n    @Input() autocompleteDataSelected: EuiAutoCompleteItem[] = [];\n    /**\n     * Sets the sort criteria of the chips.\n     *\n     * @type {('ASC' | 'DESC')}\n     * @default 'ASC'\n     */\n    @Input() chipsSortOrder: 'ASC' | 'DESC' = 'ASC';\n    /**\n     * In combination with `isChipsSorted`. Sets the sort criteria of the options in the panel.\n     *\n     * @type {('ASC' | 'DESC')}\n     * @default 'ASC'\n     */\n    @Input() itemsSortOrder: 'ASC' | 'DESC' = 'ASC';\n    /**\n     * In Combination with `isItemsSorted`. Sets the position of the chips relative to the text input.\n     *\n     * @type {('top' | 'bottom' | 'inside')}\n     * @default 'top''\n     */\n    @Input() chipsPosition: 'top' | 'bottom' | 'inside' = 'top';\n    /**\n     * Sets a grouping among the options.\n     */\n    @Input() groupBy: string;\n    /**\n     * In combination with `maxVisibleChipsCount`, sets the label of the 'more label' button, if not provided an arrow right icon will be displayed only.\n     */\n    @Input() toggleLinkMoreLabel: string = null;\n    /**\n     * In combination with `maxVisibleChipsCount`, sets the label of the 'less label' button, if not provided an arrow left icon will be displayed only.\n     */\n    @Input() toggleLinkLessLabel: string = null;\n    /**\n     * Sets a CSS class to be added on the options panel container.\n     */\n    @Input() classList: string = null;\n    /**\n     * Sets the width of the options panel.\n     *\n     * @type {(string | number)}\n     */\n    @Input() panelWidth: string | number;\n    /**\n     * In combination with `isChipsDragAndDrop`, sets the name to the chips source.\n     */\n    @Input() dragAndDropSourceName: string;\n    /**\n     * In combination with `isChipsDragAndDrop`, sets the name to the chips source with which a drag and drop will be done.\n     */\n    @Input() dragAndDropConnectedTo: string[] = [];\n\n    /**\n     * In combination with `hasChips`. Whether the user can add a value, which is not part of the options, to craete a chip.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isFreeValueAllowed = true;\n    /**\n     * Whether autocomplete is in readonly mode.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isReadonly = false;\n    /**\n     * Whether loading spinner is displayed in text input.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isLoading = false;\n    /**\n     * Whether autocomplete will display the selected values with chips.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasChips = false;\n    /**\n     * Whether autocomplete will get the data asynchronously.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isAsync = false;\n    /**\n     * Whether this chip is sorted on their label.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChipsSorted = false;\n    /**\n     * Whether this item in the panel is sorted on their label.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isItemsSorted = false;\n    /**\n     * Whether the chip can be removed from the selection.\n     * When a chip is removed, its value goes back in the panel.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isChipsRemovable = true;\n    /**\n     * Whether the chips can have multiple times the same value.\n     * With this option, the value is not removed from the panel when choosen.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isDuplicateValueAllowed = false;\n    /**\n     * In combination with `hasChips`. Whether the chip is added when the text input is blurred.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isAddOnBlur  = false;\n    /**\n     * In combination with `hasChips` and `isFreeValueAllowed=false`. Whether the text input is empty after blurring when no value has been selected in the panel.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isForceSelection = false;\n    /**\n     * Whether a limited amount, defined by this option, is used to display the chips.\n     */\n    @Input({ transform: numberAttribute }) maxVisibleChipsCount = null;\n    /**\n     * Whether the chips label length is limited by the value of this option.\n     */\n    @Input({ transform: numberAttribute }) chipsLabelTruncateCount = null;\n    /**\n     * In combination with `maxVisibleChipsCount`. Whether all chips are shown by default.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isMaxVisibleChipsOpened = false;\n    /**\n     * Whether the chips can be drag and dropped.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChipsDragAndDrop = false;\n\n    public autocompleteOptions = new BehaviorSubject<EuiAutoCompleteItem[]>(this.autocompleteData);\n    public selectedOptionIndex = 0;\n    public autocompleteControl = new FormControl<string>('');\n    public isDisabled = false;\n    public chips: EuiChip[] = [];\n    public distinctOptionGroups: string[];\n    public groupedOptions = new BehaviorSubject<{ [id: string]: { options: EuiAutoCompleteItem[], ancestorLength: number } }>({});\n    public globalOptionIndex = 0;\n    public itemSize = 40;\n    public autocompleteOptionTemplate: TemplateRef<{ $implicit: EuiAutoCompleteItem }>;\n    public autocompleteOptGroupTemplate: TemplateRef<{ $implicit: { label: string } }>;\n\n    @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n    @ViewChild('templatePortalContent') templatePortalContent: TemplateRef<ElementRef>;\n    @ViewChild('inputContainerRef') inputContainerRef: ElementRef;\n    @ViewChild('virtualScrolling') virtualScrolling: CdkVirtualScrollViewport;\n    @ViewChild('input', { read: ElementRef }) input: ElementRef;\n\n    /**\n     * Event emitted when the panel is closed.\n     */\n    @Output() panelClose = new EventEmitter();\n    /**\n     * Event emitted when the panel is opened.\n     */\n    @Output() panelOpen = new EventEmitter();\n    /**\n     * Event emitted when the text input gets the focus.\n     */\n    @Output() inputFocus = new EventEmitter();\n    /**\n     * Event emitted when the text input is blurred.\n     */\n    @Output() inputBlur = new EventEmitter();\n    /**\n     * Event emitted when the text input is cleared.\n     */\n    @Output() clear = new EventEmitter();\n    /**\n     * Event emitted when an option is selected or when the selection is modified.\n     */\n    @Output() selectionChange = new EventEmitter<EuiAutoCompleteItem[]>();\n    /**\n     * Event emitted when an option is selected.\n     */\n    @Output() itemAdd = new EventEmitter<EuiAutoCompleteItem>();\n    /**\n     * Event emitted when an option is removed.\n     */\n    @Output() itemRemove = new EventEmitter<EuiAutoCompleteItem>();\n    /**\n     * Event emitted when the value of the text input changes.\n     */\n    @Output() inputChange = new EventEmitter<string>();\n    /**\n     * Event emitted when a chip drag starts.\n     */\n    @Output() chipDragStart = new EventEmitter<EuiChipDragDrop>();\n    /**\n     * Event emitted when a chip drag is released.\n     */\n    @Output() chipDragRelease = new EventEmitter<EuiChipDragDrop>();\n    /**\n     * Event emitted when a chip is dropped.\n     */\n    @Output() chipDrop = new EventEmitter<EuiChipDragDrop>();\n\n    protected hasAriaRequiredAttribute: boolean;\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private overlayRef: OverlayRef;\n    private isOpen$ = new BehaviorSubject<boolean>(false);\n    private templatePortal: TemplatePortal<unknown>;\n    private keyboardOptionSelectorHandlerSubscription = new Subscription();\n    private addOnBlurClickHandlerSubscription = new Subscription();\n    private isForceSelectionSubscription = new Subscription();\n    private keyboardSubscription = new Subscription();\n    private autocompleteOptionsSubscription = new Subscription();\n    private scrollDispatcherSubscription = new Subscription();\n    private windowResizeSubscription = new Subscription();\n    private value: EuiAutoCompleteItem | EuiAutoCompleteItem[] = null;\n    private TOP = new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, 0, [\n        'eui-autocomplete-position',\n        'eui-autocomplete-position--top',\n    ]);\n    private BOTTOM = new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 0, [\n        'eui-autocomplete-position',\n        'eui-autocomplete-position--bottom',\n    ]);\n    private preferredPositons: ConnectionPositionPair[] = [this.BOTTOM, this.TOP];\n    private overlay = inject(Overlay);\n    private cd = inject(ChangeDetectorRef);\n    private viewContainerRef = inject(ViewContainerRef);\n    private elementRef = inject(ElementRef);\n    private liveAnnouncer = inject(LiveAnnouncer);\n    private scrollDispatcher = inject(ScrollDispatcher);\n    private euiAppShellService = inject(EuiAppShellService);\n    private baseStatesDirective = inject(BaseStatesDirective);\n    private control = inject(NgControl, { self: true, optional: true })!;\n    private platformId = inject(PLATFORM_ID);\n\n    constructor() {\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n    }\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c && c.autocompleteData) {\n            this.setOptions('', this.isItemsSorted);\n        }\n\n        if (c && c.autocompleteDataSelected && this.hasChips) {\n            this.autocompleteDataSelected = c.autocompleteDataSelected.currentValue.map((s: EuiAutoCompleteItem) => ({ ...s, euiInternalId: crypto.randomUUID() }));\n            this.chips = this.mapToChip(this.autocompleteDataSelected);\n            this.setOptions('', this.isItemsSorted);\n        }\n    }\n\n    ngOnInit(): void {\n        this.euiAppShellService.state$.pipe(takeUntil(this.destroy$)).subscribe((state) => {\n            this.itemSize = state.appBaseFontSize === '16px' ? 40 : 35;\n        });\n\n        if (this.control) {\n            this.updateInputAriaRequiredAttribute(this.control);\n            this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n                this.updateInputAriaRequiredAttribute(this.control);\n            });\n        }\n\n        this.autocompleteControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value: string) => {\n            this.selectedOptionIndex = 0;\n            if (!this.isOpen) {\n                this.openPanel();\n            }\n\n            this.setOptions(value, this.isItemsSorted);\n\n            if (this.hasChips) {\n                if (!value) {\n                    this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);\n                }\n            } else {\n                if (typeof value === 'string') {\n                    const foundItem = this.autocompleteData.find((d) => d.label.toLowerCase().trim() === value.toLowerCase().trim());\n\n                    if (foundItem) {\n                        this.onChange(foundItem);\n                    } else {\n                        // eslint-disable-next-line\n                        value ? this.onChange({ label: value }) : this.onChange(null);\n                    }\n                } else {\n                    this.onChange(value === undefined ? null : value);\n                    if (!value) {\n                        this.setOptions('', this.isItemsSorted);\n                    }\n                }\n            }\n\n            this.inputChange.emit(value as string);\n        });\n\n        if (!this.isAsync) {\n            this.setOptions(Array.isArray(this.value) ? '' : this.value?.label, this.isItemsSorted);\n        }\n    }\n\n    ngDoCheck(): void {\n        if (this.control) {\n            // eslint-disable-next-line\n            this.control.touched ? this.autocompleteControl.markAsTouched() : this.autocompleteControl.markAsUntouched();\n            // eslint-disable-next-line\n            this.control.invalid ? this.autocompleteControl.setErrors(this.control.errors) : this.autocompleteControl.setErrors(null);\n            this.cd.detectChanges();\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);\n\n        this.templates.forEach((item) => {\n            if (item.getType() === 'dropdownOption') {\n                this.autocompleteOptionTemplate = item.template;\n            }\n            if (item.getType() === 'dropdownOptGroup') {\n                this.autocompleteOptGroupTemplate = item.template;\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n        this.keyboardOptionSelectorHandlerSubscription.unsubscribe();\n        this.addOnBlurClickHandlerSubscription.unsubscribe();\n        this.isForceSelectionSubscription.unsubscribe();\n        this.keyboardSubscription.unsubscribe();\n        this.autocompleteOptionsSubscription.unsubscribe();\n        this.windowResizeSubscription.unsubscribe();\n    }\n\n    /**\n     * Calculates the height that the virtual scroll need to have.\n     *\n     * @type {number}\n     */\n    get cdkVirtualScrollViewport(): number {\n        if (this.groupBy) {\n            const filteredOptionGroups: string[] = this.autocompleteOptions.value\n                .map(item => this.groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), item || self))\n                .filter((optionGroup: string) => {\n                    return (\n                        this.autocompleteOptions.value.some(\n                            (option) => this.groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), option || self) === optionGroup,\n                        )\n                    );\n                })\n                .filter((optionGroup: string, index, array: string[]) => array.indexOf(optionGroup) === index);\n\n            if (this.autocompleteOptions.value.length >= this.visibleOptions) {\n                return this.visibleOptions * this.itemSize;\n            } else {\n                const scrollItems = this.autocompleteOptions.value.length + filteredOptionGroups.length;\n                return (scrollItems > this.visibleOptions ? this.visibleOptions : scrollItems) * this.itemSize;\n            }\n        } else {\n            return this.autocompleteOptions.value.length >= this.visibleOptions ?\n                this.visibleOptions * this.itemSize :\n                this.autocompleteOptions.value.length * this.itemSize;\n        }\n    }\n\n    /**\n     * Returns the opening state of the panel.\n     *\n     * @type {boolean}\n     */\n    get isOpen(): boolean {\n        return this.isOpen$.value;\n    }\n\n    /**\n     * Checks if autocomplete options are available.\n     *\n     * @returns {boolean} `true` if options are present, otherwise `false`.\n     */\n    get hasOptionsResult(): boolean {\n        return this.autocompleteOptions.value.length > 0;\n    }\n\n    /**\n     * Method that creates and opens the panel containing autocomplete options.\n     */\n    public openPanel(): void {\n        if (!this.isOpen && !this.isReadonly) {\n            this.scrollDispatcherSubscription = this.scrollDispatcher\n                .ancestorScrolled(this.input)\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((event: CdkScrollable) => {\n                    if(isPlatformBrowser(this.platformId)) {\n                        const scrollableParent = event ? event.getElementRef().nativeElement : document.querySelector('body');\n                        if (!this.isVisible(this.input.nativeElement, scrollableParent)) {\n                            this.closePanel();\n                        }\n                    }\n                });\n\n            this.windowResizeSubscription = fromEvent(window, 'resize')\n                .pipe(takeUntil(this.destroy$))\n                .subscribe(() => {\n                    if (this.overlayRef && this.overlayRef.hasAttached() && !this.panelWidth) {\n                        this.overlayRef.updateSize({\n                            width: this.inputContainerRef.nativeElement.clientWidth,\n                        });\n                    }\n                });\n\n            const positionStrategy = this.getPositionStrategy();\n            const scrollStrategy = this.getScrollStrategy();\n\n            this.overlayRef = this.overlay.create({\n                hasBackdrop: false,\n                positionStrategy,\n                scrollStrategy,\n                disposeOnNavigation: true,\n                width: this.panelWidth ? this.panelWidth : this.inputContainerRef.nativeElement.clientWidth,\n                panelClass: ['eui-autocomplete__panel-container', this.classList],\n            });\n            this.overlayRef.attach(this.templatePortal);\n\n            document.querySelectorAll('.cdk-overlay-container')?.forEach(el => {\n                if (!el.classList.contains('eui-19')) {\n                    el.classList.add('eui-19');\n                }\n            });\n\n            this.overlayRef\n                .outsidePointerEvents()\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((e) => {\n                    const targetElement = e.target as HTMLElement;\n                    const clearElement = this.elementRef.nativeElement.querySelector('.eui-sprite-eui-close');\n                    const isElementOrChildOfElement = (element: HTMLElement, parentElement: HTMLElement): boolean => {\n                        while (element) {\n                            if (element === parentElement) {\n                                return true;\n                            }\n                            element = element.parentElement;\n                        }\n                        return false;\n                    };\n\n                    const isClearableButton = targetElement.classList.contains('eui-sprite-eui-close');\n                    const isInput = targetElement.classList.contains('eui-autocomplete__input');\n\n                    if (!isClearableButton && !isInput && !isElementOrChildOfElement(targetElement, clearElement)) {\n                        this.closePanel();\n                    }\n\n                    if (isClearableButton && !this.elementRef.nativeElement.contains(targetElement)) {\n                        this.closePanel();\n                    }\n\n                    if (isInput && !this.elementRef.nativeElement.contains(targetElement)) {\n                        this.closePanel();\n                    }\n\n                    if ((e.target as HTMLElement).classList.contains('eui-autocomplete__input')) {\n                        e.stopPropagation();\n                    }\n                });\n            this.overlayRef\n                .keydownEvents()\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((keyboardEvent) => {\n                    if (keyboardEvent.key?.toLowerCase() === 'escape') {\n                        this.closePanel();\n                    }\n                });\n\n            this.autocompleteOptionsSubscription = this.autocompleteOptions.subscribe((autocompleteOptions) => {\n                this.overlayRef.removePanelClass('eui-autocomplete__panel-container--no-option');\n                if (autocompleteOptions.length === 0) {\n                    this.selectedOptionIndex = 0;\n                    this.overlayRef.addPanelClass('eui-autocomplete__panel-container--no-option');\n                }\n            });\n\n            const liveAnnouncerSource = this.groupBy ? Object.values(this.groupedOptions.value).flatMap(group => group.options) : this.autocompleteOptions.value;\n\n            this.liveAnnouncer.clear();\n            this.liveAnnouncer.announce(liveAnnouncerSource[0]?.label);\n\n            let visibleRangeStart = 0;\n            let visibleRangeEnd = this.visibleOptions - 1;\n            this.keyboardOptionSelectorHandlerSubscription = fromEvent(this.input.nativeElement, 'keydown')\n                .pipe(\n                    filter((e: KeyboardEvent) => e.code === 'ArrowDown' || e.code === 'ArrowUp' || e.code === 'Enter' || e.code === 'Tab'),\n                    takeUntil(this.destroy$),\n                )\n                .subscribe((e: KeyboardEvent) => {\n                    if (e) {\n                        if (e.code === 'ArrowDown' && this.selectedOptionIndex < this.autocompleteOptions.value.length - 1) {\n                            this.selectedOptionIndex++;\n                            this.cd.detectChanges();\n\n                            const liveAnnouncerSource = this.groupBy ? Object.values(this.groupedOptions.value).flatMap(group => group.options) : this.autocompleteOptions.value;\n\n                            this.liveAnnouncer.clear();\n                            this.liveAnnouncer.announce(liveAnnouncerSource[this.selectedOptionIndex].label);\n\n                            e.preventDefault();\n                        }\n                        if (e.code === 'ArrowUp' && this.selectedOptionIndex > 0) {\n                            this.selectedOptionIndex--;\n                            this.cd.detectChanges();\n\n                            const liveAnnouncerSource = this.groupBy ? Object.values(this.groupedOptions.value).flatMap(group => group.options) : this.autocompleteOptions.value;\n\n                            this.liveAnnouncer.clear();\n                            this.liveAnnouncer.announce(liveAnnouncerSource[this.selectedOptionIndex].label);\n\n                            e.preventDefault();\n                        }\n\n                        const cIndex = this.selectedOptionIndex - this.virtualScrolling?.getRenderedRange().start;\n\n                        if (e.code === 'ArrowDown' && cIndex > visibleRangeEnd - visibleRangeStart - visibleRangeEnd) {\n                            let nbOptionsGroup = 0;\n                            const nbOptions = this.autocompleteOptions.value.length;\n                            if (this.groupBy) {\n                                Object.keys(this.groupedOptions.value).forEach(groupedOption => {\n                                    if (this.groupedOptions.value[groupedOption].options.length > 0 &&\n                                        this.selectedOptionIndex > this.groupedOptions.value[groupedOption].ancestorLength - 1) {\n                                        nbOptionsGroup ++;\n                                    }\n                                });\n                            }\n\n                            if ((this.selectedOptionIndex + nbOptionsGroup) > visibleRangeEnd && visibleRangeEnd <= (nbOptions + nbOptionsGroup)) {\n                                this.virtualScrolling.scrollToIndex((this.selectedOptionIndex + nbOptionsGroup) - visibleRangeEnd + visibleRangeStart);\n                                visibleRangeStart++;\n                                visibleRangeEnd++;\n                            }\n                        }\n                        if (e.code === 'ArrowUp' && cIndex < visibleRangeStart) {\n                            if (this.selectedOptionIndex < visibleRangeStart) {\n                                this.virtualScrolling.scrollToIndex(this.selectedOptionIndex);\n                                visibleRangeStart--;\n                                visibleRangeEnd--;\n                            }\n                        }\n                        if (e.code === 'Enter') {\n                            if (this.hasOptionsResult) {\n                                if (this.groupBy) {\n                                    const options = [].concat(...Object.values(this.groupedOptions.value).map(group => group.options));\n                                    this.onOptionSelected(options[this.selectedOptionIndex]);\n                                } else {\n                                    this.onOptionSelected(this.autocompleteOptions.value[this.selectedOptionIndex]);\n                                }\n                            } else if (this.hasChips && this.isFreeValueAllowed) {\n                                this.add(this.autocompleteControl.value);\n                            }\n                        }\n                        if (e.code === 'Tab') {\n                            if (this.isOpen) {\n                                if (this.isAddOnBlur  && this.hasChips && this.autocompleteControl.value?.trim().length > 0) {\n                                    this.add(this.autocompleteControl.value.trim());\n                                }\n                                if (this.isForceSelection) {\n                                    this.input.nativeElement.value = '';\n                                    this.autocompleteControl.setValue(null, { emitEvent: false });\n                                    this.setOptions('', this.isItemsSorted);\n                                }\n                                this.closePanel();\n                            }\n                        }\n                    }\n                });\n\n            this.addOnBlurClickHandlerSubscription.unsubscribe();\n            if (this.isAddOnBlur ) {\n                this.addOnBlurClickHandlerSubscription = fromEvent(document, 'click').pipe(takeUntil(this.destroy$)).subscribe((event: PointerEvent) => {\n                    if (!(event.target as HTMLElement).classList.contains('eui-autocomplete-option') && this.hasChips && this.autocompleteControl.value?.trim().length > 0) {\n                        this.add(this.autocompleteControl.value.trim());\n                    }\n                });\n            }\n\n            this.isForceSelectionSubscription.unsubscribe();\n            if (this.isForceSelection) {\n                this.isForceSelectionSubscription = fromEvent(document, 'click').pipe(takeUntil(this.destroy$)).subscribe((event: PointerEvent) => {\n                    if (!(event.target as HTMLElement).classList.contains('eui-autocomplete-option')) {\n                        this.input.nativeElement.value = '';\n                        this.autocompleteControl.setValue(null, { emitEvent: false });\n                        this.setOptions('', this.isItemsSorted);\n                    }\n                });\n            }\n\n            this.isOpen$.next(true);\n            this.panelOpen.emit();\n        }\n    }\n\n    /**\n     * Closes the autocomplete panel.\n     */\n    public closePanel(): void {\n        this.selectedOptionIndex = 0;\n        this.overlayRef.dispose();\n        this.overlayRef = null;\n        this.isOpen$.next(false);\n        this.cd.detectChanges();\n        this.keyboardOptionSelectorHandlerSubscription.unsubscribe();\n        this.autocompleteOptionsSubscription.unsubscribe();\n        this.scrollDispatcherSubscription.unsubscribe();\n        this.windowResizeSubscription.unsubscribe();\n        this.panelClose.emit();\n    }\n\n    /**\n     * Method called when an option is selected.\n     *\n     * @param e Selected option\n     */\n    public onOptionSelected(e: EuiAutoCompleteItem): void {\n        if (!e.isDisabled) {\n            if (this.hasChips) {\n                this.autocompleteDataSelected.push({ ...e, euiInternalId: crypto.randomUUID() });\n                this.chips = this.mapToChip(this.autocompleteDataSelected);\n                this.input.nativeElement.value = '';\n                this.autocompleteControl.setValue(null);\n                this.setOptions('', this.isItemsSorted);\n            } else {\n                this.autocompleteDataSelected = [e];\n                this.input.nativeElement.value = e.label;\n                this.autocompleteControl.setValue(e.label);\n            }\n\n            this.addOnBlurClickHandlerSubscription.unsubscribe();\n            this.isForceSelectionSubscription.unsubscribe();\n\n            this.selectionChange.emit(this.autocompleteDataSelected);\n            this.itemAdd.emit(e);\n            this.closePanel();\n        }\n    }\n\n    /**\n     * Method called when an option is added through the text input.\n     *\n     * @param value Value to add\n     */\n    public add(value: string): void {\n        if (!value || (!this.isFreeValueAllowed && !this.autocompleteData.find(a => a.label === value.trim()))) {\n            return;\n        }\n\n        if (!this.isDuplicateValueAllowed && this.autocompleteDataSelected.some(s => s.label.trim() === value.trim())) {\n            return;\n        }\n\n        const item = this.autocompleteData.find(a => a.label === value.trim()) || { label: value.trim(), euiInternalId: crypto.randomUUID() };\n\n        this.autocompleteDataSelected.push(item);\n        this.chips = this.mapToChip(this.autocompleteDataSelected);\n        this.input.nativeElement.value = '';\n        this.autocompleteControl.setValue(null);\n        this.closePanel();\n\n        this.addOnBlurClickHandlerSubscription.unsubscribe();\n        this.isForceSelectionSubscription.unsubscribe();\n\n        this.selectionChange.emit(this.autocompleteDataSelected);\n        this.itemAdd.emit(item);\n    }\n\n    public optionsTrackByFn(index: number, item: EuiAutoCompleteItem): string | number {\n        return item.id;\n    }\n\n    public writeValue(value: EuiAutoCompleteItem | EuiAutoCompleteItem[]): void {\n        this.value = value;\n\n        if (this.hasChips) {\n            this.autocompleteDataSelected = value ? ([...value as EuiAutoCompleteItem[]]) : [];\n            this.chips = this.mapToChip(this.autocompleteDataSelected);\n            this.autocompleteControl.patchValue(null, { emitEvent: false });\n            this.setOptions('', this.isItemsSorted);\n        } else {\n            this.autocompleteControl.patchValue(value ? (value as EuiAutoCompleteItem).label : null, { emitEvent: false });\n            const inputValue = value ? (value as EuiAutoCompleteItem).label : null;\n            this.setOptions(inputValue, this.isItemsSorted);\n        }\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        // eslint-disable-next-line\n        this.isDisabled = isDisabled;\n        // eslint-disable-next-line\n        isDisabled ? this.autocompleteControl.disable() : this.autocompleteControl.enable();\n\n        if (this.isOpen) {\n            this.closePanel();\n        }\n\n        this.cd.detectChanges();\n    }\n\n    public registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouch = fn;\n    }\n\n    public onClear(): void {\n        this.clear.emit();\n    }\n\n    /**\n     * Text input focus handler.\n     */\n    public onFocus(): void {\n        this.keyboardSubscription = fromEvent(this.input.nativeElement, 'keydown')\n            .pipe(\n                filter((event: KeyboardEvent) =>\n                    /^[a-zA-Z0-9]$/.test(event.key) ||\n                    event.key === 'Space' ||\n                    event.key === 'ArrowDown' ||\n                    event.key === 'Backspace',\n                    ),\n                )\n            .subscribe((event: KeyboardEvent) => {\n                if (!this.isOpen) {\n                    this.openPanel();\n                    event.stopPropagation();\n                }\n\n                if (this.chipsPosition === 'inside' && event.key === 'Backspace' && (!this.autocompleteControl.value || this.autocompleteControl.value.length === 0)) {\n                    const removed = this.chips.pop();\n                    this.onChipRemove({ chips: [...this.chips], removed });\n\n                    this.cd.detectChanges();\n\n                    this.overlayRef.updateSize({ width: this.inputContainerRef.nativeElement.clientWidth });\n                    this.overlayRef.updatePosition();\n                }\n            });\n\n        if (!this.isOpen) {\n            this.openPanel();\n        }\n\n        this.inputFocus.emit();\n    }\n\n    /**\n     * Text input blur handler.\n     */\n    public onBlur(): void {\n        this.keyboardSubscription.unsubscribe();\n        this.inputBlur.emit();\n        this.onTouch();\n    }\n\n    /**\n     * Called when a chip is removed.\n     *\n     * @param e Object containing the chip to remove.\n     */\n    public onChipRemove(e: { chips: EuiChip[]; removed: EuiChip | { chip: EuiChip; event: Event } }): void {\n        const event = e as { chips: EuiChip[]; removed: EuiChip };\n        const itemRemoved = this.autocompleteDataSelected.find(i => i.id === event.removed.id);\n\n        this.autocompleteDataSelected = this.autocompleteDataSelected\n            .filter(i => event.chips.find(c => c.id === i.id))\n            .filter(i => event.chips.find(c => c.euiInternalId === i.euiInternalId));\n        this.chips = this.mapToChip(this.autocompleteDataSelected);\n\n        this.setOptions('', this.isItemsSorted);\n\n        this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);\n        this.selectionChange.emit(this.autocompleteDataSelected);\n        this.itemRemove.emit(itemRemoved);\n    }\n\n    /**\n     * Called when a chip is dropped for reordering or from a source to another.\n     *\n     * @param e Object containing the chip dropped.\n     */\n    public onChipDropped(e: EuiChipDragDrop): void {\n        const data = this.autocompleteData;\n        this.autocompleteDataSelected = e.chips.map(c => data.find((a) => a.id === c.id));\n\n        this.chips = this.mapToChip(this.autocompleteDataSelected);\n        this.autocompleteOptions.next(this.filterOptions(''));\n\n        this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);\n        this.selectionChange.emit(this.autocompleteDataSelected);\n\n        this.chipDrop.emit(e);\n    }\n\n    /**\n     * Called when a chip is dragged for reordering or from a source to another.\n     *\n     * @param e Object containing the chip dragged.\n     */\n    public onChipDragStarted(e: EuiChipDragDrop): void {\n        this.chipDragStart.emit(e);\n    }\n\n    /**\n     * Called when a chip is released for reordering or from a source to another.\n     *\n     * @param e Object containing the chip released.\n     */\n    public onChipDragReleased(e: EuiChipDragDrop): void {\n        this.chipDragRelease.emit(e);\n    }\n\n    /**\n     * Calculates the item size for virtual scrolling.\n     *\n     * @returns a number representing the item size.\n     */\n    private getItemSize(): number {\n        const optionHeight = this.overlayRef?.hostElement?.querySelector('.eui-autocomplete__panel')?.querySelectorAll('.eui-autocomplete-option')[0]?.clientHeight + 1;\n        return optionHeight || 48;\n    }\n\n    /**\n     * Re-order options panel based on the input valuea and sort order.\n     *\n     * @param value Value to filter the options.\n     * @param isItemsSorted If the items are sorted.\n     */\n    private setOptions(value: string, isItemsSorted: boolean): void {\n        this.autocompleteOptions.next(isItemsSorted ? (this.orderArray(this.filterOptions(value), this.itemsSortOrder)) : this.filterOptions(value));\n\n        if (this.groupBy) {\n            const { groupedOptions, distinctOptionGroups } = this.groupingHandler(this.autocompleteOptions.value, this.groupBy);\n\n            this.groupedOptions.next(groupedOptions);\n            this.distinctOptionGroups = distinctOptionGroups;\n        }\n    }\n\n    /**\n     * Return the position strategy for the panel.\n     *\n     * @returns A CDK position strategy.\n     */\n    private getPositionStrategy(): PositionStrategy {\n        return this.overlay\n            .position()\n            .flexibleConnectedTo(this.inputContainerRef.nativeElement as FlexibleConnectedPositionStrategyOrigin)\n            .withPositions(this.preferredPositons)\n            .withFlexibleDimensions(false)\n            .withLockedPosition(true);\n    }\n\n    /**\n     * Return the scroll strategy for the panel.\n     *\n     * @returns A CDK scroll strategy.\n     */\n    private getScrollStrategy(): RepositionScrollStrategy {\n        return this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n    }\n\n    /**\n     * Refine the options based on the input value.\n     *\n     * @param inputValue Value to filter the options.\n     * @returns An array of options.\n     */\n    private filterOptions(inputValue: string): EuiAutoCompleteItem[] {\n        let data: EuiAutoCompleteItem[] = [];\n        if (inputValue) {\n            data = this.autocompleteData.filter((autocompleteItem) => {\n                if (\n                    this.matching === 'contains' &&\n                    autocompleteItem.label.toLowerCase().indexOf(inputValue.toString().toLowerCase()) !== -1\n                ) {\n                    return autocompleteItem;\n                }\n                if (\n                    this.matching === 'startWith' &&\n                    autocompleteItem.label.toLowerCase().substr(0, inputValue.toString().length) === inputValue.toLowerCase()\n                ) {\n                    return autocompleteItem;\n                }\n            });\n        } else {\n            data = this.autocompleteData;\n        }\n\n        if (this.hasChips) {\n            data = data.filter(d => !this.isDuplicateValueAllowed ? !this.autocompleteDataSelected.some(selectedItem => d.id === selectedItem.id) : true);\n        }\n\n        if (this.isItemsSorted) {\n            data = this.orderArray(data, this.itemsSortOrder);\n        }\n\n        return data;\n    }\n\n    /**\n     * Converts EuiAutoCompleteItem array to EuiChip array.\n     *\n     * @param items Array of EuiAutoCompleteItem.\n     * @returns An array of EuiChip\n     */\n    private mapToChip(items: EuiAutoCompleteItem[]): EuiChip[] {\n        const chips = items.map((selected) => {\n            return new EuiChip({\n                id: selected.id,\n                euiInternalId: selected.euiInternalId,\n                label: selected.label,\n                typeClass: selected.typeClass,\n                isOutline: selected.isOutline,\n                isRounded: selected.isRounded,\n                sizeClass: selected.sizeClass,\n                isRemovable: selected.isRemovable,\n                tooltipMessage: selected.tooltip?.tooltipMessage,\n                tooltip: new EuiChipTooltip(selected.tooltip),\n                iconClass: selected.iconClass,\n                iconSvgName: selected.iconSvgName,\n            });\n        });\n\n        return this.isChipsSorted && chips.length > 0 ? (this.orderArray(chips, this.chipsSortOrder) as EuiChip[]) : chips;\n    }\n\n    /**\n     * Sort an array of objects based on their label.\n     *\n     * @param tab Array to order\n     * @param sortOrder Sort order criteria\n     * @returns A sorted array\n     */\n    private orderArray<T extends { label: string; }>(tab: T[], sortOrder: 'ASC' | 'DESC'): T[] {\n        tab.sort((a: T, b: T) => {\n            const aObj = a.label.toLowerCase();\n            const bObj = b.label.toLowerCase();\n\n            if (sortOrder === 'ASC') {\n                if (aObj < bObj) {\n                    return -1;\n                }\n                if (aObj > bObj) {\n                    return 1;\n                }\n                return 0;\n            } else {\n                if (aObj > bObj) {\n                    return -1;\n                }\n                if (aObj < bObj) {\n                    return 1;\n                }\n                return 0;\n            }\n        });\n\n        return tab;\n    }\n\n    /**\n     * Transforms array of EuiAutoCompleteItem into a grouped object.\n     *\n     * @param options Array of EuiAutoCompleteItem\n     * @param groupBy Label of the group\n     * @returns An object containing the grouped options and the distinct option groups.\n     */\n    private groupingHandler(options: EuiAutoCompleteItem[], groupBy: string):\n    { groupedOptions: { [id: string]: { options: EuiAutoCompleteItem[], ancestorLength: number } }, distinctOptionGroups: string[] } {\n        const distinctGroups: string[] = this.autocompleteData.map(item => groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), item || self));\n        const distinctOptionGroups: string[] = [...new Set(distinctGroups)].sort((a: string, b: string) => (a > b ? 1 : -1));\n        const groupedOptions: { [id: string]: { options: EuiAutoCompleteItem[], ancestorLength: number } } = {};\n\n        let ancestorLength = 0;\n        for (const group of distinctOptionGroups) {\n            let o = options.filter(option => groupBy.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), option || self) === group);\n            if (this.isItemsSorted) {\n                o = this.orderArray(o, this.itemsSortOrder) as EuiAutoCompleteItem[];\n            }\n\n            groupedOptions[group] = { options: o, ancestorLength };\n            ancestorLength += o.length;\n        }\n\n        return { groupedOptions, distinctOptionGroups };\n    }\n\n    /**\n     * Indicates if the origin element is visible in the scrollable parent.\n     *\n     * @param origin Origin of the autocomplete\n     * @param scrollableParent Scrollable container\n     * @returns A boolean, true if visible else false.\n     */\n    private isVisible(origin: HTMLElement, scrollableParent: HTMLElement): boolean {\n        const originY = origin.getBoundingClientRect().y;\n        const scrollableParentY = Math.abs(scrollableParent.getBoundingClientRect().y);\n        const scrollableParentHeight = scrollableParent.getBoundingClientRect().height - 55;\n\n        return (\n            (originY > 0 && originY < scrollableParentHeight) ||\n            (originY - scrollableParentY > 0 && originY < scrollableParentY + scrollableParentHeight)\n        );\n    }\n\n    private onChange = <T>(change?: T): void => {\n        /** empty */\n    };\n\n    private onTouch = (): void => {\n        /** empty */\n    };\n\n    /**\n     * Updates the `aria-required` attribute on the input element.\n     * @private\n     */\n    private updateInputAriaRequiredAttribute(control: NgControl): void {\n        this.hasAriaRequiredAttribute = control?.control?.hasValidator(Validators.required);\n        this.cd.markForCheck();\n    }\n}\n","<div class=\"eui-autocomplete__wrapper\">\n    @if (chipsPosition === 'bottom') {\n        <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n    }\n    @if (hasChips) {\n        <eui-chip-list\n            [chips]=\"chips\"\n            [isChipsRemovable]=\"isChipsRemovable && !isReadonly\"\n            [maxVisibleChipsCount]=\"maxVisibleChipsCount\"\n            [isMaxVisibleChipsOpened]=\"isMaxVisibleChipsOpened\"\n            [chipsLabelTruncateCount]=\"chipsLabelTruncateCount\"\n            [toggleLinkMoreLabel]=\"toggleLinkMoreLabel\"\n            [toggleLinkLessLabel]=\"toggleLinkLessLabel\"\n            [isChipsDragAndDrop]=\"isChipsDragAndDrop\"\n            [dragAndDropSourceName]=\"dragAndDropSourceName\"\n            [dragAndDropConnectedTo]=\"dragAndDropConnectedTo\"\n            (chipDrop)=\"onChipDropped($event)\"\n            (chipDragStart)=\"onChipDragStarted($event)\"\n            (chipDragRelease)=\"onChipDragReleased($event)\"\n            (chipRemove)=\"onChipRemove($event)\">\n            <euiChipListAppendContent>\n                @if (chipsPosition === 'inside') {\n                    <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n                }\n            </euiChipListAppendContent>\n        </eui-chip-list>\n    }\n    @if (chipsPosition === 'top') {\n        <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n    }\n</div>\n\n<ng-template #control>\n    @if (!hasChips || (hasChips && !isReadonly)) {\n        <div class=\"eui-autocomplete__input-container {{ classList }}\" #inputContainerRef>\n            <input\n                [attr.id]=\"inputId\"\n                #input\n                euiInputText\n                [euiClearable]=\"!isReadonly && !isDisabled\"\n                [euiLoading]=\"isLoading\"\n                [formControl]=\"autocompleteControl\"\n                class=\"eui-autocomplete__input {{ classList }}\"\n                placeholder=\"{{ placeholder }}\"\n                autocomplete=\"off\"\n                [readonly]=\"isReadonly\"\n                (clear)=\"onClear()\"\n                (click)=\"openPanel()\"\n                (focus)=\"onFocus()\"\n                (blur)=\"onBlur()\"\n                [attr.aria-controls]=\"isOpen ? 'eui-autocomplete__panel' : null\"\n                [attr.aria-label]=\"autocompleteControl.value?.length > 0 ? autocompleteControl.value : 'Input field without value'\"\n                [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n                aria-autocomplete=\"both\"\n                aria-haspopup=\"true\" />\n        </div>\n    }\n</ng-template>\n\n<ng-template #templatePortalContent>\n    <div\n        id=\"eui-autocomplete__panel\"\n        class=\"eui-autocomplete__panel\"\n        [@panelAnimation]=\"isOpen ? 'visible' : 'hidden'\"\n        role=\"listbox\"\n        aria-live=\"polite\"\n        aria-label=\"Autocomplete panel\">\n        <cdk-virtual-scroll-viewport\n            #virtualScrolling\n            [itemSize]=\"itemSize\"\n            tabindex=\"0\"\n            minBufferPx=\"500\"\n            maxBufferPx=\"750\"\n            [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n            @if (groupBy) {\n                @for (distinctOptionGroup of distinctOptionGroups; let i = $index; track distinctOptionGroup) {\n                        @if ((groupedOptions | async)[distinctOptionGroup].options.length > 0) {\n                            <eui-autocomplete-option-group [label]=\"distinctOptionGroup\">\n                                <div class=\"eui-autocomplete-option-group__label\">\n                                    @if (autocompleteOptGroupTemplate) {\n                                        <ng-template\n                                            [ngTemplateOutlet]=\"autocompleteOptGroupTemplate\"\n                                            [ngTemplateOutletContext]=\"{ $implicit: { label: distinctOptionGroup } }\">\n                                        </ng-template>\n                                    } @else {\n                                        {{ distinctOptionGroup }}\n                                    }\n                                </div>\n                                <div class=\"eui-autocomplete-option-group__options\">\n                                    @for (autocompleteOption of (groupedOptions | async)[distinctOptionGroup].options; let j = $index; track autocompleteOption.id) {\n                                        <eui-autocomplete-option\n                                            isGroupItem\n                                            [isActive]=\"selectedOptionIndex === (groupedOptions | async)[distinctOptionGroup].ancestorLength + j\"\n                                            [isDisabled]=\"autocompleteOption.isDisabled\"\n                                            [attr.aria-disabled]=\"autocompleteOption.isDisabled\"\n                                            [euiVariant]=\"autocompleteOption.typeClass\"\n                                            (click)=\"onOptionSelected(autocompleteOption)\">\n                                            @if (autocompleteOptionTemplate) {\n                                                <ng-template\n                                                    [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n                                                    [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\">\n                                                </ng-template>\n                                            } @else {\n                                                @if (autocompleteOption.iconClass) {\n                                                    <span class=\"{{ autocompleteOption.iconClass }}\"></span>\n                                                } @else if (autocompleteOption.iconSvgName) {\n                                                    <eui-icon-svg icon=\"{{ autocompleteOption.iconSvgName }}\"></eui-icon-svg>\n                                                }\n                                                {{ autocompleteOption.label }}\n                                            }\n                                        </eui-autocomplete-option>\n                                    }\n                                </div>\n                            </eui-autocomplete-option-group>\n                        }\n                }\n            } @else {\n                <eui-autocomplete-option\n                    *cdkVirtualFor=\"let autocompleteOption of autocompleteOptions | async; let i = index; trackBy: optionsTrackByFn\"\n                    [isActive]=\"selectedOptionIndex === i\"\n                    [isDisabled]=\"autocompleteOption.isDisabled\"\n                    [attr.aria-disabled]=\"autocompleteOption.isDisabled\"\n                    [euiVariant]=\"autocompleteOption.typeClass\"\n                    (click)=\"onOptionSelected(autocompleteOption)\">\n                    @if (autocompleteOptionTemplate) {\n                        <ng-template\n                            [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n                            [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\">\n                        </ng-template>\n                    } @else {\n                        @if (autocompleteOption.iconClass) {\n                            <span class=\"{{ autocompleteOption.iconClass }}\"></span>\n                        } @else if (autocompleteOption.iconSvgName) {\n                            <eui-icon-svg icon=\"{{ autocompleteOption.iconSvgName }}\"></eui-icon-svg>\n                        }\n                        {{ autocompleteOption.label }}\n                    }\n                </eui-autocomplete-option>\n            }\n        </cdk-virtual-scroll-viewport>\n    </div>\n</ng-template>\n","import { AbstractControl } from '@angular/forms';\n\nimport { EuiAutoCompleteItem } from '../models/eui-autocomplete-item.model';\n\n/**\n * @description\n * Validator checking if the user choose the value in the panel.\n *\n * @returns A validator function that returns an error with the `isInData` to false and a list of invalid values if the validation\n * check fails, otherwise `null`.\n */\nexport const euiAutocompleteForceSelectionFromData = (control: AbstractControl<EuiAutoCompleteItem | EuiAutoCompleteItem[]>):\n    { isInData: { isInData: boolean; invalidValues: EuiAutoCompleteItem | EuiAutoCompleteItem[] } } | null => {\n    if (control.value) {\n        const isInData = Array.isArray(control.value) ? control.value.every(obj => 'id' in obj) : control.value.id !== undefined;\n        const invalidValues = Array.isArray(control.value) ? control.value.filter(v => v.id === undefined) : control.value;\n\n        return !isInData ? { isInData: { isInData, invalidValues } } : null;\n    }\n\n    return null;\n};\n","import { NgModule } from '@angular/core';\n\nimport { EuiAutocompleteComponent } from './eui-autocomplete.component';\nimport { EuiAutocompleteOptionComponent } from './eui-autocomplete-option/eui-autocomplete-option.component';\nimport { EuiAutocompleteOptionGroupComponent } from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\n\n/**\n * @description\n * Module that provides the EuiAutocomplete component and its dependencies\n *\n * @deprecated Use {@link EUI_AUTOCOMPLETE} instead.\n */\n@NgModule({\n    imports: [\n        EuiAutocompleteComponent,\n        EuiAutocompleteOptionComponent,\n        EuiAutocompleteOptionGroupComponent,\n    ],\n    exports: [EuiAutocompleteComponent],\n})\nexport class EuiAutocompleteModule {}\n","import { EuiAutocompleteOptionGroupComponent } from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\nimport { EuiAutocompleteOptionComponent } from './eui-autocomplete-option/eui-autocomplete-option.component';\nimport { EuiAutocompleteComponent } from './eui-autocomplete.component';\n\nexport * from './models/eui-autocomplete-item.model';\nexport * from './validators/force-selection-from-data.validator';\nexport * from './eui-autocomplete-option/eui-autocomplete-option.component';\nexport * from './eui-autocomplete-option-group/eui-autocomplete-option-group.component';\nexport * from './eui-autocomplete.component';\nexport * from './eui-autocomplete.module';\n\nexport const EUI_AUTOCOMPLETE = [\n        EuiAutocompleteComponent,\n        EuiAutocompleteOptionComponent,\n        EuiAutocompleteOptionGroupComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
         |