{"version":3,"sources":["webpack:///src/modules/notifications-manager/notification-feeds.ts?dbd2","webpack:///src/modules/notifications-manager/notifications-manager.ts?6cdb","webpack:///src/index.ts?c6ae","webpack:///src/utils/classnames.ts?8f2b","webpack:///src/modules/notification-components/system-notifications/error-notification-component.tsx?5e7f","webpack:///src/modules/default-container-2-slots/default-container-2-slots.tsx?b218","webpack:///src/modules/notifications-data-instances/base/events/notification-events.ts?2654","webpack:///src/modules/notifications-data-instances/base/base-notification.ts?20cc","webpack:///src/modules/notifications-data-instances/system-notifications/system-notification.ts?ed23","webpack:///src/modules/notifications-data-instances/system-notifications/error-notification.ts?3100","webpack:///src/modules/notifications-data-instances/system-notifications/loading-notification.ts?9516","webpack:///src/modules/notifications-data-instances/system-notifications/success-notification.ts?4a30","webpack:///src/modules/notifications-data-instances/system-notifications/warning-notification.ts?b551","webpack:///src/modules/notification-components/system-notifications/index.ts?ab2d","webpack:///src/modules/notification-components/index.ts?7aea","webpack:///src/modules/notification-components/system-notifications/system-notification-component.tsx?052c","webpack:///src/components/container-background-image/container-background-image-helper.ts?d691","webpack:///src/components/container-background-image/container-backgroud-image.tsx?89dd","webpack:///src/components/base-components.tsx?5f88","webpack:///src/modules/notification-components/system-notifications/success-notification-component.tsx?5ce1","webpack:///src/modules/notification-components/system-notifications/loading-notification-component.tsx?a7b0","webpack:///src/modules/notifications-data-instances/base/interfaces/index.ts?c24c","webpack:///src/modules/notification-components/base/base-notification-component.tsx?9067","webpack:///src/modules/default-container-3-slots/default-container-3-slots.tsx?06cd","webpack:///src/modules/notification-components/system-notifications/warning-notification-component.tsx?17f7","webpack:///src/modules/notification-components/notification-components-lists-manager.ts?6558","webpack:///src/modules/notifications-data-instances/base/with-notification-component-decorator.ts?9c40","webpack:///src/modules/notifications-data-instances/base/index.ts?9f86","webpack:///src/modules/notification-components/base/closable-notification-component.tsx?f51e","webpack:///src/modules/notification-components/base/dismissible-notification-component.tsx?3f1f","webpack:///src/modules/notification-components/base/notification-close-button-component.tsx?1400","webpack:///src/modules/notification-components/base/notification-content-component.tsx?8ec4","webpack:///src/modules/notification-components/base/notification-description-component.tsx?2962","webpack:///src/modules/notification-components/base/notification-footer-component.tsx?3f5e","webpack:///src/modules/notification-components/base/notification-header-component.tsx?d725","webpack:///src/modules/notification-components/base/notification-instance-component.tsx?78d7","webpack:///src/modules/notification-components/base/notification-title-component.tsx?e42e","webpack:///src/modules/notifications-data-instances/base/dismissible-notification.ts?09de","webpack:///src/modules/default-container/default-container.tsx?4334","webpack:///src/modules/notifications-data-instances/index.ts?e757"],"names":["NotificationFeeds","this","notificationAddedEvent","Event","NotificationsManager","_applicationNotificationManager","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","sizePattern","getColumnSizes","config","size","exec","cols","split","slice","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","map","colWidth","showErrors","context","isDebug","isEditor","request","params","getColClassArray","options","xsmall","small","medium","large","filter","Boolean","colWidths","Map","_super","__extends","ErrorNotificationComponent","React","SystemNotificationComponent","className","BaseNotificationComponent","Default2SlotContainer","PureComponent","super","handleTextChange","event","heading","headingText","target","value","_getColClassName","classNames","length","reduce","memo","left","right","push","render","slots","telemetry","data","log","LogLevel","Debug","values","id","typeName","content","slotsClassNames","Warning","headingProps","requestContext","Container","containerType","backgroundImage","backgroundImageRepeat","backgroundImageSize","moduleLayout","msdyn365__moduleLayout","HeadingComponent","Object","join","slot","index","key","NotificationEvents","receivedDate","Date","_isRemoved","events","Dictionary","RemovedFromList","Random","Guid","generateGuid","BaseNotification","getValue","_a","_dispose","instanceId","getValues","unsubscribe","unsubscribeAll","clear","title","closeAriaLabel","descriptionLines","_this","StringExtensions","isNullOrWhitespace","toString","isClosed","setValue","Close","SystemNotification","DismissibleNotification","ErrorNotification","withNotificationComponent","_isLoading","LoadingNotification","startDismissing","LoadingNotificationComponent","SuccessNotification","SuccessNotificationComponent","WarningNotification","WarningNotificationComponent","ClosableNotificationWrapper","DismissibleNotificationWrapper","NotificationInstance","NotificationHeader","NotificationTitle","NotificationCloseButton","NotificationContent","NotificationDescription","getBackgroundRepeatProperty","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","image","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","moduleName","layout","msdyn365Commerce","isBrowser","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","getAuthoringViewport","imgSettings","viewports","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","keys","vp","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","src","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","style","undefined","getDataBgSetAttribute","dataBgSetAttributes","BackgroundImage","state","stylesByViewport","_onChangeHandler","bind","_getCurrentStyle","mounted","_componentResize","updateAttributes","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","shouldComponentUpdate","nextProps","nextState","children","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","attributes","_getAttributes","eventHandlers","onDoubleClick","_getDefaultAttributes","lazyLoad","role","getBackgroundImageLazyloadAttributes","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","setState","winInnerWidth","innerWidth","Number","MAX_SAFE_INTEGER","_getDefaultStyle","disableLazyLoad","getContainerType","customClassName","containerContent","tag","textSize","Tag","classNameWithHeading","Text","text","editProps","onEdit","Spinner","preChildren","_renderSpinner","Default3SlotContainer","center","_instances","getValueWithDefaultValue","notificationComponentsList","newInstances","list","_instanceId","_close","_unsubscribeFromEvents","_subscribeToEvents","previousProps","classnames","subscribe","handler","unsubscribeFromEvents","setTimeout","isDismissing","isDismissed","_setTimer","_clearTimer","_startDismissing","_preventDismissing","_preventDismissingHandler","_finishDismissing","_updateState","autoDismissTimeout","onMouseEnter","shouldResetOnHover","onMouseLeave","onAnimationEnd","StartDismissing","PreventDismissing","FinishDismissing","_timer","ObjectExtensions","isNullOrUndefined","clearTimeout","preventDismissing","finishDismissing","close","type","onClick","line","RichTextComponent","NotificationFooter","postChildren","DismissTimeout","Default","_isDismissed","_isDismissing","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","get"],"mappings":"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","file":"static/js/3.1c442ab00d6cd68b1209.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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, feed: NotificationFeeds = NotificationFeeds.Global): void {\n\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(\n 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(notification: NotificationType): NotificationComponentClass {\n const componentClass = notification.notificationComponentConstructor;\n if (!componentClass) {\n const notificationName = (notification).constructor.name;\n throw new Error(`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 return componentClass;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 { ICoreContext } from '@msdyn365-commerce/core';\nimport * as twoSlots from '../modules/default-container-2-slots/default-container-2-slots.props.autogenerated';\nimport * as threeSlots from '../modules/default-container-3-slots/default-container-3-slots.props.autogenerated';\n\nconst sizePattern = /col(_(\\d|auto){1,2}){2,}/;\n\nexport interface IShowErrorOptions {\n isDebug?: boolean;\n isEditor?: boolean;\n}\n\nexport interface IViewPortOptions {\n xsmall?: threeSlots.xsmall | twoSlots.xsmall;\n small?: threeSlots.small | twoSlots.small;\n medium?: threeSlots.medium | twoSlots.medium;\n large?: threeSlots.large | twoSlots.large;\n}\n\nconst translatePrefix = (prefix: `large` | `medium` | `small` | `xsmall` | undefined) => {\n switch (prefix && prefix.toLowerCase()) {\n case 'large':\n return 'lg';\n case 'medium':\n return 'md';\n case 'small':\n return 'sm';\n case 'xsmall':\n default:\n return '';\n }\n};\n\n/**\n * converts config option and size to bootstrap col class name\n * If size is auto or config option is invalid col-auto will be returned\n * If size is xsmall or size is invalid col-{config} will be returned\n * @param config configuration option e.g. col_12_12\n * @param size bootstrap gridsize\n */\nexport const getColumnSizes = (config: string, size?: `large` | `medium` | `small` | `xsmall`): string[] | boolean => {\n if (!sizePattern.exec(config)) {\n return false;\n }\n const cols = config.split('_').slice(1);\n const translatedSize = translatePrefix(size);\n const sizePrefix = (translatedSize && `-${translatedSize}`) || '';\n return cols.map((colWidth: string) => `col${sizePrefix}-${colWidth}`);\n};\n\nexport const showErrors = (context?: ICoreContext): Boolean => {\n const { isDebug, isEditor }: IShowErrorOptions = (context && context.request && context.request.params) || {};\n return !!isDebug || !!isEditor;\n};\n\n/**\n * Converts viewport configuration into a two dimensional array of class names\n */\nexport const getColClassArray = (options: IViewPortOptions): string[][] =>\n (\n [\n options.xsmall && getColumnSizes(options.xsmall),\n options.small && getColumnSizes(options.small, 'small'),\n options.medium && getColumnSizes(options.medium, 'medium'),\n options.large && getColumnSizes(options.large, 'large')\n ].filter(Boolean)\n );\n\nexport const colWidths = new Map([\n ['one', 'col-md-1'],\n ['two', 'col-md-2'],\n ['three', 'col-md-3'],\n ['four', 'col-md-4'],\n ['six', 'col-md-6'],\n ['twelve', 'col-md-12']\n]);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer2SlotsData } from './default-container-2-slots.data';\nimport { IDefaultContainer2SlotsProps } from './default-container-2-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n right: string[];\n}\n\n/**\n * Default container that displays 2 modules\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default2SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer2SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default 2 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const content = slots && slots.content;\n const slotsClassNames = this._getColClassName();\n if (content && content.length > 2) {\n telemetry.log(LogLevel.Warning, 'Default 2 Slot Container passed more than 2 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (2)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, right]: string[]) => {\n memo.left.push(left);\n memo.right.push(right);\n return memo;\n },\n { left: [], right: [] }\n );\n };\n}\n\nexport default Default2SlotContainer;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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 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 = (descriptionLines ?? []).filter(value => !StringExtensions.isNullOrWhitespace(value?.toString()));\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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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 = (descriptionLines ?? []).filter(value => !StringExtensions.isNullOrWhitespace(value?.toString()));\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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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 { ClosableNotificationWrapper, DismissibleNotificationWrapper, INotificationCloseButtonProps, NotificationCloseButton, NotificationContent, NotificationDescription, NotificationHeader, NotificationInstance, NotificationTitle } from '../base';\nimport { BaseNotificationComponent, INotificationElementProps } from '../base/base-notification-component';\n\n/**\n * Props for system notification.\n */\nexport interface ISystemNotificationProps extends INotificationElementProps, INotificationCloseButtonProps {\n\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 /**\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 {\n ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n \n \n \n ) : null\n }\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 msdyn365Commerce, {\n constructViewportInformationForImage,\n getImageResizeUrl,\n getLargestGridSettingViewportName,\n getMinMaxWidth,\n IAny,\n IGeneric,\n IViewPort,\n Viewport\n} from '@msdyn365-commerce/core-internal';\nimport { cloneDeep as _cloneDeep } from 'lodash';\nimport {\n BackgroundImageRepeat,\n BackgroundImageSize,\n IBackgroundImageAttributes,\n IBackgroundImageLazyloadAttributes,\n IBackgroundImageProps,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst getBackgroundRepeatProperty = (size: string | undefined, repeat: string | undefined): BackgroundImageRepeat => {\n if (!size || size === 'cover') {\n return 'no-repeat';\n }\n switch (repeat) {\n case 'noRepeat':\n return 'no-repeat';\n case 'repeat':\n return 'repeat';\n default:\n return 'no-repeat';\n }\n};\n\nconst getBackgroundSizeProperty = (size: string | undefined): BackgroundImageSize => {\n switch (size) {\n case 'cover':\n return 'cover';\n case 'contain':\n return 'contain';\n case 'default':\n default:\n return undefined;\n }\n};\n\nconst getDefaultViewports = (): IViewPort => {\n return {\n xs: {\n w: 800,\n h: 600\n },\n sm: {\n w: 1200,\n h: 900\n },\n md: {\n w: 1600,\n h: 900\n },\n lg: {\n w: 1600,\n h: 700\n },\n xl: {\n w: 1600,\n h: 700\n }\n };\n};\n\nconst getAuthoringViewport = (moduleName: string | undefined, layout: string | undefined): IViewPort | undefined => {\n if (!msdyn365Commerce.isBrowser) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const authoringHelper = (window as any)._msdyn365.authoringHelper;\n if (!authoringHelper) {\n return;\n }\n\n // if authoring helper is setup, component is rendering from site builder. Build viewport based on layout selected.\n return constructViewportInformationForImage(moduleName, layout, 'backgroundImage', authoringHelper?.themeSettings) as IViewPort;\n};\n\nexport const buildBackgroundImageStylesByViewport = (props: IBackgroundImageProps): IGeneric => {\n const { containerType, image, request, configs } = props;\n\n const gridSettings = request.gridSettings ?? {};\n const imageSettings = image.imageSettings;\n\n const styles: IGeneric = {};\n\n const largestGridSettingViewportName = getLargestGridSettingViewportName(gridSettings);\n if (largestGridSettingViewportName && imageSettings) {\n // in site builder the layout may change, so use authoring viewports.\n const authoringViewPorts = getAuthoringViewport(containerType, configs?.layout);\n const imgSettings = {\n ...imageSettings,\n viewports: { ..._cloneDeep(authoringViewPorts || imageSettings.viewports || getDefaultViewports()) }\n };\n\n // Skip resizing width and height for background images.\n const skipWidthAndHeightSettings = true;\n Object.keys(imgSettings.viewports).map(vp => {\n const viewport = vp as Viewport;\n const minMaxWidth = getMinMaxWidth(gridSettings, imgSettings, viewport, largestGridSettingViewportName);\n const urlSrc = getImageResizeUrl(\n image.src,\n imgSettings.viewports[viewport],\n imgSettings,\n skipWidthAndHeightSettings,\n image?.externalProvider,\n request?.apiSettings\n );\n styles[viewport] = {\n maxWidth: minMaxWidth.max,\n minWidth: minMaxWidth.min,\n minHeight: imgSettings.viewports[viewport]?.h,\n backgroundImage: urlSrc,\n backgroundRepeat: getBackgroundRepeatProperty(configs?.size, configs?.repeat),\n backgroundSize: getBackgroundSizeProperty(configs?.size),\n backgroundPosition: 'center center'\n };\n });\n }\n\n return styles;\n};\n\nexport const setStyleAttribute = (currentStyle: IBackgroundImageStyle): IGeneric => {\n let style: IGeneric = {};\n if (currentStyle) {\n style = { ...currentStyle };\n style['minWidth'] = undefined;\n style['width'] = '100%';\n if (currentStyle.backgroundImage) {\n style['backgroundImage'] = `url('${currentStyle.backgroundImage}')`;\n }\n }\n return style;\n};\n\nexport const getBackgroundImageLazyloadAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined,\n styles: IGeneric\n): IBackgroundImageLazyloadAttributes => {\n const attributes = {\n role: 'img',\n className: `${className} lazyload`,\n 'data-bgset': getDataBgSetAttribute(styles)\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n // On lazyload, lazysizes plugin should pick which background image to use based on data-bgset attribute.\n attributes['style']['backgroundImage'] = undefined;\n }\n return attributes;\n};\n\nexport const getBackgroundImageAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined\n): IBackgroundImageAttributes => {\n const attributes = {\n role: 'img',\n className\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n }\n return attributes;\n};\n\nexport const getBgSetMinMaxWidthAttribute = (style: IBackgroundImageStyle): string => {\n if (style.maxWidth) {\n return `[(max-width: ${style.maxWidth}px)]`;\n }\n return '';\n};\n\nexport const getDataBgSetAttribute = (styles: IGeneric): string => {\n const dataBgSetAttributes: string[] = [];\n Object.keys(styles).map(vp => {\n if (styles[vp].backgroundImage) {\n dataBgSetAttributes.push(`${styles[vp].backgroundImage} ${getBgSetMinMaxWidthAttribute(styles[vp])}`);\n }\n });\n\n return dataBgSetAttributes.join(' | ');\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport msdyn365Commerce, { getLargestGridSettingViewportName, IGeneric, isAuthoringEditEnabled } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isEqual as _isEqual } from 'lodash';\nimport {\n buildBackgroundImageStylesByViewport,\n getBackgroundImageAttributes,\n getBackgroundImageLazyloadAttributes\n} from './container-background-image-helper';\nimport {\n IBackgroundImageAttributes,\n IBackgroundImageProps,\n IBackgroundImageState,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst BACKGROUND_IMAGE_CLASS_NAME = 'ms-container-background-image';\n\n/**\n * BackgroundImage component\n * @extends {React.PureComponent}\n */\nexport class BackgroundImage extends React.PureComponent {\n private stylesByViewport: IGeneric;\n private currentStyle: IBackgroundImageStyle | undefined;\n private mounted: boolean;\n\n constructor(props: IBackgroundImageProps, state: IBackgroundImageState) {\n super(props);\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this._onChangeHandler = this._onChangeHandler.bind(this);\n this.currentStyle = this._getCurrentStyle();\n this.mounted = false;\n this._componentResize = this._componentResize.bind(this);\n this._getCurrentStyle = this._getCurrentStyle.bind(this);\n this.state = { updateAttributes: false };\n }\n\n public componentDidMount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this._componentResize);\n this.mounted = true;\n this._componentResize();\n }\n }\n\n public componentWillUnmount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this._componentResize);\n this.mounted = false;\n }\n }\n\n public shouldComponentUpdate(nextProps: IBackgroundImageProps, nextState: { updateAttributes: boolean }): boolean {\n if (\n this.state !== nextState ||\n this.props.request?.gridSettings !== nextProps.request?.gridSettings ||\n this.props.configs.repeat !== nextProps.configs.repeat ||\n this.props.configs.size !== nextProps.configs.size ||\n this.props.configs.layout !== nextProps.configs.layout ||\n this.props.image?.imageSettings !== nextProps.image?.imageSettings ||\n this.props.image?.src !== nextProps.image?.src\n ) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { children } = this.props;\n\n try {\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this.currentStyle = this._getCurrentStyle();\n\n if (this.currentStyle) {\n const backgroundImageClassName = isAuthoringEditEnabled(this.props.request)\n ? `${BACKGROUND_IMAGE_CLASS_NAME} ms-editable-field enabled`\n : BACKGROUND_IMAGE_CLASS_NAME;\n const processedAtributes = this._processAttributes(\n backgroundImageClassName,\n this.currentStyle,\n this.stylesByViewport,\n this._isLazyload()\n );\n const attributes = this._getAttributes(processedAtributes);\n const eventHandlers = isAuthoringEditEnabled(this.props.request) ? { onDoubleClick: this._onChangeHandler } : {};\n\n if (this.state.updateAttributes) {\n // Update component with the latest attributes.\n return (\n
\n {children}\n
\n );\n } else if (this._isLazyload()) {\n // On lazyload, only include the class name on the first render.\n return (\n
\n {children}\n
\n );\n } else {\n // On lazyload disabled, render the default attributes from server side.\n return (\n
\n {children}\n
\n );\n }\n } else {\n // in no style is found, return the container content.\n return <>{children};\n }\n } catch {\n // in case of any failure, return the container content.\n return <>{children};\n }\n }\n\n private _processAttributes(\n className: string,\n currentStyle: IBackgroundImageStyle,\n stylesByViewport: IGeneric,\n lazyLoad: boolean\n ) {\n if (lazyLoad) {\n return getBackgroundImageLazyloadAttributes(className, currentStyle, stylesByViewport);\n } else {\n return getBackgroundImageAttributes(className, currentStyle);\n }\n }\n\n private _getAttributes(processedAtributes: IBackgroundImageAttributes) {\n return { ...processedAtributes, style: { ...processedAtributes?.style } };\n }\n\n private _onChangeHandler(event: React.SyntheticEvent | { target: { value: string } }): void {\n if (event.target === (event as React.SyntheticEvent).currentTarget) {\n const binding: any = this.props.image;\n const eventTarget: any = event.target;\n binding.$type = eventTarget.value;\n }\n }\n\n private _componentResize(): void {\n if (msdyn365Commerce.isBrowser) {\n const selectedStyle = this._getCurrentStyle();\n\n if (this.mounted || (selectedStyle && !_isEqual(this.currentStyle, selectedStyle))) {\n this.setState({ updateAttributes: true });\n }\n }\n }\n\n private _getCurrentStyle(): IBackgroundImageStyle | undefined {\n if (msdyn365Commerce.isBrowser) {\n const winInnerWidth: number = window.innerWidth;\n let selectedStyle: IBackgroundImageStyle | undefined;\n Object.keys(this.stylesByViewport).map(vp => {\n if (\n (this.stylesByViewport[vp]?.minWidth || this.stylesByViewport[vp]?.maxWidth) &&\n (this.stylesByViewport[vp]?.minWidth || 0) <= winInnerWidth &&\n winInnerWidth <= (this.stylesByViewport[vp]?.maxWidth || Number.MAX_SAFE_INTEGER)\n ) {\n selectedStyle = this.stylesByViewport[vp];\n }\n });\n return selectedStyle;\n } else {\n return this._getDefaultStyle();\n }\n }\n\n private _isLazyload(): boolean {\n // Lazyload by default if nothing is specified\n return !this.props.image?.imageSettings?.disableLazyLoad;\n }\n\n private _getDefaultStyle(): IBackgroundImageStyle | undefined {\n const { request } = this.props;\n const largestGridSettingViewportName = getLargestGridSettingViewportName(request.gridSettings ?? {});\n return this.stylesByViewport[largestGridSettingViewportName];\n }\n\n private _getDefaultAttributes(): IBackgroundImageAttributes {\n const style = this._getDefaultStyle();\n const processedAtributes = style\n ? this._processAttributes(BACKGROUND_IMAGE_CLASS_NAME, style, this.stylesByViewport, this._isLazyload())\n : {};\n return this._getAttributes(processedAtributes);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, IImageData, IRequestContext, Text } from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { BackgroundImage } from './container-background-image/container-backgroud-image';\n\n/**\n * Heading options\n */\nexport interface IHeadingComponentProps {\n /**\n * Heading text\n */\n headingText?: string;\n /**\n * Heading tag (h1, h2, h3, h4, h5, h6)\n */\n tag?: HeadingTag;\n /**\n * Heading text size (sm, md, lg, xl)\n */\n textSize?: TextSize;\n\n requestContext: IRequestContext;\n\n handleTextChange(event: ContentEditableEvent): string;\n}\n\nexport type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\nexport type TextSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Container class options\n */\nexport interface IContainerProps {\n /**\n * CSS class name\n */\n className?: string;\n /**\n * Bootstrap supported container types\n */\n containerType?: string;\n /**\n * type name\n */\n typeName?: string;\n /**\n * id of container\n */\n id?: string;\n /**\n * React children\n */\n children: React.ReactNode;\n /**\n * Request context\n */\n request?: IRequestContext;\n /**\n * background image\n */\n backgroundImage?: IImageData;\n /**\n * background image repeat property\n */\n backgroundImageRepeat?: string;\n /**\n * background image size property\n */\n backgroundImageSize?: string;\n /**\n * module layout property\n */\n moduleLayout?: string;\n}\n\nconst getContainerType = (containerType: string | undefined) => {\n switch (containerType) {\n case 'container':\n return 'container';\n case 'fluid':\n default:\n return 'fluid';\n }\n};\n\n/**\n * HOC to create bootstrap container div. If no container type is specified children are rendered.\n * @param options IContainerClasses\n */\nexport const Container: React.SFC = (props: IContainerProps): JSX.Element => {\n const {\n containerType,\n className,\n typeName,\n id,\n children,\n backgroundImage,\n request,\n backgroundImageRepeat,\n backgroundImageSize,\n moduleLayout\n } = props;\n const customClassName = className ? ` ${className}` : '';\n\n let containerContent = children;\n if (containerType) {\n containerContent =
{containerContent}
;\n }\n\n if (backgroundImage && backgroundImage.src && backgroundImage.imageSettings && request) {\n containerContent = (\n \n {containerContent}\n \n );\n }\n\n return containerType ? (\n
{containerContent}
\n ) : (\n
{containerContent}
\n );\n};\n\nexport const HeadingComponent = (props: IHeadingComponentProps & { className: string }): JSX.Element | null => {\n const { tag, headingText, textSize, className } = props;\n const Tag = tag || 'h2';\n const classNameWithHeading = textSize ? `heading ${textSize} ${className}` : `heading ${className}`;\n return (\n (headingText && (\n \n )) ||\n null\n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 extends INotificationProps, 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}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 { DismissibleNotificationWrapper, NotificationContent, NotificationDescription, NotificationHeader, NotificationInstance, NotificationTitle } 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 {\n ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n \n \n \n ) : null\n }\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}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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/**\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 = {}> extends React.PureComponent {\n\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 { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer3SlotsData } from './default-container-3-slots.data';\nimport { IDefaultContainer3SlotsProps } from './default-container-3-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n center: string[];\n right: string[];\n}\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default3SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer3SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n\n const slotsClassNames = this._getColClassName();\n const content = slots && slots.content;\n\n telemetry.log(LogLevel.Debug, \"Default 3 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n if (content && content.length > 3) {\n telemetry.log(LogLevel.Warning, 'Default 3 Slot Container passed more than 3 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n {content && content[2] &&
{content[2]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (3)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n center: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, center, right]: string[]) => {\n memo.left.push(left);\n memo.center.push(center);\n memo.right.push(right);\n return memo;\n },\n { left: [], center: [], right: [] }\n );\n };\n}\n\nexport default Default3SlotContainer;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 extends INotificationProps, 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}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 */\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.getValueWithDefaultValue(notificationComponentsList.feed, []).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. All rights reserved.\n * See License.txt 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 componentClass: React.ComponentClass) => {\n\n return {}>(constructor: T) => {\n return class extends constructor {\n public readonly notificationComponentConstructor: React.ComponentClass = componentClass;\n };\n };\n};\n\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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 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 (\n
\n {this.props.children}\n
\n );\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. All rights reserved.\n * See License.txt 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\n extends BaseNotificationComponent, 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. All rights reserved.\n * See License.txt 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 extends INotificationElementProps { }\n\n/**\n * Represents a close button for the notification which triggers notification.close().\n */\nexport class NotificationCloseButton\n extends BaseNotificationComponent, INotificationCloseButtonState> {\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. All rights reserved.\n * See License.txt 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 /**\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 (\n
\n {this.props.children}\n
\n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 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 {\n this.props.notification.descriptionLines.map((line, index) => {\n if (StringExtensions.isNullOrWhitespace(line.toString())) {\n return null;\n }\n return (\n \n );\n })\n }\n {this.props.children}\n
\n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 /**\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 (\n
\n {this.props.children}\n
\n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 /**\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 (\n
\n {this.props.children}\n
\n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 /**\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 (\n
\n {this.props.children}\n
\n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 extends INotificationElementProps {\n\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 /**\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. All rights reserved.\n * See License.txt 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 /**\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('Invalid parameters passed for dismissible notification. shouldResetOnHover = true is incompatible with autoDismissTimeout = null.');\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\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { colWidths } from '../../utils/classnames';\nimport { IDefaultContainerData } from './default-container.data';\nimport { childrenWidth as childrenWidthEnum, IDefaultContainerProps, layout as layoutEnum } from './default-container.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass DefaultContainer extends React.PureComponent> {\n constructor(props: IDefaultContainerProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n\n return (\n \n {heading && }\n {slots &&\n slots.content &&\n slots.content.map((children: React.ReactNode, index: number) => {\n return (\n
\n {children}\n
\n );\n })}\n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n\n private _getChildColClassName(): string {\n const {\n config: { layout, childrenWidth }\n } = this.props;\n switch (layout) {\n case layoutEnum.flow:\n return childrenWidth === childrenWidthEnum.auto ? 'col-12 col-md' : this._getWidthClass(childrenWidth);\n case layoutEnum.stacked:\n default:\n return 'col-12';\n }\n }\n\n private _getWidthClass(s?: childrenWidthEnum): string {\n return colWidths.get(s || childrenWidthEnum.four) || 'col-12';\n }\n}\n\nexport default DefaultContainer;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport * from './base';\nexport * from './system-notifications';\n"],"sourceRoot":""}