{"version":3,"file":"fundamental-ngx-core-message-strip.mjs","sources":["../../../../libs/core/message-strip/alert/message-strip-alert.ref.ts","../../../../libs/core/message-strip/alert/default-config.ts","../../../../libs/core/message-strip/alert/tokens.ts","../../../../libs/core/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.ts","../../../../libs/core/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.ts","../../../../libs/core/message-strip/message-strip-icon.directive.ts","../../../../libs/core/message-strip/message-strip.enum.ts","../../../../libs/core/message-strip/message-strip.component.ts","../../../../libs/core/message-strip/message-strip.component.html","../../../../libs/core/message-strip/auto-dismiss-message-strip.directive.ts","../../../../libs/core/message-strip/alert/message-strip-alert/message-strip-alert.component.ts","../../../../libs/core/message-strip/alert/message-strip-alert/message-strip-alert.component.html","../../../../libs/core/message-strip/alert/message-strip-alert.service.ts","../../../../libs/core/message-strip/message-strip-indication-color.ts","../../../../libs/core/message-strip/message-strip.module.ts","../../../../libs/core/message-strip/fundamental-ngx-core-message-strip.ts"],"sourcesContent":["import { ComponentPortal } from '@angular/cdk/portal';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlert } from './message-strip-alert/message-strip-alert.interface';\n\nexport abstract class MessageStripAlertRef {\n    /** Message strip alert component portal which is rendered in the container */\n    abstract portal: ComponentPortal<MessageStripAlert>;\n    /**\n     * Function, which dismisses the alert, it calls the user-provided function\n     * after dismissing the actual alert\n     */\n    abstract dismiss: () => void;\n    /** Observable that emits when the alert is dismissed */\n    abstract onDismiss$: Observable<void>;\n}\n","import { OpenMessageStripAlertConfig } from './open-message-strip-alert.config';\n\nconst defaultConfig: Required<Omit<OpenMessageStripAlertConfig, 'content'>> = {\n    position: 'top-middle',\n    messageStrip: {},\n    closeOnNavigation: false\n};\n\n/**\n * Applies default config to the given config\n */\nexport function applyDefaultConfig<ComponentType = unknown>(\n    config: OpenMessageStripAlertConfig<ComponentType>\n): Required<OpenMessageStripAlertConfig<ComponentType>> {\n    return { ...defaultConfig, ...config };\n}\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlertPosition } from './message-strip-alert.position';\nimport { MessageStripAlertRef } from './message-strip-alert.ref';\nimport { MessageStripConfiguration } from './message-strip-configuration-type';\n\n/**\n * Injection token for getting the position of the message strip alert container.\n * Is available in any of the message strip alert components and in footer component.\n */\nexport const MessageStripAlertContainerPosition = new InjectionToken<MessageStripAlertPosition>(\n    'MessageStripAlertContainerPosition'\n);\n/**\n * Injection token for getting the list of the message strip alert refs\n * in the given container. Is available in the footer component injection\n * context.\n */\nexport const MessageStripAlertContainerAlertRefs = new InjectionToken<Observable<Nullable<MessageStripAlertRef[]>>>(\n    'MessageStripAlertContainerAlertRefs'\n);\n\nexport const MessageStripAlertComponentData = new InjectionToken<{\n    content: string | TemplateRef<any> | Type<any>;\n    closeOnNavigation: boolean;\n    messageStripConfig: MessageStripConfiguration;\n}>('MessageStripAlertComponentData');\n","import { ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, Injector, input, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripAlertService } from '../message-strip-alert.service';\nimport { MessageStripAlertContainerAlertRefs, MessageStripAlertContainerPosition } from '../tokens';\n\n/**\n * The component that represents the footer of the message strip alert container.\n * if user has provided the footer component through service, then this component\n * will render it inside itself.\n * Bear in mind that this component is always created, just sometimes if there is nothing to render\n * it will be empty.\n */\n@Component({\n    selector: 'fd-message-strip-alert-container-footer',\n    template: ` <ng-template [cdkPortalOutlet]=\"_footerComponentPortal()\"></ng-template> `,\n    styles: [\n        `\n            :host {\n                display: block;\n            }\n        `\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [PortalModule]\n})\nexport class MessageStripAlertContainerFooterComponent {\n    /** @hidden */\n    readonly alertRefs = input<Nullable<MessageStripAlertRef[]>>([]);\n\n    /**\n     * Reference to the user provided component's portal.\n     * @hidden\n     */\n    protected readonly _footerComponentPortal = signal<ComponentPortal<any> | undefined>(undefined);\n\n    /**\n     * Position of the overlay in which this component is rendered.\n     */\n    private readonly _position = inject(MessageStripAlertContainerPosition);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _messageStripAlertService = inject(MessageStripAlertService);\n\n    /**\n     * Observable representation of the alertRefs input for use in injected components.\n     */\n    private readonly _alertRefs$: Observable<Nullable<MessageStripAlertRef[]>>;\n\n    /**\n     * Footer component from service as signal.\n     */\n    private readonly _footerComponent = toSignal(this._messageStripAlertService.footerComponents$, {\n        initialValue: {}\n    });\n\n    /** @hidden */\n    constructor() {\n        // Convert alertRefs signal to observable in injection context\n        this._alertRefs$ = toObservable(this.alertRefs).pipe(takeUntilDestroyed(this._destroyRef));\n\n        effect(() => {\n            const footerComponent = this._footerComponent()[this._position];\n\n            if (footerComponent) {\n                this._footerComponentPortal.set(\n                    new ComponentPortal(\n                        footerComponent,\n                        null,\n                        Injector.create({\n                            providers: [\n                                {\n                                    provide: MessageStripAlertContainerAlertRefs,\n                                    useValue: this._alertRefs$\n                                }\n                            ]\n                        })\n                    )\n                );\n            } else {\n                this._footerComponentPortal.set(undefined);\n            }\n        });\n    }\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ComponentRef,\n    computed,\n    signal,\n    viewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { MessageStripAlertContainerFooterComponent } from '../message-strip-alert-container-footer/message-strip-alert-container-footer.component';\nimport { MessageStripAlertComponent } from '../message-strip-alert/message-strip-alert.component';\n\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripAlert } from '../message-strip-alert/message-strip-alert.interface';\n\n/**\n * This will be rendered in the overlay. It is responsible for rendering the alerts and the footer.\n */\n@Component({\n    selector: 'fd-message-strip-alert-container',\n    template: `\n        <div fdScrollbar>\n            @for (portal of attachedElements(); track portal) {\n                <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n            }\n        </div>\n        <fd-message-strip-alert-container-footer [alertRefs]=\"_alertRefs()\"></fd-message-strip-alert-container-footer>\n    `,\n    styleUrl: './message-strip-alert-container.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [PortalModule, ScrollbarDirective, MessageStripAlertContainerFooterComponent]\n})\nexport class MessageStripAlertContainerComponent {\n    /**\n     * The list of the elements that are attached to the container.\n     */\n    readonly attachedElements = signal<ComponentPortal<MessageStripAlert>[]>([]);\n\n    /**\n     * List of the rendered message strip alerts. It is used in the footer and is injected into the\n     * user-provided footer component portal. This way, user has full control over the container alerts.\n     * @hidden\n     */\n    protected readonly _alertRefs = computed(() =>\n        this._portalOutlets()\n            .map((outlet) => {\n                const componentRef = outlet.attachedRef as ComponentRef<MessageStripAlertComponent> | null;\n                return componentRef?.instance?.alertRef;\n            })\n            .filter((ref): ref is MessageStripAlertRef => !!ref)\n    );\n\n    /** @hidden */\n    private readonly _portalOutlets = viewChildren(CdkPortalOutlet);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n    selector: '[fdMessageStripIcon]'\n})\nexport class MessageStripIconDirective {\n    readonly templateRef = inject(TemplateRef);\n}\n","export const enum MessageStripTypeEnum {\n    INFORMATION = 'information',\n    WARNING = 'warning',\n    SUCCESS = 'success',\n    ERROR = 'error'\n}\n\nexport const enum MessageStringIconEnum {\n    ALERT = 'alert',\n    SUCCESS = 'sys-enter-2',\n    ERROR = 'error',\n    INFORMATION = 'information'\n}\n\nexport const enum MessageStripAnnouncement {\n    INFORMATION = 'coreMessageStrip.announcementInfo',\n    WARNING = 'coreMessageStrip.announcementWarning',\n    SUCCESS = 'coreMessageStrip.announcementSuccess',\n    ERROR = 'coreMessageStrip.announcementError'\n}\n\nexport type MessageStripAnnouncementType = `${MessageStripAnnouncement}`;\n\nexport const MESSAGE_STRIP_CLOSABLE = 'coreMessageStrip.closable';\n\nexport const MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT = 'coreMessageStrip.dismissLabel';\n\nexport const DEFAULT_HIDDEN_TEXT = 'coreMessageStrip.defaultHiddenText';\n\nexport const DEFAULT_DISMISS_BUTTON_TEXT = 'coreMessageStrip.defaultDismissButtonText';\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    contentChild,\n    DestroyRef,\n    ElementRef,\n    inject,\n    input,\n    output,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { MessageStripIconDirective } from './message-strip-icon.directive';\nimport { MessageStripIndicationColor } from './message-strip-indication-color';\nimport { MessageStripType } from './message-strip-type';\nimport {\n    DEFAULT_DISMISS_BUTTON_TEXT,\n    DEFAULT_HIDDEN_TEXT,\n    MESSAGE_STRIP_CLOSABLE,\n    MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT,\n    MessageStringIconEnum,\n    MessageStripAnnouncement,\n    MessageStripAnnouncementType,\n    MessageStripTypeEnum\n} from './message-strip.enum';\n\nlet messageStripUniqueId = 0;\n\n/**\n * The component that represents a message-strip. It can only be used inline.\n */\n@Component({\n    selector: 'fd-message-strip',\n    templateUrl: './message-strip.component.html',\n    styleUrl: './message-strip.component.scss',\n    host: {\n        '[attr.aria-label]': 'ariaLabel()',\n        '[attr.aria-labelledby]': 'hostAriaLabelledBy()',\n        '[attr.id]': 'id()',\n        '[style.width]': 'width()',\n        '[style.min-width]': 'minWidth()',\n        '[style.margin-bottom]': 'marginBottom()',\n        '[class]': 'cssClass()',\n        role: 'note'\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ButtonComponent, ContentDensityDirective, NgTemplateOutlet, IconComponent, AsyncPipe]\n})\nexport class MessageStripComponent {\n    /** Whether the message strip is dismissible. */\n    readonly dismissible = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n    /** Id of the element that labels the message-strip. */\n    readonly ariaLabelledBy = input<string | undefined | null>(null);\n\n    /** Title for dismiss button */\n    readonly dismissBtnTitle = input('');\n\n    /** The default message strip does not have an icon.\n     * The other types (warning, success, information and error) have icons by default.\n     * To remove the icon set the property to true.\n     */\n    readonly noIcon = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n    /** The type of the message strip.\n     * Can be one of *warning*, *success*, *information*, *error* or null.\n     */\n    readonly type = input<MessageStripType>();\n\n    /** Id for the message-strip component. If omitted, a unique one is generated. */\n    readonly id = input('', { transform: (value: string) => value || `fd-message-strip-${++messageStripUniqueId}` });\n\n    /** Aria label for the message-strip component element. */\n    readonly ariaLabel = input<string | undefined | null>(null);\n\n    /** Width of the message-strip. */\n    readonly width = input('');\n\n    /** Minimum width of the message-strip. */\n    readonly minWidth = input('');\n\n    /** Margin bottom of the message-strip. */\n    readonly marginBottom = input('');\n\n    /** indication color of the message-strip. */\n    readonly indicationColor = input<MessageStripIndicationColor>();\n\n    /** Event fired when the message-strip is dismissed. */\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    readonly onDismiss = output<void>();\n\n    /** Custom icon component */\n    readonly icon = contentChild(MessageStripIconDirective);\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef);\n\n    /**\n     * Computed aria-labelledby attribute.\n     * @hidden\n     */\n    protected readonly hostAriaLabelledBy = computed(() => {\n        const labelledBy = this.ariaLabelledBy();\n\n        if (labelledBy) {\n            return labelledBy;\n        }\n\n        const currentId = this.id();\n\n        return `${currentId}-hidden-text ${currentId}-content-text`;\n    });\n\n    /**\n     * Computed CSS class string for the component.\n     * @hidden\n     */\n    protected readonly cssClass = computed(() => {\n        const classes = ['fd-message-strip'];\n        const currentType = this.type();\n        const currentIndicationColor = this.indicationColor();\n\n        if (currentType) {\n            classes.push(`fd-message-strip--${currentType}`);\n        }\n        if (this.dismissible()) {\n            classes.push('fd-message-strip--dismissible');\n        }\n        if (this.noIcon()) {\n            classes.push('fd-message-strip--no-icon');\n        }\n        if (currentIndicationColor) {\n            classes.push(`fd-message-strip--indication-color-${currentIndicationColor}`);\n        }\n\n        return classes.join(' ');\n    });\n\n    /**\n     * Whether icon container should be shown.\n     * @hidden\n     */\n    protected readonly shouldShowIcon = computed(() => {\n        if (this.noIcon()) {\n            return false;\n        }\n        return !!this.icon() || !!this.type();\n    });\n\n    /**\n     * Type-specific icon name.\n     * @hidden\n     */\n    protected readonly typeSpecificIconName = computed(() => {\n        const currentType = this.type();\n        switch (currentType) {\n            case MessageStripTypeEnum.WARNING:\n                return MessageStringIconEnum.ALERT;\n            case MessageStripTypeEnum.SUCCESS:\n                return MessageStringIconEnum.SUCCESS;\n            case MessageStripTypeEnum.ERROR:\n                return MessageStringIconEnum.ERROR;\n            case MessageStripTypeEnum.INFORMATION:\n                return MessageStringIconEnum.INFORMATION;\n            default:\n                return '';\n        }\n    });\n\n    /** message strip information read by screen readers */\n    protected messageStripHiddenText = computed(() => {\n        const currentType = this.type();\n        const lang = this._langSignal();\n\n        if (!currentType) {\n            return this._translationResolver.resolve(lang, DEFAULT_HIDDEN_TEXT);\n        }\n\n        const announcementMap: Record<MessageStripTypeEnum, MessageStripAnnouncementType> = {\n            [MessageStripTypeEnum.WARNING]: MessageStripAnnouncement.WARNING,\n            [MessageStripTypeEnum.SUCCESS]: MessageStripAnnouncement.SUCCESS,\n            [MessageStripTypeEnum.ERROR]: MessageStripAnnouncement.ERROR,\n            [MessageStripTypeEnum.INFORMATION]: MessageStripAnnouncement.INFORMATION\n        };\n\n        const announcementType = announcementMap[currentType];\n        if (!announcementType) {\n            return this._translationResolver.resolve(lang, DEFAULT_HIDDEN_TEXT);\n        }\n\n        const announcement = this._translationResolver.resolve(lang, announcementType);\n        const closable = this.dismissible() ? this._translationResolver.resolve(lang, MESSAGE_STRIP_CLOSABLE) : '';\n        return `${announcement} ${closable}`;\n    });\n\n    /** default dismiss button text read by screen readers */\n    protected defaultDismissButtonText = computed(() => {\n        const currentType = this.type();\n        const lang = this._langSignal();\n\n        if (!currentType) {\n            return this._translationResolver.resolve(lang, DEFAULT_DISMISS_BUTTON_TEXT);\n        }\n\n        const announcementMap: Record<MessageStripTypeEnum, MessageStripAnnouncementType> = {\n            [MessageStripTypeEnum.WARNING]: MessageStripAnnouncement.WARNING,\n            [MessageStripTypeEnum.SUCCESS]: MessageStripAnnouncement.SUCCESS,\n            [MessageStripTypeEnum.ERROR]: MessageStripAnnouncement.ERROR,\n            [MessageStripTypeEnum.INFORMATION]: MessageStripAnnouncement.INFORMATION\n        };\n\n        const announcementType = announcementMap[currentType];\n        if (!announcementType) {\n            return this._translationResolver.resolve(lang, DEFAULT_DISMISS_BUTTON_TEXT);\n        }\n\n        const announcement = this._translationResolver.resolve(lang, announcementType);\n        const closeButtonText = this._translationResolver.resolve(lang, MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT);\n        return `${announcement} ${closeButtonText}`;\n    });\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    private readonly _translationResolver = inject(TranslationResolver);\n\n    /**\n     * Dismisses the message-strip.\n     */\n    dismiss(): void {\n        this.elementRef.nativeElement.classList.add('fd-has-display-none');\n        this.elementRef.nativeElement.classList.remove('fd-has-display-block');\n        this.onDismiss.emit();\n    }\n}\n","@if (shouldShowIcon()) {\n    <div class=\"fd-message-strip__icon-container\" aria-hidden=\"true\">\n        @if (icon()) {\n            <ng-template [ngTemplateOutlet]=\"icon()!.templateRef\"></ng-template>\n        } @else {\n            <fd-icon [glyph]=\"typeSpecificIconName()\" role=\"presentation\" aria-hidden=\"true\"></fd-icon>\n            <span class=\"fd-message-strip__sr-only\" id=\"{{ id() }}-hidden-text\">{{ messageStripHiddenText() }}</span>\n        }\n    </div>\n}\n<p class=\"fd-message-strip__text\" id=\"{{ id() }}-content-text\">\n    <ng-content></ng-content>\n</p>\n@if (dismissible()) {\n    <button\n        class=\"fd-message-strip__close\"\n        fd-button\n        glyph=\"decline\"\n        fdType=\"transparent\"\n        fdCompact\n        (click)=\"dismiss()\"\n        [attr.aria-controls]=\"id()\"\n        [ariaLabel]=\"dismissBtnTitle() || defaultDismissButtonText()\"\n        [attr.title]=\"dismissBtnTitle() || defaultDismissButtonText()\"\n    ></button>\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input, isDevMode, signal } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { fromEvent, map, merge, Observable, of, startWith, takeUntil } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { MessageStripComponent } from './message-strip.component';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'fd-message-strip[mousePersist], fd-message-strip[duration], fd-message-strip[autoDismiss]',\n    exportAs: 'fdAutoDismissMessageStrip',\n    standalone: true,\n    host: {\n        '[style.display]': '!_opened() ? \"none\" : null'\n    }\n})\nexport class AutoDismissMessageStripDirective {\n    /** Whether the message strip is dismissible */\n    readonly dismissible = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n    /** Whether the alert should be automatically dismissed. */\n    readonly autoDismiss = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n    /** Duration of time *in milliseconds* that the alert will be visible. Set to -1 for indefinite. */\n    readonly duration = input(10000);\n\n    /** Whether the alert should stay open if the mouse is hovering over it. */\n    readonly mousePersist = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the message strip is currently opened.\n     * @hidden\n     */\n    protected readonly _opened = signal(false);\n\n    /** @hidden */\n    private readonly _messageStripComponent = inject(MessageStripComponent, { optional: false, host: true });\n\n    /** @hidden */\n    private readonly _onDismiss$ = outputToObservable(this._messageStripComponent.onDismiss);\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private _autoDismissTimeout?: ReturnType<typeof setTimeout>;\n\n    /** @hidden */\n    private _mouseIn$?: Observable<boolean>;\n\n    /**\n     * Gets observable tracking mouse hover state.\n     * Lazily initialized to ensure ElementRef is available.\n     * @hidden\n     */\n    private get _mouseIn(): Observable<boolean> {\n        if (!this._mouseIn$) {\n            this._mouseIn$ = merge(\n                fromEvent(this._elementRef.nativeElement, 'mouseenter').pipe(map(() => true)),\n                fromEvent(this._elementRef.nativeElement, 'mouseleave').pipe(map(() => false))\n            ).pipe(startWith(false));\n        }\n        return this._mouseIn$;\n    }\n\n    /**\n     * Opens the message strip and starts auto-dismiss timer if configured.\n     * This method is part of the public API via exportAs.\n     */\n    open(): void {\n        this._opened.set(true);\n        this._elementRef.nativeElement.classList.remove('fd-has-display-block');\n        this._elementRef.nativeElement.classList.remove('fd-has-display-none');\n        this._stopAutoDismiss();\n        if (this.autoDismiss() && !this.dismissible() && isDevMode()) {\n            console.warn(\n                'Auto dismiss is enabled but the message strip is not dismissible. Please set the dismissible input to true.'\n            );\n        }\n        if (this.autoDismiss() && this.dismissible()) {\n            this._startAutoDismiss();\n        }\n    }\n\n    /** @hidden */\n    private _stopAutoDismiss(): void {\n        if (this._autoDismissTimeout) {\n            clearTimeout(this._autoDismissTimeout);\n            this._autoDismissTimeout = undefined;\n        }\n    }\n\n    /** @hidden */\n    private _startAutoDismiss(): void {\n        const startAutoDismissTimer$ = new Observable((res) => {\n            this._autoDismissTimeout = setTimeout(() => {\n                this._dismiss();\n                res.next(null);\n            }, this.duration());\n            return () => this._stopAutoDismiss();\n        });\n        if (this.duration() > -1) {\n            const source$ = this.mousePersist()\n                ? this._mouseIn.pipe(\n                      switchMap((mouseIn) => {\n                          if (mouseIn) {\n                              return of(null);\n                          }\n                          return startAutoDismissTimer$;\n                      })\n                  )\n                : startAutoDismissTimer$;\n            source$.pipe(takeUntil(merge(destroyObservable(this._destroyRef), this._onDismiss$))).subscribe();\n        }\n    }\n\n    /** @hidden */\n    private _dismiss(): void {\n        this._messageStripComponent.dismiss();\n    }\n}\n","import { ComponentPortal, DomPortal, Portal, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport {\n    afterNextRender,\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    inject,\n    Renderer2,\n    TemplateRef,\n    Type,\n    viewChild,\n    ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AutoDismissMessageStripDirective } from '../../auto-dismiss-message-strip.directive';\nimport { MessageStripComponent } from '../../message-strip.component';\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripConfiguration } from '../message-strip-configuration-type';\nimport { MessageStripAlertComponentData } from '../tokens';\nimport { MessageStripAlert } from './message-strip-alert.interface';\n\nexport type MessageStripAlertPortalType<ComponentType> =\n    | DomPortal\n    | TemplatePortal<{\n          $implicit: MessageStripAlertRef;\n      }>\n    | ComponentPortal<ComponentType>;\n\n/**\n * The wrapper component, which is wrapping the Message Strip and passes\n * configuration to it, also generates the content which will appear in it.\n */\n@Component({\n    templateUrl: `./message-strip-alert.component.html`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MessageStripComponent, PortalModule, AutoDismissMessageStripDirective]\n})\nexport class MessageStripAlertComponent<ComponentType = unknown> implements MessageStripAlert {\n    /** @hidden */\n    readonly autoDismissMessageStripDirective = viewChild.required(AutoDismissMessageStripDirective);\n\n    /** User provided data. Full of it */\n    readonly data = inject(MessageStripAlertComponentData);\n\n    /** Configuration for the message strip appearance */\n    readonly messageStripConfig: MessageStripConfiguration;\n\n    /** Portal, which is responsible for correctly rendering user provided content. It can be any type of the portal */\n    readonly contentPortal: Portal<unknown>;\n\n    /**\n     * Reference to the message strip alert, which is used to close it from the outside, or access the data and/or the component instance\n     *  */\n    readonly alertRef = inject(MessageStripAlertRef);\n\n    /** @hidden */\n    private readonly _viewContainerRef = inject(ViewContainerRef);\n\n    /** @hidden */\n    private readonly _renderer2 = inject(Renderer2);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /**\n     * Timeout, which is responsible for auto-dismissing the message strip.\n     * It should be properly cleared on component destroy.\n     */\n    private _autoDismissTimeout?: ReturnType<typeof setTimeout>;\n\n    /** @hidden */\n    constructor() {\n        this.messageStripConfig = this.data.messageStripConfig;\n        this.contentPortal = this._getPortal(this.data.content);\n\n        if (this.data.closeOnNavigation) {\n            inject(Router, { optional: true })\n                ?.events.pipe(\n                    filter((event) => event instanceof NavigationStart),\n                    takeUntilDestroyed(this._destroyRef)\n                )\n                .subscribe(() => this.onDismissHandler());\n        }\n\n        // Open message strip after view initialization\n        afterNextRender(() => {\n            this.autoDismissMessageStripDirective().open();\n        });\n\n        // Cleanup timeout on destroy\n        this._destroyRef.onDestroy(() => {\n            if (this._autoDismissTimeout) {\n                clearTimeout(this._autoDismissTimeout);\n            }\n        });\n    }\n\n    /**\n     * Handler for the dismiss button click.\n     *  */\n    onDismissHandler(): void {\n        this.messageStripConfig.onDismiss();\n    }\n\n    /**\n     * Method, which is responsible for generating the portal, which will be rendered inside the message strip.\n     * It can be any type of the portal, depending on the user provided content.\n     *  */\n    private _getPortal(\n        content:\n            | string\n            | TemplateRef<{\n                  $implicit: MessageStripAlertRef;\n              }>\n            | Type<ComponentType>\n    ): MessageStripAlertPortalType<ComponentType> {\n        if (typeof content === 'string') {\n            const textEl = this._renderer2.createText(content);\n            this._renderer2.appendChild(this._viewContainerRef.element.nativeElement, textEl);\n            return new DomPortal(textEl);\n        }\n        if (content instanceof TemplateRef) {\n            return new TemplatePortal(content, this._viewContainerRef, { $implicit: this.alertRef });\n        }\n        return new ComponentPortal(content);\n    }\n}\n","<fd-message-strip\n    [class]=\"messageStripConfig.class\"\n    [dismissible]=\"messageStripConfig.dismissible\"\n    [autoDismiss]=\"messageStripConfig.duration > 0\"\n    [mousePersist]=\"messageStripConfig.mousePersist\"\n    [duration]=\"messageStripConfig.duration\"\n    [noIcon]=\"messageStripConfig.noIcon\"\n    [type]=\"messageStripConfig.type\"\n    [id]=\"messageStripConfig.id\"\n    [ariaLabelledBy]=\"messageStripConfig.ariaLabelledBy\"\n    [ariaLabel]=\"messageStripConfig.ariaLabel\"\n    (onDismiss)=\"onDismissHandler()\"\n>\n    <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n</fd-message-strip>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector, Type, inject, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ResponsiveBreakpoints, ViewportSizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { patchLanguage } from '@fundamental-ngx/i18n';\nimport { Observable, Subject, combineLatest, map, tap } from 'rxjs';\nimport { applyDefaultConfig } from './default-config';\nimport { MessageStripAlertContainerComponent } from './message-strip-alert-container/message-strip-alert-container.component';\nimport { MessageStripAlertPosition } from './message-strip-alert.position';\nimport { MessageStripAlertRef } from './message-strip-alert.ref';\nimport { MessageStripAlertComponent } from './message-strip-alert/message-strip-alert.component';\nimport { MessageStripAlert } from './message-strip-alert/message-strip-alert.interface';\nimport { OpenMessageStripAlertConfig } from './open-message-strip-alert.config';\nimport { MessageStripAlertComponentData, MessageStripAlertContainerPosition } from './tokens';\n\n/**\n * Service that is responsible for opening and closing message strip alerts.\n * This should be only created once in entire application.\n * Service is responsible for creating and managing the overlays for the\n * message strip alerts. This also manages the footer components for any\n * given position.\n */\n@Injectable({\n    providedIn: 'root'\n})\nexport class MessageStripAlertService {\n    /** @hidden */\n    footerComponents$: Observable<Partial<Record<MessageStripAlertPosition, Type<any>>>>;\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _overlay = inject(Overlay);\n\n    /** @hidden */\n    private readonly _viewportSize$ = inject(ViewportSizeObservable);\n\n    /** @hidden */\n    private readonly _messageStripAlertService = inject(MessageStripAlertService, { optional: true, skipSelf: true });\n\n    /**\n     * Signal holding all message alerts\n     * @hidden\n     */\n    private readonly _messageAlerts = signal<\n        Array<\n            Required<OpenMessageStripAlertConfig> & {\n                portal: ComponentPortal<MessageStripAlert>;\n            }\n        >\n    >([]);\n\n    /** @hidden */\n    private _overlayRefs: Partial<\n        Record<\n            MessageStripAlertPosition,\n            {\n                ref: OverlayRef;\n                containerRef: ComponentRef<MessageStripAlertContainerComponent>;\n            }\n        >\n    > = {};\n\n    /**\n     * Signal holding footer components\n     * @hidden\n     */\n    private readonly _messageStripAlertContainerFooters = signal<Partial<Record<MessageStripAlertPosition, Type<any>>>>(\n        {}\n    );\n    /** @hidden */\n    constructor() {\n        if (this._messageStripAlertService) {\n            throw new Error('MessageStripAlertService is already provided');\n        }\n        this.footerComponents$ = toObservable(this._messageStripAlertContainerFooters);\n        this._listenToItemsChanges();\n    }\n\n    /**\n     * Set the footer component for a given position.\n     * @param position - The position where the footer should be displayed\n     * @param component - The component type to be rendered as footer\n     */\n    setFooterComponent(position: MessageStripAlertPosition, component: Type<any>): void {\n        this._messageStripAlertContainerFooters.update((footers) => ({\n            ...footers,\n            [position]: component\n        }));\n    }\n\n    /**\n     * Open a message strip alert with given configuration.\n     * @param c - Configuration for the message strip alert\n     * @returns Reference to the opened alert for programmatic control\n     */\n    open<ComponentType = unknown>(c: OpenMessageStripAlertConfig<ComponentType>): MessageStripAlertRef {\n        const config = applyDefaultConfig<ComponentType>(c);\n        const alertRef = this._getMessageStripAlertRef(config);\n        this._messageAlerts.update((alerts) => [{ ...config, portal: alertRef.portal }, ...alerts]);\n        return alertRef;\n    }\n\n    /** @hidden */\n    private _getMessageStripAlertRef<ComponentType = unknown>(\n        config: Required<OpenMessageStripAlertConfig<ComponentType>>\n    ): MessageStripAlertRef {\n        const onDismiss$ = new Subject<void>();\n        const alertRef = {\n            portal: new ComponentPortal(\n                MessageStripAlertComponent<ComponentType>,\n                null,\n                Injector.create({\n                    providers: [\n                        {\n                            provide: MessageStripAlertComponentData,\n                            useValue: {\n                                content: config.content,\n                                closeOnNavigation: config.closeOnNavigation,\n                                messageStripConfig: {\n                                    ...config.messageStrip,\n                                    onDismiss: () => {\n                                        this._messageAlerts.update((alerts) =>\n                                            alerts.filter((item) => item.portal !== alertRef.portal)\n                                        );\n                                        config.messageStrip &&\n                                            config.messageStrip.onDismiss &&\n                                            config.messageStrip.onDismiss();\n                                        onDismiss$.next();\n                                        onDismiss$.complete();\n                                    }\n                                }\n                            }\n                        },\n                        {\n                            provide: MessageStripAlertRef,\n                            useFactory: () => alertRef\n                        },\n                        patchLanguage((lang) => ({\n                            coreMessageStrip: {\n                                dismissLabel: config.messageStrip.dismissLabel || lang.coreMessageStrip.dismissLabel\n                            }\n                        }))\n                    ],\n                    parent: this._injector\n                })\n            ),\n            dismiss: () => {\n                this._messageAlerts.update((alerts) => alerts.filter((item) => item.portal !== alertRef.portal));\n                config.messageStrip && config.messageStrip.onDismiss && config.messageStrip.onDismiss();\n                onDismiss$.next();\n                onDismiss$.complete();\n            },\n            onDismiss$: onDismiss$.asObservable()\n        };\n        return alertRef;\n    }\n\n    /** @hidden */\n    private _listenToItemsChanges(): void {\n        combineLatest([this._viewportSize$, toObservable(this._messageAlerts)])\n            .pipe(\n                map(\n                    ([viewportSize, messageAlerts]): Record<\n                        MessageStripAlertPosition,\n                        Array<ComponentPortal<MessageStripAlert>>\n                    > => {\n                        if (viewportSize < ResponsiveBreakpoints.M) {\n                            return messageAlerts.reduce(\n                                (acc, next) => {\n                                    const position = next.position?.startsWith('top') ? 'top-middle' : 'bottom-middle';\n                                    acc[position] = [...(acc[position] || []), next.portal];\n                                    return acc;\n                                },\n                                {} as Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n                            );\n                        }\n                        return messageAlerts.reduce(\n                            (acc, next) => {\n                                acc[next.position] = [...(acc[next.position] || []), next.portal];\n                                return acc;\n                            },\n                            {} as Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n                        );\n                    }\n                ),\n                tap(\n                    (\n                        messageAlertsByPosition: Partial<\n                            Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n                        >\n                    ) => {\n                        let topSectionIsOpened = false;\n                        let bottomSectionIsOpened = false;\n                        (\n                            Object.entries(messageAlertsByPosition) as Array<\n                                [MessageStripAlertPosition, ComponentPortal<MessageStripAlert>[]]\n                            >\n                        ).forEach(([position, portals]) => {\n                            topSectionIsOpened = topSectionIsOpened || position.startsWith('top');\n                            bottomSectionIsOpened = bottomSectionIsOpened || position.startsWith('bottom');\n                            const { containerRef } = this._getOverlayRef(position);\n                            containerRef.instance.attachedElements.set(portals);\n                        });\n                        this._syncExistingOverlays(messageAlertsByPosition, bottomSectionIsOpened, topSectionIsOpened);\n                    }\n                )\n            )\n            .subscribe();\n    }\n\n    /**\n     * Synchronizes existing overlay states based on current message alerts.\n     * @hidden\n     */\n    private _syncExistingOverlays(\n        messageAlertsByPosition: Partial<Record<MessageStripAlertPosition, ComponentPortal<MessageStripAlert>[]>>,\n        bottomSectionIsOpened: boolean,\n        topSectionIsOpened: boolean\n    ): void {\n        (Object.keys(this._overlayRefs) as MessageStripAlertPosition[]).forEach((position) => {\n            const overlayRef = this._overlayRefs[position];\n            if (!overlayRef) {\n                return;\n            }\n            if (!messageAlertsByPosition[position]) {\n                overlayRef.ref.dispose();\n                delete this._overlayRefs[position];\n            } else {\n                const ref = overlayRef.ref;\n                if (position.startsWith('top')) {\n                    if (bottomSectionIsOpened) {\n                        ref.overlayElement.classList.add('fd-message-strip-alert-overlay--bottom-opened');\n                    } else {\n                        ref.overlayElement.classList.remove('fd-message-strip-alert-overlay--bottom-opened');\n                    }\n                }\n                if (position.startsWith('bottom')) {\n                    if (topSectionIsOpened) {\n                        ref.overlayElement.classList.add('fd-message-strip-alert-overlay--top-opened');\n                    } else {\n                        ref.overlayElement.classList.remove('fd-message-strip-alert-overlay--top-opened');\n                    }\n                }\n            }\n        });\n    }\n\n    /**\n     * Gets or creates an overlay reference for the specified position.\n     * @hidden\n     */\n    private _getOverlayRef(position: MessageStripAlertPosition): {\n        ref: OverlayRef;\n        containerRef: ComponentRef<MessageStripAlertContainerComponent>;\n    } {\n        if (!this._overlayRefs[position]) {\n            const [verticalPosition, horizontalPosition] = position.split('-');\n            const overlayRef = this._createOverlay(verticalPosition, horizontalPosition);\n            const containerRef = overlayRef.attach(\n                new ComponentPortal(\n                    MessageStripAlertContainerComponent,\n                    null,\n                    Injector.create({\n                        parent: this._injector,\n                        providers: [\n                            {\n                                provide: MessageStripAlertContainerPosition,\n                                useValue: position\n                            }\n                        ]\n                    })\n                )\n            );\n            this._overlayRefs[position] = { ref: overlayRef, containerRef };\n        }\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return this._overlayRefs[position]!;\n    }\n\n    /**\n     * Creates an overlay for message strip alerts at the specified position.\n     * @hidden\n     */\n    private _createOverlay(verticalPosition: string, horizontalPosition: string): OverlayRef {\n        return this._overlay.create({\n            panelClass: [\n                'fd-message-strip-alert-overlay',\n                `fd-message-strip-alert-overlay--${verticalPosition}`,\n                `fd-message-strip-alert-overlay--${horizontalPosition}`\n            ],\n            hasBackdrop: false\n        });\n    }\n}\n","const messageStripIndicationColors = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] as const;\n\nexport type MessageStripIndicationColor =\n    | `${(typeof messageStripIndicationColors)[number]}`\n    | `${(typeof messageStripIndicationColors)[number]}b`;\n\nexport const _messageStripIndicationColors = messageStripIndicationColors.reduce(\n    (acc: MessageStripIndicationColor[], item) => {\n        acc.push(item);\n        acc.push(`${item}b`);\n        return acc;\n    },\n    []\n) as MessageStripIndicationColor[];\n","import { NgModule } from '@angular/core';\n\nimport { AutoDismissMessageStripDirective } from './auto-dismiss-message-strip.directive';\nimport { MessageStripIconDirective } from './message-strip-icon.directive';\nimport { MessageStripComponent } from './message-strip.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [MessageStripComponent, AutoDismissMessageStripDirective, MessageStripIconDirective],\n    exports: [MessageStripComponent, AutoDismissMessageStripDirective, MessageStripIconDirective]\n})\nexport class MessageStripModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}