{"version":3,"file":"mosaic-design-infosec-components-components-notifications-center.mjs","sources":["../../../libs/components/notifications-center/src/lib/types/action-type.ts","../../../libs/components/notifications-center/src/lib/types/application-type.ts","../../../libs/components/notifications-center/src/lib/types/notification-kind.ts","../../../libs/components/notifications-center/src/lib/types/notification-status.ts","../../../libs/components/notifications-center/src/lib/types/templated-notification.ts","../../../libs/components/notifications-center/src/lib/utils/action-callback-event/action-callback-event.ts","../../../libs/components/notifications-center/src/lib/components/notification/notification.component.ts","../../../libs/components/notifications-center/src/lib/components/notification/notification.component.html","../../../libs/components/notifications-center/src/lib/components/notification-skeleton/notification-skeleton.component.ts","../../../libs/components/notifications-center/src/lib/components/notification-skeleton/notification-skeleton.component.html","../../../libs/components/notifications-center/src/lib/components/notifications-group/notifications-group.component.ts","../../../libs/components/notifications-center/src/lib/components/notifications-group/notifications-group.component.html","../../../libs/components/notifications-center/src/lib/components/notifications-center-header/notifications-center-header.component.ts","../../../libs/components/notifications-center/src/lib/components/notifications-center-header/notifications-center-header.component.html","../../../libs/components/notifications-center/src/lib/constants/behavior-config.ts","../../../libs/components/notifications-center/src/lib/constants/content.ts","../../../libs/components/notifications-center/src/lib/constants/groups-provider.ts","../../../libs/components/notifications-center/src/lib/constants/i18n.ts","../../../libs/components/notifications-center/src/lib/constants/options.ts","../../../libs/components/notifications-center/src/lib/components/notifications-center-options/notifications-center-options.component.ts","../../../libs/components/notifications-center/src/lib/components/notifications-center-options/notifications-center-options.component.html","../../../libs/components/notifications-center/src/lib/components/notifications-loading-error/notifications-loading-error.component.ts","../../../libs/components/notifications-center/src/lib/components/notifications-loading-error/notifications-loading-error.component.html","../../../libs/components/notifications-center/src/lib/components/notifications-empty-message/notifications-empty-message.component.ts","../../../libs/components/notifications-center/src/lib/components/notifications-empty-message/notifications-empty-message.component.html","../../../libs/components/notifications-center/src/lib/services/notifications-center.service.ts","../../../libs/components/notifications-center/src/lib/containers/notifications-center-content/notifications-center-content.component.ts","../../../libs/components/notifications-center/src/lib/containers/notifications-center-content/notifications-center-content.component.html","../../../libs/components/notifications-center/src/lib/containers/notifications-center/notifications-center.component.ts","../../../libs/components/notifications-center/src/lib/containers/notifications-center/notifications-center.component.html","../../../libs/components/notifications-center/src/lib/mappers/templated-notification.mapper.ts","../../../libs/components/notifications-center/src/lib/notifications-center.module.ts","../../../libs/components/notifications-center/mosaic-design-infosec-components-components-notifications-center.ts"],"sourcesContent":["export enum ActionType {\n    Link = 'link',\n    Callback = 'callback'\n}\n","export enum ApplicationType {\n    ALL = '',\n    MPX = 'PT.MPSIEM',\n    PTKB = 'PT.PTKB',\n    MC = 'PTMC'\n}\n","export enum NotificationKind {\n    Success = 'success',\n    Info = 'info',\n    Warning = 'warning',\n    Error = 'error'\n}\n","export enum NotificationStatus {\n    New = 'new',\n    Read = 'read'\n}\n","import { Notification } from './notification';\nimport { NotificationKind } from './notification-kind';\nimport { TemplatedNotificationAction } from './templated-notification-action';\n\nexport enum TemplatedNotificationMessageType {\n    Empty = 'empty',\n    Text = 'text',\n    Multiline = 'multiline'\n}\n\nexport interface GenericTemplatedNotification<T> extends Notification {\n    kind?: NotificationKind;\n    title: string;\n    message: T;\n    referrer?: string;\n    actions: TemplatedNotificationAction[];\n    messageType: string;\n}\n\nexport interface EmptyTemplatedNotification extends GenericTemplatedNotification<unknown> {\n    messageType: TemplatedNotificationMessageType.Empty;\n}\n\nexport interface TextTemplatedNotification extends GenericTemplatedNotification<string> {\n    messageType: TemplatedNotificationMessageType.Text;\n}\n\nexport interface MultilineTemplatedNotification extends GenericTemplatedNotification<string[]> {\n    messageType: TemplatedNotificationMessageType.Multiline;\n}\n\nexport function isEmptyTemplatedNotification(\n    notification: GenericTemplatedNotification<unknown>\n): notification is EmptyTemplatedNotification {\n    return notification.messageType === TemplatedNotificationMessageType.Empty;\n}\n\nexport function isTextTemplatedNotification(\n    notification: GenericTemplatedNotification<string>\n): notification is TextTemplatedNotification {\n    return notification.messageType === TemplatedNotificationMessageType.Text;\n}\n\nexport function isMultilineTemplatedNotification(\n    notification: GenericTemplatedNotification<string[]>\n): notification is MultilineTemplatedNotification {\n    return notification.messageType === TemplatedNotificationMessageType.Multiline;\n}\n\nexport type TemplatedNotification =\n    | GenericTemplatedNotification<unknown>\n    | TextTemplatedNotification\n    | MultilineTemplatedNotification;\n","import {\n    NotificationTemplateActionCallbackEvent,\n    TemplatedNotification,\n    TemplatedNotificationAction\n} from '../../types';\n\nexport function createActionCallbackEvent(\n    notification: TemplatedNotification,\n    action: TemplatedNotificationAction\n): NotificationTemplateActionCallbackEvent {\n    return {\n        id: `${action.id}-${action.type}-${notification.id}-${notification.type}-${new Date().getTime()}`,\n        notification,\n        action\n    };\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { Observable, of, takeUntil } from 'rxjs';\n\nimport { DestroyService, HotKeyService } from '@mosaic-design/infosec-components/services';\nimport { isNonNullable, isVisibleInViewport$ } from '@mosaic-design/infosec-components/utils';\n\nimport {\n    ActionType,\n    isMultilineTemplatedNotification,\n    isTextTemplatedNotification,\n    NotificationActionTextTemplateContext,\n    NotificationFocus,\n    NotificationKind,\n    NotificationsCenterBehaviorConfig,\n    NotificationStatus,\n    NotificationTemplateActionCallbackEvent,\n    NotificationTextTemplateContext,\n    NotificationTitleTemplateContext,\n    TemplatedNotification,\n    TemplatedNotificationAction\n} from '../../types';\nimport { createActionCallbackEvent } from '../../utils';\n\n@Component({\n    selector: 'ic-notification',\n    templateUrl: './notification.component.html',\n    styleUrls: ['./notification.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [DestroyService]\n})\nexport class NotificationComponent implements AfterViewInit, OnDestroy {\n    protected readonly KbqButtonStyles = KbqButtonStyles;\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly NotificationStatus = NotificationStatus;\n    protected readonly NotificationKind = NotificationKind;\n    protected readonly ActionType = ActionType;\n\n    isTextTemplatedNotification = isTextTemplatedNotification;\n    isMultilineTemplatedNotification = isMultilineTemplatedNotification;\n\n    @Input() notification!: TemplatedNotification;\n    @Input() behaviorConfig!: NotificationsCenterBehaviorConfig;\n    @Input() notificationTitleTemplate: TemplateRef<NotificationTitleTemplateContext> | undefined;\n    @Input() notificationTextTemplate: TemplateRef<NotificationTextTemplateContext> | undefined;\n    @Input() notificationActionTextTemplate: TemplateRef<NotificationActionTextTemplateContext> | undefined;\n    @Input() isPushNotification = false;\n\n    @Input() set focus(value: NotificationFocus | undefined) {\n        this._focus = value?.isFocused ?? false;\n\n        if (isNonNullable(value) && value.isFocused && this.notificationContainerRef) {\n            this.focusMonitor.focusVia(this.notificationContainerRef, 'keyboard', {\n                preventScroll: value.preventScroll\n            });\n        }\n    }\n\n    @Output() notificationLinkClick = new EventEmitter<TemplatedNotification>();\n    @Output() actionCallback = new EventEmitter<NotificationTemplateActionCallbackEvent>();\n    @Output() removeNotification = new EventEmitter<string>();\n    @Output() notificationClick = new EventEmitter<TemplatedNotification>();\n    @Output() focusChange = new EventEmitter<NotificationFocus>();\n\n    @ViewChild('notificationContainer') notificationContainerRef: ElementRef<HTMLElement> | undefined;\n    @ViewChildren('notificationLink') notificationLinkRefs: QueryList<ElementRef<HTMLElement>> | undefined;\n\n    private _focus = false;\n\n    constructor(\n        private focusMonitor: FocusMonitor,\n        private hotKeyService: HotKeyService,\n        private destroyed$: DestroyService\n    ) {}\n\n    isVisibleInViewport$(options: IntersectionObserverInit): Observable<boolean> {\n        const element = this.notificationContainerRef?.nativeElement;\n\n        return element ? isVisibleInViewport$(element, options) : of(false);\n    }\n\n    trackByActionId(index: number, action: TemplatedNotificationAction): string {\n        return action.id;\n    }\n\n    onActionLinkClick(event: Event): void {\n        event.stopPropagation();\n        this.notificationLinkClick.emit(this.notification);\n    }\n\n    onActionCallbackLinkClick(event: Event, action: TemplatedNotificationAction): void {\n        event.stopPropagation();\n        this.actionCallback.emit(createActionCallbackEvent(this.notification, action));\n    }\n\n    onRemoveClick(event: Event): void {\n        event.stopPropagation();\n        this.removeNotification.emit(this.notification.id);\n    }\n\n    ngAfterViewInit(): void {\n        const notificationContainerElement = this.notificationContainerRef?.nativeElement;\n        if (notificationContainerElement) {\n            this.focusMonitor\n                .monitor(notificationContainerElement, true)\n                .pipe(takeUntil(this.destroyed$))\n                .subscribe((origin) => {\n                    const isFocused = !!origin;\n                    if (this._focus !== isFocused) {\n                        this._focus = !!origin;\n                        this.focusChange.emit({\n                            isFocused: this._focus\n                        });\n                    }\n                });\n\n            this.hotKeyService.registerHotKey({\n                id: this.notification.id,\n                target: notificationContainerElement,\n                keyCodes: ['Space', 'Enter', 'NumpadEnter'],\n                stopEvent: true,\n                callback: () => this.notificationClick.emit(this.notification)\n            });\n        }\n\n        this.hotKeyService.registerHotKey({\n            id: this.notification.id,\n            keyCodes: ['Delete'],\n            stopEvent: true,\n            callback: () => {\n                if (this._focus) {\n                    this.removeNotification.emit(this.notification.id);\n                }\n            }\n        });\n\n        this.notificationLinkRefs?.forEach((link) => {\n            this.hotKeyService.registerHotKey({\n                target: link.nativeElement,\n                keyCodes: ['Space', 'Enter', 'NumpadEnter'],\n                callback: () => link.nativeElement.click(),\n                stopEvent: true\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        if (this.notificationContainerRef?.nativeElement) {\n            this.focusMonitor.stopMonitoring(this.notificationContainerRef.nativeElement);\n        }\n\n        this.hotKeyService.unregisterHotKey(this.notification.id);\n        this.notificationLinkRefs?.forEach((link) => {\n            this.hotKeyService.unregisterHotKey(link.nativeElement);\n        });\n    }\n\n    onClick(event: MouseEvent): void {\n        this.notificationClick.emit(this.notification);\n        event.stopPropagation();\n    }\n}\n","<div\n    #notificationContainer\n    class=\"ic-notification\"\n    [ngClass]=\"{\n        'ic-notification_new': notification.status === NotificationStatus.New && !isPushNotification\n    }\"\n    tabIndex=\"0\"\n    (click)=\"onClick($event)\"\n>\n    <i\n        kbq-icon\n        class=\"ic-notification__icon\"\n        [ngClass]=\"{\n            'ic-notification__icon_success kbq-check-circle_16': notification.kind === NotificationKind.Success,\n            'ic-notification__icon_error': notification.kind === NotificationKind.Error,\n            'ic-notification__icon_info kbq-info-circle_16': notification.kind === NotificationKind.Info,\n            'ic-notification__icon_warning': notification.kind === NotificationKind.Warning,\n            'kbq-exclamation-triangle_16':\n                notification.kind === NotificationKind.Error || notification.kind === NotificationKind.Warning\n        }\"\n    ></i>\n\n    <div class=\"ic-notification__content\">\n        <div *ngIf=\"notification.title\" class=\"ic-notification__title\">\n            <ng-template\n                [ngTemplateOutlet]=\"notificationTitleTemplate || defaultNotificationTitleTemplate\"\n                [ngTemplateOutletContext]=\"{ notification: notification }\"\n            >\n            </ng-template>\n        </div>\n\n        <div *ngIf=\"notification.message\" class=\"ic-notification__message\">\n            <ng-template\n                [ngTemplateOutlet]=\"notificationTextTemplate || defaultNotificationTextTemplate\"\n                [ngTemplateOutletContext]=\"{ notification: notification }\"\n            >\n            </ng-template>\n        </div>\n\n        <div class=\"ic-notification__link\" *ngFor=\"let action of notification.actions; trackBy: trackByActionId\">\n            <a\n                *ngIf=\"action.type === ActionType.Link\"\n                #notificationLink\n                kbq-link\n                target=\"_blank\"\n                [href]=\"action.link\"\n                (click)=\"onActionLinkClick($event)\"\n            >\n                <span class=\"kbq-link__text\">\n                    <span *ngIf=\"action.titlePrefix\">{{ action.titlePrefix }}</span>\n                    <span>\n                        <ng-template\n                            [ngTemplateOutlet]=\"notificationActionTextTemplate || defaultNotificationActionTextTemplate\"\n                            [ngTemplateOutletContext]=\"{ notification: notification, action: action }\"\n                        >\n                        </ng-template>\n                    </span>\n                </span>\n            </a>\n\n            <a\n                *ngIf=\"action.type === ActionType.Callback\"\n                #notificationLink\n                kbq-link\n                pseudo\n                (click)=\"onActionCallbackLinkClick($event, action)\"\n            >\n                <span class=\"kbq-link__text\">\n                    <ng-template\n                        [ngTemplateOutlet]=\"notificationActionTextTemplate || defaultNotificationActionTextTemplate\"\n                        [ngTemplateOutletContext]=\"{ notification: notification, action: action }\"\n                    >\n                    </ng-template>\n                </span>\n            </a>\n        </div>\n    </div>\n\n    <div class=\"ic-notification__additional-content\">\n        <div class=\"ic-notification__time\">\n            {{ notification.created | icDate: behaviorConfig.notificationDateFormat }}\n        </div>\n\n        <div class=\"ic-notification__remove\">\n            <button\n                type=\"button\"\n                kbq-button\n                [color]=\"KbqComponentColors.Contrast\"\n                [kbqStyle]=\"KbqButtonStyles.Transparent\"\n                (click)=\"onRemoveClick($event)\"\n            >\n                <i kbq-icon=\"kbq-trash_16\"></i>\n            </button>\n        </div>\n    </div>\n</div>\n\n<ng-template #defaultNotificationTitleTemplate let-notification=\"notification\">\n    {{ notification.title }}\n</ng-template>\n\n<ng-template #defaultNotificationTextTemplate let-notification=\"notification\">\n    <div class=\"notification__message-item\" *ngIf=\"isTextTemplatedNotification(notification)\">\n        {{ notification.message }}\n    </div>\n\n    <ng-container *ngIf=\"isMultilineTemplatedNotification(notification)\">\n        <div class=\"notification__message-item\" *ngFor=\"let item of notification.message\">\n            {{ item }}\n        </div>\n    </ng-container>\n</ng-template>\n\n<ng-template #defaultNotificationActionTextTemplate let-notification=\"notification\" let-action=\"action\">\n    {{ action.title }}\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'ic-notification-skeleton',\n    templateUrl: './notification-skeleton.component.html',\n    styleUrls: ['./notification-skeleton.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationSkeletonComponent {}\n","<div class=\"ic-notification-skeleton\">\n    <ic-skeleton class=\"ic-notification-skeleton__header\" [isHeader]=\"true\"></ic-skeleton>\n    <ic-skeleton class=\"ic-notification-skeleton__long-row\"></ic-skeleton>\n    <ic-skeleton class=\"ic-notification-skeleton__row\"></ic-skeleton>\n</div>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { map, merge, Subject, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\n\nimport {\n    NotificationActionTextTemplateContext,\n    NotificationsCenterBehaviorConfig,\n    NotificationsFocus,\n    NotificationsGroup,\n    NotificationsGroupTitleTemplateContext,\n    NotificationTemplateActionCallbackEvent,\n    NotificationTextTemplateContext,\n    NotificationTitleTemplateContext,\n    NotificationVisibility,\n    NotificationVisibilityChangedEvent,\n    TemplatedNotification\n} from '../../types';\nimport { NotificationComponent } from '../notification/notification.component';\n\ntype SingleNotificationVisibility = NotificationVisibility & { notificationId: string };\n\n@Component({\n    selector: 'ic-notifications-group',\n    templateUrl: './notifications-group.component.html',\n    styleUrls: ['./notifications-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [DestroyService]\n})\nexport class NotificationsGroupComponent<T> implements OnChanges, AfterViewInit {\n    readonly KbqButtonStyles = KbqButtonStyles;\n    protected readonly KbqComponentColors = KbqComponentColors;\n\n    @Input() group!: NotificationsGroup<T>;\n\n    @Input() notificationsGroupTitleTemplate: TemplateRef<NotificationsGroupTitleTemplateContext<T>> | undefined;\n\n    @Input() behaviorConfig!: NotificationsCenterBehaviorConfig;\n\n    @Input() notificationTitleTemplate: TemplateRef<NotificationTitleTemplateContext> | undefined;\n\n    @Input() notificationTextTemplate: TemplateRef<NotificationTextTemplateContext> | undefined;\n\n    @Input() notificationActionTextTemplate: TemplateRef<NotificationActionTextTemplateContext> | undefined;\n\n    @Input() notificationsFocus!: NotificationsFocus;\n\n    @Input() contentRoot: HTMLElement | undefined;\n\n    @Output()\n    remove = new EventEmitter<NotificationsGroup<T>>();\n\n    @Output()\n    notificationActionCallback = new EventEmitter<NotificationTemplateActionCallbackEvent>();\n\n    @Output()\n    removeNotification = new EventEmitter<string>();\n\n    @Output()\n    notificationLinkClick = new EventEmitter<TemplatedNotification>();\n\n    @Output()\n    notificationClick = new EventEmitter<TemplatedNotification>();\n\n    @Output() notificationsVisibilityChange = new EventEmitter<NotificationVisibilityChangedEvent>();\n\n    @ViewChild('groupHeader') groupHeaderRef: ElementRef | undefined;\n    @ViewChildren(NotificationComponent) notificationComponents: QueryList<NotificationComponent> | undefined;\n\n    private groupChanged$ = new Subject<void>();\n\n    constructor(private destroyed$: DestroyService) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['group']) {\n            setTimeout(() => this.resetNotificationsViewportVisibilitySubscription());\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.notificationComponents?.changes.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n            this.resetNotificationsViewportVisibilitySubscription();\n        });\n    }\n\n    trackByNotificationId(index: number, notification: TemplatedNotification): string {\n        return notification.id;\n    }\n\n    private get viewportVisibilityTractionOption(): IntersectionObserverInit {\n        const groupHeader = this.groupHeaderRef?.nativeElement as HTMLElement | undefined;\n        const offsetTop = groupHeader?.offsetHeight || 0;\n\n        // every 1% percent\n        const count = 100;\n        const thresholdItems = Array<unknown>(count);\n        const precision = 0.01;\n        const threshold = [...[...thresholdItems].map((val, index) => index * precision), 1];\n\n        return {\n            threshold,\n            root: this.contentRoot,\n            rootMargin: `-${offsetTop}px 0px 0px 0px`\n        };\n    }\n\n    private resetNotificationsViewportVisibilitySubscription(): void {\n        if (!this.notificationComponents) {\n            return;\n        }\n\n        this.groupChanged$.next();\n        this.groupChanged$.complete();\n        this.groupChanged$ = new Subject();\n\n        const options = this.viewportVisibilityTractionOption;\n\n        const observables = this.notificationComponents.map((item) =>\n            item.isVisibleInViewport$(options).pipe(\n                map<boolean, SingleNotificationVisibility>((isVisibleInViewport) => ({\n                    isVisibleInViewport,\n                    notificationId: item.notification.id\n                }))\n            )\n        );\n\n        merge(...observables)\n            .pipe(takeUntil(this.destroyed$), takeUntil(this.groupChanged$))\n            .subscribe((value) =>\n                this.notificationsVisibilityChange.emit({\n                    notificationId: value.notificationId,\n                    visibility: {\n                        isVisibleInViewport: value.isVisibleInViewport\n                    }\n                })\n            );\n    }\n}\n","<div class=\"ic-notifications-group\">\n    <div class=\"ic-notifications-group__header\" #groupHeader>\n        <div class=\"ic-notifications-group__title\">\n            <ng-template\n                [ngTemplateOutlet]=\"notificationsGroupTitleTemplate || defaultNotificationsGroupTitleTemplate\"\n                [ngTemplateOutletContext]=\"{ notificationsGroup: group }\"\n            >\n            </ng-template>\n        </div>\n\n        <button\n            kbq-button\n            [kbqStyle]=\"KbqButtonStyles.Transparent\"\n            [color]=\"KbqComponentColors.Contrast\"\n            (click)=\"remove.emit(group)\"\n        >\n            <i kbq-icon=\"kbq-trash_16\"></i>\n        </button>\n    </div>\n\n    <div class=\"ic-notifications-group__item\" *ngFor=\"let item of group.items; trackBy: trackByNotificationId\">\n        <ic-notification\n            [notification]=\"item\"\n            [behaviorConfig]=\"behaviorConfig\"\n            [notificationTitleTemplate]=\"notificationTitleTemplate\"\n            [notificationTextTemplate]=\"notificationTextTemplate\"\n            [notificationActionTextTemplate]=\"notificationActionTextTemplate\"\n            [(focus)]=\"notificationsFocus[item.id]\"\n            (actionCallback)=\"notificationActionCallback.emit($event)\"\n            (removeNotification)=\"removeNotification.emit($event)\"\n            (notificationLinkClick)=\"notificationLinkClick.emit($event)\"\n            (notificationClick)=\"notificationClick.emit($event)\"\n        >\n        </ic-notification>\n    </div>\n</div>\n\n<ng-template #defaultNotificationsGroupTitleTemplate let-notificationsGroup=\"notificationsGroup\">\n    {{ notificationsGroup.key }}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { TemplatedNotification } from '../../types';\n\n@Component({\n    selector: 'ic-notifications-center-header',\n    templateUrl: './notifications-center-header.component.html',\n    styleUrls: ['./notifications-center-header.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsCenterHeaderComponent {\n    protected readonly KbqButtonStyles = KbqButtonStyles;\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n\n    @Input() isOptionsCollapsed = false;\n    @Input() notifications: TemplatedNotification[] = [];\n\n    @Output() removeAllNotifications = new EventEmitter<void>();\n    @Output() isOptionsCollapsedChange = new EventEmitter<boolean>();\n}\n","<div class=\"ic-notifications-center-header\">\n    <div class=\"ic-notifications-center-header__title\">\n        <div class=\"ic-notifications-center-header__title-text\">\n            <ic-coalesce-content\n                [items]=\"[\n                    {\n                        alias: IcTranslocoScopeAlias.NotificationsCenter,\n                        key: 'NotificationsCenter.Content.Header.Notifications'\n                    }\n                ]\"\n            ></ic-coalesce-content>\n        </div>\n\n        <button\n            type=\"button\"\n            kbq-button\n            [color]=\"KbqComponentColors.Contrast\"\n            [kbqStyle]=\"KbqButtonStyles.Transparent\"\n            [class.kbq-active]=\"!isOptionsCollapsed\"\n            (click)=\"isOptionsCollapsedChange.emit(!isOptionsCollapsed)\"\n        >\n            <i kbq-icon=\"kbq-gear_16\"></i>\n        </button>\n    </div>\n\n    <div class=\"ic-notifications-center-header__remove-all\">\n        <button\n            kbq-button\n            [color]=\"KbqComponentColors.Contrast\"\n            [kbqStyle]=\"KbqButtonStyles.Transparent\"\n            (click)=\"removeAllNotifications.emit()\"\n            [disabled]=\"!notifications.length\"\n        >\n            <i kbq-icon=\"kbq-trash_16\"></i>\n\n            <ic-coalesce-content\n                [items]=\"[\n                    {\n                        alias: IcTranslocoScopeAlias.NotificationsCenter,\n                        key: 'NotificationsCenter.Content.Button.RemoveAll'\n                    }\n                ]\"\n            ></ic-coalesce-content>\n        </button>\n    </div>\n</div>\n","import { DateFormatType } from '@mosaic-design/infosec-components/types';\n\nimport { NotificationsCenterBehaviorConfig } from '../types';\n\nexport const defaultBehaviorConfig: NotificationsCenterBehaviorConfig = {\n    hideOnLinkClick: true,\n    groupDateFormat: 'd MMMM',\n    notificationDateFormat: DateFormatType.OnlyTime,\n    loadNotificationsOnOpen: true,\n    clearNotificationsOnHide: true,\n    loadMoreNotificationsWhenNotAllLoadedAndScrollIsNotVisible: true,\n    useOwnPushesContainer: false,\n    markAsReadTimeout: 1000\n};\n","export const defaultMoreNotificationsLoadingSpinnerHeight = 44;\nexport const defaultPageUpDownScrollTimeout = 250;\n","import { DateTime } from 'luxon';\n\nimport { groupBy, orderBy } from '@mosaic-design/infosec-components/utils';\n\nimport { NotificationsGroup, NotificationsGroupsProvider } from '../types';\n\nexport const notificationsGroupsProviderByDate: NotificationsGroupsProvider<string> = (items, behaviorConfig) => {\n    const groupped = groupBy(\n        items,\n        (notification) => DateTime.fromJSDate(notification.created).startOf('day').toISODate() ?? ''\n    ).map((group) => ({\n        date: DateTime.fromISO(group.key).toFormat(behaviorConfig.groupDateFormat),\n        timestamp: DateTime.fromISO(group.key).valueOf(),\n        values: group.values\n    }));\n\n    return orderBy(groupped, (item) => item.timestamp, true).map<NotificationsGroup<string>>((group) => ({\n        key: group.date,\n        items: orderBy(group.values, (item) => DateTime.fromJSDate(item.created).valueOf(), true)\n    }));\n};\n","import { notificationsCenterTranslates } from '@mosaic-design/infosec-components/i18n-resources';\nimport { LocalizationScopeConfig, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport const scopeConfig: LocalizationScopeConfig = {\n    alias: IcTranslocoScopeAlias.NotificationsCenter,\n    localTranslates: notificationsCenterTranslates\n};\n","import { NotificationsOptions } from '../types';\n\nexport const defaultOptions: NotificationsOptions = {\n    isDontDisturb: false\n};\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { KbqToggleChange } from '@koobiq/components/toggle';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { defaultOptions } from '../../constants';\nimport { NotificationsOptions } from '../../types';\n\n@Component({\n    selector: 'ic-notifications-center-options',\n    templateUrl: './notifications-center-options.component.html',\n    styleUrls: ['./notifications-center-options.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class NotificationsCenterOptionsComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n\n    @Input() isOptionsCollapsed = false;\n    @Input() options: NotificationsOptions = defaultOptions;\n\n    @Output() optionsChange = new EventEmitter<NotificationsOptions>();\n\n    onDontDisturbChange(event: KbqToggleChange): void {\n        this.optionsChange.emit({\n            ...this.options,\n            isDontDisturb: event.checked\n        });\n    }\n}\n","<div\n    class=\"ic-notifications-center-options\"\n    [ngClass]=\"{ 'ic-notifications-center-options_collapsed': isOptionsCollapsed }\"\n>\n    <kbq-toggle [ngModel]=\"options.isDontDisturb\" (change)=\"onDontDisturbChange($event)\">\n        <ic-coalesce-content\n            [items]=\"[\n                {\n                    alias: IcTranslocoScopeAlias.NotificationsCenter,\n                    key: 'NotificationsCenter.Content.Option.DoNotDisturb'\n                }\n            ]\"\n        ></ic-coalesce-content>\n    </kbq-toggle>\n</div>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\nimport { HotKeyService } from '@mosaic-design/infosec-components/services';\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport enum NotificationLoadingErrorViewType {\n    Normal = 'normal',\n    Slim = 'slim'\n}\n\n@Component({\n    selector: 'ic-notifications-loading-error',\n    templateUrl: './notifications-loading-error.component.html',\n    styleUrls: ['./notifications-loading-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsLoadingErrorComponent implements AfterViewInit {\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly NotificationLoadingErrorViewType = NotificationLoadingErrorViewType;\n\n    @Input() viewType = NotificationLoadingErrorViewType.Normal;\n    @Input() notificationsLoadingError: unknown;\n\n    @Output() reload = new EventEmitter<void>();\n\n    @ViewChild('reloadElement') reloadElementRef: ElementRef<HTMLElement> | undefined;\n\n    constructor(private hotKeyService: HotKeyService) {}\n\n    ngAfterViewInit(): void {\n        if (this.reloadElementRef?.nativeElement) {\n            this.hotKeyService.registerHotKey({\n                id: 'NotificationsCenter_LoadingError',\n                target: this.reloadElementRef.nativeElement,\n                keyCodes: ['Space', 'Enter', 'NumpadEnter'],\n                stopEvent: true,\n                callback: () => this.reload.emit()\n            });\n        }\n    }\n}\n","<div\n    class=\"ic-notifications-center-loading-error\"\n    [ngClass]=\"{ 'ic-notifications-center-loading-error_slim': viewType === NotificationLoadingErrorViewType.Slim }\"\n>\n    <ng-container *ngIf=\"viewType === NotificationLoadingErrorViewType.Normal; else slim\">\n        <i kbq-icon-item=\"kbq-bell_16\" [color]=\"KbqComponentColors.Error\"></i>\n\n        <div>\n            <div class=\"ic-notifications-center-loading-error__text\">\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            alias: IcTranslocoScopeAlias.NotificationsCenter,\n                            key: 'NotificationsCenter.Content.Text.LoadingError'\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </div>\n\n            <button\n                class=\"ic-notifications-center-loading-error__reload\"\n                kbq-button\n                [color]=\"KbqComponentColors.Contrast\"\n                (click)=\"reload.emit()\"\n                #reloadElement\n            >\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            alias: IcTranslocoScopeAlias.NotificationsCenter,\n                            key: 'NotificationsCenter.Content.Link.Reload'\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </button>\n        </div>\n    </ng-container>\n\n    <ng-template #slim>\n        <i kbq-icon=\"kbq-exclamation-triangle_16\" [color]=\"KbqComponentColors.Error\"></i>\n\n        <div>\n            <div class=\"ic-notifications-center-loading-error__text\">\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            alias: IcTranslocoScopeAlias.NotificationsCenter,\n                            key: 'NotificationsCenter.Content.Text.LoadingError'\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </div>\n\n            <a\n                class=\"ic-notifications-center-loading-error__reload\"\n                kbq-link\n                pseudo\n                (click)=\"reload.emit()\"\n                #reloadElement\n            >\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            alias: IcTranslocoScopeAlias.NotificationsCenter,\n                            key: 'NotificationsCenter.Content.Link.Reload'\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </a>\n        </div>\n    </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\n@Component({\n    selector: 'ic-notifications-empty-message',\n    templateUrl: './notifications-empty-message.component.html',\n    styleUrls: ['./notifications-empty-message.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsEmptyMessageComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly KbqComponentColors = KbqComponentColors;\n}\n","<div class=\"ic-notifications-empty-message\">\n    <i kbq-icon-item=\"kbq-bell_16\" [color]=\"KbqComponentColors.Contrast\"></i>\n    <div class=\"ic-notifications-empty-message__text\">\n        <ic-coalesce-content\n            [items]=\"[\n                {\n                    alias: IcTranslocoScopeAlias.NotificationsCenter,\n                    key: 'NotificationsCenter.Content.Text.Empty'\n                }\n            ]\"\n        ></ic-coalesce-content>\n    </div>\n</div>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport {\n    BehaviorSubject,\n    debounceTime,\n    delay,\n    first,\n    map,\n    merge,\n    Observable,\n    of,\n    scan,\n    Subject,\n    Subscription\n} from 'rxjs';\n\nimport { defaultBehaviorConfig, defaultOptions, notificationsGroupsProviderByDate } from '../constants';\nimport {\n    Application,\n    GoToReferrerEvent,\n    NewTemplatedNotification,\n    NotificationActionTextTemplateContext,\n    NotificationsCenterBehaviorConfig,\n    NotificationsGroupsProvider,\n    NotificationsGroupTitleTemplateContext,\n    NotificationsOptions,\n    NotificationStatus,\n    NotificationTemplateActionCallbackEvent,\n    NotificationTextTemplateContext,\n    NotificationTitleTemplateContext,\n    TemplatedNotification\n} from '../types';\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationsCenterService {\n    private readonly _isNotificationsLoading = new BehaviorSubject<boolean>(false);\n    private readonly _isMoreNotificationsLoading = new BehaviorSubject<boolean>(false);\n    private readonly _isAllNotificationLoaded = new BehaviorSubject<boolean>(false);\n    private readonly _options = new BehaviorSubject<NotificationsOptions>(defaultOptions);\n    private readonly _notifications = new BehaviorSubject<TemplatedNotification[]>([]);\n    private readonly _newNotifications = new BehaviorSubject<NewTemplatedNotification[]>([]);\n    private readonly _unreadCount = new BehaviorSubject<number>(0);\n    private readonly _groupsProvider = new BehaviorSubject<NotificationsGroupsProvider<unknown>>(\n        notificationsGroupsProviderByDate\n    );\n    private readonly _notificationsLoadingError = new BehaviorSubject<unknown>(undefined);\n    private readonly _behaviorConfig = new BehaviorSubject<NotificationsCenterBehaviorConfig>(defaultBehaviorConfig);\n    private readonly _applications = new BehaviorSubject<Application[]>([]);\n    private readonly _notificationsGroupTitleTemplate = new BehaviorSubject<\n        TemplateRef<NotificationsGroupTitleTemplateContext<unknown>> | undefined\n    >(undefined);\n    private readonly _notificationTitleTemplate = new BehaviorSubject<\n        TemplateRef<NotificationTitleTemplateContext> | undefined\n    >(undefined);\n    private readonly _notificationTextTemplate = new BehaviorSubject<\n        TemplateRef<NotificationTextTemplateContext> | undefined\n    >(undefined);\n    private readonly _notificationActionTextTemplate = new BehaviorSubject<\n        TemplateRef<NotificationActionTextTemplateContext> | undefined\n    >(undefined);\n\n    private pendingNotificationsToReadSubscriptions: Record<string, Subscription> = {};\n    private pendingNotificationsIdsToRead$: Subject<string> | undefined;\n\n    actionCallback$ = new Subject<NotificationTemplateActionCallbackEvent>();\n    goToReferrer$ = new Subject<GoToReferrerEvent>();\n    notificationClick$ = new Subject<TemplatedNotification>();\n    notificationLinkClick$ = new Subject<TemplatedNotification>();\n    loadMoreNotifications$ = new Subject<void>();\n    loadNotifications$ = new Subject<void>();\n    markAsRead$ = new Subject<string[]>();\n    optionsChange$ = new Subject<NotificationsOptions>();\n    removeAllNotifications$ = new Subject<void>();\n    removeNotifications$ = new Subject<string[]>();\n\n    constructor() {\n        // эти события могут сработать как в поповере, так и в пушах, поэтому ловить их нужно тут\n        merge(this.actionCallback$.pipe(map((event) => event.notification)), this.notificationLinkClick$)\n            .pipe(map((notification) => notification.id))\n            .subscribe((id) => {\n                this.unmarkNotificationAsPendingToRead(id);\n                this.markNotificationAsRead(id);\n            });\n    }\n\n    get isNotificationsLoading$(): Observable<boolean> {\n        return this._isNotificationsLoading.asObservable();\n    }\n\n    get isMoreNotificationsLoading$(): Observable<boolean> {\n        return this._isMoreNotificationsLoading.asObservable();\n    }\n\n    get isAllNotificationLoaded$(): Observable<boolean> {\n        return this._isAllNotificationLoaded.asObservable();\n    }\n    get isAllNotificationLoaded(): boolean {\n        return this._isAllNotificationLoaded.value;\n    }\n\n    get options$(): Observable<NotificationsOptions> {\n        return this._options.asObservable();\n    }\n    get options(): NotificationsOptions {\n        return this._options.value;\n    }\n\n    get notifications$(): Observable<TemplatedNotification[]> {\n        return this._notifications.asObservable();\n    }\n\n    get newNotifications$(): Observable<NewTemplatedNotification[]> {\n        return this._newNotifications.asObservable();\n    }\n\n    get unreadCount$(): Observable<number> {\n        return this._unreadCount.asObservable();\n    }\n    get unreadCount(): number {\n        return this._unreadCount.value;\n    }\n\n    get groupsProvider$(): Observable<NotificationsGroupsProvider<unknown>> {\n        return this._groupsProvider.asObservable();\n    }\n\n    get notificationsLoadingError$(): Observable<unknown> {\n        return this._notificationsLoadingError.asObservable();\n    }\n\n    get applications$(): Observable<Application[]> {\n        return this._applications.asObservable();\n    }\n    get applications(): Application[] {\n        return this._applications.value;\n    }\n\n    get behaviorConfig$(): Observable<NotificationsCenterBehaviorConfig> {\n        return this._behaviorConfig.asObservable();\n    }\n    get behaviorConfig(): NotificationsCenterBehaviorConfig {\n        return this._behaviorConfig.value;\n    }\n\n    get notificationsGroupTitleTemplate$(): Observable<\n        TemplateRef<NotificationsGroupTitleTemplateContext<unknown>> | undefined\n    > {\n        return this._notificationsGroupTitleTemplate.asObservable();\n    }\n\n    get notificationTitleTemplate$(): Observable<TemplateRef<NotificationTitleTemplateContext> | undefined> {\n        return this._notificationTitleTemplate.asObservable();\n    }\n\n    get notificationTextTemplate$(): Observable<TemplateRef<NotificationTextTemplateContext> | undefined> {\n        return this._notificationTextTemplate.asObservable();\n    }\n\n    get notificationActionTextTemplate$(): Observable<TemplateRef<NotificationActionTextTemplateContext> | undefined> {\n        return this._notificationActionTextTemplate.asObservable();\n    }\n\n    dispatchIsNotificationsLoading(value: boolean): void {\n        this._isNotificationsLoading.next(value);\n    }\n\n    dispatchIsMoreNotificationsLoading(value: boolean): void {\n        this._isMoreNotificationsLoading.next(value);\n    }\n\n    dispatchIsAllNotificationLoaded(value: boolean): void {\n        this._isAllNotificationLoaded.next(value);\n    }\n\n    dispatchOptions(value: NotificationsOptions): void {\n        this._options.next(value);\n    }\n\n    dispatchNotifications(value: TemplatedNotification[]): void {\n        this._notifications.next(value);\n    }\n\n    dispatchNewNotifications(value: NewTemplatedNotification[]): void {\n        this._newNotifications.next(value);\n    }\n\n    dispatchUnreadCount(value: number): void {\n        this._unreadCount.next(value);\n    }\n\n    dispatchGroupsProvider(value: NotificationsGroupsProvider<unknown>): void {\n        this._groupsProvider.next(value);\n    }\n\n    dispatchNotificationsLoadingError(value: unknown): void {\n        this._notificationsLoadingError.next(value);\n    }\n\n    dispatchApplications(value: Application[]): void {\n        this._applications.next(value);\n    }\n\n    dispatchBehaviorConfig(value: NotificationsCenterBehaviorConfig): void {\n        this._behaviorConfig.next(value);\n    }\n\n    dispatchNotificationsGroupTitleTemplate(value: TemplateRef<NotificationsGroupTitleTemplateContext<unknown>>): void {\n        this._notificationsGroupTitleTemplate.next(value);\n    }\n\n    dispatchNotificationTitleTemplate(value: TemplateRef<NotificationTitleTemplateContext>): void {\n        this._notificationTitleTemplate.next(value);\n    }\n\n    dispatchNotificationTextTemplate(value: TemplateRef<NotificationTextTemplateContext>): void {\n        this._notificationTextTemplate.next(value);\n    }\n\n    dispatchNotificationActionTextTemplate(value: TemplateRef<NotificationActionTextTemplateContext>): void {\n        this._notificationActionTextTemplate.next(value);\n    }\n\n    markNotificationAsPendingToRead(notificationId: string, isVisible: () => boolean): void {\n        if (this.isNotificationNew(notificationId)) {\n            this.pendingNotificationsToReadSubscriptions[notificationId] = of(notificationId)\n                .pipe(delay(this.behaviorConfig.markAsReadTimeout), first())\n                .subscribe((id) => {\n                    if (isVisible()) {\n                        this.markNotificationAsRead(id);\n                    }\n\n                    delete this.pendingNotificationsToReadSubscriptions[notificationId];\n                });\n        }\n    }\n\n    unmarkNotificationAsPendingToRead(notificationId: string): void {\n        this.pendingNotificationsToReadSubscriptions[notificationId]?.unsubscribe();\n        delete this.pendingNotificationsToReadSubscriptions[notificationId];\n    }\n\n    markNotificationAsRead(notificationId: string): void {\n        const debounceTimeout = 100;\n\n        if (this.isNotificationNew(notificationId)) {\n            if (!this.pendingNotificationsIdsToRead$) {\n                this.pendingNotificationsIdsToRead$ = new Subject<string>();\n                this.pendingNotificationsIdsToRead$\n                    .pipe(\n                        scan<string, string[]>((ids, id) => (ids.includes(id) ? ids : [...ids, id]), []),\n                        debounceTime(debounceTimeout),\n                        first()\n                    )\n                    .subscribe((ids) => {\n                        this.pendingNotificationsIdsToRead$ = undefined;\n                        this.markAsRead$.next(ids);\n                    });\n            }\n\n            this.pendingNotificationsIdsToRead$.next(notificationId);\n        }\n    }\n\n    private isNotificationNew(notificationId: string): boolean {\n        return this._notifications.value.find((item) => item.id === notificationId)?.status === NotificationStatus.New;\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    OnInit,\n    TemplateRef,\n    ViewChild\n} from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport {\n    combineLatest,\n    distinctUntilChanged,\n    filter,\n    first,\n    map,\n    Observable,\n    scan,\n    Subject,\n    takeUntil,\n    tap,\n    withLatestFrom\n} from 'rxjs';\n\nimport { DestroyService, HotKey, HotKeyService } from '@mosaic-design/infosec-components/services';\n\nimport { NotificationLoadingErrorViewType } from '../../components';\nimport { defaultMoreNotificationsLoadingSpinnerHeight, defaultPageUpDownScrollTimeout } from '../../constants';\nimport { NotificationsCenterService } from '../../services';\nimport {\n    GenericTemplatedNotification,\n    GoToReferrerEvent,\n    NotificationActionTextTemplateContext,\n    NotificationFocusDirection,\n    NotificationsCenterBehaviorConfig,\n    NotificationsFocus,\n    NotificationsGroup,\n    NotificationsGroupTitleTemplateContext,\n    NotificationsOptions,\n    NotificationsVisibility,\n    NotificationTemplateActionCallbackEvent,\n    NotificationTextTemplateContext,\n    NotificationTitleTemplateContext,\n    NotificationVisibilityChangedEvent,\n    PageScrollDirection,\n    ScrollParameters,\n    TemplatedNotification\n} from '../../types';\n\n@Component({\n    selector: 'ic-notifications-center-content',\n    templateUrl: './notifications-center-content.component.html',\n    styleUrls: ['./notifications-center-content.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [DestroyService, HotKeyService]\n})\nexport class NotificationsCenterContentComponent implements OnInit, AfterViewInit {\n    protected KbqComponentColors = KbqComponentColors;\n    protected NotificationLoadingErrorViewType = NotificationLoadingErrorViewType;\n\n    notificationsFocus: NotificationsFocus = {};\n\n    notifications$!: Observable<GenericTemplatedNotification<unknown>[]>;\n    notificationsGroups$!: Observable<NotificationsGroup<unknown>[]>;\n    hasGroups$!: Observable<boolean>;\n    options$!: Observable<NotificationsOptions>;\n    isNotificationsSkeletonsVisible$!: Observable<boolean>;\n    isErrorVisibleAndNotificationsEmpty$!: Observable<boolean>;\n    isErrorVisibleAndNotificationsNotEmpty$!: Observable<boolean>;\n    isAllNotificationLoaded$!: Observable<boolean>;\n    isMoreNotificationsLoading$!: Observable<boolean>;\n    notificationsLoadingError$!: Observable<unknown>;\n    behaviorConfig$!: Observable<NotificationsCenterBehaviorConfig>;\n    wasAnyNotificationsLoading$!: Observable<boolean>;\n    notificationsGroupTitleTemplate$!: Observable<\n        TemplateRef<NotificationsGroupTitleTemplateContext<unknown>> | undefined\n    >;\n    notificationTitleTemplate$!: Observable<TemplateRef<NotificationTitleTemplateContext> | undefined>;\n    notificationTextTemplate$!: Observable<TemplateRef<NotificationTextTemplateContext> | undefined>;\n    notificationActionTextTemplate$!: Observable<TemplateRef<NotificationActionTextTemplateContext> | undefined>;\n\n    actionCallback$!: Subject<NotificationTemplateActionCallbackEvent>;\n    goToReferrer$!: Subject<GoToReferrerEvent>;\n    notificationClick$!: Subject<TemplatedNotification>;\n    notificationLinkClick$!: Subject<TemplatedNotification>;\n    loadMoreNotifications$!: Subject<void>;\n    loadNotifications$!: Subject<void>;\n    markAsRead$!: Subject<string[]>;\n    optionsChange$!: Subject<NotificationsOptions>;\n    removeAllNotifications$!: Subject<void>;\n    removeNotifications$!: Subject<string[]>;\n    contentElement: HTMLElement | undefined;\n\n    @ViewChild('notificationsCenterContent', { read: ElementRef }) notificationsCenterContent:\n        | ElementRef<HTMLDivElement>\n        | undefined;\n\n    @ViewChild('notificationsCenterScrollableContent', { read: ElementRef }) notificationsCenterScrollableContent:\n        | ElementRef<HTMLDivElement>\n        | undefined;\n\n    private preventLoadMoreNotificationsEmit = false;\n    private notificationsVisibility: NotificationsVisibility = {};\n    private moreNotificationsLoadingSpinnerHeight = defaultMoreNotificationsLoadingSpinnerHeight;\n    private pageUpDownScrollTimeout = defaultPageUpDownScrollTimeout;\n    private lastScrollCoordinates: ScrollParameters = {\n        scrollTop: 0,\n        offsetHeight: 0,\n        scrollHeight: 0\n    };\n\n    private readonly hotKeys: HotKey[] = [\n        {\n            id: 'NotificationsCenter.Focus.PreviousNotification',\n            keyCodes: ['ArrowUp'],\n            stopEvent: true,\n            callback: () => this.focusAnotherNotification('previous')\n        },\n        {\n            id: 'NotificationsCenter.Focus.NextNotification',\n            keyCodes: ['ArrowDown'],\n            stopEvent: true,\n            callback: () => this.focusAnotherNotification('next')\n        },\n        {\n            id: 'NotificationsCenter.Focus.FirstNotification',\n            keyCodes: ['Home'],\n            callback: () => this.focusFirstNotification(true)\n        },\n        {\n            id: 'NotificationsCenter.Focus.LastNotification',\n            keyCodes: ['End'],\n            callback: () => this.focusLastNotification(true)\n        },\n        {\n            id: 'NotificationsCenter.Focus.FocusFirstVisible',\n            keyCodes: ['PageUp'],\n            callback: (event) => this.onPageScroll('up', event)\n        },\n        {\n            id: 'NotificationsCenter.Focus.LastVisible',\n            keyCodes: ['PageDown'],\n            callback: (event) => this.onPageScroll('down', event)\n        }\n    ];\n\n    constructor(\n        private cdRef: ChangeDetectorRef,\n        private hotKeyService: HotKeyService,\n        private notificationsCenterService: NotificationsCenterService,\n        private destroyed$: DestroyService\n    ) {\n        this.initOutputSubscriptions();\n        this.initInputSubscriptions();\n        this.initMoreNotificationsLoadingSubscription();\n    }\n\n    ngOnInit(): void {\n        this.startHotKeyObserving();\n    }\n\n    ngAfterViewInit(): void {\n        this.contentElement = this.notificationsCenterContent?.nativeElement;\n    }\n\n    trackByGroupKey(index: number, group: NotificationsGroup<unknown>): unknown {\n        return group.key;\n    }\n\n    onNotificationVisibilityChange(event: NotificationVisibilityChangedEvent): void {\n        if (\n            !this.notificationsVisibility[event.notificationId]?.isVisibleInViewport &&\n            event.visibility.isVisibleInViewport\n        ) {\n            this.notificationsCenterService.markNotificationAsPendingToRead(\n                event.notificationId,\n                () => this.notificationsVisibility[event.notificationId]?.isVisibleInViewport ?? false\n            );\n        }\n\n        this.notificationsVisibility[event.notificationId] = event.visibility;\n    }\n\n    onRemoveNotificationsGroup(group: NotificationsGroup<unknown>): void {\n        const notificationsIds = group.items.map((notification) => notification.id);\n        this.removeNotifications$.next(notificationsIds);\n    }\n\n    onScroll(event: [instance: OverlayScrollbars, event: Event]): void {\n        const target = event[1].target as HTMLDivElement;\n        const scrollPosition = target.offsetHeight + target.scrollTop;\n\n        this.lastScrollCoordinates = {\n            scrollTop: target.scrollTop,\n            offsetHeight: target.offsetHeight,\n            scrollHeight: target.scrollHeight\n        };\n\n        const scrollHeight = target.scrollHeight - this.moreNotificationsLoadingSpinnerHeight;\n\n        if (\n            scrollPosition >= scrollHeight &&\n            !this.preventLoadMoreNotificationsEmit &&\n            !this.notificationsCenterService.isAllNotificationLoaded\n        ) {\n            this.loadMoreNotifications$.next();\n            this.preventLoadMoreNotificationsEmit = true;\n        }\n    }\n\n    private initOutputSubscriptions(): void {\n        this.actionCallback$ = this.notificationsCenterService.actionCallback$;\n        this.goToReferrer$ = this.notificationsCenterService.goToReferrer$;\n        this.notificationClick$ = this.notificationsCenterService.notificationClick$;\n        this.notificationLinkClick$ = this.notificationsCenterService.notificationLinkClick$;\n        this.loadMoreNotifications$ = this.notificationsCenterService.loadMoreNotifications$;\n        this.loadNotifications$ = this.notificationsCenterService.loadNotifications$;\n        this.markAsRead$ = this.notificationsCenterService.markAsRead$;\n        this.optionsChange$ = this.notificationsCenterService.optionsChange$;\n        this.removeAllNotifications$ = this.notificationsCenterService.removeAllNotifications$;\n        this.removeNotifications$ = this.notificationsCenterService.removeNotifications$;\n    }\n\n    private initInputSubscriptions(): void {\n        this.notificationsGroups$ = combineLatest([\n            this.notificationsCenterService.notifications$,\n            this.notificationsCenterService.groupsProvider$,\n            this.notificationsCenterService.behaviorConfig$\n        ]).pipe(\n            map(([notifications, provider, config]) => provider(notifications, config)),\n            tap((groups) => {\n                this.initNotificationsFocus(groups);\n                this.initNotificationsVisibility(groups);\n            })\n        );\n        this.hasGroups$ = this.notificationsGroups$.pipe(map((groups) => !!groups.length));\n\n        this.notifications$ = this.notificationsCenterService.notifications$;\n\n        this.notificationsCenterService.notifications$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n            this.preventLoadMoreNotificationsEmit = false;\n        });\n\n        this.options$ = this.notificationsCenterService.options$;\n\n        this.wasAnyNotificationsLoading$ = this.notificationsCenterService.isNotificationsLoading$.pipe(\n            scan<boolean, boolean>((acc, current) => acc || current, false)\n        );\n\n        this.isNotificationsSkeletonsVisible$ = combineLatest([\n            this.notificationsCenterService.isNotificationsLoading$,\n            this.notificationsCenterService.behaviorConfig$,\n            this.wasAnyNotificationsLoading$\n        ]).pipe(\n            map(\n                ([isLoading, config, wasAnyNotificationsLoading]) =>\n                    isLoading || (config.loadNotificationsOnOpen && !wasAnyNotificationsLoading)\n            ),\n            distinctUntilChanged()\n        );\n\n        this.isErrorVisibleAndNotificationsEmpty$ = combineLatest([\n            this.notificationsCenterService.notificationsLoadingError$,\n            this.notificationsCenterService.notifications$\n        ]).pipe(map(([error, notifications]) => !!error && !notifications.length));\n\n        this.isErrorVisibleAndNotificationsNotEmpty$ = combineLatest([\n            this.notificationsCenterService.notificationsLoadingError$,\n            this.notificationsCenterService.notifications$\n        ]).pipe(map(([error, notifications]) => !!error && notifications.length > 0));\n\n        this.isAllNotificationLoaded$ = this.notificationsCenterService.isAllNotificationLoaded$;\n        this.isMoreNotificationsLoading$ = this.notificationsCenterService.isMoreNotificationsLoading$;\n        this.notificationsLoadingError$ = this.notificationsCenterService.notificationsLoadingError$;\n        this.behaviorConfig$ = this.notificationsCenterService.behaviorConfig$;\n\n        this.notificationsGroupTitleTemplate$ = this.notificationsCenterService.notificationsGroupTitleTemplate$;\n        this.notificationTitleTemplate$ = this.notificationsCenterService.notificationTitleTemplate$;\n        this.notificationTextTemplate$ = this.notificationsCenterService.notificationTextTemplate$;\n        this.notificationActionTextTemplate$ = this.notificationsCenterService.notificationActionTextTemplate$;\n    }\n\n    private initMoreNotificationsLoadingSubscription(): void {\n        const isMoreNotificationsCanBeLoaded$ = combineLatest([\n            this.isNotificationsSkeletonsVisible$,\n            this.notificationsCenterService.isNotificationsLoading$,\n            this.notificationsCenterService.isMoreNotificationsLoading$,\n            this.notificationsCenterService.isAllNotificationLoaded$,\n            this.notificationsCenterService.notificationsLoadingError$,\n            this.notifications$,\n            this.wasAnyNotificationsLoading$\n        ]).pipe(\n            map(\n                ([\n                    isNotificationsSkeletonsVisible,\n                    isMoreNotificationsLoading,\n                    isNotificationsLoading,\n                    isAllNotificationLoaded,\n                    notificationsLoadingError,\n                    notifications,\n                    wasAnyNotificationsLoading\n                ]) =>\n                    !isNotificationsSkeletonsVisible &&\n                    !isMoreNotificationsLoading &&\n                    !isNotificationsLoading &&\n                    !isAllNotificationLoaded &&\n                    !notificationsLoadingError &&\n                    !(!notifications.length && wasAnyNotificationsLoading)\n            )\n        );\n\n        combineLatest([this.notificationsCenterService.notifications$, this.notificationsCenterService.behaviorConfig$])\n            .pipe(\n                filter(([, config]) => config.loadMoreNotificationsWhenNotAllLoadedAndScrollIsNotVisible),\n                withLatestFrom(isMoreNotificationsCanBeLoaded$),\n                filter(([, isMoreNotificationsCanBeLoaded]) => isMoreNotificationsCanBeLoaded),\n                takeUntil(this.destroyed$)\n            )\n            .subscribe(() => {\n                // wait for render notifications\n                setTimeout(() => {\n                    if (\n                        this.notificationsCenterContent?.nativeElement.scrollHeight ===\n                        this.notificationsCenterScrollableContent?.nativeElement.scrollHeight\n                    ) {\n                        this.loadMoreNotifications$.next();\n                    }\n                });\n            });\n    }\n\n    private initNotificationsFocus(notificationsGroups: NotificationsGroup<unknown>[]): void {\n        const focusedNotificationId = Object.keys(this.notificationsFocus).find(\n            (notificationId) => this.notificationsFocus[notificationId]?.isFocused\n        );\n\n        this.notificationsFocus = {};\n        notificationsGroups.forEach((group) => {\n            group.items.forEach((notification) => {\n                this.notificationsFocus[notification.id] = {\n                    isFocused: notification.id === focusedNotificationId\n                };\n            });\n        });\n    }\n\n    private initNotificationsVisibility(notificationsGroups: NotificationsGroup<unknown>[]): void {\n        this.notificationsVisibility = {};\n        notificationsGroups.forEach((group) => {\n            group.items.forEach((notification) => {\n                this.notificationsVisibility[notification.id] = {\n                    isVisibleInViewport: false\n                };\n            });\n        });\n    }\n\n    private startHotKeyObserving(): void {\n        this.hotKeys.forEach((hotKey) => {\n            this.hotKeyService.registerHotKey(hotKey);\n        });\n\n        this.hotKeyService.startHotKeyObserve();\n    }\n\n    private get firstVisibleInViewportNotificationId$(): Observable<string | undefined> {\n        return this.notificationsGroups$.pipe(\n            map((groups) => groups.map((group) => group.items).flat()),\n            map(\n                (notificationsFromGroups) =>\n                    notificationsFromGroups.find(\n                        (notification) => this.notificationsVisibility[notification.id]?.isVisibleInViewport\n                    )?.id\n            )\n        );\n    }\n\n    private focusNthNotification(index: number, preventScroll?: boolean): void {\n        const notificationsFocus: NotificationsFocus = {};\n        const notificationIds = Object.keys(this.notificationsFocus);\n        notificationIds.forEach((id, i) => {\n            notificationsFocus[id] = {\n                isFocused: index === i,\n                preventScroll: index === i ? preventScroll : false\n            };\n        });\n\n        this.notificationsFocus = notificationsFocus;\n        this.cdRef.detectChanges();\n    }\n\n    private focusNotificationById(notificationId: string | undefined, preventScroll?: boolean): void {\n        const notificationIds = Object.keys(this.notificationsFocus);\n        const notificationsFocus: NotificationsFocus = {};\n        notificationIds.forEach((id) => {\n            notificationsFocus[id] = {\n                isFocused: id === notificationId,\n                preventScroll: id === notificationId ? preventScroll : false\n            };\n        });\n\n        this.notificationsFocus = notificationsFocus;\n        this.cdRef.detectChanges();\n    }\n\n    private calculateAnotherNotificationIndex(index: number, direction: NotificationFocusDirection): number {\n        return direction === 'next' ? index + 1 : index - 1;\n    }\n\n    private focusAnotherNotification(direction: NotificationFocusDirection, preventScroll?: boolean): void {\n        const notificationIds = Object.keys(this.notificationsFocus);\n        const focusedId = notificationIds.find((id) => this.notificationsFocus[id]?.isFocused);\n        if (!focusedId) {\n            this.firstVisibleInViewportNotificationId$.pipe(first()).subscribe((id) => {\n                if (id) {\n                    this.focusNotificationById(id, preventScroll);\n                }\n            });\n        } else {\n            const focusedIndex = notificationIds.indexOf(focusedId);\n            const anotherIndex = focusedId ? this.calculateAnotherNotificationIndex(focusedIndex, direction) : 0;\n\n            if (anotherIndex < 0 || anotherIndex >= notificationIds.length) {\n                return;\n            }\n\n            const anotherId = notificationIds[anotherIndex];\n            this.focusNotificationById(anotherId, preventScroll);\n        }\n    }\n\n    private focusFirstNotification(preventScroll?: boolean): void {\n        this.focusNthNotification(0, preventScroll);\n    }\n\n    private focusLastNotification(preventScroll?: boolean): void {\n        this.focusNthNotification(Object.keys(this.notificationsFocus).length - 1, preventScroll);\n    }\n\n    private focusMiddleVisibleNotification(preventScroll?: boolean): void {\n        const keys = Object.keys(this.notificationsVisibility).filter(\n            (key) => this.notificationsVisibility[key]?.isVisibleInViewport\n        );\n\n        const index = Math.floor(keys.length / 2);\n        const keyToFocus = keys[index];\n        if (keyToFocus) {\n            this.focusNotificationById(keyToFocus, preventScroll);\n        }\n    }\n\n    private onPageScroll(direction: PageScrollDirection, event: KeyboardEvent): void {\n        const isScrollPossible =\n            direction === 'up' ? !this.isScrollableAreaPositionAtStart() : !this.isScrollableAreaPositionAtEnd();\n\n        if (this.isPageScrollEventTargetMatched(event.target) && isScrollPossible) {\n            this.focusMiddleVisibleNotificationAfterTimeout(this.pageUpDownScrollTimeout);\n        }\n    }\n\n    private focusMiddleVisibleNotificationAfterTimeout(timeout: number): void {\n        setTimeout(() => this.focusMiddleVisibleNotification(true), timeout);\n    }\n\n    private isPageScrollEventTargetMatched(target: EventTarget | null): boolean {\n        const scrollableContent = this.notificationsCenterScrollableContent?.nativeElement;\n        if (!scrollableContent) {\n            return false;\n        }\n\n        return target === scrollableContent || scrollableContent.contains(target as Node);\n    }\n\n    private isScrollableAreaPositionAtStart(): boolean {\n        return this.lastScrollCoordinates.scrollTop === 0;\n    }\n\n    private isScrollableAreaPositionAtEnd(): boolean {\n        const { lastScrollCoordinates } = this;\n\n        return (\n            lastScrollCoordinates.offsetHeight + lastScrollCoordinates.scrollTop >= lastScrollCoordinates.scrollHeight\n        );\n    }\n}\n","<div #notificationsCenterContent class=\"ic-notifications-center-content\" kbq-scrollbar (onScroll)=\"onScroll($event)\">\n    <div #notificationsCenterScrollableContent class=\"ic-notifications-center-content__scrollable\">\n        <ng-container *ngIf=\"isNotificationsSkeletonsVisible$ | icPush; else content\">\n            <ic-notification-skeleton></ic-notification-skeleton>\n            <ic-notification-skeleton></ic-notification-skeleton>\n            <ic-notification-skeleton></ic-notification-skeleton>\n        </ng-container>\n\n        <ng-template #content>\n            <ic-notifications-loading-error\n                *ngIf=\"isErrorVisibleAndNotificationsEmpty$ | icPush; else groups\"\n                [notificationsLoadingError]=\"notificationsLoadingError$ | icPush\"\n                [viewType]=\"NotificationLoadingErrorViewType.Normal\"\n                (reload)=\"loadNotifications$.next()\"\n            >\n            </ic-notifications-loading-error>\n\n            <ng-template #groups>\n                <ng-container *ngIf=\"hasGroups$ | icPush; else empty\">\n                    <ng-container *icWait=\"behaviorConfig$; let behaviorConfig\">\n                        <ic-notifications-group\n                            *ngFor=\"let group of notificationsGroups$ | icPush: []; trackBy: trackByGroupKey\"\n                            [group]=\"group\"\n                            [behaviorConfig]=\"behaviorConfig\"\n                            [notificationsGroupTitleTemplate]=\"notificationsGroupTitleTemplate$ | icPush\"\n                            [notificationTitleTemplate]=\"notificationTitleTemplate$ | icPush\"\n                            [notificationTextTemplate]=\"notificationTextTemplate$ | icPush\"\n                            [notificationActionTextTemplate]=\"notificationActionTextTemplate$ | icPush\"\n                            [contentRoot]=\"contentElement\"\n                            [notificationsFocus]=\"notificationsFocus\"\n                            (notificationsVisibilityChange)=\"onNotificationVisibilityChange($event)\"\n                            (notificationActionCallback)=\"actionCallback$.next($event)\"\n                            (remove)=\"onRemoveNotificationsGroup(group)\"\n                            (removeNotification)=\"removeNotifications$.next([$event])\"\n                            (notificationLinkClick)=\"notificationLinkClick$.next($event)\"\n                            (notificationClick)=\"notificationClick$.next($event)\"\n                        >\n                        </ic-notifications-group>\n                    </ng-container>\n\n                    <ic-notifications-loading-error\n                        *ngIf=\"isErrorVisibleAndNotificationsNotEmpty$ | icPush; else moreNotificationsLoader\"\n                        [notificationsLoadingError]=\"notificationsLoadingError$ | icPush\"\n                        [viewType]=\"NotificationLoadingErrorViewType.Slim\"\n                        (reload)=\"loadMoreNotifications$.next()\"\n                    >\n                    </ic-notifications-loading-error>\n                </ng-container>\n            </ng-template>\n\n            <ng-template #empty>\n                <ic-notifications-empty-message></ic-notifications-empty-message>\n            </ng-template>\n\n            <ng-template #moreNotificationsLoader>\n                <div\n                    *ngIf=\"(isAllNotificationLoaded$ | icPush) === false\"\n                    class=\"ic-notifications-center-content__spinner\"\n                >\n                    <kbq-progress-spinner\n                        *ngIf=\"isMoreNotificationsLoading$ | icPush\"\n                        mode=\"indeterminate\"\n                        [color]=\"KbqComponentColors.Theme\"\n                    ></kbq-progress-spinner>\n                </div>\n            </ng-template>\n        </ng-template>\n    </div>\n</div>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    TemplateRef,\n    ViewChild\n} from '@angular/core';\nimport { KbqBadgeColors } from '@koobiq/components/badge';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqToastData, KbqToastService } from '@koobiq/components/toast';\nimport { Observable, takeUntil } from 'rxjs';\n\nimport { DestroyService, HotKeyService } from '@mosaic-design/infosec-components/services';\nimport { TriggerTarget } from '@mosaic-design/infosec-components/types';\n\nimport { NotificationsCenterService } from '../../services';\nimport {\n    Application,\n    GoToReferrerEvent,\n    NewTemplatedNotification,\n    NotificationActionTextTemplateContext,\n    NotificationsCenterBehaviorConfig,\n    NotificationsGroupsProvider,\n    NotificationsGroupTitleTemplateContext,\n    NotificationsOptions,\n    NotificationStatus,\n    NotificationTemplateActionCallbackEvent,\n    NotificationTextTemplateContext,\n    NotificationTitleTemplateContext,\n    TemplatedNotification\n} from '../../types';\n\n@Component({\n    selector: 'ic-notifications-center',\n    templateUrl: './notifications-center.component.html',\n    styleUrls: ['./notifications-center.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [HotKeyService, DestroyService]\n})\nexport class NotificationsCenterComponent implements AfterViewInit, TriggerTarget {\n    protected readonly KbqBadgeColors = KbqBadgeColors;\n    protected readonly KbqComponentColors = KbqComponentColors;\n\n    @Input() set isNotificationsLoading(value: boolean) {\n        this.notificationsCenterService.dispatchIsNotificationsLoading(value);\n    }\n\n    @Input() set isMoreNotificationsLoading(value: boolean) {\n        this.notificationsCenterService.dispatchIsMoreNotificationsLoading(value);\n    }\n\n    @Input() set isAllNotificationLoaded(value: boolean) {\n        this.notificationsCenterService.dispatchIsAllNotificationLoaded(value);\n    }\n\n    @Input() set options(value: NotificationsOptions) {\n        this.notificationsCenterService.dispatchOptions(value);\n    }\n\n    get options(): NotificationsOptions {\n        return this.notificationsCenterService.options;\n    }\n\n    @Input() set notifications(value: TemplatedNotification[]) {\n        this.notificationsCenterService.dispatchNotifications(value);\n    }\n\n    @Input() set newNotifications(value: NewTemplatedNotification[]) {\n        this.notificationsCenterService.dispatchNewNotifications(value);\n\n        if (!this.notificationsCenterService.options.isDontDisturb) {\n            this.showToasts(value);\n        }\n    }\n\n    @Input() set unreadCount(value: number) {\n        this.notificationsCenterService.dispatchUnreadCount(value);\n    }\n\n    get unreadCount(): number {\n        return this.notificationsCenterService.unreadCount;\n    }\n\n    @Input() set groupsProvider(value: NotificationsGroupsProvider<unknown>) {\n        this.notificationsCenterService.dispatchGroupsProvider(value);\n    }\n\n    @Input() set notificationsLoadingError(value: unknown) {\n        this.notificationsCenterService.dispatchNotificationsLoadingError(value);\n    }\n\n    @Input() set applications(value: Application[] | undefined) {\n        this.notificationsCenterService.dispatchApplications(value ?? []);\n    }\n\n    @Input() set behaviorConfig(value: NotificationsCenterBehaviorConfig) {\n        this.notificationsCenterService.dispatchBehaviorConfig(value);\n    }\n\n    @Input() set notificationsGroupTitleTemplate(value: TemplateRef<NotificationsGroupTitleTemplateContext<unknown>>) {\n        this.notificationsCenterService.dispatchNotificationsGroupTitleTemplate(value);\n    }\n\n    @Input() set notificationTitleTemplate(value: TemplateRef<NotificationTitleTemplateContext>) {\n        this.notificationsCenterService.dispatchNotificationTitleTemplate(value);\n    }\n\n    @Input() set notificationTextTemplate(value: TemplateRef<NotificationTextTemplateContext>) {\n        this.notificationsCenterService.dispatchNotificationTextTemplate(value);\n    }\n\n    @Input() set notificationActionTextTemplate(value: TemplateRef<NotificationActionTextTemplateContext>) {\n        this.notificationsCenterService.dispatchNotificationActionTextTemplate(value);\n    }\n\n    @Output() actionCallback = new EventEmitter<NotificationTemplateActionCallbackEvent>();\n    @Output() goToReferrer = new EventEmitter<GoToReferrerEvent>();\n    @Output() notificationClick = new EventEmitter<TemplatedNotification>();\n    @Output() loadMoreNotifications = new EventEmitter<void>();\n    @Output() loadNotifications = new EventEmitter<void>();\n    @Output() markAsRead = new EventEmitter<string[]>();\n    @Output() optionsChange = new EventEmitter<NotificationsOptions>();\n    @Output() removeAllNotifications = new EventEmitter<void>();\n    @Output() removeNotifications = new EventEmitter<string[]>();\n\n    @Output() visibleChange = new EventEmitter<boolean>();\n\n    @ViewChild(KbqPopoverTrigger) popover: KbqPopoverTrigger | undefined;\n    @ViewChild('toast') toastTemplate: TemplateRef<unknown> | undefined;\n\n    isOptionsCollapsed = true;\n    notificationTitleTemplate$!: Observable<TemplateRef<NotificationTitleTemplateContext> | undefined>;\n    notificationTextTemplate$!: Observable<TemplateRef<NotificationTextTemplateContext> | undefined>;\n    notificationActionTextTemplate$!: Observable<TemplateRef<NotificationActionTextTemplateContext> | undefined>;\n    behaviorConfig$: Observable<NotificationsCenterBehaviorConfig>;\n    notifications$: Observable<TemplatedNotification[]>;\n    openedToasts = new Map<string, number>();\n    notificationsToShowAfterInit: TemplatedNotification[] = [];\n\n    constructor(\n        private notificationsCenterService: NotificationsCenterService,\n        private toastService: KbqToastService,\n        private destroyed$: DestroyService\n    ) {\n        this.notificationTitleTemplate$ = this.notificationsCenterService.notificationTitleTemplate$;\n        this.notificationTextTemplate$ = this.notificationsCenterService.notificationTextTemplate$;\n        this.notificationActionTextTemplate$ = this.notificationsCenterService.notificationActionTextTemplate$;\n        this.behaviorConfig$ = this.notificationsCenterService.behaviorConfig$;\n        this.notifications$ = this.notificationsCenterService.notifications$;\n\n        this.notificationsCenterService.actionCallback$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onNotificationActionCallback(event));\n\n        this.notificationsCenterService.notificationClick$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onNotificationClick(event));\n\n        this.notificationsCenterService.loadMoreNotifications$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe(() => this.loadMoreNotifications.emit());\n\n        this.notificationsCenterService.loadNotifications$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe(() => this.loadNotifications.emit());\n\n        this.notificationsCenterService.markAsRead$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.markAsRead.emit(event));\n\n        this.notificationsCenterService.optionsChange$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.optionsChange.emit(event));\n\n        this.notificationsCenterService.removeAllNotifications$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe(() => this.removeAllNotifications.emit());\n\n        this.notificationsCenterService.removeNotifications$\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onRemoveNotifications(event));\n    }\n\n    ngAfterViewInit(): void {\n        if (this.notificationsToShowAfterInit.length) {\n            this.showToasts(this.notificationsToShowAfterInit);\n        }\n    }\n\n    open(): void {\n        this.popover?.show();\n    }\n\n    close(): void {\n        this.popover?.hide();\n    }\n\n    get isOpened(): boolean {\n        return this.popover?.isOpen ?? false;\n    }\n\n    onPopoverVisibleChange(isVisible: boolean): void {\n        this.isOptionsCollapsed = true;\n\n        if (this.notificationsCenterService.behaviorConfig.loadNotificationsOnOpen && isVisible) {\n            this.loadNotifications.emit();\n        }\n\n        if (this.notificationsCenterService.behaviorConfig.clearNotificationsOnHide && !isVisible) {\n            this.notificationsCenterService.dispatchNotifications([]);\n        }\n\n        if (isVisible) {\n            this.hideToasts();\n        }\n\n        this.visibleChange.emit(isVisible);\n    }\n\n    onNotificationCenterClick(event: MouseEvent): void {\n        if (event.altKey) {\n            event.stopImmediatePropagation();\n\n            const options = {\n                ...this.options,\n                isDontDisturb: !this.options.isDontDisturb\n            };\n\n            this.optionsChange.emit(options);\n        }\n    }\n\n    onNotificationActionCallback(event: NotificationTemplateActionCallbackEvent): void {\n        this.actionCallback.emit(event);\n        this.popover?.hide();\n    }\n\n    onRemoveNotifications(ids: string[]): void {\n        this.removeNotifications.emit(ids);\n        this.hideToasts(ids);\n    }\n\n    onNotificationClick(notification: TemplatedNotification): void {\n        this.notificationClick.emit(notification);\n\n        const link = this.formatReferrerLink(notification);\n        if (link) {\n            this.goToReferrer.emit({\n                notification,\n                link\n            });\n        }\n    }\n\n    private formatReferrerLink(notification: TemplatedNotification): string | undefined {\n        const applications = this.notificationsCenterService.applications;\n        if (notification.referrer) {\n            const appLink = applications.find((app) => app.id === notification.source)?.endpoint;\n\n            return appLink ? `${appLink}${notification.referrer}` : undefined;\n        } else {\n            return undefined;\n        }\n    }\n\n    private showToasts(notifications: NewTemplatedNotification[]): void {\n        if (this.toastTemplate) {\n            const notificationsToShow = notifications\n                .filter((item) => item.notify && item.status === NotificationStatus.New)\n                .filter((item) => !this.openedToasts.has(item.id));\n\n            notificationsToShow.forEach((notification: TemplatedNotification) => {\n                const toast = this.toastService.show({\n                    content: this.toastTemplate,\n                    icon: false,\n                    closeButton: false,\n                    notification\n                } as KbqToastData);\n\n                this.openedToasts.set(notification.id, toast.id);\n            });\n        } else {\n            this.notificationsToShowAfterInit = notifications;\n        }\n    }\n\n    private hideToasts(ids?: string[]): void {\n        const normalizedIds = ids ?? Array.from(this.openedToasts.keys());\n\n        normalizedIds.forEach((id) => {\n            const toastId = this.openedToasts.get(id);\n\n            if (toastId !== undefined) {\n                this.toastService.hide(toastId);\n                this.openedToasts.delete(id);\n            }\n        });\n    }\n}\n","<div\n    class=\"ic-notifications-center-trigger\"\n    kbqPopover\n    kbqPopoverClass=\"ic-notifications-center-popover\"\n    [kbqPopoverHeader]=\"popoverHeader\"\n    [kbqPopoverContent]=\"popoverContent\"\n    (kbqPopoverVisibleChange)=\"onPopoverVisibleChange($event)\"\n    (click)=\"onNotificationCenterClick($event)\"\n>\n    <i\n        kbq-icon\n        [color]=\"KbqComponentColors.Contrast\"\n        class=\"ic-notifications-center-trigger__icon\"\n        [ngClass]=\"{\n            'kbq-bell_16': !options.isDontDisturb,\n            'kbq-bell-slash_16': options.isDontDisturb\n        }\"\n    ></i>\n\n    <kbq-badge\n        class=\"ic-notifications-center-trigger__badge\"\n        *ngIf=\"!options.isDontDisturb && unreadCount\"\n        [compact]=\"true\"\n        [badgeColor]=\"KbqBadgeColors.Error\"\n    >\n        {{ unreadCount > 99 ? '99+' : unreadCount }}\n    </kbq-badge>\n</div>\n\n<ng-template #popoverHeader>\n    <ic-notifications-center-header\n        [(isOptionsCollapsed)]=\"isOptionsCollapsed\"\n        [notifications]=\"notifications$ | icPush: []\"\n        (removeAllNotifications)=\"removeAllNotifications.emit()\"\n    >\n    </ic-notifications-center-header>\n\n    <ic-notifications-center-options\n        [options]=\"options\"\n        [isOptionsCollapsed]=\"isOptionsCollapsed\"\n        (optionsChange)=\"optionsChange.emit($event)\"\n    >\n    </ic-notifications-center-options>\n</ng-template>\n\n<ng-template #popoverContent>\n    <ic-notifications-center-content></ic-notifications-center-content>\n</ng-template>\n\n<ng-template #toast let-toast>\n    <ic-notification\n        *icWait=\"behaviorConfig$; let behaviorConfig\"\n        [notification]=\"toast.data.notification\"\n        [behaviorConfig]=\"behaviorConfig\"\n        [notificationTitleTemplate]=\"notificationTitleTemplate$ | icPush\"\n        [notificationTextTemplate]=\"notificationTextTemplate$ | icPush\"\n        [notificationActionTextTemplate]=\"notificationActionTextTemplate$ | icPush\"\n        [isPushNotification]=\"true\"\n        (actionCallback)=\"onNotificationActionCallback($event)\"\n        (removeNotification)=\"onRemoveNotifications([$event])\"\n        (notificationClick)=\"onNotificationClick($event)\"\n    >\n    </ic-notification>\n</ng-template>\n","import { cloneDeep, uniq, isString } from '@mosaic-design/infosec-components/utils';\n\nimport {\n    ActionType,\n    Application,\n    ApplicationType,\n    Notification,\n    NotificationTemplate,\n    NotificationTemplateAction,\n    TemplatedNotification,\n    TemplatedNotificationAction,\n    TemplatedNotificationMessageType\n} from '../types';\n\nexport class TemplatedNotificationMapper {\n    mapTemplatedNotification(\n        templates: NotificationTemplate[],\n        notification: Notification,\n        defaultTemplate: NotificationTemplate,\n        applications: Application[],\n        currentApplicationType: ApplicationType\n    ): TemplatedNotification {\n        const notificationClone: Notification = {\n            ...notification,\n            payload: { ...notification.payload }\n        };\n\n        let template = templates.find(\n            (item) => item.id === notification.type && item.applicationId === notification.source\n        );\n\n        if (!template) {\n            template = { ...defaultTemplate };\n            notificationClone.payload.type = notification.type;\n        } else {\n            template = cloneDeep(template);\n        }\n\n        const actionsByApp = this.getActionsByApp(template.actions, currentApplicationType);\n        const linkActions = actionsByApp.filter((action) => action.type === ActionType.Link);\n        const callbackActions = actionsByApp.filter((action) => action.type === ActionType.Callback);\n\n        return {\n            ...notificationClone,\n            ...template,\n            ...this.mapMessageAndMessageType(template),\n            actions: [...callbackActions, ...this.mapLinkActions(linkActions, notificationClone, applications)],\n            id: notificationClone.id\n        };\n    }\n\n    protected getActionsByApp(\n        actions: NotificationTemplateAction[] | undefined,\n        applicationType: ApplicationType\n    ): NotificationTemplateAction[] {\n        if (!actions) {\n            return [];\n        }\n\n        return actions.some((action) => action.appDisplayType === applicationType)\n            ? actions.filter((action) => action.appDisplayType === applicationType)\n            : actions.filter((action) => action.appDisplayType === ApplicationType.ALL);\n    }\n\n    protected formatActionLink(notification: Notification, action: NotificationTemplateAction): string {\n        const link = action.link || '';\n        const pattern = /\\{\\{(\\w+)\\}\\}/g;\n\n        // link: /#/siem/knowledge-packs?folderId={{packageId}}\n        // payload: { 'packageId': '29dd670e95124d1ea404b4a6262de7ec' }\n        // result: /#/siem/knowledge-packs?folderId=29dd670e95124d1ea404b4a6262de7ec\n        return link.replace(pattern, (match, variable: string) => ({ ...notification.payload })[variable] as string);\n    }\n\n    protected mapLinkActions(\n        actions: NotificationTemplateAction[],\n        notification: Notification,\n        applications: Application[]\n    ): TemplatedNotificationAction[] {\n        const result: TemplatedNotificationAction[] = [];\n\n        actions.forEach((action) => {\n            const applicationsByLinkType = applications.filter((app) => app.type === action.appLinkType);\n\n            const formattedLink = this.formatActionLink(notification, action);\n            const types = uniq(applicationsByLinkType.map((app) => app.type));\n            const isApplicationPrefixVisible = types.length > 1;\n\n            applicationsByLinkType.forEach((app) => {\n                const notificationAction: TemplatedNotificationAction = {\n                    ...action,\n                    link: `${app.endpoint}${formattedLink}`,\n                    titlePrefix: isApplicationPrefixVisible ? app.displayName : ''\n                };\n\n                if (!result.some((item) => item.link === notificationAction.link)) {\n                    result.push(notificationAction);\n                }\n            });\n        });\n\n        return result;\n    }\n\n    protected mapMessageAndMessageType(template: NotificationTemplate): {\n        message: string | string[] | undefined;\n        messageType: TemplatedNotificationMessageType;\n    } {\n        if (Array.isArray(template.text)) {\n            return {\n                message: template.text,\n                messageType: TemplatedNotificationMessageType.Multiline\n            };\n        }\n\n        if (isString(template.text)) {\n            return {\n                message: template.text,\n                messageType: TemplatedNotificationMessageType.Text\n            };\n        }\n\n        return {\n            message: undefined,\n            messageType: TemplatedNotificationMessageType.Empty\n        };\n    }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqPopoverModule } from '@koobiq/components/popover';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { KbqToastModule } from '@koobiq/components/toast';\nimport { KbqToggleModule } from '@koobiq/components/toggle';\n\nimport { IcCoalesceContentModule } from '@mosaic-design/infosec-components/components/coalesce-content';\nimport { IcSkeletonModule } from '@mosaic-design/infosec-components/components/skeleton';\nimport { IcWaitDirective } from '@mosaic-design/infosec-components/external/ngrx-component/directives';\nimport { IcPushPipe } from '@mosaic-design/infosec-components/external/ngrx-component/pipes';\nimport { IcDatePipe } from '@mosaic-design/infosec-components/pipes';\n\nimport {\n    NotificationComponent,\n    NotificationsCenterHeaderComponent,\n    NotificationsCenterOptionsComponent,\n    NotificationsEmptyMessageComponent,\n    NotificationsGroupComponent,\n    NotificationSkeletonComponent,\n    NotificationsLoadingErrorComponent\n} from './components';\nimport { NotificationsCenterComponent, NotificationsCenterContentComponent } from './containers';\n\nconst COMPONENTS = [\n    NotificationComponent,\n    NotificationSkeletonComponent,\n    NotificationsGroupComponent,\n    NotificationsCenterHeaderComponent,\n    NotificationsCenterOptionsComponent,\n    NotificationsLoadingErrorComponent,\n    NotificationsEmptyMessageComponent\n];\n\nconst CONTAINERS = [NotificationsCenterContentComponent, NotificationsCenterComponent];\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n\n        KbqIconModule,\n        KbqPopoverModule,\n        KbqButtonModule,\n        KbqBadgeModule,\n        KbqToggleModule,\n        KbqProgressSpinnerModule,\n        KbqLinkModule,\n        KbqToastModule,\n        KbqScrollbarModule,\n\n        FormsModule,\n        A11yModule,\n        IcSkeletonModule,\n        IcPushPipe,\n        IcDatePipe,\n        IcWaitDirective,\n        IcCoalesceContentModule\n    ],\n    declarations: [...COMPONENTS, ...CONTAINERS],\n    exports: [NotificationsCenterComponent]\n})\nexport class IcNotificationsCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i5","i1","i3","i5.NotificationComponent","i6","i2.NotificationsCenterService","i7.NotificationSkeletonComponent","i8.NotificationsGroupComponent","i9.NotificationsLoadingErrorComponent","i10.NotificationsEmptyMessageComponent","i1.NotificationsCenterService","i7","i8","i9.NotificationComponent","i10.NotificationsCenterHeaderComponent","i11.NotificationsCenterOptionsComponent","i12.NotificationsCenterContentComponent","i13"],"mappings":"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"}