{"version":3,"file":"primeng-autocomplete.mjs","sources":["../../src/autocomplete/style/autocompletestyle.ts","../../src/autocomplete/autocomplete.ts","../../src/autocomplete/primeng-autocomplete.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-autocomplete {\n    display: inline-flex;\n}\n\n.p-autocomplete-loader {\n    position: absolute;\n    top: 50%;\n    margin-top: -0.5rem;\n    inset-inline-end: ${dt('autocomplete.padding.x')};\n}\n\n.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-loader {\n    inset-inline-end: calc(${dt('autocomplete.dropdown.width')} + ${dt('autocomplete.padding.x')});\n}\n\n.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input {\n    flex: 1 1 auto;\n    width: 1%;\n}\n\n.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input,\n.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input-multiple {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n}\n\n.p-autocomplete-dropdown {\n    cursor: pointer;\n    display: inline-flex;\n    user-select: none;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    position: relative;\n    width: ${dt('autocomplete.dropdown.width')};\n    border-start-end-radius: ${dt('autocomplete.dropdown.border.radius')};\n    border-end-end-radius: ${dt('autocomplete.dropdown.border.radius')};\n    background: ${dt('autocomplete.dropdown.background')};\n    border: 1px solid ${dt('autocomplete.dropdown.border.color')};\n    border-inline-start: 0 none;\n    color: ${dt('autocomplete.dropdown.color')};\n    transition: background ${dt('autocomplete.transition.duration')}, color ${dt('autocomplete.transition.duration')}, border-color ${dt('autocomplete.transition.duration')}, outline-color ${dt('autocomplete.transition.duration')}, box-shadow ${dt(\n        'autocomplete.transition.duration'\n    )};\n    outline-color: transparent;\n}\n\n.p-autocomplete-dropdown:not(:disabled):hover {\n    background: ${dt('autocomplete.dropdown.hover.background')};\n    border-color: ${dt('autocomplete.dropdown.hover.border.color')};\n    color: ${dt('autocomplete.dropdown.hover.color')};\n}\n\n.p-autocomplete-dropdown:not(:disabled):active {\n    background: ${dt('autocomplete.dropdown.active.background')};\n    border-color: ${dt('autocomplete.dropdown.active.border.color')};\n    color: ${dt('autocomplete.dropdown.active.color')};\n}\n\n.p-autocomplete-dropdown:focus-visible {\n    box-shadow: ${dt('autocomplete.dropdown.focus.ring.shadow')};\n    outline: ${dt('autocomplete.dropdown.focus.ring.width')} ${dt('autocomplete.dropdown.focus.ring.style')} ${dt('autocomplete.dropdown.focus.ring.color')};\n    outline-offset: ${dt('autocomplete.dropdown.focus.ring.offset')};\n}\n\n.p-autocomplete .p-autocomplete-overlay {\n    min-width: 100%;\n}\n\n.p-autocomplete-overlay {\n    background: ${dt('autocomplete.overlay.background')};\n    color: ${dt('autocomplete.overlay.color')};\n    border: 1px solid ${dt('autocomplete.overlay.border.color')};\n    border-radius: ${dt('autocomplete.overlay.border.radius')};\n    box-shadow: ${dt('autocomplete.overlay.shadow')};\n}\n\n.p-autocomplete-list-container {\n    overflow: auto;\n}\n\n.p-autocomplete-list {\n    margin: 0;\n    list-style-type: none;\n    display: flex;\n    flex-direction: column;\n    gap: ${dt('autocomplete.list.gap')};\n    padding: ${dt('autocomplete.list.padding')};\n}\n\n.p-autocomplete-option {\n    cursor: pointer;\n    white-space: nowrap;\n    position: relative;\n    overflow: hidden;\n    display: flex;\n    align-items: center;\n    padding: ${dt('autocomplete.option.padding')};\n    border: 0 none;\n    color: ${dt('autocomplete.option.color')};\n    background: transparent;\n    transition: background ${dt('autocomplete.transition.duration')}, color ${dt('autocomplete.transition.duration')}, border-color ${dt('autocomplete.transition.duration')};\n    border-radius: ${dt('autocomplete.option.border.radius')};\n}\n\n.p-autocomplete-option:not(.p-autocomplete-option-selected):not(.p-disabled).p-focus {\n    background: ${dt('autocomplete.option.focus.background')};\n    color: ${dt('autocomplete.option.focus.color')};\n}\n\n.p-autocomplete-option-selected {\n    background: ${dt('autocomplete.option.selected.background')};\n    color: ${dt('autocomplete.option.selected.color')};\n}\n\n.p-autocomplete-option-selected.p-focus {\n    background: ${dt('autocomplete.option.selected.focus.background')};\n    color: ${dt('autocomplete.option.selected.focus.color')};\n}\n\n.p-autocomplete-option-group {\n    margin: 0;\n    padding: ${dt('autocomplete.option.group.padding')};\n    color: ${dt('autocomplete.option.group.color')};\n    background: ${dt('autocomplete.option.group.background')};\n    font-weight: ${dt('autocomplete.option.group.font.weight')};\n}\n\n.p-autocomplete-input-multiple {\n    margin: 0;\n    list-style-type: none;\n    cursor: text;\n    overflow: hidden;\n    display: flex;\n    align-items: center;\n    flex-wrap: wrap;\n    padding: calc(${dt('autocomplete.padding.y')} / 2) ${dt('autocomplete.padding.x')};\n    gap: calc(${dt('autocomplete.padding.y')} / 2);\n    color: ${dt('autocomplete.color')};\n    background: ${dt('autocomplete.background')};\n    border: 1px solid ${dt('autocomplete.border.color')};\n    border-radius: ${dt('autocomplete.border.radius')};\n    width: 100%;\n    transition: background ${dt('autocomplete.transition.duration')}, color ${dt('autocomplete.transition.duration')}, border-color ${dt('autocomplete.transition.duration')}, outline-color ${dt('autocomplete.transition.duration')}, box-shadow ${dt(\n        'autocomplete.transition.duration'\n    )};\n    outline-color: transparent;\n    box-shadow: ${dt('autocomplete.shadow')};\n}\n\n.p-autocomplete:not(.p-disabled):hover .p-autocomplete-input-multiple {\n    border-color: ${dt('autocomplete.hover.border.color')};\n}\n\n.p-autocomplete:not(.p-disabled).p-focus .p-autocomplete-input-multiple {\n    border-color: ${dt('autocomplete.focus.border.color')};\n    box-shadow: ${dt('autocomplete.focus.ring.shadow')};\n    outline: ${dt('autocomplete.focus.ring.width')} ${dt('autocomplete.focus.ring.style')} ${dt('autocomplete.focus.ring.color')};\n    outline-offset: ${dt('autocomplete.focus.ring.offset')};\n}\n\n.p-autocomplete.p-invalid .p-autocomplete-input-multiple {\n    border-color: ${dt('autocomplete.invalid.border.color')};\n}\n\n.p-variant-filled.p-autocomplete-input-multiple {\n    background: ${dt('autocomplete.filled.background')};\n}\n\n.p-autocomplete:not(.p-disabled):hover .p-variant-filled.p-autocomplete-input-multiple {\n    background: ${dt('autocomplete.filled.hover.background')};\n}\n\n.p-autocomplete:not(.p-disabled).p-focus .p-variant-filled.p-autocomplete-input-multiple  {\n    background: ${dt('autocomplete.filled.focus.background')};\n}\n\n.p-autocomplete.p-disabled .p-autocomplete-input-multiple {\n    opacity: 1;\n    background: ${dt('autocomplete.disabled.background')};\n    color: ${dt('autocomplete.disabled.color')};\n}\n\n.p-autocomplete-chip.p-chip {\n    padding-block-start: calc(${dt('autocomplete.padding.y')} / 2);\n    padding-block-end: calc(${dt('autocomplete.padding.y')} / 2);\n    border-radius: ${dt('autocomplete.chip.border.radius')};\n}\n\n.p-autocomplete-input-multiple:has(.p-autocomplete-chip) {\n    padding-inline-start: calc(${dt('autocomplete.padding.y')} / 2);\n    padding-inline-end: calc(${dt('autocomplete.padding.y')} / 2);\n}\n\n.p-autocomplete-chip-item.p-focus .p-autocomplete-chip {\n    background: ${dt('autocomplete.chip.focus.background')};\n    color: ${dt('autocomplete.chip.focus.color')};\n}\n\n.p-autocomplete-input-chip {\n    flex: 1 1 auto;\n    display: inline-flex;\n    padding-block-start: calc(${dt('autocomplete.padding.y')} / 2);\n    padding-block-end: calc(${dt('autocomplete.padding.y')} / 2);\n}\n\n.p-autocomplete-input-chip input {\n    border: 0 none;\n    outline: 0 none;\n    background: transparent;\n    margin: 0;\n    padding: 0;\n    box-shadow: none;\n    border-radius: 0;\n    width: 100%;\n    font-family: inherit;\n    font-feature-settings: inherit;\n    font-size: 1rem;\n    color: inherit;\n}\n\n.p-autocomplete-input-chip input::placeholder {\n    color: ${dt('autocomplete.placeholder.color')};\n}\n\n.p-autocomplete-empty-message {\n    padding: ${dt('autocomplete.empty.message.padding')};\n}\n\n.p-autocomplete-fluid {\n    display: flex;\n}\n\n.p-autocomplete-fluid:has(.p-autocomplete-dropdown) .p-autocomplete-input {\n    width: 1%;\n}\n\n.p-autocomplete:has(.p-inputtext-sm) .p-autocomplete-dropdown {\n    width: ${dt('autocomplete.dropdown.sm.width')};\n}\n\n.p-autocomplete:has(.p-inputtext-sm) .p-autocomplete-dropdown .p-icon {\n    font-size: ${dt('form.field.sm.font.size')};\n    width: ${dt('form.field.sm.font.size')};\n    height: ${dt('form.field.sm.font.size')};\n}\n\n.p-autocomplete:has(.p-inputtext-lg) .p-autocomplete-dropdown {\n    width: ${dt('autocomplete.dropdown.lg.width')};\n}\n\n.p-autocomplete:has(.p-inputtext-lg) .p-autocomplete-dropdown .p-icon {\n    font-size: ${dt('form.field.lg.font.size')};\n    width: ${dt('form.field.lg.font.size')};\n    height: ${dt('form.field.lg.font.size')};\n}\n\n.p-autocomplete-clear-icon {\n    position: absolute;\n    top: 50%;\n    margin-top: -0.5rem;\n    cursor: pointer;\n    right: ${dt('autocomplete.padding.x')};\n    color: ${dt('autocomplete.dropdown.color')};\n}\n\n.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-clear-icon {\n    right: calc(${dt('autocomplete.padding.x')} + ${dt('autocomplete.dropdown.width')});\n}\n\np-autocomplete.ng-invalid.ng-dirty .p-autocomplete-input,\np-autocomplete.ng-invalid.ng-dirty .p-autocomplete-input-multiple {\n    border-color: ${dt('autocomplete.invalid.border.color')};\n}\n\np-autocomplete.ng-invalid.ng-dirty .p-autocomplete-input:enabled:focus,\np-autocomplete.ng-invalid.ng-dirty:not(.p-disabled).p-focus .p-autocomplete-input-multiple {\n    border-color: ${dt('autocomplete.focus.border.color')};\n}\n\np-autocomplete.ng-invalid.ng-dirty .p-autocomplete-input-chip input::placeholder {\n    color: ${dt('autocomplete.invalid.placeholder.color')};\n}\n\np-autocomplete.ng-invalid.ng-dirty .p-autocomplete-input::placeholder {\n    color: ${dt('autocomplete.invalid.placeholder.color')};\n}`;\n\nconst inlineStyles = {\n    root: { position: 'relative' }\n};\n\nconst classes = {\n    root: ({ instance }) => ({\n        'p-autocomplete p-component p-inputwrapper': true,\n        'p-disabled': instance.disabled,\n        'p-focus': instance.focused,\n        'p-inputwrapper-filled': instance.filled,\n        'p-inputwrapper-focus': (instance.focused && !instance.disabled) || instance.autofocus || instance.overlayVisible,\n        'p-autocomplete-open': instance.overlayVisible,\n        'p-autocomplete-clearable': instance.showClear && !instance.disabled,\n        // 'p-invalid': instance.invalid,\n        'p-autocomplete-fluid': instance.hasFluid\n    }),\n    pcInput: 'p-autocomplete-input',\n    inputMultiple: ({ instance }) => ({\n        'p-autocomplete-input-multiple': true,\n        'p-variant-filled': (instance.variant ?? (instance.config.inputStyle() || instance.config.inputVariant())) === 'filled'\n    }),\n    chipItem: ({ instance, i }) => [\n        'p-autocomplete-chip-item',\n        {\n            'p-focus': instance.focusedMultipleOptionIndex === i\n        }\n    ],\n    pcChip: 'p-autocomplete-chip',\n    chipIcon: 'p-autocomplete-chip-icon',\n    inputChip: 'p-autocomplete-input-chip',\n    loader: 'p-autocomplete-loader',\n    dropdown: 'p-autocomplete-dropdown',\n    overlay: 'p-autocomplete-overlay p-component',\n    list: 'p-autocomplete-list',\n    optionGroup: 'p-autocomplete-option-group',\n    option: ({ instance, option, i, getItemOptions }) => ({\n        'p-autocomplete-option': true,\n        'p-autocomplete-option-selected': instance.isSelected(option),\n        'p-focus': instance.focusedOptionIndex === instance.getOptionIndex(i, getItemOptions),\n        'p-disabled': instance.isOptionDisabled(option)\n    }),\n    emptyMessage: 'p-autocomplete-empty-message'\n};\n\n@Injectable()\nexport class AutoCompleteStyle extends BaseStyle {\n    name = 'autocomplete';\n\n    theme = theme;\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * AutoComplete is an input component that provides real-time suggestions while being typed.\n *\n * [Live Demo](https://www.primeng.org/autocomplete/)\n *\n * @module autocompletestyle\n *\n */\nexport enum AutoCompleteClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-autocomplete',\n    /**\n     * Class name of the input element\n     */\n    pcInput = 'p-autocomplete-input',\n    /**\n     * Class name of the input multiple element\n     */\n    inputMultiple = 'p-autocomplete-input-multiple',\n    /**\n     * Class name of the chip item element\n     */\n    chipItem = 'p-autocomplete-chip-item',\n    /**\n     * Class name of the chip element\n     */\n    pcChip = 'p-autocomplete-chip',\n    /**\n     * Class name of the chip icon element\n     */\n    chipIcon = 'p-autocomplete-chip-icon',\n    /**\n     * Class name of the input chip element\n     */\n    inputChip = 'p-autocomplete-input-chip',\n    /**\n     * Class name of the loader element\n     */\n    loader = 'p-autocomplete-loader',\n    /**\n     * Class name of the dropdown element\n     */\n    dropdown = 'p-autocomplete-dropdown',\n    /**\n     * Class name of the panel element\n     */\n    panel = 'p-autocomplete-overlay',\n    /**\n     * Class name of the list element\n     */\n    list = 'p-autocomplete-list',\n    /**\n     * Class name of the option group element\n     */\n    optionGroup = 'p-autocomplete-option-group',\n    /**\n     * Class name of the option element\n     */\n    option = 'p-autocomplete-option',\n    /**\n     * Class name of the empty message element\n     */\n    emptyMessage = 'p-autocomplete-empty-message'\n}\n\nexport interface AutoCompleteStyle extends BaseStyle {}\n","import { AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n    AfterContentInit,\n    AfterViewChecked,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ContentChild,\n    ContentChildren,\n    effect,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    inject,\n    Input,\n    NgModule,\n    NgZone,\n    numberAttribute,\n    OnDestroy,\n    Output,\n    QueryList,\n    signal,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { equals, findLastIndex, findSingle, focus, isEmpty, isNotEmpty, resolveFieldData, uuid } from '@primeuix/utils';\nimport { OverlayOptions, OverlayService, PrimeTemplate, ScrollerOptions, SharedModule, TranslationKeys } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Chip } from 'primeng/chip';\nimport { PrimeNG } from 'primeng/config';\nimport { ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ChevronDownIcon, SpinnerIcon, TimesCircleIcon, TimesIcon } from 'primeng/icons';\nimport { InputText } from 'primeng/inputtext';\nimport { Overlay } from 'primeng/overlay';\nimport { Ripple } from 'primeng/ripple';\nimport { Scroller } from 'primeng/scroller';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { AutoCompleteCompleteEvent, AutoCompleteDropdownClickEvent, AutoCompleteLazyLoadEvent, AutoCompleteSelectEvent, AutoCompleteUnselectEvent } from './autocomplete.interface';\nimport { AutoCompleteStyle } from './style/autocompletestyle';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => AutoComplete),\n    multi: true\n};\n/**\n * AutoComplete is an input component that provides real-time suggestions when being typed.\n * @group Components\n */\n@Component({\n    selector: 'p-autoComplete, p-autocomplete, p-auto-complete',\n    standalone: true,\n    imports: [CommonModule, Overlay, InputText, Ripple, Scroller, AutoFocus, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon, Chip, SharedModule],\n    template: `\n        <div #container [ngClass]=\"rootClass\" [ngStyle]=\"style\" style=\"position: relative;\" [class]=\"styleClass\" (click)=\"onContainerClick($event)\">\n            <input\n                *ngIf=\"!multiple\"\n                #focusInput\n                [pAutoFocus]=\"autofocus\"\n                pInputText\n                [ngClass]=\"'p-autocomplete-input'\"\n                [ngStyle]=\"inputStyle\"\n                [class]=\"inputStyleClass\"\n                [type]=\"type\"\n                [attr.value]=\"inputValue()\"\n                [variant]=\"variant\"\n                [attr.id]=\"inputId\"\n                [autocomplete]=\"autocomplete\"\n                [required]=\"required\"\n                [name]=\"name\"\n                aria-autocomplete=\"list\"\n                role=\"combobox\"\n                [attr.placeholder]=\"placeholder\"\n                [pSize]=\"size\"\n                [attr.maxlength]=\"maxlength\"\n                [tabindex]=\"!disabled ? tabindex : -1\"\n                [readonly]=\"readonly\"\n                [disabled]=\"disabled\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.aria-required]=\"required\"\n                [attr.aria-expanded]=\"overlayVisible ?? false\"\n                [attr.aria-controls]=\"overlayVisible ? id + '_list' : null\"\n                [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n                (input)=\"onInput($event)\"\n                (keydown)=\"onKeyDown($event)\"\n                (change)=\"onInputChange($event)\"\n                (focus)=\"onInputFocus($event)\"\n                (blur)=\"onInputBlur($event)\"\n                (paste)=\"onInputPaste($event)\"\n                (keyup)=\"onInputKeyUp($event)\"\n                [fluid]=\"hasFluid\"\n            />\n            <ng-container *ngIf=\"filled && !disabled && showClear && !loading\">\n                <TimesIcon *ngIf=\"!clearIconTemplate && !_clearIconTemplate\" [styleClass]=\"'p-autocomplete-clear-icon'\" (click)=\"clear()\" [attr.aria-hidden]=\"true\" />\n                <span *ngIf=\"clearIconTemplate || _clearIconTemplate\" class=\"p-autocomplete-clear-icon\" (click)=\"clear()\" [attr.aria-hidden]=\"true\">\n                    <ng-template *ngTemplateOutlet=\"clearIconTemplate || _clearIconTemplate\"></ng-template>\n                </span>\n            </ng-container>\n\n            <ul\n                *ngIf=\"multiple\"\n                #multiContainer\n                [ngClass]=\"inputMultipleClass\"\n                [tabindex]=\"-1\"\n                role=\"listbox\"\n                [attr.aria-orientation]=\"'horizontal'\"\n                [attr.aria-activedescendant]=\"focused ? focusedMultipleOptionId : undefined\"\n                (focus)=\"onMultipleContainerFocus($event)\"\n                (blur)=\"onMultipleContainerBlur($event)\"\n                (keydown)=\"onMultipleContainerKeyDown($event)\"\n            >\n                <li\n                    #token\n                    *ngFor=\"let option of modelValue(); let i = index\"\n                    [ngClass]=\"{ 'p-autocomplete-chip-item': true, 'p-focus': focusedMultipleOptionIndex() === i }\"\n                    [attr.id]=\"id + '_multiple_option_' + i\"\n                    role=\"option\"\n                    [attr.aria-label]=\"getOptionLabel(option)\"\n                    [attr.aria-setsize]=\"modelValue().length\"\n                    [attr.aria-posinset]=\"i + 1\"\n                    [attr.aria-selected]=\"true\"\n                >\n                    <ng-container *ngTemplateOutlet=\"selectedItemTemplate || _selectedItemTemplate; context: { $implicit: option }\"></ng-container>\n                    <p-chip styleClass=\"p-autocomplete-chip\" *ngIf=\"!selectedItemTemplate && !_selectedItemTemplate\" [label]=\"getOptionLabel(option)\" [removable]=\"true\">\n                        <ng-container *ngIf=\"!removeIconTemplate && !_removeIconTemplate\">\n                            <ng-template #removeicon>\n                                <span class=\"p-autocomplete-chip-icon\" (click)=\"!readonly ? removeOption($event, i) : ''\">\n                                    <TimesCircleIcon [styleClass]=\"'p-autocomplete-chip-icon'\" [attr.aria-hidden]=\"true\" />\n                                </span>\n                            </ng-template>\n                        </ng-container>\n                    </p-chip>\n                    <span *ngIf=\"removeIconTemplate || _removeIconTemplate\" [attr.aria-hidden]=\"true\">\n                        <ng-template *ngTemplateOutlet=\"removeIconTemplate || _removeIconTemplate; context: { class: 'p-autocomplete-chip-icon' }\"></ng-template>\n                    </span>\n                </li>\n                <li class=\"p-autocomplete-input-chip\" role=\"option\">\n                    <input\n                        #focusInput\n                        [pAutoFocus]=\"autofocus\"\n                        [ngClass]=\"inputClass\"\n                        [ngStyle]=\"inputStyle\"\n                        [class]=\"inputStyleClass\"\n                        [attr.type]=\"type\"\n                        [attr.id]=\"inputId\"\n                        [autocomplete]=\"autocomplete\"\n                        [required]=\"required\"\n                        [attr.name]=\"name\"\n                        role=\"combobox\"\n                        [attr.placeholder]=\"!filled ? placeholder : null\"\n                        aria-autocomplete=\"list\"\n                        [attr.maxlength]=\"maxlength\"\n                        [tabindex]=\"!disabled ? tabindex : -1\"\n                        [readonly]=\"readonly\"\n                        [disabled]=\"disabled\"\n                        [attr.aria-label]=\"ariaLabel\"\n                        [attr.aria-labelledby]=\"ariaLabelledBy\"\n                        [attr.aria-required]=\"required\"\n                        [attr.aria-expanded]=\"overlayVisible ?? false\"\n                        [attr.aria-controls]=\"overlayVisible ? id + '_list' : null\"\n                        [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n                        (input)=\"onInput($event)\"\n                        (keydown)=\"onKeyDown($event)\"\n                        (change)=\"onInputChange($event)\"\n                        (focus)=\"onInputFocus($event)\"\n                        (blur)=\"onInputBlur($event)\"\n                        (paste)=\"onInputPaste($event)\"\n                        (keyup)=\"onInputKeyUp($event)\"\n                    />\n                </li>\n            </ul>\n            <ng-container *ngIf=\"loading\">\n                <SpinnerIcon *ngIf=\"!loadingIconTemplate && !_loadingIconTemplate\" [styleClass]=\"'p-autocomplete-loader'\" [spin]=\"true\" [attr.aria-hidden]=\"true\" />\n                <span *ngIf=\"loadingIconTemplate || _loadingIconTemplate\" class=\"p-autocomplete-loader pi-spin \" [attr.aria-hidden]=\"true\">\n                    <ng-template *ngTemplateOutlet=\"loadingIconTemplate || _loadingIconTemplate\"></ng-template>\n                </span>\n            </ng-container>\n            <button #ddBtn type=\"button\" [attr.aria-label]=\"dropdownAriaLabel\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\">\n                <span *ngIf=\"dropdownIcon\" [ngClass]=\"dropdownIcon\" [attr.aria-hidden]=\"true\"></span>\n                <ng-container *ngIf=\"!dropdownIcon\">\n                    <ChevronDownIcon *ngIf=\"!dropdownIconTemplate && !_dropdownIconTemplate\" />\n                    <ng-template *ngTemplateOutlet=\"dropdownIconTemplate || _dropdownIconTemplate\"></ng-template>\n                </ng-container>\n            </button>\n            <p-overlay\n                #overlay\n                [(visible)]=\"overlayVisible\"\n                [options]=\"overlayOptions\"\n                [target]=\"'@parent'\"\n                [appendTo]=\"appendTo\"\n                [showTransitionOptions]=\"showTransitionOptions\"\n                [hideTransitionOptions]=\"hideTransitionOptions\"\n                (onAnimationStart)=\"onOverlayAnimationStart($event)\"\n                (onHide)=\"hide()\"\n            >\n                <ng-template #content>\n                    <div [ngClass]=\"panelClass\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\">\n                        <ng-container *ngTemplateOutlet=\"headerTemplate || _headerTemplate\"></ng-container>\n                        <div class=\"p-autocomplete-list-container\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\">\n                            <p-scroller\n                                *ngIf=\"virtualScroll\"\n                                #scroller\n                                [items]=\"visibleOptions()\"\n                                [style]=\"{ height: scrollHeight }\"\n                                [itemSize]=\"virtualScrollItemSize || _itemSize\"\n                                [autoSize]=\"true\"\n                                [lazy]=\"lazy\"\n                                (onLazyLoad)=\"onLazyLoad.emit($event)\"\n                                [options]=\"virtualScrollOptions\"\n                            >\n                                <ng-template #content let-items let-scrollerOptions=\"options\">\n                                    <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n                                </ng-template>\n                                <ng-container *ngIf=\"loaderTemplate || _loaderTemplate\">\n                                    <ng-template #loader let-scrollerOptions=\"options\">\n                                        <ng-container *ngTemplateOutlet=\"loaderTemplate || _loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n                                    </ng-template>\n                                </ng-container>\n                            </p-scroller>\n                            <ng-container *ngIf=\"!virtualScroll\">\n                                <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: visibleOptions(), options: {} }\"></ng-container>\n                            </ng-container>\n                        </div>\n\n                        <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n                            <ul #items class=\"p-autocomplete-list\" [ngClass]=\"scrollerOptions.contentStyleClass\" [style]=\"scrollerOptions.contentStyle\" role=\"listbox\" [attr.id]=\"id + '_list'\" [attr.aria-label]=\"listLabel\">\n                                <ng-template ngFor let-option [ngForOf]=\"items\" let-i=\"index\">\n                                    <ng-container *ngIf=\"isOptionGroup(option)\">\n                                        <li [attr.id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\" class=\"p-autocomplete-option-group\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n                                            <span *ngIf=\"!groupTemplate\">{{ getOptionGroupLabel(option.optionGroup) }}</span>\n                                            <ng-container *ngTemplateOutlet=\"groupTemplate; context: { $implicit: option.optionGroup }\"></ng-container>\n                                        </li>\n                                    </ng-container>\n                                    <ng-container *ngIf=\"!isOptionGroup(option)\">\n                                        <li\n                                            pRipple\n                                            [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\"\n                                            [ngClass]=\"optionClass(option, i, scrollerOptions)\"\n                                            [attr.id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\"\n                                            role=\"option\"\n                                            [attr.aria-label]=\"getOptionLabel(option)\"\n                                            [attr.aria-selected]=\"isSelected(option)\"\n                                            [attr.aria-disabled]=\"isOptionDisabled(option)\"\n                                            [attr.data-p-focused]=\"focusedOptionIndex() === getOptionIndex(i, scrollerOptions)\"\n                                            [attr.aria-setsize]=\"ariaSetSize\"\n                                            [attr.aria-posinset]=\"getAriaPosInset(getOptionIndex(i, scrollerOptions))\"\n                                            (click)=\"onOptionSelect($event, option)\"\n                                            (mouseenter)=\"onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))\"\n                                        >\n                                            <span *ngIf=\"!itemTemplate && !_itemTemplate\">{{ getOptionLabel(option) }}</span>\n                                            <ng-container\n                                                *ngTemplateOutlet=\"\n                                                    itemTemplate || _itemTemplate;\n                                                    context: {\n                                                        $implicit: option,\n                                                        index: scrollerOptions.getOptions ? scrollerOptions.getOptions(i) : i\n                                                    }\n                                                \"\n                                            ></ng-container>\n                                        </li>\n                                    </ng-container>\n                                </ng-template>\n                                <li *ngIf=\"!items || (items && items.length === 0 && showEmptyMessage)\" class=\"p-autocomplete-empty-message\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n                                    <ng-container *ngIf=\"!emptyTemplate && !_emptyTemplate; else empty\">\n                                        {{ searchResultMessageText }}\n                                    </ng-container>\n                                    <ng-container #empty *ngTemplateOutlet=\"emptyTemplate || _emptyTemplate\"></ng-container>\n                                </li>\n                            </ul>\n                        </ng-template>\n                        <ng-container *ngTemplateOutlet=\"footerTemplate || _footerTemplate\"></ng-container>\n                    </div>\n                    <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\">\n                        {{ selectedMessageText }}\n                    </span>\n                </ng-template>\n            </p-overlay>\n        </div>\n    `,\n    providers: [AUTOCOMPLETE_VALUE_ACCESSOR, AutoCompleteStyle],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class AutoComplete extends BaseComponent implements AfterViewChecked, AfterContentInit, OnDestroy, ControlValueAccessor {\n    /**\n     * Minimum number of characters to initiate a search.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) minLength: number = 1;\n    /**\n     * Delay between keystrokes to wait before sending a query.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) delay: number = 300;\n    /**\n     * Inline style of the component.\n     * @group Props\n     */\n    @Input() style: { [klass: string]: any } | null | undefined;\n    /**\n     * Inline style of the overlay panel element.\n     * @group Props\n     */\n    @Input() panelStyle: { [klass: string]: any } | null | undefined;\n    /**\n     * Style class of the component.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n    /**\n     * Style class of the overlay panel element.\n     * @group Props\n     */\n    @Input() panelStyleClass: string | undefined;\n    /**\n     * Inline style of the input field.\n     * @group Props\n     */\n    @Input() inputStyle: { [klass: string]: any } | null | undefined;\n    /**\n     * Identifier of the focus input to match a label defined for the component.\n     * @group Props\n     */\n    @Input() inputId: string | undefined;\n    /**\n     * Inline style of the input field.\n     * @group Props\n     */\n    @Input() inputStyleClass: string | undefined;\n    /**\n     * Hint text for the input field.\n     * @group Props\n     */\n    @Input() placeholder: string | undefined;\n    /**\n     * When present, it specifies that the input cannot be typed.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) readonly: boolean | undefined;\n    /**\n     * When present, it specifies that the component should be disabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n    /**\n     * Maximum height of the suggestions panel.\n     * @group Props\n     */\n    @Input() scrollHeight: string = '200px';\n    /**\n     * Defines if data is loaded and interacted with in lazy manner.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) lazy: boolean = false;\n    /**\n     * Whether the data should be loaded on demand during scroll.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) virtualScroll: boolean | undefined;\n    /**\n     * Height of an item in the list for VirtualScrolling.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) virtualScrollItemSize: number | undefined;\n    /**\n     * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n     * @group Props\n     */\n    @Input() virtualScrollOptions: ScrollerOptions | undefined;\n    /**\n     * Maximum number of character allows in the input field.\n     * @group Props\n     */\n    @Input({ transform: (value: unknown) => numberAttribute(value, null) }) maxlength: number | undefined;\n    /**\n     * Name of the input element.\n     * @group Props\n     */\n    @Input() name: string | undefined;\n    /**\n     * When present, it specifies that an input field must be filled out before submitting the form.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) required: boolean | undefined;\n    /**\n     * Defines the size of the component.\n     * @group Props\n     */\n    @Input() size: 'large' | 'small';\n    /**\n     * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n     * @group Props\n     */\n    @Input() appendTo: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;\n    /**\n     * When enabled, highlights the first item in the list by default.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autoHighlight: boolean | undefined;\n    /**\n     * When present, autocomplete clears the manual input if it does not match of the suggestions to force only accepting values from the suggestions.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) forceSelection: boolean | undefined;\n    /**\n     * Type of the input, defaults to \"text\".\n     * @group Props\n     */\n    @Input() type: string = 'text';\n    /**\n     * Whether to automatically manage layering.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autoZIndex: boolean = true;\n    /**\n     * Base zIndex value to use in layering.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) baseZIndex: number = 0;\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    @Input() ariaLabel: string | undefined;\n    /**\n     * Defines a string that labels the dropdown button for accessibility.\n     * @group Props\n     */\n    @Input() dropdownAriaLabel: string | undefined;\n    /**\n     * Specifies one or more IDs in the DOM that labels the input field.\n     * @group Props\n     */\n    @Input() ariaLabelledBy: string | undefined;\n    /**\n     * Icon class of the dropdown icon.\n     * @group Props\n     */\n    @Input() dropdownIcon: string | undefined;\n    /**\n     * Ensures uniqueness of selected items on multiple mode.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) unique: boolean = true;\n    /**\n     * Whether to display options as grouped when nested options are provided.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) group: boolean | undefined;\n    /**\n     * Whether to run a query when input receives focus.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) completeOnFocus: boolean = false;\n    /**\n     * When enabled, a clear icon is displayed to clear the value.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showClear: boolean = false;\n    /**\n     * Field of a suggested object to resolve and display.\n     * @group Props\n     * @deprecated use optionLabel property instead\n     */\n    @Input() field: string | undefined;\n    /**\n     * Displays a button next to the input field when enabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) dropdown: boolean | undefined;\n    /**\n     * Whether to show the empty message or not.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showEmptyMessage: boolean | undefined = true;\n    /**\n     * Specifies the behavior dropdown button. Default \"blank\" mode sends an empty string and \"current\" mode sends the input value.\n     * @group Props\n     */\n    @Input() dropdownMode: string = 'blank';\n    /**\n     * Specifies if multiple values can be selected.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) multiple: boolean | undefined;\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) tabindex: number | undefined;\n    /**\n     * A property to uniquely identify a value in options.\n     * @group Props\n     */\n    @Input() dataKey: string | undefined;\n    /**\n     * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n     * @group Props\n     */\n    @Input() emptyMessage: string | undefined;\n    /**\n     * Transition options of the show animation.\n     * @group Props\n     */\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n    /**\n     * Transition options of the hide animation.\n     * @group Props\n     */\n    @Input() hideTransitionOptions: string = '.1s linear';\n    /**\n     * When present, it specifies that the component should automatically get focus on load.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n    /**\n     * Used to define a string that autocomplete attribute the current element.\n     * @group Props\n     */\n    @Input() autocomplete: string = 'off';\n    /**\n     * Name of the options field of an option group.\n     * @group Props\n     */\n    @Input() optionGroupChildren: string | undefined = 'items';\n    /**\n     * Name of the label field of an option group.\n     * @group Props\n     */\n    @Input() optionGroupLabel: string | undefined = 'label';\n    /**\n     * Options for the overlay element.\n     * @group Props\n     */\n    @Input() overlayOptions: OverlayOptions | undefined;\n    /**\n     * An array of suggestions to display.\n     * @group Props\n     */\n    @Input() get suggestions(): any[] {\n        return this._suggestions();\n    }\n    set suggestions(value: any[]) {\n        this._suggestions.set(value);\n        this.handleSuggestionsChange();\n    }\n    /**\n     * Element dimensions of option for virtual scrolling.\n     * @group Props\n     * @deprecated use virtualScrollItemSize property instead.\n     */\n    @Input() get itemSize(): number {\n        return this._itemSize as number;\n    }\n    set itemSize(val: number) {\n        this._itemSize = val;\n        console.log('The itemSize property is deprecated, use virtualScrollItemSize property instead.');\n    }\n    /**\n     * Property name or getter function to use as the label of an option.\n     * @group Props\n     */\n    @Input() optionLabel: string | ((item: any) => string) | undefined;\n    /**\n     * Property name or getter function to use as the value of an option.\n     * @group Props\n     */\n    @Input() optionValue: string | ((item: any) => string) | undefined;\n    /**\n     * Unique identifier of the component.\n     * @group Props\n     */\n    @Input() id: string | undefined;\n    /**\n     * Text to display when the search is active. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue '{0} results are available'\n     */\n    @Input() searchMessage: string | undefined;\n    /**\n     * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue 'No selected item'\n     */\n    @Input() emptySelectionMessage: string | undefined;\n    /**\n     * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue '{0} items selected'\n     */\n    @Input() selectionMessage: string | undefined;\n    /**\n     * Whether to focus on the first visible or selected element when the overlay panel is shown.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autoOptionFocus: boolean | undefined = false;\n    /**\n     * When enabled, the focused option is selected.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) selectOnFocus: boolean | undefined;\n    /**\n     * Locale to use in searching. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) searchLocale: boolean | undefined;\n    /**\n     * Property name or getter function to use as the disabled flag of an option, defaults to false when not defined.\n     * @group Props\n     */\n    @Input() optionDisabled: string | undefined;\n    /**\n     * When enabled, the hovered option will be focused.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) focusOnHover: boolean | undefined = true;\n    /**\n     * Whether typeahead is active or not.\n     * @defaultValue true\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) typeahead: boolean = true;\n    /**\n     * Specifies the input variant of the component.\n     * @group Props\n     */\n    @Input() variant: 'filled' | 'outlined';\n    /**\n     * Spans 100% width of the container when enabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) fluid: boolean = false;\n    /**\n     * Callback to invoke to search for suggestions.\n     * @param {AutoCompleteCompleteEvent} event - Custom complete event.\n     * @group Emits\n     */\n    @Output() completeMethod: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter<AutoCompleteCompleteEvent>();\n    /**\n     * Callback to invoke when a suggestion is selected.\n     * @param {AutoCompleteSelectEvent} event - custom select event.\n     * @group Emits\n     */\n    @Output() onSelect: EventEmitter<AutoCompleteSelectEvent> = new EventEmitter<AutoCompleteSelectEvent>();\n    /**\n     * Callback to invoke when a selected value is removed.\n     * @param {AutoCompleteUnselectEvent} event - custom unselect event.\n     * @group Emits\n     */\n    @Output() onUnselect: EventEmitter<AutoCompleteUnselectEvent> = new EventEmitter<AutoCompleteUnselectEvent>();\n    /**\n     * Callback to invoke when the component receives focus.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onFocus: EventEmitter<Event> = new EventEmitter();\n    /**\n     * Callback to invoke when the component loses focus.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onBlur: EventEmitter<Event> = new EventEmitter();\n    /**\n     * Callback to invoke to when dropdown button is clicked.\n     * @param {AutoCompleteDropdownClickEvent} event - custom dropdown click event.\n     * @group Emits\n     */\n    @Output() onDropdownClick: EventEmitter<AutoCompleteDropdownClickEvent> = new EventEmitter<AutoCompleteDropdownClickEvent>();\n    /**\n     * Callback to invoke when clear button is clicked.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onClear: EventEmitter<Event | undefined> = new EventEmitter<Event | undefined>();\n    /**\n     * Callback to invoke on input key up.\n     * @param {KeyboardEvent} event - Keyboard event.\n     * @group Emits\n     */\n    @Output() onKeyUp: EventEmitter<KeyboardEvent> = new EventEmitter();\n    /**\n     * Callback to invoke on overlay is shown.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onShow: EventEmitter<Event> = new EventEmitter<Event>();\n    /**\n     * Callback to invoke on overlay is hidden.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onHide: EventEmitter<Event> = new EventEmitter<Event>();\n    /**\n     * Callback to invoke on lazy load data.\n     * @param {AutoCompleteLazyLoadEvent} event - Lazy load event.\n     * @group Emits\n     */\n    @Output() onLazyLoad: EventEmitter<AutoCompleteLazyLoadEvent> = new EventEmitter<AutoCompleteLazyLoadEvent>();\n\n    @ViewChild('container') containerEL: Nullable<ElementRef>;\n\n    @ViewChild('focusInput') inputEL: Nullable<ElementRef>;\n\n    @ViewChild('multiIn') multiInputEl: Nullable<ElementRef>;\n\n    @ViewChild('multiContainer') multiContainerEL: Nullable<ElementRef>;\n\n    @ViewChild('ddBtn') dropdownButton: Nullable<ElementRef>;\n\n    @ViewChild('items') itemsViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scroller') scroller: Nullable<Scroller>;\n\n    @ViewChild('overlay') overlayViewChild!: Overlay;\n\n    _itemSize: Nullable<number>;\n\n    itemsWrapper: Nullable<HTMLDivElement>;\n\n    /**\n     * Custom item template.\n     * @group Templates\n     */\n    @ContentChild('item') itemTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom empty message template.\n     * @group Templates\n     */\n    @ContentChild('empty') emptyTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom header template.\n     * @group Templates\n     */\n    @ContentChild('header') headerTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom footer template.\n     * @group Templates\n     */\n    @ContentChild('footer') footerTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom selected item template.\n     * @group Templates\n     */\n    @ContentChild('selecteditem') selectedItemTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom group item template.\n     * @group Templates\n     */\n    @ContentChild('group') groupTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom loader template.\n     * @group Templates\n     */\n    @ContentChild('loader') loaderTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom remove icon template.\n     * @group Templates\n     */\n    @ContentChild('removeicon') removeIconTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom loading icon template.\n     * @group Templates\n     */\n    @ContentChild('loadingicon') loadingIconTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom clear icon template.\n     * @group Templates\n     */\n    @ContentChild('clearicon') clearIconTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom dropdown icon template.\n     * @group Templates\n     */\n    @ContentChild('dropdownicon') dropdownIconTemplate: Nullable<TemplateRef<any>>;\n\n    private primeng = inject(PrimeNG);\n\n    value: string | any;\n\n    _suggestions = signal<any>(null);\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    timeout: Nullable<any>;\n\n    overlayVisible: boolean | undefined;\n\n    suggestionsUpdated: Nullable<boolean>;\n\n    highlightOption: any;\n\n    highlightOptionChanged: Nullable<boolean>;\n\n    focused: boolean = false;\n\n    _filled: boolean;\n\n    get filled() {\n        return this._filled;\n    }\n    set filled(value: any) {\n        this._filled = value;\n    }\n\n    loading: Nullable<boolean>;\n\n    scrollHandler: Nullable<ConnectedOverlayScrollHandler>;\n\n    listId: string | undefined;\n\n    searchTimeout: any;\n\n    dirty: boolean = false;\n\n    _itemTemplate: TemplateRef<any>;\n\n    _groupTemplate: TemplateRef<any>;\n\n    _selectedItemTemplate: TemplateRef<any>;\n\n    _headerTemplate: TemplateRef<any>;\n\n    _emptyTemplate: TemplateRef<any>;\n\n    _footerTemplate: TemplateRef<any>;\n\n    _loaderTemplate: TemplateRef<any>;\n\n    _removeIconTemplate: TemplateRef<any>;\n\n    _loadingIconTemplate: TemplateRef<any>;\n\n    _clearIconTemplate: TemplateRef<any>;\n\n    _dropdownIconTemplate: TemplateRef<any>;\n\n    modelValue = signal<any>(null);\n\n    focusedMultipleOptionIndex = signal<number>(-1);\n\n    focusedOptionIndex = signal<number>(-1);\n\n    _componentStyle = inject(AutoCompleteStyle);\n\n    visibleOptions = computed(() => {\n        return this.group ? this.flatOptions(this._suggestions()) : this._suggestions() || [];\n    });\n\n    inputValue = computed(() => {\n        const modelValue = this.modelValue();\n        const selectedOption = this.optionValueSelected ? (this.suggestions || []).find((item: any) => resolveFieldData(item, this.optionValue) === modelValue) : modelValue;\n\n        if (isNotEmpty(modelValue)) {\n            if (typeof modelValue === 'object' || this.optionValueSelected) {\n                const label = this.getOptionLabel(selectedOption);\n\n                return label != null ? label : modelValue;\n            } else {\n                return modelValue;\n            }\n        } else {\n            return '';\n        }\n    });\n\n    get focusedMultipleOptionId() {\n        return this.focusedMultipleOptionIndex() !== -1 ? `${this.id}_multiple_option_${this.focusedMultipleOptionIndex()}` : null;\n    }\n\n    get focusedOptionId() {\n        return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;\n    }\n\n    get rootClass() {\n        return this._componentStyle.classes.root({ instance: this });\n    }\n\n    get inputMultipleClass() {\n        return this._componentStyle.classes.inputMultiple({ instance: this });\n    }\n\n    get panelClass() {\n        return {\n            'p-autocomplete-overlay p-component': true,\n            'p-input-filled': this.config.inputStyle() === 'filled' || this.config.inputVariant() === 'filled',\n            'p-ripple-disabled': this.config.ripple() === false\n        };\n    }\n\n    get inputClass() {\n        return {\n            'p-autocomplete-input': !this.multiple,\n            'p-autocomplete-dd-input': this.dropdown\n        };\n    }\n\n    get searchResultMessageText() {\n        return isNotEmpty(this.visibleOptions()) && this.overlayVisible ? this.searchMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptySearchMessageText;\n    }\n\n    get searchMessageText() {\n        return this.searchMessage || this.config.translation.searchMessage || '';\n    }\n\n    get emptySearchMessageText() {\n        return this.emptyMessage || this.config.translation.emptySearchMessage || '';\n    }\n\n    get selectionMessageText() {\n        return this.selectionMessage || this.config.translation.selectionMessage || '';\n    }\n\n    get emptySelectionMessageText() {\n        return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';\n    }\n\n    get selectedMessageText() {\n        return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;\n    }\n\n    get ariaSetSize() {\n        return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;\n    }\n\n    get listLabel(): string {\n        return this.config.getTranslation(TranslationKeys.ARIA)['listLabel'];\n    }\n\n    get virtualScrollerDisabled() {\n        return !this.virtualScroll;\n    }\n\n    get optionValueSelected() {\n        return typeof this.modelValue() === 'string' && this.optionValue;\n    }\n\n    chipItemClass(index) {\n        return this._componentStyle.classes.chipItem({ instance: this, i: index });\n    }\n\n    optionClass(option, i, scrollerOptions) {\n        return {\n            'p-autocomplete-option': true,\n            'p-autocomplete-option-selected': this.isSelected(option),\n            'p-focus': this.focusedOptionIndex() === this.getOptionIndex(i, scrollerOptions),\n            'p-disabled': this.isOptionDisabled(option)\n        };\n    }\n\n    constructor(\n        public overlayService: OverlayService,\n        private zone: NgZone\n    ) {\n        super();\n        effect(() => {\n            this.filled = isNotEmpty(this.modelValue());\n        });\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.id = this.id || uuid('pn_id_');\n        this.cd.detectChanges();\n    }\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate> | undefined;\n\n    ngAfterContentInit() {\n        (this.templates as QueryList<PrimeTemplate>).forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this._itemTemplate = item.template;\n                    break;\n\n                case 'group':\n                    this._groupTemplate = item.template;\n                    break;\n\n                case 'selecteditem':\n                    this._selectedItemTemplate = item.template;\n                    break;\n\n                case 'selectedItem':\n                    this._selectedItemTemplate = item.template;\n                    break;\n\n                case 'header':\n                    this._headerTemplate = item.template;\n                    break;\n\n                case 'empty':\n                    this._emptyTemplate = item.template;\n                    break;\n\n                case 'footer':\n                    this._footerTemplate = item.template;\n                    break;\n\n                case 'loader':\n                    this._loaderTemplate = item.template;\n                    break;\n\n                case 'removetokenicon':\n                    this._removeIconTemplate = item.template;\n                    break;\n\n                case 'loadingicon':\n                    this._loadingIconTemplate = item.template;\n                    break;\n\n                case 'clearicon':\n                    this._clearIconTemplate = item.template;\n                    break;\n\n                case 'dropdownicon':\n                    this._dropdownIconTemplate = item.template;\n                    break;\n\n                default:\n                    this._itemTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    ngAfterViewChecked() {\n        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n        if (this.suggestionsUpdated && this.overlayViewChild) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    if (this.overlayViewChild) {\n                        this.overlayViewChild.alignOverlay();\n                    }\n                }, 1);\n                this.suggestionsUpdated = false;\n            });\n        }\n    }\n\n    handleSuggestionsChange() {\n        if (this.loading) {\n            this._suggestions()?.length > 0 || this.showEmptyMessage || !!this.emptyTemplate ? this.show() : this.hide();\n            const focusedOptionIndex = this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n            this.focusedOptionIndex.set(focusedOptionIndex);\n            this.suggestionsUpdated = true;\n            this.loading = false;\n            this.cd.markForCheck();\n        }\n    }\n\n    flatOptions(options) {\n        return (options || []).reduce((result, option, index) => {\n            result.push({ optionGroup: option, group: true, index });\n\n            const optionGroupChildren = this.getOptionGroupChildren(option);\n\n            optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n\n            return result;\n        }, []);\n    }\n\n    isOptionGroup(option) {\n        return this.optionGroupLabel && option.optionGroup && option.group;\n    }\n\n    findFirstOptionIndex() {\n        return this.visibleOptions().findIndex((option) => this.isValidOption(option));\n    }\n\n    findLastOptionIndex() {\n        return findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));\n    }\n\n    findFirstFocusedOptionIndex() {\n        const selectedIndex = this.findSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n    }\n\n    findLastFocusedOptionIndex() {\n        const selectedIndex = this.findSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n    }\n\n    findSelectedOptionIndex() {\n        return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\n    }\n\n    findNextOptionIndex(index) {\n        const matchedOptionIndex =\n            index < this.visibleOptions().length - 1\n                ? this.visibleOptions()\n                      .slice(index + 1)\n                      .findIndex((option) => this.isValidOption(option))\n                : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n    }\n\n    findPrevOptionIndex(index) {\n        const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n    }\n\n    isValidSelectedOption(option) {\n        return this.isValidOption(option) && this.isSelected(option);\n    }\n\n    isValidOption(option) {\n        return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n    }\n\n    isOptionDisabled(option) {\n        return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n    }\n\n    isSelected(option) {\n        if (this.multiple) {\n            return this.unique ? this.modelValue()?.find((model) => equals(model, this.getOptionValue(option), this.equalityKey())) : false;\n        }\n        return equals(this.modelValue(), this.getOptionValue(option), this.equalityKey());\n    }\n\n    isOptionMatched(option, value) {\n        return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.searchLocale) === value.toLocaleLowerCase(this.searchLocale);\n    }\n\n    isInputClicked(event) {\n        return event.target === this.inputEL.nativeElement;\n    }\n    isDropdownClicked(event) {\n        return this.dropdownButton?.nativeElement ? event.target === this.dropdownButton.nativeElement || this.dropdownButton.nativeElement.contains(event.target) : false;\n    }\n    equalityKey() {\n        return this.dataKey; // TODO: The 'optionValue' properties can be added.\n    }\n\n    onContainerClick(event) {\n        if (this.disabled || this.loading || this.isInputClicked(event) || this.isDropdownClicked(event)) {\n            return;\n        }\n\n        if (!this.overlayViewChild || !this.overlayViewChild.overlayViewChild?.nativeElement.contains(event.target)) {\n            focus(this.inputEL.nativeElement);\n        }\n    }\n\n    handleDropdownClick(event) {\n        let query = undefined;\n\n        if (this.overlayVisible) {\n            this.hide(true);\n        } else {\n            focus(this.inputEL.nativeElement);\n            query = this.inputEL.nativeElement.value;\n\n            if (this.dropdownMode === 'blank') this.search(event, '', 'dropdown');\n            else if (this.dropdownMode === 'current') this.search(event, query, 'dropdown');\n        }\n\n        this.onDropdownClick.emit({ originalEvent: event, query });\n    }\n\n    onInput(event) {\n        if (this.typeahead) {\n            if (this.searchTimeout) {\n                clearTimeout(this.searchTimeout);\n            }\n\n            let query = event.target.value;\n            if (this.maxlength !== null) {\n                query = query.split('').slice(0, this.maxlength).join('');\n            }\n\n            if (!this.multiple && !this.forceSelection) {\n                this.updateModel(query);\n            }\n\n            if (query.length === 0 && !this.multiple) {\n                this.onClear.emit();\n\n                setTimeout(() => {\n                    this.hide();\n                }, this.delay / 2);\n            } else {\n                if (query.length >= this.minLength) {\n                    this.focusedOptionIndex.set(-1);\n\n                    this.searchTimeout = setTimeout(() => {\n                        this.search(event, query, 'input');\n                    }, this.delay);\n                } else {\n                    this.hide();\n                }\n            }\n        }\n    }\n\n    onInputChange(event) {\n        if (this.forceSelection) {\n            let valid = false;\n\n            if (this.visibleOptions()) {\n                const matchedValue = this.visibleOptions().find((option) => this.isOptionMatched(option, this.inputEL.nativeElement.value || ''));\n\n                if (matchedValue !== undefined) {\n                    valid = true;\n                    !this.isSelected(matchedValue) && this.onOptionSelect(event, matchedValue);\n                }\n            }\n\n            if (!valid) {\n                this.inputEL.nativeElement.value = '';\n                !this.multiple && this.updateModel(null);\n            }\n        }\n    }\n\n    onInputFocus(event) {\n        if (this.disabled) {\n            // For ScreenReaders\n            return;\n        }\n\n        if (!this.dirty && this.completeOnFocus) {\n            this.search(event, event.target.value, 'focus');\n        }\n        this.dirty = true;\n        this.focused = true;\n        const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n        this.focusedOptionIndex.set(focusedOptionIndex);\n        this.overlayVisible && this.scrollInView(this.focusedOptionIndex());\n        this.onFocus.emit(event);\n    }\n\n    onMultipleContainerFocus(event) {\n        if (this.disabled) {\n            // For ScreenReaders\n            return;\n        }\n\n        this.focused = true;\n    }\n\n    onMultipleContainerBlur(event) {\n        this.focusedMultipleOptionIndex.set(-1);\n        this.focused = false;\n    }\n\n    onMultipleContainerKeyDown(event) {\n        if (this.disabled) {\n            event.preventDefault();\n\n            return;\n        }\n\n        switch (event.code) {\n            case 'ArrowLeft':\n                this.onArrowLeftKeyOnMultiple(event);\n                break;\n\n            case 'ArrowRight':\n                this.onArrowRightKeyOnMultiple(event);\n                break;\n\n            case 'Backspace':\n                this.onBackspaceKeyOnMultiple(event);\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    onInputBlur(event) {\n        this.dirty = false;\n        this.focused = false;\n        this.focusedOptionIndex.set(-1);\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputPaste(event) {\n        this.onKeyDown(event);\n    }\n\n    onInputKeyUp(event) {\n        this.onKeyUp.emit(event);\n    }\n\n    onKeyDown(event) {\n        if (this.disabled) {\n            event.preventDefault();\n\n            return;\n        }\n\n        switch (event.code) {\n            case 'ArrowDown':\n                this.onArrowDownKey(event);\n                break;\n\n            case 'ArrowUp':\n                this.onArrowUpKey(event);\n                break;\n\n            case 'ArrowLeft':\n                this.onArrowLeftKey(event);\n                break;\n\n            case 'ArrowRight':\n                this.onArrowRightKey(event);\n                break;\n\n            case 'Home':\n                this.onHomeKey(event);\n                break;\n\n            case 'End':\n                this.onEndKey(event);\n                break;\n\n            case 'PageDown':\n                this.onPageDownKey(event);\n                break;\n\n            case 'PageUp':\n                this.onPageUpKey(event);\n                break;\n\n            case 'Enter':\n            case 'NumpadEnter':\n                this.onEnterKey(event);\n                break;\n\n            case 'Escape':\n                this.onEscapeKey(event);\n                break;\n\n            case 'Tab':\n                this.onTabKey(event);\n                break;\n\n            case 'Backspace':\n                this.onBackspaceKey(event);\n                break;\n\n            case 'ShiftLeft':\n            case 'ShiftRight':\n                //NOOP\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    onArrowDownKey(event) {\n        if (!this.overlayVisible) {\n            return;\n        }\n\n        const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();\n\n        this.changeFocusedOptionIndex(event, optionIndex);\n\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    onArrowUpKey(event) {\n        if (!this.overlayVisible) {\n            return;\n        }\n\n        if (event.altKey) {\n            if (this.focusedOptionIndex() !== -1) {\n                this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n            }\n\n            this.overlayVisible && this.hide();\n            event.preventDefault();\n        } else {\n            const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    get hasFluid() {\n        const nativeElement = this.el.nativeElement;\n        const fluidComponent = nativeElement.closest('p-fluid');\n        return this.fluid || !!fluidComponent;\n    }\n\n    onArrowLeftKey(event) {\n        const target = event.currentTarget;\n        this.focusedOptionIndex.set(-1);\n        if (this.multiple) {\n            if (isEmpty(target.value) && this.hasSelectedOption()) {\n                focus(this.multiContainerEL.nativeElement);\n                this.focusedMultipleOptionIndex.set(this.modelValue().length);\n            } else {\n                event.stopPropagation(); // To prevent onArrowLeftKeyOnMultiple method\n            }\n        }\n    }\n\n    onArrowRightKey(event) {\n        this.focusedOptionIndex.set(-1);\n\n        this.multiple && event.stopPropagation(); // To prevent onArrowRightKeyOnMultiple method\n    }\n\n    onHomeKey(event) {\n        const { currentTarget } = event;\n        const len = currentTarget.value.length;\n\n        currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);\n        this.focusedOptionIndex.set(-1);\n\n        event.preventDefault();\n    }\n\n    onEndKey(event) {\n        const { currentTarget } = event;\n        const len = currentTarget.value.length;\n\n        currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);\n        this.focusedOptionIndex.set(-1);\n\n        event.preventDefault();\n    }\n\n    onPageDownKey(event) {\n        this.scrollInView(this.visibleOptions().length - 1);\n        event.preventDefault();\n    }\n\n    onPageUpKey(event) {\n        this.scrollInView(0);\n        event.preventDefault();\n    }\n\n    onEnterKey(event) {\n        if (!this.typeahead) {\n            if (this.multiple) {\n                this.updateModel([...(this.modelValue() || []), event.target.value]);\n                this.inputEL.nativeElement.value = '';\n            }\n        }\n        if (!this.overlayVisible) {\n            this.onArrowDownKey(event);\n        } else {\n            if (this.focusedOptionIndex() !== -1) {\n                this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n            }\n\n            this.hide();\n        }\n\n        event.preventDefault();\n    }\n\n    onEscapeKey(event) {\n        this.overlayVisible && this.hide(true);\n        event.preventDefault();\n    }\n\n    onTabKey(event) {\n        if (this.focusedOptionIndex() !== -1) {\n            this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n        }\n\n        this.overlayVisible && this.hide();\n    }\n\n    onBackspaceKey(event) {\n        if (this.multiple) {\n            if (isNotEmpty(this.modelValue()) && !this.inputEL.nativeElement.value) {\n                const removedValue = this.modelValue()[this.modelValue().length - 1];\n                const newValue = this.modelValue().slice(0, -1);\n                this.updateModel(newValue);\n                this.onUnselect.emit({ originalEvent: event, value: removedValue });\n            }\n\n            event.stopPropagation(); // To prevent onBackspaceKeyOnMultiple method\n        }\n\n        if (!this.multiple && this.showClear && this.findSelectedOptionIndex() != -1) {\n            this.clear();\n        }\n    }\n\n    onArrowLeftKeyOnMultiple(event) {\n        const optionIndex = this.focusedMultipleOptionIndex() < 1 ? 0 : this.focusedMultipleOptionIndex() - 1;\n        this.focusedMultipleOptionIndex.set(optionIndex);\n    }\n\n    onArrowRightKeyOnMultiple(event) {\n        let optionIndex = this.focusedMultipleOptionIndex();\n        optionIndex++;\n\n        this.focusedMultipleOptionIndex.set(optionIndex);\n        if (optionIndex > this.modelValue().length - 1) {\n            this.focusedMultipleOptionIndex.set(-1);\n            focus(this.inputEL.nativeElement);\n        }\n    }\n\n    onBackspaceKeyOnMultiple(event) {\n        if (this.focusedMultipleOptionIndex() !== -1) {\n            this.removeOption(event, this.focusedMultipleOptionIndex());\n        }\n    }\n\n    onOptionSelect(event, option, isHide = true) {\n        const value = this.getOptionValue(option);\n\n        if (this.multiple) {\n            this.inputEL.nativeElement.value = '';\n\n            if (!this.isSelected(option)) {\n                this.updateModel([...(this.modelValue() || []), value]);\n            }\n        } else {\n            this.updateModel(value);\n        }\n\n        this.onSelect.emit({ originalEvent: event, value: option });\n\n        isHide && this.hide(true);\n    }\n\n    onOptionMouseEnter(event, index) {\n        if (this.focusOnHover) {\n            this.changeFocusedOptionIndex(event, index);\n        }\n    }\n\n    search(event, query, source) {\n        //allow empty string but not undefined or null\n        if (query === undefined || query === null) {\n            return;\n        }\n\n        //do not search blank values on input change\n        if (source === 'input' && query.trim().length === 0) {\n            return;\n        }\n        this.loading = true;\n        this.completeMethod.emit({ originalEvent: event, query });\n    }\n\n    removeOption(event, index) {\n        event.stopPropagation();\n\n        const removedOption = this.modelValue()[index];\n        const value = this.modelValue()\n            .filter((_, i) => i !== index)\n            .map((option) => this.getOptionValue(option));\n\n        this.updateModel(value);\n        this.onUnselect.emit({ originalEvent: event, value: removedOption });\n        focus(this.inputEL.nativeElement);\n    }\n\n    updateModel(value) {\n        this.value = value;\n        this.modelValue.set(value);\n        this.onModelChange(value);\n        this.updateInputValue();\n        this.cd.markForCheck();\n    }\n\n    updateInputValue() {\n        if (this.inputEL && this.inputEL.nativeElement) {\n            if (!this.multiple) {\n                this.inputEL.nativeElement.value = this.inputValue();\n            } else {\n                this.inputEL.nativeElement.value = '';\n            }\n        }\n    }\n\n    autoUpdateModel() {\n        if ((this.selectOnFocus || this.autoHighlight) && this.autoOptionFocus && !this.hasSelectedOption()) {\n            const focusedOptionIndex = this.findFirstFocusedOptionIndex();\n            this.focusedOptionIndex.set(focusedOptionIndex);\n            this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()], false);\n        }\n    }\n\n    scrollInView(index = -1) {\n        const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;\n        if (this.itemsViewChild && this.itemsViewChild.nativeElement) {\n            const element = findSingle(this.itemsViewChild.nativeElement, `li[id=\"${id}\"]`);\n            if (element) {\n                element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n            } else if (!this.virtualScrollerDisabled) {\n                setTimeout(() => {\n                    this.virtualScroll && this.scroller?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());\n                }, 0);\n            }\n        }\n    }\n\n    changeFocusedOptionIndex(event, index) {\n        if (this.focusedOptionIndex() !== index) {\n            this.focusedOptionIndex.set(index);\n            this.scrollInView();\n\n            if (this.selectOnFocus) {\n                this.onOptionSelect(event, this.visibleOptions()[index], false);\n            }\n        }\n    }\n\n    show(isFocus = false) {\n        this.dirty = true;\n        this.overlayVisible = true;\n        const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n        this.focusedOptionIndex.set(focusedOptionIndex);\n        isFocus && focus(this.inputEL.nativeElement);\n        if (isFocus) {\n            focus(this.inputEL.nativeElement);\n        }\n        this.onShow.emit();\n        this.cd.markForCheck();\n    }\n\n    hide(isFocus = false) {\n        const _hide = () => {\n            this.dirty = isFocus;\n            this.overlayVisible = false;\n            this.focusedOptionIndex.set(-1);\n            isFocus && focus(this.inputEL.nativeElement);\n            this.onHide.emit();\n            this.cd.markForCheck();\n        };\n\n        setTimeout(() => {\n            _hide();\n        }, 0); // For ScreenReaders\n    }\n\n    clear() {\n        this.updateModel(null);\n        this.inputEL.nativeElement.value = '';\n        this.onClear.emit();\n    }\n\n    writeValue(value: any): void {\n        this.value = value;\n        this.modelValue.set(value);\n        this.updateInputValue();\n        this.cd.markForCheck();\n    }\n\n    hasSelectedOption() {\n        return isNotEmpty(this.modelValue());\n    }\n\n    getAriaPosInset(index) {\n        return (\n            (this.optionGroupLabel\n                ? index -\n                  this.visibleOptions()\n                      .slice(0, index)\n                      .filter((option) => this.isOptionGroup(option)).length\n                : index) + 1\n        );\n    }\n\n    getOptionLabel(option: any) {\n        return this.field || this.optionLabel ? resolveFieldData(option, this.field || this.optionLabel) : option && option.label != undefined ? option.label : option;\n    }\n\n    getOptionValue(option) {\n        return this.optionValue ? resolveFieldData(option, this.optionValue) : option && option.value != undefined ? option.value : option;\n    }\n\n    getOptionIndex(index, scrollerOptions) {\n        return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label != undefined ? optionGroup.label : optionGroup;\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        if (event.toState === 'visible') {\n            this.itemsWrapper = <any>findSingle(this.overlayViewChild.overlayViewChild?.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-autocomplete-panel');\n\n            if (this.virtualScroll) {\n                this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);\n                this.scroller.viewInit();\n            }\n            if (this.visibleOptions() && this.visibleOptions().length) {\n                if (this.virtualScroll) {\n                    const selectedIndex = this.modelValue() ? this.focusedOptionIndex() : -1;\n\n                    if (selectedIndex !== -1) {\n                        this.scroller?.scrollToIndex(selectedIndex);\n                    }\n                } else {\n                    let selectedListItem = findSingle(this.itemsWrapper, '.p-autocomplete-item.p-highlight');\n\n                    if (selectedListItem) {\n                        selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });\n                    }\n                }\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        super.ngOnDestroy();\n    }\n}\n\n@NgModule({\n    imports: [AutoComplete],\n    exports: [AutoComplete, SharedModule]\n})\nexport class AutoCompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}