{"version":3,"file":"koobiq-components-app-switcher.mjs","sources":["../../../packages/components/app-switcher/app-switcher-animations.ts","../../../packages/components/app-switcher/app-switcher-dropdown-app.ts","../../../packages/components/app-switcher/app-switcher-dropdown-site.ts","../../../packages/components/app-switcher/kbq-app-switcher-list-item.ts","../../../packages/components/app-switcher/app-switcher.ts","../../../packages/components/app-switcher/app-switcher.html","../../../packages/components/app-switcher/app-switcher.module.ts","../../../packages/components/app-switcher/koobiq-components-app-switcher.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const kbqAppSwitcherAnimations: {\n    readonly state: AnimationTriggerMetadata;\n} = {\n    /** Animation that transitions a tooltip in and out. */\n    state: trigger('state', [\n        state(\n            'initial',\n            style({\n                opacity: 0,\n                transform: 'scale(1, 0.8)'\n            })\n        ),\n        transition(\n            '* => visible',\n            animate(\n                `120ms ${KbqAnimationCurves.DecelerationCurve}`,\n                style({\n                    opacity: 1,\n                    transform: 'scale(1, 1)'\n                })\n            )\n        ),\n        transition('* => hidden', animate(`${KbqAnimationDurations.Rapid} linear`, style({ opacity: 0 })))\n    ])\n};\n","import { NgOptimizedImage } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n    selector: '[kbq-app-switcher-dropdown-app]',\n    imports: [KbqIcon, NgOptimizedImage],\n    template: `\n        <i class=\"kbq kbq-icon\" [className]=\"\"></i>\n        @if (app.icon) {\n            <span class=\"kbq-app-switcher-dropdown-app__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n        } @else if (app.iconSrc) {\n            <span class=\"kbq-app-switcher-dropdown-app__icon\">\n                <img alt=\"{{ app.type }}\" width=\"24\" height=\"24\" [ngSrc]=\"app.iconSrc\" />\n            </span>\n        }\n\n        <div class=\"kbq-app-switcher-dropdown-app__container\">\n            <div class=\"kbq-app-switcher-dropdown-app__name\">\n                <span>{{ app.name }}</span>\n\n                @if (isNested) {\n                    <i\n                        kbq-icon=\"kbq-chevron-right-s_16\"\n                        class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n                        [color]=\"componentColors.ContrastFade\"\n                    ></i>\n                }\n            </div>\n            @if (app.caption) {\n                <div class=\"kbq-app-switcher-dropdown-app__caption\">{{ app.caption }}</div>\n            }\n        </div>\n    `,\n    styleUrls: ['app-switcher-dropdown-app.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqAppSwitcherDropdownApp',\n    host: {\n        class: 'kbq-app-switcher-dropdown-app',\n        '[class.kbq-dropdown-item]': 'false'\n    },\n    providers: [\n        { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownApp },\n        { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownApp }\n    ]\n})\nexport class KbqAppSwitcherDropdownApp extends KbqDropdownItem {\n    private sanitizer = inject(DomSanitizer);\n\n    @Input('kbq-app-switcher-dropdown-app') app: KbqAppSwitcherApp;\n\n    getIcon(icon: string | null) {\n        return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n    }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherSite } from './app-switcher';\n\n/** @docs-private */\n@Component({\n    selector: '[kbq-app-switcher-dropdown-site]',\n    imports: [\n        KbqIcon,\n        KbqBadgeModule\n    ],\n    template: `\n        <span class=\"kbq-app-switcher-dropdown-site__name\">{{ site.name }}</span>\n\n        @if (site.status) {\n            <kbq-badge class=\"kbq-app-switcher-dropdown-site__badge\" [compact]=\"true\">{{ site.status }}</kbq-badge>\n        }\n\n        @if (isNested) {\n            <i\n                kbq-icon=\"kbq-chevron-right-s_16\"\n                class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n                [color]=\"componentColors.ContrastFade\"\n            ></i>\n        }\n    `,\n    styleUrls: ['app-switcher-dropdown-site.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqAppSwitcherDropdownSite',\n    host: {\n        class: 'kbq-app-switcher-dropdown-site',\n        '[class.kbq-dropdown-item]': 'false'\n    },\n    providers: [\n        { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownSite },\n        { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownSite }\n    ]\n})\nexport class KbqAppSwitcherDropdownSite extends KbqDropdownItem {\n    @Input('kbq-app-switcher-dropdown-site') site: KbqAppSwitcherSite;\n}\n","import { NgOptimizedImage } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n    selector: '[kbq-app-switcher-list-item]',\n    imports: [\n        KbqIconModule,\n        NgOptimizedImage\n    ],\n    template: `\n        @if (app.icon) {\n            <span class=\"kbq-app-switcher-list-item__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n        } @else if (app.iconSrc) {\n            <span class=\"kbq-app-switcher-list-item__icon\">\n                <img alt=\"{{ app.type }}\" width=\"24\" height=\"24\" [ngSrc]=\"app.iconSrc\" />\n            </span>\n        }\n\n        <div class=\"kbq-app-switcher-list-item__container\">\n            <div class=\"kbq-app-switcher-list-item__name\">{{ app.name }}</div>\n            @if (app.caption) {\n                <div class=\"kbq-app-switcher-list-item__caption\">{{ app.caption }}</div>\n            }\n        </div>\n\n        @if (toggle) {\n            <div class=\"kbq-app-switcher-list-item__toggle\" [class.kbq-expanded]=\"!collapsed\">\n                <i kbq-icon=\"kbq-chevron-down-s_16\" [color]=\"'contrast-fade'\"></i>\n            </div>\n        }\n    `,\n    styleUrls: ['kbq-app-switcher-list-item.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqAppSwitcherApp',\n    host: {\n        class: 'kbq-app-switcher-list-item',\n        '[class.kbq-dropdown-item]': 'false',\n        '(click)': 'clickHandler($event)'\n    },\n    providers: [\n        { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherListItem },\n        { provide: KbqDropdownItem, useExisting: KbqAppSwitcherListItem }\n    ]\n})\nexport class KbqAppSwitcherListItem extends KbqDropdownItem {\n    private sanitizer = inject(DomSanitizer);\n\n    @Input() app: KbqAppSwitcherApp;\n    @Input({ transform: booleanAttribute }) toggle = false;\n    @Input({ transform: booleanAttribute }) collapsed: boolean = false;\n\n    clickHandler(event: MouseEvent) {\n        if (this.toggle) {\n            event.stopPropagation();\n            event.preventDefault();\n\n            this.collapsed = !this.collapsed;\n        }\n    }\n\n    getIcon(icon: string | null) {\n        return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n    }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n    CdkScrollable,\n    FlexibleConnectedPositionStrategy,\n    Overlay,\n    OverlayConfig,\n    ScrollStrategy\n} from '@angular/cdk/overlay';\n\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    Directive,\n    EventEmitter,\n    InjectionToken,\n    Input,\n    OnInit,\n    Output,\n    TemplateRef,\n    Type,\n    ViewChild,\n    ViewEncapsulation,\n    booleanAttribute,\n    inject,\n    numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport {\n    KBQ_LOCALE_SERVICE,\n    KbqOptionModule,\n    KbqPopUp,\n    KbqPopUpPlacementValues,\n    KbqPopUpSizeValues,\n    KbqPopUpTrigger,\n    POSITION_TO_CSS_MAP,\n    PopUpPlacements,\n    PopUpSizes,\n    PopUpTriggers,\n    applyPopupMargins,\n    ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { defaultOffsetYWithArrow } from '@koobiq/components/popover';\nimport { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { Subscription, merge } from 'rxjs';\nimport { kbqAppSwitcherAnimations } from './app-switcher-animations';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\nexport interface KbqAppSwitcherApp {\n    name: string;\n    id: string | number;\n    type?: string | number;\n    /** Inline SVG markup for the application icon. Use this for SVG icons that should be rendered directly in the DOM. */\n    icon?: string;\n    /** Path to the icon file (URL or relative path). */\n    iconSrc?: string;\n    caption?: string;\n    aliases?: KbqAppSwitcherApp[];\n    link?: string;\n}\n\nexport interface KbqAppSwitcherSite {\n    name: string;\n    id: string | number;\n    status?: string;\n    /** Inline SVG markup for the site icon. Use this for SVG icons that should be rendered directly in the DOM. */\n    icon?: string;\n    /** Path to the icon file (URL or relative path). */\n    iconSrc?: string;\n    apps: KbqAppSwitcherApp[];\n}\n\n/** @docs-private */\nexport function defaultGroupBy(\n    app: KbqAppSwitcherApp,\n    groups: Record<string, KbqAppSwitcherApp>,\n    untyped: KbqAppSwitcherApp[]\n) {\n    if (!app.type) {\n        untyped.push(app);\n    } else {\n        const appType = app.type.toString();\n\n        if (groups[appType]) {\n            groups[appType].aliases!.push(app);\n        } else {\n            groups[appType] = {\n                name: appType,\n                aliases: [app],\n                icon: app.icon,\n                iconSrc: app.iconSrc,\n                id: ''\n            };\n        }\n    }\n}\n\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH: number = 7;\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING: number = 3;\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n    'kbq-app-switcher-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqAppSwitcherScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n    return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n    provide: KBQ_APP_SWITCHER_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: kbqAppSwitcherScrollStrategyFactory\n};\n\n/** default configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION = ruRULocaleData.appSwitcher;\n\n/** Injection Token for providing configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_CONFIGURATION = new InjectionToken('KbqAppSwitcherConfiguration');\n\n/** @docs-private */\n@Component({\n    selector: 'kbq-app-switcher',\n    imports: [\n        FormsModule,\n        ReactiveFormsModule,\n        KbqFormFieldModule,\n        KbqInputModule,\n        KbqIconModule,\n        KbqDividerModule,\n        KbqBadgeModule,\n        KbqDropdownModule,\n        KbqScrollbarModule,\n        KbqOptionModule,\n        KbqAppSwitcherDropdownApp,\n        KbqAppSwitcherDropdownSite,\n        KbqAppSwitcherListItem\n    ],\n    templateUrl: './app-switcher.html',\n    styleUrls: ['./app-switcher.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: false,\n    host: {\n        class: 'kbq-app-switcher'\n    },\n    animations: [kbqAppSwitcherAnimations.state]\n})\nexport class KbqAppSwitcherComponent extends KbqPopUp implements AfterViewInit {\n    /** @docs-private */\n    protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n    readonly externalConfiguration = inject(KBQ_APP_SWITCHER_CONFIGURATION, { optional: true });\n\n    configuration;\n\n    /** localized data\n     * @docs-private */\n    get localeData() {\n        return this.configuration;\n    }\n\n    /** @docs-private */\n    readonly searchControl = new FormControl('');\n\n    /** @docs-private */\n    filteredSites: KbqAppSwitcherSite[];\n\n    /** @docs-private */\n    prefix = 'kbq-app-switcher';\n\n    /** @docs-private */\n    @Input() trigger: KbqAppSwitcherTrigger;\n\n    /** @docs-private */\n    isTrapFocus: boolean = false;\n\n    /** @docs-private */\n    protected activeSite: KbqAppSwitcherSite;\n    /** @docs-private */\n    protected activeApp: KbqAppSwitcherApp;\n\n    /** @docs-private */\n    @ViewChild(KbqInput) input: KbqInput;\n    /** @docs-private */\n    @ViewChild('otherSites') otherSites: KbqDropdownTrigger;\n\n    constructor() {\n        super();\n\n        this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n        if (!this.localeService) {\n            this.initDefaultParams();\n        }\n    }\n\n    ngAfterViewInit() {\n        if (this.input) {\n            this.input.focus();\n        }\n\n        this.visibleChange.subscribe((state) => {\n            if (this.offset !== null && state) {\n                applyPopupMargins(\n                    this.renderer,\n                    this.elementRef.nativeElement,\n                    this.prefix,\n                    `${this.offset!.toString()}px`\n                );\n            }\n        });\n\n        this.searchControl.valueChanges.subscribe((value) => (this.filteredSites = this.filterSites(value)));\n    }\n\n    /** @docs-private */\n    updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n        super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n    }\n\n    /** @docs-private */\n    updateTrapFocus(isTrapFocus: boolean): void {\n        this.isTrapFocus = isTrapFocus;\n    }\n\n    /** @docs-private */\n    escapeHandler() {\n        this.hide(0);\n    }\n\n    /** @docs-private */\n    selectAppInSite(site: KbqAppSwitcherSite, app: KbqAppSwitcherApp) {\n        this.trigger.selectedSite = site;\n        this.trigger.selectedApp = app;\n\n        this.trigger.selectedSiteChange.emit(site);\n        this.trigger.selectedAppChange.emit(app);\n    }\n\n    private filterSites(query: string | null): KbqAppSwitcherSite[] {\n        const filteredSites = structuredClone(this.trigger.originalSites);\n\n        return query\n            ? filteredSites.filter((site) => {\n                  const filteredApps = site.apps.filter((app) => app.name.toLowerCase().includes(query.toLowerCase()));\n\n                  if (filteredApps.length) {\n                      site.apps = filteredApps;\n\n                      return true;\n                  }\n\n                  return false;\n              })\n            : filteredSites;\n    }\n\n    private updateLocaleParams = () => {\n        this.configuration = this.externalConfiguration || this.localeService?.getParams('appSwitcher');\n\n        this.changeDetectorRef.markForCheck();\n    };\n\n    private initDefaultParams() {\n        this.configuration = KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION;\n    }\n}\n\n@Directive({\n    selector: '[kbqAppSwitcher]',\n    exportAs: 'kbqAppSwitcher',\n    host: {\n        '[class.kbq-app-switcher_open]': 'isOpen',\n        '[class.kbq-active]': 'hasClickTrigger && isOpen',\n        '(keydown)': 'keydownHandler($event)',\n        '(touchend)': 'touchendHandler()'\n    }\n})\nexport class KbqAppSwitcherTrigger\n    extends KbqPopUpTrigger<KbqAppSwitcherComponent>\n    implements AfterContentInit, OnInit\n{\n    /** @docs-private */\n    protected scrollStrategy: () => ScrollStrategy = inject(KBQ_APP_SWITCHER_SCROLL_STRATEGY);\n\n    // not used\n    /** @docs-private */\n    arrow: boolean = false;\n    /** @docs-private */\n    customClass: string;\n    /** @docs-private */\n    private hasBackdrop: boolean = false;\n    /** @docs-private */\n    private size: KbqPopUpSizeValues = PopUpSizes.Medium;\n    /** @docs-private */\n    content: string | TemplateRef<any>;\n    /** @docs-private */\n    header: string | TemplateRef<any>;\n    /** @docs-private */\n    footer: string | TemplateRef<any>;\n    /** @docs-private */\n    private closeOnScroll: null;\n\n    /** Whether search is used or not */\n    get withSearch(): boolean {\n        return this.appsCount > KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH;\n    }\n\n    /** Number of applications to choose from\n     * @docs-private */\n    get appsCount(): number {\n        return this.originalSites.reduce((acc, site) => acc + site.apps.length, 0);\n    }\n\n    /** Whether the sites are used or not\n     * @docs-private */\n    get sitesMode(): boolean {\n        return this.originalSites.length > 1;\n    }\n\n    /** @docs-private */\n    get currentApps() {\n        return this.sitesMode ? this.selectedSite.apps : this._parsedApps;\n    }\n\n    /** Selected application */\n    @Input() selectedApp: KbqAppSwitcherApp;\n\n    /** Placement of popUp */\n    @Input('kbqAppSwitcherPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.BottomLeft;\n\n    /** Class that will be used in the background */\n    @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n    /** Offset of popUp */\n    @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetYWithArrow;\n\n    /** Array of sites */\n    @Input()\n    get sites(): KbqAppSwitcherSite[] {\n        return this._parsedSites;\n    }\n\n    set sites(value: KbqAppSwitcherSite[]) {\n        this.originalSites = value;\n\n        if (this.originalSites.length === 1) {\n            this._parsedApps = this.makeGroupsForApps(\n                this.originalSites[0].apps,\n                KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING\n            );\n        } else {\n            this._parsedSites = [];\n\n            value.forEach((site: KbqAppSwitcherSite) => {\n                const newSite: KbqAppSwitcherSite = { ...site, apps: [] };\n\n                newSite.apps = this.makeGroupsForApps(site.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n                this._parsedSites.push(newSite);\n            });\n        }\n    }\n\n    private _parsedSites: KbqAppSwitcherSite[];\n\n    /**\n     * @deprecated Will be removed in next major release, use `sites` with one element instead.\n     */\n    @Input()\n    get apps(): KbqAppSwitcherApp[] {\n        return this._parsedApps;\n    }\n\n    set apps(apps: KbqAppSwitcherApp[]) {\n        this.originalApps = apps;\n\n        this._parsedApps = this.makeGroupsForApps(this.originalApps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n    }\n\n    private makeGroupsForApps(apps: KbqAppSwitcherApp[], minAppsForGrouping: number): KbqAppSwitcherApp[] {\n        const groups: Record<string, KbqAppSwitcherApp> = {};\n        const untyped: KbqAppSwitcherApp[] = [];\n        const groupedApps: KbqAppSwitcherApp[] = [];\n\n        apps.forEach((app) => {\n            this.groupBy(app, groups, untyped);\n        });\n\n        Object.values(groups).forEach((group) => {\n            if (group.aliases && group.aliases.length > minAppsForGrouping) {\n                groupedApps.push(group);\n            } else {\n                untyped.push(...group.aliases!);\n            }\n        });\n\n        groupedApps.push(...untyped);\n\n        return groupedApps;\n    }\n\n    private _parsedApps: KbqAppSwitcherApp[];\n\n    /** Function to group the apps by type. The first argument is an app object with type.\n     * The second is a groups object and third is an array for untyped apps */\n    @Input()\n    get groupBy() {\n        return this._groupBy;\n    }\n\n    set groupBy(\n        fn: (app: KbqAppSwitcherApp, groups: Record<string, KbqAppSwitcherApp>, untyped: KbqAppSwitcherApp[]) => void\n    ) {\n        if (typeof fn !== 'function') {\n            throw new Error('The argument must be a function');\n        }\n\n        this._groupBy = fn;\n    }\n\n    private _groupBy = defaultGroupBy;\n\n    /** Selected site */\n    @Input()\n    get selectedSite(): KbqAppSwitcherSite {\n        return this._parsedSelectedSite;\n    }\n\n    set selectedSite(value: KbqAppSwitcherSite) {\n        const originValue = this.originalSites.find((site) => value.id === site.id) as KbqAppSwitcherSite;\n        const newSite: KbqAppSwitcherSite = { ...originValue, apps: [] };\n\n        newSite.apps = this.makeGroupsForApps(originValue.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n        this._parsedSelectedSite = newSite;\n    }\n\n    private _parsedSelectedSite: KbqAppSwitcherSite;\n\n    /** Whether the trigger is disabled. */\n    @Input({ transform: booleanAttribute })\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(value) {\n        this._disabled = coerceBooleanProperty(value);\n\n        if (this._disabled) {\n            this.hide();\n        }\n    }\n\n    /** @docs-private */\n    get hasClickTrigger(): boolean {\n        return this.trigger.includes(PopUpTriggers.Click);\n    }\n\n    /** Emits a change event whenever the placement state changes. */\n    @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n    /** Emits a change event whenever the visible state changes. */\n    @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n    /** @docs-private */\n    @Output() readonly selectedSiteChange = new EventEmitter<KbqAppSwitcherSite>();\n    /** @docs-private */\n    @Output() readonly selectedAppChange = new EventEmitter<KbqAppSwitcherApp>();\n\n    /** @docs-private */\n    trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n    /** @docs-private */\n    originalSites: KbqAppSwitcherSite[];\n    /** @docs-private */\n    originalApps: KbqAppSwitcherApp[];\n\n    /** @docs-private */\n    protected originSelector = '.kbq-app-switcher';\n\n    /** @docs-private */\n    protected get overlayConfig(): OverlayConfig {\n        return {\n            panelClass: 'kbq-app-switcher__panel',\n            hasBackdrop: this.hasBackdrop,\n            backdropClass: this.backdropClass\n        };\n    }\n\n    /** @docs-private */\n    protected preventClosingByInnerScrollSubscription: Subscription;\n\n    ngOnInit(): void {\n        super.ngOnInit();\n\n        this.scrollable\n            ?.elementScrolled()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(this.hideIfNotInViewPort);\n    }\n\n    ngAfterContentInit(): void {\n        if (this.closeOnScroll === null) {\n            this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable | void) => {\n                if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup')) return;\n\n                const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();\n                const childRects = this.elementRef.nativeElement.getBoundingClientRect();\n\n                if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n            if (visible) {\n                // eslint-disable-next-line rxjs/no-nested-subscribe\n                this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n                    if (event['scrollDispatcher']) {\n                        event['kbqPopoverPreventHide'] = true;\n                        event['type'] = 'click';\n                    }\n                });\n            } else {\n                this.preventClosingByInnerScrollSubscription.unsubscribe();\n                this.focus();\n            }\n        });\n    }\n\n    /** @docs-private */\n    updateData() {\n        if (!this.instance) return;\n\n        this.instance.header = this.header;\n        this.instance.content = this.content;\n        this.instance.arrow = this.arrow;\n        this.instance.offset = this.offset;\n        this.instance.footer = this.footer;\n\n        this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n\n        if (this.isOpen) {\n            this.updatePosition(true);\n        }\n    }\n\n    /** Updates the current position.\n     * @docs-private */\n    updatePosition(reapplyPosition: boolean = false) {\n        this.overlayRef = this.createOverlay();\n\n        const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n            .withPositions(this.getAdjustedPositions())\n            .withPush(true);\n\n        if (reapplyPosition) {\n            setTimeout(() => position.reapplyLastPosition());\n        }\n    }\n\n    /** @docs-private */\n    getOverlayHandleComponentType(): Type<KbqAppSwitcherComponent> {\n        return KbqAppSwitcherComponent;\n    }\n\n    /** @docs-private */\n    updateClassMap(newPlacement: string = this.placement) {\n        if (!this.instance) return;\n\n        this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n        this.instance.markForCheck();\n    }\n\n    /** @docs-private */\n    closingActions() {\n        return merge(\n            this.overlayRef!.outsidePointerEvents(),\n            this.overlayRef!.backdropClick(),\n            this.scrollDispatcher.scrolled()\n        );\n    }\n\n    private hideIfNotInViewPort = () => {\n        if (!this.scrollable) return;\n\n        const rect = this.elementRef.nativeElement.getBoundingClientRect();\n        const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();\n\n        if (\n            !(\n                rect.bottom >= containerRect.top &&\n                rect.right >= containerRect.left &&\n                rect.top <= containerRect.bottom &&\n                rect.left <= containerRect.right\n            )\n        ) {\n            this.hide();\n        }\n    };\n}\n","@if (trigger.withSearch) {\n    <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites?.close()\">\n        <kbq-form-field noBorders>\n            <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n            <input\n                placeholder=\"{{ localeData.searchPlaceholder }}\"\n                autocomplete=\"off\"\n                kbqInput\n                [formControl]=\"searchControl\"\n                (keydown.escape)=\"escapeHandler()\"\n            />\n            <kbq-cleaner />\n        </kbq-form-field>\n    </div>\n\n    <kbq-divider />\n}\n\n<div kbq-scrollbar>\n    @if (!searchControl.getRawValue()) {\n        <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites?.close()\">\n            @if (trigger.sitesMode) {\n                <div class=\"kbq-app-switcher-group-header\">\n                    <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n                    @if (trigger.selectedSite?.status) {\n                        <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n                            {{ trigger.selectedSite.status }}\n                        </kbq-badge>\n                    }\n                </div>\n            }\n\n            <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n                <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n                    @for (app of trigger.currentApps; track app) {\n                        @if (!app.aliases) {\n                            <a\n                                href=\"{{ app.link }}\"\n                                kbq-app-switcher-list-item\n                                [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n                                [app]=\"app\"\n                                [toggle]=\"!!app.aliases\"\n                            ></a>\n                        } @else {\n                            <div\n                                #appSwitcherApp=\"kbqAppSwitcherApp\"\n                                kbq-app-switcher-list-item\n                                [app]=\"app\"\n                                [toggle]=\"!!app.aliases\"\n                            ></div>\n\n                            @if (!appSwitcherApp.collapsed) {\n                                @for (alias of app.aliases; track alias) {\n                                    <a\n                                        href=\"{{ alias.link }}\"\n                                        class=\"kbq-app-switcher-site_nested\"\n                                        kbq-app-switcher-list-item\n                                        [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n                                        [app]=\"alias\"\n                                    ></a>\n                                }\n                            }\n                        }\n                    }\n                </div>\n            </kbq-dropdown>\n        </div>\n\n        @if (trigger.sitesMode) {\n            <kbq-divider />\n\n            <div class=\"kbq-app-switcher__sites-container\">\n                <div class=\"kbq-app-switcher-group-header\">\n                    <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n                </div>\n\n                <kbq-dropdown #otherSites=\"kbqDropdown\">\n                    <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n                        @for (site of trigger.sites; track site) {\n                            @if (site.id !== trigger.selectedSite?.id) {\n                                <div\n                                    [kbq-app-switcher-dropdown-site]=\"site\"\n                                    [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n                                    [offsetX]=\"0\"\n                                    (mouseenter)=\"activeSite = site\"\n                                ></div>\n                            }\n                        }\n                    </div>\n                </kbq-dropdown>\n            </div>\n\n            <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n                @for (app of activeSite?.apps; track app) {\n                    @if (app.aliases) {\n                        <div\n                            #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n                            [kbq-app-switcher-dropdown-app]=\"app\"\n                            [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n                            [offsetX]=\"0\"\n                            [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n                            (mouseenter)=\"activeApp = app\"\n                        ></div>\n                    } @else {\n                        <a\n                            href=\"{{ app.link }}\"\n                            [kbq-app-switcher-dropdown-app]=\"app\"\n                            (click)=\"selectAppInSite(activeSite, app)\"\n                        ></a>\n                    }\n                }\n            </kbq-dropdown>\n\n            <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n                @for (alias of activeApp?.aliases; track alias) {\n                    <a\n                        href=\"{{ alias.link }}\"\n                        [kbq-app-switcher-dropdown-app]=\"alias\"\n                        (click)=\"selectAppInSite(activeSite, alias)\"\n                    ></a>\n                }\n            </kbq-dropdown>\n        }\n    } @else {\n        <div class=\"kbq-app-switcher__search-result\">\n            <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n                <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n                    @for (site of filteredSites; track site) {\n                        @if (trigger.sitesMode && site.apps) {\n                            <kbq-optgroup label=\"{{ site.name }}\" />\n                        }\n\n                        @for (app of site.apps; track app) {\n                            <a href=\"{{ app.link }}\" kbq-app-switcher-list-item [app]=\"app\"></a>\n                        }\n                    } @empty {\n                        <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n                    }\n                </div>\n            </kbq-dropdown>\n        </div>\n    }\n</div>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n    KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n    KbqAppSwitcherComponent,\n    KbqAppSwitcherTrigger\n} from './app-switcher';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\n@NgModule({\n    imports: [\n        KbqAppSwitcherComponent,\n        KbqAppSwitcherTrigger,\n        KbqAppSwitcherListItem,\n        KbqAppSwitcherDropdownApp,\n        KbqAppSwitcherDropdownSite\n    ],\n    exports: [\n        KbqAppSwitcherTrigger\n    ],\n    providers: [\n        KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n        { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n        { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }\n    ]\n})\nexport class KbqAppSwitcherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i6"],"mappings":"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"}