{"version":3,"file":"primeng-cascadeselect.mjs","sources":["../../src/cascadeselect/style/cascadeselectstyle.ts","../../src/cascadeselect/cascadeselect.ts","../../src/cascadeselect/primeng-cascadeselect.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-cascadeselect {\n    display: inline-flex;\n    cursor: pointer;\n    position: relative;\n    user-select: none;\n    background: ${dt('cascadeselect.background')};\n    border: 1px solid ${dt('cascadeselect.border.color')};\n    transition: background ${dt('cascadeselect.transition.duration')}, color ${dt('cascadeselect.transition.duration')}, border-color ${dt('cascadeselect.transition.duration')}, outline-color ${dt(\n        'cascadeselect.transition.duration'\n    )}, box-shadow ${dt('cascadeselect.transition.duration')};\n    border-radius: ${dt('cascadeselect.border.radius')};\n    outline-color: transparent;\n    box-shadow: ${dt('cascadeselect.shadow')};\n}\n\np-cascadeselect.ng-invalid.ng-dirty .p-cascadeselect {\n    border-color: ${dt('cascadeselect.invalid.border.color')};\n}\n\np-cascadeselect.ng-invalid.ng-dirty .p-cascadeselect.p-focus {\n    border-color: ${dt('cascadeselect.focus.border.color')};\n}\n\n.p-cascadeselect:not(.p-disabled):hover {\n    border-color: ${dt('cascadeselect.hover.border.color')};\n}\n\n.p-cascadeselect:not(.p-disabled).p-focus {\n    border-color: ${dt('cascadeselect.focus.border.color')};\n    box-shadow: ${dt('cascadeselect.focus.ring.shadow')};\n    outline: ${dt('cascadeselect.focus.ring.width')} ${dt('cascadeselect.focus.ring.style')} ${dt('cascadeselect.focus.ring.color')};\n    outline-offset: ${dt('multiscascadeselectelect.focus.ring.offset')};\n}\n\n.p-cascadeselect.p-variant-filled {\n    background: ${dt('cascadeselect.filled.background')};\n}\n\n.p-cascadeselect.p-variant-filled:not(.p-disabled):hover {\n    background: ${dt('cascadeselect.filled.hover.background')};\n}\n\n.p-cascadeselect.p-variant-filled.p-focus {\n    background: ${dt('cascadeselect.filled.focus.background')};\n}\n\n.p-cascadeselect.p-disabled {\n    opacity: 1;\n    background: ${dt('cascadeselect.disabled.background')};\n}\n\n.p-cascadeselect-dropdown {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-shrink: 0;\n    background: transparent;\n    color: ${dt('cascadeselect.dropdown.color')};\n    width: ${dt('cascadeselect.dropdown.width')};\n    border-start-end-radius: ${dt('border.radius.md')};\n    border-end-end-radius: ${dt('border.radius.md')};\n}\n\n.p-cascadeselect-label {\n    display: block;\n    white-space: nowrap;\n    overflow: hidden;\n    flex: 1 1 auto;\n    width: 1%;\n    text-overflow: ellipsis;\n    cursor: pointer;\n    padding: ${dt('cascadeselect.padding.y')} ${dt('cascadeselect.padding.x')};\n    background: transparent;\n    border: 0 none;\n    outline: 0 none;\n}\n\n.p-cascadeselect-label.p-placeholder {\n    color: ${dt('cascadeselect.placeholder.color')};\n}\n\np-cascadeselect.ng-invalid.ng-dirty .p-cascadeselect-label.p-placeholder {\n    color: ${dt('cascadeselect.invalid.placeholder.color')};\n}\n\n.p-cascadeselect.p-disabled .p-cascadeselect-label {\n    color: ${dt('cascadeselect.disabled.color')};\n}\n\n.p-cascadeselect-label-empty {\n    overflow: hidden;\n    visibility: hidden;\n}\n\n.p-cascadeselect-fluid {\n    display: flex;\n}\n\n.p-cascadeselect-fluid .p-cascadeselect-label {\n    width: 1%;\n}\n\n.p-cascadeselect-overlay {\n    background: ${dt('cascadeselect.overlay.background')};\n    color: ${dt('cascadeselect.overlay.color')};\n    border: 1px solid ${dt('cascadeselect.overlay.border.color')};\n    border-radius: ${dt('cascadeselect.overlay.border.radius')};\n    box-shadow: ${dt('cascadeselect.overlay.shadow')};\n}\n\n.p-cascadeselect .p-cascadeselect-overlay {\n    min-width: 100%;\n}\n\n.p-cascadeselect-option-list {\n    display: none;\n    min-width: 100%;\n    position: absolute;\n    z-index: 1;\n}\n\n.p-cascadeselect-list {\n    min-width: 100%;\n    margin: 0;\n    padding: 0;\n    list-style-type: none;\n    padding: ${dt('cascadeselect.list.padding')};\n    display: flex;\n    flex-direction: column;\n    gap: ${dt('cascadeselect.list.gap')}\n}\n\n.p-cascadeselect-option {\n    cursor: pointer;\n    font-weight: normal;\n    white-space: nowrap;\n    border: 0 none;\n    color: ${dt('cascadeselect.option.color')};\n    background: transparent;\n    transition: background ${dt('cascadeselect.transition.duration')}, color ${dt('cascadeselect.transition.duration')}, border-color ${dt('cascadeselect.transition.duration')}, box-shadow ${dt(\n        'cascadeselect.transition.duration'\n    )}, outline-color ${dt('cascadeselect.transition.duration')};\n    border-radius: ${dt('cascadeselect.option.border.radius')};\n}\n\n.p-cascadeselect-option-active {\n    overflow: visible;\n}\n\n.p-cascadeselect-option-active > .p-cascadeselect-option-content {\n    background: ${dt('cascadeselect.option.focus.background')};\n    color: ${dt('cascadeselect.option.focus.color')};\n}\n\n.p-cascadeselect-option:not(.p-cascadeselect-option-selected):not(.p-disabled).p-focus > .p-cascadeselect-option-content {\n    background: ${dt('cascadeselect.option.focus.background')};\n    color: ${dt('cascadeselect.option.focus.color')};\n}\n\n.p-cascadeselect-option:not(.p-cascadeselect-option-selected):not(.p-disabled).p-focus > .p-cascadeselect-option-content > .p-cascadeselect-group-icon-container > .p-cascadeselect-group-icon {\n    color: ${dt('cascadeselect.option.icon.focus.color')};\n}\n\n.p-cascadeselect-option-selected > .p-cascadeselect-option-content {\n    background: ${dt('cascadeselect.option.selected.background')};\n    color: ${dt('cascadeselect.option.selected.color')};\n}\n\n.p-cascadeselect-option-selected.p-focus > .p-cascadeselect-option-content {\n    background: ${dt('cascadeselect.option.selected.focus.background')};\n    color: ${dt('cascadeselect.option.selected.focus.color')};\n}\n\n.p-cascadeselect-option-active > .p-cascadeselect-option-list {\n    inset-inline-start: 100%;\n    top: 0;\n}\n\n.p-cascadeselect-option-content {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    overflow: hidden;\n    position: relative;\n    padding: ${dt('cascadeselect.option.padding')};\n    border-radius: ${dt('cascadeselect.option.border.radius')};\n    transition: background ${dt('cascadeselect.transition.duration')}, color ${dt('cascadeselect.transition.duration')}, border-color ${dt('cascadeselect.transition.duration')}, box-shadow ${dt(\n        'cascadeselect.transition.duration'\n    )}, outline-color ${dt('cascadeselect.transition.duration')};\n}\n\n.p-cascadeselect-group-icon {\n    font-size: ${dt('cascadeselect.option.icon.size')};\n    width: ${dt('cascadeselect.option.icon.size')};\n    height: ${dt('cascadeselect.option.icon.size')};\n    color: ${dt('cascadeselect.option.icon.color')};\n}\n\n.p-cascadeselect-group-icon:dir(rtl) {\n    transform: rotate(180deg);\n}\n\n.p-cascadeselect-mobile-active .p-cascadeselect-option-list {\n    position: static;\n    box-shadow: none;\n    border: 0 none;\n    padding-inline-start: 1rem;\n    padding-inline-end: 0;\n}\n\n.p-cascadeselect-mobile-active .p-cascadeselect-group-icon {\n    transition: transform 0.2s;\n    transform: rotate(90deg);\n}\n\n.p-cascadeselect-mobile-active .p-cascadeselect-option-active > .p-cascadeselect-option-content .p-cascadeselect-group-icon {\n    transform: rotate(-90deg);\n}\n\n.p-cascadeselect-sm .p-cascadeselect-label {\n    font-size: ${dt('cascadeselect.sm.font.size')};\n    padding-block: ${dt('cascadeselect.sm.padding.y')};\n    padding-inline: ${dt('cascadeselect.sm.padding.x')};\n}\n\n.p-cascadeselect-sm .p-cascadeselect-dropdown .p-icon {\n    font-size: ${dt('cascadeselect.sm.font.size')};\n    width: ${dt('cascadeselect.sm.font.size')};\n    height: ${dt('cascadeselect.sm.font.size')};\n}\n\n.p-cascadeselect-lg .p-cascadeselect-label {\n    font-size: ${dt('cascadeselect.lg.font.size')};\n    padding-block: ${dt('cascadeselect.lg.padding.y')};\n    padding-inline: ${dt('cascadeselect.lg.padding.x')};\n}\n\n.p-cascadeselect-lg .p-cascadeselect-dropdown .p-icon {\n    font-size: ${dt('cascadeselect.lg.font.size')};\n    width: ${dt('cascadeselect.lg.font.size')};\n    height: ${dt('cascadeselect.lg.font.size')};\n}\n\n/* For PrimeNG */\n.p-cascadeselect-clear-icon {\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-shrink: 0;\n    background: transparent;\n    color: ${dt('cascadeselect.clear.icon.color')};\n}`;\n\nconst inlineStyles = {\n    root: ({ props }) => ({ position: props.appendTo === 'self' ? 'relative' : undefined })\n};\n\nconst classes = {\n    root: ({ instance, props }) => [\n        'p-cascadeselect p-component p-inputwrapper',\n        {\n            'p-cascadeselect-mobile': instance.queryMatches(),\n            'p-disabled': props.disabled,\n            'p-invalid': props.invalid,\n            'p-variant-filled': props.variant ? props.variant === 'filled' : instance.config.inputStyle === 'filled' || instance.config.inputVariant === 'filled',\n            'p-focus': instance.focused,\n            'p-inputwrapper-filled': props.modelValue,\n            'p-inputwrapper-focus': instance.focused || instance.overlayVisible,\n            'p-cascadeselect-open': instance.overlayVisible,\n            'p-cascadeselect-fluid': props.fluid,\n            'p-cascadeselect-sm p-inputfield-sm': props.size === 'small',\n            'p-cascadeselect-lg p-inputfield-lg': props.size === 'large'\n        }\n    ],\n    label: ({ instance, props }) => [\n        'p-cascadeselect-label',\n        {\n            'p-placeholder': instance.label === props.placeholder,\n            'p-cascadeselect-label-empty': !instance.$slots['value'] && (instance.label === 'p-emptylabel' || instance.label.length === 0)\n        }\n    ],\n    dropdown: 'p-cascadeselect-dropdown',\n    loadingIcon: 'p-cascadeselect-loading-icon',\n    dropdownIcon: 'p-cascadeselect-dropdown-icon',\n    overlay: ({ instance }) => [\n        'p-cascadeselect-overlay p-component',\n        {\n            'p-cascadeselect-mobile-active': instance.queryMatches()\n        }\n    ],\n    listContainer: 'p-cascadeselect-list-container',\n    list: 'p-cascadeselect-list',\n    option: ({ instance, processedOption }) => [\n        'p-cascadeselect-option',\n        {\n            'p-cascadeselect-option-active': instance.isOptionActive(processedOption),\n            'p-cascadeselect-option-selected': instance.isOptionSelected(processedOption),\n            'p-focus': instance.isOptionFocused(processedOption),\n            'p-disabled': instance.isOptionDisabled(processedOption)\n        }\n    ],\n    optionContent: 'p-cascadeselect-option-content',\n    optionText: 'p-cascadeselect-option-text',\n    groupIcon: 'p-cascadeselect-group-icon',\n    optionList: 'p-cascadeselect-overlay p-cascadeselect-option-list'\n};\n\n@Injectable()\nexport class CascadeSelectStyle extends BaseStyle {\n    name = 'cascadeselect';\n\n    theme = theme;\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * CascadeSelect is a form component to select a value from a nested structure of options.\n *\n * [Live Demo](https://www.primeng.org/cascadeselect/)\n *\n * @module cascadeselectstyle\n *\n */\nexport enum CascadeSelectClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-cascadeselect',\n    /**\n     * Class name of the label element\n     */\n    label = 'p-cascadeselect-label',\n    /**\n     * Class name of the dropdown element\n     */\n    dropdown = 'p-cascadeselect-dropdown',\n    /**\n     * Class name of the loading icon element\n     */\n    loadingIcon = 'p-cascadeselect-loading-icon',\n    /**\n     * Class name of the dropdown icon element\n     */\n    dropdownIcon = 'p-cascadeselect-dropdown-icon',\n    /**\n     * Class name of the overlay element\n     */\n    overlay = 'p-cascadeselect-overlay',\n    /**\n     * Class name of the list container element\n     */\n    listContainer = 'p-cascadeselect-list-container',\n    /**\n     * Class name of the list element\n     */\n    list = 'p-cascadeselect-list',\n    /**\n     * Class name of the item element\n     */\n    item = 'p-cascadeselect-item',\n    /**\n     * Class name of the item content element\n     */\n    itemContent = 'p-cascadeselect-item-content',\n    /**\n     * Class name of the item text element\n     */\n    itemText = 'p-cascadeselect-item-text',\n    /**\n     * Class name of the group icon element\n     */\n    groupIcon = 'p-cascadeselect-group-icon',\n    /**\n     * Class name of the item list element\n     */\n    itemList = 'p-cascadeselect-item-list'\n}\n\nexport interface CascadeSelectStyle extends BaseStyle {}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterContentInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ContentChild,\n    ContentChildren,\n    effect,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    inject,\n    Input,\n    NgModule,\n    numberAttribute,\n    OnInit,\n    Output,\n    QueryList,\n    signal,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { calculateScrollbarWidth, equals, findLastIndex, findSingle, focus, getHiddenElementOuterWidth, getOffset, getOuterWidth, getViewport, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData, uuid } from '@primeuix/utils';\nimport { OverlayOptions, OverlayService, PrimeTemplate, SharedModule, TranslationKeys } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { AngleRightIcon, ChevronDownIcon, TimesIcon } from 'primeng/icons';\nimport { Overlay } from 'primeng/overlay';\nimport { Ripple } from 'primeng/ripple';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { CascadeSelectBeforeHideEvent, CascadeSelectBeforeShowEvent, CascadeSelectChangeEvent, CascadeSelectHideEvent, CascadeSelectShowEvent } from './cascadeselect.interface';\nimport { CascadeSelectStyle } from './style/cascadeselectstyle';\n\nexport const CASCADESELECT_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => CascadeSelect),\n    multi: true\n};\n\n@Component({\n    selector: 'p-cascadeSelectSub, p-cascadeselect-sub',\n    standalone: true,\n    imports: [CommonModule, Ripple, AngleRightIcon, SharedModule],\n    template: `\n        <ul class=\"p-cascadeselect-list\" [attr.role]=\"role\" aria-orientation=\"horizontal\" [attr.data-pc-section]=\"level === 0 ? 'list' : 'sublist'\" [attr.aria-label]=\"listLabel\">\n            <ng-template ngFor let-processedOption [ngForOf]=\"options\" let-i=\"index\">\n                <li\n                    [ngClass]=\"getItemClass(processedOption)\"\n                    role=\"treeitem\"\n                    [attr.aria-level]=\"level + 1\"\n                    [attr.aria-setsize]=\"options.length\"\n                    [attr.data-pc-section]=\"'item'\"\n                    [id]=\"getOptionId(processedOption)\"\n                    [attr.aria-label]=\"getOptionLabelToRender(processedOption)\"\n                    [attr.aria-selected]=\"isOptionGroup(processedOption) ? undefined : isOptionSelected(processedOption)\"\n                    [attr.aria-posinset]=\"i + 1\"\n                >\n                    <div\n                        class=\"p-cascadeselect-option-content\"\n                        (click)=\"onOptionClick($event, processedOption)\"\n                        (mouseenter)=\"onOptionMouseEnter($event, processedOption)\"\n                        (mousemove)=\"onOptionMouseMove($event, processedOption)\"\n                        pRipple\n                        [attr.data-pc-section]=\"'content'\"\n                    >\n                        <ng-container *ngIf=\"optionTemplate; else defaultOptionTemplate\">\n                            <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: processedOption?.option }\"></ng-container>\n                        </ng-container>\n                        <ng-template #defaultOptionTemplate>\n                            <span class=\"p-cascadeselect-option-text\" [attr.data-pc-section]=\"'text'\">{{ getOptionLabelToRender(processedOption) }}</span>\n                        </ng-template>\n                        <span class=\"p-cascadeselect-group-icon\" *ngIf=\"isOptionGroup(processedOption)\" [attr.data-pc-section]=\"'groupIcon'\">\n                            <AngleRightIcon *ngIf=\"!groupicon\" />\n                            <ng-template *ngTemplateOutlet=\"groupicon\"></ng-template>\n                        </span>\n                    </div>\n                    <p-cascadeselect-sub\n                        *ngIf=\"isOptionGroup(processedOption) && isOptionActive(processedOption)\"\n                        [role]=\"'group'\"\n                        class=\"p-cascadeselect-list p-cascadeselect-overlay p-cascadeselect-option-list\"\n                        [selectId]=\"selectId\"\n                        [focusedOptionId]=\"focusedOptionId\"\n                        [activeOptionPath]=\"activeOptionPath\"\n                        [options]=\"getOptionGroupChildren(processedOption)\"\n                        [optionLabel]=\"optionLabel\"\n                        [optionValue]=\"optionValue\"\n                        [level]=\"level + 1\"\n                        (onChange)=\"onChange.emit($event)\"\n                        (onFocusChange)=\"onFocusChange.emit($event)\"\n                        (onFocusEnterChange)=\"onFocusEnterChange.emit($event)\"\n                        [optionGroupLabel]=\"optionGroupLabel\"\n                        [optionGroupChildren]=\"optionGroupChildren\"\n                        [dirty]=\"dirty\"\n                        [optionTemplate]=\"optionTemplate\"\n                    >\n                    </p-cascadeselect-sub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CascadeSelectSub extends BaseComponent implements OnInit {\n    @Input() role: string | undefined;\n\n    @Input() selectId: string | undefined;\n\n    @Input() activeOptionPath: any[];\n\n    @Input() optionDisabled: any[];\n\n    @Input() focusedOptionId: string | undefined;\n\n    @Input() options: any[] | string[] | string | undefined | null;\n\n    @Input() optionGroupChildren: string[] | string | undefined | null;\n\n    @Input() optionTemplate: Nullable<TemplateRef<any>>;\n\n    @Input() groupicon: Nullable<TemplateRef<any>>;\n\n    @Input({ transform: numberAttribute }) level: number = 0;\n\n    @Input() optionLabel: string | undefined;\n\n    @Input() optionValue: string | undefined;\n\n    @Input() optionGroupLabel: string | undefined;\n\n    @Input({ transform: booleanAttribute }) dirty: boolean | undefined;\n\n    @Input({ transform: booleanAttribute }) root: boolean | undefined;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocusChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocusEnterChange: EventEmitter<any> = new EventEmitter();\n\n    get listLabel(): string {\n        return this.config.getTranslation(TranslationKeys.ARIA)['listLabel'];\n    }\n\n    constructor(public cascadeselect: CascadeSelect) {\n        super();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        if (!this.root) {\n            this.position();\n        }\n    }\n\n    onOptionClick(event, processedOption: any) {\n        this.onChange.emit({\n            originalEvent: event,\n            processedOption,\n            isFocus: true\n        });\n    }\n\n    onOptionMouseEnter(event, processedOption) {\n        this.onFocusEnterChange.emit({ originalEvent: event, processedOption });\n    }\n\n    onOptionMouseMove(event, processedOption) {\n        this.onFocusChange.emit({ originalEvent: event, processedOption });\n    }\n\n    getOptionId(processedOption) {\n        return `${this.selectId}_${processedOption.key}`;\n    }\n\n    getOptionLabel(processedOption) {\n        return this.optionLabel ? resolveFieldData(processedOption.option, this.optionLabel) : processedOption.option;\n    }\n\n    getOptionValue(processedOption) {\n        return this.optionValue ? resolveFieldData(processedOption.option, this.optionValue) : processedOption.option;\n    }\n\n    getOptionLabelToRender(processedOption) {\n        return this.isOptionGroup(processedOption) ? this.getOptionGroupLabel(processedOption) : this.getOptionLabel(processedOption);\n    }\n\n    isOptionDisabled(processedOption) {\n        return this.optionDisabled ? resolveFieldData(processedOption.option, this.optionDisabled) : false;\n    }\n\n    getOptionGroupLabel(processedOption) {\n        return this.optionGroupLabel ? resolveFieldData(processedOption.option, this.optionGroupLabel) : null;\n    }\n\n    getOptionGroupChildren(processedOption) {\n        return processedOption.children;\n    }\n\n    isOptionGroup(processedOption) {\n        return isNotEmpty(processedOption.children);\n    }\n\n    isOptionSelected(processedOption) {\n        return equals(this.cascadeselect?.modelValue(), processedOption?.option);\n    }\n\n    isOptionActive(processedOption) {\n        return this.activeOptionPath.some((path) => path.key === processedOption.key);\n    }\n\n    isOptionFocused(processedOption) {\n        return this.focusedOptionId === this.getOptionId(processedOption);\n    }\n\n    getItemClass(option: string | string[]) {\n        return {\n            'p-cascadeselect-option': true,\n            'p-cascadeselect-option-group': this.isOptionGroup(option),\n            'p-cascadeselect-option-active': this.isOptionActive(option),\n            'p-cascadeselect-option-selected': this.isOptionSelected(option),\n            'p-focus': this.isOptionFocused(option),\n            'p-disabled': this.isOptionDisabled(option)\n        };\n    }\n\n    position() {\n        const parentItem = this.el.nativeElement.parentElement;\n        const containerOffset = <any>getOffset(parentItem);\n        const viewport = <any>getViewport();\n        const sublistWidth = this.el.nativeElement.children[0].offsetParent ? this.el.nativeElement.children[0].offsetWidth : getHiddenElementOuterWidth(this.el.nativeElement.children[0]);\n        const itemOuterWidth = <any>getOuterWidth(parentItem.children[0]);\n        if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - calculateScrollbarWidth()) {\n            this.el.nativeElement.children[0].style.left = '-200%';\n        }\n    }\n}\n/**\n * CascadeSelect is a form component to select a value from a nested structure of options.\n * @group Components\n */\n@Component({\n    selector: 'p-cascadeSelect, p-cascadeselect, p-cascade-select',\n    standalone: true,\n    imports: [CommonModule, Overlay, AutoFocus, CascadeSelectSub, ChevronDownIcon, TimesIcon, SharedModule],\n    template: ` <div #container [ngClass]=\"containerClass\" [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onContainerClick($event)\" [attr.data-pc-name]=\"'cascadeselect'\" [attr.data-pc-section]=\"'root'\">\n        <div class=\"p-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\">\n            <input\n                #focusInput\n                readonly\n                type=\"text\"\n                role=\"combobox\"\n                [disabled]=\"disabled\"\n                [placeholder]=\"placeholder\"\n                [tabindex]=\"!disabled ? tabindex : -1\"\n                [attr.id]=\"inputId\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                aria-haspopup=\"tree\"\n                [attr.aria-expanded]=\"overlayVisible ?? false\"\n                [attr.aria-controls]=\"overlayVisible ? id + '_tree' : null\"\n                [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n                (focus)=\"onInputFocus($event)\"\n                (blur)=\"onInputBlur($event)\"\n                (keydown)=\"onInputKeyDown($event)\"\n                [pAutoFocus]=\"autofocus\"\n            />\n        </div>\n        <span [ngClass]=\"labelClass\" [attr.data-pc-section]=\"'label'\">\n            <ng-container *ngIf=\"valueTemplate || _valueTemplate; else defaultValueTemplate\">\n                <ng-container *ngTemplateOutlet=\"valueTemplate || _valueTemplate; context: { $implicit: value, placeholder: placeholder }\"></ng-container>\n            </ng-container>\n            <ng-template #defaultValueTemplate>\n                {{ label() }}\n            </ng-template>\n        </span>\n\n        <ng-container *ngIf=\"filled && !disabled && showClear\">\n            <TimesIcon *ngIf=\"!clearIconTemplate && !_clearIconTemplate\" class=\"p-cascadeselect-clear-icon\" (click)=\"clear($event)\" [attr.data-pc-section]=\"'clearicon'\" [attr.aria-hidden]=\"true\" />\n            <span *ngIf=\"clearIconTemplate || _clearIconTemplate\" class=\"p-cascadeselect-clear-icon\" (click)=\"clear($event)\" [attr.data-pc-section]=\"'clearicon'\" [attr.aria-hidden]=\"true\">\n                <ng-template *ngTemplateOutlet=\"clearIconTemplate || _clearIconTemplate\"></ng-template>\n            </span>\n        </ng-container>\n\n        <div class=\"p-cascadeselect-dropdown\" role=\"button\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible ?? false\" [attr.data-pc-section]=\"'dropdownIcon'\" [attr.aria-hidden]=\"true\">\n            <ng-container *ngIf=\"loading; else elseBlock\">\n                <ng-container *ngIf=\"loadingIconTemplate || _loadingIconTemplate\">\n                    <ng-container *ngTemplateOutlet=\"loadingIconTemplate || _loadingIconTemplate\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"!loadingIconTemplate && !_loadingIconTemplate\">\n                    <span *ngIf=\"loadingIcon\" [ngClass]=\"'p-cascadeselect-loading-icon pi-spin ' + loadingIcon\" aria-hidden=\"true\"></span>\n                    <span *ngIf=\"!loadingIcon\" [class]=\"'p-cascadeselect-loading-icon pi pi-spinner pi-spin'\" aria-hidden=\"true\"></span>\n                </ng-container>\n            </ng-container>\n            <ng-template #elseBlock>\n                <ChevronDownIcon *ngIf=\"!triggerIconTemplate && !_triggerIconTemplate\" [styleClass]=\"'p-cascadeselect-dropdown-icon'\" />\n                <span *ngIf=\"triggerIconTemplate || _triggerIconTemplate\" class=\"p-cascadeselect-dropdown-icon\">\n                    <ng-template *ngTemplateOutlet=\"triggerIconTemplate || _triggerIconTemplate\"></ng-template>\n                </span>\n            </ng-template>\n        </div>\n        <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\">\n            {{ searchResultMessageText }}\n        </span>\n        <p-overlay\n            #overlay\n            [(visible)]=\"overlayVisible\"\n            [options]=\"overlayOptions\"\n            [target]=\"'@parent'\"\n            [appendTo]=\"appendTo\"\n            [showTransitionOptions]=\"showTransitionOptions\"\n            [hideTransitionOptions]=\"hideTransitionOptions\"\n            (onAnimationDone)=\"onOverlayAnimationDone($event)\"\n            (onBeforeShow)=\"onBeforeShow.emit($event)\"\n            (onShow)=\"show($event)\"\n            (onBeforeHide)=\"onBeforeHide.emit($event)\"\n            (onHide)=\"hide($event)\"\n        >\n            <ng-template #content>\n                <div #panel [ngClass]=\"{ 'p-cascadeselect-overlay p-component': true, 'p-cascadeselect-mobile-active': queryMatches() }\" [class]=\"panelStyleClass\" [ngStyle]=\"panelStyle\" [attr.data-pc-section]=\"'panel'\">\n                    <ng-template *ngTemplateOutlet=\"headerTemplate || _headerTemplate\"></ng-template>\n                    <div class=\"p-cascadeselect-list-container\" [attr.data-pc-section]=\"'wrapper'\">\n                        <p-cascadeselect-sub\n                            [options]=\"processedOptions\"\n                            [selectId]=\"id\"\n                            [focusedOptionId]=\"focused ? focusedOptionId : undefined\"\n                            [activeOptionPath]=\"activeOptionPath()\"\n                            [optionLabel]=\"optionLabel\"\n                            [optionValue]=\"optionValue\"\n                            [level]=\"0\"\n                            [optionTemplate]=\"optionTemplate || _optionTemplate\"\n                            [groupicon]=\"groupIconTemplate || groupIconTemplate\"\n                            [optionGroupLabel]=\"optionGroupLabel\"\n                            [optionGroupChildren]=\"optionGroupChildren\"\n                            [optionDisabled]=\"optionDisabled\"\n                            [root]=\"true\"\n                            (onChange)=\"onOptionClick($event)\"\n                            (onFocusChange)=\"onOptionMouseMove($event)\"\n                            (onFocusEnterChange)=\"onOptionMouseEnter($event)\"\n                            [dirty]=\"dirty\"\n                            [role]=\"'tree'\"\n                        >\n                        </p-cascadeselect-sub>\n                    </div>\n                    <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\">\n                        {{ selectedMessageText }}\n                    </span>\n                    <ng-template *ngTemplateOutlet=\"footerTemplate || _footerTemplate\"></ng-template>\n                </div>\n            </ng-template>\n        </p-overlay>\n    </div>`,\n    providers: [CASCADESELECT_VALUE_ACCESSOR, CascadeSelectStyle],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class CascadeSelect extends BaseComponent implements OnInit, AfterContentInit {\n    /**\n     * Unique identifier of the component\n     * @group Props\n     */\n    @Input() id: string | undefined;\n    /**\n     * Text to display when the search is active. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue '{0} results are available'\n     */\n    @Input() searchMessage: string | undefined;\n    /**\n     * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n     * @group Props\n     */\n    @Input() emptyMessage: string | undefined;\n    /**\n     * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue '{0} items selected'\n     */\n    @Input() selectionMessage: string | undefined;\n    /**\n     * Text to display when filtering does not return any results. Defaults to value from PrimeNG locale configuration.\n     * @group Props\n     * @defaultValue 'No available options'\n     */\n    @Input() emptySearchMessage: string | undefined;\n    /**\n     * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue 'No selected item'\n     */\n    @Input() emptySelectionMessage: string | undefined;\n    /**\n     * Locale to use in searching. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    @Input() searchLocale: string | undefined;\n    /**\n     * Name of the disabled field of an option.\n     * @group Props\n     */\n    @Input() optionDisabled: any;\n    /**\n     * Fields used when filtering the options, defaults to optionLabel.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) focusOnHover: boolean = true;\n    /**\n     * Determines if the option will be selected on focus.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) selectOnFocus: boolean = false;\n    /**\n     * Whether to focus on the first visible or selected element when the overlay panel is shown.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autoOptionFocus: boolean = false;\n    /**\n     * Style class of the component.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n    /**\n     * Inline style of the component.\n     * @group Props\n     */\n    @Input() style: { [klass: string]: any } | null | undefined;\n    /**\n     * An array of selectitems to display as the available options.\n     * @group Props\n     */\n    @Input() options: string[] | string | undefined;\n    /**\n     * Property name or getter function to use as the label of an option.\n     * @group Props\n     */\n    @Input() optionLabel: string | undefined;\n    /**\n     * Property name or getter function to use as the value of an option, defaults to the option itself when not defined.\n     * @group Props\n     */\n    @Input() optionValue: string | undefined;\n    /**\n     * Property name or getter function to use as the label of an option group.\n     * @group Props\n     */\n    @Input() optionGroupLabel: string | undefined;\n    /**\n     * Property name or getter function to retrieve the items of a group.\n     * @group Props\n     */\n    @Input() optionGroupChildren: string[] | string | undefined | null;\n    /**\n     * Default text to display when no option is selected.\n     * @group Props\n     */\n    @Input() placeholder: string | undefined;\n    /**\n     * Selected value of the component.\n     * @group Props\n     */\n    @Input() value: string | undefined | null;\n    /**\n     * A property to uniquely identify an option.\n     * @group Props\n     */\n    @Input() dataKey: string | undefined;\n    /**\n     * Identifier of the underlying input element.\n     * @group Props\n     */\n    @Input() inputId: string | undefined;\n    /**\n     * Defines the size of the component.\n     * @group Props\n     */\n    @Input() size: 'large' | 'small';\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) tabindex: number | undefined = 0;\n    /**\n     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n     * @group Props\n     */\n    @Input() ariaLabelledBy: string | undefined;\n    /**\n     * Label of the input for accessibility.\n     * @group Props\n     */\n    @Input() inputLabel: string | undefined;\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    @Input() ariaLabel: string | undefined;\n    /**\n     * Id of the element or \"body\" for document where the overlay should be appended to.\n     * @group Props\n     */\n    @Input() appendTo: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;\n    /**\n     * When present, it specifies that the component should be disabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n    /**\n     * When enabled, a clear icon is displayed to clear the value.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showClear: boolean = false;\n    /**\n     * Style class of the overlay panel.\n     * @group Props\n     */\n    @Input() panelStyleClass: string | undefined;\n    /**\n     * Inline style of the overlay panel.\n     * @group Props\n     */\n    @Input() panelStyle: { [klass: string]: any } | null | undefined;\n    /**\n     * Whether to use overlay API feature. The properties of overlay API can be used like an object in it.\n     * @group Props\n     */\n    @Input() overlayOptions: OverlayOptions | undefined;\n    /**\n     * When present, it specifies that the component should automatically get focus on load.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n    /**\n     * Transition options of the show animation.\n     * @group Props\n     * @deprecated deprecated since v14.2.0, use overlayOptions property instead.\n     */\n    @Input() get showTransitionOptions(): string {\n        return this._showTransitionOptions;\n    }\n    set showTransitionOptions(val: string) {\n        this._showTransitionOptions = val;\n        console.log('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n    }\n    /**\n     * Specifies the input variant of the component.\n     * @group Props\n     */\n    @Input() variant: 'filled' | 'outlined';\n    /**\n     * Whether the dropdown is in loading state.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) loading: boolean | undefined = false;\n    /**\n     * Icon to display in loading state.\n     * @group Props\n     */\n    @Input() loadingIcon: string | undefined;\n    /**\n     * Transition options of the hide animation.\n     * @group Props\n     * @deprecated deprecated since v14.2.0, use overlayOptions property instead.\n     */\n    @Input() get hideTransitionOptions(): string {\n        return this._hideTransitionOptions;\n    }\n    set hideTransitionOptions(val: string) {\n        this._hideTransitionOptions = val;\n        console.log('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n    }\n    /**\n     * Spans 100% width of the container when enabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) fluid: boolean = false;\n    /**\n     * The breakpoint to define the maximum width boundary.\n     * @group Props\n     */\n    @Input() breakpoint: string = '960px';\n    /**\n     * Callback to invoke on value change.\n     * @param {CascadeSelectChangeEvent} event - Custom change event.\n     * @group Emits\n     */\n    @Output() onChange: EventEmitter<CascadeSelectChangeEvent> = new EventEmitter<CascadeSelectChangeEvent>();\n    /**\n     * Callback to invoke when a group changes.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onGroupChange: EventEmitter<Event> = new EventEmitter<Event>();\n    /**\n     * Callback to invoke when the overlay is shown.\n     * @param {CascadeSelectShowEvent} event - Custom overlay show event.\n     * @group Emits\n     */\n    @Output() onShow: EventEmitter<CascadeSelectShowEvent> = new EventEmitter<CascadeSelectShowEvent>();\n    /**\n     * Callback to invoke when the overlay is hidden.\n     * @param {CascadeSelectHideEvent} event - Custom overlay hide event.\n     * @group Emits\n     */\n    @Output() onHide: EventEmitter<CascadeSelectHideEvent> = new EventEmitter<CascadeSelectHideEvent>();\n    /**\n     * Callback to invoke when the clear token is clicked.\n     * @group Emits\n     */\n    @Output() onClear: EventEmitter<any> = new EventEmitter();\n    /**\n     * Callback to invoke before overlay is shown.\n     * @param {CascadeSelectBeforeShowEvent} event - Custom overlay show event.\n     * @group Emits\n     */\n    @Output() onBeforeShow: EventEmitter<CascadeSelectBeforeShowEvent> = new EventEmitter<CascadeSelectBeforeShowEvent>();\n    /**\n     * Callback to invoke before overlay is hidden.\n     * @param {CascadeSelectBeforeHideEvent} event - Custom overlay hide event.\n     * @group Emits\n     */\n    @Output() onBeforeHide: EventEmitter<CascadeSelectBeforeHideEvent> = new EventEmitter<CascadeSelectBeforeHideEvent>();\n    /**\n     * Callback to invoke when input receives focus.\n     * @param {FocusEvent} event - Focus event.\n     * @group Emits\n     */\n    @Output() onFocus: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n    /**\n     * Callback to invoke when input loses focus.\n     * @param {FocusEvent} event - Focus event.\n     * @group Emits\n     */\n    @Output() onBlur: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n    @ViewChild('focusInput') focusInputViewChild: Nullable<ElementRef>;\n\n    @ViewChild('container') containerViewChild: Nullable<ElementRef>;\n\n    @ViewChild('panel') panelViewChild: Nullable<ElementRef>;\n\n    @ViewChild('overlay') overlayViewChild: Nullable<Overlay>;\n    /**\n     * Content template for displaying the selected value.\n     * @group Templates\n     */\n    @ContentChild('value', { descendants: false }) valueTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the option display.\n     * @group Templates\n     */\n    @ContentChild('option', { descendants: false }) optionTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the header.\n     * @group Templates\n     */\n    @ContentChild('header', { descendants: false }) headerTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the footer.\n     * @group Templates\n     */\n    @ContentChild('footer', { descendants: false }) footerTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the trigger icon.\n     * @group Templates\n     */\n    @ContentChild('triggericon', { descendants: false }) triggerIconTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the loading icon.\n     * @group Templates\n     */\n    @ContentChild('loadingicon', { descendants: false }) loadingIconTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the group icon.\n     * @group Templates\n     */\n    @ContentChild('optiongroupicon', { descendants: false }) groupIconTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Content template for customizing the clear icon.\n     * @group Templates\n     */\n    @ContentChild('clearicon', { descendants: false }) clearIconTemplate: Nullable<TemplateRef<any>>;\n\n    _valueTemplate: TemplateRef<any> | undefined;\n\n    _optionTemplate: TemplateRef<any> | undefined;\n\n    _headerTemplate: TemplateRef<any> | undefined;\n\n    _footerTemplate: TemplateRef<any> | undefined;\n\n    _triggerIconTemplate: TemplateRef<any> | undefined;\n\n    _loadingIconTemplate: TemplateRef<any> | undefined;\n\n    _groupIconTemplate: TemplateRef<any> | undefined;\n\n    _clearIconTemplate: TemplateRef<any> | undefined;\n\n    _showTransitionOptions: string = '';\n\n    _hideTransitionOptions: string = '';\n\n    selectionPath: any = null;\n\n    focused: boolean = false;\n\n    overlayVisible: boolean = false;\n\n    clicked: boolean = false;\n\n    dirty: boolean = false;\n\n    searchValue: string | undefined;\n\n    searchTimeout: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    focusedOptionInfo = signal<any>({ index: -1, level: 0, parentKey: '' });\n\n    activeOptionPath = signal<any>([]);\n\n    modelValue = signal<any>(null);\n\n    processedOptions: string[] | string | undefined = [];\n\n    _componentStyle = inject(CascadeSelectStyle);\n\n    get containerClass() {\n        return {\n            'p-cascadeselect p-component p-inputwrapper': true,\n            'p-cascadeselect-clearable': this.showClear && !this.disabled,\n            'p-cascadeselect-mobile': this.queryMatches(),\n            'p-disabled': this.disabled,\n            'p-focus': this.focused,\n            'p-inputwrapper-filled': this.modelValue(),\n            'p-variant-filled': this.variant === 'filled' || this.config.inputStyle() === 'filled' || this.config.inputVariant() === 'filled',\n            'p-inputwrapper-focus': this.focused || this.overlayVisible,\n            'p-cascadeselect-open': this.overlayVisible,\n            'p-cascadeselect-fluid': this.hasFluid,\n            'p-cascadeselect-sm p-inputfield-sm': this.size === 'small',\n            'p-cascadeselect-lg p-inputfield-lg': this.size === 'large'\n        };\n    }\n\n    get labelClass() {\n        return {\n            'p-cascadeselect-label': true,\n            'p-placeholder': this.label() === this.placeholder,\n            'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)\n        };\n    }\n\n    get hasFluid() {\n        const nativeElement = this.el.nativeElement;\n        const fluidComponent = nativeElement.closest('p-fluid');\n        return this.fluid || !!fluidComponent;\n    }\n\n    get focusedOptionId() {\n        return this.focusedOptionInfo().index !== -1 ? `${this.id}${isNotEmpty(this.focusedOptionInfo().parentKey) ? '_' + this.focusedOptionInfo().parentKey : ''}_${this.focusedOptionInfo().index}` : null;\n    }\n\n    get filled(): boolean {\n        if (typeof this.modelValue() === 'string') return !!this.modelValue();\n\n        return this.modelValue() || this.modelValue() != null || this.modelValue() != undefined;\n    }\n\n    get searchResultMessageText() {\n        return isNotEmpty(this.visibleOptions()) ? this.searchMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptySearchMessageText;\n    }\n\n    get searchMessageText() {\n        return this.searchMessage || this.config.translation.searchMessage || '';\n    }\n\n    get emptySearchMessageText() {\n        return this.emptySearchMessage || this.config.translation.emptySearchMessage || '';\n    }\n\n    get emptyMessageText() {\n        return this.emptyMessage || this.config.translation.emptyMessage || '';\n    }\n\n    get selectionMessageText() {\n        return this.selectionMessage || this.config.translation.selectionMessage || '';\n    }\n\n    get emptySelectionMessageText() {\n        return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';\n    }\n\n    get selectedMessageText() {\n        return this.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', '1') : this.emptySelectionMessageText;\n    }\n\n    visibleOptions = computed(() => {\n        const processedOption = this.activeOptionPath().find((p) => p.key === this.focusedOptionInfo().parentKey);\n\n        return processedOption ? processedOption.children : this.processedOptions;\n    });\n\n    label = computed(() => {\n        const label = this.placeholder || 'p-emptylabel';\n\n        if (this.hasSelectedOption()) {\n            const activeOptionPath = this.findOptionPathByValue(this.modelValue(), null);\n            const processedOption = isNotEmpty(activeOptionPath) ? activeOptionPath[activeOptionPath.length - 1] : null;\n\n            return processedOption ? this.getOptionLabel(processedOption.option) : label;\n        }\n        return label;\n    });\n\n    get _label() {\n        const label = this.placeholder || 'p-emptylabel';\n\n        if (this.hasSelectedOption()) {\n            const activeOptionPath = this.findOptionPathByValue(this.modelValue(), null);\n            const processedOption = isNotEmpty(activeOptionPath) ? activeOptionPath[activeOptionPath.length - 1] : null;\n\n            return processedOption ? this.getOptionLabel(processedOption.option) : label;\n        }\n        return label;\n    }\n\n    @ContentChildren(PrimeTemplate) templates!: QueryList<PrimeTemplate>;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'value':\n                    this._valueTemplate = item.template;\n                    break;\n\n                case 'option':\n                    this._optionTemplate = item.template;\n                    break;\n\n                case 'triggericon':\n                    this._triggerIconTemplate = item.template;\n                    break;\n\n                case 'loadingicon':\n                    this._loadingIconTemplate = item.template;\n                    break;\n\n                case 'clearicon':\n                    this._clearIconTemplate = item.template;\n                    break;\n\n                case 'optiongroupicon':\n                    this._groupIconTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        super.ngOnChanges(changes);\n        if (changes.options) {\n            this.processedOptions = this.createProcessedOptions(changes.options.currentValue || []);\n            this.updateModel(null);\n        }\n    }\n\n    hasSelectedOption() {\n        return isNotEmpty(this.modelValue());\n    }\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\n    onInputFocus(event: FocusEvent) {\n        if (this.disabled) {\n            // For screenreaders\n            return;\n        }\n\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event: FocusEvent) {\n        this.focused = false;\n        this.focusedOptionInfo.set({ indeX: -1, level: 0, parentKey: '' });\n        this.searchValue = '';\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputKeyDown(event: KeyboardEvent) {\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 'Backspace':\n                this.onBackspaceKey(event);\n                break;\n\n            case 'PageDown':\n            case 'PageUp':\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\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, true);\n        }\n\n        event.preventDefault();\n    }\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, true);\n\n            !this.overlayVisible && this.show();\n            event.preventDefault();\n        }\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                const activeOptionPath = this.activeOptionPath().filter((p) => p.parentKey !== this.focusedOptionInfo().parentKey);\n                this.activeOptionPath.set(activeOptionPath);\n            }\n\n            if (!root) {\n                this.focusedOptionInfo.set({ index: -1, parentKey: parentOption ? parentOption.parentKey : '' });\n                this.searchValue = '';\n                this.onArrowDownKey(event);\n            }\n\n            event.preventDefault();\n        }\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.set({ 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\n    onHomeKey(event) {\n        this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());\n\n        !this.overlayVisible && this.show();\n        event.preventDefault();\n    }\n\n    onEndKey(event) {\n        this.changeFocusedOptionIndex(event, this.findLastOptionIndex());\n\n        !this.overlayVisible && this.show();\n        event.preventDefault();\n    }\n\n    onEnterKey(event) {\n        if (!this.overlayVisible) {\n            this.focusedOptionInfo.set({ ...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.onOptionClick({ originalEvent: event, processedOption });\n                !grouped && this.hide();\n            }\n        }\n\n        event.preventDefault();\n    }\n\n    onSpaceKey(event) {\n        this.onEnterKey(event);\n    }\n\n    onEscapeKey(event) {\n        this.overlayVisible && this.hide(event, true);\n        event.preventDefault();\n    }\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\n    onBackspaceKey(event) {\n        if (isNotEmpty(this.modelValue()) && this.showClear) {\n            this.clear();\n        }\n\n        event.stopPropagation();\n    }\n\n    equalityKey() {\n        return this.optionValue ? null : this.dataKey;\n    }\n\n    updateModel(value, event?) {\n        this.value = value;\n        this.onModelChange(value);\n        this.modelValue.set(value);\n\n        this.onChange.emit({\n            originalEvent: event,\n            value: value\n        });\n    }\n\n    autoUpdateModel() {\n        if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption()) {\n            this.focusedOptionInfo().index = this.findFirstFocusedOptionIndex();\n            this.onOptionChange({\n                originalEvent: null,\n                processedOption: this.visibleOptions()[this.focusedOptionInfo().index],\n                isHide: false\n            });\n\n            !this.overlayVisible && this.focusedOptionInfo.set({ index: -1, level: 0, parentKey: '' });\n        }\n    }\n\n    scrollInView(index = -1) {\n        const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;\n        const element = findSingle(this.panelViewChild?.nativeElement, `li[id=\"${id}\"]`);\n\n        if (element) {\n            element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\n        }\n    }\n\n    changeFocusedOptionIndex(event, index, preventSelection?: boolean) {\n        const focusedOptionInfo = this.focusedOptionInfo();\n\n        if (focusedOptionInfo.index !== index) {\n            this.focusedOptionInfo.set({ ...focusedOptionInfo, index });\n            this.scrollInView();\n\n            if (this.focusOnHover) {\n                this.onOptionClick({ originalEvent: event, processedOption: this.visibleOptions()[index], isHide: false, preventSelection });\n            }\n\n            if (this.selectOnFocus) {\n                this.onOptionChange({ originalEvent: event, processedOption: this.visibleOptions()[index], isHide: false });\n            }\n        }\n    }\n    matchMediaListener: VoidListener;\n\n    onOptionSelect(event) {\n        const { originalEvent, value, isHide } = event;\n        const newValue = this.getOptionValue(value);\n\n        const activeOptionPath = this.activeOptionPath();\n        activeOptionPath.forEach((p) => (p.selected = true));\n\n        this.activeOptionPath.set(activeOptionPath);\n        this.updateModel(newValue, originalEvent);\n        isHide && this.hide(event, true);\n    }\n\n    onOptionGroupSelect(event) {\n        this.dirty = true;\n        this.onGroupChange.emit(event);\n    }\n\n    onContainerClick(event: MouseEvent) {\n        if (this.disabled || this.loading) {\n            return;\n        }\n\n        if (!this.overlayViewChild?.el?.nativeElement?.contains(event.target)) {\n            if (this.overlayVisible) {\n                this.hide();\n            } else {\n                this.show();\n            }\n\n            this.focusInputViewChild?.nativeElement.focus();\n        }\n\n        this.clicked = true;\n    }\n\n    isOptionMatched(processedOption) {\n        return this.isValidOption(processedOption) && this.getProccessedOptionLabel(processedOption).toLocaleLowerCase(this.searchLocale).startsWith(this.searchValue.toLocaleLowerCase(this.searchLocale));\n    }\n\n    isOptionDisabled(option) {\n        return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n    }\n\n    isValidOption(processedOption) {\n        return !!processedOption && !this.isOptionDisabled(processedOption.option);\n    }\n\n    isValidSelectedOption(processedOption) {\n        return this.isValidOption(processedOption) && this.isSelected(processedOption);\n    }\n\n    isSelected(processedOption) {\n        return this.activeOptionPath().some((p) => p.key === processedOption.key);\n    }\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\n    findFirstOptionIndex() {\n        return this.visibleOptions().findIndex((processedOption) => this.isValidOption(processedOption));\n    }\n\n    findLastOptionIndex() {\n        return findLastIndex(this.visibleOptions(), (processedOption) => this.isValidOption(processedOption));\n    }\n\n    findNextOptionIndex(index) {\n        const matchedOptionIndex =\n            index < this.visibleOptions().length - 1\n                ? this.visibleOptions()\n                      .slice(index + 1)\n                      .findIndex((processedOption) => this.isValidOption(processedOption))\n                : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n    }\n\n    findPrevOptionIndex(index) {\n        const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (processedOption) => this.isValidOption(processedOption)) : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n    }\n\n    findSelectedOptionIndex() {\n        return this.visibleOptions().findIndex((processedOption) => this.isValidSelectedOption(processedOption));\n    }\n\n    findFirstFocusedOptionIndex() {\n        const selectedIndex = this.findSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n    }\n\n    findLastFocusedOptionIndex() {\n        const selectedIndex = this.findSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n    }\n\n    searchOptions(event, char) {\n        this.searchValue = (this.searchValue || '') + char;\n\n        let optionIndex = -1;\n        let matched = false;\n        const focusedOptionInfo = this.focusedOptionInfo();\n\n        if (focusedOptionInfo.index !== -1) {\n            optionIndex = this.visibleOptions()\n                .slice(focusedOptionInfo.index)\n                .findIndex((processedOption) => this.isOptionMatched(processedOption));\n            optionIndex =\n                optionIndex === -1\n                    ? this.visibleOptions()\n                          .slice(0, focusedOptionInfo.index)\n                          .findIndex((processedOption) => this.isOptionMatched(processedOption))\n                    : optionIndex + 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 && focusedOptionInfo.index === -1) {\n            optionIndex = this.findFirstFocusedOptionIndex();\n        }\n\n        if (optionIndex !== -1) {\n            this.changeFocusedOptionIndex(event, optionIndex);\n        }\n\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(() => {\n            this.searchValue = '';\n            this.searchTimeout = null;\n        }, 500);\n\n        return matched;\n    }\n\n    hide(event?, isFocus = false) {\n        const _hide = () => {\n            this.overlayVisible = false;\n            this.clicked = false;\n            this.activeOptionPath.set([]);\n            this.focusedOptionInfo.set({ index: -1, level: 0, parentKey: '' });\n\n            isFocus && focus(this.focusInputViewChild.nativeElement);\n            this.onHide.emit(event);\n            this.cd.markForCheck();\n        };\n\n        setTimeout(() => {\n            _hide();\n        }, 0); // For ScreenReaders\n    }\n\n    show(event?, isFocus = false) {\n        this.onShow.emit(event);\n        this.overlayVisible = true;\n        const activeOptionPath = this.hasSelectedOption() ? this.findOptionPathByValue(this.modelValue()) : this.activeOptionPath();\n        this.activeOptionPath.set(activeOptionPath);\n        let focusedOptionInfo;\n\n        if (this.hasSelectedOption() && isNotEmpty(this.activeOptionPath())) {\n            const processedOption = this.activeOptionPath()[this.activeOptionPath().length - 1];\n\n            focusedOptionInfo = {\n                index: processedOption.index,\n                level: processedOption.level,\n                parentKey: processedOption.parentKey\n            };\n        } else {\n            focusedOptionInfo = { index: this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex(), level: 0, parentKey: '' };\n        }\n\n        this.focusedOptionInfo.set(focusedOptionInfo);\n\n        isFocus && focus(this.focusInputViewChild.nativeElement);\n    }\n\n    clear(event?: MouseEvent) {\n        if (isNotEmpty(this.modelValue()) && this.showClear) {\n            this.updateModel(null);\n            this.focusedOptionInfo.set({ index: -1, level: 0, parentKey: '' });\n            this.activeOptionPath.set([]);\n            this.onClear.emit();\n        }\n\n        event && event.stopPropagation();\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n    }\n\n    getOptionValue(option) {\n        return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n    }\n\n    getOptionGroupLabel(optionGroup) {\n        return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : null;\n    }\n\n    getOptionGroupChildren(optionGroup, level) {\n        return resolveFieldData(optionGroup, this.optionGroupChildren[level]);\n    }\n\n    isOptionGroup(option, level) {\n        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);\n    }\n\n    isProccessedOptionGroup(processedOption) {\n        return isNotEmpty(processedOption?.children);\n    }\n\n    getProccessedOptionLabel(processedOption) {\n        const grouped = this.isProccessedOptionGroup(processedOption);\n\n        return grouped ? this.getOptionGroupLabel(processedOption.option) : this.getOptionLabel(processedOption.option);\n    }\n\n    constructor(public overlayService: OverlayService) {\n        super();\n        effect(() => {\n            const activeOptionPath = this.activeOptionPath();\n            if (isNotEmpty(activeOptionPath)) {\n                this.overlayViewChild.alignOverlay();\n            }\n        });\n    }\n    query: any;\n    queryMatches = signal<boolean>(false);\n    mobileActive = signal<boolean>(false);\n\n    onOptionChange(event) {\n        const { processedOption, type } = event;\n\n        if (isEmpty(processedOption)) return;\n\n        const { index, key, level, parentKey, children } = processedOption;\n        const grouped = isNotEmpty(children);\n        const activeOptionPath = this.activeOptionPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);\n\n        this.focusedOptionInfo.set({ index, level, parentKey });\n\n        if (type == 'hover' && this.queryMatches()) {\n            return;\n        }\n\n        if (grouped) {\n            activeOptionPath.push(processedOption);\n        }\n\n        this.activeOptionPath.set([...activeOptionPath]);\n    }\n\n    onOptionClick(event) {\n        const { originalEvent, processedOption, isFocus, isHide, preventSelection } = event;\n        const { index, key, level, parentKey } = processedOption;\n        const grouped = this.isProccessedOptionGroup(processedOption);\n        const selected = this.isSelected(processedOption);\n\n        if (selected) {\n            const activeOptionPath = this.activeOptionPath().filter((p) => key !== p.key && key.startsWith(p.key));\n            this.activeOptionPath.set([...activeOptionPath]);\n            this.focusedOptionInfo.set({ index, level, parentKey });\n        } else {\n            if (grouped) {\n                this.onOptionChange(event);\n                this.onOptionGroupSelect({ originalEvent, value: processedOption.option, isFocus: false });\n            } else {\n                const activeOptionPath = this.activeOptionPath().filter((p) => p.parentKey !== parentKey);\n\n                activeOptionPath.push(processedOption);\n\n                this.focusedOptionInfo.set({ index, level, parentKey });\n\n                if (!preventSelection || processedOption?.children.length !== 0) {\n                    this.activeOptionPath.set([...activeOptionPath]);\n                    this.onOptionSelect({ originalEvent, value: processedOption.option, isHide: isFocus });\n                }\n            }\n        }\n\n        isFocus && focus(this.focusInputViewChild.nativeElement);\n    }\n\n    onOptionMouseEnter(event) {\n        if (this.focusOnHover) {\n            if (this.dirty || (!this.dirty && isNotEmpty(this.modelValue()))) {\n                this.onOptionChange({ ...event, type: 'hover' });\n            } else if (!this.dirty && event.processedOption.level === 0) {\n                this.onOptionClick({ ...event, type: 'hover' });\n            }\n        }\n    }\n\n    onOptionMouseMove(event) {\n        if (this.focused && this.focusOnHover) {\n            this.changeFocusedOptionIndex(event, event.processedOption.index);\n        }\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.id = this.id || uuid('pn_id_');\n        this.autoUpdateModel();\n        this.bindMatchMediaListener();\n    }\n\n    bindMatchMediaListener() {\n        if (!this.matchMediaListener) {\n            const window: Window = this.document.defaultView;\n            if (window && window.matchMedia) {\n                const query = window.matchMedia(`(max-width: ${this.breakpoint})`);\n                this.query = query;\n                this.queryMatches.set(query?.matches);\n\n                this.matchMediaListener = () => {\n                    this.queryMatches.set(query?.matches);\n                    this.mobileActive.set(false);\n                };\n\n                this.query.addEventListener('change', this.matchMediaListener);\n            }\n        }\n    }\n\n    unbindMatchMediaListener() {\n        if (this.matchMediaListener) {\n            this.query.removeEventListener('change', this.matchMediaListener);\n            this.matchMediaListener = null;\n        }\n    }\n\n    onOverlayAnimationDone(event: any) {\n        switch (event.toState) {\n            case 'void':\n                this.dirty = false;\n                break;\n        }\n    }\n\n    writeValue(value: any): void {\n        this.value = value;\n        this.updateModel(value);\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    ngOnDestroy() {\n        if (this.matchMediaListener) {\n            this.unbindMatchMediaListener();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CascadeSelect, SharedModule],\n    exports: [CascadeSelect, SharedModule]\n})\nexport class CascadeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}