{"version":3,"file":"static/js/13.81829633c2adbc16f455.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/default-page-summary/default-page-summary.tsx?0c78","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/adventureworks.tsx?8342","webpack://Msdyn365.Commerce.Online/./src/modules/default-container/default-container.tsx?01c3","webpack://Msdyn365.Commerce.Online/./src/modules/default-container-2-slots/default-container-2-slots.tsx?8065","webpack://Msdyn365.Commerce.Online/./src/modules/default-container-3-slots/default-container-3-slots.tsx?ac77","webpack://Msdyn365.Commerce.Online/./src/modules/default-page/default-page.tsx?b382","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/fabrikam.tsx?5b10","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://Msdyn365.Commerce.Online/./src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?605e","webpack://Msdyn365.Commerce.Online/./src/modules/starter/starter.tsx?aade","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/gardner-theme.tsx?0207","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/gardner-theme-b2c.tsx?c9b7","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/price.component.tsx?a8af","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/price.component.tsx?8ade","webpack://Msdyn365.Commerce.Online/./src/components/container-background-image/container-background-image-helper.ts?ce2e","webpack://Msdyn365.Commerce.Online/./src/components/container-background-image/container-backgroud-image.tsx?e863","webpack://Msdyn365.Commerce.Online/./src/components/base-components.tsx?daec","webpack://Msdyn365.Commerce.Online/./src/utils/classnames.ts?a0ff"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IDefaultPageSummaryData } from './default-page-summary.data';\nimport { IDefaultPageSummaryProps } from './default-page-summary.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component.\n * @extends {React.PureComponent}\n */\nclass DefaultPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.pageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n pageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n pageSummary: {\n result: { canonicalUrl }\n }\n }\n } = this.props;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && {pageTitle}}\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _renderTwitterTags(\n title: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined\n ): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _constructPageTitle(title: string | undefined, app: IGeneric): string | undefined {\n if (!title) {\n title = '';\n }\n\n const moduleConfig = this.props.config;\n if (moduleConfig && moduleConfig.ignoreTitleSuffixPrefix) {\n return title;\n }\n\n const appConfig = app && app.platform;\n if (appConfig) {\n if (appConfig.pageTitlePrefix) {\n title = (appConfig.pageTitlePrefix as string) + title;\n }\n if (appConfig.pageTitleSuffix) {\n title += appConfig.pageTitleSuffix as string;\n }\n }\n\n return title;\n }\n}\n\nexport default DefaultPageSummary;\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\n// TODO: Current build require at least one tsx file\nexport default () =>
;\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.\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.\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.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { isEditorialMode } from '@msdyn365-commerce/core-internal';\nimport { IDefaultPageProps } from './default-page.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent}\n */\nclass DefaultPageContainer extends React.PureComponent> {\n constructor(props: IDefaultPageProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, id, typeName } = this.props;\n\n let skipToMainText = this.props.config && this.props.config.skipToMainText;\n telemetry.log(LogLevel.Debug, \"DefaultPageContainer rendering for '{id}/{typeName}'\", { values: [id, typeName] });\n\n if (!skipToMainText) {\n skipToMainText =\n this.props.context.app && this.props.context.app.platform ? this.props.context.app.platform.skipToMainText : '';\n }\n\n const tabIndexSkipToMain = isEditorialMode(this.props.context.actionContext.requestContext) ? -1 : 0;\n\n return (\n \n \n {skipToMainText}\n \n
\n {slots &&\n slots.header &&\n slots.header.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subheader && (\n
\n {slots.subheader.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.primary &&\n slots.primary.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subfooter && (\n
\n {slots.subfooter.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.footer &&\n slots.footer.map((children: React.ReactNode) => {\n return children;\n })}\n
\n
\n );\n }\n}\n\nexport default DefaultPageContainer;\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\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport {\n INotificationComponentsList,\n INotificationComponentsListState,\n INotificationComponentType,\n NotificationComponentsListsManager,\n NotificationEvents,\n NotificationFeedType\n} from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { INotificationsListProps } from './notifications-list.props.autogenerated';\n\n/**\n * View for the notifications list which specifies the container and notifications items.\n */\nexport interface INotificationsListViewProps extends INotificationsListProps<{}> {\n container: IModuleProps;\n notificationsList: React.ReactNode;\n}\n\n/**\n * Configuration to make the list stickable to the page without overlapping any content on top.\n */\nexport interface INotificationComponentStickyConfiguration {\n /**\n * Minimum offset for top (default for the page).\n */\n minTopOffset: number;\n\n /**\n * Maximum offset for top (to limit the top offset while scrolling).\n */\n maxTopOffset: number;\n}\n\n/**\n * Stickable notification list state which defines the top position of the list at the moment.\n */\nexport interface IStickableNotificationComponentsListState extends INotificationComponentsListState {\n /**\n * The top position of the list on the page.\n */\n top?: number;\n}\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\nexport class NotificationComponentsList extends React.Component, IStickableNotificationComponentsListState>\n implements INotificationComponentsList {\n /**\n * The class name to use.\n */\n private static readonly _className: string = 'msc-notifications-list';\n\n /**\n * The feed which the list is responsible for displaying.\n */\n public readonly feed: NotificationFeedType;\n\n /**\n * Configuration which specifies if and how the list should be stickable.\n * If undefined, the configuration will not be used at all. And list will not be stickable.\n */\n private readonly _stickyConfiguration?: INotificationComponentStickyConfiguration;\n\n /**\n * The list of notification which should be shown in the list at the moment.\n * @remarks Should be used to retrieve the latest list of notifications\n * as the list from the state is updated only after rendering.\n */\n private _notificationsComponentList: INotificationComponentType[];\n\n /**\n * Unique identifier of the list.\n * Uses format 'NotificationComponentsList-GUID';.\n */\n private _instanceId?: string;\n\n /**\n * Initializes instance with the given props.\n * @param props - The configuration of the list.\n */\n public constructor(props: INotificationsListProps<{}>) {\n super(props);\n\n this.feed = props.config.feed;\n\n if (\n !ObjectExtensions.isNullOrUndefined(props.config.minTopOffset) &&\n !ObjectExtensions.isNullOrUndefined(props.config.maxTopOffset)\n ) {\n this._stickyConfiguration = {\n minTopOffset: props.config.minTopOffset,\n maxTopOffset: props.config.maxTopOffset\n };\n }\n\n this._notificationsComponentList = [];\n\n this.state = {\n notificationsComponentList: []\n };\n\n this._handleTopUpdate = this._handleTopUpdate.bind(this);\n this._getCurrentTopPosition = this._getCurrentTopPosition.bind(this);\n }\n\n /**\n * Specifies if the component should be re-rendered.\n * @param nextProps - The next configuration the component is receiving.\n * @param nextState - The next state the component is receiving.\n * @returns True if component should be re-rendered, false if component should not be changed.\n */\n public shouldComponentUpdate(\n nextProps: Readonly>,\n nextState: Readonly\n ): boolean {\n const isPropsDifferent =\n this.feed !== nextProps.config.feed ||\n this.props.config.maxNotificationsCount !== nextProps.config.maxNotificationsCount ||\n this.props.config.maxTopOffset !== nextProps.config.maxTopOffset ||\n this.props.config.minTopOffset !== nextProps.config.minTopOffset ||\n this.props.config.className !== nextProps.config.className ||\n this.props.id !== nextProps.id;\n const isStateDifferent =\n this.state.top !== nextState.top ||\n this.state.notificationsComponentList.length !== nextState.notificationsComponentList.length ||\n this.state.notificationsComponentList.every(value =>\n nextState.notificationsComponentList.find(otherValue => otherValue.props.notification.id === value.props.notification.id)\n );\n return isPropsDifferent || isStateDifferent;\n }\n\n /**\n * Adds the current instance to the global list of instances so that it becomes available for the notification manager.\n * In case the list is specified to be stickable, also subscribes to the scroll event to update the offsets.\n */\n public componentDidMount(): void {\n NotificationComponentsListsManager.subscribe(this);\n\n this._instanceId = `NotificationComponentsList-${Random.Guid.generateGuid()}`;\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.addEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Remove the instance from the global list of instances so that it becomes unavailable for the notification manager.\n * Unsubscribes itself from the notification events and scroll event.\n */\n public componentWillUnmount(): void {\n NotificationComponentsListsManager.unsubscribe(this);\n\n this._notificationsComponentList.forEach(component =>\n component.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.unsubscribe(this._instanceId!)\n );\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.removeEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Adds a new notification to the list.\n * @param {INotificationComponentType} notificationComponent Data required to render the notification. @see INotificationComponentType.\n */\n public addNotificationComponent(notificationComponent: INotificationComponentType): void {\n if (this._instanceId === undefined) {\n return;\n }\n\n if (\n !ObjectExtensions.isNullOrUndefined(this.props.config.maxNotificationsCount) &&\n this._notificationsComponentList.length >= this.props.config.maxNotificationsCount\n ) {\n throw new Error('Notifications limit reached, cannot show more notifications.');\n }\n\n // Subscribe to the remove event to filter the removed notifications out from the list.\n notificationComponent.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n notificationComponent.props.notification.events\n .getValue(NotificationEvents.RemovedFromList)\n ?.unsubscribe(this._instanceId!);\n const newList = this._notificationsComponentList.filter(component => component !== notificationComponent);\n this._notificationsComponentList = newList;\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n }\n });\n\n // Prepend the notification as newest should come to the top.\n this._notificationsComponentList.unshift(notificationComponent);\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n this._handleTopUpdate();\n }\n\n public render(): React.ReactNode {\n const className = classnames(\n NotificationComponentsList._className,\n `${NotificationComponentsList._className}__${this.feed}`,\n this.props.config.className\n );\n\n const viewProps: INotificationsListViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className,\n id: this._instanceId,\n style: { top: this.state.top }\n },\n notificationsList: this._renderNotificationsList()\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Renders the list of notifications.\n * @returns React node with a list of notifications.\n */\n private _renderNotificationsList(): React.ReactNode {\n const hasNotifications = ArrayExtensions.hasElements(this.state.notificationsComponentList);\n const containerClassName = classnames(\n `${NotificationComponentsList._className}__scrollable`,\n hasNotifications\n ? `${NotificationComponentsList._className}__has-notifications`\n : `${NotificationComponentsList._className}__empty`\n );\n\n return (\n
\n {this.state.notificationsComponentList.map(component => {\n const ComponentClass = component.componentClass;\n return ;\n })}\n
\n );\n }\n\n /**\n * Retrieves current top offset position by looking at scroll position and rounding it to the stickable limits.\n */\n private _getCurrentTopPosition(): number | undefined {\n const configuration = this._stickyConfiguration;\n\n if (configuration === undefined) {\n return undefined;\n }\n\n let pageYOffset = 0;\n if (MsDyn365.isBrowser) {\n pageYOffset = window.pageYOffset;\n }\n\n return Math.max(Math.min(configuration.maxTopOffset, configuration.maxTopOffset - pageYOffset), configuration.minTopOffset);\n }\n\n /**\n * Updates the top offset on scroll event to make the list stickable.\n */\n private _handleTopUpdate(): void {\n const newTop = this._getCurrentTopPosition();\n this.setState({ top: newTop });\n }\n}\n\nexport default NotificationComponentsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PlaceholderForContainerPreviewComponent } from '@msdyn365-commerce/core';\n\nexport default PlaceholderForContainerPreviewComponent;\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\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\n// TODO: Current build require at least one tsx file\r\nexport default () =>
;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\n// TODO: Current build require at least one tsx file\r\nexport default () =>
;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return {props.notificationsList};\n};\n\nexport default NotificationsListView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n loginToViewPricingText: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n}\r\nexport interface IPriceComponent extends IComponent {\r\n}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n return true;\r\n }\r\n\r\n const originalPrice = getOriginalPrice(props);\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return Math.max(\r\n props.data.price.BasePrice ?? defaultPrice,\r\n props.data.price.TradeAgreementPrice ?? defaultPrice,\r\n props.data.price.AdjustedPrice ?? defaultPrice\r\n );\r\n};\r\n\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, shouldUseFreePriceText: boolean | undefined): string => {\r\n if (price === undefined) {\r\n return '';\r\n }\r\n\r\n if (shouldUseFreePriceText && price === freePrice && props.freePriceText) {\r\n return props.freePriceText;\r\n }\r\n\r\n return props.context.cultureFormatter.formatCurrency(price);\r\n};\r\n\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, props.data.price.CustomerContextualPrice, true);\r\n const maxVariantPrice: string = formatCurrency(props, props.data.price.MaxVariantPrice, false);\r\n const minVariantPrice: string = formatCurrency(props, props.data.price.MinVariantPrice, false);\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n return (\r\n \r\n {' '}\r\n \r\n {minVariantPrice}\r\n \r\n \r\n {props.priceResources?.priceRangeSeparator}\r\n \r\n \r\n {maxVariantPrice}\r\n \r\n \r\n );\r\n }\r\n return (\r\n {initialPrice}\r\n );\r\n};\r\n\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const originalPrice: number = getOriginalPrice(props);\r\n const initialPrice: string = formatCurrency(props, originalPrice, true);\r\n\r\n return (\r\n <>\r\n \r\n {' '}\r\n {props.originalPriceText}\r\n {' '}\r\n {initialPrice}\r\n {' '}\r\n {props.currentPriceText}\r\n {' '}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && \r\n {props.savingsText}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'Price',\r\n { component: Price, ...priceComponentActions }\r\n);\r\n\r\n\r\nexport default PriceComponent;","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n loginToViewPricingText: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n}\r\nexport interface IPriceComponent extends IComponent {\r\n}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n return true;\r\n }\r\n\r\n const originalPrice = getOriginalPrice(props);\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return Math.max(\r\n props.data.price.BasePrice ?? defaultPrice,\r\n props.data.price.TradeAgreementPrice ?? defaultPrice,\r\n props.data.price.AdjustedPrice ?? defaultPrice\r\n );\r\n};\r\n\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, shouldUseFreePriceText: boolean | undefined): string => {\r\n if (price === undefined) {\r\n return '';\r\n }\r\n\r\n if (shouldUseFreePriceText && price === freePrice && props.freePriceText) {\r\n return props.freePriceText;\r\n }\r\n\r\n return props.context.cultureFormatter.formatCurrency(price);\r\n};\r\n\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, props.data.price.CustomerContextualPrice, true);\r\n const maxVariantPrice: string = formatCurrency(props, props.data.price.MaxVariantPrice, false);\r\n const minVariantPrice: string = formatCurrency(props, props.data.price.MinVariantPrice, false);\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n return (\r\n \r\n {' '}\r\n \r\n {minVariantPrice}\r\n \r\n \r\n {props.priceResources?.priceRangeSeparator}\r\n \r\n \r\n {maxVariantPrice}\r\n \r\n \r\n );\r\n }\r\n return (\r\n {initialPrice}\r\n );\r\n};\r\n\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const originalPrice: number = getOriginalPrice(props);\r\n const initialPrice: string = formatCurrency(props, originalPrice, true);\r\n\r\n return (\r\n <>\r\n \r\n {' '}\r\n {props.originalPriceText}\r\n {' '}\r\n {initialPrice}\r\n {' '}\r\n {props.currentPriceText}\r\n {' '}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && \r\n {props.savingsText}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'Price',\r\n { component: Price, ...priceComponentActions }\r\n);\r\n\r\n\r\nexport default PriceComponent;","/*!\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 // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n imgSettings.viewports[viewport],\n imgSettings,\n skipWidthAndHeightSettings,\n image?.externalProvider,\n request?.apiSettings\n );\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n styles[viewport] = {\n maxWidth: minMaxWidth.max,\n minWidth: minMaxWidth.min,\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\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 // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n if (styles[vp].backgroundImage) {\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\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 // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n (this.stylesByViewport[vp]?.minWidth || this.stylesByViewport[vp]?.maxWidth) &&\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n (this.stylesByViewport[vp]?.minWidth || 0) <= winInnerWidth &&\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n winInnerWidth <= (this.stylesByViewport[vp]?.maxWidth || Number.MAX_SAFE_INTEGER)\n ) {\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\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 // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\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 * background color\n */\n backgroundColor?: 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 backgroundColor\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 const containerStyle: React.CSSProperties | undefined = backgroundColor ? { backgroundColor } : undefined;\n\n return containerType ? (\n
\n {containerContent}\n
\n ) : (\n
\n {containerContent}\n
\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.\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\n// eslint-disable-next-line security/detect-unsafe-regex\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"],"names":["DefaultPageSummary","React","render","undefined","this","props","data","pageSummary","result","Error","title","description","keywords","sharingImageUrl","faviconUrl","config","context","canonicalUrl","sharingImage","src","pageTitle","_constructPageTitle","request","app","HtmlHeadInclude","name","content","rel","href","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix","DefaultContainer","constructor","super","handleTextChange","event","heading","headingText","target","value","slots","telemetry","log","LogLevel","Debug","values","id","typeName","headingProps","_objectSpread","requestContext","Container","containerType","className","backgroundImage","backgroundImageRepeat","backgroundImageSize","moduleLayout","msdyn365__moduleLayout","backgroundColor","HeadingComponent","Object","assign","map","children","index","_getChildColClassName","key","layout","childrenWidth","_getWidthClass","s","colWidths","get","Default2SlotContainer","_getColClassName","classNames","getColClassArray","length","reduce","memo","_ref","left","right","push","slotsClassNames","Warning","join","showErrors","slice","slot","Default3SlotContainer","center","DefaultPageContainer","skipToMainText","tabIndexSkipToMain","isEditorialMode","actionContext","tabIndex","header","subheader","primary","subfooter","footer","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","state","notificationsComponentList","_handleTopUpdate","bind","_getCurrentTopPosition","shouldComponentUpdate","nextProps","nextState","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","find","otherValue","notification","componentDidMount","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","MsDyn365","isBrowser","window","addEventListener","componentWillUnmount","unsubscribe","forEach","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","removeEventListener","addNotificationComponent","notificationComponent","_notificationComponen","instanceId","handler","_notificationComponen2","newList","filter","setState","unshift","classnames","_className","viewProps","container","moduleProps","style","notificationsList","_renderNotificationsList","renderView","hasNotifications","ArrayExtensions","hasElements","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","max","min","newTop","NotificationsListView","Module","showStrikethroughPricing","isPriceMinMaxEnabled","price","MaxVariantPrice","MinVariantPrice","originalPrice","getOriginalPrice","CustomerContextualPrice","_props$data$price$Bas","_props$data$price$Tra","_props$data$price$Adj","BasePrice","TradeAgreementPrice","AdjustedPrice","formatCurrency","shouldUseFreePriceText","freePriceText","cultureFormatter","renderCurrentPrice","initialPrice","maxVariantPrice","minVariantPrice","_props$priceResources","itemProp","priceResources","priceRangeSeparator","renderCurrentPriceWithOriginalPrice","originalPriceText","currentPriceText","savingsText","PriceComponent","msdyn365Commerce","createComponentOverride","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","_request$gridSettings","image","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","getAuthoringViewport","moduleName","authoringHelper","_msdyn365","constructViewportInformationForImage","themeSettings","imgSettings","viewports","_cloneDeep2","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","keys","vp","_imgSettings$viewport","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","externalProvider","apiSettings","maxWidth","minWidth","minHeight","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","getDataBgSetAttribute","dataBgSetAttributes","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","stylesByViewport","_onChangeHandler","_getCurrentStyle","mounted","_componentResize","updateAttributes","_this$props$request","_nextProps$request","_this$props$image","_nextProps$image","_this$props$image2","_nextProps$image2","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","attributes","_getAttributes","eventHandlers","onDoubleClick","_getDefaultAttributes","_unused","lazyLoad","getBackgroundImageLazyloadAttributes","role","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","_isEqual2","winInnerWidth","innerWidth","_this$stylesByViewpor","_this$stylesByViewpor2","_this$stylesByViewpor3","_this$stylesByViewpor4","Number","MAX_SAFE_INTEGER","_getDefaultStyle","_this$props$image3","disableLazyLoad","getContainerType","customClassName","containerContent","containerStyle","tag","textSize","Tag","classNameWithHeading","Text","text","editProps","onEdit","sizePattern","getColumnSizes","exec","cols","split","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","Boolean","Map"],"sourceRoot":""}