{"version":3,"file":"primeng-listbox.mjs","sources":["../../src/listbox/style/listboxstyle.ts","../../src/listbox/listbox.ts","../../src/listbox/primeng-listbox.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style as listbox_style } from '@primeuix/styles/listbox';\nimport { BaseStyle } from 'primeng/base';\n\nconst style = /*css*/ `\n    ${listbox_style}\n\n    /* For PrimeNG */\n    .p-listbox.ng-invalid.ng-dirty {\n        border-color: dt('listbox.invalid.border.color');\n    }\n\n    .p-listbox-header {\n        display: flex;\n        align-items: center;\n    }\n\n    .p-listbox-header > .p-iconfield {\n        flex-grow: 1;\n    }\n\n    .p-listbox-list-container {\n        height: 100%;\n    }\n\n    /* scrollHeight=\"flex\": the root fills its flex-constrained parent and lays out\n       as a column so the header/filter keep their natural height and the scrollable\n       list shrinks to the remaining space instead of overflowing the container. */\n    .p-listbox-flex-scrollable {\n        display: flex;\n        flex-direction: column;\n        height: 100%;\n    }\n\n    .p-listbox-flex-scrollable .p-listbox-list-container {\n        flex: 1;\n    }\n\n    /* CDK Drag & Drop styles */\n    /* The single-item ghost and the rows inside the multi-selection preview both\n       use the plain list background, so a multi-drag looks like several copies of\n       the single-drag ghost rather than a block of highlighted (selected) rows. */\n    .p-listbox-option.cdk-drag-preview,\n    .p-listbox-drag-preview .p-listbox-option {\n        background: dt('listbox.background');\n    }\n\n    /* Multi-selection drag preview: dragging an option that is part of a\n       multi-selection previews the whole selection. The preview mirrors the\n       listbox DOM so the theme styles the rows, but the container card chrome\n       (background, border, shadow) is stripped so the floating copy reads as a\n       bare silhouette of the dragged rows rather than a detached panel. */\n    .p-listbox.p-listbox-drag-preview {\n        max-width: 20rem;\n        pointer-events: none;\n        background: transparent;\n        border: 0 none;\n        box-shadow: none;\n    }\n\n    .p-listbox-drag-preview .p-listbox-list {\n        padding: 0;\n    }\n\n    .p-listbox-drag-preview-more {\n        opacity: 0.7;\n    }\n\n    .p-listbox-dragging .p-listbox-option:not(.cdk-drag-preview) {\n        pointer-events: none !important;\n    }\n\n    .p-listbox-dragging .p-listbox-option:not(.cdk-drag-preview):hover {\n        background: inherit !important;\n        color: inherit !important;\n    }\n\n    .cdk-drag-placeholder {\n        pointer-events: none;\n    }\n`;\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-listbox p-component',\n        {\n            'p-listbox-striped': instance.striped(),\n            'p-disabled': instance.$disabled(),\n            'p-invalid': instance.invalid(),\n            'p-listbox-fluid': instance.fluid(),\n            'p-listbox-dragging': instance.isDragging(),\n            'p-listbox-flex-scrollable': instance.scrollHeight() === 'flex'\n        }\n    ],\n    header: 'p-listbox-header',\n    pcFilter: 'p-listbox-filter',\n    listContainer: 'p-listbox-list-container',\n    list: 'p-listbox-list',\n    optionGroup: 'p-listbox-option-group',\n    option: ({ instance, option, i, scrollerOptions }) => [\n        'p-listbox-option',\n        {\n            'p-listbox-option-selected': instance.isSelected(option) && instance.highlightOnSelect(),\n            'p-focus': instance.focusedOptionIndex() === instance.getOptionIndex(i, scrollerOptions),\n            'p-disabled': instance.isOptionDisabled(option)\n        }\n    ],\n    optionCheckIcon: 'p-listbox-option-check-icon',\n    optionBlankIcon: 'p-listbox-option-blank-icon',\n    emptyMessage: 'p-listbox-empty-message',\n    // Root + list + option classes mirror the listbox DOM so the theme styles the preview.\n    // Options are intentionally NOT marked selected, so the preview rows match the plain\n    // single-item drag ghost instead of the highlighted selected background.\n    dragPreview: 'p-listbox p-component p-listbox-drag-preview',\n    dragPreviewOption: 'p-listbox-option',\n    dragPreviewMore: 'p-listbox-option p-listbox-drag-preview-more'\n};\n\n@Injectable()\nexport class ListBoxStyle extends BaseStyle {\n    name = 'listbox';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * ListBox is used to select one or more values from a list of items.\n *\n * [Live Demo](https://www.primeng.org/listbox/)\n *\n * @module listboxstyle\n *\n */\nexport enum ListboxClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-listbox',\n    /**\n     * Class name of the header element\n     */\n    header = 'p-listbox-header',\n    /**\n     * Class name of the filter element\n     */\n    pcFilter = 'p-listbox-filter',\n    /**\n     * Class name of the list container element\n     */\n    listContainer = 'p-listbox-list-container',\n    /**\n     * Class name of the list element\n     */\n    list = 'p-listbox-list',\n    /**\n     * Class name of the option group element\n     */\n    optionGroup = 'p-listbox-option-group',\n    /**\n     * Class name of the option element\n     */\n    option = 'p-listbox-option',\n    /**\n     * Class name of the option check icon element\n     */\n    optionCheckIcon = 'p-listbox-option-check-icon',\n    /**\n     * Class name of the option blank icon element\n     */\n    optionBlankIcon = 'p-listbox-option-blank-icon',\n    /**\n     * Class name of the empty message element\n     */\n    emptyMessage = 'p-listbox-empty-message',\n    /**\n     * Class name of the multi-selection drag preview container\n     */\n    dragPreview = 'p-listbox-drag-preview',\n    /**\n     * Class name of the overflow row in the multi-selection drag preview\n     */\n    dragPreviewMore = 'p-listbox-drag-preview-more'\n}\n\nexport interface ListboxStyle extends BaseStyle {}\n","import { CDK_DRAG_CONFIG, CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    contentChild,\n    effect,\n    ElementRef,\n    forwardRef,\n    HostListener,\n    inject,\n    InjectionToken,\n    input,\n    NgModule,\n    numberAttribute,\n    output,\n    signal,\n    TemplateRef,\n    viewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Blank as BlankIcon } from '@primeicons/angular/blank';\nimport { Check as CheckIcon } from '@primeicons/angular/check';\nimport { Search as SearchIcon } from '@primeicons/angular/search';\nimport { equals, findLastIndex, findSingle, focus, getFirstFocusableElement, isEmpty, isFunction, isNotEmpty, isPrintableCharacter, resolveFieldData, uuid } from '@primeuix/utils';\nimport { FilterMatchModeType, FilterService, Footer, Header, ScrollerOptions, SharedModule } from 'primeng/api';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseEditableHolder } from 'primeng/baseeditableholder';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { Checkbox } from 'primeng/checkbox';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputText } from 'primeng/inputtext';\nimport { Ripple } from 'primeng/ripple';\nimport { Scroller, ScrollerLazyLoadEvent } from 'primeng/scroller';\nimport type {\n    ListboxChangeEvent,\n    ListboxCheckIconTemplateContext,\n    ListboxCheckmarkTemplateContext,\n    ListboxClickEvent,\n    ListboxDoubleClickEvent,\n    ListboxFilterEvent,\n    ListboxFilterOptions,\n    ListboxFilterTemplateContext,\n    ListboxFooterTemplateContext,\n    ListboxGroupTemplateContext,\n    ListboxHeaderTemplateContext,\n    ListboxItemTemplateContext,\n    ListboxLoaderTemplateContext,\n    ListBoxPassThrough,\n    ListboxSelectAllChangeEvent\n} from 'primeng/types/listbox';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport { ListBoxStyle } from './style/listboxstyle';\n\nconst LISTBOX_INSTANCE = new InjectionToken<Listbox>('LISTBOX_INSTANCE');\n\nexport const LISTBOX_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Listbox),\n    multi: true\n};\n/**\n * ListBox is used to select one or more values from a list of items.\n * @group Components\n */\n@Component({\n    selector: 'p-listbox, p-list-box',\n    standalone: true,\n    imports: [NgTemplateOutlet, Ripple, Scroller, InputIcon, SearchIcon, Checkbox, CheckIcon, IconField, InputText, BlankIcon, FormsModule, SharedModule, DragDropModule, BindModule],\n    template: `\n        <span\n            #firstHiddenFocusableElement\n            role=\"presentation\"\n            class=\"p-hidden-accessible p-hidden-focusable\"\n            [tabindex]=\"hiddenFocusableTabindex()\"\n            (focus)=\"onFirstHiddenFocus($event)\"\n            [attr.data-p-hidden-focusable]=\"true\"\n            [pBind]=\"ptm('hiddenFirstFocusableElement')\"\n        >\n        </span>\n        @if (hasHeader()) {\n            <div [class]=\"cx('header')\" [pBind]=\"ptm('header')\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate(); context: headerTemplateContext()\"></ng-container>\n            </div>\n        }\n        @if (hasCheckboxOrFilter()) {\n            <div [class]=\"cx('header')\" [pBind]=\"ptm('header')\">\n                @if (showCheckboxToggleAll()) {\n                    <p-checkbox\n                        #headerchkbox\n                        (onChange)=\"onToggleAll($event)\"\n                        [class]=\"cx('optionCheckIcon')\"\n                        [ngModel]=\"allSelected()\"\n                        [disabled]=\"$disabled()\"\n                        [tabindex]=\"-1\"\n                        [variant]=\"checkboxVariant()\"\n                        [binary]=\"true\"\n                        [attr.aria-label]=\"toggleAllAriaLabel()\"\n                        [pt]=\"ptm('pcCheckbox')\"\n                        [unstyled]=\"unstyled()\"\n                    >\n                        @if (checkIconTemplate()) {\n                            <ng-template #icon>\n                                <ng-container *ngTemplateOutlet=\"checkIconTemplate(); context: allSelectedContext()\"></ng-container>\n                            </ng-template>\n                        }\n                    </p-checkbox>\n                }\n                @if (filterTemplate()) {\n                    <ng-container *ngTemplateOutlet=\"filterTemplate(); context: getFilterTemplateContext()\"></ng-container>\n                } @else {\n                    @if (filter()) {\n                        <p-iconfield [pt]=\"ptm('pcFilterContainer')\" hostName=\"listbox\" [unstyled]=\"unstyled()\">\n                            <input\n                                #filterInput\n                                pInputText\n                                type=\"text\"\n                                [class]=\"cx('pcFilter')\"\n                                role=\"searchbox\"\n                                [value]=\"filterInputValue()\"\n                                [attr.disabled]=\"disabledAttr()\"\n                                [attr.aria-owns]=\"listId()\"\n                                [attr.aria-activedescendant]=\"focusedOptionId()\"\n                                [attr.placeholder]=\"filterPlaceHolder()\"\n                                [attr.aria-label]=\"ariaFilterLabel()\"\n                                [attr.tabindex]=\"filterTabindex()\"\n                                (input)=\"onFilterChange($event)\"\n                                (keydown)=\"onFilterKeyDown($event)\"\n                                (blur)=\"onFilterBlur($event)\"\n                                [pt]=\"ptm('pcFilter')\"\n                                [unstyled]=\"unstyled()\"\n                                hostName=\"listbox\"\n                            />\n                            <p-inputicon [pt]=\"ptm('pcFilterIconContainer')\" [unstyled]=\"unstyled()\">\n                                @if (showDefaultFilterIcon()) {\n                                    <svg data-p-icon=\"search\" [attr.aria-hidden]=\"true\" [pBind]=\"ptm('filterIcon')\" />\n                                } @else {\n                                    <span [attr.aria-hidden]=\"true\">\n                                        <ng-container *ngTemplateOutlet=\"filterIconTemplate()\"></ng-container>\n                                    </span>\n                                }\n                            </p-inputicon>\n                        </p-iconfield>\n                    }\n                    <span role=\"status\" [pBind]=\"ptm('hiddenFilterResult')\" [attr.aria-live]=\"'polite'\" class=\"p-hidden-accessible\" [attr.data-p-hidden-accessible]=\"true\">\n                        {{ filterResultMessageText() }}\n                    </span>\n                }\n            </div>\n        }\n        <div\n            #container\n            [class]=\"cn(cx('listContainer'), listStyleClass())\"\n            [style]=\"listContainerStyle()\"\n            cdkDropList\n            [cdkDropListData]=\"cdkDropData()\"\n            (cdkDropListDropped)=\"drop($event)\"\n            (cdkDropListEntered)=\"onDragEntered()\"\n            (cdkDropListExited)=\"onDragExited()\"\n            [pBind]=\"ptm('listContainer')\"\n        >\n            @if (showFilteredEmptyMessage()) {\n                <div [class]=\"cx('emptyMessage')\" [pBind]=\"ptm('emptyMessage')\">\n                    @if (showDefaultFilterEmptyMessage()) {\n                        {{ emptyFilterMessageText() }}\n                    } @else {\n                        <ng-container *ngTemplateOutlet=\"emptyOrFilterTemplate()\"></ng-container>\n                    }\n                </div>\n            } @else if (showEmptyMessage()) {\n                <div [class]=\"cx('emptyMessage')\" [pBind]=\"ptm('emptyMessage')\">\n                    @if (!emptyTemplate()) {\n                        {{ emptyMessage() }}\n                    } @else {\n                        <ng-container *ngTemplateOutlet=\"emptyTemplate()\"></ng-container>\n                    }\n                </div>\n            } @else {\n                @if (virtualScroll()) {\n                    <p-scroller\n                        [pt]=\"ptm('virtualScroller')\"\n                        hostName=\"listbox\"\n                        #scroller\n                        [items]=\"visibleOptions()\"\n                        [style]=\"scrollerStyle()\"\n                        [itemSize]=\"virtualScrollItemSize()\"\n                        [autoSize]=\"true\"\n                        [lazy]=\"lazy()\"\n                        [options]=\"virtualScrollOptions()\"\n                        (onLazyLoad)=\"onLazyLoad.emit($event)\"\n                        [tabindex]=\"scrollerTabIndex\"\n                    >\n                        <ng-template #content let-items let-scrollerOptions=\"options\">\n                            <ng-container *ngTemplateOutlet=\"buildInItems; context: getBuildInItemsContext(items, scrollerOptions)\"></ng-container>\n                        </ng-template>\n                        @if (loaderTemplate()) {\n                            <ng-template #loader let-scrollerOptions=\"options\">\n                                <ng-container *ngTemplateOutlet=\"loaderTemplate(); context: getLoaderTemplateContext(scrollerOptions)\"></ng-container>\n                            </ng-template>\n                        }\n                    </p-scroller>\n                } @else {\n                    <ng-container *ngTemplateOutlet=\"buildInItems; context: buildInItemsContext()\"></ng-container>\n                }\n\n                <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n                    <ul\n                        #list\n                        [id]=\"listId()\"\n                        [class]=\"cn(cx('list'), scrollerOptions.contentStyleClass)\"\n                        role=\"listbox\"\n                        [tabindex]=\"-1\"\n                        [attr.aria-multiselectable]=\"true\"\n                        [style]=\"scrollerOptions.contentStyle\"\n                        [attr.aria-activedescendant]=\"ariaActiveDescendant()\"\n                        [attr.aria-label]=\"ariaLabel()\"\n                        [attr.aria-disabled]=\"$disabled()\"\n                        (focus)=\"onListFocus($event)\"\n                        (blur)=\"onListBlur($event)\"\n                        (keydown)=\"onListKeyDown($event)\"\n                        [pBind]=\"ptm('list')\"\n                    >\n                        @for (option of items; track getOptionTrackKey(option, $index); let i = $index) {\n                            @if (isOptionGroup(option)) {\n                                <li\n                                    [attr.id]=\"getOptionId(i, scrollerOptions)\"\n                                    [class]=\"cx('optionGroup')\"\n                                    [pBind]=\"getPTOptions(option.optionGroup, scrollerOptions, i, 'optionGroup')\"\n                                    [style.height.px]=\"scrollerOptions.itemSize\"\n                                    role=\"option\"\n                                    cdkDrag\n                                    [cdkDragData]=\"option\"\n                                    [cdkDragDisabled]=\"dragdropDisabled()\"\n                                    (cdkDragStarted)=\"isDragging.set(true)\"\n                                    (cdkDragEnded)=\"isDragging.set(false)\"\n                                >\n                                    @if (showDefaultGroupLabel()) {\n                                        <span>{{ getOptionGroupLabel(option.optionGroup) }}</span>\n                                    }\n                                    <ng-container *ngTemplateOutlet=\"groupTemplate(); context: getGroupTemplateContext(option.optionGroup)\"></ng-container>\n                                </li>\n                            } @else {\n                                <li\n                                    pRipple\n                                    [class]=\"cx('option', { option, i, scrollerOptions })\"\n                                    role=\"option\"\n                                    [attr.id]=\"getOptionId(i, scrollerOptions)\"\n                                    [style.height.px]=\"scrollerOptions.itemSize\"\n                                    [attr.aria-label]=\"getOptionLabel(option)\"\n                                    [attr.aria-selected]=\"isSelected(option)\"\n                                    [attr.aria-disabled]=\"isOptionDisabled(option)\"\n                                    [attr.aria-setsize]=\"ariaSetSize()\"\n                                    [attr.ariaPosInset]=\"getAriaPosInset(getOptionIndex(i, scrollerOptions))\"\n                                    [attr.data-p-selected]=\"isSelected(option)\"\n                                    [attr.data-p-focused]=\"isOptionFocused(i, scrollerOptions)\"\n                                    [attr.data-p-disabled]=\"isOptionDisabled(option)\"\n                                    [pBind]=\"getPTOptions(option, scrollerOptions, i, 'option')\"\n                                    (click)=\"onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))\"\n                                    (dblclick)=\"onOptionDoubleClick($event, option)\"\n                                    (mousedown)=\"onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))\"\n                                    (mouseenter)=\"onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))\"\n                                    (touchend)=\"onOptionTouchEnd()\"\n                                    cdkDrag\n                                    [cdkDragData]=\"option\"\n                                    [cdkDragDisabled]=\"dragdropDisabled()\"\n                                    (cdkDragStarted)=\"isDragging.set(true)\"\n                                    (cdkDragEnded)=\"isDragging.set(false)\"\n                                >\n                                    @if (showOptionCheckbox()) {\n                                        <p-checkbox\n                                            [class]=\"cx('optionCheckIcon')\"\n                                            [ngModel]=\"isSelected(option)\"\n                                            [readonly]=\"true\"\n                                            [disabled]=\"getOptionCheckboxDisabled(option)\"\n                                            [tabindex]=\"-1\"\n                                            [variant]=\"checkboxVariant()\"\n                                            [binary]=\"true\"\n                                            [pt]=\"ptm('pcCheckbox')\"\n                                            hostName=\"listbox\"\n                                            [unstyled]=\"unstyled()\"\n                                        >\n                                            @if (checkIconTemplate()) {\n                                                <ng-template #icon>\n                                                    <ng-container *ngTemplateOutlet=\"checkIconTemplate(); context: getCheckIconContext(option)\"></ng-container>\n                                                </ng-template>\n                                            }\n                                        </p-checkbox>\n                                    }\n                                    @if (checkmark()) {\n                                        @if (showDefaultCheckmark()) {\n                                            @if (!isSelected(option)) {\n                                                <svg data-p-icon=\"blank\" [class]=\"cx('optionBlankIcon')\" [pBind]=\"ptm('optionBlankIcon')\" />\n                                            } @else {\n                                                <svg data-p-icon=\"check\" [class]=\"cx('optionCheckIcon')\" [pBind]=\"ptm('optionCheckIcon')\" />\n                                            }\n                                        }\n                                        <ng-container *ngTemplateOutlet=\"checkmarkTemplate(); context: getCheckmarkContext(option)\"></ng-container>\n                                    }\n                                    @if (showDefaultItemLabel()) {\n                                        <span>{{ getOptionLabel(option) }}</span>\n                                    }\n                                    <ng-container *ngTemplateOutlet=\"itemTemplate(); context: getItemTemplateContext(option, i, scrollerOptions)\"></ng-container>\n                                    @if (isMultiDrag(option)) {\n                                        <!-- Mirrors the listbox DOM (root > list > option) so the theme's\n                                             scoped option styles apply to the body-appended CDK preview. -->\n                                        <ng-template cdkDragPreview>\n                                            <div [class]=\"cx('dragPreview')\" [pBind]=\"ptm('dragPreview')\">\n                                                <ul [class]=\"cx('list')\">\n                                                    @for (dragOption of dragPreviewOptions().slice(0, dragPreviewLimit); track getOptionTrackKey(dragOption, $index)) {\n                                                        <li [class]=\"cx('dragPreviewOption')\" [pBind]=\"ptm('dragPreviewOption')\">\n                                                            @if (showDefaultItemLabel()) {\n                                                                <span>{{ getOptionLabel(dragOption) }}</span>\n                                                            }\n                                                            <ng-container *ngTemplateOutlet=\"itemTemplate(); context: getDragPreviewTemplateContext(dragOption)\"></ng-container>\n                                                        </li>\n                                                    }\n                                                    @if (dragPreviewOptions().length > dragPreviewLimit) {\n                                                        <li [class]=\"cx('dragPreviewMore')\" [pBind]=\"ptm('dragPreviewMore')\">+{{ dragPreviewOptions().length - dragPreviewLimit }}</li>\n                                                    }\n                                                </ul>\n                                            </div>\n                                        </ng-template>\n                                    }\n                                </li>\n                            }\n                        }\n                    </ul>\n                </ng-template>\n            }\n        </div>\n        @if (hasFooter()) {\n            <ng-content select=\"p-footer\"></ng-content>\n            <ng-container *ngTemplateOutlet=\"footerTemplate(); context: footerTemplateContext()\"></ng-container>\n        }\n        @if (isEmpty()) {\n            <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" [pBind]=\"ptm('hiddenEmptyMessage')\">\n                {{ emptyMessage() }}\n            </span>\n        }\n        <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" [pBind]=\"ptm('hiddenSelectedMessage')\">\n            {{ selectedMessageText() }}\n        </span>\n        <span\n            #lastHiddenFocusableElement\n            role=\"presentation\"\n            class=\"p-hidden-accessible p-hidden-focusable\"\n            [tabindex]=\"hiddenFocusableTabindex()\"\n            (focus)=\"onLastHiddenFocus($event)\"\n            [attr.data-p-hidden-focusable]=\"true\"\n            [pBind]=\"ptm('hiddenLastFocusableEl')\"\n        >\n        </span>\n    `,\n    providers: [\n        LISTBOX_VALUE_ACCESSOR,\n        ListBoxStyle,\n        {\n            provide: CDK_DRAG_CONFIG,\n            useValue: {\n                zIndex: 1200\n            }\n        },\n        { provide: LISTBOX_INSTANCE, useExisting: Listbox },\n        { provide: PARENT_INSTANCE, useExisting: Listbox }\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[attr.id]': '$id()',\n        '[class]': \"cx('root')\",\n        '[attr.data-p]': 'containerDataP'\n    },\n    hostDirectives: [Bind]\n})\nexport class Listbox extends BaseEditableHolder<ListBoxPassThrough> {\n    componentName = 'Listbox';\n\n    hostName = input<string>('');\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    $pcListbox: Listbox | undefined = inject(LISTBOX_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    filterService = inject(FilterService);\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    /**\n     * Unique identifier of the component.\n     * @group Props\n     */\n    id = input<string>();\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    searchMessage = input<string>();\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    emptySelectionMessage = input<string>();\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    selectionMessage = input<string>();\n    /**\n     * Whether to focus on the first visible or selected element when the overlay panel is shown.\n     * @group Props\n     */\n    autoOptionFocus = input(true, { transform: booleanAttribute });\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    ariaLabel = input<string>();\n    /**\n     * When enabled, the focused option is selected.\n     * @group Props\n     */\n    selectOnFocus = input(undefined, { transform: booleanAttribute });\n    /**\n     * Locale to use in searching. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    searchLocale = input(undefined, { transform: booleanAttribute });\n    /**\n     * When enabled, the hovered option will be focused.\n     * @group Props\n     */\n    focusOnHover = input(true, { transform: booleanAttribute });\n    /**\n     * Text to display when filtering.\n     * @group Props\n     */\n    filterMessage = input<string>();\n    /**\n     * Fields used when filtering the options, defaults to optionLabel.\n     * @group Props\n     */\n    filterFields = input<any[]>();\n    /**\n     * Defines if data is loaded and interacted with in lazy manner.\n     * @group Props\n     */\n    lazy = input(false, { transform: booleanAttribute });\n    /**\n     * Whether the data should be loaded on demand during scroll.\n     * @group Props\n     */\n    virtualScroll = input(undefined, { transform: booleanAttribute });\n    /**\n     * Height of an item in the list for VirtualScrolling.\n     * @group Props\n     */\n    virtualScrollItemSize = input(undefined, { transform: numberAttribute });\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    virtualScrollOptions = input<ScrollerOptions>();\n    /**\n     * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.\n     * @group Props\n     */\n    scrollHeight = input<string>('14rem');\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    tabindex = input(0, { transform: numberAttribute });\n    /**\n     * When specified, allows selecting multiple values.\n     * @group Props\n     */\n    multiple = input(undefined, { transform: booleanAttribute });\n    /**\n     * Inline style of the list element.\n     * @group Props\n     */\n    listStyle = input<CSSProperties>();\n    /**\n     * Style class of the list element.\n     * @group Props\n     */\n    listStyleClass = input<string>();\n    /**\n     * When present, it specifies that the element value cannot be changed.\n     * @group Props\n     */\n    readonly = input(undefined, { transform: booleanAttribute });\n    /**\n     * When specified, allows selecting items with checkboxes.\n     * @group Props\n     */\n    checkbox = input(false, { transform: booleanAttribute });\n    /**\n     * When specified, displays a filter input at header.\n     * @group Props\n     */\n    filter = input(false, { transform: booleanAttribute });\n    /**\n     * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n     * @group Props\n     */\n    filterBy = input<string>();\n    /**\n     * Defines how the items are filtered.\n     * @group Props\n     */\n    filterMatchMode = input<FilterMatchModeType>('contains');\n    /**\n     * Locale to use in filtering. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    filterLocale = input<string>();\n    /**\n     * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n     * @group Props\n     */\n    metaKeySelection = input(false, { transform: booleanAttribute });\n    /**\n     * A property to uniquely identify a value in options.\n     * @group Props\n     */\n    dataKey = input<string>();\n    /**\n     * Whether header checkbox is shown in multiple mode.\n     * @group Props\n     */\n    showToggleAll = input(true, { transform: booleanAttribute });\n    /**\n     * Name of the label field of an option.\n     * @group Props\n     */\n    optionLabel = input<string>();\n    /**\n     * Name of the value field of an option.\n     * @group Props\n     */\n    optionValue = input<string>();\n    /**\n     * Name of the options field of an option group.\n     * @group Props\n     */\n    optionGroupChildren = input<string>('items');\n    /**\n     * Name of the label field of an option group.\n     * @group Props\n     */\n    optionGroupLabel = input<string>('label');\n    /**\n     * Name of the disabled field of an option or function to determine disabled state.\n     * @group Props\n     */\n    optionDisabled = input<string | ((item: any) => boolean)>();\n    /**\n     * Defines a string that labels the filter input.\n     * @group Props\n     */\n    ariaFilterLabel = input<string>();\n    /**\n     * Defines placeholder of the filter input.\n     * @group Props\n     */\n    filterPlaceHolder = input<string>();\n    /**\n     * Text to display when filtering does not return any results.\n     * @group Props\n     */\n    emptyFilterMessage = input<string>();\n    /**\n     * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n     * @group Props\n     */\n    emptyMessage = input<string>();\n    /**\n     * Whether to display options as grouped when nested options are provided.\n     * @group Props\n     */\n    group = input(undefined, { transform: booleanAttribute });\n    /**\n     * An array of selectitems to display as the available options.\n     * @group Props\n     */\n    options = input<any[]>();\n    /**\n     * When specified, filter displays with this value.\n     * @group Props\n     */\n    filterValue = input<string>();\n    /**\n     * Whether all data is selected.\n     * @group Props\n     */\n    selectAll = input<boolean>();\n    /**\n     * Whether to displays rows with alternating colors.\n     * @group Props\n     * @defaultValue false\n     */\n    striped = input(false, { transform: booleanAttribute });\n    /**\n     * Whether the selected option will be add highlight class.\n     * @group Props\n     * @defaultValue true\n     */\n    highlightOnSelect = input(true, { transform: booleanAttribute });\n    /**\n     * Whether the selected option will be shown with a check mark.\n     * @group Props\n     * @defaultValue false\n     */\n    checkmark = input(false, { transform: booleanAttribute });\n    /**\n     * Whether to enable dragdrop based reordering.\n     * @group Props\n     */\n    dragdrop = input(false, { transform: booleanAttribute });\n    /**\n     * Array to use for CDK drop list data binding. When not provided, uses options array.\n     * @group Props\n     */\n    dropListData = input<any[]>();\n    /**\n     * Spans 100% width of the container when enabled.\n     * @defaultValue undefined\n     * @group Props\n     */\n    fluid = input(undefined, { transform: booleanAttribute });\n    /**\n     * Callback to invoke on value change.\n     * @param {ListboxChangeEvent} event - Custom change event.\n     * @group Emits\n     */\n    onChange = output<ListboxChangeEvent>();\n    /**\n     * Callback to invoke when option is clicked.\n     * @param {ListboxClickEvent} event - Custom click event.\n     * @group Emits\n     */\n    onClick = output<ListboxClickEvent>();\n    /**\n     * Callback to invoke when option is double clicked.\n     * @param {ListboxDoubleClickEvent} event - Custom double click event.\n     * @group Emits\n     */\n    onDblClick = output<ListboxDoubleClickEvent>();\n    /**\n     * Callback to invoke when data is filtered.\n     * @param {ListboxFilterEvent} event - Custom filter event.\n     * @group Emits\n     */\n    onFilter = output<ListboxFilterEvent>();\n    /**\n     * Callback to invoke when component receives focus.\n     * @param {FocusEvent} event - Focus event.\n     * @group Emits\n     */\n    onFocus = output<FocusEvent>();\n    /**\n     * Callback to invoke when component loses focus.\n     * @param {FocusEvent} event - Blur event.\n     * @group Emits\n     */\n    onBlur = output<FocusEvent>();\n    /**\n     * Callback to invoke when all data is selected.\n     * @param {ListboxSelectAllChangeEvent} event - Custom select event.\n     * @group Emits\n     */\n    onSelectAllChange = output<ListboxSelectAllChangeEvent>();\n    /**\n     * Emits on lazy load.\n     * @param {ScrollerLazyLoadEvent} event - Scroller lazy load event.\n     * @group Emits\n     */\n    onLazyLoad = output<ScrollerLazyLoadEvent>();\n    /**\n     * Emits on item is dropped.\n     * @param {CdkDragDrop<string[]>} event - Scroller lazy load event.\n     * @group Emits\n     */\n    onDrop = output<CdkDragDrop<string[]>>();\n\n    headerCheckboxViewChild = viewChild<ElementRef>('headerchkbox');\n\n    filterViewChild = viewChild<ElementRef>('filterInput');\n\n    lastHiddenFocusableElement = viewChild<ElementRef>('lastHiddenFocusableElement');\n\n    firstHiddenFocusableElement = viewChild<ElementRef>('firstHiddenFocusableElement');\n\n    scroller = viewChild<Scroller>('scroller');\n\n    listViewChild = viewChild<ElementRef>('list');\n\n    containerViewChild = viewChild<ElementRef>('container');\n\n    headerFacet = contentChild(Header, { descendants: false });\n\n    footerFacet = contentChild(Footer, { descendants: false });\n\n    /**\n     * Custom item template.\n     * @param {ListboxItemTemplateContext} context - item context.\n     * @see {@link ListboxItemTemplateContext}\n     * @group Templates\n     */\n    itemTemplate = contentChild<TemplateRef<ListboxItemTemplateContext>>('item', { descendants: false });\n\n    /**\n     * Custom group template.\n     * @param {ListboxGroupTemplateContext} context - group context.\n     * @see {@link ListboxGroupTemplateContext}\n     * @group Templates\n     */\n    groupTemplate = contentChild<TemplateRef<ListboxGroupTemplateContext>>('group', { descendants: false });\n\n    /**\n     * Custom header template.\n     * @param {ListboxHeaderTemplateContext} context - header context.\n     * @see {@link ListboxHeaderTemplateContext}\n     * @group Templates\n     */\n    headerTemplate = contentChild<TemplateRef<ListboxHeaderTemplateContext>>('header', { descendants: false });\n\n    /**\n     * Custom filter template.\n     * @param {ListboxFilterTemplateContext} context - filter context.\n     * @see {@link ListboxFilterTemplateContext}\n     * @group Templates\n     */\n    filterTemplate = contentChild<TemplateRef<ListboxFilterTemplateContext>>('filter', { descendants: false });\n\n    /**\n     * Custom footer template.\n     * @param {ListboxFooterTemplateContext} context - footer context.\n     * @see {@link ListboxFooterTemplateContext}\n     * @group Templates\n     */\n    footerTemplate = contentChild<TemplateRef<ListboxFooterTemplateContext>>('footer', { descendants: false });\n\n    /**\n     * Custom empty filter message template.\n     * @group Templates\n     */\n    emptyFilterTemplate = contentChild<TemplateRef<void>>('emptyfilter', { descendants: false });\n\n    /**\n     * Custom empty message template.\n     * @group Templates\n     */\n    emptyTemplate = contentChild<TemplateRef<void>>('empty', { descendants: false });\n\n    /**\n     * Custom filter icon template.\n     * @group Templates\n     */\n    filterIconTemplate = contentChild<TemplateRef<void>>('filtericon', { descendants: false });\n\n    /**\n     * Custom check icon template.\n     * @param {ListboxCheckIconTemplateContext} context - check icon context.\n     * @see {@link ListboxCheckIconTemplateContext}\n     * @group Templates\n     */\n    checkIconTemplate = contentChild<TemplateRef<ListboxCheckIconTemplateContext>>('checkicon', { descendants: false });\n\n    /**\n     * Custom checkmark icon template.\n     * @param {ListboxCheckmarkTemplateContext} context - checkmark context.\n     * @see {@link ListboxCheckmarkTemplateContext}\n     * @group Templates\n     */\n    checkmarkTemplate = contentChild<TemplateRef<ListboxCheckmarkTemplateContext>>('checkmark', { descendants: false });\n\n    /**\n     * Custom loader template.\n     * @param {ListboxLoaderTemplateContext} context - loader context.\n     * @see {@link ListboxLoaderTemplateContext}\n     * @group Templates\n     */\n    loaderTemplate = contentChild<TemplateRef<ListboxLoaderTemplateContext>>('loader', { descendants: false });\n\n    public _filterValue = signal<string | null | undefined>(null);\n\n    public _filteredOptions: any[] | undefined | null;\n\n    filterOptions: ListboxFilterOptions | undefined;\n\n    public filtered: boolean | undefined | null;\n\n    public value: any | undefined | null;\n\n    public optionTouched: boolean | undefined | null;\n\n    public focus: boolean | undefined | null;\n\n    public headerCheckboxFocus: boolean | undefined | null;\n\n    private translation = toSignal(this.config.translationObserver, { initialValue: this.config.translation });\n\n    focused: boolean | undefined;\n\n    scrollerTabIndex: string = '0';\n\n    _componentStyle = inject(ListBoxStyle);\n\n    _options = signal<any>(null);\n\n    startRangeIndex = signal<number>(-1);\n\n    focusedOptionIndex = signal<number>(-1);\n\n    isDragging = signal<boolean>(false);\n\n    searchValue: string | undefined;\n\n    searchTimeout: any;\n\n    private _internalId = uuid('pn_id_');\n\n    $id = computed(() => this.id() || this._internalId);\n\n    $tabindex = computed(() => this.tabindex() ?? 0);\n\n    /**\n     * Computed property for hidden focusable element tabindex\n     */\n    hiddenFocusableTabindex = computed(() => (!this.$disabled() ? this.$tabindex() : -1));\n\n    /**\n     * Computed property for header section visibility\n     */\n    hasHeader = computed(() => !!this.headerFacet() || !!this.headerTemplate());\n\n    /**\n     * Computed property for footer section visibility\n     */\n    hasFooter = computed(() => !!this.footerFacet() || !!this.footerTemplate());\n\n    /**\n     * Computed property for checkbox/filter header visibility\n     */\n    hasCheckboxOrFilter = computed(() => (this.checkbox() && this.multiple() && this.showToggleAll()) || this.filter());\n\n    /**\n     * Computed property for showing checkbox toggle all\n     */\n    showCheckboxToggleAll = computed(() => this.checkbox() && this.multiple() && this.showToggleAll());\n\n    /**\n     * Computed property for showing option checkbox\n     */\n    showOptionCheckbox = computed(() => this.checkbox() && this.multiple());\n\n    /**\n     * Computed property for showing filtered empty message\n     */\n    showFilteredEmptyMessage = computed(() => this.hasFilter() && this.isEmpty());\n\n    /**\n     * Computed property for showing empty message\n     */\n    showEmptyMessage = computed(() => !this.hasFilter() && this.isEmpty());\n\n    /**\n     * Computed property for aria-activedescendant\n     */\n    ariaActiveDescendant = computed(() => (this.focused ? this.focusedOptionId() : undefined));\n\n    /**\n     * Computed property for header template context\n     */\n    headerTemplateContext = computed(() => ({ $implicit: this.modelValue(), options: this.visibleOptions() }));\n\n    /**\n     * Computed property for footer template context\n     */\n    footerTemplateContext = computed(() => ({ $implicit: this.modelValue(), options: this.visibleOptions() }));\n\n    /**\n     * Computed property for filter input value\n     */\n    filterInputValue = computed(() => this._filterValue() || '');\n\n    /**\n     * Computed property for disabled attribute\n     */\n    disabledAttr = computed(() => (this.$disabled() ? '' : undefined));\n\n    /**\n     * Computed property for list id\n     */\n    listId = computed(() => `${this.$id()}_list`);\n\n    /**\n     * Computed property for scroller style\n     */\n    scrollerStyle = computed(() => ({ height: this.scrollHeight() === 'flex' ? '100%' : this.scrollHeight() }));\n\n    /**\n     * Computed property for showing default filter empty message\n     */\n    showDefaultFilterEmptyMessage = computed(() => !this.emptyFilterTemplate() && !this.emptyTemplate());\n\n    /**\n     * Computed property for empty or filter template\n     */\n    emptyOrFilterTemplate = computed(() => this.emptyFilterTemplate() || this.emptyTemplate());\n\n    /**\n     * Computed property for build in items context\n     */\n    buildInItemsContext = computed(() => ({ $implicit: this.visibleOptions(), options: {} }));\n\n    /**\n     * Computed property for dragdrop disabled\n     */\n    dragdropDisabled = computed(() => !this.dragdrop());\n\n    /**\n     * Computed property for check icon context\n     */\n    allSelectedContext = computed(() => ({ $implicit: this.allSelected() }));\n\n    /**\n     * Computed property for showing default checkmark\n     */\n    showDefaultCheckmark = computed(() => !this.checkmarkTemplate());\n\n    /**\n     * Computed property for showing default item label\n     */\n    showDefaultItemLabel = computed(() => !this.itemTemplate());\n\n    /**\n     * Computed property for showing default group label\n     */\n    showDefaultGroupLabel = computed(() => !this.groupTemplate());\n\n    /**\n     * Computed property for showing filter icon\n     */\n    showDefaultFilterIcon = computed(() => !this.filterIconTemplate());\n\n    /**\n     * Computed property for stable CDK drop list data reference\n     */\n    cdkDropData = computed(() => this.dropListData() || this._options());\n\n    checkboxVariant = computed(() => (this.config.inputVariant() === 'filled' ? 'filled' : 'outlined'));\n\n    listContainerStyle = computed(() => {\n        const listStyle = this.listStyle();\n        const scrollHeight = this.scrollHeight();\n        const maxHeight = this.virtualScroll() || scrollHeight === 'flex' ? 'auto' : scrollHeight || 'auto';\n        return { ...listStyle, 'max-height': maxHeight };\n    });\n\n    focusedOptionId = computed(() => (this.focusedOptionIndex() !== -1 ? `${this.$id()}_${this.focusedOptionIndex()}` : null));\n\n    filterTabindex = computed(() => (!this.$disabled() && !this.focused ? this.$tabindex() : -1));\n\n    filterResultMessageText = computed(() => {\n        return isNotEmpty(this.visibleOptions()) ? this.filterMessageText().replaceAll('{0}', String(this.visibleOptions().length)) : this.emptyFilterMessageText();\n    });\n\n    filterMessageText = computed(() => {\n        const t = this.translation();\n        return this.filterMessage() || t?.searchMessage || '';\n    });\n\n    searchMessageText = computed(() => {\n        const t = this.translation();\n        return this.searchMessage() || t?.searchMessage || '';\n    });\n\n    emptyFilterMessageText = computed(() => {\n        const t = this.translation();\n        return this.emptyFilterMessage() || t?.emptySearchMessage || t?.emptyFilterMessage || '';\n    });\n\n    selectionMessageText = computed(() => {\n        const t = this.translation();\n        return this.selectionMessage() || t?.selectionMessage || '';\n    });\n\n    emptySelectionMessageText = computed(() => {\n        const t = this.translation();\n        return this.emptySelectionMessage() || t?.emptySelectionMessage || '';\n    });\n\n    selectedMessageText = computed(() => {\n        return this.hasSelectedOption() ? this.selectionMessageText().replaceAll('{0}', this.multiple() ? String(this.modelValue().length) : '1') : this.emptySelectionMessageText();\n    });\n\n    ariaSetSize = computed(() => this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length);\n\n    virtualScrollerDisabled = computed(() => !this.virtualScroll());\n\n    searchFields = computed(() => this.filterBy()?.split(',') || this.filterFields() || [this.optionLabel()]);\n\n    toggleAllAriaLabel = computed(() => {\n        const t = this.translation();\n        return t?.aria ? t.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;\n    });\n\n    @HostListener('focusout', ['$event'])\n    onHostFocusOut(event: FocusEvent) {\n        this.onFocusout(event);\n    }\n\n    visibleOptions = computed(() => {\n        const options = this.group() ? this.flatOptions(this._options()) : this._options() || [];\n        return this._filterValue() ? this.filterService.filter(options, this.searchFields(), this._filterValue(), this.filterMatchMode(), this.filterLocale()) : options;\n    });\n\n    constructor() {\n        super();\n\n        // Sync options input to internal signal\n        effect(() => {\n            const opts = this.options();\n            if (opts !== undefined) {\n                this._options.set(opts);\n            }\n        });\n\n        // Sync filterValue input to internal signal\n        effect(() => {\n            const fv = this.filterValue();\n            if (fv !== undefined) {\n                this._filterValue.set(fv);\n            }\n        });\n    }\n\n    onInit() {\n        this.autoUpdateModel();\n\n        if (this.filterBy()) {\n            this.filterOptions = {\n                filter: (value) => this.onFilterChange(value),\n                reset: () => this.resetFilter()\n            };\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    autoUpdateModel() {\n        if (this.selectOnFocus() && this.autoOptionFocus() && !this.hasSelectedOption() && !this.multiple()) {\n            const focusedOptionIndex = this.findFirstFocusedOptionIndex();\n            this.focusedOptionIndex.set(focusedOptionIndex);\n            this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()]);\n        }\n    }\n    /**\n     * Updates the model value.\n     * @group Method\n     */\n    public updateModel(value, event?) {\n        this.value = value;\n        this.writeModelValue(value);\n        this.onModelChange(value);\n\n        this.onChange.emit({ originalEvent: event, value: this.value });\n    }\n\n    removeOption(option) {\n        return this.modelValue().filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey() || ''));\n    }\n\n    onOptionSelect(event, option, index = -1) {\n        if (this.$disabled() || this.isOptionDisabled(option) || this.readonly()) {\n            return;\n        }\n\n        event && this.onClick.emit({ originalEvent: event, option, value: this.value });\n        this.multiple() ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);\n        this.optionTouched = false;\n        index !== -1 && this.focusedOptionIndex.set(index);\n    }\n\n    onOptionSelectMultiple(event, option) {\n        let selected = this.isSelected(option);\n        let value: any[] = [];\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection();\n\n        if (metaSelection) {\n            let metaKey = event.metaKey || event.ctrlKey;\n\n            if (selected) {\n                value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];\n            } else {\n                value = metaKey ? this.modelValue() || [] : [];\n                value = [...(value || []), this.getOptionValue(option)];\n            }\n        } else {\n            value = selected ? this.removeOption(option) : [...(this.modelValue() || []), this.getOptionValue(option)];\n        }\n\n        this.updateModel(value, event);\n    }\n\n    onOptionSelectSingle(event, option) {\n        let selected = this.isSelected(option);\n        let valueChanged = false;\n        let value = null;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection();\n\n        if (metaSelection) {\n            let metaKey = event.metaKey || event.ctrlKey;\n\n            if (selected) {\n                if (metaKey) {\n                    value = null;\n                    valueChanged = true;\n                }\n            } else {\n                value = this.getOptionValue(option);\n                valueChanged = true;\n            }\n        } else {\n            value = selected ? null : this.getOptionValue(option);\n            valueChanged = true;\n        }\n\n        if (valueChanged) {\n            this.updateModel(value, event);\n        }\n    }\n\n    onOptionSelectRange(event, start = -1, end = -1) {\n        start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n        end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n\n        if (start !== -1 && end !== -1) {\n            const rangeStart = Math.min(start, end);\n            const rangeEnd = Math.max(start, end);\n            const value = this.visibleOptions()\n                .slice(rangeStart, rangeEnd + 1)\n                .filter((option) => this.isValidOption(option))\n                .map((option) => this.getOptionValue(option));\n\n            this.updateModel(value, event);\n        }\n    }\n\n    onToggleAll(event) {\n        if (this.$disabled() || this.readonly()) {\n            return;\n        }\n        focus(this.headerCheckboxViewChild()?.nativeElement);\n\n        if (this.selectAll() !== null && this.selectAll() !== undefined) {\n            this.onSelectAllChange.emit({\n                originalEvent: event,\n                checked: !this.allSelected()\n            });\n        } else {\n            const value = this.allSelected()\n                ? []\n                : this.visibleOptions()\n                      .filter((option) => this.isValidOption(option))\n                      .map((option) => this.getOptionValue(option));\n\n            this.updateModel(value, event);\n        }\n    }\n\n    allSelected() {\n        const selectAllValue = this.selectAll();\n        return selectAllValue !== null && selectAllValue !== undefined\n            ? selectAllValue\n            : isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));\n    }\n\n    onOptionTouchEnd() {\n        if (this.$disabled()) {\n            return;\n        }\n\n        this.optionTouched = true;\n    }\n\n    onOptionMouseDown(event: MouseEvent, index: number) {\n        this.changeFocusedOptionIndex(event, index);\n    }\n\n    onOptionMouseEnter(event: MouseEvent, index: number) {\n        if (this.focusOnHover() && this.focused) {\n            this.changeFocusedOptionIndex(event, index);\n        }\n    }\n\n    onOptionDoubleClick(event: MouseEvent, option: any) {\n        if (this.$disabled() || this.isOptionDisabled(option) || this.readonly()) {\n            return;\n        }\n\n        this.onDblClick.emit({\n            originalEvent: event,\n            option: option,\n            value: this.value\n        });\n    }\n\n    onFirstHiddenFocus(event: FocusEvent) {\n        focus(this.listViewChild()?.nativeElement);\n        const firstFocusableEl = getFirstFocusableElement(this.el?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])');\n        const lastEl = this.lastHiddenFocusableElement();\n        const firstEl = this.firstHiddenFocusableElement();\n        lastEl?.nativeElement && (lastEl.nativeElement.tabIndex = isEmpty(firstFocusableEl) ? -1 : undefined);\n        firstEl?.nativeElement && (firstEl.nativeElement.tabIndex = -1);\n    }\n\n    onLastHiddenFocus(event: FocusEvent) {\n        const relatedTarget = event.relatedTarget;\n        const lastEl = this.lastHiddenFocusableElement();\n        const firstEl = this.firstHiddenFocusableElement();\n\n        if (relatedTarget === this.listViewChild()?.nativeElement) {\n            const firstFocusableEl = <any>getFirstFocusableElement(this.el?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])');\n\n            focus(firstFocusableEl);\n            firstEl?.nativeElement && (firstEl.nativeElement.tabIndex = undefined);\n        } else {\n            focus(firstEl?.nativeElement);\n        }\n        lastEl?.nativeElement && (lastEl.nativeElement.tabIndex = -1);\n    }\n\n    onFocusout(event: FocusEvent) {\n        const lastEl = this.lastHiddenFocusableElement();\n        const firstEl = this.firstHiddenFocusableElement();\n        if (!this.el.nativeElement.contains(event.relatedTarget) && lastEl && firstEl) {\n            firstEl.nativeElement.tabIndex = lastEl.nativeElement.tabIndex = undefined;\n            this.scrollerTabIndex = '0';\n        }\n    }\n\n    onListFocus(event: FocusEvent) {\n        this.focused = true;\n        const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus() ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n        this.focusedOptionIndex.set(focusedOptionIndex);\n        this.scrollInView(focusedOptionIndex);\n        this.onFocus.emit(event);\n\n        this.scrollerTabIndex = '-1';\n    }\n\n    onListBlur(event: FocusEvent) {\n        this.focused = false;\n        this.focusedOptionIndex.set(-1);\n        this.startRangeIndex.set(-1);\n        this.searchValue = '';\n        this.onBlur.emit(event);\n    }\n\n    onHeaderCheckboxKeyDown(event) {\n        if (this.$disabled()) {\n            event.preventDefault();\n\n            return;\n        }\n\n        switch (event.code) {\n            case 'Space':\n                this.onToggleAll(event);\n                break;\n            case 'Enter':\n                this.onToggleAll(event);\n                break;\n            case 'Tab':\n                this.onHeaderCheckboxTabKeyDown(event);\n                break;\n            default:\n                break;\n        }\n    }\n\n    onHeaderCheckboxTabKeyDown(event) {\n        focus(this.listViewChild()?.nativeElement);\n        event.preventDefault();\n    }\n\n    onFilterChange(event: Event) {\n        let value: string = (event.target as HTMLInputElement).value?.trim();\n        this._filterValue.set(value);\n        this.focusedOptionIndex.set(-1);\n        this.startRangeIndex.set(-1);\n        this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });\n\n        !this.virtualScrollerDisabled() && this.scroller()?.scrollToIndex(0);\n    }\n\n    onFilterBlur(event: FocusEvent) {\n        this.focusedOptionIndex.set(-1);\n        this.startRangeIndex.set(-1);\n    }\n\n    onListKeyDown(event: KeyboardEvent) {\n        const metaKey = event.metaKey || event.ctrlKey;\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 '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 'Space':\n            case 'NumpadEnter':\n                this.onSpaceKey(event);\n                break;\n\n            case 'Tab':\n                //NOOP\n                break;\n\n            case 'ShiftLeft':\n            case 'ShiftRight':\n                this.onShiftKey();\n                break;\n\n            default:\n                if (this.multiple() && event.code === 'KeyA' && metaKey) {\n                    const value = this.visibleOptions()\n                        .filter((option) => this.isValidOption(option))\n                        .map((option) => this.getOptionValue(option));\n\n                    this.updateModel(value, event);\n\n                    event.preventDefault();\n                    break;\n                }\n\n                if (!metaKey && isPrintableCharacter(event.key)) {\n                    this.searchOptions(event, event.key);\n                    event.preventDefault();\n                }\n\n                break;\n        }\n    }\n\n    onFilterKeyDown(event: KeyboardEvent) {\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            case 'ArrowRight':\n                this.onArrowLeftKey(event, true);\n                break;\n\n            case 'Home':\n                this.onHomeKey(event, true);\n                break;\n\n            case 'End':\n                this.onEndKey(event, true);\n                break;\n\n            case 'Enter':\n                this.onEnterKey(event);\n                break;\n\n            case 'ShiftLeft':\n            case 'ShiftRight':\n                this.onShiftKey();\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    onArrowDownKey(event: KeyboardEvent) {\n        const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();\n\n        if (this.multiple() && event.shiftKey) {\n            this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n        }\n\n        this.changeFocusedOptionIndex(event, optionIndex);\n        event.preventDefault();\n    }\n\n    onArrowUpKey(event: KeyboardEvent) {\n        const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();\n\n        if (this.multiple() && event.shiftKey) {\n            this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n        }\n\n        this.changeFocusedOptionIndex(event, optionIndex);\n        event.preventDefault();\n    }\n\n    onArrowLeftKey(event: KeyboardEvent, pressedInInputText = false) {\n        pressedInInputText && this.focusedOptionIndex.set(-1);\n    }\n\n    onHomeKey(event: KeyboardEvent, pressedInInputText: boolean = false) {\n        if (pressedInInputText) {\n            if (event.shiftKey) {\n                return;\n            }\n            (event.currentTarget as HTMLInputElement).setSelectionRange(0, 0);\n            this.focusedOptionIndex.set(-1);\n        } else {\n            let metaKey = event.metaKey || event.ctrlKey;\n            let optionIndex = this.findFirstOptionIndex();\n\n            if (this.multiple() && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n            }\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n        }\n\n        event.preventDefault();\n    }\n\n    onEndKey(event: KeyboardEvent, pressedInInputText: boolean = false) {\n        if (pressedInInputText) {\n            if (event.shiftKey) {\n                return;\n            }\n            const target = event.currentTarget as HTMLInputElement;\n            const len = target.value.length;\n\n            target.setSelectionRange(len, len);\n            this.focusedOptionIndex.set(-1);\n        } else {\n            let metaKey = event.metaKey || event.ctrlKey;\n            let optionIndex = this.findLastOptionIndex();\n\n            if (this.multiple() && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n            }\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n        }\n\n        event.preventDefault();\n    }\n\n    onPageDownKey(event: KeyboardEvent) {\n        this.scrollInView(0);\n        event.preventDefault();\n    }\n\n    onPageUpKey(event: KeyboardEvent) {\n        this.scrollInView(this.visibleOptions().length - 1);\n        event.preventDefault();\n    }\n\n    onEnterKey(event) {\n        if (this.focusedOptionIndex() !== -1) {\n            if (this.multiple() && event.shiftKey) this.onOptionSelectRange(event, this.focusedOptionIndex());\n            else this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n        }\n\n        event.preventDefault();\n    }\n\n    onSpaceKey(event: KeyboardEvent) {\n        this.onEnterKey(event);\n    }\n\n    onShiftKey() {\n        const focusedOptionIndex = this.focusedOptionIndex();\n        this.startRangeIndex.set(focusedOptionIndex);\n    }\n\n    getOptionGroupChildren(optionGroup) {\n        return this.optionGroupChildren() ? resolveFieldData(optionGroup, this.optionGroupChildren()) : optionGroup.items;\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel() ? resolveFieldData(optionGroup, this.optionGroupLabel()) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel() ? resolveFieldData(option, this.optionLabel()) : option.label != undefined ? option.label : option;\n    }\n\n    getOptionIndex(index, scrollerOptions) {\n        return this.virtualScrollerDisabled() ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue() ? resolveFieldData(option, this.optionValue()) : !this.optionLabel() && option && option.value !== undefined ? option.value : option;\n    }\n\n    getOptionTrackKey(option: any, index: number): string {\n        const key = this.isOptionGroup(option) ? this.getOptionGroupLabel(option.optionGroup) : this.getOptionValue(option);\n        return `${key ?? ''}_${index}`;\n    }\n\n    getAriaPosInset(index: number) {\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    getPTOptions(option: any, itemOptions: any, index: number, key: string) {\n        return this.ptm(key, {\n            context: {\n                selected: this.isSelected(option),\n                focused: this.focusedOptionIndex() === this.getOptionIndex(index, itemOptions),\n                disabled: this.isOptionDisabled(option)\n            }\n        });\n    }\n\n    getOptionId(index: number, scrollerOptions: any) {\n        return `${this.$id()}_${this.getOptionIndex(index, scrollerOptions)}`;\n    }\n\n    getOptionCheckboxDisabled(option: any) {\n        return this.$disabled() || this.isOptionDisabled(option);\n    }\n\n    getCheckIconContext(option: any) {\n        return { $implicit: this.isSelected(option) };\n    }\n\n    getCheckmarkContext(option: any) {\n        return { implicit: this.isSelected(option) };\n    }\n\n    getGroupTemplateContext(optionGroup: any) {\n        return { $implicit: optionGroup };\n    }\n\n    getItemTemplateContext(option: any, index: number, scrollerOptions: any) {\n        return {\n            $implicit: option,\n            index: this.getOptionIndex(index, scrollerOptions),\n            selected: this.isSelected(option),\n            disabled: this.isOptionDisabled(option)\n        };\n    }\n\n    /** Options shown in the multi-drag preview before collapsing into a \"+N\" row. */\n    readonly dragPreviewLimit = 4;\n\n    /**\n     * The options a multi-drag would carry: this list's selected options, in list order.\n     * Drives the drag preview when an option inside a multi-selection is dragged.\n     */\n    dragPreviewOptions(): any[] {\n        return this.visibleOptions().filter((option) => !this.isOptionGroup(option) && this.isSelected(option));\n    }\n\n    /** True when dragging this option effectively drags the whole multi-selection. */\n    isMultiDrag(option: any): boolean {\n        return this.isSelected(option) && this.dragPreviewOptions().length > 1;\n    }\n\n    getDragPreviewTemplateContext(option: any) {\n        return {\n            $implicit: option,\n            index: this.visibleOptions().indexOf(option),\n            selected: true,\n            disabled: this.isOptionDisabled(option)\n        };\n    }\n\n    getFilterTemplateContext() {\n        return { options: this.filterOptions };\n    }\n\n    getBuildInItemsContext(items: any[], scrollerOptions: any) {\n        return { $implicit: items, options: scrollerOptions };\n    }\n\n    getLoaderTemplateContext(scrollerOptions: any) {\n        return { options: scrollerOptions };\n    }\n\n    isOptionFocused(index: number, scrollerOptions: any) {\n        return this.focusedOptionIndex() === this.getOptionIndex(index, scrollerOptions);\n    }\n\n    hasSelectedOption() {\n        return isNotEmpty(this.modelValue());\n    }\n\n    isOptionGroup(option) {\n        return this.optionGroupLabel() && option.optionGroup && option.group;\n    }\n\n    changeFocusedOptionIndex(event, index) {\n        if (this.focusedOptionIndex() !== index) {\n            this.focusedOptionIndex.set(index);\n            this.scrollInView();\n\n            if (this.selectOnFocus() && !this.multiple()) {\n                this.onOptionSelect(event, this.visibleOptions()[index]);\n            }\n        }\n    }\n\n    searchOptions(event, char) {\n        this.searchValue = (this.searchValue || '') + char;\n\n        let optionIndex = -1;\n        let matched = false;\n\n        if (this.focusedOptionIndex() !== -1) {\n            optionIndex = this.visibleOptions()\n                .slice(this.focusedOptionIndex())\n                .findIndex((option) => this.isOptionMatched(option));\n            optionIndex =\n                optionIndex === -1\n                    ? this.visibleOptions()\n                          .slice(0, this.focusedOptionIndex())\n                          .findIndex((option) => this.isOptionMatched(option))\n                    : optionIndex + this.focusedOptionIndex();\n        } else {\n            optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));\n        }\n\n        if (optionIndex !== -1) {\n            matched = true;\n        }\n\n        if (optionIndex === -1 && this.focusedOptionIndex() === -1) {\n            optionIndex = this.findFirstFocusedOptionIndex();\n        }\n\n        if (optionIndex !== -1) {\n            this.changeFocusedOptionIndex(event, optionIndex);\n        }\n\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(() => {\n            this.searchValue = '';\n            this.searchTimeout = null;\n        }, 500);\n\n        return matched;\n    }\n\n    isOptionMatched(option) {\n        return this.isValidOption(option) && this.getOptionLabel(option)?.toLocaleLowerCase(this.filterLocale()).startsWith(this.searchValue?.toLocaleLowerCase(this.filterLocale()));\n    }\n\n    scrollInView(index = -1) {\n        const id = index !== -1 ? `${this.$id()}_${index}` : this.focusedOptionId();\n        const element = findSingle(this.listViewChild()?.nativeElement, `li[id=\"${id}\"]`);\n\n        if (element) {\n            element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n        } else if (!this.virtualScrollerDisabled()) {\n            this.virtualScroll() && this.scroller()?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());\n        }\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.findFirstSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n    }\n\n    findLastFocusedOptionIndex() {\n        const selectedIndex = this.findLastSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n    }\n\n    findLastSelectedOptionIndex() {\n        return this.hasSelectedOption() ? findLastIndex(this.visibleOptions(), (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    findNextSelectedOptionIndex(index) {\n        const matchedOptionIndex =\n            this.hasSelectedOption() && index < this.visibleOptions().length - 1\n                ? this.visibleOptions()\n                      .slice(index + 1)\n                      .findIndex((option) => this.isValidSelectedOption(option))\n                : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n    }\n\n    findPrevSelectedOptionIndex(index) {\n        const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n    }\n\n    findFirstSelectedOptionIndex() {\n        return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\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    findSelectedOptionIndex() {\n        if (this.$filled()) {\n            if (this.multiple()) {\n                for (let index = this.modelValue().length - 1; index >= 0; index--) {\n                    const value = this.modelValue()[index];\n                    const matchedOptionIndex = this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option) && this.isEquals(value, this.getOptionValue(option)));\n\n                    if (matchedOptionIndex > -1) return matchedOptionIndex;\n                }\n            } else {\n                return this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option));\n            }\n        }\n\n        return -1;\n    }\n\n    findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n        let matchedOptionIndex = -1;\n\n        if (this.hasSelectedOption()) {\n            if (firstCheckUp) {\n                matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n                matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n            } else {\n                matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n                matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n            }\n        }\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n    }\n\n    equalityKey() {\n        return this.optionValue() ? null : this.dataKey();\n    }\n\n    isValidSelectedOption(option) {\n        return this.isValidOption(option) && this.isSelected(option);\n    }\n\n    isOptionDisabled(option: any) {\n        const optionDisabledValue = this.optionDisabled();\n        if (isFunction(optionDisabledValue)) {\n            return optionDisabledValue(option);\n        }\n        return optionDisabledValue ? resolveFieldData(option, optionDisabledValue) : false;\n    }\n\n    isEquals(value1, value2) {\n        return equals(value1, value2, this.equalityKey() || '');\n    }\n\n    isSelected(option) {\n        const optionValue = this.getOptionValue(option);\n\n        if (this.multiple()) return (this.modelValue() || []).some((value) => this.isEquals(value, optionValue));\n        else return this.isEquals(this.modelValue(), optionValue);\n    }\n\n    isValidOption(option) {\n        return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n    }\n\n    isEmpty() {\n        return !this._options()?.length || !this.visibleOptions()?.length;\n    }\n\n    hasFilter() {\n        return this._filterValue() && (this._filterValue()?.trim().length || 0) > 0;\n    }\n\n    resetFilter() {\n        const filterEl = this.filterViewChild();\n        if (filterEl && filterEl.nativeElement) {\n            filterEl.nativeElement.value = '';\n        }\n\n        this._filterValue.set(null);\n    }\n\n    onDragEntered() {\n        this.isDragging.set(true);\n        this.el.nativeElement.setAttribute('p-listbox-dragging', 'true');\n    }\n\n    onDragExited() {\n        this.isDragging.set(false);\n        this.el.nativeElement.setAttribute('p-listbox-dragging', 'false');\n    }\n\n    drop(event: CdkDragDrop<string[]>) {\n        this.isDragging.set(false);\n        if (event) {\n            // If dragdrop is enabled and same container (reordering), automatically handle reordering\n            if (this.dragdrop() && event.previousContainer === event.container) {\n                const currentOptions = [...this._options()];\n\n                if (this._filterValue()) {\n                    const visible = this.visibleOptions();\n                    const fromItem = visible[event.previousIndex];\n                    const toItem = visible[event.currentIndex];\n                    const realFrom = currentOptions.indexOf(fromItem);\n                    const realTo = currentOptions.indexOf(toItem);\n                    if (realFrom !== -1 && realTo !== -1) {\n                        moveItemInArray(currentOptions, realFrom, realTo);\n                    }\n                } else {\n                    moveItemInArray(currentOptions, event.previousIndex, event.currentIndex);\n                }\n\n                this._options.set(currentOptions);\n                this.changeFocusedOptionIndex(event, event.currentIndex);\n\n                // Update model value if needed for selection preservation\n                if (this.modelValue()) {\n                    this.writeModelValue(this.modelValue());\n                    this.onModelChange(this.modelValue());\n                }\n            }\n\n            // Always emit the event for custom handling\n            this.onDrop.emit(event);\n        }\n    }\n\n    get containerDataP() {\n        return this.cn({\n            invalid: this.invalid(),\n            disabled: this.$disabled()\n        });\n    }\n\n    /**\n     * @override\n     *\n     * @see {@link BaseEditableHolder.writeControlValue}\n     * Writes the value to the control.\n     */\n    writeControlValue(value: any, setModelValue: (value: any) => void): void {\n        this.value = value;\n        setModelValue(this.value);\n    }\n}\n\n@NgModule({\n    imports: [Listbox, SharedModule],\n    exports: [Listbox, SharedModule]\n})\nexport class ListboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["listbox_style","SearchIcon","CheckIcon","BlankIcon"],"mappings":"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"}