{"version":3,"file":"static/js/11.8843a611cf8f50697ae0.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://nile.commerce.online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://nile.commerce.online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://nile.commerce.online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://nile.commerce.online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.tsx?797a","webpack://nile.commerce.online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://nile.commerce.online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://nile.commerce.online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://nile.commerce.online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://nile.commerce.online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://nile.commerce.online/./src/modules/iframe/iframe.tsx?65fe","webpack://nile.commerce.online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://nile.commerce.online/./src/modules/eve-site-picker/eve-site-picker.tsx?c378","webpack://nile.commerce.online/./src/modules/nile-subscribe/nile-subscribe.tsx?3793","webpack://nile.commerce.online/./src/modules/eve-site-picker/eve-site-picker.view.tsx?e215","webpack://nile.commerce.online/./src/modules/nile-subscribe/nile-subscribe.view.tsx?a2d9","webpack://nile.commerce.online/./src/themes/nile-theme/views/cart.view.tsx?3584","webpack://nile.commerce.online/./src/themes/nile-theme/views/media-gallery.view.tsx?ccfc","webpack://nile.commerce.online/./src/themes/nile-theme/views/navigation-menu.view.tsx?5abc","webpack://nile.commerce.online/./src/themes/nile-theme/views/order-confirmation.view.tsx?9b48","webpack://nile.commerce.online/./src/themes/nile-theme/views/order-history.view.tsx?d07b","webpack://nile.commerce.online/./src/themes/nile-theme/views/reviews-list.view.tsx?1c4e","webpack://nile.commerce.online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/rng.js?7d39","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/regex.js?255d","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/validate.js?f4cd","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/stringify.js?688d","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/v4.js?0bec","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/proactive-chat-trigger.ts?ab51","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-amount-trigger.ts?b0a3","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-number-of-items-trigger.ts?5c1e","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-specific-product-trigger.ts?5985","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/helpers/consts.ts?4dc3","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/date-range-trigger.ts?d574","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/from-specific-page-trigger.ts?37c0","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/page-visits-trigger.ts?66a6","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-CountryRegion-trigger.ts?5c72","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-page-trigger.ts?9295","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/wait-on-time-trigger.ts?63fd","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/proactive/index.ts?ef6c","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/helpers/ContextProvider.ts?20ff","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/helpers/StyleComposers.ts?0cc6","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/helpers/CommerceChatStore.ts?9abc","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/components/ChatCore.tsx?1b5f","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/components/Chat.tsx?5004","webpack://nile.commerce.online/./src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.view.tsx?cb2f","webpack://nile.commerce.online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://nile.commerce.online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://nile.commerce.online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://nile.commerce.online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://nile.commerce.online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://nile.commerce.online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://nile.commerce.online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://nile.commerce.online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://nile.commerce.online/./src/modules/adventureworks/views/write-review.view.tsx?c67c","webpack://nile.commerce.online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): 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, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\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 handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\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 { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): 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, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { isOboRequest } from '@msdyn365-commerce/core-internal';\nimport { IMsdyn365PvaChatConnectorData } from './msdyn365-pva-chat-connector.data';\nimport { IMsdyn365PvaChatConnectorConfig, IMsdyn365PvaChatConnectorProps } from './msdyn365-pva-chat-connector.props.autogenerated';\n\nexport interface IPvaChatConnectorViewProps extends IMsdyn365PvaChatConnectorProps {\n config: IMsdyn365PvaChatConnectorConfig;\n}\n\n/**\n * PvaChatConnector component\n * @extends {React.PureComponent>}\n */\nclass PvaChatConnector extends React.PureComponent> {\n // Loads CDN version of Botframework-Webchat library\n public componentDidMount(): void {\n if (isOboRequest(this.props.context.request)) {\n return;\n }\n\n const url = this.props.config.botFrameworkCDNURL || this.props.context.app.config.pvaChatConnectorBotFrameworkCDNURL;\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.crossOrigin = 'anonymous';\n document.body.appendChild(script);\n }\n\n public render(): JSX.Element | null {\n if (isOboRequest(this.props.context.request)) {\n return null;\n }\n\n return this.props.renderView(this.props);\n }\n}\n\nexport default PvaChatConnector;\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 IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\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: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\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 { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\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 constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
    {error}
    ;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link 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.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\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 private _renderAlert(message: string): React.ReactNode | null {\n return (\n

    \n {message}\n

    \n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\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 MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport React from 'react';\r\n\r\nimport { IEveSitePickerConfig, IEveSitePickerProps } from './eve-site-picker.props.autogenerated';\r\n\r\nexport interface ISitePickerViewProps extends IEveSitePickerProps {\r\n SitePicker: IModuleProps;\r\n SitePickerMenu: INodeProps;\r\n SitePickerMenuSpan: INodeProps;\r\n SitePickerMenuList: INodeProps;\r\n SitePickerMenuListItem: INodeProps;\r\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\r\n siteOptionsState: boolean;\r\n SitePickerMobileContainer: INodeProps;\r\n isMobileView: boolean;\r\n renderSiteOptions(): void;\r\n resetSiteOptionsState(): void;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\ninterface ISitePickerState {\r\n expandSiteOptions: boolean;\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * SitePicker component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass SitePicker extends React.PureComponent, ISitePickerState> {\r\n private readonly _cookieName: string = '_msdyn365___site_';\r\n\r\n //private readonly _cookieExpirationInSeconds: number = 5650000;\r\n\r\n private readonly _sitePickerMenuNode: React.RefObject;\r\n\r\n private readonly _sitePickerMenuButton: React.RefObject;\r\n\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n @observable\r\n private viewport: GridSize;\r\n\r\n public constructor(props: ISitePickerViewProps) {\r\n super(props);\r\n this._handleChange = this._handleChange.bind(this);\r\n this._sitePickerMenuNode = React.createRef();\r\n this._sitePickerMenuButton = React.createRef();\r\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\r\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\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 = {\r\n expandSiteOptions: false,\r\n isMobile: this.isMobile\r\n };\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 if (MsDyn365.isBrowser) {\r\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ISitePickerViewProps = {\r\n ...(this.props as IEveSitePickerProps),\r\n SitePicker: {\r\n moduleProps: this.props,\r\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\r\n tag: 'div'\r\n },\r\n SitePickerMenu: {\r\n tag: 'button' as NodeTag,\r\n className: 'ms-site-picker__button',\r\n 'aria-label': this.props.config.heading?.text,\r\n 'aria-expanded': this.state.expandSiteOptions,\r\n onClick: this.props,\r\n ref: this._sitePickerMenuButton\r\n },\r\n SitePickerMenuSpan: {\r\n className: 'ms-site-picker__span',\r\n tag: 'span'\r\n },\r\n SitePickerMenuList: {\r\n className: 'ms-site-picker__list',\r\n role: 'menu',\r\n tag: 'ul',\r\n ref: this._sitePickerMenuNode\r\n },\r\n SitePickerMenuListItem: {\r\n className: 'ms-site-picker__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n SitePickerMobileContainer: {\r\n tag: Drawer,\r\n className: 'ms-site-picker__drawer',\r\n toggleButtonText: this.props.config.heading?.text,\r\n openGlyph: 'ms-site-picker__drawer-open',\r\n closeGlyph: 'ms-site-picker__drawer-close',\r\n glyphPlacement: 'end'\r\n },\r\n isMobileView: this.state.isMobile,\r\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\r\n renderSiteOptions: this._renderSiteOptions,\r\n resetSiteOptionsState: this._resetSiteOptionsState,\r\n siteOptionsState: this.state.expandSiteOptions\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _renderSiteOptions(): void {\r\n const expandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !expandSiteOptionsState\r\n });\r\n }\r\n\r\n private _resetSiteOptionsState(): void {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _escFunction = (event: any) => {\r\n const key = event.keyCode;\r\n if (this.state.expandSiteOptions) {\r\n switch (key) {\r\n case KeyCodes.Escape: {\r\n setTimeout(() => {\r\n const nextFocus = document && document.activeElement;\r\n if (\r\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\r\n this._sitePickerMenuNode?.current?.contains(nextFocus)\r\n ) {\r\n this._resetSiteOptionsState();\r\n this._sitePickerMenuButton?.current?.focus();\r\n }\r\n }, 50);\r\n break;\r\n }\r\n case KeyCodes.Tab: {\r\n setTimeout(() => {\r\n const nextFocus = document && document.activeElement;\r\n if (\r\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\r\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\r\n ) {\r\n this._resetSiteOptionsState();\r\n }\r\n }, 50);\r\n break;\r\n }\r\n default:\r\n return;\r\n }\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _handleOutsideClick = (event: any) => {\r\n if (\r\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\r\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\r\n ) {\r\n return;\r\n }\r\n this._resetSiteOptionsState();\r\n };\r\n\r\n private _handleChange(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\r\n if (this.props.context.request.cookies.isConsentGiven()) {\r\n const cookieConfig = { maxAge: this.props.config.cookieLifetime };\r\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\r\n }\r\n const goToString =\r\n this._stripTrailingSlashes(\r\n `${e.currentTarget.href}${this.stripLocale(this.props.context.request.url.requestUrl.pathname.toString())}`\r\n ) + this.props.context.request.url.requestUrl.search ?? '';\r\n window.location.assign(goToString);\r\n }\r\n }\r\n\r\n private _stripTrailingSlashes(path: string): string {\r\n return path.replace(/\\/+$/, '');\r\n }\r\n\r\n private stripLocale(input: string): string {\r\n var result = input;\r\n if (input.includes('/eu-en') || input.includes('/fr-ch')) {\r\n result = input.slice(6);\r\n } else if (input.includes('/en') || input.includes('/eu') || input.includes('/fr')) {\r\n result = input.slice(3);\r\n } else if (input.length > 0) {\r\n result = input.slice(0);\r\n }\r\n return result;\r\n }\r\n\r\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\r\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\r\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\r\n\r\n return (\r\n siteOptions &&\r\n siteOptions.map((item, index) => {\r\n const image = item?.siteImage;\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings!,\r\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\r\n };\r\n return (\r\n \r\n {item?.siteName}\r\n \r\n \r\n );\r\n })\r\n );\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 if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\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 }\r\n return 'xl';\r\n }\r\n }\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default SitePicker;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { INileSubscribeConfig, INileSubscribeProps } from './nile-subscribe.props.autogenerated';\r\nimport { subscribeToMailChimpAsync } from '../../actions/DataActionExtension.g';\r\nimport { Alert } from 'reactstrap';\r\n\r\ninterface ISubscribeState {\r\n showResponseMessage: boolean;\r\n isError: boolean;\r\n inputValue: string;\r\n}\r\n\r\n/**\r\n * Subscribe view props.\r\n */\r\nexport interface ISubscribeViewProps extends INileSubscribeProps {\r\n subscribe: IModuleProps;\r\n subscribeContainer: INodeProps;\r\n heading: React.ReactNode;\r\n text: React.ReactNode;\r\n submitButton?: INodeProps;\r\n submitButtonLabelText?: string;\r\n subscribeForm?: INodeProps;\r\n emailInput?: INodeProps;\r\n handleText(): void;\r\n handleSubscribe(): void;\r\n responseMessage: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Subscribe component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class Subscribe extends React.PureComponent, ISubscribeState> {\r\n private readonly _emailAddressInputRef: React.RefObject;\r\n\r\n public constructor(props: ISubscribeViewProps) {\r\n super(props);\r\n const {\r\n context: {\r\n request: {\r\n user: { emailAddress }\r\n }\r\n }\r\n } = props;\r\n this._emailAddressInputRef = React.createRef();\r\n\r\n this.state = {\r\n showResponseMessage: false,\r\n isError: false,\r\n inputValue: emailAddress || ''\r\n };\r\n this.hideResponseMessage = this.hideResponseMessage.bind(this);\r\n }\r\n\r\n private hideResponseMessage() {\r\n this.setState({ showResponseMessage: false });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph } = this.props.config;\r\n\r\n const moduleClassName = 'ms-subscribe';\r\n\r\n const doSubscribe = async () => {\r\n const {\r\n context: { actionContext },\r\n config: { useDoubleOptIn, audience }\r\n } = this.props;\r\n const { inputValue } = this.state;\r\n if (inputValue) {\r\n try {\r\n const response = await subscribeToMailChimpAsync(\r\n { callerContext: actionContext },\r\n inputValue,\r\n useDoubleOptIn ?? false,\r\n audience\r\n );\r\n this.setState({\r\n showResponseMessage: true,\r\n isError: !response.Status\r\n });\r\n } catch (exception) {\r\n this.setState({\r\n showResponseMessage: true,\r\n isError: true\r\n });\r\n }\r\n }\r\n };\r\n\r\n const renderSubscriptionResultMessage = () => {\r\n const { showResponseMessage, isError } = this.state;\r\n const {\r\n config: { useDoubleOptIn },\r\n resources: { subscriptionSuccessMessage, subscriptionOptInMessage, subscriptionFailMessage }\r\n } = this.props;\r\n if (!showResponseMessage) {\r\n return null;\r\n }\r\n if (isError) {\r\n return {subscriptionFailMessage};\r\n } else if (useDoubleOptIn) {\r\n return {subscriptionOptInMessage};\r\n } else {\r\n return {subscriptionSuccessMessage};\r\n }\r\n };\r\n\r\n const renderSubscriptionResultAlert = () => {\r\n const { showResponseMessage, isError } = this.state;\r\n\r\n return (\r\n \r\n {renderSubscriptionResultMessage()}\r\n \r\n );\r\n };\r\n\r\n const handleInputValueChange = (e: React.ChangeEvent) => {\r\n this.setState({ inputValue: e.target.value });\r\n };\r\n\r\n const subscribeParagraph = paragraph && (\r\n \r\n );\r\n\r\n const subscribeHeading = heading && (\r\n \r\n );\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleTextChange,\r\n handleSubscribe: doSubscribe,\r\n subscribe: {\r\n moduleProps: this.props,\r\n className: moduleClassName\r\n },\r\n subscribeContainer: {\r\n className: 'ms-subscribe__details'\r\n },\r\n heading: subscribeHeading,\r\n text: subscribeParagraph,\r\n subscribeForm: {\r\n className: 'ms-subscribe__details__form',\r\n tag: 'form',\r\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\r\n name: 'subscribeForm',\r\n role: 'form',\r\n autoComplete: 'off',\r\n onSubmit: doSubscribe\r\n },\r\n emailInput: {\r\n className: 'ms-subscribe__details__form__email',\r\n tag: 'input',\r\n ref: this._emailAddressInputRef,\r\n type: 'email',\r\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\r\n placeholder: this.props.resources.subscribeEmailPlaceholderText,\r\n value: this.state.inputValue,\r\n onChange: handleInputValueChange\r\n },\r\n submitButton: {\r\n className: 'ms-subscribe__details__form__submit',\r\n tag: Button,\r\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\r\n type: 'submit',\r\n title: this.props.resources.subscribeButtonLabel\r\n },\r\n submitButtonLabelText: this.props.resources.subscribeButtonLabel,\r\n responseMessage: renderSubscriptionResultAlert(),\r\n inputValue: this.state.inputValue\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n /**\r\n * Handle text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n}\r\n\r\nexport default Subscribe;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISitePickerViewProps } from './eve-site-picker';\r\n\r\nexport default (props: ISitePickerViewProps) => {\r\n return <>{_renderSitePicker(props)};\r\n};\r\n\r\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\r\n const { SitePickerMenu, SitePickerMenuSpan } = props;\r\n return (\r\n <>\r\n \r\n {props.config.heading?.text}\r\n \r\n \r\n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\r\n \r\n );\r\n};\r\n\r\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\r\n const options = SitePickerMenuListItemArray!.map((item, index) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n });\r\n return (\r\n \r\n {options}\r\n \r\n );\r\n};\r\n\r\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { SitePickerMobileContainer } = props;\r\n return (\r\n \r\n
    \r\n {props.SitePickerMenuListItemArray?.map((item, index) => {\r\n return
    {item}
    ;\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { isMobileView, SitePicker } = props;\r\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISubscribeViewProps } from './nile-subscribe';\r\n\r\n/**\r\n * View component.\r\n * @param props - The view properties.\r\n * @returns - Returns nothing.\r\n */\r\nexport const subscribeView: React.FC = props => {\r\n const {\r\n subscribe,\r\n subscribeContainer,\r\n heading,\r\n text,\r\n subscribeForm,\r\n emailInput,\r\n submitButton,\r\n handleSubscribe,\r\n responseMessage\r\n } = props;\r\n\r\n /**\r\n * Override form action and button action below.\r\n * @param event - The form event.\r\n */\r\n const onSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault();\r\n handleSubscribe();\r\n };\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {text}\r\n \r\n \r\n \r\n {props.submitButtonLabelText}\r\n \r\n \r\n \r\n {responseMessage}\r\n \r\n );\r\n};\r\n\r\nexport default subscribeView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ICartlinesViewProps, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n Node,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICartProps as ICartExtentionProps, ICartResources } from '../definition-extensions/cart.ext.props.autogenerated';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst CartView: React.FC> = props => {\r\n const [checkoutChanged, setCheckoutChanged] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!checkoutChanged) {\r\n const doc = document.getElementsByClassName('msc-cart__btn-checkout msc-btn');\r\n if (doc.length > 0) {\r\n if (!props.context.actionContext.requestContext.user.isAuthenticated) {\r\n doc[0].innerHTML = props.resources.loggedOutCheckoutButtonText;\r\n }\r\n setCheckoutChanged(true);\r\n }\r\n }\r\n });\r\n\r\n return (\r\n
    \r\n {props.title}\r\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n _renderCartLinesGroup(props, props.resources)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult,\r\n props.telemetryContent,\r\n props.multiplePickUpEnabled,\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
    \r\n );\r\n};\r\n\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean,\r\n telemetryContent?: ITelemetryContent,\r\n mulitplePickUp?: boolean,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element[] | JSX.Element => {\r\n const { emptyCartText } = resources;\r\n\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n const header_content = (\r\n
    \r\n
    {resources.productHeading}
    \r\n
    {resources.quantityHeading}
    \r\n
    {resources.priceHeading}
    \r\n
    \r\n );\r\n const cart_line = cartLines.map((cartLine, index) => {\r\n return (\r\n
    \r\n {cartLine.cartline}\r\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {mulitplePickUp ? (\r\n \r\n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n ) : cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n ) : (\r\n <>\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n )}\r\n
    \r\n );\r\n });\r\n return (\r\n <>\r\n {header_content}\r\n {cart_line}\r\n \r\n );\r\n }\r\n return cartDataResult ? (\r\n
    \r\n

    {emptyCartText}

    \r\n {backToShoppingButton}\r\n
    \r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * On Toggle function.\r\n * @param cartLine -Cartline.\r\n * @param isBopisSelected -Boolean.\r\n * @returns Set state of button.\r\n */\r\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\r\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\r\n};\r\n\r\n/**\r\n * On change store function.\r\n * @param cartLine -CartLine items prop.\r\n * @returns Set state of button.\r\n */\r\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\r\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\r\n};\r\n\r\nconst _renderBOPISBlock = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for BOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const {\r\n shipInsteadDisplayText,\r\n shipToAddressDisplayText,\r\n pickItUpDisplayText,\r\n pickUpAtStoreWithLocationText,\r\n changeStoreDisplayText\r\n } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n
    \r\n {isBopisSelected ? (\r\n {pickUpAtStoreWithLocationText}\r\n ) : (\r\n {shipToAddressDisplayText}\r\n )}\r\n
    \r\n {isBopisSelected && (\r\n
    \r\n {cartLine.pickUpInStore.orgUnitName}\r\n \r\n
    \r\n )}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n
    \r\n );\r\n};\r\n\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || errorData.errors.length === 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n return null;\r\n }\r\n return (\r\n \r\n {React.cloneElement(orderSummaryLines.subtotal as React.ReactElement, { price: props.data.cart.result?.cart.NetPrice })}\r\n {/* {orderSummaryLines.subtotal} */}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {props.promoCode}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps & ICartExtentionProps<{}>\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\nconst _renderCartLinesGroup = (props: ICartViewProps & ICartExtentionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\r\n return (\r\n
    \r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
    \r\n {_renderCartLinesGroupHeader(\r\n cartlines[0],\r\n props.storeSelector,\r\n resources,\r\n _countItems(cartlines),\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult,\r\n props.telemetryContent,\r\n props.multiplePickUpEnabled,\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
    \r\n
    \r\n

    {props.resources.emptyCartText}

    \r\n {props.backToShoppingButton}\r\n
    \r\n
    \r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\nconst _renderCartLinesGroupHeader = (\r\n cartLine: ICartlinesViewProps,\r\n storeSelector: React.ReactNode | undefined,\r\n resources: ICartResources,\r\n count: number,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { pickUpText, shippingText, emailshippingText } = resources;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
    \r\n

    \r\n

    {groupTitle}

    \r\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\r\n
    \r\n \r\n );\r\n};\r\n\r\nconst _renderGroupBOPISBlock = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n <>\r\n {isBopisSelected ? (\r\n \r\n {changeStoreDisplayText}\r\n \r\n ) : null}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\r\n let countItem = 0;\r\n countItem = cartLine.reduce((count, item) => {\r\n return count + (item.data?.cartline.Quantity || 0);\r\n }, 0);\r\n return countItem;\r\n};\r\n\r\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { itemLabel, itemsLabel } = resources;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

    \r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {', '}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

    \r\n ) : null}\r\n

    \r\n ({count} {suffix})\r\n

    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CartView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IMediaGalleryThumbnailItemViewProps, IMediaGalleryThumbnailsViewProps, IMediaGalleryViewProps } from '@msdyn365-commerce-modules/media-gallery/src/modules/media-gallery/../..';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\n\r\nconst MediaGalleryView: React.FC = props => {\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n //Change images to jpg\r\n if (MsDyn365.isBrowser) {\r\n const images = document.querySelectorAll('.ms-inline-zoom img');\r\n const formatJpgString = '&f=jpg';\r\n if (images && images.length) {\r\n images.forEach(img => img.src = img.src.indexOf(formatJpgString) === -1 ? img.src + '&f=jpg' : img.src);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {Modal}\r\n {_renderThumbnails(Thumbnails)}\r\n \r\n );\r\n};\r\n\r\nconst _renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps): JSX.Element => {\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps, items } = thumbnails;\r\n\r\n return (\r\n \r\n \r\n {items && items.map(_renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\nexport default MediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n ICollapseProps,\r\n IDrawerState,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport {\r\n ICmsNavItemsData,\r\n INavigationMenuProps\r\n} from \"../definition-extensions/navigation-menu.ext.props.autogenerated\";\r\nimport * as _ from 'lodash';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n timeout: ReturnType | null;\r\n menuItemData: IMenuItemData[];\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent, INavigationState> {\r\n private currentLevel: number = 0;\r\n\r\n private readonly _positionInSetOffset: number = 1;\r\n\r\n private readonly escapeKey: number = 27;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: INavigationMenuViewProps & INavigationMenuProps<{}>) {\r\n super(props);\r\n const { menuItemData , config : { retailMenuInsertLinks, cmsNavItems }} = props;\r\n const _menuItemDataClone = [...menuItemData];\r\n const retailMenu = _menuItemDataClone.find(mi => mi.menuSource === 'Retail');\r\n if (retailMenu && ArrayExtensions.hasElements(retailMenuInsertLinks)) {\r\n //Handle pushing in new menu items\r\n retailMenuInsertLinks.map(item => {\r\n if (!item.hideMenuItem) {\r\n const tempMenuItem: IMenuItemData = {\r\n linkURL: item.linkUrl?.destinationUrl,\r\n linkText: item.linkText,\r\n shouldOpenNewTab: item.openInNewTab,\r\n id: retailMenu.subMenu?.length || 0,\r\n imageSource: item.image?.src,\r\n }\r\n retailMenu.subMenu?.splice(item.insertPosition && item.insertPosition - 1 || 0, 0, tempMenuItem);\r\n }\r\n })\r\n }\r\n if (_menuItemDataClone) {\r\n for (const menuItem of _menuItemDataClone) {\r\n if (menuItem.menuSource === 'Retail') {\r\n continue;\r\n }\r\n const menuItemPair = cmsNavItems?.find(cms => cms.linkText === menuItem.linkText);\r\n if ((menuItemPair as ICmsNavItemsData)?.hideMenuItem) {\r\n const idx = _menuItemDataClone.findIndex(i => i.id === menuItem.id);\r\n if (idx > -1) {\r\n _menuItemDataClone.splice(idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined,\r\n parentMenu: undefined,\r\n categoryImageAltText: '',\r\n drawerKeyValue: {},\r\n timeout: null,\r\n menuItemData: _menuItemDataClone\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n document.body.addEventListener('focusout', this._handleFocusOutside);\r\n }\r\n\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n }\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 (\r\n <>\r\n {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render mobile menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, Navigation } = this.props;\r\n const { menuItemData } = this.state;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\r\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render desktop menu.\r\n * @returns Jsx element.\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 /**\r\n * Method to render drawer menu.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return (this._renderDrawer(menuItem, setSize, posinset));\r\n }\r\n return (this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset));\r\n\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const keyValue = this.state.drawerKeyValue;\r\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\r\n const keys = keyValue !== undefined ? keyValue : {};\r\n\r\n let isDrawerOpen = false;\r\n if (keys[buttonText]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\r\n return (\r\n \r\n
    \r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n return (this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset));\r\n }\r\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\r\n })}\r\n
    \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link.\r\n * @param linkText -Text on Menu link.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return (\r\n this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset)\r\n );\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to generate menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, isMobileView } = this.props;\r\n const { menuItemData } = this.state;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n this.setState({ parentMenu: undefined });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}\r\n {' '}\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 return menuItemList;\r\n }\r\n\r\n /**\r\n * Method to get data for submenu.\r\n * @param item -Single Menuitem.\r\n * @returns IMenuItemData.\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({ parentMenu: item?.id });\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 /**\r\n * Method to create item list.\r\n * @param menuItemData -Single Menuitem.\r\n * @returns Jsx element.\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 }\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, true));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData, menuItemData.id, true));\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 = this.props.config.enableMultilevelMenu || false;\r\n const subMenuLevel = 3;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && 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 }\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\r\n /**\r\n * Handles the mouseover and mouseleave functions of the menu hover functionality\r\n * @private\r\n */\r\n private _handleMouseLeaveEvent() {\r\n const { config: { menuHideTimeout }} = this.props;\r\n const classToWatch = 'ms-nav'; // Main nav class\r\n const timeToCloseMenu = menuHideTimeout && menuHideTimeout * 1000 || 0; // From props\r\n\r\n // traverse the nodes that are currently being hovered and find out if they are part of the nav system\r\n const traverseNodes = () => {\r\n const nodeList = document.querySelectorAll(':hover');\r\n let node = nodeList[nodeList.length - 1];\r\n let isInMenu = false;\r\n while (node.parentNode) {\r\n node = node.parentNode as Element;\r\n if (node.classList?.contains(classToWatch)) {\r\n isInMenu = true;\r\n break;\r\n }\r\n }\r\n // If they are not part of the nav system - Close the menu\r\n if (!isInMenu) {\r\n // If a timeout time is set, then close the menu after a delay\r\n if (timeToCloseMenu > 0) {\r\n let timeout = this.state.timeout;\r\n if (!timeout) {\r\n timeout = setTimeout(() => {\r\n this._closeSubmenu();\r\n document.removeEventListener('mousemove', traverseNodes);\r\n }, timeToCloseMenu);\r\n this.setState({ timeout });\r\n }\r\n } else {\r\n // Otherwise - close the menu instantly\r\n this._closeSubmenu();\r\n document.removeEventListener('mousemove', traverseNodes);\r\n }\r\n } else {\r\n // Logic to cancel closing the menu if it is still open and the mouse moves back in\r\n if (timeToCloseMenu > 0) {\r\n const timeout = this.state.timeout;\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n this.setState({ timeout: null});\r\n }\r\n }\r\n }\r\n }\r\n document.removeEventListener('mousemove', traverseNodes);\r\n document.addEventListener('mousemove', traverseNodes);\r\n }\r\n\r\n /**\r\n * Method to render button menu item.\r\n * @param option -Single Menuitem.\r\n * @param activeMenu -Active menu number.\r\n * @param index -Active menu index.\r\n * @returns Jsx element.\r\n */\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button, config: { showMenuOnHover } } = this.props;\r\n\r\n if (showMenuOnHover) {\r\n return (\r\n option.linkURL ? window.location.href = option.linkURL : null}\r\n onMouseEnter={this._handleDropdownToggle(option, activeMenu)}\r\n onFocus={this._closeSubmenu}\r\n aria-haspopup={!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n aria-expanded={!!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n data-parent={activeMenu}\r\n role={'link'}\r\n >\r\n { option.linkText }\r\n
    \r\n )\r\n }\r\n return (\r\n \r\n { option.linkText }\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link menu item.\r\n * @param option -Single Menuitem.\r\n * @param index -Active menu index.\r\n * @param hoverEffect -Active menu effect.\r\n * @param isParent -Is parent menu.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true, isParent: boolean = false,\r\n setSize?: number, posinset?: number): JSX.Element | null {\r\n const { Link, isMobileView, config: { retailMenuInsertLinks, cmsNavItems } } = 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 let currentPath = this.props.context.actionContext.requestContext.url.requestUrl.pathname;\r\n let className = '';\r\n if (retailMenuInsertLinks) {\r\n const menuLink = retailMenuInsertLinks.find(item => item.linkText === option.linkText);\r\n if (menuLink) {\r\n className = menuLink.className || '';\r\n }\r\n }\r\n if (cmsNavItems) {\r\n const cmsMenuLink = cmsNavItems.find(cms => cms.linkText === option.linkText);\r\n if (cmsMenuLink) {\r\n className = (cmsMenuLink as ICmsNavItemsData).className || '';\r\n }\r\n }\r\n\r\n return (\r\n onTelemetryClick(this.telemetryContent, this.payLoad, linkText)}>\r\n =0 ?\r\n 'active-nav-item' : '', className)}>\r\n { option.linkText }\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render promotional link.\r\n * @param linkText -Link text.\r\n * @param linkUrl -Link url.\r\n * @returns Jsx element.\r\n */\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n { linkText }\r\n \r\n );\r\n }\r\n return null;\r\n\r\n }\r\n\r\n /**\r\n * Method to render span menu item.\r\n * @param option -Single Menu Item.\r\n * @param index -Index.\r\n * @param isParent -Is parent menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): 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 /**\r\n * Method to render menu.\r\n * @param level -Menu level.\r\n * @param menuOptions -Menu lists.\r\n * @param currentItem -Menu current.\r\n * @param submenu -Mneu has submenu or not.\r\n * @returns Jsx element.\r\n */\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay = !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay = !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 && 'navmenu-multi-level')}>\r\n { menuOptions }\r\n \r\n
    \r\n {\r\n categoryImageDisplay && this.state.categoryImage && this.state.categoryImage.map(item => (\r\n \r\n { this.state.categoryImage && this._getCategoryImage(item) }\r\n { promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n ))\r\n }\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n const promotionalItemImageSettings = item.image.imageSettings;\r\n promotionalImage.push({ src: imageSrc, altText: item.text, imageSettings: promotionalItemImageSettings,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n\r\n /**\r\n * Method to handle dropdwon change.\r\n * @param data -Menuitem data.\r\n * @param parentId -Menu parent.\r\n * @returns Jsx element.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n if (this.props.config.showMenuOnHover) { // If we're showing menu on hover, we have to handle this part differently\r\n if (this.state.activeMenu !== data.id!) { // Only change state logic if we're not hovering over an already open menu\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 }\r\n this._handleMouseLeaveEvent(); // run the mouse event\r\n } else {\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 }\r\n\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n }\r\n this._resetFocus();\r\n };\r\n\r\n /**\r\n * Method to call when focus lost from menu.\r\n */\r\n private readonly _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 /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState(\r\n {\r\n activeMenu: undefined,\r\n categoryImage: null\r\n }\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleFocusOutside = (event: FocusEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle close submenu event.\r\n */\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined });\r\n }\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param event -HTML event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n\r\n if (event.keyCode === this.escapeKey) {\r\n if (!this.props.isMobileView) {\r\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\r\n for (const item of navDrawerList) {\r\n const navDrawerButton = item.firstChild as HTMLButtonElement;\r\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\r\n navDrawerButton.focus();\r\n }\r\n }\r\n }\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n\r\n if (!categoryImage || !categoryImage.src) {\r\n return null;\r\n }\r\n\r\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param drawerState -HTML event.\r\n */\r\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\r\n const { drawerKeyValue } = this.state;\r\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\r\n const newPair = { [drawerText]: drawerState.isOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IHelp, IOrderSummary, IPaymentMethods, IPriceContext } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport { IGroup, IGroupDelivery, IGroups } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/./order-confirmation';\r\nimport {IOrderConfirmationProps, IOrderConfirmationResources} from '../definition-extensions/order-confirmation.ext.props.autogenerated';\r\n// import { PriceComponent } from '@msdyn365-commerce/components';\r\nimport msdyn365Commerce from '@msdyn365-commerce/core-internal';\r\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\n\r\n\r\nexport interface IOrderSummaryR extends IOrderSummary {\r\n priceContext?: IPriceContext;\r\n backToShoppingLink? : React.ReactNode;\r\n resources: IOrderConfirmationResources;\r\n}\r\n\r\n// interface ISummaryLineProps {\r\n// priceContext?: IPriceContext;\r\n// name: string;\r\n// label: string;\r\n// value?: number;\r\n// }\r\n\r\n\r\n// const OrderSummaryLine: React.FC = ({ name, label, value = 0, priceContext }) => (\r\n//

    \r\n// \r\n// {label}\r\n// \r\n// {priceContext ? (\r\n// \r\n// ) : (\r\n// \r\n// {value}\r\n// \r\n// )}\r\n//

    \r\n// );\r\n\r\nexport interface IGroupR extends IGroup {\r\n resources: IOrderConfirmationResources;\r\n}\r\n\r\nexport interface IGroupsR extends IGroups {\r\n groupsProps: INodeProps;\r\n groups: IGroup[];\r\n resources: IOrderConfirmationResources;\r\n}\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n receiptEmail,\r\n createdDate\r\n}) => (\r\n \r\n {createdDate}\r\n {receiptEmail}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo, pickupDateTimeslot }) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines, resources }) => (\r\n\r\n \r\n {delivery && }\r\n {/* {delivery && delivery.shippingItemsToYou} */}\r\n

    {resources.orderSummaryTitle}

    \r\n {_renderOrderSummaryHeading(resources)}\r\n {salesLines && (\r\n \r\n {salesLines.map((salesLine: ISalesLine) => (\r\n \r\n ))}\r\n \r\n )}\r\n
    \r\n\r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups, resources }) => (\r\n \r\n {groups.map((group: IGroup, index: number) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport interface IExtendedOrderSummaryR extends IOrderSummaryR {\r\n salesOrder: SalesOrder | undefined;\r\n}\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({ salesOrder, orderSummaryProps, heading, shipping, subtotal, totalAmount, earnedPoints, backToShoppingLink, resources}) => (\r\n \r\n {heading}\r\n {/* */}\r\n\r\n {React.cloneElement(subtotal as React.ReactElement, {value: salesOrder?.SubtotalAmountWithoutTax})}\r\n\r\n {shipping}\r\n {/*tax*/}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n {backToShoppingLink}\r\n \r\n);\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst _renderOrderSummaryHeading = (resources: IOrderConfirmationResources & IOrderConfirmationResources): JSX.Element | null => {\r\n return (\r\n
    \r\n
    {resources.productColumnHeading}
    \r\n
    {resources.colorColumnHeading}
    \r\n
    {resources.sizeColumnHeading}
    \r\n
    {resources.quantityColumnHeading}
    \r\n
    {resources.priceColumnHeading}
    \r\n
    {resources.totalColumnHeading}
    \r\n
    \r\n );\r\n};\r\n\r\nconst OrderConfirmationView: React.FC> = props => {\r\n const {\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n resources,\r\n salesOrder,\r\n config }\r\n = props;\r\n const orderString = salesOrder?.CreatedDateTime?.toString() ?? '';\r\n const orderDate = new Date(orderString);\r\n\r\n const changeHref = () => {\r\n if (msdyn365Commerce.isBrowser && config.backToShoppingLink){\r\n let el = document.querySelectorAll('.ms-order-confirmation__btn-keep-shopping')[0];\r\n if (el.href !== config.backToShoppingLink){\r\n el.href = config.backToShoppingLink;\r\n }\r\n }\r\n }\r\n\r\n changeHref();\r\n \r\n return (\r\n \r\n {heading}\r\n

    {orderInfomation?.channelReferenceId}

    \r\n {alert}\r\n {loading}\r\n

    {resources.thankYouMessage}

    \r\n {/* {orderInfomation && } */}\r\n\r\n \r\n \r\n {resources.orderPlacedOnLabel.replace(\":\",\"\")}\r\n {orderDate.toLocaleDateString('en-GB')}\r\n \r\n {orderInfomation?.receiptEmail}\r\n \r\n {groups && }\r\n {/* {payment && } */}\r\n {orderSummary && }\r\n \r\n {resources.tyvm}{resources.paidMsg}\r\n {payment?.methods}\r\n
    \r\n {resources.signOff}\r\n
    \r\n {resources.teamNile}\r\n
    \r\n {help && }\r\n
    \r\n );\r\n};\r\n\r\nconst getPriceContext = (props: IOrderConfirmationViewProps & IOrderConfirmationProps<{}>): IPriceContext => {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n telemetry,\r\n resources: { freePriceText }\r\n } = props;\r\n return {\r\n id,\r\n typeName,\r\n context,\r\n telemetry,\r\n freePriceText\r\n };\r\n}\r\n\r\nexport default OrderConfirmationView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { IReportReviewModalViewProps, IReviewCardViewProps, IReviewsListState, IReviewsListViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n averageRating,\r\n filterByDropdown,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n reviewCount,\r\n reviewModal,\r\n sortByDropdown,\r\n state,\r\n userReview\r\n } = props;\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {averageRating}\r\n {reviewCount}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n \r\n { reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal, moduleProps)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.rating}\r\n {props.name}\r\n {props.date}\r\n \r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n {props.report}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProactiveChatTrigger } from '../../interfaces';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\n\n/**\n * ProactiveChatTrigger class - checks if Proactive Chat should be triggered, starts the chat and sets context\n */\nabstract class ProactiveChatTrigger implements IProactiveChatTrigger {\n public props: IPvaChatConnectorViewProps;\n public context: IChatContext;\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n this.props = props;\n this.context = context;\n }\n\n /**\n * Generates Chat Context with included properties related to Proactive Chat\n * @returns TContextProvider - Chat Context\n */\n public abstract getContextProvider(): TContextProvider;\n\n /**\n * Generates chat welcome message to be used if Proactive Chat is triggered\n * @returns string - chat welcome message\n */\n public abstract getMessage(): string;\n\n /**\n * Validate specific trigger conditions if Proactive Chat should be initiated\n * @returns boolean (TRUE if Proactive Chat should be triggered)\n */\n public abstract validate(): Promise;\n}\n\nexport default ProactiveChatTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartAmountTrigger class - proactive chat is triggered if cArt amount is in preset boundaries (config.proactiveOnCartAmountMin, config.proactiveOnCartAmountMax)\n */\nclass CartAmountTrigger extends ProactiveChatTrigger {\n private min?: number;\n private max?: number;\n private totalInCart: number = 0;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.min = this.props.config.proactiveOnCartAmountMin;\n this.max = this.props.config.proactiveOnCartAmountMax;\n this.props.context.telemetry.debug(\n `[Chat][${CartAmountTrigger.name}] Cart amount proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\n );\n }\n\n public async validate(): Promise {\n const cart = await this._getCart();\n if (cart.isEmpty) {\n this.props.context.telemetry.debug(`[Chat][${CartAmountTrigger.name}] Cart was empty. Validation returning 'false'.`);\n return false;\n }\n\n this.totalInCart = cart.cart.TotalAmount || 0;\n let retVal = false;\n if (this.min) {\n if (this.max) {\n retVal = this.min <= this.totalInCart && this.totalInCart <= this.max;\n } else {\n retVal = this.min <= this.totalInCart;\n }\n } else {\n if (this.max) {\n retVal = this.totalInCart <= this.max;\n } else {\n retVal = false;\n }\n }\n this.props.context.telemetry.debug(\n `[Chat][${CartAmountTrigger.name}] Validation result: '${retVal}'; Cart total: '${this.totalInCart}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Amount',\n eCommerceCustProactiveShoppingCartAmount: `${this.totalInCart}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartAmountMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartAmountTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartNumberOfItemsTrigger class - proactive chat is triggered if Cart Number of Items is in preset boundaries (config.proactiveOnCartNoOfItemsMin, config.proactiveOnCartNoOfItemsMax)\n */\nclass CartNumberOfItemsTrigger extends ProactiveChatTrigger {\n private min?: number;\n private max?: number;\n private numberOfItems: number = 0;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.min = this.props.config.proactiveOnCartNoOfItemsMin;\n this.max = this.props.config.proactiveOnCartNoOfItemsMax;\n\n this.props.context.telemetry.debug(\n `[${CartNumberOfItemsTrigger.name}] Cart number of items proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\n );\n }\n\n public async validate(): Promise {\n const cart = await this._getCart();\n if (cart.isEmpty) {\n this.props.context.telemetry.debug(`[Chat][${CartNumberOfItemsTrigger.name}] Cart was empty. Validation returning 'false'.`);\n return false;\n }\n\n this.numberOfItems = cart.cart.TotalItems || 0;\n\n let retVal = false;\n if (this.min) {\n if (this.max) {\n retVal = this.min <= this.numberOfItems && this.numberOfItems <= this.max;\n } else {\n retVal = this.min <= this.numberOfItems;\n }\n } else {\n if (this.max) {\n retVal = this.numberOfItems <= this.max;\n } else {\n retVal = false;\n }\n }\n this.props.context.telemetry.debug(\n `[${CartNumberOfItemsTrigger.name}] Validation result: '${retVal}'; Number of items in cart: '${this.numberOfItems}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Number of Items',\n eCommerceCustProactiveShoppingCartNumberOfItems: `${this.numberOfItems}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartNoOfItemsMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartNumberOfItemsTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartSpecificProductTrigger class - proactive chat is triggered if a Product in the Cart is in preset list of products (config.proactiveOnCartSpecificProductList)\n */\nclass CartSpecificProductTrigger extends ProactiveChatTrigger {\n private product: string = '';\n\n public async validate(): Promise {\n let isValid = false;\n const cart = await this._getCart();\n if (!cart.isEmpty) {\n if (cart.cart.CartLines) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Number of cart line items was '${cart.cart.CartLines?.length}'`\n );\n for (let i = 0; i < cart.cart.CartLines?.length; i++) {\n if (cart.cart.CartLines[i]) {\n if (this.props.config.proactiveOnCartSpecificProductList) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Number of cart specific products was configured for proactive chat was '${this.props.config.proactiveOnCartSpecificProductList?.length}'`\n );\n // Find first item, from user-defined list of products, that matches the cart lines' itemId in the cart.\n for (let j = 0; j < (this.props.config.proactiveOnCartSpecificProductList?.length || 0); j++) {\n if (\n this.props.config.proactiveOnCartSpecificProductList &&\n cart.cart.CartLines[i].ItemId &&\n this.props.config.proactiveOnCartSpecificProductList[j] === cart.cart.CartLines[i].ItemId\n ) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Matched cart line item ID '${cart.cart.CartLines[i].ItemId}' against user-defined list of specific products for proactive chat.`\n );\n isValid = true;\n break;\n }\n }\n }\n } else {\n // Rest of the CartLines are undefined\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart did not contain any cart lines.`);\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart was empty.`);\n }\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Specific Product',\n eCommerceCustProactiveShoppingCartSpecificProduct: `${this.product}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartSpecificProductMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartSpecificProductTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum ProactiveChatNames {\n DateRange = 'Date Range',\n FromSpecificPage = 'From Specific Page',\n PageVisits = 'Page Visits',\n SpecificLocation = 'Specific Location',\n SpecificPage = 'Specific Page',\n WaitOnTime = 'Wait On Time'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * DateRangeTrigger class - proactive chat is triggered if current date is in preset date boundaries (config.proactiveOnDateRangeStart, config.proactiveOnDateRangeEnd)\n */\nclass DateRangeTrigger extends ProactiveChatTrigger {\n private start?: Date;\n private end?: Date;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.start = this._toDate(this.props.config.proactiveOnDateRangeStart);\n this.end = this._toDate(this.props.config.proactiveOnDateRangeEnd);\n\n this.props.context.telemetry.debug(\n `[${DateRangeTrigger.name}] Proactive chat initialized with startDate: '${this.start}'; max: '${this.end}'.`\n );\n }\n\n public async validate(): Promise {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n\n let retVal = false;\n if (this.start) {\n if (this.end) {\n retVal = this.start.getTime() <= now.getTime() && now.getTime() <= this.end.getTime();\n } else {\n retVal = this.start.getTime() <= now.getTime();\n }\n } else if (this.end) {\n retVal = now.getTime() <= this.end.getTime();\n }\n\n this.props.context.telemetry.debug(\n `[${DateRangeTrigger.name}] Validation result: '${retVal}'; Current date used to compare: '${now}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.DateRange,\n eCommerceCustProactiveFromDate: this.start ? this.start.toUTCString() : '',\n eCommerceCustProactiveToDate: this.end ? this.end.toUTCString() : ''\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnDateRangeMessage || this.props.config.proactiveDefaultMessage;\n }\n\n /**\n * Converts string(us-en) to date\n * @param date string (mm/dd/yyyy)\n * @returns Date or undefined\n */\n private _toDate(date?: string): Date | undefined {\n if (date) {\n const dateParts = date.split('/');\n return new Date(+dateParts[2], +dateParts[1] - 1, +dateParts[0]);\n } else {\n return undefined;\n }\n }\n}\n\nexport default DateRangeTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * FromSpecificPageTrigger class - proactive chat is triggered if user has come from specific page (the one listed in config.proactiveOnFromSpecificPageList)\n */\nclass FromSpecificPageTrigger extends ProactiveChatTrigger {\n public async validate(): Promise {\n let isValid = false;\n if (this.props.config.proactiveOnFromSpecificPageList) {\n this.props.context.telemetry.debug(\n `[${FromSpecificPageTrigger.name}] Number of items in user-defined list of 'From Specific Page' was '${this.props.config.proactiveOnFromSpecificPageList?.length}'.`\n );\n for (let i = 0; i < (this.props.config.proactiveOnFromSpecificPageList?.length || 0); i++) {\n const fromSpecificPageTrimmed: string = this.props.config.proactiveOnFromSpecificPageList[i].trim();\n this.props.context.telemetry.debug(\n `[Chat][${FromSpecificPageTrigger.name}] Current page URL: '${window.document.referrer}'.`\n );\n this.props.context.telemetry.debug(\n `[${FromSpecificPageTrigger.name}] Current item from user-defined list of 'From Specific Page': '${fromSpecificPageTrimmed}'.`\n );\n\n if (window.document.referrer.indexOf(fromSpecificPageTrimmed) > -1) {\n isValid = true;\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(\n `[Chat][${FromSpecificPageTrigger.name}] User-defined 'From Specific Page' list was undefined.`\n );\n }\n this.props.context.telemetry.debug(`[Chat][${FromSpecificPageTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.FromSpecificPage,\n eCommerceCustProactiveCameFromPage: window.document.referrer\n };\n };\n }\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnFromSpecificPageMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default FromSpecificPageTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICookieContext } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/ICookieContext';\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * PageVisitTrigger class - proactive chat is triggered if user has visited current page for (config.proactiveOnPageVisitNumber) or more times\n */\nclass PageVisitTrigger extends ProactiveChatTrigger {\n public visits: number = 0;\n private cookieName: string = 'TimesPageVisited';\n private expdate: Date;\n private cookies: ICookieContext;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.cookies = this.props.context.request.cookies;\n this.expdate = new Date();\n // Set expiry date to 365 days.\n this.expdate.setTime(this.expdate.getTime() + 24 * 60 * 60 * 1000 * 365);\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie expiry date set to: '${this.expdate}'.`);\n\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie context is given: '${this.cookies.isConsentGiven()}'.`);\n if (this.cookies.isConsentGiven()) {\n this.cookies.setConsentCookie();\n }\n\n this._updateVisitCounter();\n }\n\n public async validate(): Promise {\n let retVal: boolean = false;\n\n if (this.props.config.proactiveOnPageVisitNumber) {\n retVal = this.visits >= this.props.config.proactiveOnPageVisitNumber;\n }\n\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Validation result: '${retVal}'.`);\n return retVal;\n }\n\n public clear(): void {\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Clearing cookie for page visit counter.`);\n this.cookies.set(this.cookieName, 0, {\n domain: window.location.hostname,\n path: window.location.pathname,\n expires: this.expdate\n });\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.PageVisits,\n eCommerceCustProactiveNumberOfVisits: `${this.visits}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnPageVisitMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private _updateVisitCounter(): void {\n this.visits = this.cookies.get(this.cookieName).value || 0;\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter BEFORE update: '${this.visits}.`);\n ++this.visits;\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter AFTER update: '${this.visits}.`);\n\n this.cookies.set(this.cookieName, this.visits, {\n domain: window.location.hostname,\n path: window.location.pathname,\n expires: this.expdate\n });\n }\n}\n\nexport default PageVisitTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IExtendedRequest } from '../../interfaces';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * SpecificPageTrigger class - proactive chat is triggered if user geographically uses the website from specific country/regions(config.proactiveOnSpecificCountryRegionCountry)\n */\nclass SpecificCountryRegionTrigger extends ProactiveChatTrigger {\n private customerCountryCode: string;\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.customerCountryCode = (this.props.context.request).suggestedMarket || 'n/a';\n this.props.context.telemetry.debug(\n `[${SpecificCountryRegionTrigger.name}] Customer country code set to: '${this.customerCountryCode}.'`\n );\n }\n\n public async validate(): Promise {\n const retVal: boolean = this.props.config.proactiveOnSpecificLocation\n ? this.props.config.proactiveOnSpecificLocation.toLowerCase().indexOf(this.customerCountryCode.toLowerCase()) > -1\n : false;\n this.props.context.telemetry.debug(`[Chat][${SpecificCountryRegionTrigger.name}] Validation returning '${retVal}'.`);\n return retVal;\n }\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveCountryCode: this.props.config.proactiveOnSpecificLocation || '',\n eCommerceCustProactiveType: ProactiveChatNames.SpecificLocation\n };\n };\n }\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnSpecificCountryRegionMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default SpecificCountryRegionTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * SpecificPageTrigger class - proactive chat is triggered if current page is listed in config.proactiveOnSpecificPageList\n */\nclass SpecificPageTrigger extends ProactiveChatTrigger {\n public async validate(): Promise {\n let isValid = false;\n if (this.props.config.proactiveOnSpecificPageList) {\n this.props.context.telemetry.debug(\n `[${SpecificPageTrigger.name}] Number of items in user-defined list of 'Specific Pages' was '${this.props.config.proactiveOnSpecificPageList?.length}'.`\n );\n for (let i = 0; i < (this.props.config.proactiveOnSpecificPageList?.length || 0); i++) {\n const specificPageTrimmed: string = this.props.config.proactiveOnSpecificPageList[i].trim();\n this.props.context.telemetry.debug(`[] Current location URL: ${window.location.href}.`);\n this.props.context.telemetry.debug(`[] Current item from user-defined list of 'Specific Page': ${specificPageTrimmed}.`);\n if (window.location.href.indexOf(specificPageTrimmed) > -1) {\n isValid = true;\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] User-defined 'Specific Page' list was undefined.`);\n }\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.SpecificPage\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnSpecificPageMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default SpecificPageTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * WaitOnTimeTrigger - proactive chat is triggered if user stays on current page for more than (config.proactiveOnWaitTimeSeconds) seconds\n */\nclass WaitOnTimeTrigger extends ProactiveChatTrigger {\n private waitTimeInMilliseconds: number | undefined;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n if (this.props.config.proactiveOnWaitTimeSeconds && !isNaN(this.props.config.proactiveOnWaitTimeSeconds)) {\n this.waitTimeInMilliseconds = Number(this.props.config.proactiveOnWaitTimeSeconds) * 1000;\n this.props.context.telemetry.debug(\n `[Chat][${WaitOnTimeTrigger.name}] Wait time (ms) set to: '${this.waitTimeInMilliseconds}'.`\n );\n }\n }\n\n public async validate(): Promise {\n const retVal: boolean = this.waitTimeInMilliseconds !== undefined;\n this.props.context.telemetry.debug(`[Chat][${WaitOnTimeTrigger.name}] Validation returning '${retVal}'.`);\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n const triggerTime = Date.now() + (this.waitTimeInMilliseconds || 0);\n return () => {\n return triggerTime > Date.now()\n ? this.context\n : {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.WaitOnTime,\n eCommerceCustProactiveTimeOnPage: `${this.waitTimeInMilliseconds ? this.waitTimeInMilliseconds : 0}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnWaitTimeMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default WaitOnTimeTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CartAmountTrigger from './triggers/cart-amount-trigger';\nimport CartNumberOfItemsTrigger from './triggers/cart-number-of-items-trigger';\nimport CartSpecificProductTrigger from './triggers/cart-specific-product-trigger';\nimport DateRangeTrigger from './triggers/date-range-trigger';\nimport FromSpecificPageTrigger from './triggers/from-specific-page-trigger';\nimport PageVisitTrigger from './triggers/page-visits-trigger';\nimport SpecificCountryRegionTrigger from './triggers/specific-CountryRegion-trigger';\nimport SpecificPageTrigger from './triggers/specific-page-trigger';\nimport WaitOnTimeTrigger from './triggers/wait-on-time-trigger';\n\ntype ProactiveChat =\n | typeof DateRangeTrigger\n | typeof SpecificPageTrigger\n | typeof FromSpecificPageTrigger\n | typeof PageVisitTrigger\n | typeof SpecificCountryRegionTrigger\n | typeof CartAmountTrigger\n | typeof CartNumberOfItemsTrigger\n | typeof CartSpecificProductTrigger\n | typeof WaitOnTimeTrigger;\n\n/**\n * List of Proactive Chat Validators in order of validation (first proactive chat that pass validation is triggered, the rest are ommited)\n */\nexport const ProactiveTriggers: ProactiveChat[] = [\n DateRangeTrigger,\n SpecificPageTrigger,\n FromSpecificPageTrigger,\n PageVisitTrigger,\n SpecificCountryRegionTrigger,\n CartAmountTrigger,\n CartNumberOfItemsTrigger,\n CartSpecificProductTrigger,\n WaitOnTimeTrigger\n];\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContextUser } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/IRequestContext';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ProactiveTriggers } from '../proactive';\nimport ProactiveChatTrigger from '../proactive/triggers/proactive-chat-trigger';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\nimport { IProactiveData } from './../interfaces';\nimport { IChatContext, TContextProvider } from '../../interfaces';\n\n/**\n *\n * ContextProvider class - generates chat context, and checks for proactive triggers\n */\nclass ContextProvider {\n public data: IProactiveData;\n public props: IPvaChatConnectorViewProps;\n private user: IRequestContextUser;\n private userId: string;\n private context: IChatContext;\n private provider: TContextProvider | undefined;\n\n constructor(props: IPvaChatConnectorViewProps) {\n this.props = props;\n this.user = this.props.context.request.user;\n this.userId = `dl_${uuidv4()}`;\n this.context = this._getContext();\n // Proactive Chat related data\n this.data = {\n enabled: false,\n timeout: this.props.config.proactiveOnWaitTimeSeconds || 0,\n message: this.props.config.proactiveDefaultMessage\n };\n }\n\n /**\n * Executes Proactive Chat validation\n * @returns TContextProvider - a function returning IChatContext object\n */\n public async init(): Promise {\n try {\n await this._proactiveCheck();\n } catch (e) {\n // Use ?debug=true to see telemetry\n // If previous block fails, chat will still be available (no need to display any errors to user)\n this.props.telemetry.exception(e);\n }\n return this.provider || this._getProvider();\n }\n\n /**\n * Returns TContextProvider - a function returning IChatContext object\n */\n private _getProvider(): TContextProvider {\n return () => {\n return {\n eCommerceOperatingUnitNumber: this.props.context.request.apiSettings.oun,\n eCommerceBaseUrl: this.props.context.request.apiSettings.baseUrl,\n eCommerceDataAreaId: this.props.context.request.channel?.InventLocationDataAreaId,\n UserId: this.userId,\n // eCommerceCust...\n AccountNumber: this.user.customerAccountNumber ? this.user.customerAccountNumber : 'N/A',\n Email: this.user.emailAddress ? this.user.emailAddress : 'N/A',\n FirstName: this.user.firstName ? this.user.firstName : this.props.config.anonymousUserName,\n LastName: this.user.lastName ? this.user.lastName : 'N/A',\n Name: this.user.name ? this.user.name : this.props.config.anonymousUserName,\n eCommerceCustPageURL: window.location.href,\n eCommerceCustChatType: 'pva',\n // Proactive chat\n eCommerceCustIsProactiveChat: 'False',\n eCommerceCustProactiveType: 'N/A',\n // Date Range\n eCommerceCustProactiveFromDate: 'N/A',\n eCommerceCustProactiveToDate: 'N/A',\n // From Specific Page\n eCommerceCustProactiveCameFromPage: 'N/A',\n // No. Page Visits\n eCommerceCustProactiveNumberOfVisits: 'N/A',\n // Specific CountryRegion\n eCommerceCustProactiveCountryCode: 'N/A',\n // Specific Page => eCommerceCustPageURL\n // eCommerceCustProactiveSpecificPage: 'N/A',\n // Wait On Time\n eCommerceCustProactiveTimeOnPage: 'N/A',\n // Shopping cart amount\n eCommerceCustProactiveShoppingCartAmount: 'N/A',\n // Shopping cart number of items\n eCommerceCustProactiveShoppingCartNumberOfItems: 'N/A',\n // Shopping cart specific product\n eCommerceCustProactiveShoppingCartSpecificProduct: 'N/A'\n };\n };\n }\n\n /**\n * Returns default IChatContext object\n */\n private _getContext(): IChatContext {\n return this._getProvider()();\n }\n\n /**\n * Validates proactive triggers to check if proactive chat should be initialized\n */\n private async _proactiveCheck(): Promise {\n if (this.props.config.proactiveChatEnabled) {\n for (let i = 0; i < ProactiveTriggers.length; i++) {\n const proactive = new ProactiveTriggers[i](this.props, this.context);\n // Only first detected proactive trigger gets executed\n if (await this._isProactive(proactive)) {\n this.props.context.telemetry.debug(`First detected proactive trigger to be executed: ${proactive}`);\n break;\n }\n }\n }\n }\n\n /**\n * Validates if proactive chat should be triggered for given ProactiveTrigger\n * @param proactive ProactiveChatTrigger\n * @returns boolean\n */\n private async _isProactive(proactive: ProactiveChatTrigger): Promise {\n this.data.enabled = await proactive.validate();\n if (this.data.enabled) {\n this.provider = proactive.getContextProvider();\n this.data.message = proactive.getMessage();\n }\n return this.data.enabled;\n }\n}\n\nexport default ContextProvider;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Style generating functions\n */\nimport { IAvatarStyling, IBubbleStyling, IChatCustomStyle, IChatStyling, IOtherStyling, ISuggestedActionStyling } from '../interfaces';\nimport { IMsdyn365PvaChatConnectorConfig } from '../msdyn365-pva-chat-connector.props.autogenerated';\n\nconst getChatWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n position: config.position || 'inherit',\n top: config.top ? config.top : 'inherit',\n right: config.right ? config.right : 'inherit',\n bottom: config.bottom ? config.bottom : 'inherit',\n left: config.left ? config.left : 'inherit',\n zIndex: 1000,\n display: 'flex',\n justifyContent: 'flex-end'\n };\n};\n\nconst getMaximizedChatWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig, isMobileDevice: boolean): React.CSSProperties => {\n if (isMobileDevice) {\n return {\n height: '90%',\n width: '100%',\n bottom: '0.5em',\n right: '0',\n padding: '5px'\n };\n }\n return {\n height: config.chatHeight ? config.chatHeight : '80%',\n width: config.chatWidth ? config.chatWidth : 'inherit'\n };\n};\n\nconst getChatButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: config.startChatButtonBackgroundColor || 'white',\n color: config.startChatButtonTextColor || 'inherit',\n borderColor: config.startChatButtonBorderColor || 'inherit',\n borderRadius: config.startChatButtonBorderRadius || '0px',\n borderStyle: config.startChatButtonBorderStyle || 'solid',\n borderWidth: config.startChatButtonBorderWidth ? config.startChatButtonBorderWidth : '0px',\n padding: config.storeLogoURL ? '2px 20px 2px 2px' : '10px 20px 10px 20px',\n cursor: 'pointer',\n outlineStyle: 'none',\n alignSelf: 'flex-end',\n boxShadow: '0 0 4px rgba(102,102,102,.5)',\n WebkitBoxShadow: '0 0 4px rgba(102,102,102,.5)',\n MozBoxShadow: '0 0 4px rgba(102,102,102,.5)'\n };\n};\n\nconst getButtonStoreLogoStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n color: config.headerTextColor || 'inherit',\n borderRadius: '50%',\n padding: '11px',\n width: '30px',\n height: '30px',\n marginRight: '12px',\n borderStyle: 'solid',\n borderWidth: '1px',\n boxSizing: 'content-box'\n };\n};\n\nconst getChatStoreLogoStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n color: config.headerTextColor || 'inherit',\n borderRadius: '50%',\n padding: '11px',\n width: '30px',\n height: '30px',\n margin: '5px 12px 5px 5px',\n alignSelf: 'center',\n borderStyle: 'solid',\n borderWidth: '1px',\n boxSizing: 'content-box'\n };\n};\n\nconst getChatMessagesStyle = (config: IMsdyn365PvaChatConnectorConfig, minimized: boolean): React.CSSProperties => {\n return {\n display: minimized ? 'none' : 'block',\n backgroundColor: config.backgroundColor || 'White',\n height: '100%',\n width: '100%',\n boxSizing: 'border-box',\n position: 'relative'\n };\n};\n\nconst getChatMessageHeader = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\n color: config.headerTextColor || 'inherit',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n width: '100%',\n position: 'absolute',\n top: config.chatHeaderHeight ? `-${config.chatHeaderHeight}` : '',\n height: config.chatHeaderHeight,\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getMinimizeButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n borderTop: 'none',\n borderLeft: 'none',\n borderRight: 'none',\n borderBottom: `solid 2px ${config.headerTextColor || 'White'}`,\n backgroundColor: 'transparent',\n padding: '5px 10px 3px 10px',\n cursor: 'pointer',\n outlineStyle: 'none',\n marginTop: '7px',\n marginRight: '7px'\n };\n};\n\nconst getCloseButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n border: 'none',\n color: config.headerTextColor || 'White',\n backgroundColor: 'transparent',\n padding: '0px 0px 0px 7px',\n cursor: 'pointer',\n outlineStyle: 'none',\n marginTop: '7px',\n marginRight: '7px'\n };\n};\n\nconst getChatMessageContent = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n height: '100%',\n width: '100%',\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n flexDirection: 'column',\n display: 'flex',\n justifyContent: 'flex-end',\n backgroundColor: config.backgroundColor || 'White'\n };\n};\n\nconst getProactiveMessageHeader = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\n color: config.headerTextColor || 'inherit',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n boxSizing: 'border-box',\n width: '100%',\n height: config.chatHeaderHeight,\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveMessageContent = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n width: '100%',\n padding: '10px 20px',\n boxSizing: 'border-box',\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n color: config.headerTextColor || 'inherit',\n cursor: 'pointer',\n padding: '5px 10px',\n outline: 'none',\n border: 'none',\n backgroundColor: config.headerBackgroundColor || 'inherit',\n borderRadius: '25px'\n };\n};\n\nconst getRedDotStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n background: 'Red',\n borderRadius: '50%',\n height: '5px',\n width: '5px',\n position: 'absolute',\n right: '10px',\n bottom: '33px'\n };\n};\n\n/**\n * Generates styles for the chat wrapper, and proactive chat parts\n * @param config IMsdyn365PvaChatConnectorConfig\n * @param minimized boolean\n * @returns IChatCustomStyle\n */\nexport const getChatStyling = (config: IMsdyn365PvaChatConnectorConfig, minimized: boolean, isMobileDevice: boolean): IChatCustomStyle => {\n return {\n ChatWrapperStyle: getChatWrapperStyle(config),\n MaximizedChatWrapperStyle: getMaximizedChatWrapperStyle(config, isMobileDevice),\n ChatButtonStyle: getChatButtonStyle(config),\n ButtonStoreLogoStyle: getButtonStoreLogoStyle(config),\n ChatStoreLogoStyle: getChatStoreLogoStyle(config),\n ChatMessagesStyle: getChatMessagesStyle(config, minimized),\n ChatMessageHeader: getChatMessageHeader(config),\n MinimizeButtonStyle: getMinimizeButtonStyle(config),\n CloseButtonStyle: getCloseButtonStyle(config),\n ChatMessageContent: getChatMessageContent(config),\n ProactiveWrapperStyle: getProactiveWrapperStyle(config),\n ProactiveMessageHeader: getProactiveMessageHeader(config),\n ProactiveMessageContent: getProactiveMessageContent(config),\n ProactiveButtonStyle: getProactiveButtonStyle(config),\n RedDotStyle: getRedDotStyle(config)\n };\n};\n\nconst fontFormat = (font?: string): string | undefined => {\n if (font && font.length > 0) {\n const arr = font.split(',');\n for (let i = 0; i < arr.length; i++) {\n arr[i] = `'${arr[i].trim()}'`;\n }\n font = arr.join(', ');\n } else {\n font = \"'Calibri', 'Helvetica Neue', 'Arial', 'sans-serif'\";\n }\n\n return font;\n};\n\nconst getBubbleStyling = (config: IMsdyn365PvaChatConnectorConfig): IBubbleStyling => {\n return {\n bubbleBackground: config.bubbleBackground || 'White',\n bubbleTextColor: config.bubbleTextColor || 'Black',\n bubbleBorderColor: config.bubbleBorderColor || '#e6e6e6',\n bubbleBorderRadius: config.bubbleBorderRadius || '2',\n bubbleBorderStyle: config.bubbleBorderStyle || 'solid',\n bubbleBorderWidth: config.bubbleBorderWidth || '1',\n bubbleFromUserBackground: config.bubbleFromUserBackground || 'White',\n bubbleFromUserTextColor: config.bubbleFromUserTextColor || 'Black',\n bubbleFromUserBorderColor: config.bubbleFromUserBorderColor || '#e6e6e6',\n bubbleFromUserBorderRadius: config.bubbleFromUserBorderRadius || '2',\n bubbleFromUserBorderStyle: config.bubbleFromUserBorderStyle || 'solid',\n bubbleFromUserBorderWidth: config.bubbleFromUserBorderWidth || '1'\n };\n};\n\n// eslint-disable-next-line complexity\nconst getOtherStyling = (config: IMsdyn365PvaChatConnectorConfig): IOtherStyling => {\n return {\n groupTimestamp: config.groupTimestamp || true,\n sendTimeout: config.sendTimeout || '20000',\n sendTimeoutForAttachments: config.sendTimeoutForAttachments || '120000',\n timestampColor: config.timestampColor || 'undefined',\n timestampFormat: config.timestampFormat || 'undefined',\n notificationDebounceTimeout: config.notificationDebounceTimeout || '400',\n hideToaster: config.hideToaster || true,\n toasterHeight: config.toasterHeight || '32',\n toasterMaxHeight: config.toasterMaxHeight || '32 * 5',\n toasterSingularMaxHeight: config.toasterSingularMaxHeight || '50',\n toastFontSize: config.toastFontSize || '87.5%',\n toastIconWidth: config.toastIconWidth || '36',\n toastSeparatorColor: config.toastSeparatorColor || '#E8EAEC',\n toastTextPadding: config.toastTextPadding || '6',\n toastErrorBackgroundColor: config.toastErrorBackgroundColor || '#FDE7E9',\n toastErrorColor: config.toastErrorColor || '#A80000',\n toastInfoBackgroundColor: config.toastInfoBackgroundColor || '#CEF1FF',\n toastInfoColor: config.toastInfoColor || '#105E7D',\n toastSuccessBackgroundColor: config.toastSuccessBackgroundColor || '#DFF6DD',\n toastSuccessColor: config.toastSuccessColor || '#107C10',\n toastWarnBackgroundColor: config.toastWarnBackgroundColor || '#FFF4CE',\n toastWarnColor: config.toastWarnColor || '#3B3A39',\n typingAnimationBackgroundImage: config.typingAnimationBackgroundImage || 'undefined',\n typingAnimationDuration: config.typingAnimationDuration || '5000',\n typingAnimationHeight: config.typingAnimationHeight || '20',\n typingAnimationWidth: config.typingAnimationWidth || '64',\n videoHeight: config.videoHeight || '270',\n markdownExternalLinkIconImage:\n config.markdownExternalLinkIconImage ||\n 'url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMjUwMSA0LjUwMDE3SDEwLjc0OTVDMTEuMTYzNyA0LjUwMDE3IDExLjQ5OTUgNC44MzU5NiAxMS40OTk1IDUuMjUwMTdDMTEuNDk5NSA1LjYyOTg2IDExLjIxNzMgNS45NDM2NiAxMC44NTEzIDUuOTkzMzJMMTAuNzQ5NSA2LjAwMDE3SDcuMjQ5NzRDNi4wNzA3OSA1Ljk5OTYxIDUuMTAzNDkgNi45MDY1NiA1LjAwNzg2IDguMDYxMTJMNS4wMDAyOCA4LjIyMDAzTDUuMDAzMTIgMTYuNzUwN0M1LjAwMzQzIDE3Ljk0MTUgNS45Mjg4NSAxOC45MTYxIDcuMDk5NjYgMTguOTk0OUw3LjI1MzcxIDE5LjAwMDFMMTUuNzUxOCAxOC45ODg0QzE2Ljk0MTUgMTguOTg2OCAxNy45MTQ1IDE4LjA2MiAxNy45OTM1IDE2Ljg5MjNMMTcuOTk4NyAxNi43Mzg0VjEzLjIzMjFDMTcuOTk4NyAxMi44MTc5IDE4LjMzNDUgMTIuNDgyMSAxOC43NDg3IDEyLjQ4MjFDMTkuMTI4NCAxMi40ODIxIDE5LjQ0MjIgMTIuNzY0MyAxOS40OTE4IDEzLjEzMDNMMTkuNDk4NyAxMy4yMzIxVjE2LjczODRDMTkuNDk4NyAxOC43NDA3IDE3LjkyOTMgMjAuMzc2OSAxNS45NTI4IDIwLjQ4MjlMMTUuNzUzOCAyMC40ODg0TDcuMjU4MjcgMjAuNTAwMUw3LjA1NDk1IDIwLjQ5NDlDNS4xNDIzOSAyMC4zOTU0IDMuNjA4OTUgMTguODYyNyAzLjUwODM3IDE2Ljk1MDJMMy41MDMxMiAxNi43NTExTDMuNTAwODkgOC4yNTI3TDMuNTA1MjkgOC4wNTAyQzMuNjA1MzkgNi4xMzc0OSA1LjEzODY3IDQuNjA0NDkgNy4wNTA5NiA0LjUwNTI3TDcuMjUwMSA0LjUwMDE3SDEwLjc0OTVINy4yNTAxWk0xMy43NDgxIDMuMDAxNDZMMjAuMzAxOCAzLjAwMTk3TDIwLjQwMTQgMy4wMTU3NUwyMC41MDIyIDMuMDQzOTNMMjAuNTU5IDMuMDY4MDNDMjAuNjEyMiAzLjA5MTIyIDIwLjY2MzQgMy4xMjE2MyAyMC43MTExIDMuMTU4ODVMMjAuNzgwNCAzLjIyMTU2TDIwLjg2NDEgMy4zMjAxNEwyMC45MTgzIDMuNDEwMjVMMjAuOTU3IDMuNTAwNTdMMjAuOTc2MiAzLjU2NDc2TDIwLjk4OTggMy42Mjg2MkwyMC45OTkyIDMuNzIyODJMMjAuOTk5NyAxMC4yNTU0QzIwLjk5OTcgMTAuNjY5NiAyMC42NjM5IDExLjAwNTQgMjAuMjQ5NyAxMS4wMDU0QzE5Ljg3IDExLjAwNTQgMTkuNTU2MiAxMC43MjMyIDE5LjUwNjUgMTAuMzU3MUwxOS40OTk3IDEwLjI1NTRMMTkuNDk4OSA1LjU2MTQ3TDEyLjI3OTcgMTIuNzg0N0MxMi4wMTM0IDEzLjA1MSAxMS41OTY4IDEzLjA3NTMgMTEuMzAzMSAxMi44NTc1TDExLjIxOSAxMi43ODQ5QzEwLjk1MjcgMTIuNTE4NyAxMC45Mjg0IDEyLjEwMjEgMTEuMTQ2MiAxMS44MDg0TDExLjIxODggMTEuNzI0M0wxOC40MzY5IDQuNTAxNDZIMTMuNzQ4MUMxMy4zNjg0IDQuNTAxNDYgMTMuMDU0NiA0LjIxOTMxIDEzLjAwNSAzLjg1MzI0TDEyLjk5ODEgMy43NTE0NkMxMi45OTgxIDMuMzcxNzcgMTMuMjgwMyAzLjA1Nzk3IDEzLjY0NjQgMy4wMDgzMUwxMy43NDgxIDMuMDAxNDZaIiBmaWxsPSIjMjEyMTIxIiAvPjwvc3ZnPg==)',\n markdownRespectCRLF: config.markdownRespectCRLF || 'true',\n internalLiveRegionFadeAfter: config.internalLiveRegionFadeAfter || '1000',\n accent: config.accent || '#0063B1',\n subtle: config.subtle || '#767676'\n };\n};\n\nconst getAvatarStyling = (config: IMsdyn365PvaChatConnectorConfig): IAvatarStyling => {\n return {\n avatarBorderRadius: config.avatarBorderRadius || '50%',\n avatarSize: config.avatarSize || '40',\n botAvatarBackgroundColor: config.botAvatarBackgroundColor || 'undefined',\n botAvatarImage: config.botAvatarImage || '',\n botAvatarInitials: config.botAvatarInitials || '',\n userAvatarBackgroundColor: config.userAvatarBackgroundColor || 'undefined',\n userAvatarImage: config.userAvatarImage || '',\n userAvatarInitials: config.userAvatarInitials || '',\n showAvatarInGroup: config.showAvatarInGroup || 'status'\n };\n};\n\nconst getSuggestedActionStyling = (config: IMsdyn365PvaChatConnectorConfig): ISuggestedActionStyling => {\n return {\n suggestedActionLayout: config.suggestedActionLayout || 'carousel',\n suggestedActionBackground: config.suggestedActionBackground || 'White',\n suggestedActionTextColor: config.suggestedActionTextColor || '',\n suggestedActionBorderColor: config.suggestedActionBorderColor || '',\n suggestedActionBorderRadius: config.suggestedActionBorderRadius || '0',\n suggestedActionBorderStyle: config.suggestedActionBorderStyle || 'solid',\n suggestedActionBorderWidth: config.suggestedActionBorderWidth || '2',\n suggestedActionDisabledBorderStyle: config.suggestedActionDisabledBorderStyle || 'solid',\n suggestedActionDisabledBorderWidth: config.suggestedActionDisabledBorderWidth || '2',\n suggestedActionDisabledTextColor: config.suggestedActionDisabledTextColor || '',\n suggestedActionHeight: config.suggestedActionHeight || '40',\n suggestedActionImageHeight: config.suggestedActionImageHeight || '20',\n suggestedActionsCarouselFlipperCursor: config.suggestedActionsCarouselFlipperCursor || '',\n suggestedActionsCarouselFlipperBoxWidth: config.suggestedActionsCarouselFlipperBoxWidth || '40',\n suggestedActionsCarouselFlipperSize: config.suggestedActionsCarouselFlipperSize || '20',\n suggestedActionsFlowMaxHeight: config.suggestedActionsFlowMaxHeight || '',\n suggestedActionsStackedHeight: config.suggestedActionsStackedHeight || '',\n suggestedActionsStackedOverflow: config.suggestedActionsStackedOverflow || '2',\n suggestedActionsStackedLayoutButtonMaxHeight: config.suggestedActionsStackedLayoutButtonMaxHeight || '',\n suggestedActionsStackedLayoutButtonTextWrap: config.suggestedActionsStackedLayoutButtonTextWrap || false\n };\n};\n\n/**\n * Generates style options for the Botframework-WebChat widget\n * @param config IMsdyn365PvaChatConnectorConfig\n * @returns IChatStyling\n */\nexport const getChatStyleOptions = (config: IMsdyn365PvaChatConnectorConfig): IChatStyling => {\n const bubbleStyling = getBubbleStyling(config);\n const avatarStyling = getAvatarStyling(config);\n const suggestedActionStyling = getSuggestedActionStyling(config);\n const otherStyling = getOtherStyling(config);\n return {\n hideUploadButton: true,\n primaryFont: fontFormat(config.primaryFont),\n backgroundColor: config.backgroundColor || 'White',\n ...bubbleStyling,\n ...avatarStyling,\n ...suggestedActionStyling,\n ...otherStyling\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\nimport { IAction, IDispatch, INext } from '../interfaces';\nimport { TContextProvider } from '../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\n\nexport class CommerceChatStore {\n private props: IPvaChatConnectorViewProps;\n private setNewMessageAction: React.Dispatch>;\n private provider?: TContextProvider;\n\n /**\n * Gets conversation token\n * @param props IPvaChatConnectorViewProps\n */\n public static async getDirectLineToken(props: IPvaChatConnectorViewProps): Promise {\n if (props.config.powervaDirectlineTokenURL && props.config.botID && props.config.tenantID) {\n // use direct line token url, bot id and tenant id from module config to get conversation token\n const url = `${props.config.powervaDirectlineTokenURL}?botId=${props.config.botID}&tenantId=${props.config.tenantID}`;\n const options = { method: 'GET' };\n return fetch(url, options)\n .then(r => r.json())\n .then(r => {\n if (r.token) {\n return r.token;\n } else {\n throw r;\n }\n });\n }\n\n // use direct line token url, bot id and tenant id from app config to get conversation token\n const url = `${props.context.app.config.pvaChatConnectorPowervaDirectlineTokenURL}?botId=${props.context.app.config.pvaChatConnectorBotID}&tenantId=${props.context.app.config.pvaChatConnectorTenantID}`;\n const options = {\n method: 'GET'\n };\n return fetch(url, options)\n .then(r => r.json())\n .then(r => {\n if (r.token) {\n return r.token;\n } else {\n throw r;\n }\n });\n }\n\n /**\n * Creates a new instance of commerce store for WebChat\n * @param props IPvaChatConnectorViewProps\n * @param provider TContextProvider\n * @param setNewMessage React.Dispatch>\n */\n constructor(\n props: IPvaChatConnectorViewProps,\n provider: TContextProvider | undefined,\n setNewMessage: React.Dispatch>\n ) {\n this.props = props;\n this.provider = provider;\n this.setNewMessageAction = setNewMessage;\n }\n\n /**\n * Handles custom chat actions\n * @param param0 {\n * dispatch: IDispatch;\n * next: INext;\n * action: IAction;\n * }\n */\n public async actionHandler({ dispatch, next, action }: { dispatch: IDispatch; next: INext; action: IAction }): Promise {\n const atype = action.type;\n\n switch (atype) {\n case 'DIRECT_LINE/CONNECT_FULFILLED': {\n // sets language\n dispatch({\n type: 'WEB_CHAT/SEND_EVENT',\n payload: {\n name: 'webchat/join',\n value: { language: window.navigator.language }\n }\n });\n break;\n }\n case 'DIRECT_LINE/INCOMING_ACTIVITY': {\n const activity = action.payload.activity;\n if (activity?.from?.role === 'bot') {\n // Sets flag for new message (will be use to indicate new messages from bot when chat is minimized)\n this.setNewMessageAction(true);\n }\n break;\n }\n case 'DIRECT_LINE/POST_ACTIVITY_FULFILLED': {\n switch (action.payload.activity.name) {\n case 'webchat/join':\n {\n if (this.provider !== undefined) {\n // Sets Chat Context\n dispatch({\n type: 'WEB_CHAT/SEND_EVENT',\n payload: {\n name: 'pvaSetContext',\n value: this.provider()\n }\n });\n }\n }\n break;\n case 'pvaSetContext':\n {\n if (this.props.config.triggerQuery) {\n // Initialize chat after Chat Context is set\n dispatch({\n type: 'WEB_CHAT/SEND_MESSAGE_BACK',\n payload: {\n text: this.props.config.triggerQuery\n }\n });\n }\n }\n break;\n default: {\n // default nothing\n }\n }\n break;\n }\n default: {\n // default nothing\n }\n }\n\n return next(action);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { FunctionComponent, useMemo, useState } from 'react';\nimport { getChatStyleOptions } from '../helpers/StyleComposers';\nimport { IChatCoreProps, IAction, IDispatch } from '../interfaces';\nimport { CommerceChatStore } from '../helpers/CommerceChatStore';\n\n/**\n * Just a core Chat component\n * @param props\n */\n\nconst ChatCore: FunctionComponent = (props: IChatCoreProps) => {\n const { ReactWebChat } = window.WebChat;\n\n const [userId, setUserId] = useState('');\n useMemo(() => {\n if (props.provider) {\n const ctx = props.provider();\n if (ctx.UserId) {\n setUserId(typeof ctx.UserId === 'string' ? ctx.UserId : ctx.UserId.value.toString());\n }\n }\n }, [props.provider]);\n\n const directLine = useMemo(() => {\n return window.WebChat.createDirectLine({ token: props.directLineToken });\n }, [props.directLineToken]);\n\n const commerceChatStore = useMemo(() => {\n if (directLine && props.provider) {\n return new CommerceChatStore(props.config, props.provider, props.setNewMessage);\n }\n return undefined;\n }, [props.provider, directLine]);\n\n const store = useMemo(() => {\n return window.WebChat.createStore(\n {},\n ({ dispatch }: { dispatch: IDispatch }) => (next: (action: IAction) => IDispatch) => (action: IAction) => {\n commerceChatStore?.actionHandler({ dispatch, next, action });\n }\n );\n }, [commerceChatStore]);\n const styleOptions = getChatStyleOptions(props.config.config);\n\n return props.directLineToken !== '' ? (\n \n ) : (\n

    Please wait while we are connecting.

    \n );\n};\n\nexport default ChatCore;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { FunctionComponent, useEffect, useState } from 'react';\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport ContextProvider from '../helpers/ContextProvider';\nimport { getChatStyling } from '../helpers/StyleComposers';\nimport { TContextProvider } from '../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\nimport { CommerceChatStore } from '../helpers';\nimport ChatCore from './ChatCore';\n\nconst INVALID_TOKEN = 'INVALID_TOKEN';\nconst CLOSE_IMG_DATA =\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';\n\n/**\n * Outer chat component, displays chat button, and proactive chat, and handles custom actions\n * @param props IPvaChatConnectorViewProps\n */\nconst Chat: FunctionComponent = (props: IPvaChatConnectorViewProps) => {\n const [loaded, setLoaded] = useState(false); // loaded & minimized are needed as ChatWidget should not be removed from DOM (it resets chat)\n const [minimized, setMinimized] = useState(true);\n const [newMessage, setNewMessage] = useState(false); // TODO: use this to indicate new message in minimized chat\n const [token, setToken] = useState(''); // holds conversation token for WebChat\n const [isProactive, setIsProactive] = useState(false); // if proactive chat is triggered\n const [proactiveMessage, setProactiveMessage] = useState(props.config.proactiveDefaultMessage);\n const [closed, setClosed] = useState(false);\n const [provider, setProvider] = useState();\n const isMobileDevice =\n isMobile({ variant: VariantType.Browser, context: props.context.request }) === 'xs' ||\n isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n const chatStyle = getChatStyling(props.config, minimized, isMobileDevice); // generates chat style objects based on configuration\n const handleMaximizeButtonClick = () => {\n setLoaded(true);\n setMinimized(false);\n setNewMessage(false);\n };\n const handleMinimizeButtonClick = () => {\n setMinimized(true);\n setNewMessage(false);\n };\n const handleCloseButtonClick = () => {\n setClosed(true);\n setLoaded(false);\n setMinimized(true);\n setNewMessage(false);\n setIsProactive(false);\n };\n useEffect(() => {\n if (loaded) {\n CommerceChatStore.getDirectLineToken(props)\n .then(directLineToken => {\n setToken(directLineToken);\n })\n .catch(e => {\n setToken(INVALID_TOKEN);\n props.telemetry.exception(e);\n });\n }\n }, [loaded]);\n useEffect(() => {\n (async () => {\n const contextProvider = new ContextProvider(props); // Generates context (provider) and checks for proactive chat triggers\n const prov = await contextProvider.init();\n if (contextProvider.data.enabled) {\n props.context.telemetry.debug(`[Chat] Proactive chat was enabled: '${contextProvider.data.enabled}'.`);\n // if proactive chat is triggered\n const timeout = contextProvider.data.timeout * 1000; // timeout is there only for WaitOnTime trigger\n setTimeout(() => {\n if (!loaded) {\n props.context.telemetry.debug(`[Chat] Proactive chat was loaded: ${loaded}.`);\n setProactiveMessage(contextProvider.data.message);\n setIsProactive(true);\n }\n }, timeout);\n }\n setProvider(() => prov);\n })().catch(e => props.telemetry.exception(e));\n }, []);\n useEffect(() => {\n if (closed) {\n setClosed(false);\n }\n }, [token, provider]);\n const isValidToken = (): boolean => {\n return `${token}` !== INVALID_TOKEN;\n };\n return (\n \n {minimized && (!isProactive || (isProactive && loaded)) && (\n \n )}\n {minimized && isProactive && !loaded && (\n
    \n
    \n {props.config.storeLogoURL && (\n logo\n )}\n
    \n
    \n
    \n

    {proactiveMessage}

    \n \n
    \n
    \n )}\n {loaded && isValidToken() && (\n
    \n
    \n {props.config.storeLogoURL && (\n logo\n )}\n
    \n \n
    \n
    \n \n
    \n
    \n )}\n {!isValidToken() &&
    {props.config.unableToLoadChatMessage}
    }\n
    \n );\n};\n\nexport default Chat;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { Chat, IPvaChatConnectorViewProps } from './index';\n\nexport default (props: IPvaChatConnectorViewProps) => {\n // Only for CDN loading check, won't be needed with npm package of Botframework-WebChat\n const [loaded, setLoaded] = React.useState(false);\n const p = {\n ...props\n };\n\n // Just to verify that CDN Chat Widget js lib is loaded\n // Remove this block if moving to npm package of Botframework-WebChat\n const interval = setInterval(() => {\n const t = typeof window;\n if (t !== 'undefined' && window.WebChat) {\n setLoaded(true);\n clearInterval(interval);\n }\n }, 100);\n\n return
    {loaded && }
    ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.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 }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\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 { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): 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: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
    {renderProductImage(props)}
    \n
    \n
    {product?.Name}
    \n
    {product?.ItemId}
    \n
    \n
    \n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\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 * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

    {props.resources.loyaltyTermsHeading}

    ,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

    {props.resources.loyaltyAgreeToTerms}

    \n };\n};\n"],"names":["SignUpText","props","React","className","text","LoyaltySignUp","constructor","super","handleHeadingChange","event","this","config","heading","target","value","handleMemberHeadingChange","memberHeading","_issueLoyalty","context","request","user","isAuthenticated","state","clicked","setState","input","IssueLoyaltyInput","apiSettings","issueLoyalty","actionContext","then","MsDyn365","isBrowser","window","location","assign","Msdyn365","catch","error","telemetry","message","debug","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","TelemetryConstant","SignIn","loyaltySignInAttributes","getTelemetryAttributes","contentAction","etext","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","shouldComponentUpdate","nextProps","nextState","data","render","_data$customerInforma","_this$props$context$a","resources","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","result","undefined","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","viewProps","_objectSpread","moduleProps","infoMessageBar","accountProcessingPendingInfoMessage","loading","params","isEditor","status","tag","editProps","onEdit","requestContext","signInLink","Button","Object","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","onClick","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","renderView","__decorate","observer","Module","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","checked","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","modal","CardNumber","LoyaltyTermsModal","returnRef","isOpen","terms","onToggle","onSubmit","onCheck","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","Node","modalHeader","modalBody","agreeSection","checkbox","agreeText","modalFooter","submitButton","cancelButton","PvaChatConnector","componentDidMount","isOboRequest","botFrameworkCDNURL","pvaChatConnectorBotFrameworkCDNURL","script","document","createElement","src","async","crossOrigin","body","appendChild","BusinessPartnerPromotionTermsParagraph","_ref","title","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","classnames","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","type","termsOfServiceLinkText","onChange","termsOfServiceAgreementText","role","termsOfServiceModal","Modal","horizontalPosition","verticalPosition","autoFocus","fade","toggle","ModalHeader","termsOfServiceModalHeading","ModalBody","submitRequestLabel","notificationBar","Alert","color","results","map","idx1","_description$bulletPo","key","bulletPoints","bulletPoint","idx2","label","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","attributes","CookieComplianceLinks","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","linkText","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","push","links","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","ref","AlertProps","Content","ArrayExtensions","hasElements","acceptButton","setConsentCookie","reload","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","item","ProductComparisonItem","product","RecordId","catalogId","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","id","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","buttonText","onClickHandler","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","items","getCatalogId","filter","SitePicker","_cookieName","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","setTimeout","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","current","contains","_sitePickerMenuNode","_resetSiteOptionsState","focus","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","_updateViewport","device","Type","_document","_document2","addEventListener","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","removeEventListener","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","isMobileView","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","e","preventDefault","currentTarget","cookieConfig","maxAge","cookieLifetime","set","goToString","_stripTrailingSlashes","stripLocale","pathname","toString","path","replace","includes","slice","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","siteOptions","_image$imageSettings","_item$siteRedirectUrl","image","siteImage","imageProps","gridSettings","imageSettings","tabIndex","siteRedirectUrl","siteName","Image","altText","loadFailureBehavior","shouldSkipToMainImage","_getViewport","innerWidth","observable","computed","Subscribe","handleTextChange","handleParagraphChange","paragraph","emailAddress","_emailAddressInputRef","showResponseMessage","isError","inputValue","hideResponseMessage","_heading$tag","doSubscribe","useDoubleOptIn","audience","response","subscribeToMailChimpAsync","Status","renderSubscriptionResultMessage","subscriptionSuccessMessage","subscriptionOptInMessage","subscriptionFailMessage","subscribeParagraph","subscribeHeading","handleText","handleSubscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","name","autoComplete","emailInput","subscribeFormEmailAriaLabel","placeholder","subscribeEmailPlaceholderText","subscribeFormSubmitAriaLabel","subscribeButtonLabel","submitButtonLabelText","responseMessage","renderSubscriptionResultAlert","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","header_content","productHeading","quantityHeading","priceHeading","cart_line","cartLine","_cartLine$data","_cartLine$data2","_cartLine$data3","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","ItemId","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data4","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","_props$data$cart$resu","subtotal","price","cart","NetPrice","shipping","otherCharge","tax","promoCode","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","groupTitle","toLowerCase","_renderCartLinesGroupTitle","_cartLine$data5","_cartLine$data6","_cartLine$data7","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","_props$context$action","_props$cart","checkoutChanged","setCheckoutChanged","useState","useEffect","doc","getElementsByClassName","innerHTML","loggedOutCheckoutButtonText","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","_renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","_renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","CarouselProps","Thumbnails","MediaGallery","images","querySelectorAll","formatJpgString","img","indexOf","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showMenuOnHover","_handleMouseLeaveEvent","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","_handleFocusOutside","relatedTarget","_closeSubmenu","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","_categoryImage$imageS","_this$props$config$ca","ImageData","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","menuItemData","retailMenuInsertLinks","cmsNavItems","_menuItemDataClone","retailMenu","find","mi","menuSource","hideMenuItem","_item$linkUrl","_retailMenu$subMenu","_item$image","_retailMenu$subMenu2","tempMenuItem","linkURL","shouldOpenNewTab","subMenu","splice","insertPosition","menuItem","menuItemPair","cms","idx","findIndex","i","timeout","_renderMobileMenu","_renderDesktopMenu","Navigation","posinset","_renderDrawerMenu","MenuList","_renderDisplay","setSize","_renderDrawer","_renderLinkMenuItem","keyValue","isDrawerOpen","colProps","toggleButtonProps","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","_renderMenu","menuHideTimeout","timeToCloseMenu","traverseNodes","nodeList","node","isInMenu","parentNode","_node$classList","classList","clearTimeout","onMouseEnter","onFocus","hoverEffect","arguments","isParent","Link","imagesource","currentPath","menuLink","cmsMenuLink","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","OrderConfirmationOrderInfomation","orderInformationProps","receiptEmail","createdDate","OrderConfirmationSalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","_ref3","deliveryProps","processing","address","trackingInfo","pickupDateTimeslot","OrderConfirmationGroup","_ref4","groupProps","delivery","salesLinesProps","salesLines","orderSummaryTitle","_renderOrderSummaryHeading","LineId","OrderConfirmationGroups","_ref5","groupsProps","groups","group","OrderConfirmationOrderSummary","_ref6","salesOrder","orderSummaryProps","totalAmount","earnedPoints","backToShoppingLink","SubtotalAmountWithoutTax","OrderConfirmationPayment","_ref7","paymentMethodsProps","methods","OrderConfirmationHelp","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","productColumnHeading","colorColumnHeading","sizeColumnHeading","quantityColumnHeading","priceColumnHeading","totalColumnHeading","getPriceContext","typeName","freePriceText","_salesOrder$CreatedDa","_salesOrder$CreatedDa2","orderInfomation","orderSummary","payment","help","orderString","CreatedDateTime","orderDate","Date","changeHref","msdyn365Commerce","el","channelReferenceId","thankYouMessage","orderPlacedOnLabel","toLocaleDateString","priceContext","tyvm","paidMsg","signOff","teamNile","OrderHistoryOrderInfomation","salesId","receiptId","channelName","amount","OrderHistoryGroupDelivery","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderDetailsLink","expandProductsButton","OrderHistoryList","listProps","salesOrders","orderHistoryProps","emptyMessage","list","table","moreButton","buildReviewCard","cardProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","Error","uuid","REGEX","test","byteToHex","substr","arr","offset","validate","TypeError","buf","rnds","random","stringify","CartAmountTrigger","ProactiveChatTrigger","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","isValid","CartLines","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","toUTCString","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","dateParts","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","trim","referrer","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","expdate","setTime","_updateVisitCounter","proactiveOnPageVisitNumber","clear","domain","hostname","expires","PageVisits","eCommerceCustProactiveNumberOfVisits","proactiveOnPageVisitMessage","get","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","isNaN","waitTimeInMilliseconds","Number","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","userId","uuidv4","_getContext","enabled","_proactiveCheck","provider","_getProvider","_this$props$context$r","eCommerceOperatingUnitNumber","oun","eCommerceBaseUrl","baseUrl","eCommerceDataAreaId","InventLocationDataAreaId","UserId","AccountNumber","customerAccountNumber","Email","FirstName","firstName","anonymousUserName","LastName","lastName","Name","eCommerceCustPageURL","eCommerceCustChatType","proactiveChatEnabled","proactive","_isProactive","getChatWrapperStyle","position","top","right","bottom","left","zIndex","display","justifyContent","getMaximizedChatWrapperStyle","isMobileDevice","width","padding","chatHeight","chatWidth","getChatButtonStyle","alignItems","backgroundColor","startChatButtonBackgroundColor","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","join","CommerceChatStore","setNewMessage","setNewMessageAction","powervaDirectlineTokenURL","botID","tenantID","fetch","method","r","json","token","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","dispatch","next","action","payload","language","navigator","_activity$from","activity","triggerQuery","ReactWebChat","WebChat","setUserId","useMemo","ctx","directLine","createDirectLine","directLineToken","commerceChatStore","store","createStore","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","userID","INVALID_TOKEN","loaded","setLoaded","setMinimized","newMessage","setToken","isProactive","setIsProactive","proactiveMessage","setProactiveMessage","closed","setClosed","setProvider","Viewport","chatStyle","getChatStyling","ChatWrapperStyle","MaximizedChatWrapperStyle","ChatButtonStyle","ButtonStoreLogoStyle","ChatStoreLogoStyle","ChatMessagesStyle","ChatMessageHeader","MinimizeButtonStyle","CloseButtonStyle","ChatMessageContent","ProactiveWrapperStyle","ProactiveMessageHeader","ProactiveMessageContent","ProactiveButtonStyle","RedDotStyle","background","handleMaximizeButtonClick","getDirectLineToken","contextProvider","ContextProvider","prov","init","isValidToken","style","alt","fontWeight","fontSize","chatButtonHeader","chatButtonText","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","version","viewBox","xmlSpace","d","fill","ChatCore","unableToLoadChatMessage","p","interval","setInterval","clearInterval","Chat","renderCustomerName","customer","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","keys","OrderInfomation","channelAddress","note","SalesLine","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","Groups","OrderSummary","Payment","Help","_ref9","viewModes","tableViewActions","placedBy","IFrameView","ProductComparisonButtonViewFunctionalComponent","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","cropFocalRegion","renderProductImage","signInMessage","signInButton","RichTextComponent","selectRatingLabel","reviewTitleLabel","reviewTextLabel","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","applicationNode","returnFocusRef","ModalFooter","cancelLoyaltyTermsText","joinLoyaltyTermsText","loyaltyTermsHeading","loyaltyAgreeToTerms"],"sourceRoot":""}