{"version":3,"file":"index.mjs","sources":["../../src/cascadeselect/BaseCascadeSelect.vue","../../src/cascadeselect/CascadeSelectSub.vue","../../src/cascadeselect/CascadeSelectSub.vue?vue&type=template&id=7de6acb4&lang.js","../../src/cascadeselect/CascadeSelect.vue","../../src/cascadeselect/CascadeSelect.vue?vue&type=template&id=fb684a86&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CascadeSelectStyle from 'primevue/cascadeselect/style';\n\nexport default {\n    name: 'BaseCascadeSelect',\n    extends: BaseComponent,\n    props: {\n        modelValue: null,\n        options: Array,\n        optionLabel: null,\n        optionValue: null,\n        optionDisabled: null,\n        optionGroupLabel: null,\n        optionGroupChildren: null,\n        placeholder: String,\n        variant: {\n            type: String,\n            default: null\n        },\n        invalid: {\n            type: Boolean,\n            default: false\n        },\n        disabled: Boolean,\n        dataKey: null,\n        inputId: {\n            type: String,\n            default: null\n        },\n        inputClass: {\n            type: [String, Object],\n            default: null\n        },\n        inputStyle: {\n            type: Object,\n            default: null\n        },\n        inputProps: {\n            type: null,\n            default: null\n        },\n        panelClass: {\n            type: [String, Object],\n            default: null\n        },\n        panelStyle: {\n            type: Object,\n            default: null\n        },\n        panelProps: {\n            type: null,\n            default: null\n        },\n        overlayClass: {\n            type: [String, Object],\n            default: null\n        },\n        overlayStyle: {\n            type: Object,\n            default: null\n        },\n        overlayProps: {\n            type: null,\n            default: null\n        },\n        appendTo: {\n            type: [String, Object],\n            default: 'body'\n        },\n        loading: {\n            type: Boolean,\n            default: false\n        },\n        dropdownIcon: {\n            type: String,\n            default: undefined\n        },\n        loadingIcon: {\n            type: String,\n            default: undefined\n        },\n        optionGroupIcon: {\n            type: String,\n            default: undefined\n        },\n        autoOptionFocus: {\n            type: Boolean,\n            default: false\n        },\n        selectOnFocus: {\n            type: Boolean,\n            default: false\n        },\n        focusOnHover: {\n            type: Boolean,\n            default: true\n        },\n        searchLocale: {\n            type: String,\n            default: undefined\n        },\n        searchMessage: {\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        emptySearchMessage: {\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        ariaLabelledby: {\n            type: String,\n            default: null\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        },\n        fluid: {\n            type: Boolean,\n            default: false\n        }\n    },\n    style: CascadeSelectStyle,\n    provide() {\n        return {\n            $pcCascadeSelect: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <ul :ref=\"containerRef\" :class=\"cx('list')\" v-bind=\"level === 0 ? ptm('list') : ptm('optionList')\">\n        <template v-for=\"(processedOption, index) of options\" :key=\"getOptionLabelToRender(processedOption)\">\n            <li\n                :id=\"getOptionId(processedOption)\"\n                :class=\"cx('option', { processedOption })\"\n                role=\"treeitem\"\n                :aria-label=\"getOptionLabelToRender(processedOption)\"\n                :aria-selected=\"isOptionGroup(processedOption) ? undefined : isOptionSelected(processedOption)\"\n                :aria-expanded=\"isOptionGroup(processedOption) ? isOptionActive(processedOption) : undefined\"\n                :aria-level=\"level + 1\"\n                :aria-setsize=\"options.length\"\n                :aria-posinset=\"index + 1\"\n                v-bind=\"getPTOptions(processedOption, index, 'option')\"\n                :data-p-option-group=\"isOptionGroup(processedOption)\"\n                :data-p-active=\"isOptionActive(processedOption)\"\n                :data-p-focus=\"isOptionFocused(processedOption)\"\n                :data-p-disabled=\"isOptionDisabled(processedOption)\"\n            >\n                <div v-ripple :class=\"cx('optionContent')\" @click=\"onOptionClick($event, processedOption)\" @mousemove=\"onOptionMouseMove($event, processedOption)\" v-bind=\"getPTOptions(processedOption, index, 'optionContent')\">\n                    <component v-if=\"templates['option']\" :is=\"templates['option']\" :option=\"processedOption.option\" :selected=\"isOptionGroup(processedOption) ? false : isOptionSelected(processedOption)\" />\n                    <span v-else :class=\"cx('optionText')\" v-bind=\"getPTOptions(processedOption, index, 'optionText')\">{{ getOptionLabelToRender(processedOption) }}</span>\n                    <template v-if=\"isOptionGroup(processedOption)\">\n                        <component v-if=\"templates['optiongroupicon']\" :is=\"templates['optiongroupicon']\" aria-hidden=\"true\" />\n                        <span v-else-if=\"optionGroupIcon\" :class=\"[cx('groupIcon'), optionGroupIcon]\" aria-hidden=\"true\" v-bind=\"getPTOptions(processedOption, index, 'groupIcon')\" />\n                        <AngleRightIcon v-else :class=\"cx('groupIcon')\" aria-hidden=\"true\" v-bind=\"getPTOptions(processedOption, index, 'groupIcon')\" />\n                    </template>\n                </div>\n                <CascadeSelectSub\n                    v-if=\"isOptionGroup(processedOption) && isOptionActive(processedOption)\"\n                    role=\"group\"\n                    :class=\"cx('optionList')\"\n                    :selectId=\"selectId\"\n                    :focusedOptionId=\"focusedOptionId\"\n                    :options=\"getOptionGroupChildren(processedOption)\"\n                    :activeOptionPath=\"activeOptionPath\"\n                    :level=\"level + 1\"\n                    :templates=\"templates\"\n                    :optionLabel=\"optionLabel\"\n                    :optionValue=\"optionValue\"\n                    :optionDisabled=\"optionDisabled\"\n                    :optionGroupIcon=\"optionGroupIcon\"\n                    :optionGroupLabel=\"optionGroupLabel\"\n                    :optionGroupChildren=\"optionGroupChildren\"\n                    @option-change=\"onOptionChange\"\n                    @option-focus-change=\"onOptionFocusChange\"\n                    :pt=\"pt\"\n                    :unstyled=\"unstyled\"\n                    :isParentMount=\"mounted\"\n                />\n            </li>\n        </template>\n    </ul>\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport { nestedPosition } from '@primeuix/utils/dom';\nimport { resolveFieldData, isNotEmpty } from '@primeuix/utils/object';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n    name: 'CascadeSelectSub',\n    hostName: 'CascadeSelect',\n    extends: BaseComponent,\n    emits: ['option-change', 'option-focus-change'],\n    container: null,\n    props: {\n        selectId: String,\n        focusedOptionId: String,\n        options: Array,\n        optionLabel: String,\n        optionValue: String,\n        optionDisabled: null,\n        optionGroupIcon: String,\n        optionGroupLabel: String,\n        optionGroupChildren: {\n            type: [String, Array],\n            default: null\n        },\n        activeOptionPath: Array,\n        level: Number,\n        templates: null,\n        isParentMount: Boolean\n    },\n    data() {\n        return {\n            mounted: false\n        };\n    },\n    watch: {\n        isParentMount: {\n            handler(newValue) {\n                newValue && nestedPosition(this.container, this.level);\n            }\n        }\n    },\n    mounted() {\n        // entering order correction when an option is selected\n        (this.isParentMount || this.level === 0) && nestedPosition(this.container, this.level);\n        this.mounted = true;\n    },\n    methods: {\n        getOptionId(processedOption) {\n            return `${this.selectId}_${processedOption.key}`;\n        },\n        getOptionLabel(processedOption) {\n            return this.optionLabel ? resolveFieldData(processedOption.option, this.optionLabel) : processedOption.option;\n        },\n        getOptionValue(processedOption) {\n            return this.optionValue ? resolveFieldData(processedOption.option, this.optionValue) : processedOption.option;\n        },\n        getPTOptions(processedOption, index, key) {\n            return this.ptm(key, {\n                context: {\n                    option: processedOption,\n                    index,\n                    level: this.level,\n                    optionGroup: this.isOptionGroup(processedOption),\n                    active: this.isOptionActive(processedOption),\n                    focused: this.isOptionFocused(processedOption),\n                    disabled: this.isOptionDisabled(processedOption)\n                }\n            });\n        },\n        isOptionDisabled(processedOption) {\n            return this.optionDisabled ? resolveFieldData(processedOption.option, this.optionDisabled) : false;\n        },\n        getOptionGroupLabel(processedOption) {\n            return this.optionGroupLabel ? resolveFieldData(processedOption.option, this.optionGroupLabel) : null;\n        },\n        getOptionGroupChildren(processedOption) {\n            return processedOption.children;\n        },\n        isOptionGroup(processedOption) {\n            return isNotEmpty(processedOption.children);\n        },\n        isOptionSelected(processedOption) {\n            return !this.isOptionGroup(processedOption) && this.isOptionActive(processedOption);\n        },\n        isOptionActive(processedOption) {\n            return this.activeOptionPath.some((path) => path.key === processedOption.key);\n        },\n        isOptionFocused(processedOption) {\n            return this.focusedOptionId === this.getOptionId(processedOption);\n        },\n        getOptionLabelToRender(processedOption) {\n            return this.isOptionGroup(processedOption) ? this.getOptionGroupLabel(processedOption) : this.getOptionLabel(processedOption);\n        },\n        onOptionClick(event, processedOption) {\n            this.$emit('option-change', { originalEvent: event, processedOption, isFocus: true });\n        },\n        onOptionMouseMove(event, processedOption) {\n            this.$emit('option-focus-change', { originalEvent: event, processedOption });\n        },\n        onOptionChange(event) {\n            this.$emit('option-change', event);\n        },\n        onOptionFocusChange(event) {\n            this.$emit('option-focus-change', event);\n        },\n        containerRef(el) {\n            this.container = el;\n        },\n        listAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.listLabel : undefined;\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        AngleRightIcon: AngleRightIcon\n    }\n};\n</script>\n","<template>\n    <ul :ref=\"containerRef\" :class=\"cx('list')\" v-bind=\"level === 0 ? ptm('list') : ptm('optionList')\">\n        <template v-for=\"(processedOption, index) of options\" :key=\"getOptionLabelToRender(processedOption)\">\n            <li\n                :id=\"getOptionId(processedOption)\"\n                :class=\"cx('option', { processedOption })\"\n                role=\"treeitem\"\n                :aria-label=\"getOptionLabelToRender(processedOption)\"\n                :aria-selected=\"isOptionGroup(processedOption) ? undefined : isOptionSelected(processedOption)\"\n                :aria-expanded=\"isOptionGroup(processedOption) ? isOptionActive(processedOption) : undefined\"\n                :aria-level=\"level + 1\"\n                :aria-setsize=\"options.length\"\n                :aria-posinset=\"index + 1\"\n                v-bind=\"getPTOptions(processedOption, index, 'option')\"\n                :data-p-option-group=\"isOptionGroup(processedOption)\"\n                :data-p-active=\"isOptionActive(processedOption)\"\n                :data-p-focus=\"isOptionFocused(processedOption)\"\n                :data-p-disabled=\"isOptionDisabled(processedOption)\"\n            >\n                <div v-ripple :class=\"cx('optionContent')\" @click=\"onOptionClick($event, processedOption)\" @mousemove=\"onOptionMouseMove($event, processedOption)\" v-bind=\"getPTOptions(processedOption, index, 'optionContent')\">\n                    <component v-if=\"templates['option']\" :is=\"templates['option']\" :option=\"processedOption.option\" :selected=\"isOptionGroup(processedOption) ? false : isOptionSelected(processedOption)\" />\n                    <span v-else :class=\"cx('optionText')\" v-bind=\"getPTOptions(processedOption, index, 'optionText')\">{{ getOptionLabelToRender(processedOption) }}</span>\n                    <template v-if=\"isOptionGroup(processedOption)\">\n                        <component v-if=\"templates['optiongroupicon']\" :is=\"templates['optiongroupicon']\" aria-hidden=\"true\" />\n                        <span v-else-if=\"optionGroupIcon\" :class=\"[cx('groupIcon'), optionGroupIcon]\" aria-hidden=\"true\" v-bind=\"getPTOptions(processedOption, index, 'groupIcon')\" />\n                        <AngleRightIcon v-else :class=\"cx('groupIcon')\" aria-hidden=\"true\" v-bind=\"getPTOptions(processedOption, index, 'groupIcon')\" />\n                    </template>\n                </div>\n                <CascadeSelectSub\n                    v-if=\"isOptionGroup(processedOption) && isOptionActive(processedOption)\"\n                    role=\"group\"\n                    :class=\"cx('optionList')\"\n                    :selectId=\"selectId\"\n                    :focusedOptionId=\"focusedOptionId\"\n                    :options=\"getOptionGroupChildren(processedOption)\"\n                    :activeOptionPath=\"activeOptionPath\"\n                    :level=\"level + 1\"\n                    :templates=\"templates\"\n                    :optionLabel=\"optionLabel\"\n                    :optionValue=\"optionValue\"\n                    :optionDisabled=\"optionDisabled\"\n                    :optionGroupIcon=\"optionGroupIcon\"\n                    :optionGroupLabel=\"optionGroupLabel\"\n                    :optionGroupChildren=\"optionGroupChildren\"\n                    @option-change=\"onOptionChange\"\n                    @option-focus-change=\"onOptionFocusChange\"\n                    :pt=\"pt\"\n                    :unstyled=\"unstyled\"\n                    :isParentMount=\"mounted\"\n                />\n            </li>\n        </template>\n    </ul>\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport { nestedPosition } from '@primeuix/utils/dom';\nimport { resolveFieldData, isNotEmpty } from '@primeuix/utils/object';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n    name: 'CascadeSelectSub',\n    hostName: 'CascadeSelect',\n    extends: BaseComponent,\n    emits: ['option-change', 'option-focus-change'],\n    container: null,\n    props: {\n        selectId: String,\n        focusedOptionId: String,\n        options: Array,\n        optionLabel: String,\n        optionValue: String,\n        optionDisabled: null,\n        optionGroupIcon: String,\n        optionGroupLabel: String,\n        optionGroupChildren: {\n            type: [String, Array],\n            default: null\n        },\n        activeOptionPath: Array,\n        level: Number,\n        templates: null,\n        isParentMount: Boolean\n    },\n    data() {\n        return {\n            mounted: false\n        };\n    },\n    watch: {\n        isParentMount: {\n            handler(newValue) {\n                newValue && nestedPosition(this.container, this.level);\n            }\n        }\n    },\n    mounted() {\n        // entering order correction when an option is selected\n        (this.isParentMount || this.level === 0) && nestedPosition(this.container, this.level);\n        this.mounted = true;\n    },\n    methods: {\n        getOptionId(processedOption) {\n            return `${this.selectId}_${processedOption.key}`;\n        },\n        getOptionLabel(processedOption) {\n            return this.optionLabel ? resolveFieldData(processedOption.option, this.optionLabel) : processedOption.option;\n        },\n        getOptionValue(processedOption) {\n            return this.optionValue ? resolveFieldData(processedOption.option, this.optionValue) : processedOption.option;\n        },\n        getPTOptions(processedOption, index, key) {\n            return this.ptm(key, {\n                context: {\n                    option: processedOption,\n                    index,\n                    level: this.level,\n                    optionGroup: this.isOptionGroup(processedOption),\n                    active: this.isOptionActive(processedOption),\n                    focused: this.isOptionFocused(processedOption),\n                    disabled: this.isOptionDisabled(processedOption)\n                }\n            });\n        },\n        isOptionDisabled(processedOption) {\n            return this.optionDisabled ? resolveFieldData(processedOption.option, this.optionDisabled) : false;\n        },\n        getOptionGroupLabel(processedOption) {\n            return this.optionGroupLabel ? resolveFieldData(processedOption.option, this.optionGroupLabel) : null;\n        },\n        getOptionGroupChildren(processedOption) {\n            return processedOption.children;\n        },\n        isOptionGroup(processedOption) {\n            return isNotEmpty(processedOption.children);\n        },\n        isOptionSelected(processedOption) {\n            return !this.isOptionGroup(processedOption) && this.isOptionActive(processedOption);\n        },\n        isOptionActive(processedOption) {\n            return this.activeOptionPath.some((path) => path.key === processedOption.key);\n        },\n        isOptionFocused(processedOption) {\n            return this.focusedOptionId === this.getOptionId(processedOption);\n        },\n        getOptionLabelToRender(processedOption) {\n            return this.isOptionGroup(processedOption) ? this.getOptionGroupLabel(processedOption) : this.getOptionLabel(processedOption);\n        },\n        onOptionClick(event, processedOption) {\n            this.$emit('option-change', { originalEvent: event, processedOption, isFocus: true });\n        },\n        onOptionMouseMove(event, processedOption) {\n            this.$emit('option-focus-change', { originalEvent: event, processedOption });\n        },\n        onOptionChange(event) {\n            this.$emit('option-change', event);\n        },\n        onOptionFocusChange(event) {\n            this.$emit('option-focus-change', event);\n        },\n        containerRef(el) {\n            this.container = el;\n        },\n        listAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.listLabel : undefined;\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        AngleRightIcon: AngleRightIcon\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :class=\"cx('root')\" :style=\"sx('root')\" @click=\"onContainerClick($event)\" 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                :class=\"inputClass\"\n                :style=\"inputStyle\"\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=\"tree\"\n                :aria-expanded=\"overlayVisible\"\n                :aria-controls=\"id + '_tree'\"\n                :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                :aria-invalid=\"invalid || undefined\"\n                @focus=\"onFocus\"\n                @blur=\"onBlur\"\n                @keydown=\"onKeyDown\"\n                v-bind=\"{ ...inputProps, ...ptm('input') }\"\n            />\n        </div>\n        <span :class=\"cx('label')\" v-bind=\"ptm('label')\">\n            <slot name=\"value\" :value=\"modelValue\" :placeholder=\"placeholder\">\n                {{ label }}\n            </slot>\n        </span>\n        <div :class=\"cx('dropdown')\" role=\"button\" tabindex=\"-1\" aria-hidden=\"true\" 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\" v-bind=\"ptm('dropdownIcon')\" />\n            </slot>\n        </div>\n        <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSearchResult')\" :data-p-hidden-accessible=\"true\">\n            {{ searchResultMessageText }}\n        </span>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-connected-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div\n                    v-if=\"overlayVisible\"\n                    :ref=\"overlayRef\"\n                    :class=\"[cx('overlay'), panelClass, overlayClass]\"\n                    :style=\"[panelStyle, overlayStyle]\"\n                    @click=\"onOverlayClick\"\n                    @keydown=\"onOverlayKeyDown\"\n                    v-bind=\"{ ...panelProps, ...overlayProps, ...ptm('overlay') }\"\n                >\n                    <div :class=\"cx('listContainer')\" v-bind=\"ptm('listContainer')\">\n                        <CascadeSelectSub\n                            :id=\"id + '_tree'\"\n                            role=\"tree\"\n                            aria-orientation=\"horizontal\"\n                            :selectId=\"id\"\n                            :focusedOptionId=\"focused ? focusedOptionId : undefined\"\n                            :options=\"processedOptions\"\n                            :activeOptionPath=\"activeOptionPath\"\n                            :level=\"0\"\n                            :templates=\"$slots\"\n                            :optionLabel=\"optionLabel\"\n                            :optionValue=\"optionValue\"\n                            :optionDisabled=\"optionDisabled\"\n                            :optionGroupIcon=\"optionGroupIcon\"\n                            :optionGroupLabel=\"optionGroupLabel\"\n                            :optionGroupChildren=\"optionGroupChildren\"\n                            @option-change=\"onOptionChange\"\n                            @option-focus-change=\"onOptionFocusChange\"\n                            :pt=\"pt\"\n                            :unstyled=\"unstyled\"\n                        />\n                    </div>\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                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';\nimport { focus, addStyle, relativePosition, getOuterWidth, absolutePosition, isTouchDevice, findSingle } from '@primeuix/utils/dom';\nimport { resolveFieldData, isString, isNotEmpty, isPrintableCharacter, isEmpty, findLastIndex, equals } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport BaseCascadeSelect from './BaseCascadeSelect.vue';\nimport CascadeSelectSub from './CascadeSelectSub.vue';\n\nexport default {\n    name: 'CascadeSelect',\n    extends: BaseCascadeSelect,\n    inheritAttrs: false,\n    emits: ['update:modelValue', 'change', 'focus', 'blur', 'click', 'group-change', 'before-show', 'before-hide', 'hide', 'show'],\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    overlay: null,\n    searchTimeout: null,\n    searchValue: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            clicked: false,\n            focused: false,\n            focusedOptionInfo: { index: -1, level: 0, parentKey: '' },\n            activeOptionPath: [],\n            overlayVisible: false,\n            dirty: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        },\n        options() {\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\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        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        isOptionDisabled(option) {\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        getOptionGroupLabel(optionGroup) {\n            return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : null;\n        },\n        getOptionGroupChildren(optionGroup, level) {\n            return isString(this.optionGroupChildren) ? resolveFieldData(optionGroup, this.optionGroupChildren) : resolveFieldData(optionGroup, this.optionGroupChildren[level]);\n        },\n        isOptionGroup(option, level) {\n            return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);\n        },\n        getProccessedOptionLabel(processedOption = {}) {\n            const grouped = this.isProccessedOptionGroup(processedOption);\n\n            return grouped ? this.getOptionGroupLabel(processedOption.option, processedOption.level) : this.getOptionLabel(processedOption.option);\n        },\n        isProccessedOptionGroup(processedOption) {\n            return isNotEmpty(processedOption?.children);\n        },\n        show(isFocus) {\n            this.$emit('before-show');\n            this.overlayVisible = true;\n            this.activeOptionPath = this.hasSelectedOption ? this.findOptionPathByValue(this.modelValue) : this.activeOptionPath;\n\n            if (this.hasSelectedOption && isNotEmpty(this.activeOptionPath)) {\n                const processedOption = this.activeOptionPath[this.activeOptionPath.length - 1];\n\n                this.focusedOptionInfo = { index: processedOption.index, level: processedOption.level, parentKey: processedOption.parentKey };\n            } else {\n                this.focusedOptionInfo = { index: this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex(), level: 0, parentKey: '' };\n            }\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.activeOptionPath = [];\n                this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' };\n\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            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focused = false;\n            this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' };\n            this.searchValue = '';\n            this.$emit('blur', event);\n        },\n        onKeyDown(event) {\n            if (this.disabled || this.loading) {\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 'ArrowLeft':\n                    this.onArrowLeftKey(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                case 'PageDown':\n                case 'PageUp':\n                case 'Backspace':\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    //NOOP\n                    break;\n\n                default:\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        !this.overlayVisible && this.show();\n                        this.searchOptions(event, event.key);\n                    }\n\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onOptionChange(event) {\n            const { originalEvent, processedOption, isFocus, isHide } = event;\n\n            if (isEmpty(processedOption)) return;\n\n            const { index, level, parentKey, children } = processedOption;\n            const grouped = isNotEmpty(children);\n            const root = isEmpty(processedOption.parent);\n            const selected = this.isSelected(processedOption);\n\n            if (selected) {\n                const { index, key, level, parentKey } = processedOption;\n\n                this.focusedOptionInfo = { index, level, parentKey };\n                this.activeOptionPath = this.activeOptionPath.filter((p) => key !== p.key && key.startsWith(p.key));\n\n                this.dirty = !root;\n            } else {\n                const activeOptionPath = this.activeOptionPath.filter((p) => p.parentKey !== parentKey);\n\n                activeOptionPath.push(processedOption);\n\n                this.focusedOptionInfo = { index, level, parentKey };\n                this.activeOptionPath = activeOptionPath;\n            }\n\n            grouped ? this.onOptionGroupSelect(originalEvent, processedOption) : this.onOptionSelect(originalEvent, processedOption, isHide);\n            isFocus && focus(this.$refs.focusInput);\n        },\n        onOptionFocusChange(event) {\n            if (this.focusOnHover) {\n                const { originalEvent, processedOption } = event;\n                const { index, level, parentKey } = processedOption;\n\n                this.focusedOptionInfo = { index, level, parentKey };\n                this.changeFocusedOptionIndex(originalEvent, index);\n            }\n        },\n        onOptionSelect(event, processedOption, isHide = true) {\n            const value = this.getOptionValue(processedOption?.option);\n\n            this.activeOptionPath.forEach((p) => (p.selected = true));\n            this.updateModel(event, value);\n            isHide && this.hide(true);\n        },\n        onOptionGroupSelect(event, processedOption) {\n            this.dirty = true;\n            this.$emit('group-change', { originalEvent: event, value: processedOption.option });\n        },\n        onContainerClick(event) {\n            if (this.disabled || this.loading) {\n                return;\n            }\n\n            if (!this.overlay || !this.overlay.contains(event.target)) {\n                this.overlayVisible ? this.hide() : this.show();\n                focus(this.$refs.focusInput);\n            }\n\n            this.clicked = true;\n            this.$emit('click', event);\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.focusedOptionInfo.index !== -1 ? this.findNextOptionIndex(this.focusedOptionInfo.index) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            if (event.altKey) {\n                if (this.focusedOptionInfo.index !== -1) {\n                    const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                    const grouped = this.isProccessedOptionGroup(processedOption);\n\n                    !grouped && this.onOptionChange({ originalEvent: event, processedOption });\n                }\n\n                this.overlayVisible && this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.focusedOptionInfo.index !== -1 ? this.findPrevOptionIndex(this.focusedOptionInfo.index) : this.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n                event.preventDefault();\n            }\n        },\n        onArrowLeftKey(event) {\n            if (this.overlayVisible) {\n                const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                const parentOption = this.activeOptionPath.find((p) => p.key === processedOption?.parentKey);\n                const matched = this.focusedOptionInfo.parentKey === '' || (parentOption && parentOption.key === this.focusedOptionInfo.parentKey);\n                const root = isEmpty(processedOption?.parent);\n\n                if (matched) {\n                    this.activeOptionPath = this.activeOptionPath.filter((p) => p.parentKey !== this.focusedOptionInfo.parentKey);\n                }\n\n                if (!root) {\n                    this.focusedOptionInfo = { index: -1, parentKey: parentOption ? parentOption.parentKey : '' };\n                    this.searchValue = '';\n                    this.onArrowDownKey(event);\n                }\n\n                event.preventDefault();\n            }\n        },\n        onArrowRightKey(event) {\n            if (this.overlayVisible) {\n                const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                const grouped = this.isProccessedOptionGroup(processedOption);\n\n                if (grouped) {\n                    const matched = this.activeOptionPath.some((p) => processedOption?.key === p.key);\n\n                    if (matched) {\n                        this.focusedOptionInfo = { index: -1, parentKey: processedOption?.key };\n                        this.searchValue = '';\n                        this.onArrowDownKey(event);\n                    } else {\n                        this.onOptionChange({ originalEvent: event, processedOption });\n                    }\n                }\n\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());\n\n            !this.overlayVisible && this.show();\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedOptionIndex(event, this.findLastOptionIndex());\n\n            !this.overlayVisible && this.show();\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (!this.overlayVisible) {\n                this.focusedOptionInfo.index !== -1; // reset\n                this.onArrowDownKey(event);\n            } else {\n                if (this.focusedOptionInfo.index !== -1) {\n                    const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                    const grouped = this.isProccessedOptionGroup(processedOption);\n\n                    this.onOptionChange({ originalEvent: event, processedOption });\n                    !grouped && this.hide();\n                }\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        onEscapeKey(event) {\n            this.overlayVisible && this.hide(true);\n            event.preventDefault();\n        },\n        onTabKey(event) {\n            if (this.focusedOptionInfo.index !== -1) {\n                const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                const grouped = this.isProccessedOptionGroup(processedOption);\n\n                !grouped && this.onOptionChange({ originalEvent: event, processedOption });\n            }\n\n            this.overlayVisible && this.hide();\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0', left: '0' });\n            this.alignOverlay();\n            this.scrollInView();\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave() {\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n            this.dirty = false;\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.overlay && !this.$el.contains(event.target) && !this.overlay.contains(event.target)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\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        isOptionMatched(processedOption) {\n            return this.isValidOption(processedOption) && this.getProccessedOptionLabel(processedOption)?.toLocaleLowerCase(this.searchLocale).startsWith(this.searchValue.toLocaleLowerCase(this.searchLocale));\n        },\n        isValidOption(processedOption) {\n            return isNotEmpty(processedOption) && !this.isOptionDisabled(processedOption.option);\n        },\n        isValidSelectedOption(processedOption) {\n            return this.isValidOption(processedOption) && this.isSelected(processedOption);\n        },\n        isSelected(processedOption) {\n            return this.activeOptionPath.some((p) => p.key === processedOption.key);\n        },\n        findFirstOptionIndex() {\n            return this.visibleOptions.findIndex((processedOption) => this.isValidOption(processedOption));\n        },\n        findLastOptionIndex() {\n            return findLastIndex(this.visibleOptions, (processedOption) => this.isValidOption(processedOption));\n        },\n        findNextOptionIndex(index) {\n            const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((processedOption) => this.isValidOption(processedOption)) : -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), (processedOption) => this.isValidOption(processedOption)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n        },\n        findSelectedOptionIndex() {\n            return this.visibleOptions.findIndex((processedOption) => this.isValidSelectedOption(processedOption));\n        },\n        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\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        findOptionPathByValue(value, processedOptions, level = 0) {\n            processedOptions = processedOptions || (level === 0 && this.processedOptions);\n\n            if (!processedOptions) return null;\n            if (isEmpty(value)) return [];\n\n            for (let i = 0; i < processedOptions.length; i++) {\n                const processedOption = processedOptions[i];\n\n                if (equals(value, this.getOptionValue(processedOption.option), this.equalityKey)) {\n                    return [processedOption];\n                }\n\n                const matchedOptions = this.findOptionPathByValue(value, processedOption.children, level + 1);\n\n                if (matchedOptions) {\n                    matchedOptions.unshift(processedOption);\n\n                    return matchedOptions;\n                }\n            }\n        },\n        searchOptions(event, char) {\n            this.searchValue = (this.searchValue || '') + char;\n\n            let optionIndex = -1;\n            let matched = false;\n\n            if (isNotEmpty(this.searchValue)) {\n                if (this.focusedOptionInfo.index !== -1) {\n                    optionIndex = this.visibleOptions.slice(this.focusedOptionInfo.index).findIndex((processedOption) => this.isOptionMatched(processedOption));\n                    optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionInfo.index).findIndex((processedOption) => this.isOptionMatched(processedOption)) : optionIndex + this.focusedOptionInfo.index;\n                } else {\n                    optionIndex = this.visibleOptions.findIndex((processedOption) => this.isOptionMatched(processedOption));\n                }\n\n                if (optionIndex !== -1) {\n                    matched = true;\n                }\n\n                if (optionIndex === -1 && this.focusedOptionInfo.index === -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            return matched;\n        },\n        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionInfo.index !== index) {\n                this.focusedOptionInfo.index = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionChange({ originalEvent: event, processedOption: this.visibleOptions[index], isHide: false });\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: 'start' });\n                }\n            });\n        },\n        autoUpdateModel() {\n            if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption) {\n                this.focusedOptionInfo.index = this.findFirstFocusedOptionIndex();\n                this.onOptionChange({ processedOption: this.visibleOptions[this.focusedOptionInfo.index], isHide: false });\n\n                !this.overlayVisible && (this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' });\n            }\n        },\n        updateModel(event, value) {\n            this.$emit('update:modelValue', value);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        createProcessedOptions(options, level = 0, parent = {}, parentKey = '') {\n            const processedOptions = [];\n\n            options &&\n                options.forEach((option, index) => {\n                    const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n                    const newOption = {\n                        option,\n                        index,\n                        level,\n                        key,\n                        parent,\n                        parentKey\n                    };\n\n                    newOption['children'] = this.createProcessedOptions(this.getOptionGroupChildren(option, level), level + 1, newOption, key);\n                    processedOptions.push(newOption);\n                });\n\n            return processedOptions;\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        }\n    },\n    computed: {\n        hasSelectedOption() {\n            return isNotEmpty(this.modelValue);\n        },\n        label() {\n            const label = this.placeholder || 'p-emptylabel';\n\n            if (this.hasSelectedOption) {\n                const activeOptionPath = this.findOptionPathByValue(this.modelValue);\n                const processedOption = isNotEmpty(activeOptionPath) ? activeOptionPath[activeOptionPath.length - 1] : null;\n\n                return processedOption ? this.getOptionLabel(processedOption.option) : label;\n            }\n\n            return label;\n        },\n        processedOptions() {\n            return this.createProcessedOptions(this.options || []);\n        },\n        visibleOptions() {\n            const processedOption = this.activeOptionPath.find((p) => p.key === this.focusedOptionInfo.parentKey);\n\n            return processedOption ? processedOption.children : this.processedOptions;\n        },\n        equalityKey() {\n            return this.optionValue ? null : this.dataKey;\n        },\n        searchResultMessageText() {\n            return isNotEmpty(this.visibleOptions) ? this.searchMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptySearchMessageText;\n        },\n        searchMessageText() {\n            return this.searchMessage || this.$primevue.config.locale.searchMessage || '';\n        },\n        emptySearchMessageText() {\n            return this.emptySearchMessage || this.$primevue.config.locale.emptySearchMessage || '';\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.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', '1') : this.emptySelectionMessageText;\n        },\n        focusedOptionId() {\n            return this.focusedOptionInfo.index !== -1 ? `${this.id}${isNotEmpty(this.focusedOptionInfo.parentKey) ? '_' + this.focusedOptionInfo.parentKey : ''}_${this.focusedOptionInfo.index}` : null;\n        }\n    },\n    components: {\n        CascadeSelectSub: CascadeSelectSub,\n        Portal: Portal,\n        ChevronDownIcon: ChevronDownIcon,\n        SpinnerIcon: SpinnerIcon,\n        AngleRightIcon: AngleRightIcon\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :class=\"cx('root')\" :style=\"sx('root')\" @click=\"onContainerClick($event)\" 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                :class=\"inputClass\"\n                :style=\"inputStyle\"\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=\"tree\"\n                :aria-expanded=\"overlayVisible\"\n                :aria-controls=\"id + '_tree'\"\n                :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                :aria-invalid=\"invalid || undefined\"\n                @focus=\"onFocus\"\n                @blur=\"onBlur\"\n                @keydown=\"onKeyDown\"\n                v-bind=\"{ ...inputProps, ...ptm('input') }\"\n            />\n        </div>\n        <span :class=\"cx('label')\" v-bind=\"ptm('label')\">\n            <slot name=\"value\" :value=\"modelValue\" :placeholder=\"placeholder\">\n                {{ label }}\n            </slot>\n        </span>\n        <div :class=\"cx('dropdown')\" role=\"button\" tabindex=\"-1\" aria-hidden=\"true\" 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\" v-bind=\"ptm('dropdownIcon')\" />\n            </slot>\n        </div>\n        <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSearchResult')\" :data-p-hidden-accessible=\"true\">\n            {{ searchResultMessageText }}\n        </span>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-connected-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div\n                    v-if=\"overlayVisible\"\n                    :ref=\"overlayRef\"\n                    :class=\"[cx('overlay'), panelClass, overlayClass]\"\n                    :style=\"[panelStyle, overlayStyle]\"\n                    @click=\"onOverlayClick\"\n                    @keydown=\"onOverlayKeyDown\"\n                    v-bind=\"{ ...panelProps, ...overlayProps, ...ptm('overlay') }\"\n                >\n                    <div :class=\"cx('listContainer')\" v-bind=\"ptm('listContainer')\">\n                        <CascadeSelectSub\n                            :id=\"id + '_tree'\"\n                            role=\"tree\"\n                            aria-orientation=\"horizontal\"\n                            :selectId=\"id\"\n                            :focusedOptionId=\"focused ? focusedOptionId : undefined\"\n                            :options=\"processedOptions\"\n                            :activeOptionPath=\"activeOptionPath\"\n                            :level=\"0\"\n                            :templates=\"$slots\"\n                            :optionLabel=\"optionLabel\"\n                            :optionValue=\"optionValue\"\n                            :optionDisabled=\"optionDisabled\"\n                            :optionGroupIcon=\"optionGroupIcon\"\n                            :optionGroupLabel=\"optionGroupLabel\"\n                            :optionGroupChildren=\"optionGroupChildren\"\n                            @option-change=\"onOptionChange\"\n                            @option-focus-change=\"onOptionFocusChange\"\n                            :pt=\"pt\"\n                            :unstyled=\"unstyled\"\n                        />\n                    </div>\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                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';\nimport { focus, addStyle, relativePosition, getOuterWidth, absolutePosition, isTouchDevice, findSingle } from '@primeuix/utils/dom';\nimport { resolveFieldData, isString, isNotEmpty, isPrintableCharacter, isEmpty, findLastIndex, equals } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport BaseCascadeSelect from './BaseCascadeSelect.vue';\nimport CascadeSelectSub from './CascadeSelectSub.vue';\n\nexport default {\n    name: 'CascadeSelect',\n    extends: BaseCascadeSelect,\n    inheritAttrs: false,\n    emits: ['update:modelValue', 'change', 'focus', 'blur', 'click', 'group-change', 'before-show', 'before-hide', 'hide', 'show'],\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    overlay: null,\n    searchTimeout: null,\n    searchValue: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            clicked: false,\n            focused: false,\n            focusedOptionInfo: { index: -1, level: 0, parentKey: '' },\n            activeOptionPath: [],\n            overlayVisible: false,\n            dirty: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        },\n        options() {\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\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        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        isOptionDisabled(option) {\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        getOptionGroupLabel(optionGroup) {\n            return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : null;\n        },\n        getOptionGroupChildren(optionGroup, level) {\n            return isString(this.optionGroupChildren) ? resolveFieldData(optionGroup, this.optionGroupChildren) : resolveFieldData(optionGroup, this.optionGroupChildren[level]);\n        },\n        isOptionGroup(option, level) {\n            return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);\n        },\n        getProccessedOptionLabel(processedOption = {}) {\n            const grouped = this.isProccessedOptionGroup(processedOption);\n\n            return grouped ? this.getOptionGroupLabel(processedOption.option, processedOption.level) : this.getOptionLabel(processedOption.option);\n        },\n        isProccessedOptionGroup(processedOption) {\n            return isNotEmpty(processedOption?.children);\n        },\n        show(isFocus) {\n            this.$emit('before-show');\n            this.overlayVisible = true;\n            this.activeOptionPath = this.hasSelectedOption ? this.findOptionPathByValue(this.modelValue) : this.activeOptionPath;\n\n            if (this.hasSelectedOption && isNotEmpty(this.activeOptionPath)) {\n                const processedOption = this.activeOptionPath[this.activeOptionPath.length - 1];\n\n                this.focusedOptionInfo = { index: processedOption.index, level: processedOption.level, parentKey: processedOption.parentKey };\n            } else {\n                this.focusedOptionInfo = { index: this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex(), level: 0, parentKey: '' };\n            }\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.activeOptionPath = [];\n                this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' };\n\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            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focused = false;\n            this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' };\n            this.searchValue = '';\n            this.$emit('blur', event);\n        },\n        onKeyDown(event) {\n            if (this.disabled || this.loading) {\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 'ArrowLeft':\n                    this.onArrowLeftKey(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                case 'PageDown':\n                case 'PageUp':\n                case 'Backspace':\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    //NOOP\n                    break;\n\n                default:\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        !this.overlayVisible && this.show();\n                        this.searchOptions(event, event.key);\n                    }\n\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onOptionChange(event) {\n            const { originalEvent, processedOption, isFocus, isHide } = event;\n\n            if (isEmpty(processedOption)) return;\n\n            const { index, level, parentKey, children } = processedOption;\n            const grouped = isNotEmpty(children);\n            const root = isEmpty(processedOption.parent);\n            const selected = this.isSelected(processedOption);\n\n            if (selected) {\n                const { index, key, level, parentKey } = processedOption;\n\n                this.focusedOptionInfo = { index, level, parentKey };\n                this.activeOptionPath = this.activeOptionPath.filter((p) => key !== p.key && key.startsWith(p.key));\n\n                this.dirty = !root;\n            } else {\n                const activeOptionPath = this.activeOptionPath.filter((p) => p.parentKey !== parentKey);\n\n                activeOptionPath.push(processedOption);\n\n                this.focusedOptionInfo = { index, level, parentKey };\n                this.activeOptionPath = activeOptionPath;\n            }\n\n            grouped ? this.onOptionGroupSelect(originalEvent, processedOption) : this.onOptionSelect(originalEvent, processedOption, isHide);\n            isFocus && focus(this.$refs.focusInput);\n        },\n        onOptionFocusChange(event) {\n            if (this.focusOnHover) {\n                const { originalEvent, processedOption } = event;\n                const { index, level, parentKey } = processedOption;\n\n                this.focusedOptionInfo = { index, level, parentKey };\n                this.changeFocusedOptionIndex(originalEvent, index);\n            }\n        },\n        onOptionSelect(event, processedOption, isHide = true) {\n            const value = this.getOptionValue(processedOption?.option);\n\n            this.activeOptionPath.forEach((p) => (p.selected = true));\n            this.updateModel(event, value);\n            isHide && this.hide(true);\n        },\n        onOptionGroupSelect(event, processedOption) {\n            this.dirty = true;\n            this.$emit('group-change', { originalEvent: event, value: processedOption.option });\n        },\n        onContainerClick(event) {\n            if (this.disabled || this.loading) {\n                return;\n            }\n\n            if (!this.overlay || !this.overlay.contains(event.target)) {\n                this.overlayVisible ? this.hide() : this.show();\n                focus(this.$refs.focusInput);\n            }\n\n            this.clicked = true;\n            this.$emit('click', event);\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.focusedOptionInfo.index !== -1 ? this.findNextOptionIndex(this.focusedOptionInfo.index) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            if (event.altKey) {\n                if (this.focusedOptionInfo.index !== -1) {\n                    const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                    const grouped = this.isProccessedOptionGroup(processedOption);\n\n                    !grouped && this.onOptionChange({ originalEvent: event, processedOption });\n                }\n\n                this.overlayVisible && this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.focusedOptionInfo.index !== -1 ? this.findPrevOptionIndex(this.focusedOptionInfo.index) : this.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n                event.preventDefault();\n            }\n        },\n        onArrowLeftKey(event) {\n            if (this.overlayVisible) {\n                const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                const parentOption = this.activeOptionPath.find((p) => p.key === processedOption?.parentKey);\n                const matched = this.focusedOptionInfo.parentKey === '' || (parentOption && parentOption.key === this.focusedOptionInfo.parentKey);\n                const root = isEmpty(processedOption?.parent);\n\n                if (matched) {\n                    this.activeOptionPath = this.activeOptionPath.filter((p) => p.parentKey !== this.focusedOptionInfo.parentKey);\n                }\n\n                if (!root) {\n                    this.focusedOptionInfo = { index: -1, parentKey: parentOption ? parentOption.parentKey : '' };\n                    this.searchValue = '';\n                    this.onArrowDownKey(event);\n                }\n\n                event.preventDefault();\n            }\n        },\n        onArrowRightKey(event) {\n            if (this.overlayVisible) {\n                const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                const grouped = this.isProccessedOptionGroup(processedOption);\n\n                if (grouped) {\n                    const matched = this.activeOptionPath.some((p) => processedOption?.key === p.key);\n\n                    if (matched) {\n                        this.focusedOptionInfo = { index: -1, parentKey: processedOption?.key };\n                        this.searchValue = '';\n                        this.onArrowDownKey(event);\n                    } else {\n                        this.onOptionChange({ originalEvent: event, processedOption });\n                    }\n                }\n\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());\n\n            !this.overlayVisible && this.show();\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedOptionIndex(event, this.findLastOptionIndex());\n\n            !this.overlayVisible && this.show();\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (!this.overlayVisible) {\n                this.focusedOptionInfo.index !== -1; // reset\n                this.onArrowDownKey(event);\n            } else {\n                if (this.focusedOptionInfo.index !== -1) {\n                    const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                    const grouped = this.isProccessedOptionGroup(processedOption);\n\n                    this.onOptionChange({ originalEvent: event, processedOption });\n                    !grouped && this.hide();\n                }\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        onEscapeKey(event) {\n            this.overlayVisible && this.hide(true);\n            event.preventDefault();\n        },\n        onTabKey(event) {\n            if (this.focusedOptionInfo.index !== -1) {\n                const processedOption = this.visibleOptions[this.focusedOptionInfo.index];\n                const grouped = this.isProccessedOptionGroup(processedOption);\n\n                !grouped && this.onOptionChange({ originalEvent: event, processedOption });\n            }\n\n            this.overlayVisible && this.hide();\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0', left: '0' });\n            this.alignOverlay();\n            this.scrollInView();\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave() {\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n            this.dirty = false;\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.overlay && !this.$el.contains(event.target) && !this.overlay.contains(event.target)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\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        isOptionMatched(processedOption) {\n            return this.isValidOption(processedOption) && this.getProccessedOptionLabel(processedOption)?.toLocaleLowerCase(this.searchLocale).startsWith(this.searchValue.toLocaleLowerCase(this.searchLocale));\n        },\n        isValidOption(processedOption) {\n            return isNotEmpty(processedOption) && !this.isOptionDisabled(processedOption.option);\n        },\n        isValidSelectedOption(processedOption) {\n            return this.isValidOption(processedOption) && this.isSelected(processedOption);\n        },\n        isSelected(processedOption) {\n            return this.activeOptionPath.some((p) => p.key === processedOption.key);\n        },\n        findFirstOptionIndex() {\n            return this.visibleOptions.findIndex((processedOption) => this.isValidOption(processedOption));\n        },\n        findLastOptionIndex() {\n            return findLastIndex(this.visibleOptions, (processedOption) => this.isValidOption(processedOption));\n        },\n        findNextOptionIndex(index) {\n            const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((processedOption) => this.isValidOption(processedOption)) : -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), (processedOption) => this.isValidOption(processedOption)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n        },\n        findSelectedOptionIndex() {\n            return this.visibleOptions.findIndex((processedOption) => this.isValidSelectedOption(processedOption));\n        },\n        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\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        findOptionPathByValue(value, processedOptions, level = 0) {\n            processedOptions = processedOptions || (level === 0 && this.processedOptions);\n\n            if (!processedOptions) return null;\n            if (isEmpty(value)) return [];\n\n            for (let i = 0; i < processedOptions.length; i++) {\n                const processedOption = processedOptions[i];\n\n                if (equals(value, this.getOptionValue(processedOption.option), this.equalityKey)) {\n                    return [processedOption];\n                }\n\n                const matchedOptions = this.findOptionPathByValue(value, processedOption.children, level + 1);\n\n                if (matchedOptions) {\n                    matchedOptions.unshift(processedOption);\n\n                    return matchedOptions;\n                }\n            }\n        },\n        searchOptions(event, char) {\n            this.searchValue = (this.searchValue || '') + char;\n\n            let optionIndex = -1;\n            let matched = false;\n\n            if (isNotEmpty(this.searchValue)) {\n                if (this.focusedOptionInfo.index !== -1) {\n                    optionIndex = this.visibleOptions.slice(this.focusedOptionInfo.index).findIndex((processedOption) => this.isOptionMatched(processedOption));\n                    optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionInfo.index).findIndex((processedOption) => this.isOptionMatched(processedOption)) : optionIndex + this.focusedOptionInfo.index;\n                } else {\n                    optionIndex = this.visibleOptions.findIndex((processedOption) => this.isOptionMatched(processedOption));\n                }\n\n                if (optionIndex !== -1) {\n                    matched = true;\n                }\n\n                if (optionIndex === -1 && this.focusedOptionInfo.index === -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            return matched;\n        },\n        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionInfo.index !== index) {\n                this.focusedOptionInfo.index = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionChange({ originalEvent: event, processedOption: this.visibleOptions[index], isHide: false });\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: 'start' });\n                }\n            });\n        },\n        autoUpdateModel() {\n            if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption) {\n                this.focusedOptionInfo.index = this.findFirstFocusedOptionIndex();\n                this.onOptionChange({ processedOption: this.visibleOptions[this.focusedOptionInfo.index], isHide: false });\n\n                !this.overlayVisible && (this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' });\n            }\n        },\n        updateModel(event, value) {\n            this.$emit('update:modelValue', value);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        createProcessedOptions(options, level = 0, parent = {}, parentKey = '') {\n            const processedOptions = [];\n\n            options &&\n                options.forEach((option, index) => {\n                    const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n                    const newOption = {\n                        option,\n                        index,\n                        level,\n                        key,\n                        parent,\n                        parentKey\n                    };\n\n                    newOption['children'] = this.createProcessedOptions(this.getOptionGroupChildren(option, level), level + 1, newOption, key);\n                    processedOptions.push(newOption);\n                });\n\n            return processedOptions;\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        }\n    },\n    computed: {\n        hasSelectedOption() {\n            return isNotEmpty(this.modelValue);\n        },\n        label() {\n            const label = this.placeholder || 'p-emptylabel';\n\n            if (this.hasSelectedOption) {\n                const activeOptionPath = this.findOptionPathByValue(this.modelValue);\n                const processedOption = isNotEmpty(activeOptionPath) ? activeOptionPath[activeOptionPath.length - 1] : null;\n\n                return processedOption ? this.getOptionLabel(processedOption.option) : label;\n            }\n\n            return label;\n        },\n        processedOptions() {\n            return this.createProcessedOptions(this.options || []);\n        },\n        visibleOptions() {\n            const processedOption = this.activeOptionPath.find((p) => p.key === this.focusedOptionInfo.parentKey);\n\n            return processedOption ? processedOption.children : this.processedOptions;\n        },\n        equalityKey() {\n            return this.optionValue ? null : this.dataKey;\n        },\n        searchResultMessageText() {\n            return isNotEmpty(this.visibleOptions) ? this.searchMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptySearchMessageText;\n        },\n        searchMessageText() {\n            return this.searchMessage || this.$primevue.config.locale.searchMessage || '';\n        },\n        emptySearchMessageText() {\n            return this.emptySearchMessage || this.$primevue.config.locale.emptySearchMessage || '';\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.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', '1') : this.emptySelectionMessageText;\n        },\n        focusedOptionId() {\n            return this.focusedOptionInfo.index !== -1 ? `${this.id}${isNotEmpty(this.focusedOptionInfo.parentKey) ? '_' + this.focusedOptionInfo.parentKey : ''}_${this.focusedOptionInfo.index}` : null;\n        }\n    },\n    components: {\n        CascadeSelectSub: CascadeSelectSub,\n        Portal: Portal,\n        ChevronDownIcon: ChevronDownIcon,\n        SpinnerIcon: SpinnerIcon,\n        AngleRightIcon: AngleRightIcon\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","modelValue","options","Array","optionLabel","optionValue","optionDisabled","optionGroupLabel","optionGroupChildren","placeholder","String","variant","type","invalid","Boolean","disabled","dataKey","inputId","inputClass","Object","inputStyle","inputProps","panelClass","panelStyle","panelProps","overlayClass","overlayStyle","overlayProps","appendTo","loading","dropdownIcon","undefined","loadingIcon","optionGroupIcon","autoOptionFocus","selectOnFocus","focusOnHover","searchLocale","searchMessage","selectionMessage","emptySelectionMessage","emptySearchMessage","emptyMessage","tabindex","Number","ariaLabelledby","ariaLabel","fluid","style","CascadeSelectStyle","provide","$pcCascadeSelect","$parentInstance","hostName","emits","container","selectId","focusedOptionId","activeOptionPath","level","templates","isParentMount","data","mounted","watch","handler","newValue","nestedPosition","methods","getOptionId","processedOption","concat","key","getOptionLabel","resolveFieldData","option","getOptionValue","getPTOptions","index","ptm","context","optionGroup","isOptionGroup","active","isOptionActive","focused","isOptionFocused","isOptionDisabled","getOptionGroupLabel","getOptionGroupChildren","children","isNotEmpty","isOptionSelected","some","path","getOptionLabelToRender","onOptionClick","event","$emit","originalEvent","isFocus","onOptionMouseMove","onOptionChange","onOptionFocusChange","containerRef","el","listAriaLabel","$primevue","config","locale","aria","listLabel","directives","ripple","Ripple","components","AngleRightIcon","_openBlock","_createElementBlock","_mergeProps","ref","$options","_ctx","cx","$props","_Fragment","_renderList","id","role","length","_withDirectives","onClick","$event","onMousemove","_createBlock","_resolveDynamicComponent","selected","_toDisplayString","_component_AngleRightIcon","_component_CascadeSelectSub","pt","unstyled","$data","BaseCascadeSelect","inheritAttrs","outsideClickListener","scrollHandler","resizeListener","overlay","searchTimeout","searchValue","$attrs","clicked","focusedOptionInfo","parentKey","overlayVisible","dirty","$attrsId","UniqueComponentId","autoUpdateModel","beforeUnmount","unbindOutsideClickListener","unbindResizeListener","destroy","ZIndex","clear","isString","prototype","hasOwnProperty","call","getProccessedOptionLabel","grouped","isProccessedOptionGroup","show","hasSelectedOption","findOptionPathByValue","findFirstFocusedOptionIndex","findSelectedOptionIndex","focus","$refs","focusInput","hide","_this","_hide","setTimeout","onFocus","onBlur","onKeyDown","preventDefault","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onSpaceKey","onEnterKey","onEscapeKey","onTabKey","isPrintableCharacter","searchOptions","isHide","isEmpty","root","parent","isSelected","filter","p","startsWith","push","onOptionGroupSelect","onOptionSelect","changeFocusedOptionIndex","arguments","value","forEach","updateModel","onContainerClick","contains","target","onOverlayClick","OverlayEventBus","emit","$el","onOverlayKeyDown","optionIndex","findNextOptionIndex","findFirstOptionIndex","altKey","visibleOptions","findPrevOptionIndex","findLastOptionIndex","findLastFocusedOptionIndex","_this2","parentOption","find","matched","onOverlayEnter","set","zIndex","addStyle","position","top","left","alignOverlay","scrollInView","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","onOverlayLeave","unbindScrollListener","onOverlayAfterLeave","relativePosition","minWidth","getOuterWidth","absolutePosition","_this3","document","addEventListener","removeEventListener","_this4","ConnectedOverlayScrollHandler","_this5","isTouchDevice","window","isOptionMatched","_this$getProccessedOp","isValidOption","toLocaleLowerCase","isValidSelectedOption","_this6","findIndex","_this7","findLastIndex","_this8","matchedOptionIndex","slice","_this9","_this10","selectedIndex","processedOptions","i","equals","equalityKey","matchedOptions","unshift","char","_this11","clearTimeout","_this12","$nextTick","element","findSingle","list","scrollIntoView","block","inline","createProcessedOptions","_this13","newOption","overlayRef","computed","label","_this14","searchResultMessageText","searchMessageText","replaceAll","emptySearchMessageText","emptyMessageText","selectionMessageText","emptySelectionMessageText","selectedMessageText","CascadeSelectSub","Portal","ChevronDownIcon","SpinnerIcon","sx","_cache","ptmi","_createElementVNode","readonly","apply","onKeydown","_objectSpread","_hoisted_1","_renderSlot","$slots","_component_SpinnerIcon","spin","_createVNode","_component_Portal","_Transition","onEnter","onAfterEnter","onLeave","onAfterLeave"],"mappings":"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"}