{"version":3,"sources":["webpack:///src/modules/country-picker/country-picker.tsx?051f","webpack:///./src/modules/checkout-guest-profile-emarsys/checkout-guest-profile-emarsys.view.tsx?a109","webpack:///./src/modules/checkout-guest-profile-emarsys/components/get-add-contact-info.tsx?7f0f","webpack:///./src/modules/checkout-guest-profile-emarsys/components/get-show-contact-info.tsx?842c","webpack:///./src/modules/checkout-guest-profile-emarsys/checkout-guest-profile-emarsys.tsx?e99a","webpack:///src/modules/country-picker/country-picker.view.tsx?825b","webpack:///src/modules/check-in-for-pickup/check-in-confirmation.tsx?9d47","webpack:///src/modules/check-in-for-pickup/check-in-error.tsx?9f7f","webpack:///src/modules/check-in-for-pickup/check-in-for-pickup.tsx?404b","webpack:///src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?26b3"],"names":["CountryPicker","React","constructor","props","super","_telemetryContent","getTelemetryObject","this","context","request","telemetryPageName","friendlyName","telemetry","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","setState","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","includes","isCookieValueSet","get","value","state","undefined","render","_heading$tag","heading","subheading","countryList","actionLink","config","isConsentGiven","countryPickerHeading","MsDyn365","className","tag","text","editProps","onEdit","handleTextChange","requestContext","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","Button","onClick","tabIndex","resources","stayOnCurrentSiteButtonText","viewprops","_objectSpread","modalContainer","moduleProps","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","link","renderCountryList","stayOnCurrentSiteButton","renderView","event","target","handleLinkTextChange","_this$props$config$ac","linkText","StringExtensions","isNullOrEmpty","linkUrl","destinationUrl","_link$linkText","payLoad","getPayloadObject","attributes","getTelemetryAttributes","editableLink","ariaLabel","openInNewTab","role","additionalProperties","onTelemetryClick","onTextChange","localeItems","map","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","find","item","url","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","key","displayString","href","src","altText","loadFailureBehavior","shouldSkipToMainImage","displaySubString","ShowContactInfo","_ref","showInfoProps","email","editButton","Node","Object","assign","AddContactInfo","_ref2","addFormProps","submitButton","cancelButton","inputGroupProps","label","error","input","CheckoutGuestProfileView","_ref3","showContactInfo","addContactInfo","checkBox","reCaptcha","Module","getAddContactInfo","hasError","inputRef","canSubmit","canCancel","onChange","onSubmit","onCancel","emailLabel","emailErrortext","saveBtnLabel","cancelBtnLabel","onInputChange","onInputChangeHandler","title","color","classnames","id","ref","type","getContactInfo","canEdit","editBtnLabel","CheckoutGuestProfile","user","isAuthenticated","emailAddress","TermsAndConditionsChecked","reCaptchaChecked","rCCError","_TermsAndConditionsRef","_recaptchaRef","init","async","checkoutState","data","checkout","result","hasInvoiceLine","checkoutCart","emailOnCart","cart","ReceiptEmail","isExpressCheckoutApplied","emailAddressFromExpressCheckout","updateGuestProfile","updateHasGuestCheckoutEmail","newHasGuestCheckoutEmail","isEmailValid","moduleState","status","rowEmail","replace","RegExp","setHasError","_checkBoxOnChange","e","isChecked","current","checked","EmailRegex","defaultRegex","test","updateGuestCheckoutEmail","newGuestCheckoutEmail","information","onUpdating","submitEmail","_this$_recaptchaRef$c","execute","console","log","onReady","_this$inputRef$curren","focus","guestCheckoutEmail","componentDidMount","when","isDataReady","reaction","_this$props$data$chec","_this$props$data$chec2","isExpressAddressApplied","_this$props$data$chec3","_this$props$data$chec4","shouldComponentUpdate","nextProps","nextState","_this$props$data$chec5","_this$props$data$chec6","isReady","hasExternalSubmitGroup","viewProps","_renderCheckbox","_renderReCaptcha","getShowContactInfo","termsAndConditionsText","termsAndConditionsLink","_renderRecaptchaAlert","ReCAPTCHA","sitekey","reCaptchaSiteKey","size","_submit","reCaptchaOption","recaptchaErrorMessage","emarsysGroupId","emarsysGroup","_this$_recaptchaRef$c2","response","optIn","Result","reset","__decorate","computed","withModuleState","observer","countryPickerView","country","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","channelReferenceId","QRCode","CheckInErrorComponent","errorMessage","CheckInForPickup","checkInForOrderPickup","channelId","Number","parseInt","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","ObjectExtensions","isNullOrUndefined","additionalInformation","push","Key","Value","StringValue","SalesOrdersDataActions","checkInForOrderPickupAsync","callerContext","actionContext","queryResultSettings","headerErrorMessage","genericErrorMessage","isCheckedIn","Promise","resolve","_onInit","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","isNaN","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","ArrayExtensions","hasElements","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","viewState","additionalInformationHeading","CheckInViewComponent","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage"],"mappings":"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","file":"static/js/28.38974eb848ca0450d7ff.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
\n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\n","/*!\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 { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './checkout-guest-profile-emarsys';\r\n\r\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton }) => (\r\n \r\n {email}\r\n {editButton}\r\n \r\n);\r\n\r\nexport const AddContactInfo: React.FC = ({\r\n addFormProps,\r\n submitButton,\r\n cancelButton,\r\n inputGroupProps,\r\n label,\r\n error,\r\n input\r\n}) => (\r\n \r\n \r\n {'Email Address'}\r\n {error}\r\n {input}\r\n \r\n {submitButton}\r\n {cancelButton}\r\n \r\n);\r\n\r\nconst CheckoutGuestProfileView: React.FC = ({ moduleProps, showContactInfo, addContactInfo, checkBox, reCaptcha}) => {\r\n return (\r\n \r\n {showContactInfo && }\r\n {addContactInfo && }\r\n {checkBox}\r\n {reCaptcha}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutGuestProfileView;\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 { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddContactInfoInput {\r\n inputRef?: React.RefObject;\r\n hasError: boolean;\r\n email: string;\r\n resources: {\r\n emailLabel: string;\r\n emailErrortext: string;\r\n saveBtnLabel: string;\r\n cancelBtnLabel: string;\r\n };\r\n canSubmit: boolean;\r\n canCancel: boolean;\r\n onChange(email: string): void;\r\n onSubmit(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddContactInfo {\r\n addFormProps: INodeProps;\r\n submitButton: React.ReactNode;\r\n cancelButton: React.ReactNode;\r\n inputGroupProps: INodeProps;\r\n label: React.ReactNode;\r\n error: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\n/**\r\n * On Input change handler function.\r\n * @param onChange -On change input function.\r\n * @returns Call of onChange function.\r\n */\r\nconst onInputChangeHandler = (onChange: (email: string) => void) => (event: React.ChangeEvent): void => {\r\n onChange(event.target.value || '');\r\n};\r\n\r\nconst getAddContactInfo = ({\r\n hasError,\r\n inputRef,\r\n email,\r\n canSubmit,\r\n canCancel,\r\n onChange,\r\n onSubmit,\r\n onCancel,\r\n resources: { emailLabel, emailErrortext, saveBtnLabel, cancelBtnLabel }\r\n}: IAddContactInfoInput): IAddContactInfo => {\r\n const onInputChange = onInputChangeHandler(onChange);\r\n\r\n return {\r\n addFormProps: { className: 'ms-checkout-guest-profile__add-contact-info' },\r\n submitButton: canSubmit && (\r\n \r\n ),\r\n cancelButton: canCancel && (\r\n \r\n ),\r\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\r\n label: (\r\n \r\n ),\r\n error: hasError && (\r\n \r\n {emailErrortext}\r\n \r\n ),\r\n input: (\r\n \r\n )\r\n };\r\n};\r\n\r\nexport default getAddContactInfo;\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 { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IShowContactInfoInput {\r\n canEdit: boolean;\r\n email: string;\r\n resources: {\r\n editBtnLabel: string;\r\n };\r\n onEdit(): void;\r\n}\r\n\r\nexport interface IShowContactInfo {\r\n showInfoProps: INodeProps;\r\n email: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n}\r\n\r\nconst getContactInfo = ({ canEdit, email, resources: { editBtnLabel }, onEdit }: IShowContactInfoInput): IShowContactInfo => ({\r\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n email: {email},\r\n editButton: canEdit && (\r\n \r\n )\r\n});\r\n\r\nexport default getContactInfo;\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 { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nimport { computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nimport { ICheckoutGuestProfileEmarsysData } from './checkout-guest-profile-emarsys.data';\r\nimport { ICheckoutGuestProfileEmarsysProps } from './checkout-guest-profile-emarsys.props.autogenerated';\r\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\r\nimport getShowContactInfo, { IShowContactInfo } from './components/get-show-contact-info';\r\n\r\nexport * from './components/get-add-contact-info';\r\nexport * from './components/get-show-contact-info';\r\n\r\ninterface ICheckoutGuestProfileState {\r\n email: string;\r\n TermsAndConditionsChecked: boolean;\r\n reCaptchaChecked: boolean;\r\n rCCError: boolean;\r\n\r\n}\r\n\r\nexport interface ICheckoutGuestProfileModuleProps extends ICheckoutGuestProfileEmarsysProps, IModuleStateProps { }\r\n\r\nexport interface ICheckoutGuestProfileViewProps extends ICheckoutGuestProfileEmarsysProps, ICheckoutGuestProfileState {\r\n moduleProps: IModuleProps;\r\n showContactInfo?: IShowContactInfo;\r\n addContactInfo?: IAddContactInfo;\r\n reCaptcha: React.ReactNode;\r\n checkBox: React.ReactNode;\r\n\r\n onChange?(email: string): void;\r\n onEdit?(): void;\r\n onSubmit?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuestProfile component.\r\n * @extends {React.PureComponent, ICheckoutGuestProfileState>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutGuestProfile extends React.Component {\r\n public state: ICheckoutGuestProfileState = {\r\n email:\r\n (this.props.context &&\r\n this.props.context.request &&\r\n this.props.context.request.user &&\r\n this.props.context.request.user.isAuthenticated &&\r\n this.props.context.request.user.emailAddress) ||\r\n '',\r\n TermsAndConditionsChecked: false,\r\n reCaptchaChecked: false,\r\n rCCError: false,\r\n };\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n private _TermsAndConditionsRef: React.RefObject = React.createRef();\r\n private _recaptchaRef: React.RefObject = React.createRef();\r\n private recaptchaErrorMessage: string | undefined;\r\n // private responseMessage: string | undefined;\r\n\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n public componentDidMount(): void {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\r\n async isExpressCheckoutApplied => {\r\n if (isExpressCheckoutApplied && !this.props.data.checkout.result?.isExpressAddressApplied) {\r\n const email = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\r\n\r\n await this.submitEmail(email);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutGuestProfileModuleProps, nextState: ICheckoutGuestProfileState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n config: { className },\r\n resources,\r\n moduleState: { isReady, hasError, hasExternalSubmitGroup }\r\n } = this.props;\r\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\r\n // const checkBox : this._renderCheckbox();\r\n\r\n const viewProps: ICheckoutGuestProfileViewProps = {\r\n ...this.props,\r\n ...this.state,\r\n onChange: this.onChange,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n checkBox: this._renderCheckbox(),\r\n reCaptcha: this._renderReCaptcha(),\r\n\r\n\r\n moduleProps: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-guest-profile', className, isReady ? 'show' : 'add')\r\n },\r\n showContactInfo: isReady\r\n ? getShowContactInfo({\r\n canEdit: !hasExternalSubmitGroup,\r\n email,\r\n resources,\r\n onEdit: this.onEdit\r\n })\r\n : undefined,\r\n addContactInfo: !isReady\r\n ? getAddContactInfo({\r\n email: this.state.email,\r\n hasError,\r\n resources,\r\n inputRef: this.inputRef,\r\n onChange: this.onChange,\r\n canSubmit: !hasExternalSubmitGroup,\r\n onSubmit: this.onSubmit,\r\n canCancel: !hasExternalSubmitGroup && !!email,\r\n onCancel: this.onCancel\r\n })\r\n : undefined\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n\r\n private _renderCheckbox(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n )\r\n }\r\n\r\n private _renderReCaptcha(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n {this.state.rCCError ? this._renderRecaptchaAlert('recaptcha-error') : ''}\r\n this._submit()}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderRecaptchaAlert(className: string): JSX.Element {\r\n\r\n if (this.props.config.reCaptchaOption) {\r\n if (!this.state.reCaptchaChecked) {\r\n this.recaptchaErrorMessage = this.props.resources.recaptchaErrorMessage;\r\n }\r\n }\r\n\r\n const rCCError = this.state.rCCError;\r\n return (\r\n <>\r\n {rCCError && (\r\n \r\n {\r\n this.recaptchaErrorMessage &&\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private readonly init = async (): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\r\n\r\n const emailOnCart = checkoutState?.checkoutCart.cart.ReceiptEmail;\r\n const email = hasInvoiceLine\r\n ? this.props.context.request.user.emailAddress ?? ''\r\n : emailOnCart ??\r\n (checkoutState?.isExpressCheckoutApplied ? checkoutState.emailAddressFromExpressCheckout : undefined) ??\r\n this.state.email;\r\n\r\n if (email) {\r\n await this.updateGuestProfile(email);\r\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\r\n } else {\r\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\r\n }\r\n\r\n const isEmailValid = this.isEmailValid(email);\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n status: hasInvoiceLine ? 'disabled' : email && isEmailValid ? 'ready' : 'updating',\r\n hasError: !!email && !isEmailValid\r\n });\r\n };\r\n\r\n private readonly onChange = (rowEmail: string): void => {\r\n // console.log(\"onChange\")\r\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.setState({ email });\r\n if (this.props.moduleState.hasError) {\r\n // Clear error during user updating the email\r\n this.props.moduleState.setHasError(false);\r\n }\r\n };\r\n\r\n private _checkBoxOnChange = () => (e: React.ChangeEvent) => {\r\n const isChecked = this._TermsAndConditionsRef.current && this._TermsAndConditionsRef.current.checked ? this._TermsAndConditionsRef.current.checked : false;\r\n this.setState({TermsAndConditionsChecked: isChecked });\r\n }\r\n private readonly isEmailValid = (email: string): boolean => {\r\n return EmailRegex.defaultRegex.test(email);\r\n };\r\n\r\n private readonly updateGuestProfile = async (newGuestCheckoutEmail: string): Promise => {\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateGuestCheckoutEmail({ newGuestCheckoutEmail });\r\n this.setState({ email: newGuestCheckoutEmail });\r\n }\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Guest profile onEdit is called.');\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Guest profile onSubmit is called.');\r\n const { email } = this.state;\r\n await this.submitEmail(email);\r\n try {\r\n this._recaptchaRef.current?.execute()\r\n } catch(e) {\r\n console.log(e, 'Please fill the form!');\r\n }\r\n };\r\n\r\n private async _submit(): Promise {\r\n let emarsysGroupId = this.props.config.emarsysGroup;\r\n const { email } = this.state;\r\n try {\r\n const response = await MsDyn365.commerceApiRequest(\r\n this.props.context.request,\r\n 'PostCheckoutGuestProfileEmarsys',\r\n 'post',\r\n {\r\n emailAddress: email,\r\n emarsysGroupId: emarsysGroupId,\r\n optIn:true\r\n }\r\n ) as any;\r\n\r\n if (response?.data.Result !== 'Error') {\r\n console.log('emasys success')\r\n } else {\r\n console.log('this is an emasys error')\r\n }\r\n this._recaptchaRef.current?.reset();\r\n } catch (e) {\r\n console.log('rechatcha error')\r\n }\r\n \r\n }\r\n /**\r\n * Submit the email address.\r\n * @param email - The email to be submitted.\r\n *\r\n */\r\n private readonly submitEmail = async (email: string): Promise => {\r\n const isValid = this.isEmailValid(email);\r\n if (!isValid) {\r\n this.props.moduleState.setHasError(true);\r\n\r\n const input = this.inputRef.current?.focus && (this.inputRef.current as HTMLElement);\r\n input?.focus();\r\n\r\n } else {\r\n this.props.moduleState.onReady();\r\n await this.updateGuestProfile(email);\r\n\r\n }\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n this.props.telemetry.information('Guest profile onCancel is called.');\r\n\r\n // Reset to the saved value\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const email = this.props.data.checkout.result.guestCheckoutEmail;\r\n if (!email) {\r\n // It has no saved email, set to status updating and request user to fill the email form\r\n this.props.moduleState.onUpdating();\r\n } else {\r\n // It has saved email, set to status ready\r\n this.setState({\r\n email\r\n });\r\n this.props.moduleState.setHasError(false);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutGuestProfile;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
\n

{confirmationText}

\n {channelReferenceId && (\n

\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

\n )}\n {channelReferenceId && shouldShowQrCode && (\n \n \n \n )}\n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: (\n \n ),\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys\n ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n })\n : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (\n this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText\n ) {\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage || this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined = additionalInformationList?.map(\n additionalInformationKeyValuePair => {\n return {\n formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '',\n value: additionalInformationKeyValuePair.value\n };\n }\n );\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error(\n 'One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.'\n );\n return Promise.resolve();\n }\n\n const { additionalInformationKeys } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const { headerError, checkInForOrderPickup, confirmationComponent, viewState } = props;\n return (\n <>\n {viewState.isHeaderError && headerError}\n {!viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) && (\n \n )}\n {!viewState.isHeaderError &&\n !ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n viewState.isCheckedIn &&\n confirmationComponent}\n \n );\n};\n\nexport default CheckInViewComponent;\n"],"sourceRoot":""}