{"version":3,"file":"static/js/246407d5674c7f8eef87.bundle.js","mappings":"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","sources":["webpack://henrys-ecommerce/./src/modules/checkout-guest-profile/components/get-add-contact-info.tsx?7e0d","webpack://henrys-ecommerce/./src/modules/checkout-guest-profile/components/get-show-contact-info.tsx?fdf0","webpack://henrys-ecommerce/./src/modules/checkout-guest-profile/checkout-guest-profile.tsx?b125","webpack://henrys-ecommerce/./src/modules/checkout-guest-profile/checkout-guest-profile.view.tsx?8a67","webpack://henrys-ecommerce/./lib/checkout-guest-profile/module-registration.js?4b3c","webpack://henrys-ecommerce/external var \"React\"?0d3b","webpack://henrys-ecommerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\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\nimport { PickupInfo } from './get-show-contact-info';\r\n\r\nexport interface IAddContactInfoInput {\r\n inputRef?: React.RefObject;\r\n pickupNameInputRef?: React.RefObject;\r\n hasError: boolean;\r\n email: string;\r\n newsletter: boolean;\r\n pickupInfo: PickupInfo | null;\r\n pickupNameInvalid: boolean;\r\n resources: {\r\n emailLabel: string;\r\n emailErrortext: string;\r\n saveBtnLabel: string;\r\n cancelBtnLabel: string;\r\n newsletterLabel: string;\r\n pickupNameLabel: string;\r\n pickupNotesLabel: string;\r\n pickupNameErrorText: string;\r\n };\r\n canSubmit: boolean;\r\n canCancel: boolean;\r\n onChange(email: string, newsletter: boolean, pickupInfo: PickupInfo | null): 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 newsletter: React.ReactNode;\r\n pickupName?: React.ReactNode;\r\n pickupNotes?: React.ReactNode;\r\n}\r\n\r\nconst getAddContactInfo = ({\r\n hasError,\r\n inputRef,\r\n pickupNameInputRef,\r\n email,\r\n canSubmit,\r\n canCancel,\r\n newsletter,\r\n pickupInfo,\r\n pickupNameInvalid,\r\n onChange,\r\n onSubmit,\r\n onCancel,\r\n resources: {\r\n emailLabel,\r\n emailErrortext,\r\n saveBtnLabel,\r\n cancelBtnLabel,\r\n newsletterLabel,\r\n pickupNameLabel,\r\n pickupNotesLabel,\r\n pickupNameErrorText\r\n }\r\n}: IAddContactInfoInput): IAddContactInfo => {\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 newsletter: (\r\n
\r\n \r\n \r\n \r\n
\r\n ),\r\n input: (\r\n onChange(evt.target.value || '', newsletter, pickupInfo)}\r\n value={email}\r\n aria-labelledby='ms-checkout-guest-profile__label ms-checkout-guest-profile__error'\r\n />\r\n ),\r\n pickupName: pickupInfo && (\r\n <>\r\n \r\n {pickupNameInvalid && (\r\n \r\n {pickupNameErrorText}\r\n \r\n )}\r\n \r\n onChange(email, newsletter, {\r\n ...pickupInfo,\r\n name: evt.target.value || ''\r\n })\r\n }\r\n value={pickupInfo.name ?? ''}\r\n aria-labelledby='ms-checkout-guest-profile__label ms-checkout-guest-profile__error'\r\n maxLength={50}\r\n />\r\n \r\n ),\r\n pickupNotes: pickupInfo && (\r\n <>\r\n \r\n \r\n onChange(email, newsletter, {\r\n ...pickupInfo,\r\n notes: evt.target.value || ''\r\n })\r\n }\r\n value={pickupInfo.notes ?? ''}\r\n aria-labelledby='ms-checkout-guest-profile__label ms-checkout-guest-profile__error'\r\n maxLength={500}\r\n >\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 type PickupInfo = {\r\n name?: string;\r\n notes?: string;\r\n};\r\n\r\nexport interface IShowContactInfoInput {\r\n canEdit: boolean;\r\n email: string;\r\n newsletter: boolean;\r\n pickupInfo: PickupInfo | null;\r\n resources: {\r\n editBtnLabel: string;\r\n newsletterLabel: string;\r\n pickupNameLabel: string;\r\n pickupNotesLabel: string;\r\n };\r\n onChange(newsletter: boolean): void;\r\n onEdit(): void;\r\n}\r\n\r\nexport interface IShowContactInfo {\r\n showInfoProps: INodeProps;\r\n email: React.ReactNode;\r\n newsletter: React.ReactNode;\r\n pickupName?: React.ReactNode;\r\n pickupNotes?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n}\r\n\r\nconst getContactInfo = ({\r\n canEdit,\r\n email,\r\n newsletter,\r\n pickupInfo,\r\n resources: { editBtnLabel, newsletterLabel, pickupNameLabel, pickupNotesLabel },\r\n onChange,\r\n onEdit\r\n}: IShowContactInfoInput): IShowContactInfo => ({\r\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n email: {email},\r\n newsletter: (\r\n \r\n \r\n \r\n ),\r\n pickupName: pickupInfo?.name && (\r\n \r\n {pickupInfo.name}\r\n \r\n ),\r\n pickupNotes: pickupInfo?.notes && (\r\n \r\n {pickupInfo.notes}\r\n \r\n ),\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 * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { EmailRegex, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classnames from 'classnames';\r\nimport { action, computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\n\r\nimport { ICheckoutGuestProfileData } from './checkout-guest-profile.data';\r\nimport { ICheckoutGuestProfileProps } from './checkout-guest-profile.props.autogenerated';\r\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\r\nimport getShowContactInfo, { IShowContactInfo, PickupInfo } from './components/get-show-contact-info';\r\nimport { AttributeTextValue } from '@msdyn365-commerce/retail-proxy';\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 newsletter: boolean;\r\n pickupInfo: PickupInfo | null;\r\n pickupNameInvalid: boolean;\r\n hasCheckoutError?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nexport interface ICheckoutGuestProfileModuleProps extends ICheckoutGuestProfileProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutGuestProfileViewProps extends ICheckoutGuestProfileProps, ICheckoutGuestProfileState {\r\n moduleProps: IModuleProps;\r\n showContactInfo?: IShowContactInfo;\r\n addContactInfo?: IAddContactInfo;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n\r\n onChange?(email: string, newsletter: boolean, pickupInfo: PickupInfo): 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 newsletter: false,\r\n pickupInfo: null,\r\n pickupNameInvalid: false,\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 };\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n private readonly pickupNameInputRef: React.RefObject = React.createRef();\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\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 @computed get hasPickup(): boolean {\r\n return !!this.props.data.checkout?.result?.checkoutCart.cart.CartLines?.find(sl => sl.DeliveryMode === 'Pick-up');\r\n }\r\n\r\n @computed get hasEmailError(): boolean {\r\n return this.props.moduleState.hasError && !this.state.hasCheckoutError;\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 const emailAddressFromExpressCheckout = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\r\n const isEmailFromExpressCheckoutDifferent =\r\n !StringExtensions.isNullOrEmpty(emailAddressFromExpressCheckout) &&\r\n emailAddressFromExpressCheckout !== this.state.email;\r\n\r\n if (\r\n isExpressCheckoutApplied &&\r\n (!this.props.data.checkout.result?.isExpressAddressApplied || isEmailFromExpressCheckoutDifferent)\r\n ) {\r\n await this.submitEmail(emailAddressFromExpressCheckout, this.getNewsletter(), this.getPickupInfo());\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGuestProfile && checkoutError.errorMessage) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutGuestProfile) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\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, hasExternalSubmitGroup }\r\n } = this.props;\r\n const { hasCheckoutError, errorMessage } = this.state;\r\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\r\n\r\n const hasPickup = this.hasPickup;\r\n const pickupInfo = hasPickup ? this.getPickupInfo() : null;\r\n process.env.NODE_ENV === 'development' && console.log('checkout-guest-profile', 'render', hasPickup, pickupInfo);\r\n\r\n const viewProps: ICheckoutGuestProfileViewProps = {\r\n ...this.props,\r\n ...this.state,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n onChange: this.onChange,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\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 alert: hasCheckoutError && errorMessage && (\r\n \r\n ),\r\n showContactInfo: isReady\r\n ? getShowContactInfo({\r\n canEdit: !hasExternalSubmitGroup,\r\n email,\r\n pickupInfo,\r\n newsletter: this.state.newsletter,\r\n resources,\r\n onChange: this.onNewsletterChange,\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 newsletter: this.state.newsletter,\r\n pickupInfo: hasPickup ? this.state.pickupInfo : null,\r\n pickupNameInvalid: this.state.pickupNameInvalid,\r\n hasError: this.hasEmailError,\r\n resources,\r\n inputRef: this.inputRef,\r\n pickupNameInputRef: this.pickupNameInputRef,\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 private readonly init = async (): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n const customerAccountInformation = this.props.data.accountInformation?.result;\r\n\r\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\r\n let updateEmail: string = '';\r\n\r\n // if obo enabled and profile selected, we need to send the order status to obo user not store manager.\r\n if (Msdyn365.isOboRequest(this.props.context.request)) {\r\n updateEmail =\r\n customerAccountInformation && customerAccountInformation.Email !== undefined\r\n ? customerAccountInformation.Email\r\n : this.setErrorMsgOboUserEmailEmpty();\r\n } else {\r\n updateEmail = this.state.email;\r\n }\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 && !StringExtensions.isNullOrEmpty(checkoutState.emailAddressFromExpressCheckout)\r\n ? checkoutState.emailAddressFromExpressCheckout\r\n : undefined) ??\r\n updateEmail;\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 if (email) {\r\n await this.updateGuestProfile(email);\r\n }\r\n\r\n this.setState({ newsletter: this.getNewsletter() });\r\n if (this.hasPickup) {\r\n const pickupInfo = this.getPickupInfo();\r\n this.setState({ pickupInfo, pickupNameInvalid: false });\r\n }\r\n\r\n await checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\r\n };\r\n\r\n private readonly onChange = (rowEmail: string, newsletter: boolean, pickupInfo: PickupInfo | null): void => {\r\n process.env.NODE_ENV === 'development' && console.log('checkout-guest-profile', 'onChange', rowEmail, newsletter, pickupInfo);\r\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\r\n var emailChanged = email !== this.state.email;\r\n var pickupNameChanged = (pickupInfo?.name ?? '') !== (this.state.pickupInfo?.name ?? '');\r\n this.setState({ email, newsletter, pickupInfo });\r\n if (this.props.moduleState.hasError && emailChanged) {\r\n // Clear error during user updating the email\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n hasCheckoutError: false\r\n });\r\n }\r\n\r\n if (pickupNameChanged) {\r\n this.setState({\r\n pickupNameInvalid: false\r\n });\r\n }\r\n };\r\n\r\n private readonly onNewsletterChange = (newsletter: boolean): void => {\r\n void this.setNewsletter(newsletter).then(() => this.setState({ newsletter }));\r\n };\r\n\r\n private readonly setErrorMsgOboUserEmailEmpty = (): string => {\r\n // Clear prior error\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n pickupNameInvalid: false,\r\n hasCheckoutError: false\r\n });\r\n return '';\r\n };\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\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\r\n const { email, newsletter, pickupInfo } = this.state;\r\n await this.submitEmail(email, newsletter, pickupInfo);\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, newsletter: boolean, pickupInfo: PickupInfo | null): Promise => {\r\n const isValid = this.isEmailValid(email);\r\n const isPickupValid = !this.hasPickup || !!pickupInfo?.name;\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 } else if (!isPickupValid) {\r\n this.setState({ pickupNameInvalid: true });\r\n const input = this.pickupNameInputRef.current?.focus && (this.pickupNameInputRef.current as HTMLElement);\r\n input?.focus();\r\n } else {\r\n this.props.moduleState.onReady();\r\n await this.setNewsletter(newsletter);\r\n pickupInfo && (await this.setPickupInfo(pickupInfo));\r\n await this.updateGuestProfile(email);\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 const pickupInfoReady = !this.hasPickup || !!this.state.pickupInfo?.name;\r\n if (!email || !pickupInfoReady) {\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 pickupInfo: this.getPickupInfo(),\r\n newsletter: this.getNewsletter()\r\n });\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n hasCheckoutError: false\r\n });\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n @action\r\n private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n hasCheckoutError: true,\r\n errorMessage\r\n });\r\n };\r\n\r\n private getPickupInfo(): PickupInfo {\r\n const attr = this.getAttr('PickupInfo');\r\n if (attr?.TextValue) {\r\n try {\r\n return (JSON.parse(attr.TextValue) as PickupInfo) ?? {};\r\n } catch {\r\n console.log('Invalid pickup info');\r\n }\r\n }\r\n\r\n return {};\r\n }\r\n\r\n private getNewsletter(): boolean {\r\n return this.getAttr('OrderNewsletter')?.TextValue === 'Yes';\r\n }\r\n\r\n private getAttr(name: string): AttributeTextValue | undefined {\r\n const cart = this.props.data.checkout.result;\r\n let attrObj = cart?.attributeValues?.find(a => a.Name === name) as AttributeTextValue | undefined;\r\n\r\n if (!attrObj) {\r\n attrObj = cart?.checkoutCart.cart.AttributeValues?.find(a => a.Name === name) as AttributeTextValue | undefined;\r\n }\r\n\r\n return attrObj;\r\n }\r\n\r\n private async setNewsletter(newsletter: boolean) {\r\n const cart = this.props.data.checkout.result;\r\n if (cart) {\r\n const attrs = cart.attributeValues?.slice() ?? [];\r\n let heiNewsletterObj = attrs.find(a => a.Name === 'OrderNewsletter') as AttributeTextValue | undefined;\r\n\r\n if ((heiNewsletterObj?.TextValue === 'Yes') !== newsletter) {\r\n if (!heiNewsletterObj) {\r\n if (!newsletter) {\r\n return;\r\n }\r\n\r\n heiNewsletterObj = {\r\n // @ts-ignore\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: 'OrderNewsletter',\r\n ExtensionProperties: []\r\n };\r\n\r\n attrs.push(heiNewsletterObj!);\r\n }\r\n\r\n heiNewsletterObj!.TextValue = newsletter ? 'Yes' : 'No';\r\n process.env.NODE_ENV === 'development' && console.log('checkout-guest-profile', 'setNewsletter', attrs);\r\n await this.props.data.checkout.result?.updateAttributeValues({ newAttributeValues: attrs });\r\n await this.props.data.checkout.result?.checkoutCart.updateAttributeValues({ newAttributeValues: attrs });\r\n this.setState({ newsletter: newsletter });\r\n }\r\n }\r\n }\r\n\r\n private async setPickupInfo(pickupInfo: PickupInfo) {\r\n const currentVal = this.getPickupInfo();\r\n if ((currentVal.name ?? '') === (pickupInfo.name ?? '') && (currentVal.notes ?? '') === (pickupInfo.notes ?? '')) {\r\n return;\r\n }\r\n\r\n const cart = this.props.data.checkout.result;\r\n if (cart) {\r\n const attrs = cart.attributeValues?.slice() ?? [];\r\n let attrObj = attrs.find(a => a.Name === 'PickupInfo') as AttributeTextValue | undefined;\r\n\r\n if (!attrObj) {\r\n attrObj = {\r\n // @ts-ignore\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: 'PickupInfo',\r\n ExtensionProperties: []\r\n };\r\n\r\n attrs.push(attrObj!);\r\n }\r\n\r\n attrObj!.TextValue = JSON.stringify(pickupInfo);\r\n process.env.NODE_ENV === 'development' && console.log('checkout-guest-profile', 'setPickupInfo', attrs);\r\n await this.props.data.checkout.result?.updateAttributeValues({ newAttributeValues: attrs });\r\n await this.props.data.checkout.result?.checkoutCart.updateAttributeValues({ newAttributeValues: attrs });\r\n this.setState({ pickupInfo });\r\n }\r\n }\r\n}\r\n\r\nexport default CheckoutGuestProfile;\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 { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './checkout-guest-profile';\r\n\r\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, newsletter, pickupName, pickupNotes, editButton }) => (\r\n \r\n {email}\r\n {newsletter}\r\n {pickupName}\r\n {pickupNotes}\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 pickupName,\r\n pickupNotes,\r\n newsletter\r\n}) => (\r\n \r\n \r\n {label}\r\n {error}\r\n {input}\r\n \r\n {newsletter}\r\n {pickupName && {pickupName}}\r\n {pickupNotes && {pickupNotes}}\r\n {submitButton}\r\n {cancelButton}\r\n \r\n);\r\n\r\nconst CheckoutGuestProfileView: React.FC = ({\r\n moduleProps,\r\n checkoutErrorRef,\r\n alert,\r\n showContactInfo,\r\n addContactInfo\r\n}) => {\r\n return (\r\n \r\n {alert}\r\n {showContactInfo && }\r\n {addContactInfo && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutGuestProfileView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['checkout-guest-profile'] = {\n c: () => require('partner/modules/checkout-guest-profile/checkout-guest-profile.tsx'),\n $type: 'contentModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-guest-profile',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-guest-profile'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|checkout-guest-profile|checkout-guest-profile'] = {\n c: () => require('partner/modules/checkout-guest-profile/checkout-guest-profile.view.tsx'),\n cn: '__local__-__local__-checkout-guest-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-guest-profile|checkout-guest-profile'] = {\n c: () => require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-guest-profile'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["_ref","_pickupInfo$name","_pickupInfo$notes","hasError","inputRef","pickupNameInputRef","email","canSubmit","canCancel","newsletter","pickupInfo","pickupNameInvalid","onChange","onSubmit","onCancel","resources","emailLabel","emailErrortext","saveBtnLabel","cancelBtnLabel","newsletterLabel","pickupNameLabel","pickupNotesLabel","pickupNameErrorText","addFormProps","className","submitButton","React","Button","title","color","onClick","cancelButton","inputGroupProps","classnames","label","id","error","role","type","checked","evt","target","input","ref","value","pickupName","_objectSpread","name","maxLength","pickupNotes","notes","canEdit","editBtnLabel","onEdit","showInfoProps","editButton","CheckoutGuestProfile","constructor","state","this","props","context","request","user","isAuthenticated","emailAddress","checkoutErrorRef","init","async","_this$props$data$acco","_this$props$context$r","checkoutState","data","checkout","result","customerAccountInformation","accountInformation","hasInvoiceLine","checkoutCart","updateEmail","Msdyn365","undefined","Email","setErrorMsgOboUserEmailEmpty","emailOnCart","cart","ReceiptEmail","isExpressCheckoutApplied","StringExtensions","isNullOrEmpty","emailAddressFromExpressCheckout","isEmailValid","moduleState","status","updateGuestProfile","setState","getNewsletter","hasPickup","getPickupInfo","updateHasGuestCheckoutEmail","newHasGuestCheckoutEmail","rowEmail","_this$state$pickupInf","_this$state$pickupInf2","replace","RegExp","emailChanged","pickupNameChanged","setHasError","hasCheckoutError","onNewsletterChange","setNewsletter","then","EmailRegex","defaultRegex","test","updateGuestCheckoutEmail","newGuestCheckoutEmail","telemetry","information","onUpdating","submitEmail","isValid","isPickupValid","onReady","setPickupInfo","_this$pickupNameInput","current","focus","_this$inputRef$curren","_this$state$pickupInf3","guestCheckoutEmail","pickupInfoReady","_setErrorMessage","errorMessage","_this$props$data$chec","CartLines","find","sl","DeliveryMode","componentDidMount","_this$props$data$chec6","when","isDataReady","reaction","_this$props$data$chec2","_this$props$data$chec3","_this$props$data$chec4","_this$props$data$chec5","isEmailFromExpressCheckoutDifferent","isExpressAddressApplied","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec7","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec8","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","actionContext","shouldComponentUpdate","nextProps","nextState","render","_this$props$data$chec9","_this$props$data$chec10","config","isReady","hasExternalSubmitGroup","viewProps","moduleProps","alert","ErrorComponent","Object","assign","errorMessageTitle","message","showContactInfo","getShowContactInfo","addContactInfo","getAddContactInfo","hasEmailError","renderView","attr","getAttr","TextValue","_JSON$parse","JSON","parse","_unused","console","log","_this$getAttr","_cart$attributeValues","attrObj","attributeValues","a","Name","_cart$checkoutCart$ca","AttributeValues","_cart$attributeValues2","_cart$attributeValues3","_heiNewsletterObj","attrs","slice","heiNewsletterObj","_this$props$data$chec11","_this$props$data$chec12","ExtensionProperties","push","updateAttributeValues","newAttributeValues","_currentVal$name","_pickupInfo$name2","_currentVal$notes","currentVal","_cart$attributeValues4","_cart$attributeValues5","_this$props$data$chec13","_this$props$data$chec14","stringify","__decorate","computed","action","withModuleState","observer","ShowContactInfo","Node","AddContactInfo","_ref2","_ref3","Module","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}