{"version":3,"file":"index.mjs","sources":["../../src/multiselect/BaseMultiSelect.vue","../../src/multiselect/MultiSelect.vue","../../src/multiselect/MultiSelect.vue?vue&type=template&id=15f3c2c6&lang.js"],"sourcesContent":["<script>\nimport BaseInput from '@primevue/core/baseinput';\nimport MultiSelectStyle from 'primevue/multiselect/style';\n\nexport default {\n    name: 'BaseMultiSelect',\n    extends: BaseInput,\n    props: {\n        options: Array,\n        optionLabel: null,\n        optionValue: null,\n        optionDisabled: null,\n        optionGroupLabel: null,\n        optionGroupChildren: null,\n        scrollHeight: {\n            type: String,\n            default: '14rem'\n        },\n        placeholder: String,\n        inputId: {\n            type: String,\n            default: null\n        },\n        panelClass: {\n            type: String,\n            default: null\n        },\n        panelStyle: {\n            type: null,\n            default: null\n        },\n        overlayClass: {\n            type: String,\n            default: null\n        },\n        overlayStyle: {\n            type: null,\n            default: null\n        },\n        dataKey: null,\n        showClear: {\n            type: Boolean,\n            default: false\n        },\n        clearIcon: {\n            type: String,\n            default: undefined\n        },\n        resetFilterOnClear: {\n            type: Boolean,\n            default: false\n        },\n        filter: Boolean,\n        filterPlaceholder: String,\n        filterLocale: String,\n        filterMatchMode: {\n            type: String,\n            default: 'contains'\n        },\n        filterFields: {\n            type: Array,\n            default: null\n        },\n        appendTo: {\n            type: [String, Object],\n            default: 'body'\n        },\n        display: {\n            type: String,\n            default: 'comma'\n        },\n        selectedItemsLabel: {\n            type: String,\n            default: null\n        },\n        maxSelectedLabels: {\n            type: Number,\n            default: null\n        },\n        selectionLimit: {\n            type: Number,\n            default: null\n        },\n        showToggleAll: {\n            type: Boolean,\n            default: true\n        },\n        loading: {\n            type: Boolean,\n            default: false\n        },\n        checkboxIcon: {\n            type: String,\n            default: undefined\n        },\n        dropdownIcon: {\n            type: String,\n            default: undefined\n        },\n        filterIcon: {\n            type: String,\n            default: undefined\n        },\n        loadingIcon: {\n            type: String,\n            default: undefined\n        },\n        removeTokenIcon: {\n            type: String,\n            default: undefined\n        },\n        chipIcon: {\n            type: String,\n            default: undefined\n        },\n        selectAll: {\n            type: Boolean,\n            default: null\n        },\n        resetFilterOnHide: {\n            type: Boolean,\n            default: false\n        },\n        virtualScrollerOptions: {\n            type: Object,\n            default: null\n        },\n        autoOptionFocus: {\n            type: Boolean,\n            default: false\n        },\n        autoFilterFocus: {\n            type: Boolean,\n            default: false\n        },\n        focusOnHover: {\n            type: Boolean,\n            default: true\n        },\n        highlightOnSelect: {\n            type: Boolean,\n            default: false\n        },\n        filterMessage: {\n            type: String,\n            default: null\n        },\n        selectionMessage: {\n            type: String,\n            default: null\n        },\n        emptySelectionMessage: {\n            type: String,\n            default: null\n        },\n        emptyFilterMessage: {\n            type: String,\n            default: null\n        },\n        emptyMessage: {\n            type: String,\n            default: null\n        },\n        tabindex: {\n            type: Number,\n            default: 0\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        },\n        ariaLabelledby: {\n            type: String,\n            default: null\n        }\n    },\n    style: MultiSelectStyle,\n    provide() {\n        return {\n            $pcMultiSelect: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :class=\"cx('root')\" :style=\"sx('root')\" @click=\"onContainerClick\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n        <div class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenInputContainer')\" :data-p-hidden-accessible=\"true\">\n            <input\n                ref=\"focusInput\"\n                :id=\"inputId\"\n                type=\"text\"\n                readonly\n                :disabled=\"disabled\"\n                :placeholder=\"placeholder\"\n                :tabindex=\"!disabled ? tabindex : -1\"\n                role=\"combobox\"\n                :aria-label=\"ariaLabel\"\n                :aria-labelledby=\"ariaLabelledby\"\n                aria-haspopup=\"listbox\"\n                :aria-expanded=\"overlayVisible\"\n                :aria-controls=\"overlayVisible ? $id + '_list' : undefined\"\n                :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                :aria-invalid=\"invalid || undefined\"\n                @focus=\"onFocus\"\n                @blur=\"onBlur\"\n                @keydown=\"onKeyDown\"\n                v-bind=\"ptm('hiddenInput')\"\n            />\n        </div>\n        <div :class=\"cx('labelContainer')\" v-bind=\"ptm('labelContainer')\">\n            <div :class=\"cx('label')\" :data-p=\"labelDataP\" v-bind=\"ptm('label')\">\n                <slot name=\"value\" :value=\"d_value\" :placeholder=\"placeholder\">\n                    <template v-if=\"display === 'comma'\">\n                        {{ label || 'empty' }}\n                    </template>\n                    <template v-else-if=\"display === 'chip'\">\n                        <template v-if=\"loading && (!options || options.length === 0)\">{{ placeholder || 'empty' }}</template>\n                        <template v-else-if=\"chipSelectedItems\">\n                            <span>{{ label }}</span>\n                        </template>\n                        <template v-else>\n                            <span v-for=\"(item, idx) of d_value\" :key=\"`chip-${getLabelByValue(item)}_${idx}`\" :class=\"cx('chipItem')\" v-bind=\"ptm('chipItem')\">\n                                <slot name=\"chip\" :value=\"item\" :removeCallback=\"(event) => removeOption(event, item)\">\n                                    <!-- TODO: removetokenicon and removeTokenIcon  deprecated since v4.0. Use chipicon slot and chipIcon prop-->\n                                    <Chip :class=\"cx('pcChip')\" :label=\"getLabelByValue(item)\" :removeIcon=\"chipIcon || removeTokenIcon\" removable :unstyled=\"unstyled\" @remove=\"removeOption($event, item)\" :pt=\"ptm('pcChip')\">\n                                        <template #removeicon>\n                                            <slot :name=\"$slots.chipicon ? 'chipicon' : 'removetokenicon'\" :class=\"cx('chipIcon')\" :item=\"item\" :removeCallback=\"(event) => removeOption(event, item)\" />\n                                        </template>\n                                    </Chip>\n                                </slot>\n                            </span>\n                        </template>\n                        <template v-if=\"!d_value || d_value.length === 0\">{{ placeholder || 'empty' }}</template>\n                    </template>\n                </slot>\n            </div>\n        </div>\n        <slot v-if=\"isClearIconVisible\" name=\"clearicon\" :class=\"cx('clearIcon')\" :clearCallback=\"onClearClick\">\n            <component :is=\"clearIcon ? 'i' : 'TimesIcon'\" ref=\"clearIcon\" :class=\"[cx('clearIcon'), clearIcon]\" @click=\"onClearClick\" v-bind=\"ptm('clearIcon')\" data-pc-section=\"clearicon\" />\n        </slot>\n        <div :class=\"cx('dropdown')\" v-bind=\"ptm('dropdown')\">\n            <slot v-if=\"loading\" name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n                <span v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n                <SpinnerIcon v-else :class=\"cx('loadingIcon')\" spin aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n            </slot>\n            <slot v-else name=\"dropdownicon\" :class=\"cx('dropdownIcon')\">\n                <component :is=\"dropdownIcon ? 'span' : 'ChevronDownIcon'\" :class=\"[cx('dropdownIcon'), dropdownIcon]\" aria-hidden=\"true\" :data-p=\"dropdownIconDataP\" v-bind=\"ptm('dropdownIcon')\" />\n            </slot>\n        </div>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-anchored-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div v-if=\"overlayVisible\" :ref=\"overlayRef\" :style=\"[panelStyle, overlayStyle]\" :class=\"[cx('overlay'), panelClass, overlayClass]\" @click=\"onOverlayClick\" @keydown=\"onOverlayKeyDown\" :data-p=\"overlayDataP\" v-bind=\"ptm('overlay')\">\n                    <span\n                        ref=\"firstHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\n                        @focus=\"onFirstHiddenFocus\"\n                        v-bind=\"ptm('hiddenFirstFocusableEl')\"\n                        :data-p-hidden-accessible=\"true\"\n                        :data-p-hidden-focusable=\"true\"\n                    ></span>\n                    <slot name=\"header\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n                    <div v-if=\"(showToggleAll && selectionLimit == null) || filter\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n                        <Checkbox\n                            v-if=\"showToggleAll && selectionLimit == null\"\n                            :modelValue=\"allSelected\"\n                            :binary=\"true\"\n                            :disabled=\"disabled\"\n                            :variant=\"variant\"\n                            :aria-label=\"toggleAllAriaLabel\"\n                            @change=\"onToggleAll\"\n                            :unstyled=\"unstyled\"\n                            :pt=\"getHeaderCheckboxPTOptions('pcHeaderCheckbox')\"\n                            :formControl=\"{ novalidate: true }\"\n                        >\n                            <template #icon=\"slotProps\">\n                                <component v-if=\"$slots.headercheckboxicon\" :is=\"$slots.headercheckboxicon\" :checked=\"slotProps.checked\" :class=\"slotProps.class\" />\n                                <component v-else-if=\"slotProps.checked\" :is=\"checkboxIcon ? 'span' : 'CheckIcon'\" :class=\"[slotProps.class, { [checkboxIcon]: slotProps.checked }]\" v-bind=\"getHeaderCheckboxPTOptions('pcHeaderCheckbox.icon')\" />\n                            </template>\n                        </Checkbox>\n                        <IconField v-if=\"filter\" :class=\"cx('pcFilterContainer')\" :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n                            <InputText\n                                ref=\"filterInput\"\n                                :value=\"filterValue\"\n                                @vue:mounted=\"onFilterUpdated\"\n                                @vue:updated=\"onFilterUpdated\"\n                                :class=\"cx('pcFilter')\"\n                                :placeholder=\"filterPlaceholder\"\n                                :disabled=\"disabled\"\n                                :variant=\"variant\"\n                                :unstyled=\"unstyled\"\n                                role=\"searchbox\"\n                                autocomplete=\"off\"\n                                :aria-owns=\"$id + '_list'\"\n                                :aria-activedescendant=\"focusedOptionId\"\n                                @keydown=\"onFilterKeyDown\"\n                                @blur=\"onFilterBlur\"\n                                @input=\"onFilterChange\"\n                                :pt=\"ptm('pcFilter')\"\n                                :formControl=\"{ novalidate: true }\"\n                            />\n                            <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n                                <slot name=\"filtericon\">\n                                    <span v-if=\"filterIcon\" :class=\"filterIcon\" v-bind=\"ptm('filterIcon')\" />\n                                    <SearchIcon v-else v-bind=\"ptm('filterIcon')\" />\n                                </slot>\n                            </InputIcon>\n                        </IconField>\n                        <span v-if=\"filter\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenFilterResult')\" :data-p-hidden-accessible=\"true\">\n                            {{ filterResultMessageText }}\n                        </span>\n                    </div>\n                    <div :class=\"cx('listContainer')\" :style=\"{ 'max-height': virtualScrollerDisabled ? scrollHeight : '' }\" v-bind=\"ptm('listContainer')\">\n                        <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :items=\"visibleOptions\" :style=\"{ height: scrollHeight }\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n                            <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n                                <ul :ref=\"(el) => listRef(el, contentRef)\" :id=\"$id + '_list'\" :class=\"[cx('list'), styleClass]\" :style=\"contentStyle\" role=\"listbox\" aria-multiselectable=\"true\" :aria-label=\"listAriaLabel\" v-bind=\"ptm('list')\">\n                                    <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n                                        <li\n                                            v-if=\"isOptionGroup(option)\"\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('optionGroup')\"\n                                            role=\"option\"\n                                            v-bind=\"ptm('optionGroup')\"\n                                        >\n                                            <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionGroupLabel(option.optionGroup) }}</slot>\n                                        </li>\n                                        <li\n                                            v-else\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            v-ripple\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('option', { option, index: i, getItemOptions })\"\n                                            role=\"option\"\n                                            :aria-label=\"getOptionLabel(option)\"\n                                            :aria-selected=\"isSelected(option)\"\n                                            :aria-disabled=\"isOptionDisabled(option)\"\n                                            :aria-setsize=\"ariaSetSize\"\n                                            :aria-posinset=\"getAriaPosInset(getOptionIndex(i, getItemOptions))\"\n                                            @click=\"onOptionSelect($event, option, getOptionIndex(i, getItemOptions), true)\"\n                                            @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n                                            v-bind=\"getCheckboxPTOptions(option, getItemOptions, i, 'option')\"\n                                            :data-p-selected=\"isSelected(option)\"\n                                            :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n                                            :data-p-disabled=\"isOptionDisabled(option)\"\n                                        >\n                                            <Checkbox\n                                                :defaultValue=\"isSelected(option)\"\n                                                :binary=\"true\"\n                                                :tabindex=\"-1\"\n                                                :variant=\"variant\"\n                                                :unstyled=\"unstyled\"\n                                                :pt=\"getCheckboxPTOptions(option, getItemOptions, i, 'pcOptionCheckbox')\"\n                                                :formControl=\"{ novalidate: true }\"\n                                            >\n                                                <template #icon=\"slotProps\">\n                                                    <component v-if=\"$slots.optioncheckboxicon || $slots.itemcheckboxicon\" :is=\"$slots.optioncheckboxicon || $slots.itemcheckboxicon\" :checked=\"slotProps.checked\" :class=\"slotProps.class\" />\n                                                    <component\n                                                        v-else-if=\"slotProps.checked\"\n                                                        :is=\"checkboxIcon ? 'span' : 'CheckIcon'\"\n                                                        :class=\"[slotProps.class, { [checkboxIcon]: slotProps.checked }]\"\n                                                        v-bind=\"getCheckboxPTOptions(option, getItemOptions, i, 'pcOptionCheckbox.icon')\"\n                                                    />\n                                                </template>\n                                            </Checkbox>\n                                            <slot name=\"option\" :option=\"option\" :selected=\"isSelected(option)\" :index=\"getOptionIndex(i, getItemOptions)\">\n                                                <span v-bind=\"ptm('optionLabel')\">{{ getOptionLabel(option) }}</span>\n                                            </slot>\n                                        </li>\n                                    </template>\n                                    <li v-if=\"filterValue && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n                                        <slot name=\"emptyfilter\">{{ emptyFilterMessageText }}</slot>\n                                    </li>\n                                    <li v-else-if=\"!options || (options && options.length === 0)\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n                                        <slot name=\"empty\">{{ emptyMessageText }}</slot>\n                                    </li>\n                                </ul>\n                            </template>\n                            <template v-if=\"$slots.loader\" v-slot:loader=\"{ options }\">\n                                <slot name=\"loader\" :options=\"options\"></slot>\n                            </template>\n                        </VirtualScroller>\n                    </div>\n                    <slot name=\"footer\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n                    <span v-if=\"!options || (options && options.length === 0)\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenEmptyMessage')\" :data-p-hidden-accessible=\"true\">\n                        {{ emptyMessageText }}\n                    </span>\n                    <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSelectedMessage')\" :data-p-hidden-accessible=\"true\">\n                        {{ selectedMessageText }}\n                    </span>\n                    <span\n                        ref=\"lastHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\n                        @focus=\"onLastHiddenFocus\"\n                        v-bind=\"ptm('hiddenLastFocusableEl')\"\n                        :data-p-hidden-accessible=\"true\"\n                        :data-p-hidden-focusable=\"true\"\n                    ></span>\n                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { absolutePosition, addStyle, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, getOuterWidth, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { FilterService } from '@primevue/core/api';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport TimesIcon from '@primevue/icons/times';\nimport Checkbox from 'primevue/checkbox';\nimport Chip from 'primevue/chip';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseMultiSelect from './BaseMultiSelect.vue';\n\nexport default {\n    name: 'MultiSelect',\n    extends: BaseMultiSelect,\n    inheritAttrs: false,\n    emits: ['change', 'focus', 'blur', 'before-show', 'before-hide', 'show', 'hide', 'filter', 'selectall-change'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    overlay: null,\n    list: null,\n    virtualScroller: null,\n    startRangeIndex: -1,\n    searchTimeout: null,\n    searchValue: '',\n    selectOnFocus: false,\n    data() {\n        return {\n            clicked: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            filterValue: null,\n            overlayVisible: false\n        };\n    },\n    watch: {\n        options() {\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.autoUpdateModel();\n    },\n    beforeUnmount() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.overlay = null;\n        }\n    },\n    methods: {\n        getOptionIndex(index, fn) {\n            return this.virtualScrollerDisabled ? index : fn && fn(index)['index'];\n        },\n        getOptionLabel(option) {\n            return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n        },\n        getOptionValue(option) {\n            return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n        },\n        getOptionRenderKey(option, index) {\n            return this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option) + `_${index}`;\n        },\n        getHeaderCheckboxPTOptions(key) {\n            return this.ptm(key, {\n                context: {\n                    selected: this.allSelected\n                }\n            });\n        },\n        getCheckboxPTOptions(option, itemOptions, index, key) {\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        isOptionDisabled(option) {\n            if (this.maxSelectionLimitReached && !this.isSelected(option)) {\n                return true;\n            }\n\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        isOptionGroup(option) {\n            return !!(this.optionGroupLabel && option.optionGroup && option.group);\n        },\n\n        getOptionGroupLabel(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupLabel);\n        },\n        getOptionGroupChildren(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupChildren);\n        },\n        getAriaPosInset(index) {\n            return (this.optionGroupLabel ? index - this.visibleOptions.slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;\n        },\n        show(isFocus) {\n            this.$emit('before-show');\n            this.overlayVisible = true;\n            this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n\n            isFocus && focus(this.$refs.focusInput);\n        },\n        hide(isFocus) {\n            const _hide = () => {\n                this.$emit('before-hide');\n                this.overlayVisible = false;\n                this.clicked = false;\n                this.focusedOptionIndex = -1;\n                this.searchValue = '';\n\n                this.resetFilterOnHide && (this.filterValue = null);\n                isFocus && focus(this.$refs.focusInput);\n            };\n\n            setTimeout(() => {\n                _hide();\n            }, 0); // For ScreenReaders\n        },\n        onFocus(event) {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            this.focused = true;\n\n            if (this.overlayVisible) {\n                this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n                !this.autoFilterFocus && this.scrollInView(this.focusedOptionIndex);\n            }\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.clicked = false;\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.searchValue = '';\n            this.$emit('blur', event);\n            this.formField.onBlur?.();\n        },\n        onKeyDown(event) {\n            if (this.disabled) {\n                event.preventDefault();\n\n                return;\n            }\n\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 'NumpadEnter':\n                case 'Space':\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 'ShiftLeft':\n                case 'ShiftRight':\n                    this.onShiftKey(event);\n                    break;\n\n                default:\n                    if (event.code === 'KeyA' && metaKey) {\n                        const value = this.visibleOptions.filter((option) => this.isValidOption(option)).map((option) => this.getOptionValue(option));\n\n                        this.updateModel(event, value);\n\n                        event.preventDefault();\n                        break;\n                    }\n\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        !this.overlayVisible && this.show();\n                        this.searchOptions(event);\n                        event.preventDefault();\n                    }\n\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onContainerClick(event) {\n            if (this.disabled || this.loading) {\n                return;\n            }\n\n            if (event.target.tagName === 'INPUT' || event.target.getAttribute('data-pc-section') === 'clearicon' || event.target.closest('[data-pc-section=\"clearicon\"]')) {\n                return;\n            } else if (!this.overlay || !this.overlay.contains(event.target)) {\n                this.overlayVisible ? this.hide(true) : this.show(true);\n            }\n\n            this.clicked = true;\n        },\n        onClearClick(event) {\n            this.updateModel(event, []);\n            this.resetFilterOnClear && (this.filterValue = null);\n        },\n        onFirstHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getFirstFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onLastHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getLastFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onOptionSelect(event, option, index = -1, isFocus = false) {\n            if (this.disabled || this.isOptionDisabled(option)) {\n                return;\n            }\n\n            let selected = this.isSelected(option);\n            let value = null;\n\n            if (selected) value = this.d_value.filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey));\n            else value = [...(this.d_value || []), this.getOptionValue(option)];\n\n            this.updateModel(event, value);\n            index !== -1 && (this.focusedOptionIndex = index);\n            isFocus && focus(this.$refs.focusInput);\n        },\n        onOptionMouseMove(event, index) {\n            if (this.focusOnHover) {\n                this.changeFocusedOptionIndex(event, index);\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(event, value);\n            }\n        },\n        onFilterChange(event) {\n            const value = event.target.value;\n\n            this.filterValue = value;\n            this.focusedOptionIndex = -1;\n            this.$emit('filter', { originalEvent: event, value });\n\n            !this.virtualScrollerDisabled && this.virtualScroller.scrollToIndex(0);\n        },\n        onFilterKeyDown(event) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event, true);\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                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, true);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onFilterBlur() {\n            this.focusedOptionIndex = -1;\n        },\n        onFilterUpdated() {\n            if (this.overlayVisible) {\n                this.alignOverlay();\n            }\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.$el\n            });\n        },\n        onOverlayKeyDown(event) {\n            switch (event.code) {\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            if (!this.overlayVisible) {\n                this.show();\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n                if (event.shiftKey) {\n                    this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event, pressedInInputText = false) {\n            if (event.altKey && !pressedInInputText) {\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.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                if (event.shiftKey) {\n                    this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n                event.preventDefault();\n            }\n        },\n        onArrowLeftKey(event, pressedInInputText = false) {\n            pressedInInputText && (this.focusedOptionIndex = -1);\n        },\n        onHomeKey(event, pressedInInputText = false) {\n            if (pressedInInputText) {\n                const target = event.currentTarget;\n\n                if (event.shiftKey) {\n                    target.setSelectionRange(0, event.target.selectionStart);\n                } else {\n                    target.setSelectionRange(0, 0);\n                    this.focusedOptionIndex = -1;\n                }\n            } else {\n                let metaKey = event.metaKey || event.ctrlKey;\n                let optionIndex = this.findFirstOptionIndex();\n\n                if (event.shiftKey && metaKey) {\n                    this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n            }\n\n            event.preventDefault();\n        },\n        onEndKey(event, pressedInInputText = false) {\n            if (pressedInInputText) {\n                const target = event.currentTarget;\n\n                if (event.shiftKey) {\n                    target.setSelectionRange(event.target.selectionStart, target.value.length);\n                } else {\n                    const len = target.value.length;\n\n                    target.setSelectionRange(len, len);\n                    this.focusedOptionIndex = -1;\n                }\n            } else {\n                let metaKey = event.metaKey || event.ctrlKey;\n                let optionIndex = this.findLastOptionIndex();\n\n                if (event.shiftKey && metaKey) {\n                    this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n            }\n\n            event.preventDefault();\n        },\n        onPageUpKey(event) {\n            this.scrollInView(0);\n            event.preventDefault();\n        },\n        onPageDownKey(event) {\n            this.scrollInView(this.visibleOptions.length - 1);\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (!this.overlayVisible) {\n                this.focusedOptionIndex = -1; // reset\n                this.onArrowDownKey(event);\n            } else {\n                if (this.focusedOptionIndex !== -1) {\n                    if (event.shiftKey) this.onOptionSelectRange(event, this.focusedOptionIndex);\n                    else this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n            }\n\n            event.preventDefault();\n        },\n        onEscapeKey(event) {\n            if (this.overlayVisible) {\n                this.hide(true);\n                event.stopPropagation();\n            }\n\n            event.preventDefault();\n        },\n        onTabKey(event, pressedInInputText = false) {\n            if (!pressedInInputText) {\n                if (this.overlayVisible && this.hasFocusableElements()) {\n                    focus(event.shiftKey ? this.$refs.lastHiddenFocusableElementOnOverlay : this.$refs.firstHiddenFocusableElementOnOverlay);\n\n                    event.preventDefault();\n                } else {\n                    if (this.focusedOptionIndex !== -1) {\n                        this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                    }\n\n                    this.overlayVisible && this.hide(this.filter);\n                }\n            }\n        },\n        onShiftKey() {\n            this.startRangeIndex = this.focusedOptionIndex;\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0' });\n            this.alignOverlay();\n            this.scrollInView();\n\n            this.autoFilterFocus && focus(this.$refs.filterInput.$el);\n            this.autoUpdateModel();\n\n            // Issue: #7508\n            this.$attrSelector && el.setAttribute(this.$attrSelector, '');\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave(el) {\n            el.style.pointerEvents = 'none';\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        alignOverlay() {\n            if (this.appendTo === 'self') {\n                relativePosition(this.overlay, this.$el);\n            } else {\n                this.overlay.style.minWidth = getOuterWidth(this.$el) + 'px';\n                absolutePosition(this.overlay, this.$el);\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && this.isOutsideClicked(event)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener, true);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener, true);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        isOutsideClicked(event) {\n            return !(this.$el.isSameNode(event.target) || this.$el.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));\n        },\n        getLabelByValue(value) {\n            const options = this.optionGroupLabel ? this.flatOptions(this.options) : this.options || [];\n            const matchedOption = options.find((option) => !this.isOptionGroup(option) && equals(this.getOptionValue(option), value, this.equalityKey));\n\n            return this.getOptionLabel(matchedOption);\n        },\n        getSelectedItemsLabel() {\n            let pattern = /{(.*?)}/;\n            const selectedItemsLabel = this.selectedItemsLabel || this.$primevue.config.locale.selectionMessage;\n\n            if (pattern.test(selectedItemsLabel)) {\n                return selectedItemsLabel.replace(selectedItemsLabel.match(pattern)[0], this.d_value.length + '');\n            }\n\n            return selectedItemsLabel;\n        },\n        onToggleAll(event) {\n            if (this.selectAll !== null) {\n                this.$emit('selectall-change', { originalEvent: event, checked: !this.allSelected });\n            } else {\n                const value = this.allSelected ? [] : this.visibleOptions.filter((option) => this.isValidOption(option)).map((option) => this.getOptionValue(option));\n\n                this.updateModel(event, value);\n            }\n        },\n        removeOption(event, optionValue) {\n            event.stopPropagation();\n            let value = this.d_value.filter((val) => !equals(val, optionValue, this.equalityKey));\n\n            this.updateModel(event, value);\n        },\n        clearFilter() {\n            this.filterValue = null;\n        },\n        hasFocusableElements() {\n            return getFocusableElements(this.overlay, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\n        },\n        isOptionMatched(option) {\n            return this.isValidOption(option) && typeof this.getOptionLabel(option) === 'string' && this.getOptionLabel(option)?.toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n        },\n        isValidOption(option) {\n            return isNotEmpty(option) && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n        },\n        isValidSelectedOption(option) {\n            return this.isValidOption(option) && this.isSelected(option);\n        },\n        isEquals(value1, value2) {\n            return equals(value1, value2, this.equalityKey);\n        },\n        isSelected(option) {\n            const optionValue = this.getOptionValue(option);\n\n            return (this.d_value || []).some((value) => this.isEquals(value, optionValue));\n        },\n        findFirstOptionIndex() {\n            return this.visibleOptions.findIndex((option) => this.isValidOption(option));\n        },\n        findLastOptionIndex() {\n            return findLastIndex(this.visibleOptions, (option) => this.isValidOption(option));\n        },\n        findNextOptionIndex(index) {\n            const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\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        findSelectedOptionIndex() {\n            if (this.$filled) {\n                for (let index = this.d_value.length - 1; index >= 0; index--) {\n                    const value = this.d_value[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            }\n\n            return -1;\n        },\n        findFirstSelectedOptionIndex() {\n            return this.$filled ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findLastSelectedOptionIndex() {\n            return this.$filled ? findLastIndex(this.visibleOptions, (option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findNextSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n        },\n        findPrevSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n        },\n        findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n            let matchedOptionIndex = -1;\n\n            if (this.$filled) {\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        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findFirstSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n        },\n        findLastFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n        },\n        searchOptions(event) {\n            this.searchValue = (this.searchValue || '') + event.key;\n\n            let optionIndex = -1;\n\n            if (isNotEmpty(this.searchValue)) {\n                if (this.focusedOptionIndex !== -1) {\n                    optionIndex = this.visibleOptions.slice(this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option));\n                    optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option)) : optionIndex + this.focusedOptionIndex;\n                } else {\n                    optionIndex = this.visibleOptions.findIndex((option) => this.isOptionMatched(option));\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\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        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionIndex !== index) {\n                this.focusedOptionIndex = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionSelect(event, this.visibleOptions[index]);\n                }\n            }\n        },\n        scrollInView(index = -1) {\n            this.$nextTick(() => {\n                const id = index !== -1 ? `${this.$id}_${index}` : this.focusedOptionId;\n                const element = findSingle(this.list, `li[id=\"${id}\"]`);\n\n                if (element) {\n                    element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n                } else if (!this.virtualScrollerDisabled) {\n                    this.virtualScroller && this.virtualScroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex);\n                }\n            });\n        },\n        autoUpdateModel() {\n            if (this.autoOptionFocus) {\n                this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n            }\n\n            if (this.selectOnFocus && this.autoOptionFocus && !this.$filled) {\n                const value = this.getOptionValue(this.visibleOptions[this.focusedOptionIndex]);\n\n                this.updateModel(null, [value]);\n            }\n        },\n        updateModel(event, value) {\n            this.writeValue(value, event);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        flatOptions(options) {\n            return (options || []).reduce((result, option, index) => {\n                const optionGroupChildren = this.getOptionGroupChildren(option);\n\n                if (optionGroupChildren && Array.isArray(optionGroupChildren)) {\n                    result.push({ optionGroup: option, group: true, index });\n                    optionGroupChildren.forEach((o) => result.push(o));\n                } else {\n                    result.push(option);\n                }\n\n                return result;\n            }, []);\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        },\n        listRef(el, contentRef) {\n            this.list = el;\n            contentRef && contentRef(el); // For VirtualScroller\n        },\n        virtualScrollerRef(el) {\n            this.virtualScroller = el;\n        }\n    },\n    computed: {\n        visibleOptions() {\n            const options = this.optionGroupLabel ? this.flatOptions(this.options) : this.options || [];\n\n            if (this.filterValue) {\n                const filteredOptions = FilterService.filter(options, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n\n                if (this.optionGroupLabel) {\n                    const optionGroups = this.options || [];\n                    const filtered = [];\n\n                    optionGroups.forEach((group) => {\n                        const groupChildren = this.getOptionGroupChildren(group);\n                        const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));\n\n                        if (filteredItems.length > 0) filtered.push({ ...group, [typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems] });\n                    });\n\n                    return this.flatOptions(filtered);\n                }\n\n                return filteredOptions;\n            }\n\n            return options;\n        },\n        label() {\n            // TODO: Refactor\n            let label;\n\n            if (this.d_value && this.d_value.length) {\n                if (this.loading && (!this.options || this.options.length === 0)) {\n                    label = this.placeholder;\n                } else if (isNotEmpty(this.maxSelectedLabels) && this.d_value.length > this.maxSelectedLabels) {\n                    return this.getSelectedItemsLabel();\n                } else {\n                    label = '';\n\n                    for (let i = 0; i < this.d_value.length; i++) {\n                        if (i !== 0) {\n                            label += ', ';\n                        }\n\n                        label += this.getLabelByValue(this.d_value[i]);\n                    }\n                }\n            } else {\n                label = this.placeholder;\n            }\n\n            return label;\n        },\n        chipSelectedItems() {\n            return isNotEmpty(this.maxSelectedLabels) && this.d_value && this.d_value.length > this.maxSelectedLabels;\n        },\n        allSelected() {\n            return this.selectAll !== null ? this.selectAll : isNotEmpty(this.visibleOptions) && this.visibleOptions.every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));\n        },\n        // @deprecated use $filled instead.\n        hasSelectedOption() {\n            return this.$filled;\n        },\n        equalityKey() {\n            return this.optionValue ? null : this.dataKey;\n        },\n        searchFields() {\n            return this.filterFields || [this.optionLabel];\n        },\n        maxSelectionLimitReached() {\n            return this.selectionLimit && this.d_value && this.d_value.length === this.selectionLimit;\n        },\n        filterResultMessageText() {\n            return isNotEmpty(this.visibleOptions) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptyFilterMessageText;\n        },\n        filterMessageText() {\n            return this.filterMessage || this.$primevue.config.locale.searchMessage || '';\n        },\n        emptyFilterMessageText() {\n            return this.emptyFilterMessage || this.$primevue.config.locale.emptySearchMessage || this.$primevue.config.locale.emptyFilterMessage || '';\n        },\n        emptyMessageText() {\n            return this.emptyMessage || this.$primevue.config.locale.emptyMessage || '';\n        },\n        selectionMessageText() {\n            return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';\n        },\n        emptySelectionMessageText() {\n            return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';\n        },\n        selectedMessageText() {\n            return this.$filled ? this.selectionMessageText.replaceAll('{0}', this.d_value.length) : this.emptySelectionMessageText;\n        },\n        focusedOptionId() {\n            return this.focusedOptionIndex !== -1 ? `${this.$id}_${this.focusedOptionIndex}` : null;\n        },\n        ariaSetSize() {\n            return this.visibleOptions.filter((option) => !this.isOptionGroup(option)).length;\n        },\n        toggleAllAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria[this.allSelected ? 'selectAll' : 'unselectAll'] : undefined;\n        },\n        listAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.listLabel : undefined;\n        },\n        virtualScrollerDisabled() {\n            return !this.virtualScrollerOptions;\n        },\n        hasFluid() {\n            return isEmpty(this.fluid) ? !!this.$pcFluid : this.fluid;\n        },\n        isClearIconVisible() {\n            return this.showClear && this.d_value && this.d_value.length && this.d_value != null && isNotEmpty(this.options) && !this.disabled && !this.loading;\n        },\n        containerDataP() {\n            return cn({\n                invalid: this.$invalid,\n                disabled: this.disabled,\n                focus: this.focused,\n                fluid: this.$fluid,\n                filled: this.$variant === 'filled',\n                [this.size]: this.size\n            });\n        },\n        labelDataP() {\n            return cn({\n                placeholder: this.label === this.placeholder,\n                clearable: this.showClear,\n                disabled: this.disabled,\n                [this.size]: this.size,\n                'has-chip': this.display === 'chip' && this.d_value && this.d_value.length && (this.maxSelectedLabels ? this.d_value.length <= this.maxSelectedLabels : true),\n                empty: !this.placeholder && !this.$filled\n            });\n        },\n        dropdownIconDataP() {\n            return cn({\n                [this.size]: this.size\n            });\n        },\n        overlayDataP() {\n            return cn({\n                ['portal-' + this.appendTo]: 'portal-' + this.appendTo\n            });\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        InputText,\n        Checkbox,\n        VirtualScroller,\n        Portal,\n        Chip,\n        IconField,\n        InputIcon,\n        TimesIcon,\n        SearchIcon,\n        ChevronDownIcon,\n        SpinnerIcon,\n        CheckIcon\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :class=\"cx('root')\" :style=\"sx('root')\" @click=\"onContainerClick\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n        <div class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenInputContainer')\" :data-p-hidden-accessible=\"true\">\n            <input\n                ref=\"focusInput\"\n                :id=\"inputId\"\n                type=\"text\"\n                readonly\n                :disabled=\"disabled\"\n                :placeholder=\"placeholder\"\n                :tabindex=\"!disabled ? tabindex : -1\"\n                role=\"combobox\"\n                :aria-label=\"ariaLabel\"\n                :aria-labelledby=\"ariaLabelledby\"\n                aria-haspopup=\"listbox\"\n                :aria-expanded=\"overlayVisible\"\n                :aria-controls=\"overlayVisible ? $id + '_list' : undefined\"\n                :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                :aria-invalid=\"invalid || undefined\"\n                @focus=\"onFocus\"\n                @blur=\"onBlur\"\n                @keydown=\"onKeyDown\"\n                v-bind=\"ptm('hiddenInput')\"\n            />\n        </div>\n        <div :class=\"cx('labelContainer')\" v-bind=\"ptm('labelContainer')\">\n            <div :class=\"cx('label')\" :data-p=\"labelDataP\" v-bind=\"ptm('label')\">\n                <slot name=\"value\" :value=\"d_value\" :placeholder=\"placeholder\">\n                    <template v-if=\"display === 'comma'\">\n                        {{ label || 'empty' }}\n                    </template>\n                    <template v-else-if=\"display === 'chip'\">\n                        <template v-if=\"loading && (!options || options.length === 0)\">{{ placeholder || 'empty' }}</template>\n                        <template v-else-if=\"chipSelectedItems\">\n                            <span>{{ label }}</span>\n                        </template>\n                        <template v-else>\n                            <span v-for=\"(item, idx) of d_value\" :key=\"`chip-${getLabelByValue(item)}_${idx}`\" :class=\"cx('chipItem')\" v-bind=\"ptm('chipItem')\">\n                                <slot name=\"chip\" :value=\"item\" :removeCallback=\"(event) => removeOption(event, item)\">\n                                    <!-- TODO: removetokenicon and removeTokenIcon  deprecated since v4.0. Use chipicon slot and chipIcon prop-->\n                                    <Chip :class=\"cx('pcChip')\" :label=\"getLabelByValue(item)\" :removeIcon=\"chipIcon || removeTokenIcon\" removable :unstyled=\"unstyled\" @remove=\"removeOption($event, item)\" :pt=\"ptm('pcChip')\">\n                                        <template #removeicon>\n                                            <slot :name=\"$slots.chipicon ? 'chipicon' : 'removetokenicon'\" :class=\"cx('chipIcon')\" :item=\"item\" :removeCallback=\"(event) => removeOption(event, item)\" />\n                                        </template>\n                                    </Chip>\n                                </slot>\n                            </span>\n                        </template>\n                        <template v-if=\"!d_value || d_value.length === 0\">{{ placeholder || 'empty' }}</template>\n                    </template>\n                </slot>\n            </div>\n        </div>\n        <slot v-if=\"isClearIconVisible\" name=\"clearicon\" :class=\"cx('clearIcon')\" :clearCallback=\"onClearClick\">\n            <component :is=\"clearIcon ? 'i' : 'TimesIcon'\" ref=\"clearIcon\" :class=\"[cx('clearIcon'), clearIcon]\" @click=\"onClearClick\" v-bind=\"ptm('clearIcon')\" data-pc-section=\"clearicon\" />\n        </slot>\n        <div :class=\"cx('dropdown')\" v-bind=\"ptm('dropdown')\">\n            <slot v-if=\"loading\" name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n                <span v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n                <SpinnerIcon v-else :class=\"cx('loadingIcon')\" spin aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n            </slot>\n            <slot v-else name=\"dropdownicon\" :class=\"cx('dropdownIcon')\">\n                <component :is=\"dropdownIcon ? 'span' : 'ChevronDownIcon'\" :class=\"[cx('dropdownIcon'), dropdownIcon]\" aria-hidden=\"true\" :data-p=\"dropdownIconDataP\" v-bind=\"ptm('dropdownIcon')\" />\n            </slot>\n        </div>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-anchored-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div v-if=\"overlayVisible\" :ref=\"overlayRef\" :style=\"[panelStyle, overlayStyle]\" :class=\"[cx('overlay'), panelClass, overlayClass]\" @click=\"onOverlayClick\" @keydown=\"onOverlayKeyDown\" :data-p=\"overlayDataP\" v-bind=\"ptm('overlay')\">\n                    <span\n                        ref=\"firstHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\n                        @focus=\"onFirstHiddenFocus\"\n                        v-bind=\"ptm('hiddenFirstFocusableEl')\"\n                        :data-p-hidden-accessible=\"true\"\n                        :data-p-hidden-focusable=\"true\"\n                    ></span>\n                    <slot name=\"header\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n                    <div v-if=\"(showToggleAll && selectionLimit == null) || filter\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n                        <Checkbox\n                            v-if=\"showToggleAll && selectionLimit == null\"\n                            :modelValue=\"allSelected\"\n                            :binary=\"true\"\n                            :disabled=\"disabled\"\n                            :variant=\"variant\"\n                            :aria-label=\"toggleAllAriaLabel\"\n                            @change=\"onToggleAll\"\n                            :unstyled=\"unstyled\"\n                            :pt=\"getHeaderCheckboxPTOptions('pcHeaderCheckbox')\"\n                            :formControl=\"{ novalidate: true }\"\n                        >\n                            <template #icon=\"slotProps\">\n                                <component v-if=\"$slots.headercheckboxicon\" :is=\"$slots.headercheckboxicon\" :checked=\"slotProps.checked\" :class=\"slotProps.class\" />\n                                <component v-else-if=\"slotProps.checked\" :is=\"checkboxIcon ? 'span' : 'CheckIcon'\" :class=\"[slotProps.class, { [checkboxIcon]: slotProps.checked }]\" v-bind=\"getHeaderCheckboxPTOptions('pcHeaderCheckbox.icon')\" />\n                            </template>\n                        </Checkbox>\n                        <IconField v-if=\"filter\" :class=\"cx('pcFilterContainer')\" :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n                            <InputText\n                                ref=\"filterInput\"\n                                :value=\"filterValue\"\n                                @vue:mounted=\"onFilterUpdated\"\n                                @vue:updated=\"onFilterUpdated\"\n                                :class=\"cx('pcFilter')\"\n                                :placeholder=\"filterPlaceholder\"\n                                :disabled=\"disabled\"\n                                :variant=\"variant\"\n                                :unstyled=\"unstyled\"\n                                role=\"searchbox\"\n                                autocomplete=\"off\"\n                                :aria-owns=\"$id + '_list'\"\n                                :aria-activedescendant=\"focusedOptionId\"\n                                @keydown=\"onFilterKeyDown\"\n                                @blur=\"onFilterBlur\"\n                                @input=\"onFilterChange\"\n                                :pt=\"ptm('pcFilter')\"\n                                :formControl=\"{ novalidate: true }\"\n                            />\n                            <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n                                <slot name=\"filtericon\">\n                                    <span v-if=\"filterIcon\" :class=\"filterIcon\" v-bind=\"ptm('filterIcon')\" />\n                                    <SearchIcon v-else v-bind=\"ptm('filterIcon')\" />\n                                </slot>\n                            </InputIcon>\n                        </IconField>\n                        <span v-if=\"filter\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenFilterResult')\" :data-p-hidden-accessible=\"true\">\n                            {{ filterResultMessageText }}\n                        </span>\n                    </div>\n                    <div :class=\"cx('listContainer')\" :style=\"{ 'max-height': virtualScrollerDisabled ? scrollHeight : '' }\" v-bind=\"ptm('listContainer')\">\n                        <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :items=\"visibleOptions\" :style=\"{ height: scrollHeight }\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n                            <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n                                <ul :ref=\"(el) => listRef(el, contentRef)\" :id=\"$id + '_list'\" :class=\"[cx('list'), styleClass]\" :style=\"contentStyle\" role=\"listbox\" aria-multiselectable=\"true\" :aria-label=\"listAriaLabel\" v-bind=\"ptm('list')\">\n                                    <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n                                        <li\n                                            v-if=\"isOptionGroup(option)\"\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('optionGroup')\"\n                                            role=\"option\"\n                                            v-bind=\"ptm('optionGroup')\"\n                                        >\n                                            <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionGroupLabel(option.optionGroup) }}</slot>\n                                        </li>\n                                        <li\n                                            v-else\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            v-ripple\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('option', { option, index: i, getItemOptions })\"\n                                            role=\"option\"\n                                            :aria-label=\"getOptionLabel(option)\"\n                                            :aria-selected=\"isSelected(option)\"\n                                            :aria-disabled=\"isOptionDisabled(option)\"\n                                            :aria-setsize=\"ariaSetSize\"\n                                            :aria-posinset=\"getAriaPosInset(getOptionIndex(i, getItemOptions))\"\n                                            @click=\"onOptionSelect($event, option, getOptionIndex(i, getItemOptions), true)\"\n                                            @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n                                            v-bind=\"getCheckboxPTOptions(option, getItemOptions, i, 'option')\"\n                                            :data-p-selected=\"isSelected(option)\"\n                                            :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n                                            :data-p-disabled=\"isOptionDisabled(option)\"\n                                        >\n                                            <Checkbox\n                                                :defaultValue=\"isSelected(option)\"\n                                                :binary=\"true\"\n                                                :tabindex=\"-1\"\n                                                :variant=\"variant\"\n                                                :unstyled=\"unstyled\"\n                                                :pt=\"getCheckboxPTOptions(option, getItemOptions, i, 'pcOptionCheckbox')\"\n                                                :formControl=\"{ novalidate: true }\"\n                                            >\n                                                <template #icon=\"slotProps\">\n                                                    <component v-if=\"$slots.optioncheckboxicon || $slots.itemcheckboxicon\" :is=\"$slots.optioncheckboxicon || $slots.itemcheckboxicon\" :checked=\"slotProps.checked\" :class=\"slotProps.class\" />\n                                                    <component\n                                                        v-else-if=\"slotProps.checked\"\n                                                        :is=\"checkboxIcon ? 'span' : 'CheckIcon'\"\n                                                        :class=\"[slotProps.class, { [checkboxIcon]: slotProps.checked }]\"\n                                                        v-bind=\"getCheckboxPTOptions(option, getItemOptions, i, 'pcOptionCheckbox.icon')\"\n                                                    />\n                                                </template>\n                                            </Checkbox>\n                                            <slot name=\"option\" :option=\"option\" :selected=\"isSelected(option)\" :index=\"getOptionIndex(i, getItemOptions)\">\n                                                <span v-bind=\"ptm('optionLabel')\">{{ getOptionLabel(option) }}</span>\n                                            </slot>\n                                        </li>\n                                    </template>\n                                    <li v-if=\"filterValue && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n                                        <slot name=\"emptyfilter\">{{ emptyFilterMessageText }}</slot>\n                                    </li>\n                                    <li v-else-if=\"!options || (options && options.length === 0)\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n                                        <slot name=\"empty\">{{ emptyMessageText }}</slot>\n                                    </li>\n                                </ul>\n                            </template>\n                            <template v-if=\"$slots.loader\" v-slot:loader=\"{ options }\">\n                                <slot name=\"loader\" :options=\"options\"></slot>\n                            </template>\n                        </VirtualScroller>\n                    </div>\n                    <slot name=\"footer\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n                    <span v-if=\"!options || (options && options.length === 0)\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenEmptyMessage')\" :data-p-hidden-accessible=\"true\">\n                        {{ emptyMessageText }}\n                    </span>\n                    <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSelectedMessage')\" :data-p-hidden-accessible=\"true\">\n                        {{ selectedMessageText }}\n                    </span>\n                    <span\n                        ref=\"lastHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\n                        @focus=\"onLastHiddenFocus\"\n                        v-bind=\"ptm('hiddenLastFocusableEl')\"\n                        :data-p-hidden-accessible=\"true\"\n                        :data-p-hidden-focusable=\"true\"\n                    ></span>\n                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { absolutePosition, addStyle, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, getOuterWidth, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { FilterService } from '@primevue/core/api';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport TimesIcon from '@primevue/icons/times';\nimport Checkbox from 'primevue/checkbox';\nimport Chip from 'primevue/chip';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseMultiSelect from './BaseMultiSelect.vue';\n\nexport default {\n    name: 'MultiSelect',\n    extends: BaseMultiSelect,\n    inheritAttrs: false,\n    emits: ['change', 'focus', 'blur', 'before-show', 'before-hide', 'show', 'hide', 'filter', 'selectall-change'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    overlay: null,\n    list: null,\n    virtualScroller: null,\n    startRangeIndex: -1,\n    searchTimeout: null,\n    searchValue: '',\n    selectOnFocus: false,\n    data() {\n        return {\n            clicked: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            filterValue: null,\n            overlayVisible: false\n        };\n    },\n    watch: {\n        options() {\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.autoUpdateModel();\n    },\n    beforeUnmount() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.overlay = null;\n        }\n    },\n    methods: {\n        getOptionIndex(index, fn) {\n            return this.virtualScrollerDisabled ? index : fn && fn(index)['index'];\n        },\n        getOptionLabel(option) {\n            return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n        },\n        getOptionValue(option) {\n            return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n        },\n        getOptionRenderKey(option, index) {\n            return this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option) + `_${index}`;\n        },\n        getHeaderCheckboxPTOptions(key) {\n            return this.ptm(key, {\n                context: {\n                    selected: this.allSelected\n                }\n            });\n        },\n        getCheckboxPTOptions(option, itemOptions, index, key) {\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        isOptionDisabled(option) {\n            if (this.maxSelectionLimitReached && !this.isSelected(option)) {\n                return true;\n            }\n\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        isOptionGroup(option) {\n            return !!(this.optionGroupLabel && option.optionGroup && option.group);\n        },\n\n        getOptionGroupLabel(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupLabel);\n        },\n        getOptionGroupChildren(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupChildren);\n        },\n        getAriaPosInset(index) {\n            return (this.optionGroupLabel ? index - this.visibleOptions.slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;\n        },\n        show(isFocus) {\n            this.$emit('before-show');\n            this.overlayVisible = true;\n            this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n\n            isFocus && focus(this.$refs.focusInput);\n        },\n        hide(isFocus) {\n            const _hide = () => {\n                this.$emit('before-hide');\n                this.overlayVisible = false;\n                this.clicked = false;\n                this.focusedOptionIndex = -1;\n                this.searchValue = '';\n\n                this.resetFilterOnHide && (this.filterValue = null);\n                isFocus && focus(this.$refs.focusInput);\n            };\n\n            setTimeout(() => {\n                _hide();\n            }, 0); // For ScreenReaders\n        },\n        onFocus(event) {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            this.focused = true;\n\n            if (this.overlayVisible) {\n                this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n                !this.autoFilterFocus && this.scrollInView(this.focusedOptionIndex);\n            }\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.clicked = false;\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.searchValue = '';\n            this.$emit('blur', event);\n            this.formField.onBlur?.();\n        },\n        onKeyDown(event) {\n            if (this.disabled) {\n                event.preventDefault();\n\n                return;\n            }\n\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 'NumpadEnter':\n                case 'Space':\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 'ShiftLeft':\n                case 'ShiftRight':\n                    this.onShiftKey(event);\n                    break;\n\n                default:\n                    if (event.code === 'KeyA' && metaKey) {\n                        const value = this.visibleOptions.filter((option) => this.isValidOption(option)).map((option) => this.getOptionValue(option));\n\n                        this.updateModel(event, value);\n\n                        event.preventDefault();\n                        break;\n                    }\n\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        !this.overlayVisible && this.show();\n                        this.searchOptions(event);\n                        event.preventDefault();\n                    }\n\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onContainerClick(event) {\n            if (this.disabled || this.loading) {\n                return;\n            }\n\n            if (event.target.tagName === 'INPUT' || event.target.getAttribute('data-pc-section') === 'clearicon' || event.target.closest('[data-pc-section=\"clearicon\"]')) {\n                return;\n            } else if (!this.overlay || !this.overlay.contains(event.target)) {\n                this.overlayVisible ? this.hide(true) : this.show(true);\n            }\n\n            this.clicked = true;\n        },\n        onClearClick(event) {\n            this.updateModel(event, []);\n            this.resetFilterOnClear && (this.filterValue = null);\n        },\n        onFirstHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getFirstFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onLastHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getLastFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onOptionSelect(event, option, index = -1, isFocus = false) {\n            if (this.disabled || this.isOptionDisabled(option)) {\n                return;\n            }\n\n            let selected = this.isSelected(option);\n            let value = null;\n\n            if (selected) value = this.d_value.filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey));\n            else value = [...(this.d_value || []), this.getOptionValue(option)];\n\n            this.updateModel(event, value);\n            index !== -1 && (this.focusedOptionIndex = index);\n            isFocus && focus(this.$refs.focusInput);\n        },\n        onOptionMouseMove(event, index) {\n            if (this.focusOnHover) {\n                this.changeFocusedOptionIndex(event, index);\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(event, value);\n            }\n        },\n        onFilterChange(event) {\n            const value = event.target.value;\n\n            this.filterValue = value;\n            this.focusedOptionIndex = -1;\n            this.$emit('filter', { originalEvent: event, value });\n\n            !this.virtualScrollerDisabled && this.virtualScroller.scrollToIndex(0);\n        },\n        onFilterKeyDown(event) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event, true);\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                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, true);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onFilterBlur() {\n            this.focusedOptionIndex = -1;\n        },\n        onFilterUpdated() {\n            if (this.overlayVisible) {\n                this.alignOverlay();\n            }\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.$el\n            });\n        },\n        onOverlayKeyDown(event) {\n            switch (event.code) {\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            if (!this.overlayVisible) {\n                this.show();\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n                if (event.shiftKey) {\n                    this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event, pressedInInputText = false) {\n            if (event.altKey && !pressedInInputText) {\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.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                if (event.shiftKey) {\n                    this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n                event.preventDefault();\n            }\n        },\n        onArrowLeftKey(event, pressedInInputText = false) {\n            pressedInInputText && (this.focusedOptionIndex = -1);\n        },\n        onHomeKey(event, pressedInInputText = false) {\n            if (pressedInInputText) {\n                const target = event.currentTarget;\n\n                if (event.shiftKey) {\n                    target.setSelectionRange(0, event.target.selectionStart);\n                } else {\n                    target.setSelectionRange(0, 0);\n                    this.focusedOptionIndex = -1;\n                }\n            } else {\n                let metaKey = event.metaKey || event.ctrlKey;\n                let optionIndex = this.findFirstOptionIndex();\n\n                if (event.shiftKey && metaKey) {\n                    this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n            }\n\n            event.preventDefault();\n        },\n        onEndKey(event, pressedInInputText = false) {\n            if (pressedInInputText) {\n                const target = event.currentTarget;\n\n                if (event.shiftKey) {\n                    target.setSelectionRange(event.target.selectionStart, target.value.length);\n                } else {\n                    const len = target.value.length;\n\n                    target.setSelectionRange(len, len);\n                    this.focusedOptionIndex = -1;\n                }\n            } else {\n                let metaKey = event.metaKey || event.ctrlKey;\n                let optionIndex = this.findLastOptionIndex();\n\n                if (event.shiftKey && metaKey) {\n                    this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n            }\n\n            event.preventDefault();\n        },\n        onPageUpKey(event) {\n            this.scrollInView(0);\n            event.preventDefault();\n        },\n        onPageDownKey(event) {\n            this.scrollInView(this.visibleOptions.length - 1);\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (!this.overlayVisible) {\n                this.focusedOptionIndex = -1; // reset\n                this.onArrowDownKey(event);\n            } else {\n                if (this.focusedOptionIndex !== -1) {\n                    if (event.shiftKey) this.onOptionSelectRange(event, this.focusedOptionIndex);\n                    else this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n            }\n\n            event.preventDefault();\n        },\n        onEscapeKey(event) {\n            if (this.overlayVisible) {\n                this.hide(true);\n                event.stopPropagation();\n            }\n\n            event.preventDefault();\n        },\n        onTabKey(event, pressedInInputText = false) {\n            if (!pressedInInputText) {\n                if (this.overlayVisible && this.hasFocusableElements()) {\n                    focus(event.shiftKey ? this.$refs.lastHiddenFocusableElementOnOverlay : this.$refs.firstHiddenFocusableElementOnOverlay);\n\n                    event.preventDefault();\n                } else {\n                    if (this.focusedOptionIndex !== -1) {\n                        this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                    }\n\n                    this.overlayVisible && this.hide(this.filter);\n                }\n            }\n        },\n        onShiftKey() {\n            this.startRangeIndex = this.focusedOptionIndex;\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0' });\n            this.alignOverlay();\n            this.scrollInView();\n\n            this.autoFilterFocus && focus(this.$refs.filterInput.$el);\n            this.autoUpdateModel();\n\n            // Issue: #7508\n            this.$attrSelector && el.setAttribute(this.$attrSelector, '');\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave(el) {\n            el.style.pointerEvents = 'none';\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        alignOverlay() {\n            if (this.appendTo === 'self') {\n                relativePosition(this.overlay, this.$el);\n            } else {\n                this.overlay.style.minWidth = getOuterWidth(this.$el) + 'px';\n                absolutePosition(this.overlay, this.$el);\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && this.isOutsideClicked(event)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener, true);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener, true);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        isOutsideClicked(event) {\n            return !(this.$el.isSameNode(event.target) || this.$el.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));\n        },\n        getLabelByValue(value) {\n            const options = this.optionGroupLabel ? this.flatOptions(this.options) : this.options || [];\n            const matchedOption = options.find((option) => !this.isOptionGroup(option) && equals(this.getOptionValue(option), value, this.equalityKey));\n\n            return this.getOptionLabel(matchedOption);\n        },\n        getSelectedItemsLabel() {\n            let pattern = /{(.*?)}/;\n            const selectedItemsLabel = this.selectedItemsLabel || this.$primevue.config.locale.selectionMessage;\n\n            if (pattern.test(selectedItemsLabel)) {\n                return selectedItemsLabel.replace(selectedItemsLabel.match(pattern)[0], this.d_value.length + '');\n            }\n\n            return selectedItemsLabel;\n        },\n        onToggleAll(event) {\n            if (this.selectAll !== null) {\n                this.$emit('selectall-change', { originalEvent: event, checked: !this.allSelected });\n            } else {\n                const value = this.allSelected ? [] : this.visibleOptions.filter((option) => this.isValidOption(option)).map((option) => this.getOptionValue(option));\n\n                this.updateModel(event, value);\n            }\n        },\n        removeOption(event, optionValue) {\n            event.stopPropagation();\n            let value = this.d_value.filter((val) => !equals(val, optionValue, this.equalityKey));\n\n            this.updateModel(event, value);\n        },\n        clearFilter() {\n            this.filterValue = null;\n        },\n        hasFocusableElements() {\n            return getFocusableElements(this.overlay, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\n        },\n        isOptionMatched(option) {\n            return this.isValidOption(option) && typeof this.getOptionLabel(option) === 'string' && this.getOptionLabel(option)?.toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n        },\n        isValidOption(option) {\n            return isNotEmpty(option) && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n        },\n        isValidSelectedOption(option) {\n            return this.isValidOption(option) && this.isSelected(option);\n        },\n        isEquals(value1, value2) {\n            return equals(value1, value2, this.equalityKey);\n        },\n        isSelected(option) {\n            const optionValue = this.getOptionValue(option);\n\n            return (this.d_value || []).some((value) => this.isEquals(value, optionValue));\n        },\n        findFirstOptionIndex() {\n            return this.visibleOptions.findIndex((option) => this.isValidOption(option));\n        },\n        findLastOptionIndex() {\n            return findLastIndex(this.visibleOptions, (option) => this.isValidOption(option));\n        },\n        findNextOptionIndex(index) {\n            const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\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        findSelectedOptionIndex() {\n            if (this.$filled) {\n                for (let index = this.d_value.length - 1; index >= 0; index--) {\n                    const value = this.d_value[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            }\n\n            return -1;\n        },\n        findFirstSelectedOptionIndex() {\n            return this.$filled ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findLastSelectedOptionIndex() {\n            return this.$filled ? findLastIndex(this.visibleOptions, (option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findNextSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n        },\n        findPrevSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n        },\n        findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n            let matchedOptionIndex = -1;\n\n            if (this.$filled) {\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        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findFirstSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n        },\n        findLastFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n        },\n        searchOptions(event) {\n            this.searchValue = (this.searchValue || '') + event.key;\n\n            let optionIndex = -1;\n\n            if (isNotEmpty(this.searchValue)) {\n                if (this.focusedOptionIndex !== -1) {\n                    optionIndex = this.visibleOptions.slice(this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option));\n                    optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option)) : optionIndex + this.focusedOptionIndex;\n                } else {\n                    optionIndex = this.visibleOptions.findIndex((option) => this.isOptionMatched(option));\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\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        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionIndex !== index) {\n                this.focusedOptionIndex = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionSelect(event, this.visibleOptions[index]);\n                }\n            }\n        },\n        scrollInView(index = -1) {\n            this.$nextTick(() => {\n                const id = index !== -1 ? `${this.$id}_${index}` : this.focusedOptionId;\n                const element = findSingle(this.list, `li[id=\"${id}\"]`);\n\n                if (element) {\n                    element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n                } else if (!this.virtualScrollerDisabled) {\n                    this.virtualScroller && this.virtualScroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex);\n                }\n            });\n        },\n        autoUpdateModel() {\n            if (this.autoOptionFocus) {\n                this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n            }\n\n            if (this.selectOnFocus && this.autoOptionFocus && !this.$filled) {\n                const value = this.getOptionValue(this.visibleOptions[this.focusedOptionIndex]);\n\n                this.updateModel(null, [value]);\n            }\n        },\n        updateModel(event, value) {\n            this.writeValue(value, event);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        flatOptions(options) {\n            return (options || []).reduce((result, option, index) => {\n                const optionGroupChildren = this.getOptionGroupChildren(option);\n\n                if (optionGroupChildren && Array.isArray(optionGroupChildren)) {\n                    result.push({ optionGroup: option, group: true, index });\n                    optionGroupChildren.forEach((o) => result.push(o));\n                } else {\n                    result.push(option);\n                }\n\n                return result;\n            }, []);\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        },\n        listRef(el, contentRef) {\n            this.list = el;\n            contentRef && contentRef(el); // For VirtualScroller\n        },\n        virtualScrollerRef(el) {\n            this.virtualScroller = el;\n        }\n    },\n    computed: {\n        visibleOptions() {\n            const options = this.optionGroupLabel ? this.flatOptions(this.options) : this.options || [];\n\n            if (this.filterValue) {\n                const filteredOptions = FilterService.filter(options, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n\n                if (this.optionGroupLabel) {\n                    const optionGroups = this.options || [];\n                    const filtered = [];\n\n                    optionGroups.forEach((group) => {\n                        const groupChildren = this.getOptionGroupChildren(group);\n                        const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));\n\n                        if (filteredItems.length > 0) filtered.push({ ...group, [typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems] });\n                    });\n\n                    return this.flatOptions(filtered);\n                }\n\n                return filteredOptions;\n            }\n\n            return options;\n        },\n        label() {\n            // TODO: Refactor\n            let label;\n\n            if (this.d_value && this.d_value.length) {\n                if (this.loading && (!this.options || this.options.length === 0)) {\n                    label = this.placeholder;\n                } else if (isNotEmpty(this.maxSelectedLabels) && this.d_value.length > this.maxSelectedLabels) {\n                    return this.getSelectedItemsLabel();\n                } else {\n                    label = '';\n\n                    for (let i = 0; i < this.d_value.length; i++) {\n                        if (i !== 0) {\n                            label += ', ';\n                        }\n\n                        label += this.getLabelByValue(this.d_value[i]);\n                    }\n                }\n            } else {\n                label = this.placeholder;\n            }\n\n            return label;\n        },\n        chipSelectedItems() {\n            return isNotEmpty(this.maxSelectedLabels) && this.d_value && this.d_value.length > this.maxSelectedLabels;\n        },\n        allSelected() {\n            return this.selectAll !== null ? this.selectAll : isNotEmpty(this.visibleOptions) && this.visibleOptions.every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));\n        },\n        // @deprecated use $filled instead.\n        hasSelectedOption() {\n            return this.$filled;\n        },\n        equalityKey() {\n            return this.optionValue ? null : this.dataKey;\n        },\n        searchFields() {\n            return this.filterFields || [this.optionLabel];\n        },\n        maxSelectionLimitReached() {\n            return this.selectionLimit && this.d_value && this.d_value.length === this.selectionLimit;\n        },\n        filterResultMessageText() {\n            return isNotEmpty(this.visibleOptions) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptyFilterMessageText;\n        },\n        filterMessageText() {\n            return this.filterMessage || this.$primevue.config.locale.searchMessage || '';\n        },\n        emptyFilterMessageText() {\n            return this.emptyFilterMessage || this.$primevue.config.locale.emptySearchMessage || this.$primevue.config.locale.emptyFilterMessage || '';\n        },\n        emptyMessageText() {\n            return this.emptyMessage || this.$primevue.config.locale.emptyMessage || '';\n        },\n        selectionMessageText() {\n            return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';\n        },\n        emptySelectionMessageText() {\n            return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';\n        },\n        selectedMessageText() {\n            return this.$filled ? this.selectionMessageText.replaceAll('{0}', this.d_value.length) : this.emptySelectionMessageText;\n        },\n        focusedOptionId() {\n            return this.focusedOptionIndex !== -1 ? `${this.$id}_${this.focusedOptionIndex}` : null;\n        },\n        ariaSetSize() {\n            return this.visibleOptions.filter((option) => !this.isOptionGroup(option)).length;\n        },\n        toggleAllAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria[this.allSelected ? 'selectAll' : 'unselectAll'] : undefined;\n        },\n        listAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.listLabel : undefined;\n        },\n        virtualScrollerDisabled() {\n            return !this.virtualScrollerOptions;\n        },\n        hasFluid() {\n            return isEmpty(this.fluid) ? !!this.$pcFluid : this.fluid;\n        },\n        isClearIconVisible() {\n            return this.showClear && this.d_value && this.d_value.length && this.d_value != null && isNotEmpty(this.options) && !this.disabled && !this.loading;\n        },\n        containerDataP() {\n            return cn({\n                invalid: this.$invalid,\n                disabled: this.disabled,\n                focus: this.focused,\n                fluid: this.$fluid,\n                filled: this.$variant === 'filled',\n                [this.size]: this.size\n            });\n        },\n        labelDataP() {\n            return cn({\n                placeholder: this.label === this.placeholder,\n                clearable: this.showClear,\n                disabled: this.disabled,\n                [this.size]: this.size,\n                'has-chip': this.display === 'chip' && this.d_value && this.d_value.length && (this.maxSelectedLabels ? this.d_value.length <= this.maxSelectedLabels : true),\n                empty: !this.placeholder && !this.$filled\n            });\n        },\n        dropdownIconDataP() {\n            return cn({\n                [this.size]: this.size\n            });\n        },\n        overlayDataP() {\n            return cn({\n                ['portal-' + this.appendTo]: 'portal-' + this.appendTo\n            });\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        InputText,\n        Checkbox,\n        VirtualScroller,\n        Portal,\n        Chip,\n        IconField,\n        InputIcon,\n        TimesIcon,\n        SearchIcon,\n        ChevronDownIcon,\n        SpinnerIcon,\n        CheckIcon\n    }\n};\n</script>\n"],"names":["name","BaseInput","props","options","Array","optionLabel","optionValue","optionDisabled","optionGroupLabel","optionGroupChildren","scrollHeight","type","String","placeholder","inputId","panelClass","panelStyle","overlayClass","overlayStyle","dataKey","showClear","Boolean","clearIcon","undefined","resetFilterOnClear","filter","filterPlaceholder","filterLocale","filterMatchMode","filterFields","appendTo","Object","display","selectedItemsLabel","maxSelectedLabels","Number","selectionLimit","showToggleAll","loading","checkboxIcon","dropdownIcon","filterIcon","loadingIcon","removeTokenIcon","chipIcon","selectAll","resetFilterOnHide","virtualScrollerOptions","autoOptionFocus","autoFilterFocus","focusOnHover","highlightOnSelect","filterMessage","selectionMessage","emptySelectionMessage","emptyFilterMessage","emptyMessage","tabindex","ariaLabel","ariaLabelledby","style","MultiSelectStyle","provide","$pcMultiSelect","$parentInstance","BaseMultiSelect","inheritAttrs","emits","inject","$pcFluid","outsideClickListener","scrollHandler","resizeListener","overlay","list","virtualScroller","startRangeIndex","searchTimeout","searchValue","selectOnFocus","data","clicked","focused","focusedOptionIndex","filterValue","overlayVisible","watch","autoUpdateModel","mounted","beforeUnmount","unbindOutsideClickListener","unbindResizeListener","destroy","ZIndex","clear","methods","getOptionIndex","index","fn","virtualScrollerDisabled","getOptionLabel","option","resolveFieldData","getOptionValue","getOptionRenderKey","concat","getHeaderCheckboxPTOptions","key","ptm","context","selected","allSelected","getCheckboxPTOptions","itemOptions","isSelected","disabled","isOptionDisabled","maxSelectionLimitReached","isOptionGroup","optionGroup","group","getOptionGroupLabel","getOptionGroupChildren","getAriaPosInset","_this","visibleOptions","slice","length","show","isFocus","$emit","findFirstFocusedOptionIndex","findSelectedOptionIndex","focus","$refs","focusInput","hide","_this2","_hide","setTimeout","onFocus","event","scrollInView","onBlur","_this$formField$onBlu","_this$formField","formField","call","onKeyDown","_this3","preventDefault","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onEnterKey","onEscapeKey","onTabKey","onShiftKey","value","isValidOption","map","updateModel","isPrintableCharacter","searchOptions","onContainerClick","target","tagName","getAttribute","closest","contains","onClearClick","onFirstHiddenFocus","focusableEl","relatedTarget","getFirstFocusableElement","onLastHiddenFocus","getLastFocusableElement","onOptionSelect","_this4","arguments","d_value","val","equals","equalityKey","_toConsumableArray","onOptionMouseMove","changeFocusedOptionIndex","onOptionSelectRange","_this5","start","end","findNearestSelectedOptionIndex","rangeStart","Math","min","rangeEnd","max","onFilterChange","originalEvent","scrollToIndex","onFilterKeyDown","onArrowLeftKey","onFilterBlur","onFilterUpdated","alignOverlay","onOverlayClick","OverlayEventBus","emit","$el","onOverlayKeyDown","optionIndex","findNextOptionIndex","findFirstOptionIndex","shiftKey","pressedInInputText","altKey","findPrevOptionIndex","findLastOptionIndex","findLastFocusedOptionIndex","currentTarget","setSelectionRange","selectionStart","len","stopPropagation","hasFocusableElements","lastHiddenFocusableElementOnOverlay","firstHiddenFocusableElementOnOverlay","onOverlayEnter","el","set","$primevue","config","zIndex","addStyle","position","top","filterInput","$attrSelector","setAttribute","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","onOverlayLeave","pointerEvents","unbindScrollListener","onOverlayAfterLeave","relativePosition","minWidth","getOuterWidth","absolutePosition","_this6","isOutsideClicked","document","addEventListener","removeEventListener","_this7","ConnectedOverlayScrollHandler","container","_this8","isTouchDevice","window","isSameNode","getLabelByValue","_this9","flatOptions","matchedOption","find","getSelectedItemsLabel","pattern","locale","test","replace","match","onToggleAll","_this0","checked","removeOption","_this1","clearFilter","getFocusableElements","isOptionMatched","_this$getOptionLabel","toLocaleLowerCase","startsWith","isNotEmpty","isValidSelectedOption","isEquals","value1","value2","_this10","some","_this11","findIndex","_this12","findLastIndex","_this13","matchedOptionIndex","_this14","_this15","$filled","_loop","v","_ret","findFirstSelectedOptionIndex","_this16","findLastSelectedOptionIndex","_this17","findNextSelectedOptionIndex","_this18","findPrevSelectedOptionIndex","_this19","firstCheckUp","selectedIndex","_this20","clearTimeout","_this21","$nextTick","id","$id","focusedOptionId","element","findSingle","scrollIntoView","block","inline","writeValue","_this22","reduce","result","isArray","push","forEach","o","overlayRef","listRef","contentRef","virtualScrollerRef","computed","_this23","filteredOptions","FilterService","searchFields","optionGroups","filtered","groupChildren","filteredItems","item","includes","_objectSpread","_defineProperty","label","i","chipSelectedItems","_this24","every","hasSelectedOption","filterResultMessageText","filterMessageText","replaceAll","emptyFilterMessageText","searchMessage","emptySearchMessage","emptyMessageText","selectionMessageText","emptySelectionMessageText","selectedMessageText","ariaSetSize","_this25","toggleAllAriaLabel","aria","listAriaLabel","listLabel","hasFluid","isEmpty","fluid","isClearIconVisible","containerDataP","cn","invalid","$invalid","$fluid","filled","$variant","size","labelDataP","clearable","dropdownIconDataP","overlayDataP","directives","ripple","Ripple","components","InputText","Checkbox","VirtualScroller","Portal","Chip","IconField","InputIcon","TimesIcon","SearchIcon","ChevronDownIcon","SpinnerIcon","CheckIcon","_openBlock","_createElementBlock","_mergeProps","ref","_ctx","cx","sx","onClick","$options","apply","ptmi","_createElementVNode","readonly","role","$data","onKeydown","_hoisted_2","_renderSlot","$slots","_Fragment","_renderList","idx","removeCallback","_createVNode","_component_Chip","removeIcon","removable","unstyled","onRemove","$event","pt","removeicon","chipicon","clearCallback","_createBlock","_resolveDynamicComponent","_component_SpinnerIcon","spin","_component_Portal","_Transition","onEnter","onAfterEnter","onLeave","onAfterLeave","_component_Checkbox","modelValue","binary","variant","onChange","formControl","novalidate","icon","_withCtx","slotProps","headercheckboxicon","_normalizeClass","_component_IconField","_component_InputText","onVnodeMounted","onVnodeUpdated","autocomplete","onInput","_component_InputIcon","_component_SearchIcon","_component_VirtualScroller","items","content","_ref2","styleClass","getItemOptions","contentStyle","itemSize","height","_withDirectives","onMousemove","ref_for","defaultValue","optioncheckboxicon","itemcheckboxicon","_toDisplayString","loader","_ref4"],"mappings":"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"}