{"version":3,"file":"static/js/3.444a14b65d096279730a.chunk.js","mappings":"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","sources":["webpack:///./src/modules/notifications-manager/notification-feeds.ts?12a2","webpack:///./src/modules/notifications-manager/notifications-manager.ts?3350","webpack:///./src/index.ts?ffb4","webpack:///./src/modules/notification-components/system-notifications/error-notification-component.tsx?96e4","webpack:///./src/modules/notifications-data-instances/base/events/notification-events.ts?8fd5","webpack:///./src/modules/notifications-data-instances/base/base-notification.ts?d830","webpack:///./src/modules/notifications-data-instances/system-notifications/system-notification.ts?bd82","webpack:///./src/modules/notifications-data-instances/system-notifications/error-notification.ts?5a19","webpack:///./src/modules/notifications-data-instances/system-notifications/loading-notification.ts?4441","webpack:///./src/modules/notifications-data-instances/system-notifications/success-notification.ts?d3e3","webpack:///./src/modules/notifications-data-instances/system-notifications/warning-notification.ts?d9bf","webpack:///./src/modules/notification-components/system-notifications/index.ts?7bb9","webpack:///./src/modules/notification-components/index.ts?aa4c","webpack:///./src/modules/notification-components/system-notifications/system-notification-component.tsx?60e2","webpack:///./src/modules/notification-components/system-notifications/success-notification-component.tsx?dfb0","webpack:///./src/modules/notification-components/system-notifications/loading-notification-component.tsx?bf13","webpack:///./src/modules/notifications-data-instances/base/interfaces/index.ts?126b","webpack:///./src/modules/notification-components/base/base-notification-component.tsx?47ca","webpack:///./src/modules/notification-components/system-notifications/warning-notification-component.tsx?8b88","webpack:///./src/modules/notification-components/notification-components-lists-manager.ts?8bd2","webpack:///./src/modules/notifications-data-instances/base/with-notification-component-decorator.ts?485e","webpack:///./src/modules/notifications-data-instances/base/index.ts?aa68","webpack:///./src/modules/notification-components/base/closable-notification-component.tsx?aac5","webpack:///./src/modules/notification-components/base/dismissible-notification-component.tsx?5826","webpack:///./src/modules/notification-components/base/notification-close-button-component.tsx?a90a","webpack:///./src/modules/notification-components/base/notification-content-component.tsx?6476","webpack:///./src/modules/notification-components/base/notification-description-component.tsx?fb91","webpack:///./src/modules/notification-components/base/notification-footer-component.tsx?e051","webpack:///./src/modules/notification-components/base/notification-header-component.tsx?6866","webpack:///./src/modules/notification-components/base/notification-instance-component.tsx?e395","webpack:///./src/modules/notification-components/base/notification-title-component.tsx?c4e8","webpack:///./src/modules/notifications-data-instances/base/dismissible-notification.ts?f9b7","webpack:///./src/modules/notifications-data-instances/index.ts?7fc7"],"sourcesContent":["/*!\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(\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(\n notification: NotificationType\n ): NotificationComponentClass {\n const componentClass = notification.notificationComponentConstructor;\n if (!componentClass) {\n const notificationName = (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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './modules/notification-components';\nexport * from './modules/notifications-data-instances';\nexport * from './modules/notifications-manager';\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, INotificationCloseButtonProps {}\n\n/**\n * Component responsible for rendering an error notification.\n */\nexport class ErrorNotificationComponent extends BaseNotificationComponent {\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 ;\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 { 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, {}>;\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;\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 { 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 = (\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 = (\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\nexport * from './error-notification-component';\nexport * from './loading-notification-component';\nexport * from './success-notification-component';\nexport * from './system-notification-component';\nexport * from './warning-notification-component';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './base';\nexport * from './base-notification-component-list';\nexport * from './notification-component-type';\nexport * from './notification-components-lists-manager';\nexport * from './system-notifications';\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,\n INotificationCloseButtonProps {\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 {\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
\n \n \n \n \n \n \n \n {ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n \n \n \n ) : null}\n \n \n \n
\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 { 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,\n INotificationCloseButtonProps {}\n\n/**\n * Component responsible for rendering a success notification.\n */\nexport class SuccessNotificationComponent extends BaseNotificationComponent {\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 ;\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 {}\n\n/**\n * Component responsible for rendering a loading notification.\n */\nexport class LoadingNotificationComponent extends BaseNotificationComponent {\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
\n \n \n \n \n \n {ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n \n \n \n ) : null}\n \n \n
\n );\n }\n\n /**\n * Renders a loading spinner.\n * @returns Spinner.\n */\n private readonly _renderSpinner = () => {\n return ;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './closable-notification';\nexport * from './descriptive-notification';\nexport * from './titled-notification';\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 { 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 {\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 extends INotificationProps {}\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 = INotificationProps,\n StateType = {}\n> extends React.PureComponent {\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 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,\n INotificationCloseButtonProps {}\n\n/**\n * Component responsible for rendering a success notification.\n */\nexport class WarningNotificationComponent extends BaseNotificationComponent {\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 ;\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 = 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 { 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} 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,\n StateType extends {}\n>(\n componentClass: React.ComponentClass\n) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {}>(constructor: T) => {\n return class extends constructor {\n public readonly notificationComponentConstructor: React.ComponentClass = 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\nexport * from './base-notification';\nexport * from './dismissible-notification';\nexport * from './events';\nexport * from './interfaces';\nexport * from './with-notification-component-decorator';\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, 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) {\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): 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
{this.props.children}
;\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 extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps,\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) {\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): 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
\n {this.props.children}\n
\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\n extends INotificationElementProps {}\n\n/**\n * Represents a close button for the notification which triggers notification.close().\n */\nexport class NotificationCloseButton extends BaseNotificationComponent<\n NotificationType,\n INotificationCloseButtonProps,\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) {\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 \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 extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-content';\n\n public constructor(props: INotificationElementProps) {\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
{this.props.children}
;\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> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-description';\n\n public constructor(props: INotificationElementProps) {\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
\n {this.props.notification.descriptionLines.map((line, index) => {\n if (StringExtensions.isNullOrWhitespace(line.toString())) {\n return null;\n }\n return ;\n })}\n {this.props.children}\n
\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 extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-footer';\n\n public constructor(props: INotificationElementProps) {\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
{this.props.children}
;\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 extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-header';\n\n public constructor(props: INotificationElementProps) {\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
{this.props.children}
;\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 extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-instance';\n\n public constructor(props: INotificationElementProps) {\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
{this.props.children}
;\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\n extends INotificationElementProps {\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 extends BaseNotificationComponent<\n NotificationType,\n INotificationTitleProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-title';\n\n public constructor(props: INotificationTitleProps) {\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
\n {this.props.preChildren}\n \n {this.props.postChildren}\n
\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 { 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\nexport * from './base';\nexport * from './system-notifications';\n"],"names":["NotificationFeeds","NotificationsManager","this","notificationAddedEvent","Event","instance","_applicationNotificationManager","prototype","addNotification","notification","feed","Global","component","_getNotificationComponent","componentType_1","componentClass","props","lists","NotificationComponentsListsManager","getNotificationLists","ArrayExtensions","hasElements","remove","forEach","componentManager","addNotificationComponent","trigger","error","console","notificationComponentConstructor","notificationName","constructor","name","Error","ErrorNotificationComponent","_super","call","__extends","render","React","createElement","SystemNotificationComponent","className","BaseNotificationComponent","NotificationEvents","BaseNotification","receivedDate","Date","_isRemoved","events","Dictionary","key","RemovedFromList","value","id","Random","Guid","generateGuid","Object","defineProperty","_a","getValue","_dispose","unsubscribeFromEvents","instanceId","getValues","event","unsubscribe","unsubscribeAll","clear","SystemNotification","title","closeAriaLabel","descriptionLines","_this","filter","StringExtensions","isNullOrWhitespace","toString","isClosed","setValue","Close","close","DismissibleNotification","ErrorNotification","__decorate","withNotificationComponent","LoadingNotification","_isLoading","finishLoading","startDismissing","LoadingNotificationComponent","SuccessNotification","SuccessNotificationComponent","WarningNotification","WarningNotificationComponent","ClosableNotificationWrapper","DismissibleNotificationWrapper","NotificationInstance","NotificationHeader","NotificationTitle","NotificationCloseButton","NotificationContent","NotificationDescription","_renderSpinner","Spinner","preChildren","PureComponent","_instances","getValueWithDefaultValue","subscribe","notificationComponentsList","push","newInstances","list","class_1","apply","arguments","_instanceId","state","_close","bind","_unsubscribeFromEvents","componentDidMount","_subscribeToEvents","componentDidUpdate","previousProps","componentWillUnmount","classnames","children","handler","setState","setTimeout","isDismissing","isDismissed","_setTimer","_clearTimer","_startDismissing","_preventDismissing","_preventDismissingHandler","_finishDismissing","_updateState","autoDismissTimeout","onMouseEnter","shouldResetOnHover","undefined","onMouseLeave","onAnimationEnd","StartDismissing","PreventDismissing","FinishDismissing","_timer","ObjectExtensions","isNullOrUndefined","clearTimeout","preventDismissing","finishDismissing","type","onClick","map","line","index","RichTextComponent","text","NotificationFooter","postChildren","DismissTimeout","Default","_isDismissed","_isDismissing"],"sourceRoot":""}