{"version":3,"file":"static/js/5698ee89dcbc85d3783d.bundle.js","mappings":"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","sources":["webpack://goodwill-loyalty/./src/modules/notification-components/base/base-notification-component.tsx?47ca","webpack://goodwill-loyalty/./src/modules/notification-components/base/closable-notification-component.tsx?aac5","webpack://goodwill-loyalty/./src/modules/notification-components/base/dismissible-notification-component.tsx?5826","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-close-button-component.tsx?a90a","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-content-component.tsx?6476","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-description-component.tsx?fb91","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-footer-component.tsx?e051","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-header-component.tsx?6866","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-instance-component.tsx?e395","webpack://goodwill-loyalty/./src/modules/notification-components/base/notification-title-component.tsx?c4e8","webpack://goodwill-loyalty/./src/modules/notification-components/notification-components-lists-manager.ts?8bd2","webpack://goodwill-loyalty/./src/modules/notification-components/system-notifications/error-notification-component.tsx?96e4","webpack://goodwill-loyalty/./src/modules/notification-components/system-notifications/loading-notification-component.tsx?bf13","webpack://goodwill-loyalty/./src/modules/notification-components/system-notifications/success-notification-component.tsx?dfb0","webpack://goodwill-loyalty/./src/modules/notification-components/system-notifications/system-notification-component.tsx?60e2","webpack://goodwill-loyalty/./src/modules/notification-components/system-notifications/warning-notification-component.tsx?8b88","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/base/base-notification.ts?d830","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/base/dismissible-notification.ts?f9b7","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/base/events/notification-events.ts?8fd5","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/base/with-notification-component-decorator.ts?485e","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/system-notifications/system-notification.ts?bd82","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/system-notifications/error-notification.ts?5a19","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/system-notifications/loading-notification.ts?4441","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/system-notifications/success-notification.ts?d3e3","webpack://goodwill-loyalty/./src/modules/notifications-data-instances/system-notifications/warning-notification.ts?d9bf","webpack://goodwill-loyalty/./src/modules/notifications-manager/notification-feeds.ts?12a2","webpack://goodwill-loyalty/./src/modules/notifications-manager/notifications-manager.ts?3350"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\n\n/**\n * Default props for a component responsible for rendering the given notification.\n * @remark Modify carefully as it's initialized by the notifications manager to provide dynamic rendering.\n */\nexport interface INotificationProps<NotificationType extends BaseNotification> {\n    notification: NotificationType;\n}\n\n/**\n * Default props for a component responsible for rendering some part of notification, but not the whole notification (e.g. @see NotificationTitle).\n */\nexport interface INotificationElementProps<NotificationType extends BaseNotification> extends INotificationProps<NotificationType> {}\n\n/**\n * Represents a base class which renders a notification or a part of notification.\n */\nexport abstract class BaseNotificationComponent<\n    NotificationType extends BaseNotification,\n    PropsType extends INotificationProps<NotificationType> = INotificationProps<NotificationType>,\n    StateType = {}\n> extends React.PureComponent<PropsType, StateType> {\n    public constructor(props: PropsType) {\n        super(props);\n    }\n\n    public abstract render(): React.ReactNode;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Random } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React, { ReactNode } from 'react';\n\nimport { BaseNotification, IClosableNotification } from '../../notifications-data-instances';\nimport { NotificationEvents } from '../../notifications-data-instances/base/events';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Represents state for closable wrapper.\n */\nexport interface IClosableNotificationWrapperState {\n    isClosed: boolean;\n}\n\n/**\n * Wraps children into closable wrapper which hides the children (notification body) when the notification is closed.\n */\nexport class ClosableNotificationWrapper<\n    NotificationType extends BaseNotification & IClosableNotification\n> extends BaseNotificationComponent<NotificationType, INotificationElementProps<NotificationType>, IClosableNotificationWrapperState> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-closable-notification';\n\n    /**\n     * Unique id of the component.\n     */\n    private readonly _instanceId: string;\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        super(props);\n\n        this._instanceId = `ClosableNotificationWrapper-${Random.Guid.generateGuid()}`;\n\n        this.state = {\n            isClosed: false\n        };\n\n        this._close = this._close.bind(this);\n        this._unsubscribeFromEvents = this._unsubscribeFromEvents.bind(this);\n    }\n\n    public componentDidMount(): void {\n        this._subscribeToEvents(this.props.notification);\n    }\n\n    public componentDidUpdate(previousProps: INotificationElementProps<NotificationType>): void {\n        this._unsubscribeFromEvents(previousProps.notification);\n        this._subscribeToEvents(this.props.notification);\n    }\n\n    public componentWillUnmount(): void {\n        this._unsubscribeFromEvents(this.props.notification);\n    }\n\n    public render(): ReactNode {\n        let className = ClosableNotificationWrapper.className;\n        if (this.state.isClosed) {\n            className = classnames(className, `${ClosableNotificationWrapper.className}__closed`);\n        }\n\n        return <div className={className}>{this.props.children}</div>;\n    }\n\n    private _subscribeToEvents(notification: NotificationType): void {\n        notification.events.getValue(NotificationEvents.Close)!.subscribe({\n            instanceId: this._instanceId,\n            handler: this._close\n        });\n        notification.events.getValue(NotificationEvents.RemovedFromList)!.subscribe({\n            instanceId: this._instanceId,\n            handler: () => {\n                this._unsubscribeFromEvents(notification);\n            }\n        });\n    }\n\n    private _unsubscribeFromEvents(notification: NotificationType): void {\n        notification.unsubscribeFromEvents(this._instanceId);\n    }\n\n    private _close(): void {\n        this._unsubscribeFromEvents(this.props.notification);\n\n        this.setState({ isClosed: this.props.notification.isClosed });\n\n        // Wait for the animation before removing completely.\n        setTimeout(() => {\n            this.props.notification.remove();\n        }, 100);\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React, { ReactNode } from 'react';\n\nimport { DismissibleNotification, NotificationEvents } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\nexport interface IDismissibleNotificationWrapperState {\n    isDismissing: boolean;\n    isDismissed: boolean;\n}\n\n/**\n * Wrapper over notification body which allows dismissing of the notification.\n * It setups timeouts and hides the notification body when the notification should be dismissed.\n */\nexport class DismissibleNotificationWrapper<NotificationType extends DismissibleNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationElementProps<NotificationType>,\n    IDismissibleNotificationWrapperState\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-dismissible-notification';\n\n    /**\n     * Waiting for dismissing timer.\n     */\n    private _timer?: NodeJS.Timeout;\n\n    /**\n     * Unique id of the component.\n     */\n    private readonly _instanceId: string;\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        super(props);\n\n        this.state = {\n            isDismissing: false,\n            isDismissed: false\n        };\n\n        this._instanceId = `DismissibleNotificationWrapper-${Random.Guid.generateGuid()}`;\n\n        this._setTimer = this._setTimer.bind(this);\n        this._clearTimer = this._clearTimer.bind(this);\n        this._startDismissing = this._startDismissing.bind(this);\n        this._preventDismissing = this._preventDismissing.bind(this);\n        this._preventDismissingHandler = this._preventDismissingHandler.bind(this);\n        this._finishDismissing = this._finishDismissing.bind(this);\n        this._updateState = this._updateState.bind(this);\n        this._unsubscribeFromEvents = this._unsubscribeFromEvents.bind(this);\n    }\n\n    public componentDidMount(): void {\n        if (this.props.notification.autoDismissTimeout !== null) {\n            this._setTimer();\n        }\n        this._subscribeToEvents(this.props.notification);\n    }\n\n    public componentDidUpdate(previousProps: INotificationElementProps<NotificationType>): void {\n        this._unsubscribeFromEvents(previousProps.notification);\n        this._subscribeToEvents(this.props.notification);\n    }\n\n    public componentWillUnmount(): void {\n        this._unsubscribeFromEvents(this.props.notification);\n    }\n\n    public render(): ReactNode {\n        let className = DismissibleNotificationWrapper.className;\n        if (this.state.isDismissing) {\n            className = classnames(className, `${DismissibleNotificationWrapper.className}__dismissing`);\n        }\n        if (this.state.isDismissed) {\n            className = classnames(className, `${DismissibleNotificationWrapper.className}__dismissed`);\n        }\n\n        const onMouseEnter = this.props.notification.shouldResetOnHover ? this._preventDismissing : undefined;\n        const onMouseLeave = this.props.notification.shouldResetOnHover ? this._setTimer : undefined;\n\n        return (\n            <div className={className} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onAnimationEnd={this._finishDismissing}>\n                {this.props.children}\n            </div>\n        );\n    }\n\n    private _subscribeToEvents(notification: NotificationType): void {\n        notification.events.getValue(NotificationEvents.StartDismissing)!.subscribe({\n            instanceId: this._instanceId,\n            handler: this._updateState\n        });\n        notification.events.getValue(NotificationEvents.PreventDismissing)!.subscribe({\n            instanceId: this._instanceId,\n            handler: this._preventDismissingHandler\n        });\n        notification.events.getValue(NotificationEvents.FinishDismissing)!.subscribe({\n            instanceId: this._instanceId,\n            handler: () => this._updateState\n        });\n        notification.events.getValue(NotificationEvents.RemovedFromList)!.subscribe({\n            instanceId: this._instanceId,\n            handler: () => {\n                this._unsubscribeFromEvents(notification);\n            }\n        });\n    }\n\n    private _unsubscribeFromEvents(notification: NotificationType): void {\n        notification.unsubscribeFromEvents(this._instanceId);\n    }\n\n    private _setTimer(): void {\n        this._timer = setTimeout(() => {\n            this._startDismissing();\n        }, this.props.notification.autoDismissTimeout!);\n    }\n\n    private _clearTimer(): void {\n        if (!ObjectExtensions.isNullOrUndefined(this._timer)) {\n            clearTimeout(this._timer);\n        }\n    }\n\n    private _startDismissing(): void {\n        this.props.notification.startDismissing();\n    }\n\n    private _preventDismissingHandler(): void {\n        this._clearTimer();\n        this._updateState();\n    }\n\n    private _preventDismissing(): void {\n        this.props.notification.preventDismissing();\n    }\n\n    private _finishDismissing(): void {\n        this.props.notification.finishDismissing();\n        this._updateState();\n    }\n\n    private _updateState(): void {\n        this.setState({ isDismissing: this.props.notification.isDismissing, isDismissed: this.props.notification.isDismissed });\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { BaseNotification, IClosableNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\nexport interface INotificationCloseButtonState {\n    isClosed: boolean;\n}\n\nexport interface INotificationCloseButtonProps<NotificationType extends BaseNotification & IClosableNotification>\n    extends INotificationElementProps<NotificationType> {}\n\n/**\n * Represents a close button for the notification which triggers notification.close().\n */\nexport class NotificationCloseButton<NotificationType extends BaseNotification & IClosableNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationCloseButtonProps<NotificationType>,\n    INotificationCloseButtonState\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-close';\n\n    public constructor(props: INotificationCloseButtonProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n        this.state = {\n            isClosed: false\n        };\n    }\n\n    public render(): React.ReactNode {\n        return (\n            <button\n                type=\"button\"\n                onClick={this._close}\n                className={NotificationCloseButton.className}\n                aria-label={this.props.notification.closeAriaLabel}\n            />\n        );\n    }\n\n    /**\n     * Sends a message to close the notification.\n     */\n    private readonly _close: () => void = () => {\n        this.props.notification.close();\n    };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Represents the component which composes the body of a notification.\n */\nexport class NotificationContent<NotificationType extends BaseNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationElementProps<NotificationType>\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-content';\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    public render(): React.ReactNode {\n        return <div className={NotificationContent.className}>{this.props.children}</div>;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { BaseNotification, IDescriptiveNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Displays notification description lines.\n */\nexport class NotificationDescription<\n    NotificationType extends BaseNotification & IDescriptiveNotification\n> extends BaseNotificationComponent<NotificationType, INotificationElementProps<NotificationType>> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-description';\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    public render(): React.ReactNode {\n        if (!ArrayExtensions.hasElements(this.props.notification.descriptionLines)) {\n            return null;\n        }\n\n        return (\n            <div className={NotificationDescription.className}>\n                {this.props.notification.descriptionLines.map((line, index) => {\n                    if (StringExtensions.isNullOrWhitespace(line.toString())) {\n                        return null;\n                    }\n                    return <RichTextComponent key={index} text={line} className={`${NotificationDescription.className}__line`} />;\n                })}\n                {this.props.children}\n            </div>\n        );\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Displays footer of the notification.\n * Usually footer is used for extra actions.\n */\nexport class NotificationFooter<NotificationType extends BaseNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationElementProps<NotificationType>\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-footer';\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    public render(): React.ReactNode {\n        return <div className={NotificationFooter.className}>{this.props.children}</div>;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { ReactNode } from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Displays header of the notification.\n * Usually header is used for displaying the title and close X button.\n */\nexport class NotificationHeader<NotificationType extends BaseNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationElementProps<NotificationType>\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-header';\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    public render(): ReactNode {\n        return <div className={NotificationHeader.className}>{this.props.children}</div>;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { ReactNode } from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Represents the notification body which is displayed to the user.\n * It should include header, content, footer.\n */\nexport class NotificationInstance<NotificationType extends BaseNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationElementProps<NotificationType>\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-instance';\n\n    public constructor(props: INotificationElementProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    public render(): ReactNode {\n        return <div className={NotificationInstance.className}>{this.props.children}</div>;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { BaseNotification, ITitledNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Props for the notification title component.\n */\nexport interface INotificationTitleProps<NotificationType extends BaseNotification & ITitledNotification>\n    extends INotificationElementProps<NotificationType> {\n    /**\n     * Represents a node which should be displayed before the title. Optional field.\n     */\n    preChildren?: React.ReactNode;\n\n    /**\n     * Represents a node which should be displayed after the title. Optional field.\n     */\n    postChildren?: React.ReactNode;\n}\n\n/**\n * Renders notification title.\n */\nexport class NotificationTitle<NotificationType extends BaseNotification & ITitledNotification> extends BaseNotificationComponent<\n    NotificationType,\n    INotificationTitleProps<NotificationType>\n> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-title';\n\n    public constructor(props: INotificationTitleProps<NotificationType>) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    public render(): React.ReactNode {\n        return (\n            <div className={NotificationTitle.className}>\n                {this.props.preChildren}\n                <RichTextComponent text={this.props.notification.title} />\n                {this.props.postChildren}\n            </div>\n        );\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Dictionary } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { NotificationFeeds, NotificationFeedType } from '../notifications-manager/notification-feeds';\nimport { INotificationComponentsList } from './base-notification-component-list';\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class NotificationComponentsListsManager {\n    /**\n     * Instances of the lists currently shown on the page.\n     * Dictionary of lists by the feed.\n     */\n    private static readonly _instances: Dictionary<NotificationFeedType, INotificationComponentsList[]> = new Dictionary();\n\n    /**\n     * Retrieve the lists which are displayed currently on the page for the given feed.\n     * @param {NotificationFeeds} [feed] The feed to filter the lists. Global feed by default.\n     */\n    public static getNotificationLists(feed: NotificationFeeds): INotificationComponentsList[] {\n        return NotificationComponentsListsManager._instances.getValueWithDefaultValue(feed, []);\n    }\n\n    /**\n     * Registers notification components list to listen to notification manager.\n     * @param {INotificationComponentsList} notificationComponentsList The component which renders the notifications.\n     */\n    public static subscribe(notificationComponentsList: INotificationComponentsList): void {\n        NotificationComponentsListsManager._instances\n            .getValueWithDefaultValue(notificationComponentsList.feed, [])\n            .push(notificationComponentsList);\n    }\n\n    /**\n     * Removes the notification components list from the instances which listen to notification manager.\n     * @param {INotificationComponentsList} notificationComponentsList The component which renders the notifications.\n     */\n    public static unsubscribe(notificationComponentsList: INotificationComponentsList): void {\n        const instances = NotificationComponentsListsManager._instances.getValueWithDefaultValue(notificationComponentsList.feed, []);\n        const newInstances = instances.filter(list => list !== notificationComponentsList);\n        NotificationComponentsListsManager._instances.setValue(notificationComponentsList.feed, newInstances);\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nimport { ErrorNotification } from '../../notifications-data-instances/system-notifications';\nimport { INotificationCloseButtonProps } from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\nimport { SystemNotificationComponent } from './system-notification-component';\n\n/**\n * Props for error notification.\n */\nexport interface IErrorNotificationProps extends INotificationProps<ErrorNotification>, INotificationCloseButtonProps<ErrorNotification> {}\n\n/**\n * Component responsible for rendering an error notification.\n */\nexport class ErrorNotificationComponent extends BaseNotificationComponent<ErrorNotification, IErrorNotificationProps> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-error';\n\n    /**\n     * Initializes the component with the given configuration.\n     * @param {IErrorNotificationProps} props Configuration of the component.\n     */\n    public constructor(props: IErrorNotificationProps) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    /**\n     * Renders the given error notification.\n     */\n    public render(): React.ReactNode {\n        return <SystemNotificationComponent notification={this.props.notification} className={ErrorNotificationComponent.className} />;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Spinner } from 'office-ui-fabric-react';\nimport React from 'react';\n\nimport { LoadingNotification } from '../../notifications-data-instances/system-notifications';\nimport {\n    DismissibleNotificationWrapper,\n    NotificationContent,\n    NotificationDescription,\n    NotificationHeader,\n    NotificationInstance,\n    NotificationTitle\n} from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\n\n/**\n * Props for loading notification.\n */\nexport interface ILoadingNotificationProps extends INotificationProps<LoadingNotification> {}\n\n/**\n * Component responsible for rendering a loading notification.\n */\nexport class LoadingNotificationComponent extends BaseNotificationComponent<LoadingNotification, ILoadingNotificationProps> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-loading';\n\n    /**\n     * Initializes the component with the given configuration.\n     * @param {ILoadingNotificationProps} props Configuration of the component.\n     */\n    public constructor(props: ILoadingNotificationProps) {\n        super(props);\n    }\n\n    /**\n     * Renders the given notification.\n     */\n    public render(): React.ReactNode {\n        return (\n            <div className={LoadingNotificationComponent.className}>\n                <DismissibleNotificationWrapper notification={this.props.notification}>\n                    <NotificationInstance notification={this.props.notification}>\n                        <NotificationHeader notification={this.props.notification}>\n                            <NotificationTitle notification={this.props.notification} preChildren={this._renderSpinner()} />\n                        </NotificationHeader>\n                        {ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n                            <NotificationContent notification={this.props.notification}>\n                                <NotificationDescription notification={this.props.notification} />\n                            </NotificationContent>\n                        ) : null}\n                    </NotificationInstance>\n                </DismissibleNotificationWrapper>\n            </div>\n        );\n    }\n\n    /**\n     * Renders a loading spinner.\n     * @returns Spinner.\n     */\n    private readonly _renderSpinner = () => {\n        return <Spinner />;\n    };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nimport { SuccessNotification } from '../../notifications-data-instances/system-notifications';\nimport { INotificationCloseButtonProps } from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\nimport { SystemNotificationComponent } from './system-notification-component';\n\n/**\n * Props for success notification.\n */\nexport interface ISuccessNotificationProps\n    extends INotificationProps<SuccessNotification>,\n        INotificationCloseButtonProps<SuccessNotification> {}\n\n/**\n * Component responsible for rendering a success notification.\n */\nexport class SuccessNotificationComponent extends BaseNotificationComponent<SuccessNotification, ISuccessNotificationProps> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-success';\n\n    /**\n     * Initializes the component with the given configuration.\n     * @param {ISuccessNotificationProps} props Configuration of the component.\n     */\n    public constructor(props: ISuccessNotificationProps) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    /**\n     * Renders the given success notification.\n     */\n    public render(): React.ReactNode {\n        return <SystemNotificationComponent notification={this.props.notification} className={SuccessNotificationComponent.className} />;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { SystemNotification } from '../../notifications-data-instances/system-notifications';\nimport {\n    ClosableNotificationWrapper,\n    DismissibleNotificationWrapper,\n    INotificationCloseButtonProps,\n    NotificationCloseButton,\n    NotificationContent,\n    NotificationDescription,\n    NotificationHeader,\n    NotificationInstance,\n    NotificationTitle\n} from '../base';\nimport { BaseNotificationComponent, INotificationElementProps } from '../base/base-notification-component';\n\n/**\n * Props for system notification.\n */\nexport interface ISystemNotificationProps\n    extends INotificationElementProps<SystemNotification>,\n        INotificationCloseButtonProps<SystemNotification> {\n    /**\n     * The class for the styles.\n     */\n    className: string;\n}\n\n/**\n * Component responsible for rendering a system notification.\n */\nexport class SystemNotificationComponent extends BaseNotificationComponent<SystemNotification, ISystemNotificationProps> {\n    /**\n     * Initializes the component with the given configuration.\n     * @param {ISuccessNotificationProps} props Configuration of the component.\n     */\n    public constructor(props: ISystemNotificationProps) {\n        super(props);\n    }\n\n    /**\n     * Renders the given success notification.\n     */\n    public render(): React.ReactNode {\n        return (\n            <div className={this.props.className}>\n                <ClosableNotificationWrapper notification={this.props.notification}>\n                    <DismissibleNotificationWrapper notification={this.props.notification}>\n                        <NotificationInstance notification={this.props.notification}>\n                            <NotificationHeader notification={this.props.notification}>\n                                <NotificationTitle notification={this.props.notification} />\n                                <NotificationCloseButton notification={this.props.notification} />\n                            </NotificationHeader>\n                            {ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n                                <NotificationContent notification={this.props.notification}>\n                                    <NotificationDescription notification={this.props.notification} />\n                                </NotificationContent>\n                            ) : null}\n                        </NotificationInstance>\n                    </DismissibleNotificationWrapper>\n                </ClosableNotificationWrapper>\n            </div>\n        );\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nimport { WarningNotification } from '../../notifications-data-instances/system-notifications/warning-notification';\nimport { INotificationCloseButtonProps } from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\nimport { SystemNotificationComponent } from './system-notification-component';\n\n/**\n * Component responsible for rendering a warning notification.\n */\nexport interface IWarningNotificationProps\n    extends INotificationProps<WarningNotification>,\n        INotificationCloseButtonProps<WarningNotification> {}\n\n/**\n * Component responsible for rendering a success notification.\n */\nexport class WarningNotificationComponent extends BaseNotificationComponent<WarningNotification, IWarningNotificationProps> {\n    /**\n     * The class for the styles.\n     */\n    public static readonly className: string = 'msc-notification-warning';\n\n    /**\n     * Initializes the component with the given configuration.\n     * @param {ISuccessNotificationProps} props Configuration of the component.\n     */\n    public constructor(props: IWarningNotificationProps) {\n        // Disable jest test coverage due to the issue in jest processing super calls.\n        /* istanbul ignore next */\n        super(props);\n    }\n\n    /**\n     * Renders the given success notification.\n     */\n    public render(): React.ReactNode {\n        return <SystemNotificationComponent notification={this.props.notification} className={WarningNotificationComponent.className} />;\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Dictionary, Event, Random } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { INotificationProps } from '../../notification-components/base/base-notification-component';\nimport { NotificationEvents } from './events';\n\n/**\n * Represents a react component class which renders a notification.\n */\nexport type NotificationComponentClass = React.ComponentClass<INotificationProps<BaseNotification>, {}>;\n\n/**\n * Represents base functionality of a notification.\n */\nexport abstract class BaseNotification {\n    /**\n     * Notification events for the current notification.\n     */\n    public readonly events: Dictionary<NotificationEvents, Event>;\n\n    /**\n     * The local date set when the instance was created.\n     */\n    public readonly receivedDate: Date;\n\n    /**\n     * Unique identifier of the notification.\n     * Represents a GUID that is automatically generated during the object initialization.\n     */\n    public readonly id: string;\n\n    /**\n     * The react class which is responsible for rendering the current instance of notification.\n     * Should be set using @withNotificationComponent decorator.\n     */\n    public readonly notificationComponentConstructor!: NotificationComponentClass;\n\n    /**\n     * Specifies if the notification instance was removed from a notification list.\n     */\n    public get isRemoved(): boolean {\n        return this._isRemoved;\n    }\n\n    /**\n     * Specifies if the notification instance was removed from a notification list.\n     */\n    protected _isRemoved: boolean;\n\n    /**\n     * Initializes a notification with base information such as id, events, date when initialized.\n     */\n    public constructor() {\n        this.receivedDate = new Date();\n        this._isRemoved = false;\n        this.events = new Dictionary({ key: NotificationEvents.RemovedFromList, value: new Event() });\n        this.id = `Notification-${Random.Guid.generateGuid()}`;\n    }\n\n    /**\n     * Updates the notification instance when it's removed from a notification list.\n     * Should be called from a notification component once the notification can be disposed.\n     */\n    public remove(): void {\n        this._isRemoved = true;\n        this.events.getValue(NotificationEvents.RemovedFromList)?.trigger();\n        this._dispose();\n    }\n\n    /**\n     * Unsubscribes given instance from all the events for the notification.\n     * @param {string} instanceId Unique id which represents the event handler.\n     * @remarks Does nothing in case the instance was not subscribed to any event.\n     */\n    public unsubscribeFromEvents(instanceId: string): void {\n        this.events.getValues().forEach(event => {\n            event.unsubscribe(instanceId);\n        });\n    }\n\n    /**\n     * Disposes the events by unsubscribing all members.\n     */\n    protected _dispose(): void {\n        this.events.getValues().forEach(event => {\n            event.unsubscribeAll();\n        });\n        this.events.clear();\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Event } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { BaseNotification } from './base-notification';\nimport { NotificationEvents } from './events';\n\n/**\n * Specifies the timeouts in milliseconds used for the dismissing.\n */\nexport enum DismissTimeout {\n    /**\n     * Default timeout which should be used for most of the notification.\n     */\n    Default = 10_000\n}\n\n/**\n * Represents a notification which can be automatically dismissed.\n * @remark Dismissing means automatically hiding the notification after some specific delay.\n */\nexport abstract class DismissibleNotification extends BaseNotification {\n    /**\n     * Shows that the notification is in progress of dismissing when dismissing animation is in progress.\n     * @remark The process can be prevented by hovering on a notification.\n     */\n    public get isDismissing(): boolean {\n        return this._isDismissing;\n    }\n\n    /**\n     * Shows that the notification is fully dismissed and is hidden to user now.\n     * The notification can be removed from the list and disposed.\n     */\n    public get isDismissed(): boolean {\n        return this._isDismissed;\n    }\n\n    /**\n     * Specifies the delay in milliseconds for the notification.\n     * @remarks Using `DismissTimeout` is preferable.\n     */\n    public readonly autoDismissTimeout: DismissTimeout | number | null;\n\n    /**\n     * Specifies if the dismissing should be delayed (the timer should be reset) when user hovers on the notification.\n     * True by default. Use false when notification should be dismissed regardless if user wants to interact with it or not (e.g. For limited time offers).\n     */\n    public readonly shouldResetOnHover: boolean;\n\n    /**\n     * Shows that the notification is in progress of dismissing when dismissing animation is in progress.\n     * @remark The process can be prevented by hovering on a notification.\n     */\n    protected _isDismissing: boolean;\n\n    /**\n     * Shows that the notification is fully dismissed and is hidden to user now.\n     * The notification can be removed from the list and disposed.\n     */\n    protected _isDismissed: boolean;\n\n    /**\n     * Initializes events and sets the delays for the dismissing.\n     * @param {DismissTimeout | number} autoDismissTimeout The delay in milliseconds after which the notification should start play the hiding animation.\n     * By default refers to `DismissTimeout.Default`.\n     * Prefer using `DismissTimeout` than specifying the number.\n     * @param {boolean} shouldResetOnHover Flag which specifies if the dismissing should be delayed (the timer should be reset) when user hovers on the notification.\n     * True by default. Use false when notification should be dismissed regardless if user wants to interact with it or not (e.g. for limited time offers).\n     */\n    public constructor(autoDismissTimeout: DismissTimeout | number | null = DismissTimeout.Default, shouldResetOnHover: boolean = true) {\n        if (autoDismissTimeout === null && shouldResetOnHover) {\n            throw new Error(\n                'Invalid parameters passed for dismissible notification. shouldResetOnHover = true is incompatible with autoDismissTimeout = null.'\n            );\n        }\n\n        super();\n\n        this.autoDismissTimeout = autoDismissTimeout;\n        this.shouldResetOnHover = shouldResetOnHover;\n\n        this._isDismissed = false;\n        this._isDismissing = false;\n\n        this.events.setValue(NotificationEvents.StartDismissing, new Event());\n        this.events.setValue(NotificationEvents.PreventDismissing, new Event());\n        this.events.setValue(NotificationEvents.FinishDismissing, new Event());\n    }\n\n    /**\n     * Starts dismissing process by updating the `isDismissing` field and triggering the start dismissing event.\n     */\n    public startDismissing(): void {\n        this._isDismissing = true;\n        this.events.getValue(NotificationEvents.StartDismissing)?.trigger();\n    }\n\n    /**\n     * Prevents dismissing process by updating the `isDismissing` field and triggering the prevent dismissing event.\n     */\n    public preventDismissing(): void {\n        this._isDismissing = false;\n        this.events.getValue(NotificationEvents.PreventDismissing)?.trigger();\n    }\n\n    /**\n     * Finishes dismissing process by updating the `isDismissing` and `isDismissed` fields,\n     * triggers the finish dismissing event,\n     * removes the notification from the list as it should be hidden already.\n     */\n    public finishDismissing(): void {\n        this._isDismissing = false;\n        this._isDismissed = true;\n        this.events.getValue(NotificationEvents.FinishDismissing)?.trigger();\n        this.remove();\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Enum with the possible notification UI events.\n */\nexport enum NotificationEvents {\n    Close = 'Close',\n    StartDismissing = 'StartDismissing',\n    FinishDismissing = 'FinishDismissing',\n    PreventDismissing = 'PreventDismissing',\n    RemovedFromList = 'RemovedFromList'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INotificationProps } from '../../notification-components';\nimport { BaseNotification } from './base-notification';\n\n/**\n * Decorator which should be used to specify the react component class for a notification data instances.\n * @param {React.ComponentClass<PropsType, StateType>} componentClass The component class responsible for rendering all the data instances of this notification class.\n */\nexport const withNotificationComponent = <\n    NotificationType extends BaseNotification,\n    PropsType extends INotificationProps<NotificationType>,\n    StateType extends {}\n>(\n    componentClass: React.ComponentClass<PropsType, StateType>\n) => {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return <T extends new (...args: any[]) => {}>(constructor: T) => {\n        return class extends constructor {\n            public readonly notificationComponentConstructor: React.ComponentClass<PropsType, StateType> = componentClass;\n        };\n    };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichText } from '@msdyn365-commerce/core';\nimport { Event, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { DismissibleNotification, IClosableNotification, IDescriptiveNotification, ITitledNotification, NotificationEvents } from '../base';\n\n/**\n * Represents a system notification data instance.\n * By default, all system notification should have a title, be closable, auto-dismissible.\n * You can specify some optional description text for the main message.\n */\nexport abstract class SystemNotification extends DismissibleNotification\n    implements ITitledNotification, IDescriptiveNotification, IClosableNotification {\n    /**\n     * Aria label which should be used for the close button. Should be localized.\n     * @see IClosableNotification\n     */\n    public readonly closeAriaLabel: string;\n\n    /**\n     * Specifies if the notification is closed or not. True if it's closed, false otherwise.\n     * @remark Use only to get information about the 'close' event, dismissible notifications do not use this field.\n     * @see IClosableNotification\n     */\n    public isClosed: boolean;\n\n    /**\n     * The text with the title of notification. The text should be localized.\n     * @see ITitledNotification\n     */\n    public readonly title: RichText;\n\n    /**\n     * The lines of text which are displayed to user. The text should be localized. Empty by default.\n     * @see IDescriptiveNotification\n     */\n    public readonly descriptionLines: RichText[];\n\n    /**\n     * Initializes system notification with the given data.\n     * @param {string} title The text with the title of notification. The text should be localized.\n     * @param {string} closeAriaLabel Aria label which should be used for the close button. Should be localized.\n     * @param {(string | undefined)[]} [descriptionLines] Description for the notification. Optional parameter.\n     * The data will be filtered to include only non-null/non-whitespace text.\n     */\n    public constructor(title: RichText, closeAriaLabel: string, descriptionLines?: (RichText | undefined)[]) {\n        super();\n\n        this.title = title;\n        this.closeAriaLabel = closeAriaLabel;\n        this.descriptionLines = <RichText[]>(\n            (descriptionLines ?? []).filter(value => !StringExtensions.isNullOrWhitespace(value?.toString()))\n        );\n        this.isClosed = false;\n\n        this.events.setValue(NotificationEvents.Close, new Event());\n    }\n\n    /**\n     * Triggers close event and marks that the notification is closed now.\n     * Implementation should modify the `isClosed` field first and then trigger the `NotificationEvents.Close` event.\n     * @see IClosableNotification\n     */\n    public close(): void {\n        this.isClosed = true;\n        this.events.getValue(NotificationEvents.Close)?.trigger();\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ErrorNotificationComponent } from '../../notification-components/system-notifications/error-notification-component';\nimport { withNotificationComponent } from '../base';\nimport { SystemNotification } from './system-notification';\n\n/**\n * Represents an error notification.\n * Use this notification when some flow fails and you want to display a simple message to the user.\n * This is one of the types of system notifications.\n */\n@withNotificationComponent(ErrorNotificationComponent)\nexport class ErrorNotification extends SystemNotification {}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichText } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { LoadingNotificationComponent } from '../../notification-components/system-notifications/loading-notification-component';\nimport { DismissibleNotification, IDescriptiveNotification, ITitledNotification, withNotificationComponent } from '../base';\n\n/**\n * Represents a loading notification.\n * Use this notification when a process takes some time to be completed.\n * This type of notification should be used to show the user that the flow is in process.\n * @remark Do not use the notification for quick actions.\n */\n@withNotificationComponent(LoadingNotificationComponent)\nexport class LoadingNotification extends DismissibleNotification implements ITitledNotification, IDescriptiveNotification {\n    /**\n     * The text with the title of notification. The text should be localized.\n     * @see ITitledNotification\n     */\n    public readonly title: RichText;\n\n    /**\n     * The lines of text which are displayed to user. The text should be localized. Empty by default.\n     * @see IDescriptiveNotification\n     */\n    public readonly descriptionLines: RichText[];\n\n    /**\n     * Represents loading state when some flow is in progress.\n     */\n    public get isLoading(): boolean {\n        return this._isLoading;\n    }\n\n    /**\n     * Represents loading state when some flow is in progress.\n     */\n    private _isLoading: boolean;\n\n    /**\n     * Initializes system notification with the given data.\n     * @param {string} title The text with the title of notification. The text should be localized.\n     * @param {string} closeAriaLabel Aria label which should be used for the close button. Should be localized.\n     * @param {(string | undefined)[]} [descriptionLines] Description for the notification. Optional parameter.\n     * The data will be filtered to include only non-null/non-whitespace text.\n     */\n    public constructor(title: RichText, descriptionLines?: (RichText | undefined)[]) {\n        super(null, false);\n\n        this._isLoading = true;\n        this.title = title;\n        this.descriptionLines = <RichText[]>(\n            (descriptionLines ?? []).filter(value => !StringExtensions.isNullOrWhitespace(value?.toString()))\n        );\n    }\n\n    /**\n     * Tells notification instance that the loading is completed.\n     */\n    public finishLoading(): void {\n        this._isLoading = false;\n        this.startDismissing();\n    }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SuccessNotificationComponent } from '../../notification-components/system-notifications/success-notification-component';\nimport { withNotificationComponent } from '../base';\nimport { SystemNotification } from './system-notification';\n\n/**\n * Represents a success notification.\n * Use this notification for the successful scenarios when you want to display a simple message to the user.\n * This is one of the types of system notifications.\n */\n@withNotificationComponent(SuccessNotificationComponent)\nexport class SuccessNotification extends SystemNotification {}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { WarningNotificationComponent } from '../../notification-components/system-notifications/warning-notification-component';\nimport { withNotificationComponent } from '../base';\nimport { SystemNotification } from './system-notification';\n\n/**\n * Represents a warning notification.\n * Use this notification when you want to provide some additional information or hints to the user.\n * For the success or error scenarios, please use `SuccessNotification` or `ErrorNotification` instead.\n * This is one of the types of system notifications.\n */\n@withNotificationComponent(WarningNotificationComponent)\nexport class WarningNotification extends SystemNotification {}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Specifies different feeds for the notification lists.\n * Denotes the purpose of a notification list and what kind of notifications should be passed to the list.\n * By default is global (the global notification lists which is used to show most notifications).\n */\nexport enum NotificationFeeds {\n    Global = 'global'\n}\n\n/**\n * Represents a type of each notification feed. Is used for notification lists components.\n * @see NotificationFeeds\n */\nexport type NotificationFeedType = string;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, Event } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { INotificationComponentType } from '../notification-components/notification-component-type';\nimport { NotificationComponentsListsManager } from '../notification-components/notification-components-lists-manager';\nimport { BaseNotification, NotificationComponentClass } from '../notifications-data-instances';\nimport { NotificationFeeds } from './notification-feeds';\n\n/**\n * Notification manager is a singleton.\n * It is responsible for receiving a notification,\n * retrieving notification component class,\n * and passing the component class to the notification components lists.\n * @see NotificationComponentsList which renders the list of notifications.\n */\nexport class NotificationsManager {\n    /**\n     *  Singleton global instance of the notification manager.\n     */\n    private static _applicationNotificationManager?: NotificationsManager;\n\n    /**\n     * Event which is triggered after the notification was added to the lists.\n     * @see addNotification method.\n     * @remark is not triggered in case of any errors.\n     */\n    public readonly notificationAddedEvent: Event;\n\n    /**\n     * Retrieves global singleton instance of the notifications manager.\n     * @returns {NotificationsManager} Instance of the manager which is used throughout the whole application.\n     */\n    public static instance(): NotificationsManager {\n        if (!this._applicationNotificationManager) {\n            this._applicationNotificationManager = new NotificationsManager();\n        }\n\n        return this._applicationNotificationManager;\n    }\n\n    /**\n     * Adds given notifications to the notification component lists.\n     * It receives a notification, retrieves notification component class,\n     * and passes the component class to the notification components lists.\n     * @see NotificationComponentsList which renders the list of notifications.\n     * Then it triggers the notification added event.\n     * @remark In case of any errors, suppress the error and write it in the console.\n     * @param {NotificationType} notification Notification instance with the data.\n     * @param {NotificationFeeds} feed The configuration of the notification component list. By default is global.\n     */\n    public addNotification<NotificationType extends BaseNotification>(\n        notification: NotificationType,\n        feed: NotificationFeeds = NotificationFeeds.Global\n    ): void {\n        const component = this._getNotificationComponent(notification);\n\n        try {\n            const componentType: INotificationComponentType = {\n                componentClass: component,\n                props: {\n                    notification\n                }\n            };\n            const lists = NotificationComponentsListsManager.getNotificationLists(feed);\n\n            if (!ArrayExtensions.hasElements(lists)) {\n                notification.remove();\n                return;\n            }\n\n            lists.forEach(componentManager => {\n                componentManager.addNotificationComponent(componentType);\n            });\n\n            this.notificationAddedEvent.trigger();\n        } catch (error) {\n            console.error('Error while adding a notification');\n            console.error(notification);\n            console.error(error);\n        }\n    }\n\n    /**\n     * Initializes the instance with the notification event.\n     */\n    private constructor() {\n        this.notificationAddedEvent = new Event();\n    }\n\n    /**\n     * Retrieves the component responsible for rendering the given notification.\n     * @param {NotificationType} notification The data instance of the notification which should be added.\n     * @returns {NotificationComponentClass} The react class which should render the given notification.\n     */\n    private _getNotificationComponent<NotificationType extends BaseNotification>(\n        notification: NotificationType\n    ): NotificationComponentClass {\n        const componentClass = notification.notificationComponentConstructor;\n        if (!componentClass) {\n            const notificationName = (<Object>notification).constructor.name;\n            throw new Error(\n                `No notification component found for the given notification ${notificationName}. ` +\n                    \"Please use 'withNotificationComponent' decorator on the notification and specify the type to use\"\n            );\n        }\n\n        return componentClass;\n    }\n}\n"],"names":["props","_super","__extends","React","_this","_instanceId","Random","state","isClosed","_close","bind","_unsubscribeFromEvents","ClosableNotificationWrapper","this","_subscribeToEvents","notification","previousProps","className","classnames","children","events","getValue","NotificationEvents","subscribe","instanceId","handler","unsubscribeFromEvents","setState","setTimeout","remove","BaseNotificationComponent","isDismissing","isDismissed","_setTimer","_clearTimer","_startDismissing","_preventDismissing","_preventDismissingHandler","_finishDismissing","_updateState","DismissibleNotificationWrapper","autoDismissTimeout","onMouseEnter","shouldResetOnHover","undefined","onMouseLeave","onAnimationEnd","_timer","ObjectExtensions","clearTimeout","startDismissing","preventDismissing","finishDismissing","close","NotificationCloseButton","type","onClick","closeAriaLabel","NotificationContent","NotificationDescription","ArrayExtensions","descriptionLines","map","line","index","StringExtensions","toString","RichTextComponent","key","text","NotificationFooter","NotificationHeader","NotificationInstance","NotificationTitle","preChildren","title","postChildren","NotificationComponentsListsManager","feed","_instances","getValueWithDefaultValue","notificationComponentsList","push","newInstances","filter","list","setValue","Dictionary","ErrorNotificationComponent","SystemNotificationComponent","Spinner","LoadingNotificationComponent","_renderSpinner","SuccessNotificationComponent","WarningNotificationComponent","receivedDate","Date","_isRemoved","value","Event","id","Object","BaseNotification","trigger","_dispose","getValues","forEach","event","unsubscribe","unsubscribeAll","clear","DismissTimeout","Default","Error","_isDismissed","_isDismissing","DismissibleNotification","withNotificationComponent","componentClass","constructor","SystemNotification","ErrorNotification","_isLoading","LoadingNotification","SuccessNotification","WarningNotification","NotificationFeeds","notificationAddedEvent","NotificationsManager","_applicationNotificationManager","Global","component","_getNotificationComponent","componentType_1","lists","componentManager","addNotificationComponent","error","console","notificationComponentConstructor","notificationName","name"],"sourceRoot":""}