{"version":3,"file":"static/js/6.3d196f8934f01e86ce72.chunk.js","mappings":"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,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/country-selector/country-selector.tsx?a8bc","webpack://Msdyn365.Commerce.Online/./src/modules/country-selector/country-selector.view.tsx?44d3","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/pva-chat-connector.tsx?def7","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/proactive-chat-trigger.ts?734c","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/cart-amount-trigger.ts?742f","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/cart-number-of-items-trigger.ts?d5f8","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/cart-specific-product-trigger.ts?2cd6","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/helpers/consts.ts?02a5","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/date-range-trigger.ts?8bfc","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/from-specific-page-trigger.ts?fd6f","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/page-visits-trigger.ts?cce7","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/specific-CountryRegion-trigger.ts?e87a","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/specific-page-trigger.ts?6e03","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/triggers/wait-on-time-trigger.ts?d898","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/proactive/index.ts?36a2","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/helpers/ContextProvider.ts?4518","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/helpers/StyleComposers.ts?0192","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/helpers/CommerceChatStore.ts?5b45","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/components/ChatCore.tsx?a412","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/components/Chat.tsx?1581","webpack://Msdyn365.Commerce.Online/./src/modules/pva-chat-connector/pva-chat-connector.view.tsx?3d5c","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-loyalty-tile.view.tsx?7c49","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-management-address.view.tsx?2098","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-profile.view.tsx?555a","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/loyalty-sign-up.view.tsx?1edc","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/reviews-list.view.tsx?43bb","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/sign-in.view.tsx?a0ea","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/write-review.view.tsx?10da","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.tsx?78b1","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://Msdyn365.Commerce.Online/./src/modules/aad-generic/aad-generic.tsx?c076","webpack://Msdyn365.Commerce.Online/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?7378","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?81f3","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.tsx?c17e","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.view.tsx?0a60","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?3b33","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?f1c7","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/organization-users-tile.tsx?f5de","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/organization-users-tile.view.tsx?bac2","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.tsx?02aa","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.view.tsx?1e13","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.tsx?4fcb","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.view.tsx?0036","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.tsx?074a","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.view.tsx?c5af","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.tsx?5602","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.tsx?6111","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.view.tsx?5db9","webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-organization-wide-selector.component.tsx?b9a7","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.tsx?b9ec","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.view.tsx?5319","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.tsx?899b","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.view.tsx?dcdf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/reviews-list.view.tsx?39ca"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, ICountrySelectorData } from './country-selector.data';\r\nimport { ICmsNavItemsData, ICountrySelectorProps, ISubMenusData } from './country-selector.props.autogenerated';\r\n\r\nexport interface ICountrySelectorViewProps extends ICountrySelectorProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer: INodeProps;\r\n MobileDescriptionContainer: INodeProps;\r\n MobileBackButton: INodeProps;\r\n MobileDescriptionLabel: INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n DivContainer?: INodeProps;\r\n ImageDivContainer?: INodeProps;\r\n countrySelectorIntroText: string;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CountrySelector component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CountrySelector extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: ICountrySelectorProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = { isMobile: this.isMobile };\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames(\r\n 'ms-nav menu--country-selector',\r\n this.props.config.className,\r\n this.state.isMobile ? 'mobile-vp' : 'desktop-vp'\r\n ),\r\n tag: 'nav',\r\n role: 'navigation',\r\n 'aria-label': this.props.config.countrySelectorAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n tag: 'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link'\r\n },\r\n DivContainer: {\r\n tag: 'div',\r\n className: 'ms-nav__feature'\r\n },\r\n ImageDivContainer: {\r\n tag: 'div',\r\n className: 'category-image',\r\n role: 'tabpanel'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag: 'button',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData) => mergedData.push(this._constructMenuItemData(item)));\r\n }\r\n return mergedData;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructMenuItemData(cmsItem?: ICmsNavItemsData): IMenuItemData {\r\n return {\r\n id: CountrySelector.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(item));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default CountrySelector;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ICountrySelectorViewProps } from './country-selector';\r\nimport { IMenuItemData } from './country-selector.data';\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICountrySelectorConfig } from './country-selector.props.autogenerated';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CountrySelectorView extends React.PureComponent {\r\n private currentLevel: number = 0;\r\n private escapeKey: number = 27;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n constructor(props: ICountrySelectorViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n categoryImageAltText: ''\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation, config } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData) => {\r\n return this._renderDrawerMenu(menuItem, config);\r\n })}\r\n \r\n );\r\n }\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData, config: ICountrySelectorConfig): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem, config);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData, config: ICountrySelectorConfig): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const toggleButtonImg = menuItem.imageSource;\r\n return (\r\n \r\n
\r\n {config.countrySelectorIntroText &&

{config.countrySelectorIntroText}

}\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined, linkImg: string | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n {linkImg && {''}}\r\n \r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({\r\n parentMenu: undefined,\r\n mobileViewLabelText: menuItemData[i].linkText\r\n });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({\r\n parentMenu: item && item.id,\r\n mobileViewLabelText: subMenus[i].linkText\r\n });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = false;\r\n const multiLevelSupportedMenu = 2;\r\n // const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n // this.props.context.telemetry.error(\r\n // \"Navigation Active menu content is empty, module wont render.\"\r\n // );\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n // this.props.context.telemetry.error(\r\n // \"Navigation Submenu content is empty, module wont render.\"\r\n // );\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n {option.imageSource && {''}}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const currentSite = typeof window !== 'undefined' && `${location.origin}${this.props.context.request.sitePath}`;\r\n const currentLang = currentSite === option.linkURL ? true : false;\r\n return (\r\n \r\n {imagesource && {''}}\r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, config } = this.props;\r\n const DivContainerClass = this.currentLevel > 2 ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {config.countrySelectorIntroText &&

{config.countrySelectorIntroText}

}\r\n\r\n {menuOptions}\r\n
\r\n
\r\n );\r\n }\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n}\r\n\r\nexport default CountrySelectorView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\nimport { isOboRequest } from '@msdyn365-commerce/core-internal';\r\nimport { IPvaChatConnectorData } from './pva-chat-connector.data';\r\nimport { IPvaChatConnectorConfig, IPvaChatConnectorProps } from './pva-chat-connector.props.autogenerated';\r\n\r\nexport interface IPvaChatConnectorViewProps extends IPvaChatConnectorProps {\r\n config: IPvaChatConnectorConfig;\r\n}\r\n\r\n/**\r\n * PvaChatConnector component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass PvaChatConnector extends React.PureComponent> {\r\n // Loads CDN version of Botframework-Webchat library\r\n public componentDidMount(): void {\r\n if (isOboRequest(this.props.context.request)) {\r\n return;\r\n }\r\n\r\n const url = this.props.config.botFrameworkCDNURL || this.props.context.app.config.pvaChatConnectorBotFrameworkCDNURL;\r\n const script = document.createElement('script');\r\n script.src = url;\r\n script.async = true;\r\n script.crossOrigin = 'anonymous';\r\n document.body.appendChild(script);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (isOboRequest(this.props.context.request)) {\r\n return null;\r\n }\r\n\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default PvaChatConnector;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IProactiveChatTrigger } from '../../interfaces';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\n\r\n/**\r\n * ProactiveChatTrigger class - checks if Proactive Chat should be triggered, starts the chat and sets context\r\n */\r\nabstract class ProactiveChatTrigger implements IProactiveChatTrigger {\r\n public props: IPvaChatConnectorViewProps;\r\n public context: IChatContext;\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n this.props = props;\r\n this.context = context;\r\n }\r\n\r\n /**\r\n * Generates Chat Context with included properties related to Proactive Chat\r\n * @returns TContextProvider - Chat Context\r\n */\r\n public abstract getContextProvider(): TContextProvider;\r\n\r\n /**\r\n * Generates chat welcome message to be used if Proactive Chat is triggered\r\n * @returns string - chat welcome message\r\n */\r\n public abstract getMessage(): string;\r\n\r\n /**\r\n * Validate specific trigger conditions if Proactive Chat should be initiated\r\n * @returns boolean (TRUE if Proactive Chat should be triggered)\r\n */\r\n public abstract validate(): Promise;\r\n}\r\n\r\nexport default ProactiveChatTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-ignore\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * CartAmountTrigger class - proactive chat is triggered if cArt amount is in preset boundaries (config.proactiveOnCartAmountMin, config.proactiveOnCartAmountMax)\r\n */\r\nclass CartAmountTrigger extends ProactiveChatTrigger {\r\n private min?: number;\r\n private max?: number;\r\n private totalInCart: number = 0;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.min = this.props.config.proactiveOnCartAmountMin;\r\n this.max = this.props.config.proactiveOnCartAmountMax;\r\n this.props.context.telemetry.debug(\r\n `[Chat][${CartAmountTrigger.name}] Cart amount proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const cart = await this._getCart();\r\n if (cart.isEmpty) {\r\n this.props.context.telemetry.debug(`[Chat][${CartAmountTrigger.name}] Cart was empty. Validation returning 'false'.`);\r\n return false;\r\n }\r\n\r\n this.totalInCart = cart.cart.TotalAmount || 0;\r\n let retVal = false;\r\n if (this.min) {\r\n if (this.max) {\r\n retVal = this.min <= this.totalInCart && this.totalInCart <= this.max;\r\n } else {\r\n retVal = this.min <= this.totalInCart;\r\n }\r\n } else {\r\n if (this.max) {\r\n retVal = this.totalInCart <= this.max;\r\n } else {\r\n retVal = false;\r\n }\r\n }\r\n this.props.context.telemetry.debug(\r\n `[Chat][${CartAmountTrigger.name}] Validation result: '${retVal}'; Cart total: '${this.totalInCart}'.`\r\n );\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: 'Cart Amount',\r\n eCommerceCustProactiveShoppingCartAmount: `${this.totalInCart}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnCartAmountMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private async _getCart(): Promise {\r\n return getCartState(this.props.context.actionContext);\r\n }\r\n}\r\n\r\nexport default CartAmountTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-ignore\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * CartNumberOfItemsTrigger class - proactive chat is triggered if Cart Number of Items is in preset boundaries (config.proactiveOnCartNoOfItemsMin, config.proactiveOnCartNoOfItemsMax)\r\n */\r\nclass CartNumberOfItemsTrigger extends ProactiveChatTrigger {\r\n private min?: number;\r\n private max?: number;\r\n private numberOfItems: number = 0;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.min = this.props.config.proactiveOnCartNoOfItemsMin;\r\n this.max = this.props.config.proactiveOnCartNoOfItemsMax;\r\n\r\n this.props.context.telemetry.debug(\r\n `[${CartNumberOfItemsTrigger.name}] Cart number of items proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const cart = await this._getCart();\r\n if (cart.isEmpty) {\r\n this.props.context.telemetry.debug(`[Chat][${CartNumberOfItemsTrigger.name}] Cart was empty. Validation returning 'false'.`);\r\n return false;\r\n }\r\n\r\n this.numberOfItems = cart.cart.TotalItems || 0;\r\n\r\n let retVal = false;\r\n if (this.min) {\r\n if (this.max) {\r\n retVal = this.min <= this.numberOfItems && this.numberOfItems <= this.max;\r\n } else {\r\n retVal = this.min <= this.numberOfItems;\r\n }\r\n } else {\r\n if (this.max) {\r\n retVal = this.numberOfItems <= this.max;\r\n } else {\r\n retVal = false;\r\n }\r\n }\r\n this.props.context.telemetry.debug(\r\n `[${CartNumberOfItemsTrigger.name}] Validation result: '${retVal}'; Number of items in cart: '${this.numberOfItems}'.`\r\n );\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: 'Cart Number of Items',\r\n eCommerceCustProactiveShoppingCartNumberOfItems: `${this.numberOfItems}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnCartNoOfItemsMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private async _getCart(): Promise {\r\n return getCartState(this.props.context.actionContext);\r\n }\r\n}\r\n\r\nexport default CartNumberOfItemsTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-ignore\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * CartSpecificProductTrigger class - proactive chat is triggered if a Product in the Cart is in preset list of products (config.proactiveOnCartSpecificProductList)\r\n */\r\nclass CartSpecificProductTrigger extends ProactiveChatTrigger {\r\n private product: string = '';\r\n\r\n public async validate(): Promise {\r\n let isValid = false;\r\n const cart = await this._getCart();\r\n if (!cart.isEmpty) {\r\n if (cart.cart.CartLines) {\r\n this.props.context.telemetry.debug(\r\n `[${CartSpecificProductTrigger.name}] Number of cart line items was '${cart.cart.CartLines?.length}'`\r\n );\r\n for (let i = 0; i < cart.cart.CartLines?.length; i++) {\r\n if (cart.cart.CartLines[i]) {\r\n if (this.props.config.proactiveOnCartSpecificProductList) {\r\n this.props.context.telemetry.debug(\r\n `[${CartSpecificProductTrigger.name}] Number of cart specific products was configured for proactive chat was '${this.props.config.proactiveOnCartSpecificProductList?.length}'`\r\n );\r\n // Find first item, from user-defined list of products, that matches the cart lines' itemId in the cart.\r\n for (let j = 0; j < (this.props.config.proactiveOnCartSpecificProductList?.length || 0); j++) {\r\n if (\r\n this.props.config.proactiveOnCartSpecificProductList &&\r\n cart.cart.CartLines[i].ItemId &&\r\n this.props.config.proactiveOnCartSpecificProductList[j] === cart.cart.CartLines[i].ItemId\r\n ) {\r\n this.props.context.telemetry.debug(\r\n `[${CartSpecificProductTrigger.name}] Matched cart line item ID '${cart.cart.CartLines[i].ItemId}' against user-defined list of specific products for proactive chat.`\r\n );\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n // Rest of the CartLines are undefined\r\n break;\r\n }\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart did not contain any cart lines.`);\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart was empty.`);\r\n }\r\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Validation returning '${isValid}'.`);\r\n return isValid;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: 'Cart Specific Product',\r\n eCommerceCustProactiveShoppingCartSpecificProduct: `${this.product}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnCartSpecificProductMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private async _getCart(): Promise {\r\n return getCartState(this.props.context.actionContext);\r\n }\r\n}\r\n\r\nexport default CartSpecificProductTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nexport enum ProactiveChatNames {\r\n DateRange = 'Date Range',\r\n FromSpecificPage = 'From Specific Page',\r\n PageVisits = 'Page Visits',\r\n SpecificLocation = 'Specific Location',\r\n SpecificPage = 'Specific Page',\r\n WaitOnTime = 'Wait On Time'\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * DateRangeTrigger class - proactive chat is triggered if current date is in preset date boundaries (config.proactiveOnDateRangeStart, config.proactiveOnDateRangeEnd)\r\n */\r\nclass DateRangeTrigger extends ProactiveChatTrigger {\r\n private start?: Date;\r\n private end?: Date;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.start = this._toDate(this.props.config.proactiveOnDateRangeStart);\r\n this.end = this._toDate(this.props.config.proactiveOnDateRangeEnd);\r\n\r\n this.props.context.telemetry.debug(\r\n `[${DateRangeTrigger.name}] Proactive chat initialized with startDate: '${this.start}'; max: '${this.end}'.`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n\r\n let retVal = false;\r\n if (this.start) {\r\n if (this.end) {\r\n retVal = this.start.getTime() <= now.getTime() && now.getTime() <= this.end.getTime();\r\n } else {\r\n retVal = this.start.getTime() <= now.getTime();\r\n }\r\n } else if (this.end) {\r\n retVal = now.getTime() <= this.end.getTime();\r\n }\r\n\r\n this.props.context.telemetry.debug(\r\n `[${DateRangeTrigger.name}] Validation result: '${retVal}'; Current date used to compare: '${now}'.`\r\n );\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.DateRange,\r\n eCommerceCustProactiveFromDate: this.start ? this.start.toUTCString() : '',\r\n eCommerceCustProactiveToDate: this.end ? this.end.toUTCString() : ''\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnDateRangeMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n /**\r\n * Converts string(us-en) to date\r\n * @param date string (mm/dd/yyyy)\r\n * @returns Date or undefined\r\n */\r\n private _toDate(date?: string): Date | undefined {\r\n if (date) {\r\n const dateParts = date.split('/');\r\n return new Date(+dateParts[2], +dateParts[1] - 1, +dateParts[0]);\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\nexport default DateRangeTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * FromSpecificPageTrigger class - proactive chat is triggered if user has come from specific page (the one listed in config.proactiveOnFromSpecificPageList)\r\n */\r\nclass FromSpecificPageTrigger extends ProactiveChatTrigger {\r\n public async validate(): Promise {\r\n let isValid = false;\r\n if (this.props.config.proactiveOnFromSpecificPageList) {\r\n this.props.context.telemetry.debug(\r\n `[${FromSpecificPageTrigger.name}] Number of items in user-defined list of 'From Specific Page' was '${this.props.config.proactiveOnFromSpecificPageList?.length}'.`\r\n );\r\n for (let i = 0; i < (this.props.config.proactiveOnFromSpecificPageList?.length || 0); i++) {\r\n const fromSpecificPageTrimmed: string = this.props.config.proactiveOnFromSpecificPageList[i].trim();\r\n this.props.context.telemetry.debug(\r\n `[Chat][${FromSpecificPageTrigger.name}] Current page URL: '${window.document.referrer}'.`\r\n );\r\n this.props.context.telemetry.debug(\r\n `[${FromSpecificPageTrigger.name}] Current item from user-defined list of 'From Specific Page': '${fromSpecificPageTrimmed}'.`\r\n );\r\n\r\n if (window.document.referrer.indexOf(fromSpecificPageTrimmed) > -1) {\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(\r\n `[Chat][${FromSpecificPageTrigger.name}] User-defined 'From Specific Page' list was undefined.`\r\n );\r\n }\r\n this.props.context.telemetry.debug(`[Chat][${FromSpecificPageTrigger.name}] Validation returning '${isValid}'.`);\r\n return isValid;\r\n }\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.FromSpecificPage,\r\n eCommerceCustProactiveCameFromPage: window.document.referrer\r\n };\r\n };\r\n }\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnFromSpecificPageMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default FromSpecificPageTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ICookieContext } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/ICookieContext';\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * PageVisitTrigger class - proactive chat is triggered if user has visited current page for (config.proactiveOnPageVisitNumber) or more times\r\n */\r\nclass PageVisitTrigger extends ProactiveChatTrigger {\r\n public visits: number = 0;\r\n private cookieName: string = 'TimesPageVisited';\r\n private expdate: Date;\r\n private cookies: ICookieContext;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.cookies = this.props.context.request.cookies;\r\n this.expdate = new Date();\r\n // Set expiry date to 365 days.\r\n this.expdate.setTime(this.expdate.getTime() + 24 * 60 * 60 * 1000 * 365);\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie expiry date set to: '${this.expdate}'.`);\r\n\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie context is given: '${this.cookies.isConsentGiven()}'.`);\r\n if (this.cookies.isConsentGiven()) {\r\n this.cookies.setConsentCookie();\r\n }\r\n\r\n this._updateVisitCounter();\r\n }\r\n\r\n public async validate(): Promise {\r\n let retVal: boolean = false;\r\n\r\n if (this.props.config.proactiveOnPageVisitNumber) {\r\n retVal = this.visits >= this.props.config.proactiveOnPageVisitNumber;\r\n }\r\n\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Validation result: '${retVal}'.`);\r\n return retVal;\r\n }\r\n\r\n public clear(): void {\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Clearing cookie for page visit counter.`);\r\n this.cookies.set(this.cookieName, 0, {\r\n domain: window.location.hostname,\r\n path: window.location.pathname,\r\n expires: this.expdate\r\n });\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.PageVisits,\r\n eCommerceCustProactiveNumberOfVisits: `${this.visits}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnPageVisitMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private _updateVisitCounter(): void {\r\n this.visits = this.cookies.get(this.cookieName).value || 0;\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter BEFORE update: '${this.visits}.`);\r\n ++this.visits;\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter AFTER update: '${this.visits}.`);\r\n\r\n this.cookies.set(this.cookieName, this.visits, {\r\n domain: window.location.hostname,\r\n path: window.location.pathname,\r\n expires: this.expdate\r\n });\r\n }\r\n}\r\n\r\nexport default PageVisitTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IExtendedRequest } from '../../interfaces';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * SpecificPageTrigger class - proactive chat is triggered if user geographically uses the website from specific country/regions(config.proactiveOnSpecificCountryRegionCountry)\r\n */\r\nclass SpecificCountryRegionTrigger extends ProactiveChatTrigger {\r\n private customerCountryCode: string;\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.customerCountryCode = (this.props.context.request).suggestedMarket || 'n/a';\r\n this.props.context.telemetry.debug(\r\n `[${SpecificCountryRegionTrigger.name}] Customer country code set to: '${this.customerCountryCode}.'`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const retVal: boolean = this.props.config.proactiveOnSpecificLocation\r\n ? this.props.config.proactiveOnSpecificLocation.toLowerCase().indexOf(this.customerCountryCode.toLowerCase()) > -1\r\n : false;\r\n this.props.context.telemetry.debug(`[Chat][${SpecificCountryRegionTrigger.name}] Validation returning '${retVal}'.`);\r\n return retVal;\r\n }\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveCountryCode: this.props.config.proactiveOnSpecificLocation || '',\r\n eCommerceCustProactiveType: ProactiveChatNames.SpecificLocation\r\n };\r\n };\r\n }\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnSpecificCountryRegionMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default SpecificCountryRegionTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * SpecificPageTrigger class - proactive chat is triggered if current page is listed in config.proactiveOnSpecificPageList\r\n */\r\nclass SpecificPageTrigger extends ProactiveChatTrigger {\r\n public async validate(): Promise {\r\n let isValid = false;\r\n if (this.props.config.proactiveOnSpecificPageList) {\r\n this.props.context.telemetry.debug(\r\n `[${SpecificPageTrigger.name}] Number of items in user-defined list of 'Specific Pages' was '${this.props.config.proactiveOnSpecificPageList?.length}'.`\r\n );\r\n for (let i = 0; i < (this.props.config.proactiveOnSpecificPageList?.length || 0); i++) {\r\n const specificPageTrimmed: string = this.props.config.proactiveOnSpecificPageList[i].trim();\r\n this.props.context.telemetry.debug(`[] Current location URL: ${window.location.href}.`);\r\n this.props.context.telemetry.debug(`[] Current item from user-defined list of 'Specific Page': ${specificPageTrimmed}.`);\r\n if (window.location.href.indexOf(specificPageTrimmed) > -1) {\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] User-defined 'Specific Page' list was undefined.`);\r\n }\r\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] Validation returning '${isValid}'.`);\r\n return isValid;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.SpecificPage\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnSpecificPageMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default SpecificPageTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * WaitOnTimeTrigger - proactive chat is triggered if user stays on current page for more than (config.proactiveOnWaitTimeSeconds) seconds\r\n */\r\nclass WaitOnTimeTrigger extends ProactiveChatTrigger {\r\n private waitTimeInMilliseconds: number | undefined;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n if (this.props.config.proactiveOnWaitTimeSeconds && !isNaN(this.props.config.proactiveOnWaitTimeSeconds)) {\r\n this.waitTimeInMilliseconds = Number(this.props.config.proactiveOnWaitTimeSeconds) * 1000;\r\n this.props.context.telemetry.debug(\r\n `[Chat][${WaitOnTimeTrigger.name}] Wait time (ms) set to: '${this.waitTimeInMilliseconds}'.`\r\n );\r\n }\r\n }\r\n\r\n public async validate(): Promise {\r\n const retVal: boolean = this.waitTimeInMilliseconds !== undefined;\r\n this.props.context.telemetry.debug(`[Chat][${WaitOnTimeTrigger.name}] Validation returning '${retVal}'.`);\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n const triggerTime = Date.now() + (this.waitTimeInMilliseconds || 0);\r\n return () => {\r\n return triggerTime > Date.now()\r\n ? this.context\r\n : {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.WaitOnTime,\r\n eCommerceCustProactiveTimeOnPage: `${this.waitTimeInMilliseconds ? this.waitTimeInMilliseconds : 0}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnWaitTimeMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default WaitOnTimeTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport CartAmountTrigger from './triggers/cart-amount-trigger';\r\nimport CartNumberOfItemsTrigger from './triggers/cart-number-of-items-trigger';\r\nimport CartSpecificProductTrigger from './triggers/cart-specific-product-trigger';\r\nimport DateRangeTrigger from './triggers/date-range-trigger';\r\nimport FromSpecificPageTrigger from './triggers/from-specific-page-trigger';\r\nimport PageVisitTrigger from './triggers/page-visits-trigger';\r\nimport SpecificCountryRegionTrigger from './triggers/specific-CountryRegion-trigger';\r\nimport SpecificPageTrigger from './triggers/specific-page-trigger';\r\nimport WaitOnTimeTrigger from './triggers/wait-on-time-trigger';\r\n\r\ntype ProactiveChat =\r\n | typeof DateRangeTrigger\r\n | typeof SpecificPageTrigger\r\n | typeof FromSpecificPageTrigger\r\n | typeof PageVisitTrigger\r\n | typeof SpecificCountryRegionTrigger\r\n | typeof CartAmountTrigger\r\n | typeof CartNumberOfItemsTrigger\r\n | typeof CartSpecificProductTrigger\r\n | typeof WaitOnTimeTrigger;\r\n\r\n/**\r\n * List of Proactive Chat Validators in order of validation (first proactive chat that pass validation is triggered, the rest are ommited)\r\n */\r\nexport const ProactiveTriggers: ProactiveChat[] = [\r\n DateRangeTrigger,\r\n SpecificPageTrigger,\r\n FromSpecificPageTrigger,\r\n PageVisitTrigger,\r\n SpecificCountryRegionTrigger,\r\n CartAmountTrigger,\r\n CartNumberOfItemsTrigger,\r\n CartSpecificProductTrigger,\r\n WaitOnTimeTrigger\r\n];\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IRequestContextUser } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/IRequestContext';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { ProactiveTriggers } from '../proactive';\r\nimport ProactiveChatTrigger from '../proactive/triggers/proactive-chat-trigger';\r\nimport { IPvaChatConnectorViewProps } from '../pva-chat-connector';\r\nimport { IProactiveData } from './../interfaces';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\n\r\n/**\r\n *\r\n * ContextProvider class - generates chat context, and checks for proactive triggers\r\n */\r\nclass ContextProvider {\r\n public data: IProactiveData;\r\n public props: IPvaChatConnectorViewProps;\r\n private user: IRequestContextUser;\r\n private userId: string;\r\n private context: IChatContext;\r\n private provider: TContextProvider | undefined;\r\n\r\n constructor(props: IPvaChatConnectorViewProps) {\r\n this.props = props;\r\n this.user = this.props.context.request.user;\r\n this.userId = `dl_${uuidv4()}`;\r\n this.context = this._getContext();\r\n // Proactive Chat related data\r\n this.data = {\r\n enabled: false,\r\n timeout: this.props.config.proactiveOnWaitTimeSeconds || 0,\r\n message: this.props.config.proactiveDefaultMessage\r\n };\r\n }\r\n\r\n /**\r\n * Executes Proactive Chat validation\r\n * @returns TContextProvider - a function returning IChatContext object\r\n */\r\n public async init(): Promise {\r\n try {\r\n await this._proactiveCheck();\r\n } catch (e) {\r\n // Use ?debug=true to see telemetry\r\n // If previous block fails, chat will still be available (no need to display any errors to user)\r\n this.props.telemetry.exception(e);\r\n }\r\n return this.provider || this._getProvider();\r\n }\r\n\r\n /**\r\n * Returns TContextProvider - a function returning IChatContext object\r\n */\r\n private _getProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n eCommerceOperatingUnitNumber: this.props.context.request.apiSettings.oun,\r\n eCommerceBaseUrl: this.props.context.request.apiSettings.baseUrl,\r\n eCommerceDataAreaId: this.props.context.request.channel?.InventLocationDataAreaId,\r\n UserId: this.userId,\r\n // eCommerceCust...\r\n AccountNumber: this.user.customerAccountNumber ? this.user.customerAccountNumber : 'N/A',\r\n Email: this.user.emailAddress ? this.user.emailAddress : 'N/A',\r\n FirstName: this.user.firstName ? this.user.firstName : this.props.config.anonymousUserName,\r\n LastName: this.user.lastName ? this.user.lastName : 'N/A',\r\n Name: this.user.name ? this.user.name : this.props.config.anonymousUserName,\r\n eCommerceCustPageURL: window.location.href,\r\n eCommerceCustChatType: 'pva',\r\n // Proactive chat\r\n eCommerceCustIsProactiveChat: 'False',\r\n eCommerceCustProactiveType: 'N/A',\r\n // Date Range\r\n eCommerceCustProactiveFromDate: 'N/A',\r\n eCommerceCustProactiveToDate: 'N/A',\r\n // From Specific Page\r\n eCommerceCustProactiveCameFromPage: 'N/A',\r\n // No. Page Visits\r\n eCommerceCustProactiveNumberOfVisits: 'N/A',\r\n // Specific CountryRegion\r\n eCommerceCustProactiveCountryCode: 'N/A',\r\n // Specific Page => eCommerceCustPageURL\r\n // eCommerceCustProactiveSpecificPage: 'N/A',\r\n // Wait On Time\r\n eCommerceCustProactiveTimeOnPage: 'N/A',\r\n // Shopping cart amount\r\n eCommerceCustProactiveShoppingCartAmount: 'N/A',\r\n // Shopping cart number of items\r\n eCommerceCustProactiveShoppingCartNumberOfItems: 'N/A',\r\n // Shopping cart specific product\r\n eCommerceCustProactiveShoppingCartSpecificProduct: 'N/A'\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Returns default IChatContext object\r\n */\r\n private _getContext(): IChatContext {\r\n return this._getProvider()();\r\n }\r\n\r\n /**\r\n * Validates proactive triggers to check if proactive chat should be initialized\r\n */\r\n private async _proactiveCheck(): Promise {\r\n if (this.props.config.proactiveChatEnabled) {\r\n for (let i = 0; i < ProactiveTriggers.length; i++) {\r\n const proactive = new ProactiveTriggers[i](this.props, this.context);\r\n // Only first detected proactive trigger gets executed\r\n if (await this._isProactive(proactive)) {\r\n this.props.context.telemetry.debug(`First detected proactive trigger to be executed: ${proactive}`);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates if proactive chat should be triggered for given ProactiveTrigger\r\n * @param proactive ProactiveChatTrigger\r\n * @returns boolean\r\n */\r\n private async _isProactive(proactive: ProactiveChatTrigger): Promise {\r\n this.data.enabled = await proactive.validate();\r\n if (this.data.enabled) {\r\n this.provider = proactive.getContextProvider();\r\n this.data.message = proactive.getMessage();\r\n }\r\n return this.data.enabled;\r\n }\r\n}\r\n\r\nexport default ContextProvider;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/**\r\n * Style generating functions\r\n */\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IAvatarStyling, IBubbleStyling, IChatCustomStyle, IChatStyling, IOtherStyling, ISuggestedActionStyling } from '../interfaces';\r\nimport { IPvaChatConnectorConfig } from '../pva-chat-connector.props.autogenerated';\r\n\r\nconst getChatWrapperStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n position: config.position || 'inherit',\r\n top: config.top ? config.top : 'inherit',\r\n right: config.right ? config.right : 'inherit',\r\n bottom: config.bottom ? config.bottom : 'inherit',\r\n left: config.left ? config.left : 'inherit',\r\n zIndex: 1000,\r\n display: 'flex',\r\n justifyContent: 'flex-end'\r\n };\r\n};\r\n\r\nconst getMaximizedChatWrapperStyle = (config: IPvaChatConnectorConfig, isMobileDevice: boolean): React.CSSProperties => {\r\n if (isMobileDevice) {\r\n return {\r\n height: '90%',\r\n width: '100%',\r\n bottom: '0.5em',\r\n right: '0',\r\n padding: '5px'\r\n };\r\n }\r\n return {\r\n height: config.chatHeight ? config.chatHeight : '80%',\r\n width: config.chatWidth ? config.chatWidth : 'inherit'\r\n };\r\n};\r\n\r\nconst getChatButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n display: 'flex',\r\n alignItems: 'center',\r\n backgroundColor: config.startChatButtonBackgroundColor || 'white',\r\n color: config.startChatButtonTextColor || 'inherit',\r\n borderColor: config.startChatButtonBorderColor || 'inherit',\r\n borderRadius: config.startChatButtonBorderRadius || '0px',\r\n borderStyle: config.startChatButtonBorderStyle || 'solid',\r\n borderWidth: config.startChatButtonBorderWidth ? config.startChatButtonBorderWidth : '0px',\r\n padding: config.storeLogoURL ? '2px 20px 2px 2px' : '10px 20px 10px 20px',\r\n cursor: 'pointer',\r\n outlineStyle: 'none',\r\n alignSelf: 'flex-end',\r\n boxShadow: '0 0 4px rgba(102,102,102,.5)',\r\n WebkitBoxShadow: '0 0 4px rgba(102,102,102,.5)',\r\n MozBoxShadow: '0 0 4px rgba(102,102,102,.5)'\r\n };\r\n};\r\n\r\nconst getButtonStoreLogoStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n color: config.headerTextColor || 'inherit',\r\n borderRadius: '50%',\r\n padding: '11px',\r\n width: '30px',\r\n height: '30px',\r\n marginRight: '12px',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n boxSizing: 'content-box'\r\n };\r\n};\r\n\r\nconst getChatStoreLogoStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n color: config.headerTextColor || 'inherit',\r\n borderRadius: '50%',\r\n padding: '11px',\r\n width: '30px',\r\n height: '30px',\r\n margin: '5px 12px 5px 5px',\r\n alignSelf: 'center',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n boxSizing: 'content-box'\r\n };\r\n};\r\n\r\nconst getChatMessagesStyle = (config: IPvaChatConnectorConfig, minimized: boolean): React.CSSProperties => {\r\n return {\r\n display: minimized ? 'none' : 'block',\r\n backgroundColor: config.backgroundColor || 'White',\r\n height: '100%',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n position: 'relative'\r\n };\r\n};\r\n\r\nconst getChatMessageHeader = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\r\n color: config.headerTextColor || 'inherit',\r\n backgroundRepeat: 'no-repeat',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n flexDirection: 'row',\r\n width: '100%',\r\n position: 'absolute',\r\n top: config.chatHeaderHeight ? `-${config.chatHeaderHeight}` : '',\r\n height: config.chatHeaderHeight,\r\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getMinimizeButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n borderTop: 'none',\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n borderBottom: `solid 2px ${config.headerTextColor || 'White'}`,\r\n backgroundColor: 'transparent',\r\n padding: '5px 10px 3px 10px',\r\n cursor: 'pointer',\r\n outlineStyle: 'none',\r\n marginTop: '7px',\r\n marginRight: '7px'\r\n };\r\n};\r\n\r\nconst getCloseButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n border: 'none',\r\n color: config.headerTextColor || 'White',\r\n backgroundColor: 'transparent',\r\n padding: '0px 0px 0px 7px',\r\n cursor: 'pointer',\r\n outlineStyle: 'none',\r\n marginTop: '7px',\r\n marginRight: '7px'\r\n };\r\n};\r\n\r\nconst getChatMessageContent = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n height: '100%',\r\n width: '100%',\r\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getProactiveWrapperStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n flexDirection: 'column',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n backgroundColor: config.backgroundColor || 'White'\r\n };\r\n};\r\n\r\nconst getProactiveMessageHeader = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\r\n color: config.headerTextColor || 'inherit',\r\n backgroundRepeat: 'no-repeat',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n flexDirection: 'row',\r\n boxSizing: 'border-box',\r\n width: '100%',\r\n height: config.chatHeaderHeight,\r\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getProactiveMessageContent = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n width: '100%',\r\n padding: '10px 20px',\r\n boxSizing: 'border-box',\r\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getProactiveButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n color: config.headerTextColor || 'inherit',\r\n cursor: 'pointer',\r\n padding: '5px 10px',\r\n outline: 'none',\r\n border: 'none',\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n borderRadius: '25px'\r\n };\r\n};\r\n\r\nconst getRedDotStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n background: 'Red',\r\n borderRadius: '50%',\r\n height: '5px',\r\n width: '5px',\r\n position: 'absolute',\r\n right: '10px',\r\n bottom: '33px'\r\n };\r\n};\r\n\r\n/**\r\n * Generates styles for the chat wrapper, and proactive chat parts\r\n * @param config IPvaChatConnectorConfig\r\n * @param minimized boolean\r\n * @returns IChatCustomStyle\r\n */\r\nexport const getChatStyling = (config: IPvaChatConnectorConfig, minimized: boolean, isMobileDevice: boolean): IChatCustomStyle => {\r\n return {\r\n ChatWrapperStyle: getChatWrapperStyle(config),\r\n MaximizedChatWrapperStyle: getMaximizedChatWrapperStyle(config, isMobileDevice),\r\n ChatButtonStyle: getChatButtonStyle(config),\r\n ButtonStoreLogoStyle: getButtonStoreLogoStyle(config),\r\n ChatStoreLogoStyle: getChatStoreLogoStyle(config),\r\n ChatMessagesStyle: getChatMessagesStyle(config, minimized),\r\n ChatMessageHeader: getChatMessageHeader(config),\r\n MinimizeButtonStyle: getMinimizeButtonStyle(config),\r\n CloseButtonStyle: getCloseButtonStyle(config),\r\n ChatMessageContent: getChatMessageContent(config),\r\n ProactiveWrapperStyle: getProactiveWrapperStyle(config),\r\n ProactiveMessageHeader: getProactiveMessageHeader(config),\r\n ProactiveMessageContent: getProactiveMessageContent(config),\r\n ProactiveButtonStyle: getProactiveButtonStyle(config),\r\n RedDotStyle: getRedDotStyle(config)\r\n };\r\n};\r\n\r\nconst fontFormat = (font?: string): string | undefined => {\r\n if (font && font.length > 0) {\r\n const arr = font.split(',');\r\n for (let i = 0; i < arr.length; i++) {\r\n arr[i] = `'${arr[i].trim()}'`;\r\n }\r\n font = arr.join(', ');\r\n } else {\r\n font = \"'Calibri', 'Helvetica Neue', 'Arial', 'sans-serif'\";\r\n }\r\n\r\n return font;\r\n};\r\n\r\nconst getBubbleStyling = (config: IPvaChatConnectorConfig): IBubbleStyling => {\r\n return {\r\n bubbleBackground: config.bubbleBackground || 'White',\r\n bubbleTextColor: config.bubbleTextColor || 'Black',\r\n bubbleBorderColor: config.bubbleBorderColor || '#e6e6e6',\r\n bubbleBorderRadius: config.bubbleBorderRadius || '2',\r\n bubbleBorderStyle: config.bubbleBorderStyle || 'solid',\r\n bubbleBorderWidth: config.bubbleBorderWidth || '1',\r\n bubbleFromUserBackground: config.bubbleFromUserBackground || 'White',\r\n bubbleFromUserTextColor: config.bubbleFromUserTextColor || 'Black',\r\n bubbleFromUserBorderColor: config.bubbleFromUserBorderColor || '#e6e6e6',\r\n bubbleFromUserBorderRadius: config.bubbleFromUserBorderRadius || '2',\r\n bubbleFromUserBorderStyle: config.bubbleFromUserBorderStyle || 'solid',\r\n bubbleFromUserBorderWidth: config.bubbleFromUserBorderWidth || '1'\r\n };\r\n};\r\n\r\n// eslint-disable-next-line complexity\r\nconst getOtherStyling = (config: IPvaChatConnectorConfig): IOtherStyling => {\r\n return {\r\n groupTimestamp: config.groupTimestamp || true,\r\n sendTimeout: config.sendTimeout || '20000',\r\n sendTimeoutForAttachments: config.sendTimeoutForAttachments || '120000',\r\n timestampColor: config.timestampColor || 'undefined',\r\n timestampFormat: config.timestampFormat || 'undefined',\r\n notificationDebounceTimeout: config.notificationDebounceTimeout || '400',\r\n hideToaster: config.hideToaster || true,\r\n toasterHeight: config.toasterHeight || '32',\r\n toasterMaxHeight: config.toasterMaxHeight || '32 * 5',\r\n toasterSingularMaxHeight: config.toasterSingularMaxHeight || '50',\r\n toastFontSize: config.toastFontSize || '87.5%',\r\n toastIconWidth: config.toastIconWidth || '36',\r\n toastSeparatorColor: config.toastSeparatorColor || '#E8EAEC',\r\n toastTextPadding: config.toastTextPadding || '6',\r\n toastErrorBackgroundColor: config.toastErrorBackgroundColor || '#FDE7E9',\r\n toastErrorColor: config.toastErrorColor || '#A80000',\r\n toastInfoBackgroundColor: config.toastInfoBackgroundColor || '#CEF1FF',\r\n toastInfoColor: config.toastInfoColor || '#105E7D',\r\n toastSuccessBackgroundColor: config.toastSuccessBackgroundColor || '#DFF6DD',\r\n toastSuccessColor: config.toastSuccessColor || '#107C10',\r\n toastWarnBackgroundColor: config.toastWarnBackgroundColor || '#FFF4CE',\r\n toastWarnColor: config.toastWarnColor || '#3B3A39',\r\n typingAnimationBackgroundImage: config.typingAnimationBackgroundImage || 'undefined',\r\n typingAnimationDuration: config.typingAnimationDuration || '5000',\r\n typingAnimationHeight: config.typingAnimationHeight || '20',\r\n typingAnimationWidth: config.typingAnimationWidth || '64',\r\n videoHeight: config.videoHeight || '270',\r\n markdownExternalLinkIconImage:\r\n config.markdownExternalLinkIconImage ||\r\n 'url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMjUwMSA0LjUwMDE3SDEwLjc0OTVDMTEuMTYzNyA0LjUwMDE3IDExLjQ5OTUgNC44MzU5NiAxMS40OTk1IDUuMjUwMTdDMTEuNDk5NSA1LjYyOTg2IDExLjIxNzMgNS45NDM2NiAxMC44NTEzIDUuOTkzMzJMMTAuNzQ5NSA2LjAwMDE3SDcuMjQ5NzRDNi4wNzA3OSA1Ljk5OTYxIDUuMTAzNDkgNi45MDY1NiA1LjAwNzg2IDguMDYxMTJMNS4wMDAyOCA4LjIyMDAzTDUuMDAzMTIgMTYuNzUwN0M1LjAwMzQzIDE3Ljk0MTUgNS45Mjg4NSAxOC45MTYxIDcuMDk5NjYgMTguOTk0OUw3LjI1MzcxIDE5LjAwMDFMMTUuNzUxOCAxOC45ODg0QzE2Ljk0MTUgMTguOTg2OCAxNy45MTQ1IDE4LjA2MiAxNy45OTM1IDE2Ljg5MjNMMTcuOTk4NyAxNi43Mzg0VjEzLjIzMjFDMTcuOTk4NyAxMi44MTc5IDE4LjMzNDUgMTIuNDgyMSAxOC43NDg3IDEyLjQ4MjFDMTkuMTI4NCAxMi40ODIxIDE5LjQ0MjIgMTIuNzY0MyAxOS40OTE4IDEzLjEzMDNMMTkuNDk4NyAxMy4yMzIxVjE2LjczODRDMTkuNDk4NyAxOC43NDA3IDE3LjkyOTMgMjAuMzc2OSAxNS45NTI4IDIwLjQ4MjlMMTUuNzUzOCAyMC40ODg0TDcuMjU4MjcgMjAuNTAwMUw3LjA1NDk1IDIwLjQ5NDlDNS4xNDIzOSAyMC4zOTU0IDMuNjA4OTUgMTguODYyNyAzLjUwODM3IDE2Ljk1MDJMMy41MDMxMiAxNi43NTExTDMuNTAwODkgOC4yNTI3TDMuNTA1MjkgOC4wNTAyQzMuNjA1MzkgNi4xMzc0OSA1LjEzODY3IDQuNjA0NDkgNy4wNTA5NiA0LjUwNTI3TDcuMjUwMSA0LjUwMDE3SDEwLjc0OTVINy4yNTAxWk0xMy43NDgxIDMuMDAxNDZMMjAuMzAxOCAzLjAwMTk3TDIwLjQwMTQgMy4wMTU3NUwyMC41MDIyIDMuMDQzOTNMMjAuNTU5IDMuMDY4MDNDMjAuNjEyMiAzLjA5MTIyIDIwLjY2MzQgMy4xMjE2MyAyMC43MTExIDMuMTU4ODVMMjAuNzgwNCAzLjIyMTU2TDIwLjg2NDEgMy4zMjAxNEwyMC45MTgzIDMuNDEwMjVMMjAuOTU3IDMuNTAwNTdMMjAuOTc2MiAzLjU2NDc2TDIwLjk4OTggMy42Mjg2MkwyMC45OTkyIDMuNzIyODJMMjAuOTk5NyAxMC4yNTU0QzIwLjk5OTcgMTAuNjY5NiAyMC42NjM5IDExLjAwNTQgMjAuMjQ5NyAxMS4wMDU0QzE5Ljg3IDExLjAwNTQgMTkuNTU2MiAxMC43MjMyIDE5LjUwNjUgMTAuMzU3MUwxOS40OTk3IDEwLjI1NTRMMTkuNDk4OSA1LjU2MTQ3TDEyLjI3OTcgMTIuNzg0N0MxMi4wMTM0IDEzLjA1MSAxMS41OTY4IDEzLjA3NTMgMTEuMzAzMSAxMi44NTc1TDExLjIxOSAxMi43ODQ5QzEwLjk1MjcgMTIuNTE4NyAxMC45Mjg0IDEyLjEwMjEgMTEuMTQ2MiAxMS44MDg0TDExLjIxODggMTEuNzI0M0wxOC40MzY5IDQuNTAxNDZIMTMuNzQ4MUMxMy4zNjg0IDQuNTAxNDYgMTMuMDU0NiA0LjIxOTMxIDEzLjAwNSAzLjg1MzI0TDEyLjk5ODEgMy43NTE0NkMxMi45OTgxIDMuMzcxNzcgMTMuMjgwMyAzLjA1Nzk3IDEzLjY0NjQgMy4wMDgzMUwxMy43NDgxIDMuMDAxNDZaIiBmaWxsPSIjMjEyMTIxIiAvPjwvc3ZnPg==)',\r\n markdownRespectCRLF: config.markdownRespectCRLF || 'true',\r\n internalLiveRegionFadeAfter: config.internalLiveRegionFadeAfter || '1000',\r\n accent: config.accent || '#0063B1',\r\n subtle: config.subtle || '#767676'\r\n };\r\n};\r\n\r\nconst getAvatarStyling = (config: IPvaChatConnectorConfig): IAvatarStyling => {\r\n return {\r\n avatarBorderRadius: config.avatarBorderRadius || '50%',\r\n avatarSize: config.avatarSize || '40',\r\n botAvatarBackgroundColor: config.botAvatarBackgroundColor || 'undefined',\r\n botAvatarImage: config.botAvatarImage || '',\r\n botAvatarInitials: config.botAvatarInitials || '',\r\n userAvatarBackgroundColor: config.userAvatarBackgroundColor || 'undefined',\r\n userAvatarImage: config.userAvatarImage || '',\r\n userAvatarInitials: config.userAvatarInitials || '',\r\n showAvatarInGroup: config.showAvatarInGroup || 'status'\r\n };\r\n};\r\n\r\nconst getSuggestedActionStyling = (config: IPvaChatConnectorConfig): ISuggestedActionStyling => {\r\n return {\r\n suggestedActionLayout: config.suggestedActionLayout || 'carousel',\r\n suggestedActionBackground: config.suggestedActionBackground || 'White',\r\n suggestedActionTextColor: config.suggestedActionTextColor || '',\r\n suggestedActionBorderColor: config.suggestedActionBorderColor || '',\r\n suggestedActionBorderRadius: config.suggestedActionBorderRadius || '0',\r\n suggestedActionBorderStyle: config.suggestedActionBorderStyle || 'solid',\r\n suggestedActionBorderWidth: config.suggestedActionBorderWidth || '2',\r\n suggestedActionDisabledBorderStyle: config.suggestedActionDisabledBorderStyle || 'solid',\r\n suggestedActionDisabledBorderWidth: config.suggestedActionDisabledBorderWidth || '2',\r\n suggestedActionDisabledTextColor: config.suggestedActionDisabledTextColor || '',\r\n suggestedActionHeight: config.suggestedActionHeight || '40',\r\n suggestedActionImageHeight: config.suggestedActionImageHeight || '20',\r\n suggestedActionsCarouselFlipperCursor: config.suggestedActionsCarouselFlipperCursor || '',\r\n suggestedActionsCarouselFlipperBoxWidth: config.suggestedActionsCarouselFlipperBoxWidth || '40',\r\n suggestedActionsCarouselFlipperSize: config.suggestedActionsCarouselFlipperSize || '20',\r\n suggestedActionsFlowMaxHeight: config.suggestedActionsFlowMaxHeight || '',\r\n suggestedActionsStackedHeight: config.suggestedActionsStackedHeight || '',\r\n suggestedActionsStackedOverflow: config.suggestedActionsStackedOverflow || '2',\r\n suggestedActionsStackedLayoutButtonMaxHeight: config.suggestedActionsStackedLayoutButtonMaxHeight || '',\r\n suggestedActionsStackedLayoutButtonTextWrap: config.suggestedActionsStackedLayoutButtonTextWrap || false\r\n };\r\n};\r\n\r\n/**\r\n * Generates style options for the Botframework-WebChat widget\r\n * @param config IPvaChatConnectorConfig\r\n * @returns IChatStyling\r\n */\r\nexport const getChatStyleOptions = (config: IPvaChatConnectorConfig): IChatStyling => {\r\n const bubbleStyling = getBubbleStyling(config);\r\n const avatarStyling = getAvatarStyling(config);\r\n const suggestedActionStyling = getSuggestedActionStyling(config);\r\n const otherStyling = getOtherStyling(config);\r\n return {\r\n hideUploadButton: true,\r\n primaryFont: fontFormat(config.primaryFont),\r\n backgroundColor: config.backgroundColor || 'White',\r\n ...bubbleStyling,\r\n ...avatarStyling,\r\n ...suggestedActionStyling,\r\n ...otherStyling\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport React from 'react';\r\nimport { IAction, IDispatch, INext } from '../interfaces';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../pva-chat-connector';\r\n\r\nexport class CommerceChatStore {\r\n private props: IPvaChatConnectorViewProps;\r\n private setNewMessageAction: React.Dispatch>;\r\n private provider?: TContextProvider;\r\n\r\n /**\r\n * Gets conversation token\r\n * @param props IPvaChatConnectorViewProps\r\n */\r\n public static async getDirectLineToken(props: IPvaChatConnectorViewProps): Promise {\r\n if (props.config.powervaDirectlineTokenURL && props.config.botID && props.config.tenantID) {\r\n // use direct line token url, bot id and tenant id from module config to get conversation token\r\n const url = `${props.config.powervaDirectlineTokenURL}?botId=${props.config.botID}&tenantId=${props.config.tenantID}`;\r\n const options = { method: 'GET' };\r\n return fetch(url, options)\r\n .then(r => r.json())\r\n .then(r => {\r\n if (r.token) {\r\n return r.token;\r\n } else {\r\n throw r;\r\n }\r\n });\r\n }\r\n\r\n // use direct line token url, bot id and tenant id from app config to get conversation token\r\n const url = `${props.context.app.config.pvaChatConnectorPowervaDirectlineTokenURL}?botId=${props.context.app.config.pvaChatConnectorBotID}&tenantId=${props.context.app.config.pvaChatConnectorTenantID}`;\r\n const options = {\r\n method: 'GET'\r\n };\r\n return fetch(url, options)\r\n .then(r => r.json())\r\n .then(r => {\r\n if (r.token) {\r\n return r.token;\r\n } else {\r\n throw r;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates a new instance of commerce store for WebChat\r\n * @param props IPvaChatConnectorViewProps\r\n * @param provider TContextProvider\r\n * @param setNewMessage React.Dispatch>\r\n */\r\n constructor(\r\n props: IPvaChatConnectorViewProps,\r\n provider: TContextProvider | undefined,\r\n setNewMessage: React.Dispatch>\r\n ) {\r\n this.props = props;\r\n this.provider = provider;\r\n this.setNewMessageAction = setNewMessage;\r\n }\r\n\r\n /**\r\n * Handles custom chat actions\r\n * @param param0 {\r\n * dispatch: IDispatch;\r\n * next: INext;\r\n * action: IAction;\r\n * }\r\n */\r\n public async actionHandler({ dispatch, next, action }: { dispatch: IDispatch; next: INext; action: IAction }): Promise {\r\n const atype = action.type;\r\n\r\n switch (atype) {\r\n case 'DIRECT_LINE/CONNECT_FULFILLED': {\r\n // sets language\r\n dispatch({\r\n type: 'WEB_CHAT/SEND_EVENT',\r\n payload: {\r\n name: 'webchat/join',\r\n value: { language: window.navigator.language }\r\n }\r\n });\r\n break;\r\n }\r\n case 'DIRECT_LINE/INCOMING_ACTIVITY': {\r\n const activity = action.payload.activity;\r\n if (activity?.from?.role === 'bot') {\r\n // Sets flag for new message (will be use to indicate new messages from bot when chat is minimized)\r\n this.setNewMessageAction(true);\r\n }\r\n break;\r\n }\r\n case 'DIRECT_LINE/POST_ACTIVITY_FULFILLED': {\r\n switch (action.payload.activity.name) {\r\n case 'webchat/join':\r\n {\r\n if (this.provider !== undefined) {\r\n // Sets Chat Context\r\n dispatch({\r\n type: 'WEB_CHAT/SEND_EVENT',\r\n payload: {\r\n name: 'pvaSetContext',\r\n value: this.provider()\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n case 'pvaSetContext':\r\n {\r\n if (this.props.config.triggerQuery) {\r\n // Initialize chat after Chat Context is set\r\n dispatch({\r\n type: 'WEB_CHAT/SEND_MESSAGE_BACK',\r\n payload: {\r\n text: this.props.config.triggerQuery\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n default: {\r\n // default nothing\r\n }\r\n }\r\n break;\r\n }\r\n default: {\r\n // default nothing\r\n }\r\n }\r\n\r\n return next(action);\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport React, { FunctionComponent, useMemo, useState } from 'react';\r\nimport { getChatStyleOptions } from '../helpers/StyleComposers';\r\nimport { IChatCoreProps, IAction, IDispatch } from '../interfaces';\r\nimport { CommerceChatStore } from '../helpers/CommerceChatStore';\r\nimport { IPvaChatConnectorConfig } from '../pva-chat-connector.props.autogenerated';\r\n\r\n/**\r\n * Just a core Chat component\r\n * @param props\r\n */\r\n\r\nconst TermsAndConditionsLink = ({ href }: { href?: string }) => {\r\n return (\r\n

\r\n By using this bot, you agree to these \r\n \r\n terms and conditions\r\n \r\n

\r\n );\r\n};\r\n\r\nconst CustomWebChat = ({ config }: { config: IPvaChatConnectorConfig }) => {\r\n const { Components } = window.WebChat;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChatCore: FunctionComponent = (props: IChatCoreProps) => {\r\n const { Components } = window.WebChat;\r\n\r\n const [userId, setUserId] = useState('');\r\n useMemo(() => {\r\n if (props.provider) {\r\n const ctx = props.provider();\r\n if (ctx.UserId) {\r\n setUserId(typeof ctx.UserId === 'string' ? ctx.UserId : ctx.UserId.value.toString());\r\n }\r\n }\r\n }, [props.provider]);\r\n\r\n const directLine = useMemo(() => {\r\n return window.WebChat.createDirectLine({ token: props.directLineToken });\r\n }, [props.directLineToken]);\r\n\r\n const commerceChatStore = useMemo(() => {\r\n if (directLine && props.provider) {\r\n return new CommerceChatStore(props.config, props.provider, props.setNewMessage);\r\n }\r\n return undefined;\r\n }, [props.provider, directLine]);\r\n\r\n const store = useMemo(() => {\r\n return window.WebChat.createStore(\r\n {},\r\n ({ dispatch }: { dispatch: IDispatch }) => (next: (action: IAction) => IDispatch) => (action: IAction) => {\r\n commerceChatStore?.actionHandler({ dispatch, next, action });\r\n }\r\n );\r\n }, [commerceChatStore]);\r\n const styleOptions = getChatStyleOptions(props.config.config);\r\n\r\n return props.directLineToken !== '' ? (\r\n \r\n \r\n \r\n ) : (\r\n

Please wait while we are connecting.

\r\n );\r\n};\r\n\r\nexport default ChatCore;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport React, { FunctionComponent, useEffect, useState } from 'react';\r\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport ContextProvider from '../helpers/ContextProvider';\r\nimport { getChatStyling } from '../helpers/StyleComposers';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../pva-chat-connector';\r\nimport { CommerceChatStore } from '../helpers';\r\nimport ChatCore from './ChatCore';\r\n\r\nconst INVALID_TOKEN = 'INVALID_TOKEN';\r\nconst CLOSE_IMG_DATA =\r\n 'M443.6,387.1L312.4,255.4l131.5-130c5.4-5.4,5.4-14.2,0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4 L256,197.8L124.9,68.3c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4L68,105.9c-5.4,5.4-5.4,14.2,0,19.6l131.5,130L68.4,387.1 c-2.6,2.6-4.1,6.1-4.1,9.8c0,3.7,1.4,7.2,4.1,9.8l37.4,37.6c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1L256,313.1l130.7,131.1 c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1l37.4-37.6c2.6-2.6,4.1-6.1,4.1-9.8C447.7,393.2,446.2,389.7,443.6,387.1z';\r\n\r\n/**\r\n * Outer chat component, displays chat button, and proactive chat, and handles custom actions\r\n * @param props IPvaChatConnectorViewProps\r\n */\r\nconst Chat: FunctionComponent = (props: IPvaChatConnectorViewProps) => {\r\n const [loaded, setLoaded] = useState(false); // loaded & minimized are needed as ChatWidget should not be removed from DOM (it resets chat)\r\n const [minimized, setMinimized] = useState(true);\r\n const [newMessage, setNewMessage] = useState(false); // TODO: use this to indicate new message in minimized chat\r\n const [token, setToken] = useState(''); // holds conversation token for WebChat\r\n const [isProactive, setIsProactive] = useState(false); // if proactive chat is triggered\r\n const [proactiveMessage, setProactiveMessage] = useState(props.config.proactiveDefaultMessage);\r\n const [closed, setClosed] = useState(false);\r\n const [provider, setProvider] = useState();\r\n const isMobileDevice =\r\n isMobile({ variant: VariantType.Browser, context: props.context.request }) === 'xs' ||\r\n isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\r\n const chatStyle = getChatStyling(props.config, minimized, isMobileDevice); // generates chat style objects based on configuration\r\n const handleMaximizeButtonClick = () => {\r\n setLoaded(true);\r\n setMinimized(false);\r\n setNewMessage(false);\r\n };\r\n const handleMinimizeButtonClick = () => {\r\n setMinimized(true);\r\n setNewMessage(false);\r\n };\r\n const handleCloseButtonClick = () => {\r\n setClosed(true);\r\n setLoaded(false);\r\n setMinimized(true);\r\n setNewMessage(false);\r\n setIsProactive(false);\r\n };\r\n useEffect(() => {\r\n if (loaded) {\r\n CommerceChatStore.getDirectLineToken(props)\r\n .then(directLineToken => {\r\n setToken(directLineToken);\r\n })\r\n .catch(e => {\r\n setToken(INVALID_TOKEN);\r\n props.telemetry.exception(e);\r\n });\r\n }\r\n }, [loaded]);\r\n useEffect(() => {\r\n (async () => {\r\n const contextProvider = new ContextProvider(props); // Generates context (provider) and checks for proactive chat triggers\r\n const prov = await contextProvider.init();\r\n if (contextProvider.data.enabled) {\r\n props.context.telemetry.debug(`[Chat] Proactive chat was enabled: '${contextProvider.data.enabled}'.`);\r\n // if proactive chat is triggered\r\n const timeout = contextProvider.data.timeout * 1000; // timeout is there only for WaitOnTime trigger\r\n setTimeout(() => {\r\n if (!loaded) {\r\n props.context.telemetry.debug(`[Chat] Proactive chat was loaded: ${loaded}.`);\r\n setProactiveMessage(contextProvider.data.message);\r\n setIsProactive(true);\r\n }\r\n }, timeout);\r\n }\r\n setProvider(() => prov);\r\n })().catch(e => props.telemetry.exception(e));\r\n }, []);\r\n useEffect(() => {\r\n if (closed) {\r\n setClosed(false);\r\n }\r\n }, [token, provider]);\r\n const isValidToken = (): boolean => {\r\n return `${token}` !== INVALID_TOKEN;\r\n };\r\n return (\r\n \r\n {minimized && (!isProactive || (isProactive && loaded)) && (\r\n \r\n )}\r\n {minimized && isProactive && !loaded && (\r\n
\r\n
\r\n {props.config.storeLogoURL && (\r\n logo\r\n )}\r\n
\r\n
\r\n
\r\n

{proactiveMessage}

\r\n \r\n
\r\n
\r\n )}\r\n {loaded && isValidToken() && (\r\n
\r\n
\r\n {props.config.storeLogoURL && (\r\n logo\r\n )}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n {!isValidToken() &&
{props.config.unableToLoadChatMessage}
}\r\n
\r\n );\r\n};\r\n\r\nexport default Chat;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\nimport Chat from './components/Chat';\r\nimport { IPvaChatConnectorViewProps } from './pva-chat-connector';\r\n\r\nexport default (props: IPvaChatConnectorViewProps) => {\r\n // Only for CDN loading check, won't be needed with npm package of Botframework-WebChat\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n // Just to verify that CDN Chat Widget js lib is loaded\r\n // Remove this block if moving to npm package of Botframework-WebChat\r\n const interval = setInterval(() => {\r\n const t = typeof window;\r\n if (t !== 'undefined' && window.WebChat) {\r\n setLoaded(true);\r\n clearInterval(interval);\r\n }\r\n }, 100);\r\n\r\n return
{loaded && }
;\r\n};\r\n","// tslint:disable-next-line:variable-name\r\nexport const convert_a2_to_a3 = {\r\n AF: 'AFG',\r\n AX: 'ALA',\r\n AL: 'ALB',\r\n DZ: 'DZA',\r\n AS: 'ASM',\r\n AD: 'AND',\r\n AO: 'AGO',\r\n AI: 'AIA',\r\n AQ: 'ATA',\r\n AG: 'ATG',\r\n AR: 'ARG',\r\n AM: 'ARM',\r\n AW: 'ABW',\r\n AU: 'AUS',\r\n AT: 'AUT',\r\n AZ: 'AZE',\r\n BS: 'BHS',\r\n BH: 'BHR',\r\n BD: 'BGD',\r\n BB: 'BRB',\r\n BY: 'BLR',\r\n BE: 'BEL',\r\n BZ: 'BLZ',\r\n BJ: 'BEN',\r\n BM: 'BMU',\r\n BT: 'BTN',\r\n BO: 'BOL',\r\n BA: 'BIH',\r\n BW: 'BWA',\r\n BV: 'BVT',\r\n BR: 'BRA',\r\n IO: 'IOT',\r\n BN: 'BRN',\r\n BG: 'BGR',\r\n BF: 'BFA',\r\n BI: 'BDI',\r\n KH: 'KHM',\r\n CM: 'CMR',\r\n CA: 'CAN',\r\n CV: 'CPV',\r\n KY: 'CYM',\r\n CF: 'CAF',\r\n TD: 'TCD',\r\n CL: 'CHL',\r\n CN: 'CHN',\r\n CX: 'CXR',\r\n CC: 'CCK',\r\n CO: 'COL',\r\n KM: 'COM',\r\n CG: 'COG',\r\n CD: 'COD',\r\n CK: 'COK',\r\n CR: 'CRI',\r\n CI: 'CIV',\r\n HR: 'HRV',\r\n CU: 'CUB',\r\n CY: 'CYP',\r\n CZ: 'CZE',\r\n DK: 'DNK',\r\n DJ: 'DJI',\r\n DM: 'DMA',\r\n DO: 'DOM',\r\n EC: 'ECU',\r\n EG: 'EGY',\r\n SV: 'SLV',\r\n GQ: 'GNQ',\r\n ER: 'ERI',\r\n EE: 'EST',\r\n ET: 'ETH',\r\n FK: 'FLK',\r\n FO: 'FRO',\r\n FJ: 'FJI',\r\n FI: 'FIN',\r\n FR: 'FRA',\r\n GF: 'GUF',\r\n PF: 'PYF',\r\n TF: 'ATF',\r\n GA: 'GAB',\r\n GM: 'GMB',\r\n GE: 'GEO',\r\n DE: 'DEU',\r\n GH: 'GHA',\r\n GI: 'GIB',\r\n GR: 'GRC',\r\n GL: 'GRL',\r\n GD: 'GRD',\r\n GP: 'GLP',\r\n GU: 'GUM',\r\n GT: 'GTM',\r\n GG: 'GGY',\r\n GN: 'GIN',\r\n GW: 'GNB',\r\n GY: 'GUY',\r\n HT: 'HTI',\r\n HM: 'HMD',\r\n VA: 'VAT',\r\n HN: 'HND',\r\n HK: 'HKG',\r\n HU: 'HUN',\r\n IS: 'ISL',\r\n IN: 'IND',\r\n ID: 'IDN',\r\n IR: 'IRN',\r\n IQ: 'IRQ',\r\n IE: 'IRL',\r\n IM: 'IMN',\r\n IL: 'ISR',\r\n IT: 'ITA',\r\n JM: 'JAM',\r\n JP: 'JPN',\r\n JE: 'JEY',\r\n JO: 'JOR',\r\n KZ: 'KAZ',\r\n KE: 'KEN',\r\n KI: 'KIR',\r\n KP: 'PRK',\r\n KR: 'KOR',\r\n KW: 'KWT',\r\n KG: 'KGZ',\r\n LA: 'LAO',\r\n LV: 'LVA',\r\n LB: 'LBN',\r\n LS: 'LSO',\r\n LR: 'LBR',\r\n LY: 'LBY',\r\n LI: 'LIE',\r\n LT: 'LTU',\r\n LU: 'LUX',\r\n MO: 'MAC',\r\n MK: 'MKD',\r\n MG: 'MDG',\r\n MW: 'MWI',\r\n MY: 'MYS',\r\n MV: 'MDV',\r\n ML: 'MLI',\r\n MT: 'MLT',\r\n MH: 'MHL',\r\n MQ: 'MTQ',\r\n MR: 'MRT',\r\n MU: 'MUS',\r\n YT: 'MYT',\r\n MX: 'MEX',\r\n FM: 'FSM',\r\n MD: 'MDA',\r\n MC: 'MCO',\r\n MN: 'MNG',\r\n ME: 'MNE',\r\n MS: 'MSR',\r\n MA: 'MAR',\r\n MZ: 'MOZ',\r\n MM: 'MMR',\r\n NA: 'NAM',\r\n NR: 'NRU',\r\n NP: 'NPL',\r\n NL: 'NLD',\r\n AN: 'ANT',\r\n NC: 'NCL',\r\n NZ: 'NZL',\r\n NI: 'NIC',\r\n NE: 'NER',\r\n NG: 'NGA',\r\n NU: 'NIU',\r\n NF: 'NFK',\r\n MP: 'MNP',\r\n NO: 'NOR',\r\n OM: 'OMN',\r\n PK: 'PAK',\r\n PW: 'PLW',\r\n PS: 'PSE',\r\n PA: 'PAN',\r\n PG: 'PNG',\r\n PY: 'PRY',\r\n PE: 'PER',\r\n PH: 'PHL',\r\n PN: 'PCN',\r\n PL: 'POL',\r\n PT: 'PRT',\r\n PR: 'PRI',\r\n QA: 'QAT',\r\n RE: 'REU',\r\n RO: 'ROU',\r\n RU: 'RUS',\r\n RW: 'RWA',\r\n BL: 'BLM',\r\n SH: 'SHN',\r\n KN: 'KNA',\r\n LC: 'LCA',\r\n MF: 'MAF',\r\n PM: 'SPM',\r\n VC: 'VCT',\r\n WS: 'WSM',\r\n SM: 'SMR',\r\n ST: 'STP',\r\n SA: 'SAU',\r\n SN: 'SEN',\r\n RS: 'SRB',\r\n SC: 'SYC',\r\n SL: 'SLE',\r\n SG: 'SGP',\r\n SK: 'SVK',\r\n SI: 'SVN',\r\n SB: 'SLB',\r\n SO: 'SOM',\r\n ZA: 'ZAF',\r\n GS: 'SGS',\r\n ES: 'ESP',\r\n LK: 'LKA',\r\n SD: 'SDN',\r\n SR: 'SUR',\r\n SJ: 'SJM',\r\n SZ: 'SWZ',\r\n SE: 'SWE',\r\n CH: 'CHE',\r\n SY: 'SYR',\r\n TW: 'TWN',\r\n TJ: 'TJK',\r\n TZ: 'TZA',\r\n TH: 'THA',\r\n TL: 'TLS',\r\n TG: 'TGO',\r\n TK: 'TKL',\r\n TO: 'TON',\r\n TT: 'TTO',\r\n TN: 'TUN',\r\n TR: 'TUR',\r\n TM: 'TKM',\r\n TC: 'TCA',\r\n TV: 'TUV',\r\n UG: 'UGA',\r\n UA: 'UKR',\r\n AE: 'ARE',\r\n GB: 'GBR',\r\n US: 'USA',\r\n UM: 'UMI',\r\n UY: 'URY',\r\n UZ: 'UZB',\r\n VU: 'VUT',\r\n VE: 'VEN',\r\n VN: 'VNM',\r\n VG: 'VGB',\r\n VI: 'VIR',\r\n WF: 'WLF',\r\n EH: 'ESH',\r\n YE: 'YEM',\r\n ZM: 'ZMB',\r\n ZW: 'ZWE'\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountLoyaltyTileViewProps } from '@msdyn365-commerce-modules/account-management/src/modules/account-loyalty-tile/./account-loyalty-tile';\r\nimport { IAccountLoyaltyTileProps } from '../../../themes/venchi/definition-extensions/account-loyalty-tile.ext.props.autogenerated';\r\n\r\nconst AccountLoyaltyTileView: React.FC> = props => {\r\n const { AccountLoyaltyTile, heading, description, links } = props;\r\n\r\n // The user does NOT have a customer number yet, they still have a tmp_guid\r\n let tmp_account = false;\r\n if (props.context.request.user.customerAccountNumber?.length === 36) {\r\n tmp_account = true;\r\n }\r\n\r\n let description__no_decimals;\r\n \r\n // @ts-ignore\r\n if (description && description.props) {\r\n // @ts-ignore\r\n description__no_decimals = description.props.description.replace('.00', '');\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n

{tmp_account && props.config.usingNewLoyalty && props.config.cardBeingGeneratedText ? props.config.cardBeingGeneratedText : description__no_decimals}

\r\n {links}\r\n
\r\n );\r\n};\r\n\r\nexport default AccountLoyaltyTileView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} 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\nimport { convert_a2_to_a3 } from '../utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\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 \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \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\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 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// tslint:disable-next-line:max-func-body-length\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 ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const [hasAddressError, setHasAddressError] = React.useState(false);\r\n React.useEffect(() => {\r\n setHasAddressError(error.title ? true : false);\r\n }, [error.title]);\r\n // console.log(`${currency} ${localeString} ${locale}`);\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n // select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_3', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_1', id: 'shipping_addressstate' },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'country', id: 'shipping_addressthreeletterisoregionname' },\r\n { googleComponent: 'administrative_area_level_2', id: 'shipping_addresscounty' }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: { country: countriesAvail[locale] && countriesAvail[locale].autocomplete }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n // console.log(place);\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n // console.log(formValue);\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n // console.log(selectedValue);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n // console.log(input.value);\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid =\r\n locale === 'it' && (county.value === '' || county.value.length > 2 || !/[^a-z]/i.test(county.value) === false)\r\n ? false\r\n : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n }, []);\r\n\r\n // Auto select of DEF value in state select on italian site\r\n React.useEffect(() => {\r\n const event = new Event('change', { bubbles: true });\r\n if (locale === 'it' && (document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement)) {\r\n const optionDEF = document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement;\r\n optionDEF.setAttribute('aria-selected', 'true');\r\n (optionDEF.parentNode as HTMLSelectElement).value = 'DEF';\r\n (optionDEF.parentNode as HTMLSelectElement).dispatchEvent(event);\r\n (optionDEF.parentNode as HTMLSelectElement).disabled = Boolean('true');\r\n }\r\n }, [document.querySelector('#shipping_addressstate option[value=DEF]')]);\r\n\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementsByClassName('msc-address-form')[0]]);\r\n\r\n // Refesh once saving processed\r\n let updatedCount = 0;\r\n React.useEffect(() => {\r\n ++updatedCount;\r\n if (updatedCount > 1) {\r\n location.reload();\r\n }\r\n }, [document.querySelector('.msc-address-form__button-updating')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasAddressError && (\r\n \r\n

{resources.addressErrorMessage}

\r\n
\r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\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 * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\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 { IAccountProfileProps } from '../definition-extensions/account-profile.ext.props.autogenerated';\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 AccountProfileView: React.FC> = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n nameSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing')[1].innerHTML =\r\n // @ts-ignore\r\n props.config.textGenericMarketing;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-Profiling').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-Profiling')[1].innerHTML = props.config.textProfiling;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-ThirdParty').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-ThirdParty')[1].innerHTML = props.config.textThirdParty;\r\n }\r\n\r\n document.getElementsByClassName('ms-account-profile__attributes-edit-button msc-btn')[0].addEventListener(\"click\", () => {\r\n const bd_input: HTMLInputElement = document.getElementsByClassName('ms-account-profile__attributes-element ms-account-profile__attributes_input ms-account-profile__attributes_input-edit-false ms-account-profile__Birthday-input')[0] as HTMLInputElement;\r\n // const prev_date = bd_input.value;\r\n if (props.context.request.canonicalDomain !== 'us.venchi.com') {\r\n // The following is undefined due to the element not existing yet at runtime\r\n // const never_mind: HTMLButtonElement = document.getElementsByClassName('ms-account-profile__attributes-cancel-button msc-btn')[0] as HTMLButtonElement;\r\n \r\n // Protip: This resets the birthday value on click, so be mindful of that\r\n bd_input.setAttribute('type', 'date');\r\n \r\n // never_mind.addEventListener(\"click\", () => {\r\n // bd_input.setAttribute('type', 'text');\r\n // bd_input.value = prev_date;\r\n // });\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n {heading}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {accountProfileWrapper && (\r\n \r\n \r\n \r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILoyaltySignUpViewProps } from '@msdyn365-commerce-modules/account-management/src/modules/loyalty-sign-up/./loyalty-sign-up';\r\nimport { ILoyaltySignUpProps } from '../definition-extensions/loyalty-sign-up.ext.props.autogenerated';\r\n\r\nconst LoyaltySignUpView: React.FC> = props => {\r\n const {\r\n LoyaltySignUp,\r\n heading,\r\n memberHeading,\r\n signInLink,\r\n signUpText,\r\n signUpButton,\r\n detailsLink,\r\n // termsLink, Not needed\r\n loading,\r\n infoMessageBar\r\n } = props;\r\n\r\n if (loading) {\r\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // const hostname = props?.context?.request?.url?.requestUrl?.hostname || '';\r\n\r\n if (typeof window !== 'undefined') {\r\n const loyalty_join_toggle_btn = document.getElementsByClassName(\"ms-loyalty-terms__toggle\")[0];\r\n loyalty_join_toggle_btn?.addEventListener(\"click\", () => {\r\n const loyalty_join_btn = document.getElementsByClassName(\"ms-loyalty-terms__submit\")[0];\r\n loyalty_join_btn.addEventListener(\"click\", () => {\r\n loyalty_join_btn.innerHTML = '
';\r\n })\r\n });\r\n }\r\n\r\n /*\r\n [signInLink = true, loyalty_join_flag = false] guest (no loyalty join) -> standard sign in\r\n [signInLink = true, loyalty_join_flag = true] guest (loyalty join) -> \"thanks\" instead of sign in\r\n [signInLink = false] logged in -> hidden module content\r\n */\r\n const loyalty_join_flag = props.context.request.query?.hasJoined;\r\n // signInLink is null (thus false) when the user is logged in\r\n return (signInLink && (loyalty_join_flag ? (\r\n
\r\n {props.resources.joinedLoyaltyThankYouHeader && (

{props.resources.joinedLoyaltyThankYouHeader}

)}\r\n {props.resources.joinedLoyaltyParagraphContent && (

{props.resources.joinedLoyaltyParagraphContent}

)}\r\n {/* {props.resources.loyaltyBalanceCheckURL && props.resources.joinedLoyaltyBalanceCheckLinkText && ({props.resources.joinedLoyaltyBalanceCheckLinkText})} */}\r\n
\r\n ) : (\r\n \r\n {infoMessageBar}\r\n {memberHeading}\r\n {heading}\r\n {detailsLink}\r\n {signUpText}\r\n {/* {termsLink} Not needed */}\r\n {signUpButton}\r\n {signInLink}\r\n \r\n )\r\n )\r\n );\r\n};\r\n\r\nexport default LoyaltySignUpView;\r\n","import { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n// import { getTelemetryObject } from '@msdyn365-commerce-modules/utilities';\r\n// import { constructViewportInformationForImage } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n /* averageRating,\r\n filterByDropdown, */\r\n moduleProps,\r\n /* noReviewsMessage, */\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n /* refineReviewsProps, */\r\n reportReviewModal,\r\n /* reviewsListProps, */\r\n reviewCards,\r\n /* reviewCount, */\r\n reviewModal,\r\n /* sortByDropdown, */\r\n state,\r\n userReview\r\n } = props;\r\n\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n // const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName ?? '', 'Recensioni', props.telemetry);\r\n\r\n const _toggleReviewModal = () => {\r\n document.body.style.overflowY = modalOpen ? 'scroll' : 'hidden';\r\n setModalOpen(!modalOpen);\r\n };\r\n\r\n // @ts-ignore\r\n const averageRating = props.data.ratingsSummary.result.averageRating ?? 0;\r\n // @ts-ignore\r\n const buttonLabel = props.resources.product_review_list_button_label ?? '';\r\n // @ts-ignore\r\n const title = props.resources.reviewListLabel ?? '';\r\n\r\n React.useEffect(() => {\r\n const page_summary = document.getElementsByClassName('msc-average-rating-container')[0];\r\n const modal_summary = document.getElementsByClassName('msc-average-rating-container')[1];\r\n if (page_summary && modal_summary) {\r\n modal_summary.innerHTML = page_summary.innerHTML;\r\n }\r\n });\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n /* return {noReviewsMessage}; */\r\n /* return (\r\n \r\n
\r\n
); */\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {/* {averageRating}\r\n {reviewCount} */}\r\n {/* { reviewCards.length === 0 ?\r\n null : \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n } */}\r\n {/* {React.createElement(React.Fragment, null,\r\n modalToggle,\r\n createReviewModal(reviewModal, moduleProps)))} */}\r\n {/* \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n */}\r\n
\r\n
e.stopPropagation()}>\r\n
\r\n {title}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal, moduleProps)}\r\n {createReportModal(reportReviewModal, state)}\r\n
\r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.name}\r\n {props.date}\r\n {props.rating}\r\n \r\n \r\n \r\n {/* {props.reviewTitle} */}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {/* {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike} */}\r\n {props.edit}\r\n {/* {props.report} */}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n Module,\r\n Node,\r\n ITelemetryContent,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject\r\n} from '@msdyn365-commerce-modules/utilities'\r\n\r\nimport {\r\n ISignInItem,\r\n ISignInLoading,\r\n ISignInLocalAccount,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/./sign-in'\r\n\r\nimport { ISignInProps } from '../definition-extensions/sign-in.ext.props.autogenerated'\r\n\r\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC> = props => {\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n const canonicalDomain = props.signIn.moduleProps.context.request.canonicalDomain;\r\n const sitePath =\r\n props.signIn.moduleProps.context.request.sitePath && props.signIn.moduleProps.context.request.sitePath !== null\r\n ? props.signIn.moduleProps.context.request.sitePath\r\n : '';\r\n const requestUrl: string = `https://${canonicalDomain}${sitePath}`;\r\n\r\n const telemetryContent: ITelemetryContent = getTelemetryObject(\r\n props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry\r\n );\r\n const payLoad = getPayloadObject('click', telemetryContent!, props.resources.signinVclubLoginButtonText);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const handleGaGuestCheckout = React.useCallback(() => {\r\n window.dataLayer?.push?.({\r\n 'event': 'gaEvent',\r\n 'eventCategory': 'account',\r\n 'eventAction': 'guest_checkout',\r\n 'eventLabel': 'click' \r\n })\r\n }, [])\r\n\r\n const handleGaSignUp = React.useCallback(() => {\r\n window.dataLayer?.push?.({\r\n 'event': 'gaEvent',\r\n 'eventCategory': 'account',\r\n 'eventAction': 'signup',\r\n 'eventLabel': 'click'\r\n });\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!viewState.isShowLoading) {\r\n const registerButtonLink = document.getElementById('createAccount')\r\n const vclubButtonLink = document.getElementById('vclub-signin')\r\n\r\n if (registerButtonLink && vclubButtonLink) {\r\n // @ts-ignore\r\n vclubButtonLink.href = registerButtonLink.href\r\n }\r\n }\r\n }, [viewState.isShowLoading])\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n \r\n

\r\n {props.resources.signinVclubTitle}\r\n

\r\n

\r\n {props.resources.signinVclubText}\r\n

\r\n
\r\n \r\n {props.resources.signinVclubLoginButtonText}\r\n \r\n
\r\n \r\n
\r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n
\r\n {signUpLink}\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/src/modules/content-block/./content-block';\r\nimport { IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/write-review/write-review';\r\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/common/review-modal';\r\nimport { Module, Node, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const { heading, /* signInMessage, */ signInButton, modalToggle, reviewModal, moduleProps } = props;\r\n const isAuthenticated = props.context.request.user.isAuthenticated;\r\n // @ts-ignore\r\n //const reviewButtonLabel = moduleProps?.moduleProps?.resources?.reviewButtonLabel ?? '';\r\n //const customSignInButton = signInButton;\r\n // @ts-ignore\r\n //customSignInButton.props.text = reviewButtonLabel;\r\n // const test = { ...moduleProps };\r\n // @ts-ignore\r\n moduleProps.moduleProps.resources.signInLabel = moduleProps.moduleProps.resources.reviewButtonLabel;\r\n React.useEffect(() => {\r\n const button = document.getElementsByClassName('ms-write-review__sign-in-btn')[0];\r\n if (button) {\r\n button.setAttribute('style', 'visibility: visible');\r\n }\r\n }, []);\r\n return React.createElement(\r\n Module,\r\n Object.assign({}, moduleProps),\r\n heading,\r\n !isAuthenticated\r\n ? React.createElement(React.Fragment, null, null, signInButton)\r\n : React.createElement(React.Fragment, null, modalToggle, createReviewModal(reviewModal, moduleProps))\r\n );\r\n /* return (React.createElement(Module, Object.assign({}, moduleProps),\r\n heading,\r\n !isAuthenticated ? React.createElement(React.Fragment, null,\r\n signInMessage,\r\n signInButton) : React.createElement(React.Fragment, null,\r\n modalToggle,\r\n createReviewModal(reviewModal, moduleProps)))); */\r\n};\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps) => {\r\n return React.createElement(\r\n Module,\r\n Object.assign({}, props.modal, moduleProps),\r\n props.modalHeader,\r\n React.createElement(\r\n Node,\r\n Object.assign({}, props.modalBody),\r\n React.createElement(\r\n Node,\r\n Object.assign({}, props.form),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.rating, props.ratingLabel),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.titleLabel, props.titleInput),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.textLabel, props.textInput),\r\n props.privacyPolicyUrl,\r\n props.error\r\n )\r\n ),\r\n React.createElement(Node, Object.assign({}, props.modalFooter), props.submitButton, props.cancelButton)\r\n );\r\n};\r\nexport default ContentBlockView;\r\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 { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\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 { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\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 { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\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 { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\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 * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\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 { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\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\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\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 { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\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 Msdyn365, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n
\n );\n }\n}\n\nexport default CatalogPicker;\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 { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\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 { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
\n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\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 { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\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 { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\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 this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\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 });\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 });\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 { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { Button, ITelemetryContent, getPayloadObject, getTelemetryAttributes } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-organization-wide-selector';\nconst buttonClassName = `${componentClassName}__button`;\nconst buttonActiveClassName = `${componentClassName}__active-button`;\nconst buttonInactiveClassName = `${componentClassName}__inactive-button`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources {\n currentUserOptionLabel: string;\n currentUserOptionAriaLabel?: string;\n organizationWideOptionLabel: string;\n organizationWideOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState {\n CurrentUser,\n OrganizationWide\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData {\n customer: Customer;\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n extends IComponentProps {\n className?: string;\n resources: IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources;\n currentSelectorState: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState;\n telemetryContent?: ITelemetryContent;\n onChange(state: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersOrganizationWideSelectorFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n) => {\n // Current version doesn't include functionality for non b2b users or non-admin b2b users.\n if (!props.data.customer.IsB2bAdmin) {\n return
;\n }\n\n const [selectorState, setSelectorState] = React.useState(props.currentSelectorState);\n\n const onClickHandler = (newSelectorState: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState) => {\n setSelectorState(newSelectorState);\n props.onChange(newSelectorState);\n };\n\n // define telemetry attributes\n const currentUserOrderHistoryAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, props.resources?.currentUserOptionLabel ?? 'Current user order history')\n );\n const orgWideOrderHistoryAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, props.resources?.currentUserOptionLabel ?? 'Org wide order history')\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.CurrentUser)}\n {...currentUserOrderHistoryAttributes}\n >\n {props.resources?.currentUserOptionLabel}\n \n onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.OrganizationWide)}\n {...orgWideOrderHistoryAttributes}\n >\n {props.resources?.organizationWideOptionLabel}\n \n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n */\nexport const OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n>('OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent', {\n component: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorFunctionalComponent\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\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 { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\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 { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListData,\n IReviewsListResources,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\n\n/**\n * Build Review Card.\n * @param props - Review Card ViewProps.\n * @param resources - Resource Strings.\n * @param isUserReview - User review flag.\n * @returns JSX Element.\n */\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\n return (\n \n \n
\n {props.rating}\n {props.date}\n
\n {props.name}\n
\n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {isUserReview ? undefined :

{resources.wasReviewHelpfulText}

}\n {props.like}\n {props.dislike}\n {props.edit}\n
\n
\n
\n );\n};\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review list ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review modal ViewProps.\n * @param state - Review List State.\n * @returns JSX Element.\n */\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\n/**\n * ReviewsList view.\n * @param props - Ratings ReviewsList ViewProps.\n * @returns ReviewsList view module.\n */\nconst ReviewsListview: React.FC> = props => {\n const {\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n sortByDropdown,\n state,\n userReview,\n resources\n } = props;\n\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview, resources, true)}\n {reviewCards.map(review => {\n return buildReviewCard(review, resources, false);\n })}\n \n {!ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(props)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nexport default ReviewsListview;\n"],"names":["CountrySelector","React","constructor","props","super","isCMS","this","_updateViewport","bind","viewport","context","request","device","Type","state","isMobile","menuItemList","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","error","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","_objectSpread","imageSettings","gridSettings","Navigation","moduleProps","className","classnames","config","tag","role","countrySelectorAriaLabel","MenuList","ListItem","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","MobileDescriptionLabel","isMobileView","menuItemData","renderView","mergedData","cmsNavItems","map","push","_constructMenuItemData","cmsItem","id","CMSItemIdInit","linkText","linkURL","linkUrl","destinationUrl","imageDestinationURL","imageLink","imageSource","image","src","subMenu","_getCMSNestedChildren","category","nestedChildren","subMenus","idx","_getViewport","setState","undefined","innerWidth","sm","md","lg","__decorate","observable","computed","CountrySelectorView","currentLevel","escapeKey","_handleDropdownToggle","parentId","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_escFunction","keyCode","_closeSubmenu","categoryImageAltText","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","document","body","addEventListener","_renderMobileMenu","_renderDesktopMenu","Module","Object","assign","menuItem","_renderDrawerMenu","Node","ref","tabIndex","_renderDisplay","_renderDrawer","_renderLinkMenuItem","toggleButtonText","toggleButtonImg","Drawer","key","_renderLinkText","countrySelectorIntroText","menuSubItem","_renderDrawerLink","linkImg","alt","_renderSpanMenuItem","i","_getFromSubMenu","_createMenuItemList","forEach","index","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","levelClassName","menuOptions","option","hasOptions","haveSubmenu","_renderMenu","onFocus","imagesource","contentAction","etext","attributes","getTelemetryAttributes","currentLang","location","origin","sitePath","href","onTelemetryClick","level","currentItem","submenu","DivContainerClass","PvaChatConnector","isOboRequest","url","botFrameworkCDNURL","app","pvaChatConnectorBotFrameworkCDNURL","script","createElement","async","crossOrigin","appendChild","CartAmountTrigger","ProactiveChatTrigger","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","debug","name","cart","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","actionContext","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","product","isValid","CartLines","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","ItemId","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","Date","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","toUTCString","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","date","dateParts","split","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","trim","referrer","indexOf","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","cookies","expdate","setTime","isConsentGiven","setConsentCookie","_updateVisitCounter","proactiveOnPageVisitNumber","clear","set","domain","hostname","path","pathname","expires","PageVisits","eCommerceCustProactiveNumberOfVisits","proactiveOnPageVisitMessage","get","value","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","isNaN","waitTimeInMilliseconds","Number","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","user","userId","uuidv4","_getContext","enabled","timeout","message","_proactiveCheck","e","exception","provider","_getProvider","_this$props$context$r","eCommerceOperatingUnitNumber","apiSettings","oun","eCommerceBaseUrl","baseUrl","eCommerceDataAreaId","channel","InventLocationDataAreaId","UserId","AccountNumber","customerAccountNumber","Email","emailAddress","FirstName","firstName","anonymousUserName","LastName","lastName","Name","eCommerceCustPageURL","eCommerceCustChatType","proactiveChatEnabled","proactive","_isProactive","validate","getChatWrapperStyle","position","top","right","bottom","left","zIndex","display","justifyContent","getMaximizedChatWrapperStyle","isMobileDevice","height","width","padding","chatHeight","chatWidth","getChatButtonStyle","alignItems","backgroundColor","startChatButtonBackgroundColor","color","startChatButtonTextColor","borderColor","startChatButtonBorderColor","borderRadius","startChatButtonBorderRadius","borderStyle","startChatButtonBorderStyle","borderWidth","startChatButtonBorderWidth","storeLogoURL","cursor","outlineStyle","alignSelf","boxShadow","WebkitBoxShadow","MozBoxShadow","getButtonStoreLogoStyle","headerBackgroundColor","headerTextColor","marginRight","boxSizing","getChatStoreLogoStyle","margin","getChatMessagesStyle","minimized","getChatMessageHeader","chatHeaderHeight","backgroundImage","headerBackgroundImageURL","backgroundRepeat","flexDirection","chatBorderStyle","chatBorderWidth","getMinimizeButtonStyle","borderTop","borderLeft","borderRight","borderBottom","marginTop","getCloseButtonStyle","border","getChatMessageContent","chatBorderColor","getProactiveWrapperStyle","getProactiveMessageHeader","getProactiveMessageContent","getProactiveButtonStyle","outline","fontFormat","font","arr","join","CommerceChatStore","setNewMessage","setNewMessageAction","powervaDirectlineTokenURL","botID","tenantID","fetch","method","then","r","json","token","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","_ref","dispatch","next","action","type","payload","language","navigator","_activity$from","activity","from","triggerQuery","text","TermsAndConditionsLink","rel","CustomWebChat","_ref2","Components","WebChat","AccessKeySinkSurface","BasicToaster","BasicTranscript","termsAndConditionsLink","BasicSendBox","setUserId","useState","useMemo","ctx","toString","directLine","createDirectLine","directLineToken","commerceChatStore","store","createStore","_ref3","actionHandler","styleOptions","bubbleStyling","bubbleBackground","bubbleTextColor","bubbleBorderColor","bubbleBorderRadius","bubbleBorderStyle","bubbleBorderWidth","bubbleFromUserBackground","bubbleFromUserTextColor","bubbleFromUserBorderColor","bubbleFromUserBorderRadius","bubbleFromUserBorderStyle","bubbleFromUserBorderWidth","getBubbleStyling","avatarStyling","avatarBorderRadius","avatarSize","botAvatarBackgroundColor","botAvatarImage","botAvatarInitials","userAvatarBackgroundColor","userAvatarImage","userAvatarInitials","showAvatarInGroup","getAvatarStyling","suggestedActionStyling","suggestedActionLayout","suggestedActionBackground","suggestedActionTextColor","suggestedActionBorderColor","suggestedActionBorderRadius","suggestedActionBorderStyle","suggestedActionBorderWidth","suggestedActionDisabledBorderStyle","suggestedActionDisabledBorderWidth","suggestedActionDisabledTextColor","suggestedActionHeight","suggestedActionImageHeight","suggestedActionsCarouselFlipperCursor","suggestedActionsCarouselFlipperBoxWidth","suggestedActionsCarouselFlipperSize","suggestedActionsFlowMaxHeight","suggestedActionsStackedHeight","suggestedActionsStackedOverflow","suggestedActionsStackedLayoutButtonMaxHeight","suggestedActionsStackedLayoutButtonTextWrap","getSuggestedActionStyling","otherStyling","groupTimestamp","sendTimeout","sendTimeoutForAttachments","timestampColor","timestampFormat","notificationDebounceTimeout","hideToaster","toasterHeight","toasterMaxHeight","toasterSingularMaxHeight","toastFontSize","toastIconWidth","toastSeparatorColor","toastTextPadding","toastErrorBackgroundColor","toastErrorColor","toastInfoBackgroundColor","toastInfoColor","toastSuccessBackgroundColor","toastSuccessColor","toastWarnBackgroundColor","toastWarnColor","typingAnimationBackgroundImage","typingAnimationDuration","typingAnimationHeight","typingAnimationWidth","videoHeight","markdownExternalLinkIconImage","markdownRespectCRLF","internalLiveRegionFadeAfter","accent","subtle","getOtherStyling","hideUploadButton","primaryFont","getChatStyleOptions","Composer","userID","INVALID_TOKEN","loaded","setLoaded","setMinimized","newMessage","setToken","isProactive","setIsProactive","proactiveMessage","setProactiveMessage","closed","setClosed","setProvider","variant","VariantType","Browser","Viewport","chatStyle","getChatStyling","ChatWrapperStyle","MaximizedChatWrapperStyle","ChatButtonStyle","ButtonStoreLogoStyle","ChatStoreLogoStyle","ChatMessagesStyle","ChatMessageHeader","MinimizeButtonStyle","CloseButtonStyle","ChatMessageContent","ProactiveWrapperStyle","ProactiveMessageHeader","ProactiveMessageContent","ProactiveButtonStyle","RedDotStyle","background","handleMaximizeButtonClick","useEffect","getDirectLineToken","catch","contextProvider","ContextProvider","prov","init","isValidToken","style","fontWeight","fontSize","chatButtonHeader","chatButtonText","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","version","viewBox","xmlSpace","d","fill","ChatCore","unableToLoadChatMessage","interval","setInterval","clearInterval","Chat","convert_a2_to_a3","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","_props$context$reques","AccountLoyaltyTile","heading","description","links","description__no_decimals","tmp_account","replace","usingNewLoyalty","cardBeingGeneratedText","AddressShow","AddressDetail","items","AddressList","List","isShowList","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","title","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","_ref4","_other$moduleProps","_other$moduleProps2","_other$moduleProps3","_other$moduleProps4","_document","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","other","_objectWithoutProperties","_excluded","resources","localeString","currency","Currency","includes","hasAddressError","setHasAddressError","countriesAvail","enGB","autocomplete","select","it","enUS","eu","nativeInputValueSetter","getOwnPropertyDescriptor","HTMLInputElement","prototype","populateFormElements","addressComponent","formMap","addressType","types","getElementById","googleComponent","input","selectedValue","elmnt","is_convert_a2_to_a3","options","eValue","selectItemByValue","short_name","Event","bubbles","dispatchEvent","formValue","long_name","call","eCustom","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","setAttribute","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","addressComponents","address_components","gMapsAutocomplete","querySelectorAll","o","optionV","remove","countrySelect","querySelector","optionDEF","parentNode","disabled","Boolean","checkPhone","saveAddressButton","phone","phoneCtn","closest","phoneAlert","getElementsByClassName","pattern","pattern2","onkeyup","match","classList","add","textContent","addressPhoneRequiredErrorMessage","removeAttribute","addressForm","county","countyCtn","countyAlert","onclick","test","elements","fieldInALL","element","stopPropagation","phoneValidation","updatedCount","reload","AddressItem","label","alert","maxLength","AddressError","addressErrorMessage","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","isShowAddresList","isShowAddOrUpdateAddress","AccountPreferencesSection","accountPreferences","personalization","extraPreferences","AccountPreferenceSection","preferenceSecton","accountPreference","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","AccountProfileItem","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","innerHTML","textGenericMarketing","textProfiling","textThirdParty","bd_input","canonicalDomain","LoyaltySignUp","memberHeading","signInLink","signUpText","signUpButton","detailsLink","loading","infoMessageBar","loyalty_join_toggle_btn","loyalty_join_btn","loyalty_join_flag","query","hasJoined","joinedLoyaltyThankYouHeader","joinedLoyaltyParagraphContent","buildReviewCard","cardProps","headerProps","rating","cardBodyProps","reviewProps","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","edit","createReviewModal","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","_props$data$ratingsSu","_props$resources$prod","_props$resources$revi","noReviewsWithFilterMessage","pageControls","reportReviewModal","reviewCards","reviewModal","userReview","modalOpen","setModalOpen","_toggleReviewModal","overflowY","buttonLabel","ratingsSummary","result","averageRating","product_review_list_button_label","reviewListLabel","page_summary","modal_summary","isFilterApplied","review","SignInLoading","icon","_props$resources$cont","_props$resources$cont2","signIn","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signUpSectionHeading","signUpDescription","signUpLink","requestUrl","signinVclubLoginButtonText","handleGaGuestCheckout","_window$dataLayer","_window$dataLayer$pus","dataLayer","handleGaSignUp","_window$dataLayer2","_window$dataLayer2$pu","isShowLoading","registerButtonLink","vclubButtonLink","localAccount","forgetPassword","disclaimer","signInButton","wrapper","LocalAccount","signinVclubTitle","signinVclubText","continueAsGuest","modalToggle","isAuthenticated","signInLabel","reviewButtonLabel","AccordionItem","moduleClassName","handleHeadingChange","accordionItemTitle","_onToggle","shouldComponentUpdate","nextProps","slots","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","ControlledDrawer","collapseProps","isOpen","onToggle","onTextChange","requestContext","accordionSlots","interactionStyle","accordionState","update","createAccordionStateInput","observer","_renderAccordionItemContent","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","Msdyn365","editProps","onEdit","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","TelemetryConstant","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","toggleAllSeparator","collapseAllText","_this$collapseAllButt","_this$expandAllButton","AadGeneric","$i2e","$element","insertServiceContent","getElementContent","initialize","aadGeneric","aadAPIConainer","AccountInvoiceTileDescription","_mapEditableLinks","linkdata","editableLinks","link","editableLink","ariaLabel","openInNewTab","additionalProperties","AccountInvoiceTile","handleLinkTextChange","linkIndex","_data$customerBalance","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","toFixed","format","LinksComponent","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","customerInformation","IsB2bAdmin","noclick","attribute","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","NameTranslations","Url","_nameTranslation","ArrayExtensions","hasElements","_getPDPLinks","categoryPaths","hideProductName","_goBack","history","back","_getPDPBackButton","MsDyn365","isBrowser","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","CatalogPicker","handleTextChange","handleParagraphChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogs","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","RecordId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","getUrlSync","fullUrl","URL","searchParams","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","String","firstOrDefault","Images","Image","generateImageUrl","Uri","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","isModalOpen","_handleStayOnSiteButtonClick","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","isCookieValueSet","subheading","countryList","actionLink","countryPickerHeading","countryPickerSubHeading","countryPickerActionLink","createLink","currentSiteButton","stayOnCurrentSiteButtonText","viewprops","modalContainer","Modal","toggle","modalTransition","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","renderCountryList","stayOnCurrentSiteButton","_this$props$config$ac","StringExtensions","isNullOrEmpty","_link$linkText","localeItems","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","imageSize","imageProps","displayString","shouldSkipToMainImage","displaySubString","countryPickerView","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","_renderFindInStore","findInStore","storeSelector","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","applyDefaultOrderSettings","quantity","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","BackTopFooter","backtoTopText","destination","BackToTop","FooterCategory","categories","FooterList","FooterListItem","FooterCategoryView","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","ariaHiddenAttr","FooterItemView","_renderElement","ImageList","images","_renderImageListItems","imageList","disableLazyLoad","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","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","vertical","createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","_this$props$config$li","featureItemLinks","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","Map","mapRef","_initMap","_data$storeSelectorSt","_data$distributorSele","storeSelectorStateManager","isMapApiLoaded","distributorSelectorStateManager","Microsoft","Maps","credentials","BingMapsApiKey","pushpinAccessible","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","pushpins","filter","distributor","OrgUnit","distributorInfo","entries","orgUnit","Latitude","Longitude","isLocationSelected","_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","recordId","_this$props$data$dist2","showIndex","size","selectionColor","_getSvgIcon","_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","MapProps","MapHeader","componentClassName","buttonClassName","buttonActiveClassName","buttonInactiveClassName","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent","msdyn365Commerce","createComponent","component","_props$resources$curr","_props$resources","_props$resources$curr2","_props$resources2","_props$resources$curr3","_props$resources3","_props$resources4","_props$resources$curr4","_props$resources5","_props$resources6","_props$resources7","_props$resources$orga","_props$resources8","_props$resources9","_props$resources$orga2","_props$resources10","_props$resources11","_props$resources12","customer","selectorState","setSelectorState","currentSelectorState","onClickHandler","newSelectorState","currentUserOrderHistoryAttributes","currentUserOptionLabel","orgWideOrderHistoryAttributes","CurrentUser","currentUserOptionAriaLabel","OrganizationWide","organizationWideOptionAriaLabel","organizationWideOptionLabel","SitePicker","_cookieName","_cookieExpirationInSeconds","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","_document2","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","openGlyph","closeGlyph","glyphPlacement","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","preventDefault","currentTarget","cookieConfig","siteOptions","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","_renderSitePicker","_renderSiteOptionsList","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","SocialShare","socialShareItems","params","isEditor","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","SocialShareView","SocialShareElement","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","status","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","children","isUserReview","reviewTitle","wasReviewHelpfulText","like","dislike","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","cropFocalRegion","renderProductImage","filterByDropdown","noReviewsMessage","refineReviewsProps","reviewsListProps","sortByDropdown","selectRatingLabel","reviewTitleLabel","reviewTextLabel"],"sourceRoot":""}