{"version":3,"file":"static/js/14.bb3f598629d63d288b61.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/country-picker-all/country-picker-all.tsx?a055","webpack://nile.commerce.online/./src/modules/country-picker-all/country-picker-all.view.tsx?c5cc","webpack://nile.commerce.online/./src/modules/nile-newsletter/nile-newsletter.tsx?f408","webpack://nile.commerce.online/./src/modules/nile-newsletter/nile-newsletter.view.tsx?1256","webpack://nile.commerce.online/./src/themes/nile-theme/views/account-management-address.view.tsx?1c5f","webpack://nile.commerce.online/./src/themes/nile-theme/views/account-profile.view.tsx?6917","webpack://nile.commerce.online/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://nile.commerce.online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://nile.commerce.online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://nile.commerce.online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://nile.commerce.online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://nile.commerce.online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://nile.commerce.online/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://nile.commerce.online/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://nile.commerce.online/./src/modules/image-list/image-list.tsx?5602","webpack://nile.commerce.online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://nile.commerce.online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://nile.commerce.online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","webpack://nile.commerce.online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://nile.commerce.online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://nile.commerce.online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://nile.commerce.online/./src/modules/map/map.tsx?6111","webpack://nile.commerce.online/./src/modules/map/map.view.tsx?5db9","webpack://nile.commerce.online/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://nile.commerce.online/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://nile.commerce.online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6"],"sourcesContent":["/*--------------------------------------------------------------\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365Lib from '@msdyn365-commerce/core';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ICookieSetOptions, IImageDimension } from '@msdyn365-commerce/core-internal';\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICountryPickerAllData } from './country-picker-all.data';\r\nimport { IActionLinkData, ICountryListData, ICountryPickerAllProps } from './country-picker-all.props.autogenerated';\r\n\r\n/**\r\n * CountryPicker view props interface.\r\n */\r\nexport interface ICountryPickerViewProps extends ICountryPickerAllProps {\r\n modalContainer: IModuleProps;\r\n modalHeaderContainer: INodeProps;\r\n modalFooterContainer: INodeProps;\r\n modalBodyContainer: INodeProps;\r\n heading?: React.ReactNode;\r\n subheading?: React.ReactNode;\r\n link?: React.ReactNode;\r\n countryList?: ICountryStructure[];\r\n isModalOpen?: boolean;\r\n state?: ICountryPickerState;\r\n stayOnCurrentSiteButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICountryStructure {\r\n name?: string;\r\n elements?: React.ReactNode[];\r\n}\r\n\r\n/**\r\n * ICountryPickerState: Interface for Country picker State.\r\n */\r\nexport interface ICountryPickerState {\r\n isModalOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CountryPicker component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\r\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\r\n private readonly _preferredSiteNameStorageKey: string = '_msdyn365___sitename_';\r\n\r\n //private readonly _cookieExpirationTime = 5_184_000;\r\n\r\n private readonly _makeBaseUrl = function(origin: string, path: string) {\r\n let ext = '';\r\n const base = origin.charAt(origin.length - 1) === '/' ? origin.slice(0, origin.length - 1) : origin;\r\n if (path.indexOf('/eu-en') === 0) {\r\n ext = 'eu-en';\r\n } else if (path.indexOf('/en') === 0) {\r\n ext = 'en';\r\n } else if (path.indexOf('/fr-ch') === 0) {\r\n ext = 'fr-ch';\r\n } else if (path.indexOf('/fr') === 0) {\r\n ext = 'fr';\r\n } else if (path.indexOf('/eu') === 0) {\r\n ext = 'eu';\r\n } else {\r\n return base;\r\n }\r\n return `${base}/${ext}`;\r\n };\r\n\r\n private validateCookieValue(cookie: string): boolean {\r\n if (\r\n cookie === `${this.props.context.request.url.requestUrl.origin}` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/en` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/fr-ch` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/fr` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/eu` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/eu-en`\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public constructor(props: ICountryPickerAllProps) {\r\n super(props);\r\n let isCookieValueSet: boolean = false;\r\n const baseUrl = this._makeBaseUrl(props.context.request.url.requestUrl.origin, props.context.request.url.requestUrl.pathname);\r\n let cookieValue: string | undefined;\r\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\r\n isCookieValueSet = true;\r\n cookieValue = this._stripTrailingSlashes(props.context.request.cookies.get(this._preferredSiteStorageKey).value as string);\r\n if (MsDyn365.isBrowser) {\r\n if (\r\n this.validateCookieValue(this._appendProtocolToUrl(cookieValue)) &&\r\n this._appendProtocolToUrl(cookieValue) !== baseUrl &&\r\n props.config.autoRedirect &&\r\n window.location.href.search('localhost:4000') !== 8 //This will always be 8 if you are on localhost. please do not redirect\r\n ) {\r\n window.location.replace(\r\n this._appendProtocolToUrl(cookieValue) +\r\n this.stripLocale(this.props.context.request.url.requestUrl.pathname.toString()) +\r\n this.props.context.request.url.requestUrl.search ?? ''\r\n );\r\n }\r\n }\r\n }\r\n if (this.props.config.autoRedirect) {\r\n this.state = {\r\n isModalOpen: !isCookieValueSet // || (cookieValue !== undefined && this._appendProtocolToUrl(cookieValue) !== baseUrl)\r\n };\r\n } else {\r\n this.state = {\r\n isModalOpen: !isCookieValueSet || (cookieValue !== undefined && this._appendProtocolToUrl(cookieValue) !== baseUrl)\r\n };\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, subheading, countryList, actionLink } = this.props.config;\r\n\r\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\r\n\r\n if (!isConsentGiven) {\r\n return null;\r\n }\r\n\r\n const countryPickerHeading = heading && (\r\n \r\n );\r\n\r\n const countryPickerSubHeading = subheading && (\r\n \r\n );\r\n\r\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\r\n const currentSiteButton = (\r\n \r\n );\r\n\r\n const viewprops: ICountryPickerViewProps = {\r\n ...this.props,\r\n state: this.state,\r\n isModalOpen: this.state.isModalOpen,\r\n modalContainer: {\r\n moduleProps: this.props,\r\n tag: Modal,\r\n className: 'ms-country-picker__dialog',\r\n isOpen: true,\r\n 'aria-label': 'country-picker',\r\n toggle: this.closeModal,\r\n modalTransition: { timeout: 0 },\r\n shouldUpdateFocusToFirstElement: true\r\n },\r\n modalHeaderContainer: {\r\n tag: ModalHeader,\r\n className: 'ms-country-picker__modal-header',\r\n toggle: this.closeModal\r\n },\r\n modalFooterContainer: {\r\n tag: ModalFooter,\r\n className: 'ms-countryPicker__modal-footer'\r\n },\r\n modalBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-counrtyPicker__modal-body'\r\n },\r\n heading: countryPickerHeading,\r\n subheading: countryPickerSubHeading,\r\n link: countryPickerActionLink,\r\n countryList: countryList && this.renderCountryList(),\r\n stayOnCurrentSiteButton: currentSiteButton\r\n };\r\n\r\n return this.props.renderView(viewprops);\r\n }\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n public readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n public handleParagraphChange(event: MsDyn365Lib.ContentEditableEvent): void {\r\n this.props.config.subheading = event.target.value;\r\n }\r\n\r\n public handleTextChange(event: MsDyn365Lib.ContentEditableEvent): void {\r\n this.props.config.heading!.text = event.target.value;\r\n }\r\n\r\n public handleLinkTextChange(event: MsDyn365Lib.ContentEditableEvent): void {\r\n if (this.props.config.actionLink?.linkText) {\r\n this.props.config.actionLink.linkText = event.target.value;\r\n }\r\n }\r\n\r\n public createLink(link?: IActionLinkData): React.ReactNode | null {\r\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\r\n const linkText = link?.linkText ?? '';\r\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\r\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\r\n const editableLink: MsDyn365Lib.ILinksData = {\r\n ariaLabel: link?.ariaLabel,\r\n className: 'ms-countryPicker__link',\r\n linkText,\r\n linkUrl: link?.linkUrl.destinationUrl,\r\n openInNewTab: link?.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes!,\r\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\r\n };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n public renderCountryList(): ICountryStructure[] {\r\n const countryList = this.props.config.countryList;\r\n\r\n const countryGroups = countryList && groupBy(countryList, x => x.displayGroup);\r\n\r\n const countryLinks: ICountryStructure[] = [];\r\n\r\n countryGroups?.forEach(countrydata => {\r\n const clinks = countrydata.map((item: ICountryListData) => {\r\n return this.renderCountry(item);\r\n });\r\n\r\n countryLinks.push({ name: countrydata[0].displayGroup, elements: clinks });\r\n });\r\n return countryLinks;\r\n }\r\n\r\n public renderCountry(item: ICountryListData): React.ReactNode {\r\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\r\n const defaultImageSettings: MsDyn365Lib.IImageSettings = {\r\n viewports: {\r\n xs: imageSize,\r\n lg: imageSize,\r\n xl: imageSize\r\n },\r\n lazyload: true\r\n };\r\n const image = item.image;\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings!,\r\n imageSettings: image?.imageSettings ?? defaultImageSettings\r\n };\r\n\r\n return (\r\n \r\n {image && (\r\n \r\n )}\r\n
\r\n {`${item.displayGroupLocalizedName ??\r\n item.displayGroup}(${item.displayString})`}\r\n
\r\n \r\n );\r\n }\r\n\r\n private stripLocale(input: string): string {\r\n var result = input;\r\n if (input.includes('/eu-en') || input.includes('/fr-ch')) {\r\n result = input.slice(6);\r\n } else if (input.includes('/en') || input.includes('/eu') || input.includes('/fr')) {\r\n result = input.slice(3);\r\n } else if (input.length > 0) {\r\n result = input;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Writes the current site base url to cookie and closes the country picker modal dialog.\r\n */\r\n private readonly _handleStayOnSiteButtonClick = (): void => {\r\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\r\n if (currentBaseUrl) {\r\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\r\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\r\n }\r\n this.closeModal();\r\n };\r\n\r\n /**\r\n * Handles click event of country selection.\r\n * @param storageKey - Cookie storage key.\r\n * @param storageValue - Preffered site url.\r\n * @returns - This method just writes the cookie to the browser.\r\n */\r\n private readonly _handleClick = (storageKey?: string, storageValue?: string, storageKey2?: string, storageValue2?: string) => () => {\r\n this._writeToCookie(storageKey, storageValue);\r\n this._writeToCookie(storageKey2, storageValue2);\r\n };\r\n\r\n /**\r\n * Handles click event of country selection.\r\n * @param storageKey - Cookie storage key.\r\n * @param storageValue - Preffered site url.\r\n */\r\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\r\n if (!storageKey || !storageValue) {\r\n return;\r\n }\r\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\r\n cookieOptions.maxAge = this.props.config.cookieLifetime;\r\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\r\n };\r\n\r\n /**\r\n * Appends protocol to an url.\r\n * @param baseUrl - Url to be formatted.\r\n * @returns - URL after appending protocol.\r\n */\r\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\r\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\r\n };\r\n\r\n private readonly _stripTrailingSlashes = (path: string): string => {\r\n return path.replace(/\\/+$/, '');\r\n };\r\n}\r\n\r\nfunction groupBy(array: V[], grouper: (item: V) => K) {\r\n return array.reduce((store, item) => {\r\n var key = grouper(item);\r\n if (!store.has(key)) {\r\n store.set(key, [item]);\r\n } else {\r\n store?.get(key)?.push(item);\r\n }\r\n return store;\r\n }, new Map());\r\n}\r\n\r\nexport default CountryPicker;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICountryPickerViewProps } from './country-picker-all';\r\n\r\n/**\r\n * Functional component which renders country picker module.\r\n * @param props - Configuration for the country picker component.\r\n * @returns React.FC - Functional component of the country picker module.\r\n */\r\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\r\n const {\r\n isModalOpen,\r\n modalContainer,\r\n modalHeaderContainer,\r\n modalBodyContainer,\r\n heading,\r\n modalFooterContainer,\r\n subheading,\r\n link,\r\n countryList,\r\n resources\r\n } = props;\r\n const preferredSite = props.context.request.cookies.get('_msdyn365___site_').value as string;\r\n\r\n function stripLocale(urlExt: string): string {\r\n const stripRegex = /^\\/(eu-en|en|fr-ch|fr|eu)\\/?/gi;\r\n const newUrlExt = urlExt.replace(stripRegex, '');\r\n return newUrlExt;\r\n }\r\n\r\n function prefhref(preferredSite: string, urlExt: string): string {\r\n return preferredSite.charAt(preferredSite.length - 1) === '/' || urlExt.charAt(0) === '/'\r\n ? `${preferredSite}${urlExt}`\r\n : `${preferredSite}/${urlExt}`;\r\n }\r\n const urlExt = stripLocale(props.context.request.url.requestUrl.pathname);\r\n\r\n if (preferredSite && countryList && isModalOpen) {\r\n const preferredSiteName = props.context.request.cookies.get('_msdyn365___sitename_').value as string;\r\n const currentLocaleName = function() {\r\n const currentLocale = props.context.request.url.requestUrl.pathname;\r\n\r\n if (currentLocale.indexOf('/eu-en') === 0) {\r\n return 'European Union (English)';\r\n } else if (currentLocale.indexOf('/en') === 0) {\r\n return 'Switzerland (English)';\r\n } else if (currentLocale.indexOf('/fr-ch') === 0) {\r\n return 'Suisse (Français)';\r\n } else if (currentLocale.indexOf('/fr') === 0) {\r\n return 'Union Européenne (Français)';\r\n } else if (currentLocale.indexOf('/eu') === 0) {\r\n return 'Europäische Union (Deutsch)';\r\n } else {\r\n return 'Schweiz (Deutsch)';\r\n }\r\n };\r\n return (\r\n \r\n \r\n
\r\n

Welcome Back!

\r\n
\r\n

\r\n {resources.geolocationOopsText}\r\n {` ${currentLocaleName()}`}.\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n

\r\n {resources.geolocationReturnText}\r\n {preferredSiteName}?\r\n

\r\n
\r\n
\r\n —{resources.geolocationOrText}—\r\n \r\n

{resources.geolocationPickNewText}

\r\n
\r\n \r\n {countryList.map(country => (\r\n
\r\n {country?.elements}\r\n
\r\n ))}\r\n
\r\n\r\n {link}\r\n
\r\n );\r\n }\r\n\r\n return isModalOpen && countryList ? (\r\n \r\n \r\n {heading}\r\n
{resources.geolocationSubText}
\r\n {subheading}\r\n
\r\n \r\n {countryList.map(country => (\r\n
\r\n {country?.elements}\r\n
\r\n ))}\r\n
\r\n\r\n {link}\r\n
\r\n ) : null;\r\n};\r\n\r\nexport default countryPickerView;\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// @ts-ignore\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { INileNewsletterData } from './nile-newsletter.data';\r\nimport { INileNewsletterProps } from './nile-newsletter.props.autogenerated';\r\nimport { IModuleProps, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport interface INileNewsletterPreference {\r\n nileNewsletterPreference: INodeProps;\r\n buttonWrapper: INodeProps;\r\n buttonYesText: React.ReactNode;\r\n buttonNoText: React.ReactNode;\r\n button: React.ReactNode;\r\n description: React.ReactNode;\r\n}\r\nexport interface INileNewsletterItem {\r\n NileNewsletterItem: INodeProps;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\nexport interface INileNewsletterViewProps extends INileNewsletterProps {\r\n nileNewsletter: IModuleProps;\r\n nileNewsletterWrapper?: INodeProps;\r\n className: string;\r\n modalContainer: IModuleProps;\r\n modalHeaderContainer: INodeProps;\r\n modalFooterContainer: INodeProps;\r\n modalBodyContainer: INodeProps;\r\n}\r\n/**\r\n *\r\n * NileNewsletter component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nexport class NileNewsletter extends React.PureComponent> {\r\n public constructor(props: INileNewsletterProps) {\r\n super(props);\r\n }\r\n public shouldComponentUpdate(nextProps: INileNewsletterProps): boolean {\r\n if (this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Initiate close modal\r\n */\r\n public readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n const { className } = config;\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n nileNewsletter: {\r\n moduleProps: this.props\r\n },\r\n modalContainer: {\r\n moduleProps: this.props,\r\n tag: Modal,\r\n className: 'ms-nile-newsletter__dialog',\r\n isOpen: true,\r\n 'aria-label': 'nile-newsletter',\r\n toggle: this.closeModal,\r\n modalTransition: { timeout: 0 },\r\n shouldUpdateFocusToFirstElement: true\r\n },\r\n modalHeaderContainer: {\r\n tag: ModalHeader,\r\n className: 'ms-nile-newsletter__modal-header',\r\n toggle: this.closeModal\r\n },\r\n modalFooterContainer: {\r\n tag: ModalFooter,\r\n className: 'ms-nileNewsletter__modal-footer'\r\n },\r\n modalBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-nileNewsletter__modal-body'\r\n }\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default NileNewsletter;\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 { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { INileNewsletterViewProps } from './nile-newsletter';\r\nimport { INileNewsletterProps } from '../nile-newsletter/nile-newsletter.props.autogenerated';\r\nimport classnames from 'classnames';\r\nimport { IGetMailchimpSubscriptionStatusData } from '../../actions/get-mailchimp-subscription-status.action';\r\nimport { changeMailChimpSubscriptionStatusAsync, setUserBirthdayAsync } from '../../actions/DataActionExtension.g';\r\n\r\nimport { MouseEventHandler } from 'react';\r\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { IGetBirthdayResponse } from '../../actions/get-user-birthday.action';\r\nimport { padStart } from 'lodash';\r\n\r\ninterface IMailchimpSignupPreferences {\r\n yesText: string;\r\n noText: string;\r\n newsletterYesText: string;\r\n physicalYesText: string;\r\n mailchimpState: IMailchimpState;\r\n handler: MouseEventHandler;\r\n physicalHandler: MouseEventHandler;\r\n}\r\ninterface IMailChimpSubmitPreferences {\r\n submitButtonText: string;\r\n handler: MouseEventHandler;\r\n}\r\ninterface IMailchimpState {\r\n isModalOpen: boolean;\r\n newsletterSubscribed: boolean;\r\n physicalSubscribed: boolean;\r\n dayString: string | undefined;\r\n bDay: number;\r\n bMonth: number;\r\n bYear: number;\r\n bdayError: string;\r\n newsletterCookieSet: boolean;\r\n showBirthday: boolean;\r\n showNewsletter: boolean;\r\n}\r\n\r\ninterface IBdayPreferences {\r\n state: IMailchimpState;\r\n onEditBirthdayInput: any;\r\n}\r\n\r\nexport interface INileNewsletterData {\r\n mailchimpSubscriptionStatus: AsyncResult;\r\n birthday: AsyncResult;\r\n}\r\n\r\nconst MailchimpSignupSection: React.FC> = ({\r\n physicalYesText,\r\n newsletterYesText,\r\n yesText,\r\n noText,\r\n mailchimpState,\r\n handler,\r\n physicalHandler\r\n}) => {\r\n const newsletterClassText = mailchimpState.newsletterSubscribed ? 'enable' : 'disable';\r\n const physicalClassText = mailchimpState.physicalSubscribed ? 'enable' : 'disable';\r\n const classNames = classnames('ms-nile-newsletter__container', ``);\r\n const buttonWrapper = {\r\n className: classnames('ms-nile-newsletter__container__flex', ``)\r\n };\r\n\r\n const button = (\r\n \r\n );\r\n const physicalButton = (\r\n \r\n );\r\n //Yes, I would like to recieve newsletter.\r\n\r\n const buttonYesText = {yesText} ;\r\n const buttonNoText = {noText};\r\n\r\n const buttonPhysicalYesText = {yesText};\r\n const buttonPhysicalNoText = {noText};\r\n return (\r\n <>\r\n \r\n \r\n
\r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n
\r\n

{newsletterYesText}

\r\n
\r\n
\r\n \r\n \r\n
\r\n {buttonPhysicalNoText}\r\n {physicalButton}\r\n {buttonPhysicalYesText}\r\n
\r\n

{physicalYesText}

\r\n
\r\n
\r\n \r\n );\r\n};\r\nconst MailchimpSubmitButton: React.FC> = ({\r\n submitButtonText,\r\n handler\r\n}) => {\r\n const submitButton = (\r\n \r\n );\r\n // const classNames = classnames('ms-account-profile__preference', `ms-account-profile__preference-web-tracking`, {\r\n // 'ms-account-profile__personalization-updating': true\r\n // });\r\n return (\r\n <>\r\n
{submitButton}
\r\n \r\n );\r\n};\r\n\r\nconst NewsletterBirthdaySection: React.FC> = ({\r\n state,\r\n onEditBirthdayInput\r\n}) => {\r\n return (\r\n <>\r\n \r\n

{state.bdayError}

\r\n \r\n );\r\n};\r\n\r\nexport interface ICookieSetOptions {\r\n path?: string;\r\n expires?: Date;\r\n maxAge?: number;\r\n domain?: string;\r\n secure?: boolean;\r\n httpOnly?: boolean;\r\n sameSite?: boolean | 'none' | 'lax' | 'strict';\r\n}\r\nexport class NileNewsletterView extends React.PureComponent<\r\n INileNewsletterViewProps & INileNewsletterProps,\r\n IMailchimpState\r\n> {\r\n private readonly _preferredNewsLettertorageKey: string = '_msdyn365___newsletter_popup';\r\n public string = '_msdyn365__birthday_';\r\n constructor(props: INileNewsletterViewProps & INileNewsletterProps) {\r\n super(props);\r\n this.getIsModalOpenNeeded();\r\n }\r\n public getIsModalOpenNeeded = () => {\r\n const {\r\n data: { mailchimpSubscriptionStatus, birthday }\r\n } = this.props;\r\n const status = mailchimpSubscriptionStatus.result;\r\n const birthdayStatus = birthday.result;\r\n //When to display:\r\n //You are not subscribed to either physical or newsletter and this popup has not shown for X time\r\n //You have not entered your birthday and this popup has not shown for X time.\r\n\r\n const newsletterSubscribedValue: boolean = status?.newsletterActive || false;\r\n const physicalSubscribedValue: boolean = status?.physicalActive || false;\r\n\r\n const bDayint: number = birthdayStatus?.Day || -1;\r\n const bMonthint: number = birthdayStatus?.Month || -1;\r\n const bYearint: number = birthdayStatus?.Year || -1;\r\n\r\n let isCookieValueSet: boolean = false;\r\n\r\n let isModalOpenState = !(newsletterSubscribedValue && physicalSubscribedValue) || bDayint === -1;\r\n\r\n if (this.props.context.request.cookies.get(this._preferredNewsLettertorageKey).value) {\r\n isCookieValueSet = true;\r\n }\r\n if (isCookieValueSet) {\r\n isModalOpenState = false;\r\n }\r\n\r\n this.state = {\r\n newsletterSubscribed: newsletterSubscribedValue,\r\n physicalSubscribed: physicalSubscribedValue,\r\n isModalOpen: isModalOpenState,\r\n dayString: undefined,\r\n bDay: bDayint,\r\n bMonth: bMonthint,\r\n bYear: bYearint,\r\n bdayError: '',\r\n newsletterCookieSet: isCookieValueSet,\r\n showBirthday: bDayint === -1 || bMonthint === -1 || bYearint === -1,\r\n showNewsletter: !(newsletterSubscribedValue && physicalSubscribedValue)\r\n };\r\n };\r\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\r\n if (!storageKey || !storageValue) {\r\n return;\r\n }\r\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\r\n cookieOptions.maxAge = this.props.config.cookieLifetime;\r\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\r\n };\r\n public handleMailChimpSubscriptionStatusClick = () => {\r\n changeMailChimpSubscriptionStatusAsync(\r\n { callerContext: this.props.context.actionContext },\r\n !this.state.newsletterSubscribed,\r\n false\r\n ).then(res => {\r\n if (res.Success) {\r\n this.setState({ newsletterSubscribed: !this.state.newsletterSubscribed });\r\n this._writeToCookie(this._preferredNewsLettertorageKey, this.state.newsletterSubscribed.toString());\r\n }\r\n });\r\n };\r\n public handleMailChimpPhysicalSubscriptionStatusClick = () => {\r\n changeMailChimpSubscriptionStatusAsync(\r\n { callerContext: this.props.context.actionContext },\r\n !this.state.physicalSubscribed,\r\n true\r\n ).then(res => {\r\n if (res.Success) {\r\n this.setState({ physicalSubscribed: !this.state.physicalSubscribed });\r\n this._writeToCookie(this._preferredNewsLettertorageKey, this.state.newsletterSubscribed.toString());\r\n }\r\n });\r\n };\r\n public handlSubmiteMailChimpSubscriptionStatusClick = async () => {\r\n // this.handleMailChimpPhysicalSubscriptionStatusClick();\r\n // this.handleMailChimpSubscriptionStatusClick();\r\n if (this.state.bDay === -1) {\r\n const success = await this.submitBirthday();\r\n if (success) {\r\n if (this.state.newsletterSubscribed === true || this.state.physicalSubscribed === true) {\r\n this._writeToCookie(this._preferredNewsLettertorageKey, this.state.newsletterSubscribed.toString());\r\n }\r\n this._writeToCookie(this._preferredNewsLettertorageKey, 'true');\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n }\r\n } else {\r\n if (this.state.newsletterSubscribed === true || this.state.physicalSubscribed === true) {\r\n this._writeToCookie(this._preferredNewsLettertorageKey, this.state.newsletterSubscribed.toString());\r\n }\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n }\r\n };\r\n\r\n public CloseModal = (): void => {\r\n this._writeToCookie(this._preferredNewsLettertorageKey, this.state.newsletterSubscribed.toString());\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n public onEditBirthdayInput = (e: any) => {\r\n this.setState({ dayString: e.target.value });\r\n return false;\r\n };\r\n\r\n public submitBirthday = async (): Promise => {\r\n const customerAccountNum = this.props.context.request.user.customerAccountNumber;\r\n if (this.state.dayString && customerAccountNum) {\r\n if (\r\n new Date(this.state.dayString) &&\r\n new Date(this.state.dayString).getFullYear() < new Date().getFullYear() &&\r\n new Date(this.state.dayString).getFullYear() > 1901 //Magic \"Not before 1901 year plz\"\r\n ) {\r\n //Is this a valid date, and is it before today?\r\n const splitDate: string[] = this.state.dayString.split('-');\r\n\r\n const result = await setUserBirthdayAsync(\r\n { callerContext: this.props.context.actionContext },\r\n parseInt(splitDate[2], 10),\r\n parseInt(splitDate[1], 10),\r\n parseInt(splitDate[0], 10),\r\n customerAccountNum\r\n );\r\n\r\n this.setState({\r\n bDay: parseInt(splitDate[2], 10),\r\n bMonth: parseInt(splitDate[1], 10),\r\n bYear: parseInt(splitDate[0], 10),\r\n bdayError: ''\r\n });\r\n\r\n return result !== undefined;\r\n } else {\r\n this.setState({\r\n bdayError: this.props.resources.invalidDateError,\r\n dayString: `${this.state.bYear}-${padStart(this.state.bMonth.toString(), 2, '0')}-${padStart(\r\n this.state.bDay.toString(),\r\n 2,\r\n '0'\r\n )}`\r\n });\r\n return false;\r\n }\r\n }\r\n this.setState({\r\n bdayError: this.props.resources.invalidDateError\r\n });\r\n return false;\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n resources: {\r\n heading,\r\n mailchimpModalYesText,\r\n mailchimpModalNoText,\r\n submitButtonText,\r\n mailchimpPhysicalYesText,\r\n mailchimpYesText\r\n },\r\n modalContainer,\r\n modalBodyContainer,\r\n modalFooterContainer\r\n } = this.props;\r\n return this.state.isModalOpen && this.props.context.actionContext.requestContext.user.isAuthenticated ? (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n {this.state.showNewsletter ? (\r\n \r\n {heading}\r\n
\r\n\r\n \r\n
\r\n ) : (\r\n <>\r\n )}\r\n\r\n {this.state.showBirthday ? (\r\n \r\n

{this.props.resources.birthdayHeading}

\r\n
\r\n \r\n
\r\n ) : (\r\n <>\r\n )}\r\n\r\n \r\n \r\n \r\n
\r\n ) : null;\r\n }\r\n}\r\nexport default NileNewsletterView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport { IAddressList, IAddressListItem, IAddressListProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\n\r\ninterface IAddressListExtended extends IAddressList {\r\n classNameExtended: string;\r\n}\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address List Component.\r\n * @param param0 - Root param.\r\n * @param param0.List - Address list.\r\n * @param param0.isShowList - Boolean.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressListItem[].\r\n * @returns - AddressListComponent Node.\r\n */\r\nconst AddressList: React.FC = ({\r\n List,\r\n isShowList,\r\n heading,\r\n items,\r\n classNameExtended\r\n}) => {\r\n\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {items.length ? : null}\r\n \r\n {heading}\r\n {items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n {isShowError && \r\n {title}\r\n {message}\r\n }\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n );\r\n })}\r\n \r\n \r\n\r\n );\r\n};\r\n\r\n/**\r\n * Address Lists Component.\r\n * @param param0 - Root param.\r\n * @param param0.ListAddress - List address.\r\n * @param param0.heading - List heading.\r\n * @param param0.isShowEmptyListMessage - Boolean.\r\n * @param param0.emptyListMessage - Empty list message.\r\n * @param param0.addButton - Add button.\r\n * @param param0.primaryAddressList - Primary address.\r\n * @param param0.otherAddressList - Other address.\r\n * @returns Address Lists Component Node.\r\n */\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n {/**/}\r\n \r\n {/**/}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * AddressAddUpdateComponent.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Account Management Address View Component.\r\n * @param props - Props.\r\n * @returns - AccountAddressManagement Module.\r\n */\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, screenReaderNotification } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {screenReaderNotification}\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\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\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAccountPreference,\r\n IAccountPreferences,\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\nimport classnames from 'classnames';\r\nimport { IAccountProfileProps } from '../definition-extensions/account-profile.ext.props.autogenerated';\r\nimport { IGetMailchimpSubscriptionStatusData } from '../../../actions/get-mailchimp-subscription-status.action';\r\nimport { changeMailChimpSubscriptionStatusAsync, setUserBirthdayAsync } from '../../../actions/DataActionExtension.g';\r\nimport { MouseEventHandler } from 'react';\r\n// from account-profile.ext.data.tsx file, which is now deleted\r\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { IGetBirthdayResponse } from '../../../actions/get-user-birthday.action';\r\nimport { padStart } from 'lodash';\r\n\r\ninterface IMailchimpSignupPreferences {\r\n heading: string;\r\n description: string;\r\n physicalHeading: string;\r\n physicalDescription: string;\r\n yesText: string;\r\n noText: string;\r\n state: IMailchimpState;\r\n handler: MouseEventHandler;\r\n physicalHandler: MouseEventHandler;\r\n}\r\n\r\ninterface IBdayPreferences {\r\n state: IMailchimpState;\r\n editBirthday: MouseEventHandler;\r\n submitBirthday: MouseEventHandler;\r\n onEditBirthdayInput: any;\r\n label: string;\r\n submit: string;\r\n cancel: string;\r\n edit: string;\r\n notSet: string;\r\n}\r\n\r\ninterface IMailchimpState {\r\n newsletterSubscribed: boolean;\r\n physicalSubscribed: boolean;\r\n dayString: string | undefined;\r\n bDay: number;\r\n bMonth: number;\r\n bYear: number;\r\n editingBirthday: boolean;\r\n bdayError: string;\r\n}\r\n\r\n// from account-profile.ext.data.tsx file, now deleted\r\nexport interface IAccountProfileData {\r\n mailchimpSubscriptionStatus: AsyncResult;\r\n birthday: AsyncResult;\r\n}\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst BirthdaySection: React.FC> = ({\r\n state,\r\n editBirthday,\r\n submitBirthday,\r\n onEditBirthdayInput,\r\n label,\r\n submit,\r\n cancel,\r\n edit,\r\n notSet\r\n}) => {\r\n //TODO: Replace this with resource strings.\r\n if (state.editingBirthday) {\r\n return (\r\n <>\r\n

{label}

\r\n \r\n

{state.bdayError}

\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n } else if (state.bDay != -1 && state.bMonth != -1 && state.bYear != -1) {\r\n return (\r\n <>\r\n

{label}

\r\n

{state.dayString}

\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n

{label}

\r\n

{notSet}

\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n};\r\n\r\nconst MailchimpSignupSection: React.FC> = ({\r\n noText,\r\n description,\r\n heading,\r\n physicalHeading,\r\n physicalDescription,\r\n yesText,\r\n state,\r\n handler,\r\n physicalHandler\r\n}) => {\r\n const newsletterClassText = state.newsletterSubscribed ? 'enable' : 'disable';\r\n const physicalClassText = state.physicalSubscribed ? 'enable' : 'disable';\r\n const classNames = classnames('ms-account-profile__preference', `ms-account-profile__preference-web-tracking`, {\r\n 'ms-account-profile__personalization-updating': true\r\n });\r\n const buttonWrapper = {\r\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${newsletterClassText}`)\r\n };\r\n\r\n const physButtonWrapper = {\r\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${physicalClassText}`)\r\n };\r\n const button = (\r\n \r\n );\r\n\r\n const physicalButton = (\r\n \r\n );\r\n const buttonYesText = {yesText};\r\n const buttonNoText = {noText};\r\n\r\n const descriptionComponent =

{description}

;\r\n const physicalDescriptionComponent =

{physicalDescription}

;\r\n\r\n return (\r\n <>\r\n

{heading}

\r\n \r\n {descriptionComponent}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n
\r\n

{physicalHeading}

\r\n \r\n {physicalDescriptionComponent}\r\n \r\n {buttonNoText}\r\n {physicalButton}\r\n {buttonYesText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport class AccountProfileView extends React.PureComponent<\r\n IAccountProfileViewProps & IAccountProfileProps,\r\n IMailchimpState\r\n> {\r\n constructor(props: IAccountProfileViewProps & IAccountProfileProps) {\r\n super(props);\r\n this.state = {\r\n newsletterSubscribed: false,\r\n physicalSubscribed: false,\r\n dayString: undefined,\r\n editingBirthday: false,\r\n bDay: -1,\r\n bMonth: -1,\r\n bYear: -1,\r\n bdayError: ''\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const {\r\n data: { mailchimpSubscriptionStatus, birthday }\r\n } = this.props;\r\n const status = await mailchimpSubscriptionStatus.result;\r\n const bday = await birthday.result;\r\n this.setState({\r\n newsletterSubscribed: status?.newsletterActive || false,\r\n physicalSubscribed: status?.physicalActive || false,\r\n bDay: bday?.Day || 0,\r\n bMonth: bday?.Month || 0,\r\n bYear: bday?.Year || 0,\r\n dayString: `${bday?.Year}-${padStart(bday?.Month.toString(), 2, '0')}-${padStart(bday?.Day.toString(), 2, '0')}`\r\n });\r\n }\r\n\r\n handleMailChimpSubscriptionStatusClick = () => {\r\n changeMailChimpSubscriptionStatusAsync(\r\n { callerContext: this.props.context.actionContext },\r\n !this.state.newsletterSubscribed,\r\n false\r\n ).then(res => {\r\n if (res.Success) {\r\n this.setState({ newsletterSubscribed: !this.state.newsletterSubscribed });\r\n }\r\n });\r\n };\r\n\r\n setBday = (year: number, month: number, day: number) => {\r\n this.setState({ dayString: `${year}-${month}-${day}`, bDay: day, bMonth: month, bYear: year });\r\n };\r\n\r\n editBirthday = () => {\r\n this.setState({\r\n editingBirthday: !this.state.editingBirthday,\r\n dayString: `${this.state.bYear}-${padStart(this.state.bMonth.toString(), 2, '0')}-${padStart(\r\n this.state.bDay.toString(),\r\n 2,\r\n '0'\r\n )}`,\r\n bdayError: ''\r\n });\r\n };\r\n\r\n onEditBirthdayInput = (e: any) => {\r\n this.setState({ dayString: e.target.value });\r\n return false;\r\n };\r\n\r\n submitBirthday = async () => {\r\n if (this.state.dayString && this.props.data.customerInformation.result?.AccountNumber) {\r\n if (\r\n new Date(this.state.dayString) &&\r\n new Date(this.state.dayString).getFullYear() < new Date().getFullYear() &&\r\n new Date(this.state.dayString).getFullYear() > 1901 //Magic \"Not before 1901 year plz\"\r\n ) {\r\n //Is this a valid date, and is it before today?\r\n const splitDate: string[] = this.state.dayString.split('-');\r\n await setUserBirthdayAsync(\r\n { callerContext: this.props.context.actionContext },\r\n parseInt(splitDate[2]),\r\n parseInt(splitDate[1]),\r\n parseInt(splitDate[0]),\r\n this.props.data.customerInformation.result.AccountNumber\r\n );\r\n\r\n this.setState({\r\n editingBirthday: false,\r\n bDay: parseInt(splitDate[2]),\r\n bMonth: parseInt(splitDate[1]),\r\n bYear: parseInt(splitDate[0]),\r\n bdayError: ''\r\n });\r\n } else {\r\n this.setState({\r\n bdayError: this.props.resources.invalidDateError,\r\n dayString: `${this.state.bYear}-${padStart(this.state.bMonth.toString(), 2, '0')}-${padStart(\r\n this.state.bDay.toString(),\r\n 2,\r\n '0'\r\n )}`\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleMailChimpPhysicalSubscriptionStatusClick = () => {\r\n changeMailChimpSubscriptionStatusAsync(\r\n { callerContext: this.props.context.actionContext },\r\n !this.state.physicalSubscribed,\r\n true\r\n ).then(res => {\r\n if (res.Success) {\r\n this.setState({ physicalSubscribed: !this.state.physicalSubscribed });\r\n }\r\n });\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n resources: {\r\n mailchimpHeading,\r\n mailchimpDescription,\r\n mailchimpYesText,\r\n mailchimpNoText,\r\n mailchimpPhysicalDescription,\r\n mailchimpPhysicalHeading,\r\n birthdayLabel,\r\n submitLabel,\r\n cancelLabel,\r\n editLabel,\r\n notSetLabel\r\n }\r\n } = this.props;\r\n return (\r\n \r\n {this.props.accountProfileWrapper && (\r\n \r\n {this.props.heading}\r\n \r\n \r\n {this.props.data.birthday.status === 'SUCCESS' ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n\r\n \r\n \r\n \r\n )}\r\n {this.props.customerAttributesWrapper && (\r\n {this.props.customerAttributesSection}\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AccountProfileView;\r\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 { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\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 React, { ReactNode } from 'react';\n\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n {categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n linkOpenInNewTab?: boolean;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n const imageLinkOpenInNewTab = link?.openInNewTab;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel,\n linkOpenInNewTab: imageLinkOpenInNewTab\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private timeout: number = 500;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const loadMapAPIInput = {\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n };\n\n if (\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded\n ) {\n this._initMap();\n if (this.props.data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n this._updateMapsForDistributor();\n } else {\n this._updateMap();\n }\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n when(\n () => !!this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.loadMapApi ||\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi,\n () => {\n if (this.props.data.distributorSelectorStateManager?.result?.loadMapApi) {\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n } else {\n this.props.data.storeSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n }\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.distributorSelectorStateManager?.result?.distributorList,\n this.props.data.distributorSelectorStateManager?.result?.selectedDistributorId,\n this.map\n ];\n },\n () => {\n this._updateMapsForDistributor();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data\n } = this.props;\n\n const shouldDisplayMap = data.storeSelectorStateManager?.result?.isDialogOpen\n ? data.storeSelectorStateManager?.result?.listMapViewState.displayMap\n : data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen\n ? data.distributorSelectorStateManager?.result?.listMapViewState.displayMap\n : false;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data\n } = this.props;\n\n if (data.storeSelectorStateManager?.result?.isMapApiLoaded || data.distributorSelectorStateManager?.result?.isMapApiLoaded) {\n const mapLoadOptions = {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n };\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, mapLoadOptions);\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n if (data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n // Hide the distributor details that appear below the screen size of 768px.\n data.distributorSelectorStateManager?.result?.updateDistributorMapVisibility(false);\n await data.distributorSelectorStateManager?.result?.setSelectedDistributorId(undefined);\n } else {\n await data.storeSelectorStateManager?.result?.setSelectedStoreLocationId(undefined);\n }\n });\n }\n };\n\n private readonly _updateMapsForDistributor = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n const distributorInfoList = distributorSelectorStateManager?.distributorList;\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n if (this.map && ArrayExtensions.hasElements(distributorInfoList)) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const distributorList = distributorInfoList.filter(distributor => distributor.OrgUnit !== undefined);\n\n for (const [index, distributorInfo] of distributorList.entries()) {\n const orgUnit = distributorInfo.OrgUnit;\n\n if (orgUnit?.Latitude && orgUnit.Longitude) {\n const isLocationSelected = selectedDistributorId === orgUnit?.RecordId;\n const options = this._getPushpinOptions(isLocationSelected, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(orgUnit?.Latitude, orgUnit.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleDistributorPushpinClick(orgUnit.RecordId);\n });\n isLocationSelected ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isLocationSelected) {\n mapLocation = orgUnit;\n }\n }\n }\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n }, this.timeout);\n }\n };\n\n /**\n * Handle the click event of the pushpin for distributors on the maps.\n * @param recordId - RecordId.\n */\n private readonly handleDistributorPushpinClick = (recordId: number | undefined): void => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n // Show the distributor details that appear below the screen size of 768px.\n distributorSelectorStateManager?.updateDistributorMapVisibility(true);\n distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n if (recordId) {\n setTimeout(() => {\n distributorSelectorStateManager?.setSelectedDistributorId(recordId);\n }, this.timeout);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\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 { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\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 { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\n\n/**\n * Interface for OrderTemplateImage.\n */\ninterface IOrderTemplateImage {\n props: {\n children: React.ReactElement[];\n };\n}\n\n/**\n * To render order template.\n * @param orderTemplate - The order template view props.\n * @param orderTemplateNodeProps - The order template node props.\n * @returns The JSX Element.\n */\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\n const currentImageListLength = orderTemplateImageElement.props.children.length;\n const defaultNumberImagesInTile = 4;\n\n if (currentImageListLength < defaultNumberImagesInTile) {\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\n orderTemplateImageElement.props.children.push();\n }\n }\n\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\n/**\n * Order Template List View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nexport const OrderTemplateListViewComponent: React.FC> = props => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n OrderTemplateList,\n OrderTemplates,\n OrderTemplate,\n status,\n statusMessage,\n heading,\n orderTemplates,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n \n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\n
\n

{props.resources.headingForEmptyOrderTemplateList}

\n

{props.resources.textForEmptyOrderTemplateList}

\n {createOrderTemplateButton}\n
\n ) : (\n createOrderTemplateButton\n )}\n {templateHeaderStatusMessage}\n
\n {status !== 'SUCCESS' && statusMessage}\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\n \n {orderTemplates.map(orderTemplate => {\n return renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n
\n );\n};\n\nexport default OrderTemplateListViewComponent;\n"],"names":["CountryPicker","React","constructor","props","super","_telemetryContent","getTelemetryObject","this","context","request","telemetryPageName","friendlyName","telemetry","_preferredSiteStorageKey","_preferredSiteNameStorageKey","_makeBaseUrl","origin","path","ext","base","charAt","length","slice","indexOf","closeModal","setState","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","storageKey2","storageValue2","cookieOptions","secure","sameSite","maxAge","config","cookieLifetime","cookies","set","baseUrl","includes","_stripTrailingSlashes","replace","isCookieValueSet","url","requestUrl","pathname","cookieValue","_ref","get","value","MsDyn365","isBrowser","validateCookieValue","autoRedirect","window","location","href","search","stripLocale","toString","state","undefined","cookie","render","_heading$tag","heading","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","MsDyn365Lib","className","tag","text","editProps","onEdit","handleTextChange","requestContext","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","Button","onClick","resources","stayOnCurrentSiteButtonText","viewprops","_objectSpread","modalContainer","moduleProps","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","link","renderCountryList","stayOnCurrentSiteButton","renderView","event","target","handleLinkTextChange","_this$props$config$ac","linkText","StringExtensions","isNullOrEmpty","linkUrl","destinationUrl","_link$linkText","payLoad","getPayloadObject","attributes","getTelemetryAttributes","editableLink","ariaLabel","openInNewTab","role","additionalProperties","onTelemetryClick","onTextChange","countryGroups","grouper","x","displayGroup","reduce","store","item","_store$get","key","has","push","Map","countryLinks","forEach","countrydata","clinks","map","renderCountry","name","elements","_image$imageSettings","_ref2","_ref3","_image$src","_item$displayGroupLoc","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","displayString","tabIndex","src","altText","loadFailureBehavior","shouldSkipToMainImage","displayGroupLocalizedName","input","result","countryPickerView","preferredSite","urlExt","preferredSiteName","currentLocaleName","currentLocale","Module","Object","assign","Node","geolocationOopsText","prefhref","geolocationReturnText","geolocationOrText","geolocationPickNewText","country","geolocationSubText","NileNewsletter","shouldComponentUpdate","nextProps","data","viewProps","nileNewsletter","__decorate","observer","MailchimpSignupSection","physicalYesText","newsletterYesText","yesText","noText","mailchimpState","handler","physicalHandler","newsletterClassText","newsletterSubscribed","physicalClassText","physicalSubscribed","classNames","classnames","buttonWrapper","button","physicalButton","buttonYesText","buttonNoText","buttonPhysicalYesText","buttonPhysicalNoText","MailchimpSubmitButton","submitButtonText","submitButton","NewsletterBirthdaySection","onEditBirthdayInput","type","min","max","Date","toDateString","id","dayString","onChange","bdayError","NileNewsletterView","_preferredNewsLettertorageKey","string","getIsModalOpenNeeded","mailchimpSubscriptionStatus","birthday","status","birthdayStatus","newsletterSubscribedValue","newsletterActive","physicalSubscribedValue","physicalActive","bDayint","Day","bMonthint","Month","bYearint","Year","isModalOpenState","bDay","bMonth","bYear","newsletterCookieSet","showBirthday","showNewsletter","handleMailChimpSubscriptionStatusClick","changeMailChimpSubscriptionStatusAsync","callerContext","actionContext","then","res","Success","handleMailChimpPhysicalSubscriptionStatusClick","handlSubmiteMailChimpSubscriptionStatusClick","async","submitBirthday","CloseModal","e","customerAccountNum","user","customerAccountNumber","getFullYear","splitDate","split","setUserBirthdayAsync","parseInt","invalidDateError","_padStart","mailchimpModalYesText","mailchimpModalNoText","mailchimpPhysicalYesText","mailchimpYesText","isAuthenticated","birthdayHeading","AddressShow","AddressDetail","items","description","AddressList","List","isShowList","classNameExtended","Item","error","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","title","message","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","_ref4","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","AddressItem","label","alert","AddressError","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","screenReaderNotification","isShowAddresList","isShowAddOrUpdateAddress","AccountPreferencesSection","accountPreferences","personalization","extraPreferences","AccountPreferenceSection","preferenceSecton","index","accountPreference","AccountProfileSection","AccountProfileItem","links","BirthdaySection","editBirthday","submit","cancel","edit","notSet","editingBirthday","_ref5","physicalHeading","physicalDescription","physButtonWrapper","descriptionComponent","physicalDescriptionComponent","AccountProfileView","setBday","year","month","day","_this$props$data$cust","customerInformation","AccountNumber","bday","mailchimpHeading","mailchimpDescription","mailchimpNoText","mailchimpPhysicalDescription","mailchimpPhysicalHeading","birthdayLabel","submitLabel","cancelLabel","editLabel","notSetLabel","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","aadGeneric","aadConainer","aadAPIConainer","Link","noclick","telemetryContent","contentAction","etext","attribute","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","ArrayExtensions","hasElements","find","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","product","Name","hideProductName","_goBack","history","back","_getPDPBackButton","query","document","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","modal","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","applyDefaultOrderSettings","quantity","IncrementalQuantity","currentCount","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","FooterCategory","categories","FooterList","FooterListItem","FooterCategoryView","category","ImageList","images","paragraph","_renderImageListItems","imageList","disableLazyLoad","imageLink","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","Msdyn365","linkAltText","linkAriaLabel","linkOpenInNewTab","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","InteractiveFeatureCollection","itemsCounter","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","InteractiveFeatureItem","handleHeadingChange","linkIndex","_this$props$config$li","Number","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","mapRef","_initMap","_data$storeSelectorSt","_data$distributorSele","channel","storeSelectorStateManager","isMapApiLoaded","distributorSelectorStateManager","mapLoadOptions","credentials","BingMapsApiKey","pushpinAccessible","Microsoft","Maps","current","Events","addHandler","_data$distributorSele2","_data$distributorSele3","_data$distributorSele4","_data$storeSelectorSt2","isDistributorSelectorDialogOpen","updateDistributorMapVisibility","setSelectedDistributorId","setSelectedStoreLocationId","_updateMapsForDistributor","_this$props$data$dist","pushpinOptions","distributorInfoList","distributorList","selectedDistributorId","mapLocation","entities","clear","pushpins","filter","distributor","OrgUnit","distributorInfo","entries","orgUnit","Latitude","Longitude","isLocationSelected","RecordId","options","_getPushpinOptions","pushpin","Pushpin","Location","handleDistributorPushpinClick","unshift","currentLocation","setView","center","_Microsoft$Maps$Locat","bounds","LocationRect","fromShapes","setOptions","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","storeLocationList","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","setTimeout","recordId","_this$props$data$dist2","showIndex","size","color","selectionColor","icon","_getSvgIcon","componentDidMount","_this$props$context","_this$props$data$stor2","_this$props$data$dist3","BingMapsEnabled","loadMapAPIInput","lang","market","ChannelCountryRegionISOCode","_this$props$data$dist4","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$dist5","_this$props$data$dist6","reaction","_this$props$data$stor5","_this$props$data$dist7","loadMapApi","_this$props$data$dist8","_this$props$data$dist9","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$dist10","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$dist11","_this$props$data$dist12","_data$storeSelectorSt3","_data$storeSelectorSt4","_data$distributorSele5","_data$distributorSele6","shouldDisplayMap","isDialogOpen","listMapViewState","displayMap","classname","show","Header","headerProps","MapProps","ref","observable","MapHeader","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","bind","_getCurrentTopPosition","nextState","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","otherValue","notification","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","addEventListener","componentWillUnmount","unsubscribe","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","removeEventListener","addNotificationComponent","notificationComponent","_notificationComponen","instanceId","_notificationComponen2","newList","_className","container","style","notificationsList","_renderNotificationsList","hasNotifications","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","newTop","NotificationsListView","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","children"],"sourceRoot":""}