{"version":3,"file":"static/js/9.15882fa066480f7cf040.chunk.js","mappings":"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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/views/account-profile.view.tsx?555a","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/account-customer-balance/account-customer-balance.view.tsx?70d2","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/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/fabrikam/views/buybox.view.tsx?aec4","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/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/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","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/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","/*---------------------------------------------------------------------------------------------\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 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. 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 { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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 { 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\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, isOboRequest, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IInvoiceErrorState, IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n xl: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.ProductId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IInvoiceErrorState, InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n errorState?: IInvoiceErrorState;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = { errorState: { errorMessage: '', otherError: '' } };\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false,\n errorState: { errorMessage: '', otherError: '' }\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.ProductId)\n .map(\n product =>\n new ProductInput(\n product.ProductId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n\n // check for errorcode and otherError which contains the LocalizedMessage from API\n if (\n errorState &&\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineAlreadyExistsInCart' &&\n errorState.otherError\n ) {\n this.setState({ errorState: errorState });\n }\n\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\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 { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IInvoiceErrorProps extends IComponentProps {\n messageHeader?: string;\n errorMessage?: string;\n otherError?: string;\n showError: boolean;\n payInvoiceErrorModalOpen: boolean;\n\n errorDialogHeader: string;\n errorDialogBodyErrorTitle: string;\n errorDialogBodyErrorDescription: string;\n errorDialogFooterGoToCartButtonText: string;\n errorDialogFooterCancelButtonText: string;\n cartUrl: string;\n\n setPayInvoiceErrorModalClose(): void;\n}\n\nexport interface IInvoiceErrorComponent extends IComponent {}\n\nexport const InvoiceError: React.FC = ({\n messageHeader,\n errorMessage,\n otherError,\n showError,\n payInvoiceErrorModalOpen,\n errorDialogHeader,\n errorDialogBodyErrorTitle,\n errorDialogBodyErrorDescription,\n errorDialogFooterGoToCartButtonText,\n errorDialogFooterCancelButtonText,\n cartUrl,\n setPayInvoiceErrorModalClose\n}) => {\n const errorMessages: (string | undefined)[] = [];\n\n if (otherError) {\n errorMessages.push(otherError);\n } else {\n errorMessages.push(errorMessage);\n }\n\n const className = 'msc-pay-invoice-error-dialog';\n\n return (\n <>\n 0} color='danger' assertive aria-label={messageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
\n {message}\n
\n );\n })}\n
\n \n \n {errorDialogHeader}\n \n \n
\n
{errorDialogBodyErrorTitle}
\n
{errorDialogBodyErrorDescription}
\n
\n
\n \n \n {errorDialogFooterGoToCartButtonText}\n \n \n {errorDialogFooterCancelButtonText}\n \n \n
\n \n );\n};\n\n// @ts-expect-error\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'InvoiceError',\n { component: InvoiceError }\n);\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 { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\n\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\n invoicesFilterShowAll: string;\n}\n\nexport interface IInvoicesFilterProps extends IComponentProps {\n className: string;\n disabled: boolean;\n\n resources: IInvoicesFilterResources;\n\n currentState: InvoicesFilterState;\n onFilterStateChanged(state: InvoicesFilterState): void;\n}\n\nexport enum InvoicesFilterState {\n ShowAll,\n Paid,\n PartiallyPaid,\n Unpaid\n}\n\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\n switch (filterState) {\n case InvoicesFilterState.ShowAll:\n return resources.invoicesFilterShowAll;\n case InvoicesFilterState.Paid:\n return resources.invoiceStatusPaid;\n case InvoicesFilterState.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n case InvoicesFilterState.Unpaid:\n return resources.invoiceStatusUnpaid;\n default:\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\n }\n};\n\n/**\n * On Click function.\n * @param onStateClick -Invoice filter state function.\n * @param filterState -Invoice filter state.\n * @returns Set Invoice filter state.\n */\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\n onStateClick(filterState);\n};\n\nconst renderFilterStateItem = (\n filterState: InvoicesFilterState,\n resources: IInvoicesFilterResources,\n className: string,\n onStateClick: (filterState: InvoicesFilterState) => void\n): React.ReactNode => {\n const stateStringRepresentation = InvoicesFilterState[filterState];\n\n return (\n \n );\n};\n\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\n const popoverRef = React.createRef();\n const [popoverState, setPopoverState] = React.useState(false);\n const togglePopover = React.useCallback(() => {\n setPopoverState(!popoverState);\n }, [popoverState]);\n\n const [filterState, setFilterState] = React.useState(props.currentState);\n\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\n setFilterState(clickedState);\n setPopoverState(false);\n props.onFilterStateChanged(clickedState);\n };\n\n return (\n
\n \n {getInvoicesFilterStateResources(filterState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\n })}\n \n
\n );\n};\n\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesFilterProps\n>('InvoicesFilterComponent', { component: InvoicesFilter });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\nexport interface IInvoicesTableHeaderResources {\n invoicesText: string;\n invoiceNumberText: string;\n invoiceDateMobileText: string;\n invoiceDateText: string;\n invoiceUsersText: string;\n invoiceAmountText: string;\n invoiceDueDateText: string;\n invoiceAmountDueText: string;\n invoiceStatusText: string;\n invoiceActionsText: string;\n invoiceListSelectAllRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isSelectedAll: boolean;\n isMobile: boolean;\n isAdmin: boolean;\n\n resources: IInvoicesTableHeaderResources;\n\n onSelectAll(isSelected: boolean): void;\n}\n\nexport interface IInvoicesTableHeaderComponent extends IComponent {}\n\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoiceNumberText}\n {resources.invoiceDateText}\n {resources.invoiceUsersText}\n {resources.invoiceAmountText}\n {resources.invoiceDueDateText}\n {resources.invoiceAmountDueText}\n {resources.invoiceStatusText}\n {resources.invoiceActionsText}\n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoicesText}\n {resources.invoiceDateMobileText}\n \n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject\n) => () => {\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n \n {formatDate(props.context, invoice.dueDate)}\n \n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n \n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n return (\n
\n \n {showActions && !isOnBehalfOfRequest && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n \n \n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../helpers/invoice-data';\nimport { IInvoiceErrorState } from '../../invoices-list';\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\n\ninterface IInvoicesTableData {\n invoices: InvoiceModel[];\n customer: Customer;\n}\n\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {}\n\nexport interface IInvoicesTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n invoiceButtonReferences?: React.RefObject[];\n payInvoiceButtonReferences?: React.RefObject[];\n resources: IInvoicesTableResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableComponent extends IComponent {}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst getViewport = (context: ICoreContext): GridSize => {\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (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\n return 'xs';\n};\n\nconst isMobileView = (context: ICoreContext) => {\n const viewport = getViewport(context);\n return viewport === 'xs' || viewport === 'sm';\n};\n\n/**\n * On select all function.\n * @param props -Invoice table props.\n * @returns On change.\n */\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\n props.data.invoices.forEach(invoice => {\n invoice.isSelected = isSelected;\n });\n props.onChange();\n};\n\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\n\n const updateViewport = () => {\n setIsMobile(isMobileView(props.context));\n };\n\n if (typeof window !== undefined && window.addEventListener) {\n window.addEventListener('resize', updateViewport);\n }\n const rowClassName = `${props.className}__row`;\n const headerClassName = `${props.className}__header`;\n\n return (\n \n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n const hasInvoices = ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\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 { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, isOboRequest } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isOpen: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\n@observer\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n private invoiceIds: string[] = [];\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isOpen: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className = '', heading },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n
{invoicesListDescTitle}
\n
{amountText}
\n
{countText}
\n
\n
\n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n\n reaction(\n () => this.state.isInvoiceRequestModalOpen,\n async () => {\n if (this.invoiceIds && !this.state.isInvoiceRequestModalOpen) {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n for (const invoiceId of this.invoiceIds) {\n await BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(\n context,\n b2bUserId,\n invoiceId,\n BusinessPartnerOperationDeliveryType.Email\n );\n }\n this.invoiceIds = [];\n }\n }\n );\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\n {this._renderInvoiceRequestButton()}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner?.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer?.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerContentClass = `${containerClass}__content`;\n const filterClassName = `${className}__filter`;\n return (\n
\n
{this._renderInvoiceInCartPaymentMessage()}
\n \n
\n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string, disabled: boolean): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderInvoiceInCartPaymentMessage(): JSX.Element {\n const cart = this.props.data.cart?.result;\n\n if (!cart?.hasInvoiceLine) {\n return <>;\n }\n\n return (\n \n \n \n );\n }\n\n // Dismiss alert.\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n this.invoiceIds.push(invoiceId);\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\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 { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\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 { 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","AccountPreferencesSection","accountPreferences","heading","personalization","extraPreferences","AccountPreferenceSection","preferenceSecton","accountPreference","description","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","AccountProfileItem","links","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","getElementsByClassName","innerHTML","textGenericMarketing","textProfiling","textThirdParty","bd_input","canonicalDomain","setAttribute","createReviewModal","modal","modalHeader","modalBody","form","inputRow","rating","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","signInButton","modalToggle","reviewModal","isAuthenticated","resources","signInLabel","reviewButtonLabel","AccordionItem","moduleClassName","handleHeadingChange","accordionItemTitle","_onToggle","shouldComponentUpdate","nextProps","slots","accordionExpandedStateResult","accordionExpandedState","result","expanded","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","ControlledDrawer","collapseProps","isOpen","onToggle","onTextChange","requestContext","accordionSlots","interactionStyle","accordionState","update","createAccordionStateInput","observer","_renderAccordionItemContent","items","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","disabled","expandAllText","toggleAllSeparator","collapseAllText","_this$collapseAllButt","_this$expandAllButton","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","AccountInvoiceTileDescription","_mapEditableLinks","linkdata","editableLinks","link","editableLink","ariaLabel","openInNewTab","additionalProperties","AccountInvoiceTile","handleLinkTextChange","linkIndex","_data$customerBalance","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","toFixed","format","LinksComponent","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","requestUrl","hideProductName","_goBack","history","back","_getPDPBackButton","query","MsDyn365","isBrowser","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","applyDefaultOrderSettings","quantity","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","title","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","FooterItem","handleTextChange","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","ariaHiddenAttr","loadFailureBehavior","shouldSkipToMainImage","FooterItemView","_renderElement","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","_telemetryContent","handleParagraphChange","paragraph","_this$props$config$li","indexItem","itemCounter","isMosaic","featureItemLinks","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","_heading$tag","StringExtensions","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","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","replace","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","invoiceDate","formatDate","year","month","day","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","amountDue","PayInvoiceComponent","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","label","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","RecordId","_renderProductImage","_context$request$app","cropFocalRegion","fallbackImage","getFallbackImageUrl","OmniChannelMedia","Image","altText","primaryImageUrl","fallBackSrc","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","products","Id","InvoiceDate","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","CurrencyCode","InvoicePaidStatus","Paid","InvoiceDetails","errorState","errorMessage","otherError","_onAddToCartFailed","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","arguments","productInputs","filter","ProductInput","getSimpleProductsAction","newErrorState","errorHost","errorCode","_this$state$errorStat","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","errorMessages","Alert","assertive","Modal","toggle","ModalHeader","ModalBody","ModalFooter","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","setShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","isSelected","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","customer","isCurrentUser","invoiceCurrentUser","_window","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","headerClassName","all","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","_event","setDisabled","payInvoices","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","_focusElement$current","searchEntered","searchEnteredHandler","updatedInvoices","isNullOrEmpty","toLocaleUpperCase","includes","searchResultString","invoicesFoundReplaceIndex","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onDismiss","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","nextState","_customerBalance$resu","_customerBalance$resu2","_heading$text","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","Heading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","reaction","_this$props$data$b2bU","callerContext","b2bUserId","b2bUserInformation","B2BUserId","invoiceId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","_renderInvoiceInCartPaymentMessage","tableClassName","_newErrorState$errorR","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleTypeName","navigationUrl","_this$state$selectedB","invoiceErrorMessageHeader","_this$props$data$cart","hasInvoiceLine","invoiceInCartPaymentMessage","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","_this$state$selectedB2","specificInvoice","InvoiceListView","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","distributor","OrgUnit","distributorInfo","entries","orgUnit","Latitude","Longitude","isLocationSelected","options","_getPushpinOptions","pushpin","Pushpin","Location","handleDistributorPushpinClick","unshift","currentLocation","setView","center","_Microsoft$Maps$Locat","bounds","LocationRect","fromShapes","setOptions","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","storeLocationList","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","recordId","_this$props$data$dist2","showIndex","size","selectionColor","icon","_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","_this$props$data$stor5","_this$props$data$dist7","loadMapApi","_this$props$data$dist8","_this$props$data$dist9","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$dist10","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$dist11","_this$props$data$dist12","_data$storeSelectorSt3","_data$storeSelectorSt4","_data$distributorSele5","_data$distributorSele6","shouldDisplayMap","isDialogOpen","listMapViewState","displayMap","classname","show","Header","headerProps","MapProps","MapHeader","componentClassName","buttonClassName","buttonActiveClassName","buttonInactiveClassName","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent","_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","selectorState","setSelectorState","currentSelectorState","newSelectorState","currentUserOrderHistoryAttributes","currentUserOptionLabel","orgWideOrderHistoryAttributes","CurrentUser","currentUserOptionAriaLabel","OrganizationWide","organizationWideOptionAriaLabel","organizationWideOptionLabel","buildReviewCard","isUserReview","cardProps","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","wasReviewHelpfulText","like","dislike","edit","renderProductDescription","_props$data$product$r","primaryImageSource","imageUrl","generateImageUrl","renderProductImage","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","isFilterApplied","review","selectRatingLabel","reviewTitleLabel","reviewTextLabel","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton"],"sourceRoot":""}