{"version":3,"file":"static/js/17.08abc18ce045ef92d852.chunk.js","mappings":"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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/commision-junction/commision-junction.props.autogenerated.ts?52cb","webpack://venchi-ecommerce-msdyn365/./src/modules/commision-junction/commision-junction.tsx?9c98","webpack://venchi-ecommerce-msdyn365/./src/modules/commision-junction/commision-junction.view.tsx?eff9","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-image-banner/custom-image-banner.tsx?6f66","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-image-banner/custom-image-banner.view.tsx?94d6","webpack://venchi-ecommerce-msdyn365/./src/modules/timeline/timeline.tsx?62a2","webpack://venchi-ecommerce-msdyn365/./src/modules/timeline/getTimelineItemLabel.ts?1b0d","webpack://venchi-ecommerce-msdyn365/./src/modules/timeline/timeline.view.tsx?f138","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-apple-pay/checkout-apple-pay.view.tsx?222d","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-express/checkout-express.view.tsx?134b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-google-pay/checkout-google-pay.view.tsx?b92f","webpack://venchi-ecommerce-msdyn365/./src/modules/html-block/html-block.tsx?c080","webpack://venchi-ecommerce-msdyn365/./src/modules/html-block/html-block.view.tsx?b072","webpack://venchi-ecommerce-msdyn365/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://venchi-ecommerce-msdyn365/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://venchi-ecommerce-msdyn365/./src/modules/product-page-summary/product-page-summary.tsx?2924","webpack://venchi-ecommerce-msdyn365/./src/modules/spacer/spacer.tsx?7565","webpack://venchi-ecommerce-msdyn365/./src/modules/spacer/spacer.view.tsx?1f15","webpack://venchi-ecommerce-msdyn365/./src/modules/text-block/text-block.tsx?db84","webpack://venchi-ecommerce-msdyn365/./src/modules/text-block/text-block.view.tsx?9307"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICommisionJunction contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum pageType {\r\n accountCenter = 'accountCenter',\r\n accountSignup = 'accountSignup',\r\n applicationStart = 'applicationStart',\r\n branchLocator = 'branchLocator',\r\n cart = 'cart',\r\n category = 'category',\r\n conversionConfirmation = 'conversionConfirmation',\r\n department = 'department',\r\n homepage = 'homepage',\r\n information = 'information',\r\n productDetail = 'productDetail',\r\n propertyDetail = 'propertyDetail',\r\n propertyResults = 'propertyResults',\r\n searchResults = 'searchResults',\r\n storeLocator = 'storeLocator',\r\n subCategory = 'subCategory'\r\n}\r\n\r\nexport interface ICommisionJunctionConfig extends Msdyn365.IModuleConfig {\r\n isCJEnabled?: boolean;\r\n cookieName?: string;\r\n enterpriseId?: string;\r\n pageType?: pageType;\r\n}\r\n\r\nexport interface ICommisionJunctionProps extends Msdyn365.IModule {\r\n config: ICommisionJunctionConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ICookieSetOptions } from '@msdyn365-commerce/core-internal';\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\nimport CryptoJS from 'crypto-js';\r\nimport * as React from 'react';\r\nimport { ICommisionJunctionData } from './commision-junction.data';\r\nimport { ICommisionJunctionProps, pageType } from './commision-junction.props.autogenerated';\r\n\r\ninterface ISiteTagItem {\r\n itemId: string | undefined;\r\n unitPrice: number | undefined;\r\n quantity: number | undefined;\r\n discount?: number | undefined;\r\n}\r\n\r\ninterface ISiteTag {\r\n enterpriseId: string | undefined;\r\n pageType: pageType | undefined;\r\n userId: string;\r\n emailHash: string;\r\n cartSubtotal: number | undefined;\r\n items: ISiteTagItem[];\r\n}\r\n\r\ninterface IConversionTag {\r\n actionTrackerId: number;\r\n amount: number;\r\n cjeventOrder: string;\r\n coupon?: string;\r\n currency: string;\r\n enterpriseId: string | undefined;\r\n orderId: string;\r\n pageType: pageType | undefined;\r\n userId: string;\r\n emailHash: string;\r\n items: ISiteTagItem[];\r\n}\r\n\r\nexport interface ICommisionJunctionViewProps extends ICommisionJunctionExtentedProps {\r\n isCJEnabled: boolean;\r\n siteTag: ISiteTag;\r\n conversionTag?: IConversionTag;\r\n}\r\n\r\nexport interface ICommisionJunctionExtentedProps extends ICommisionJunctionProps {\r\n salesOrder?: SalesOrder;\r\n}\r\n\r\n/**\r\n * Age Gate state.\r\n */\r\nexport interface ICommisionJunctionState {\r\n cartData?: ICartState;\r\n}\r\n/**\r\n *\r\n * CommisionJunction component\r\n * @extends {React.PureComponent, ICommisionJunctionState>}\r\n */\r\nclass CommisionJunction extends React.PureComponent, ICommisionJunctionState> {\r\n constructor(props: ICommisionJunctionExtentedProps) {\r\n super(props);\r\n this.state = { cartData: undefined };\r\n }\r\n\r\n public async componentDidMount() {\r\n if (this.props.config.pageType !== pageType.conversionConfirmation) {\r\n const currentCartState = await getCartState(this.props.context.actionContext);\r\n\r\n if (currentCartState !== undefined) {\r\n this.setState({\r\n cartData: currentCartState\r\n });\r\n }\r\n }\r\n }\r\n\r\n private readonly _isConsentGiven: boolean = this.props.context.request.cookies.isConsentGiven();\r\n public render(): JSX.Element | null {\r\n const cookieName = this.props.config.cookieName || 'cje';\r\n const { cjevent = '' } = this.props.context.request.query || {};\r\n if (cjevent && cjevent !== null && cjevent !== '') {\r\n const cookieOptions: ICookieSetOptions = {\r\n secure: true,\r\n sameSite: 'none'\r\n };\r\n cookieOptions.maxAge = 395 * 24 * 60 * 60;\r\n this.props.context.request.cookies.set(cookieName, cjevent, cookieOptions);\r\n }\r\n\r\n const isCJEnabled = this._isConsentGiven && this.props.config.isCJEnabled;\r\n\r\n let siteTag: ISiteTag | null = null;\r\n let conversionTag: IConversionTag | null = null;\r\n if (isCJEnabled) {\r\n if (this.props.config.pageType !== pageType.conversionConfirmation) {\r\n siteTag = this._setSiteTag();\r\n } else {\r\n conversionTag = this._setConversionTag();\r\n }\r\n }\r\n const viewProps = {\r\n ...this.props,\r\n isConsentGiven: this._isConsentGiven,\r\n isCJEnabled: this._isConsentGiven && this.props.config.isCJEnabled,\r\n siteTag: siteTag,\r\n conversionTag: conversionTag\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _setSiteTag(): ISiteTag {\r\n const enterpriseId = this.props.config.enterpriseId;\r\n let emailAddressHash;\r\n if (this.props.context.request.user.emailAddress !== undefined && this.props.context.request.user.emailAddress !== null) {\r\n const email = this.props.context.request.user.emailAddress.toLocaleLowerCase().trim();\r\n emailAddressHash = CryptoJS.SHA256(email).toString(CryptoJS.enc.Hex);\r\n }\r\n const items: ISiteTagItem[] = [];\r\n let subTotalAmount: number = 0;\r\n subTotalAmount = (this.state.cartData && this.state.cartData.cart.SubtotalAmount) || 0;\r\n const cartLines = this.state.cartData && this.state.cartData.cart.CartLines;\r\n if (cartLines && cartLines?.length > 0) {\r\n cartLines.map(cartline => {\r\n const item = {\r\n itemId: cartline.ItemId,\r\n unitPrice: cartline.Price,\r\n quantity: cartline.Quantity,\r\n discount: cartline.DiscountAmount\r\n };\r\n\r\n items.push(item);\r\n });\r\n }\r\n\r\n return {\r\n enterpriseId: enterpriseId,\r\n pageType: this.props.config.pageType,\r\n userId: this.props.context.request.user.customerAccountNumber || '',\r\n emailHash: emailAddressHash || '',\r\n cartSubtotal: subTotalAmount,\r\n items: items\r\n };\r\n }\r\n\r\n private _setConversionTag(): IConversionTag | null {\r\n const { salesId = '', transactionId = '' } = this.props.context.request.query || {};\r\n const channelReferenceId = this.props?.salesOrder?.ChannelReferenceId || '';\r\n const enterpriseId = this.props.config.enterpriseId;\r\n const cjeCookieValue = this.props.context.request.cookies.get(this.props.config.cookieName || 'cje').value;\r\n const items: ISiteTagItem[] = [];\r\n const salesOrder = this.props.salesOrder;\r\n const totalAmount: number | undefined = salesOrder && salesOrder.NetAmountWithoutTax;\r\n const currencyCode: string | undefined = salesOrder && salesOrder.CurrencyCode;\r\n const orderId: string | undefined = salesId || channelReferenceId || transactionId;\r\n let emailAddressHash;\r\n if (this.props.context.request.user.emailAddress !== undefined && this.props.context.request.user.emailAddress !== null) {\r\n const email = this.props.context.request.user.emailAddress.toLocaleLowerCase().trim();\r\n emailAddressHash = CryptoJS.SHA256(email).toString(CryptoJS.enc.Hex);\r\n }\r\n const coupons: string[] = [];\r\n\r\n const salesLines = salesOrder?.SalesLines;\r\n if (salesLines && salesLines?.length > 0) {\r\n salesLines.map(salesLine => {\r\n const item: ISiteTagItem = {\r\n itemId: salesLine.ItemId,\r\n unitPrice: salesLine.Price,\r\n quantity: salesLine.Quantity\r\n };\r\n salesLine.DiscountLines!.map(discount => {\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n if (discount.DiscountCode && discount.DiscountCode !== '') {\r\n coupons.push(discount.DiscountCode);\r\n }\r\n item.discount = (item.discount || 0) + (discount.EffectiveAmount || 0);\r\n });\r\n items.push(item);\r\n });\r\n }\r\n\r\n if (currencyCode !== undefined && enterpriseId !== undefined && orderId !== undefined && totalAmount !== undefined) {\r\n const couponsUnq = [...new Set(coupons)];\r\n return {\r\n actionTrackerId: 430475,\r\n amount: totalAmount,\r\n cjeventOrder: cjeCookieValue || '',\r\n coupon: couponsUnq.length > 0 ? `${couponsUnq.join(',')}` : '',\r\n currency: currencyCode,\r\n enterpriseId: enterpriseId,\r\n orderId: orderId,\r\n pageType: this.props.config.pageType,\r\n userId: this.props.context.request.user.customerAccountNumber || '',\r\n emailHash: emailAddressHash || '',\r\n items: items\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nexport default CommisionJunction;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport * as React from 'react';\r\nimport { ICommisionJunctionViewProps } from './commision-junction';\r\n\r\nclass CommisionJunctionViewProps extends React.PureComponent {\r\n public constructor(props: ICommisionJunctionViewProps) {\r\n super(props);\r\n }\r\n\r\n public windowFunction(): void {\r\n if (this.props.isCJEnabled) {\r\n this.props.siteTag && this._addSiteTag();\r\n this.props.conversionTag && this._addConversionTag();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.windowFunction();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n this.windowFunction();\r\n const script = document.createElement('script');\r\n script.src = 'https://www.mczbf.com/tags/12703/tag.js';\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.id = 'cjapitag';\r\n document.body.appendChild(script);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return <>;\r\n }\r\n\r\n /**\r\n * HandlePageLoad.\r\n */\r\n private readonly _addSiteTag = () => {\r\n if (!(window as any).cj) {\r\n (window as any).cj = {};\r\n }\r\n (window as any).cj.sitePage = this.props.siteTag;\r\n };\r\n\r\n private readonly _addConversionTag = () => {\r\n if (!(window as any).cj) {\r\n (window as any).cj = {};\r\n }\r\n (window as any).cj.order = this.props.conversionTag;\r\n };\r\n}\r\nexport default CommisionJunctionViewProps;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ICustomImageBannerData } from './custom-image-banner.data';\r\nimport { ICustomImageBannerProps } from './custom-image-banner.props.autogenerated';\r\n\r\nexport interface ICustomImageBannerViewProps extends ICustomImageBannerProps {}\r\n\r\n/**\r\n *\r\n * CustomImageBanner component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CustomImageBanner extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default CustomImageBanner;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ICustomImageBannerViewProps } from './custom-image-banner';\r\n\r\nexport default (props: ICustomImageBannerViewProps) => {\r\n return (\r\n
\r\n
\r\n
\r\n {props.config.heading && props.config.heading.text\r\n ? React.createElement(\r\n props.config.heading.tag || 'h1',\r\n {\r\n className: 'image-banner__title',\r\n contentEditable: false\r\n },\r\n props.config.heading.text\r\n )\r\n : ''}\r\n {props.config.paragraph && (\r\n ${props.config.paragraph}

`} />\r\n )}\r\n {props.config.cta && props.config.cta.label && props.config.cta.link ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ITimelineData } from './timeline.data';\r\nimport { ITimelineProps } from './timeline.props.autogenerated';\r\n\r\nexport interface ITimelineViewProps extends ITimelineProps {}\r\n\r\n/**\r\n *\r\n * Timeline component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Timeline extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default Timeline;\r\n","export const getTimelineItemLabel = (linkText: string, heading?: string) => {\r\n return heading ? `${heading} ${linkText}` : linkText;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ITimelineViewProps } from './timeline';\r\nimport { getTimelineItemLabel } from './getTimelineItemLabel';\r\n\r\nexport default (props: ITimelineViewProps) => {\r\n return (\r\n \r\n );\r\n};\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';\nimport { ICheckoutApplePayViewProps } from './checkout-apple-pay';\n\nconst CheckoutApplePayView: React.FC = props => {\n const { checkoutApplePay, applePayButton, alert } = props;\n\n return (\n \n {alert}\n {applePayButton}\n \n );\n};\n\nexport default CheckoutApplePayView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressOverlayModal, ICheckoutExpressViewProps } from './checkout-express';\n\n/**\n * Overlay modal.\n * @param param0 - Modal.\n * @param param0.modal - Modal param.\n * @returns React node.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- public name.\nconst OverlayModal: React.FC = ({ modal }) => {\n return ;\n};\n\n/**\n * Checkout express view.\n * @param param0 - Checkout express view props.\n * @param param0.checkoutExpress - Checkout express.\n * @param param0.waiting - Waiting.\n * @param param0.alert - Alert.\n * @param param0.addPaymentForm - Add payment form.\n * @param param0.overlayModal - Overlay modal.\n * @param param0.title - Module title.\n * @param param0.shouldHideExpressCheckout - ShouldHideExpressCheckout.\n * @returns React node.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Public name.\nconst CheckoutExpressView: React.FC = ({\n checkoutExpress,\n waiting,\n alert,\n addPaymentForm,\n overlayModal,\n title,\n shouldHideExpressCheckout\n}) =>\n shouldHideExpressCheckout ? (\n <>\n ) : (\n \n {title}\n {waiting}\n {alert}\n {addPaymentForm}\n {overlayModal && }\n \n );\n\nexport default CheckoutExpressView;\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';\nimport { ICheckoutGooglePayViewProps } from './checkout-google-pay';\n\nconst CheckoutGooglePayView: React.FC = props => {\n const { alert, checkoutGooglePay, checkoutButton } = props;\n return (\n \n {alert}\n
ref?.appendChild(checkoutButton || document.createElement('div'))}>
\n
\n );\n};\n\nexport default CheckoutGooglePayView;\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';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\n\nimport { IHtmlBlockProps } from './html-block.props.autogenerated';\n\nexport interface IHtmlBlockViewProps extends IHtmlBlockProps<{}> {\n content?: React.ReactNode;\n className?: string;\n}\n\n/**\n *\n * HtmlBlock component\n * @extends {React.PureComponent>}\n */\nclass HtmlBlock extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { content, className } = this.props.config;\n const text = content && (\n \n );\n const htmlBlockViewProps = {\n ...this.props,\n content: text,\n className: classnames('ms-html-block', className)\n };\n return this.props.renderView(htmlBlockViewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.content = event.target.value);\n}\n\nexport default HtmlBlock;\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';\nimport { IHtmlBlockViewProps } from './html-block';\n\nconst HtmlBlockView: React.FC = props => (\n
\n {props.content}\n
\n);\n\nexport default HtmlBlockView;\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 { 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","/*!\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 { IProductPageSummaryData } from './product-page-summary.data';\nimport { IProductPageSummaryProps } from './product-page-summary.props.autogenerated';\n\n/**\n *\n * ProductPageSummary component.\n * @extends {React.PureComponent}\n */\nclass ProductPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.productPageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n productPageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n productPageSummary: {\n result: { canonicalUrl, productId, productBrand, price }\n }\n }\n } = this.props;\n\n // Product SEO metadata specific information - non-overridable\n const productName = title;\n const productDescription = description;\n const productImageUrl = sharingImageUrl;\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 // Construct page title with suffix and prefix if provided from app settings\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 {this._renderProductMetadata(\n productName,\n productDescription,\n productImageUrl,\n canonicalUrl,\n productId,\n price,\n context.request.channel?.Currency,\n productBrand\n )}\n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n /**\n * Renders the facebook and other social media specific metadata tags.\n *\n * @param title Page title.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\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 /**\n * Constructs and renders the JSON-LD tag used to output product specific metadata used by search engine crawlers.\n *\n * @param productName Product name.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n * @param canonicalUrl Product canonical url.\n * @param productId Master product id.\n * @param price Proudct price.\n * @param currencyCode Current channel currency code.\n * @param productBrand Product brand.\n */\n private _renderProductMetadata(\n productName: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined,\n canonicalUrl: string | undefined,\n productId: number | undefined,\n price: number | undefined,\n currencyCode: string | undefined,\n productBrand: string | undefined\n ): JSX.Element {\n // Construct the JSON-LD data that contains the product metadata information used by search enginge crawlers\n const productMetaData = JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'Product',\n name: productName,\n description,\n image: sharingImageUrl,\n sku: productId,\n brand: {\n '@type': 'Brand',\n name: productBrand\n },\n offers: {\n '@type': 'Offer',\n url: canonicalUrl,\n priceCurrency: currencyCode,\n price\n }\n });\n return (\n \n {/* eslint-disable-next-line react/no-danger -- Implementation is a copy.*/}\n