{"version":3,"file":"static/js/6.05fd5bf2dce3dc7e105b.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/./src/common/payment-instrument.dropin.style.ts?5102","webpack://Msdyn365.Commerce.Online/./src/common/add-payment-form.tsx?1cf5","webpack://Msdyn365.Commerce.Online/./src/common/checkout.tsx?29a4","webpack://Msdyn365.Commerce.Online/./src/common/empty-active-cart.tsx?dc76","webpack://Msdyn365.Commerce.Online/./src/common/error.tsx?096f","webpack://Msdyn365.Commerce.Online/./src/common/iframe.tsx?feca","webpack://Msdyn365.Commerce.Online/./src/common/index.ts?f3e7","webpack://Msdyn365.Commerce.Online/./src/common/payment-instrument-message.ts?53ea","webpack://Msdyn365.Commerce.Online/./src/common/place-order.tsx?8526","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/common/with-visibility-observer.tsx?95e4"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise<CheckoutState> {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext<IGeneric<IAny>>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction<CheckoutState>({\n action: <IAction<CheckoutState>>checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly<TokenizedPaymentCard> | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly<TenderLine> | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly<Address> | undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly<Address> | undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly<string> | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly<string> | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly<number> | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly<string> | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly<boolean> | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly<number> | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = <IModuleStates>ctx.get<IModuleStates>(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = <IModuleStates>ctx.get<IModuleStates>(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState = <P extends IProps>(WrappedComponent: React.ComponentType<P>): React.ComponentType<P> => {\n /**\n *\n * ModuleState component.\n * @extends {React.Component<P>}\n */\n @observer\n class ModuleState extends React.Component<P> {\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return <WrappedComponent {...this.props} moduleState={this.getModuleStateManager(id)} />;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial<IModuleState>): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial<IModuleState>): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial<IModuleState>): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial<IModuleState>,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial<IModuleState>,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport {\n CheckoutModule,\n ErrorCode,\n ErrorLocation,\n ErrorMessageResource,\n getCheckoutState,\n ICheckoutError,\n ICheckoutState\n} from '@msdyn365-commerce/global-state/';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- create global class\nexport class CheckoutErrors {\n public static readonly ActionError: ICheckoutError = {\n errorCode: ErrorCode.ActionError,\n errorMessageResource: ErrorMessageResource.checkoutTimeoutErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n errorMessageResource: ErrorMessageResource.blockedLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n errorMessageResource: ErrorMessageResource.customerAccountLimitSignDifferentFromAmountDueErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_FraudRisk: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n errorMessageResource: ErrorMessageResource.fraudRiskErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n errorMessageResource: ErrorMessageResource.giftCardBalanceInquiryFailedErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n errorMessageResource: ErrorMessageResource.giftCardCurrencyMismatchErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n errorMessageResource: ErrorMessageResource.invalidCartVersionErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n errorMessageResource: ErrorMessageResource.invalidLoyaltyCardNumberErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n errorMessageResource: ErrorMessageResource.missingRequiredCartTenderLinesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n errorMessageResource: ErrorMessageResource.multipleCustomerAccountPaymentsNotAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n errorMessageResource: ErrorMessageResource.noMoreThanOneLoyaltyTenderErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n errorMessageResource: ErrorMessageResource.noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n errorMessageResource: ErrorMessageResource.noTenderLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n errorMessageResource: ErrorMessageResource.notEnoughRewardPointsErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n errorMessageResource: ErrorMessageResource.paymentAlreadyVoidedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n errorMessageResource: ErrorMessageResource.paymentAmountExceedsGiftBalanceErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n errorMessageResource: ErrorMessageResource.paymentUsingUnauthorizedAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n errorMessageResource: ErrorMessageResource.refundAmountMoreThanAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n errorMessageResource: ErrorMessageResource.unableToCancelPaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n errorMessageResource: ErrorMessageResource.unableToReadCardTokenInfoErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n errorMessageResource: ErrorMessageResource.unableToRetrieveCardPaymentAcceptResultErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly checkoutErrorsList: ICheckoutError[] = [\n CheckoutErrors.ActionError,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult\n ];\n}\n\nexport async function setCheckoutErrors(\n errorCode: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resources: any,\n isExpressCheckoutApplied: boolean,\n ctx: IActionContext\n): Promise<void> {\n let clientCheckoutError: ICheckoutError | undefined;\n let consoleCheckoutErrors: ICheckoutError[] = [];\n\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n // find the checkout errors\n for (const checkoutError of CheckoutErrors.checkoutErrorsList) {\n if (errorCode === checkoutError.errorCode) {\n if (checkoutError.errorLocation === ErrorLocation.Console) {\n let consoleCheckoutError: ICheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n consoleCheckoutErrors.push(consoleCheckoutError);\n } else {\n if (clientCheckoutError) {\n ctx.telemetry.exception(new Error('Invalid number of client checkout errors.'));\n throw new Error('Invalid number of client checkout errors.');\n } else {\n clientCheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n }\n }\n }\n }\n\n // log the console checkout errors\n for (let consoleCheckoutError of consoleCheckoutErrors) {\n consoleCheckoutError.errorMessage = getCheckoutErrorMessage(resources, consoleCheckoutError.errorMessageResource!);\n console.log(consoleCheckoutError.errorMessage);\n }\n\n // handle the client checkout error\n if (clientCheckoutError) {\n clientCheckoutError.errorMessage = getCheckoutErrorMessage(resources, clientCheckoutError.errorMessageResource!);\n\n if (isExpressCheckoutApplied && clientCheckoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument) {\n clientCheckoutError.errorLocation = ErrorLocation.Checkout;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: clientCheckoutError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n } else {\n // if could not map to any checkout error(s), show the generic error\n if (consoleCheckoutErrors.length === 0) {\n let genericError = {\n errorMessage: resources.genericErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n await checkoutState.updateCheckoutError({ newCheckoutError: genericError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n }\n }\n}\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject<HTMLElement>, ctx: IActionContext): Promise<void> {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: false });\n}\n\nexport async function setCheckoutErrorFocus(checkoutModuleId: string, ctx: IActionContext): Promise<void> {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n for (let checkoutModule of Object.keys(CheckoutModule)) {\n if (checkoutModuleId.includes(CheckoutModule[checkoutModule])) {\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule[checkoutModule] });\n return;\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCheckoutErrorMessage(resources: any, errorMessageResource: ErrorMessageResource): string {\n let errorResource = Object.keys(resources).find(resource => resource === errorMessageResource);\n return resources[errorResource!];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// eslint-disable-next-line import/no-anonymous-default-export -- Existing code.\nexport default `\n .adyen-dropin {\n font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n font-weight: normal;\n font-size: 16px;\n line-height: 21px;\n margin-left: -7px;\n text-transform: none;\n }\n\n /* Card pannel */\n\n .adyen-checkout__payment-method--next-selected,\n .adyen-checkout__payment-method:last-child {\n background-color: transparent;\n background: none !important;\n border: none;\n }\n\n .adyen-checkout__payment-method__name {\n color: #1D1D1D;\n font-weight: normal;\n }\n\n .adyen-checkout__label__text--error,\n .adyen-checkout__helper-text,\n .adyen-checkout__label__text {\n color: #1D1D1D;\n font-size: 18px;\n line-height: 24px;\n padding-bottom: 4px;\n }\n\n .adyen-checkout__error-text {\n color: #A80000;\n font-size: 16px;\n line-height: 21px;\n }\n\n .adyen-checkout__input {\n background: white;\n box-shadow: none;\n border: none;\n border-radius: 0;\n box-shadow: none;\n color: #1D1D1D;\n height: 42px;\n padding: 5px 8px;\n }\n\n .adyen-checkout__input--focus,\n .adyen-checkout__input--focus:hover,\n .adyen-checkout__input:active,\n .adyen-checkout__input:active:hover,\n .adyen-checkout__input:focus,\n .adyen-checkout__input:focus:hover {\n border: 1px dashed #fff;\n outline: 1px dashed #000;\n box-shadow: none;\n }\n\n .adyen-checkout__input:hover {\n border: none;\n }\n\n .adyen-checkout__input--error,\n .adyen-checkout__input--error:hover,\n .adyen-checkout__input--invalid,\n .adyen-checkout__input--invalid:hover {\n border: none;\n border-left: 2px solid #A80000;\n color: #A80000;\n }\n\n .adyen-checkout__label--focused .adyen-checkout__label__text {\n color: inherit;\n }\n`;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Iframe } from './iframe';\nimport defaultPaymentConnectorDropinStyle from './payment-instrument.dropin.style';\nimport defaultPaymentConnectorPaypalStyle from './payment-instrument.paypal.style';\nimport defaultPaymentConnectorStyle from './payment-instrument.style';\n\n/**\n * Interface for add payment form.\n */\nexport interface IAddPaymentFormProps {\n acceptPageUrl?: string;\n acceptPageContent?: string;\n iframeRef?: React.RefObject<Iframe>;\n canSubmit?: boolean;\n canCancel?: boolean;\n hasSelectedItem?: boolean;\n iFrameHeightOverride?: number;\n style?: string;\n requestUrlOrigin?: string;\n messageOrigin?: string;\n isFetchingPaymentConnector?: boolean;\n paymentStyleOverride?: string;\n className?: string;\n moduleName?: string;\n resources: {\n cancelButtonText: string;\n submitButtonText: string;\n iframeAriaLabel: string;\n };\n // eslint-disable-next-line @typescript-eslint/naming-convention -- For IFrame.\n onIFrameMessage?(event: MessageEvent): void;\n onSubmit?(): void;\n onCancel?(): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0 - Root.\n * @param root0.acceptPageUrl - Accept page url.\n * @param root0.acceptPageContent - Accept page content.\n * @param root0.onSubmit - On submit.\n * @param root0.onCancel - On cancel.\n * @param root0.onIFrameMessage - On iFrame message.\n * @param root0.iframeRef - IFrame ref.\n * @param root0.canSubmit - Can submit.\n * @param root0.canCancel - Can cancel.\n * @param root0.iFrameHeightOverride - IFrame height override.\n * @param root0.requestUrlOrigin - Origin request url.\n * @param root0.messageOrigin - Message origin.\n * @param root0.isFetchingPaymentConnector - Is fetching payment connector.\n * @param root0.paymentStyleOverride - Payment style override.\n * @param root0.className - ClassName.\n * @param root0.moduleName - ModuleName.\n * @param root0.resources - Resources.\n * @param root0.resources.cancelButtonText - Cancel button text.\n * @param root0.resources.submitButtonText - Submit button text.\n * @param root0.resources.iframeAriaLabel - IFrame aria label.\n * @extends {React.FunctionComponent<IAddPaymentFormProps>}\n * @returns React nodes.\n */\nexport const AddPaymentFormComponent: React.FunctionComponent<IAddPaymentFormProps> = ({\n acceptPageUrl = '',\n acceptPageContent = '',\n onSubmit,\n onCancel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing name.\n onIFrameMessage,\n iframeRef,\n canSubmit,\n canCancel,\n iFrameHeightOverride,\n requestUrlOrigin,\n messageOrigin,\n isFetchingPaymentConnector,\n paymentStyleOverride,\n className = 'ms-checkout-payment-instrument',\n moduleName = 'checkout-payment-instrument',\n resources: { cancelButtonText, submitButtonText, iframeAriaLabel }\n}) => (\n <div className={classnames(`${className}__add`, { 'is-fetching': isFetchingPaymentConnector })}>\n <Iframe\n className={`${className}__add`}\n moduleName={moduleName}\n ref={iframeRef}\n iframeAriaLabel={iframeAriaLabel}\n displayContent={acceptPageContent}\n sourceUrl={acceptPageUrl}\n requestUrlOrigin={requestUrlOrigin}\n messageOrigin={messageOrigin}\n onIFrameMessage={onIFrameMessage}\n height={iFrameHeightOverride}\n css={\n paymentStyleOverride ??\n defaultPaymentConnectorStyle + defaultPaymentConnectorDropinStyle + defaultPaymentConnectorPaypalStyle\n }\n />\n {canSubmit && (\n <Button className={`${className}__btn-save`} title={submitButtonText} color='primary' onClick={onSubmit}>\n {submitButtonText}\n </Button>\n )}\n {canCancel && (\n <Button className={`${className}__btn-cancel`} title={cancelButtonText} color='secondary' onClick={onCancel}>\n {cancelButtonText}\n </Button>\n )}\n </div>\n);\n\nexport default React.memo(AddPaymentFormComponent);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getTenderTypesAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n Address,\n CardPaymentAcceptResult,\n CardType,\n CartTenderLine,\n RetailOperation,\n SalesOrder,\n TenderType,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix: string = ''): Promise<string | undefined> => {\n try {\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\n if (response && response.length > 0) {\n return response[0].TypeId;\n }\n } catch (error) {\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\n }\n return undefined;\n};\n\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\n if (matchedTenderType) {\n return matchedTenderType.TenderTypeId;\n }\n return;\n};\n\nconst roundNumber = (value: number) => Number(value.toFixed(2));\n\nasync function getLoyaltyTenderLine(\n ctx: IActionContext,\n LoyaltyCardId: string,\n Amount: number = 0,\n Currency: string = 'USD'\n): Promise<CartTenderLine> {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\n return {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n LoyaltyCardId\n };\n}\n\nasync function getGiftCardTenderLine(\n ctx: IActionContext,\n GiftCardId: string = '',\n Amount: number = 0,\n Currency: string = 'USD',\n tenderTypeId?: string,\n giftCardPin?: string,\n giftCardExpirationYear?: number,\n giftCardExpirationMonth?: number\n): Promise<CartTenderLine> {\n let TenderTypeId = tenderTypeId;\n\n if (!TenderTypeId) {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\n }\n\n const GiftCardPin = giftCardPin;\n const GiftCardExpirationYear = giftCardExpirationYear;\n const GiftCardExpirationMonth = giftCardExpirationMonth;\n return {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n GiftCardId,\n GiftCardPin,\n GiftCardExpirationYear,\n GiftCardExpirationMonth\n };\n}\n\nasync function getCreditCardTenderLine(\n ctx: IActionContext,\n tokenizedPaymentCard: TokenizedPaymentCard,\n cardPrefix: string = '',\n Amount: number = 0,\n Currency: string = 'USD',\n billingAddress?: Address\n): Promise<CartTenderLine> {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\n\n if (!cartTypeId) {\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\n }\n\n if (!tenderTypes) {\n throw new Error('Fail to get card tender type');\n }\n\n if (!cartTypeId) {\n throw new Error('Fail to get card type id');\n }\n\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\n const cardTenderLine: CartTenderLine = {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n Amount,\n TenderTypeId,\n CardTypeId: cartTypeId\n };\n cardTenderLine.TokenizedPaymentCard = {\n ...tokenizedPaymentCard,\n CardTypeId: cartTypeId,\n\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\n House: tokenizedPaymentCard.House || 'N/A',\n ...(tokenizedPaymentCard.CardTokenInfo && {\n CardTokenInfo: {\n ...tokenizedPaymentCard.CardTokenInfo,\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\n }\n }),\n ...(billingAddress && {\n Phone: billingAddress.Phone,\n Country: billingAddress.ThreeLetterISORegionName,\n Address1: billingAddress.Street,\n City: billingAddress.City,\n State: billingAddress.State,\n Zip: billingAddress.ZipCode\n })\n };\n\n return cardTenderLine;\n}\n\n/**\n * Get credit card tender line.\n * @param context - Action context.\n * @param amount - Due amount for credit card.\n * @param currency - Currency.\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\n * @param billingAddress - BillingAddress.\n * @returns - The credit card tender line.\n */\nasync function getCreditCardTenderLineForSinglePaymentAuth(\n context: IActionContext,\n amount: number = 0,\n currency: string = 'USD',\n cardPaymentAcceptResult?: CardPaymentAcceptResult,\n billingAddress?: Address\n): Promise<CartTenderLine> {\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\n\n if (cardPaymentAcceptResult) {\n cardPaymentAcceptResult.TokenizedPaymentCard = {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\n House: 'N/A',\n ...(billingAddress && {\n Phone: billingAddress.Phone,\n Country: billingAddress.ThreeLetterISORegionName,\n Address1: billingAddress.Street,\n City: billingAddress.City,\n State: billingAddress.State,\n Zip: billingAddress.ZipCode\n })\n };\n }\n\n const cardTenderLine: CartTenderLine = {\n // @ts-expect-error -- existing data.\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency: currency,\n Amount: amount,\n TenderTypeId: tenderTypeId,\n CardPaymentAcceptResult: cardPaymentAcceptResult\n };\n\n return cardTenderLine;\n}\n\nasync function createCustomerAccountTenderLine(ctx: IActionContext, Amount: number, Currency: string = 'USD'): Promise<CartTenderLine> {\n const CustomerId = null;\n if (!ctx.requestContext.user.isAuthenticated) {\n ctx.telemetry.error('A customer id is required to pay with customer account');\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n ctx.telemetry.error('No tender types found for this channel');\n }\n\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\n if (!TenderTypeId) {\n ctx.telemetry.error('No customer account tender type');\n }\n return {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n\n // @ts-expect-error\n CustomerId\n };\n}\n\nexport const CartCheckout = async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise<SalesOrder> => {\n const checkoutState = await getCheckoutState(ctx).catch(error => {\n throw error;\n });\n\n const cartState = checkoutState.checkoutCart;\n\n const channelConfiguration = ctx.requestContext.channel;\n\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\n throw new Error('Fail to placeOrder');\n }\n\n const {\n giftCardExtends,\n tokenizedPaymentCard,\n cardPrefix,\n guestCheckoutEmail,\n billingAddress,\n loyaltyAmount,\n cardPaymentAcceptResult,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isExpressCheckoutApplied,\n isExpressAddressApplied\n } = checkoutState;\n const { Currency } = channelConfiguration;\n\n let amountDue = cartState.cart.AmountDue || 0;\n let cartTenderLines;\n const getTenderLinePromises = [];\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\n\n // Pay by loyalty first\n if (loyaltyAmount && loyaltyCardNumber) {\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\n getTenderLinePromises.push(loyaltyTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout loyalty tender line is added.');\n } else {\n ctx.telemetry.information('Checkout loyalty tender line is not added when no loyaltyAmount or loyaltyCardNumber.');\n }\n\n // Then by gift card\n if (giftCardExtends && giftCardExtends.length > 0) {\n giftCardExtends.some(giftCardExtend => {\n if (giftCardExtend.Balance && amountDue > 0) {\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\n const tenderTypeId = giftCardExtend.TenderTypeId;\n const giftCardPin = giftCardExtend.Pin;\n const giftCardExpirationYear = giftCardExtend.ExpirationDate\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10)\n : undefined;\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10)\n : undefined;\n const creditCardTenderLinePromise = getGiftCardTenderLine(\n ctx,\n giftCardExtend.Id,\n chargedAmount,\n Currency,\n tenderTypeId,\n giftCardPin,\n giftCardExpirationYear,\n giftCardExpirationMonth\n );\n getTenderLinePromises.push(creditCardTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout gift card tender line is added.');\n } else {\n ctx.telemetry.information('Checkout gift card tender line is not added when no balance or no remaining balance.');\n }\n return amountDue === 0;\n });\n }\n\n // Then by customer account\n if (checkoutState.customerAccountAmount > 0) {\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\n getTenderLinePromises.push(customerAccountTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout customer account amount tender line is added.');\n } else {\n ctx.telemetry.information('Checkout customer account amount tender line is not added when customerAccountAmount is 0.');\n }\n\n // Pay the rest by credit card\n if (amountDue > 0) {\n let creditCardTenderLinePromise: Promise<CartTenderLine>;\n\n if (\n shouldEnableSinglePaymentAuthorizationCheckout &&\n (!(isExpressCheckoutApplied && !isExpressAddressApplied) || (isExpressCheckoutApplied && isPaymentVerificationRedirection))\n ) {\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(\n ctx,\n amountDue,\n Currency,\n cardPaymentAcceptResult,\n billingAddress\n );\n } else {\n if (!tokenizedPaymentCard) {\n throw new Error('Fail to placeOrder: no token found');\n }\n creditCardTenderLinePromise = getCreditCardTenderLine(\n ctx,\n tokenizedPaymentCard,\n cardPrefix,\n amountDue,\n Currency,\n billingAddress\n );\n }\n\n getTenderLinePromises.push(creditCardTenderLinePromise);\n\n ctx.telemetry.information('Checkout credit card tender line is added.');\n } else {\n ctx.telemetry.information('Checkout credit card tender line is not added when no remaining balance for credit card.');\n }\n\n if (getTenderLinePromises.length > 0) {\n // When payment methods is required\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\n throw error;\n });\n\n if (!cartTenderLines || cartTenderLines.length === 0) {\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\n }\n } else {\n ctx.telemetry.information('TenderLinePromises length is 0.');\n }\n\n const cartVersion = updatedCartVersion || cartState.cart.Version;\n\n ctx.telemetry.information('Checkout checkoutAsync is called.');\n\n // Proceed checkout\n const salesOrder = await checkoutAsync(\n { callerContext: ctx, bypassCache: 'get' },\n cartState.cart.Id,\n guestCheckoutEmail,\n undefined,\n undefined,\n cartTenderLines || null,\n cartVersion\n ).catch(async error => {\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\n if (error.data?.AdditionalContext) {\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is sent for single payment auth.');\n\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\n await checkoutState.updateRedirectAdditionalContext({\n newRedirectAdditionalContext: error?.data?.AdditionalContext as string\n });\n await checkoutState.updateRedirectPaymentConnectorId({\n newRedirectPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\n });\n } else {\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is not sent for single payment auth.');\n\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n\n await checkoutState.updateCheckoutErrorPaymentConnectorId({\n newCheckoutErrorPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\n });\n\n if (isPaymentVerificationRedirection) {\n ctx.telemetry.warning('RefreshCart when isPaymentVerificationRedirection is true.');\n\n await checkoutState.checkoutCart.refreshCart({});\n await checkoutState.updateIsExpressCheckoutApplied({ newIsExpressCheckoutApplied: false });\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n }\n\n throw error;\n });\n\n if (!salesOrder) {\n ctx.telemetry.error('Failed to placeOrder: fail to checkout.');\n throw new Error('Fail to placeOrder: fail to checkout');\n }\n\n return salesOrder;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState, getCheckoutState } from '@msdyn365-commerce/global-state';\n\nexport const EmptyActiveCart = async (ctx: IActionContext): Promise<void> => {\n let cartState;\n let checkoutState;\n const lineItemIdsToRemove = [];\n\n try {\n cartState = await getCartState(ctx);\n checkoutState = await getCheckoutState(ctx);\n } catch (error) {\n throw error;\n }\n\n if (!cartState || !cartState.cart) {\n throw new Error('Fail to fetch active cart');\n }\n\n if (!checkoutState || !checkoutState.checkoutCart) {\n throw new Error('Fail to fetch checkoutCart cart');\n }\n\n const activeCart = cartState.cart;\n const checkoutCart = checkoutState.checkoutCart.cart;\n\n for (const activeCartLine of activeCart.CartLines || []) {\n for (const checkoutCartLine of checkoutCart.CartLines || []) {\n if (activeCartLine.LineId && activeCartLine.LineId === checkoutCartLine.LineId) {\n lineItemIdsToRemove.push(activeCartLine.LineId);\n }\n }\n }\n\n try {\n await cartState.removeCartLines({ cartLineIds: lineItemIdsToRemove });\n await cartState.removeAllPromoCodes({});\n await checkoutState.removeCheckoutCartId({});\n } catch (error) {\n throw error;\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 * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC<IPaymentError> = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n <div className={`${className}__error`} role='alert' aria-live='assertive'>\n <p className={`${className}__error-title`}>{title}</p>\n <p className={`${className}__error-message`}>{message}</p>\n </div>\n);\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 { IPaymentConnectorPostMessage } from './payment-instrument-message';\n\n/**\n * Payment iFrame interface.\n */\nexport interface IPaymentFrameElementProps {\n className?: string;\n moduleName?: string;\n iframeAriaLabel: string;\n displayContent?: string;\n sourceUrl?: string;\n requestUrlOrigin?: string;\n messageOrigin?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- public props.\n css?: string;\n height?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- public event.\n onIFrameMessage?(event: MessageEvent): void;\n}\n\n/**\n * Default post message name.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Existing name.\nexport const POST_MESSAGE_NAME = 'message';\n\n/**\n * Get host name.\n * @param url - The url.\n * @returns The host name.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Public props.\nconst getHostName = (url: string = ''): string => {\n return (url.includes('//') ? url.split('/')[2] : url.split('/')[0]).toLowerCase();\n};\n\n/**\n *\n * IFrameElement component.\n * @extends {React.PureComponent<IPaymentFrameElementProps>}\n */\nexport class Iframe extends React.PureComponent<IPaymentFrameElementProps> {\n private readonly iframeRef: React.RefObject<HTMLIFrameElement>;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility -- Existing code.\n constructor(props: IPaymentFrameElementProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public componentDidMount(): void {\n window.addEventListener(POST_MESSAGE_NAME, this.onEvent);\n\n this.updateContentDocument();\n }\n\n public componentDidUpdate(previousProps: IPaymentFrameElementProps): void {\n if (previousProps.displayContent !== this.props.displayContent) {\n this.updateContentDocument();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener(POST_MESSAGE_NAME, this.onEvent);\n }\n\n public render(): JSX.Element | null {\n const { sourceUrl, className, iframeAriaLabel, height, moduleName = 'checkout-payment-instrument' } = this.props;\n return (\n <iframe\n title={iframeAriaLabel}\n className={classnames(`${moduleName}__iframe`, className)}\n aria-label={iframeAriaLabel}\n src={sourceUrl}\n ref={this.iframeRef}\n height={height}\n sandbox='allow-scripts allow-forms allow-same-origin allow-popups'\n />\n );\n }\n\n /**\n * Post message.\n * @param parameters - Payment connector post message.\n */\n public postMessage = (parameters: IPaymentConnectorPostMessage): void => {\n if (this.iframeRef.current?.contentWindow?.postMessage) {\n this.iframeRef.current.contentWindow.postMessage(parameters.message, parameters.targetOrigin);\n }\n };\n\n /**\n * On event.\n * @param event - The message event.\n */\n private readonly onEvent = (event: MessageEvent) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- IFrame.\n const { sourceUrl, onIFrameMessage, requestUrlOrigin, messageOrigin } = this.props;\n const sourceHost = getHostName(sourceUrl);\n const eventHost = getHostName(event.origin);\n const requestHost = getHostName(requestUrlOrigin);\n const messageHost = getHostName(messageOrigin);\n\n // Important: security check\n // check actual origin matches with expected origin\n if (\n !onIFrameMessage ||\n (sourceUrl && !(sourceHost === eventHost || requestHost === eventHost || messageHost === eventHost)) ||\n (!sourceUrl && !(requestHost === eventHost || messageHost === eventHost))\n ) {\n return;\n }\n\n onIFrameMessage(event);\n };\n\n /**\n * Update content document.\n */\n private readonly updateContentDocument = (): void => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing props.\n const { displayContent, sourceUrl, css } = this.props;\n if (!sourceUrl && displayContent && this.iframeRef.current) {\n const innerDocument = this.iframeRef.current.contentDocument;\n\n if (innerDocument) {\n innerDocument.open();\n innerDocument.write(displayContent);\n if (css) {\n // Append custom style\n const style = document.createElement('style');\n const cssNote = document.createTextNode(css);\n style.appendChild(cssNote);\n innerDocument.head.appendChild(style);\n }\n\n innerDocument.close();\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\nexport * from './add-payment-form';\nexport * from './error';\nexport * from './iframe';\nexport * from './payment-instrument-message';\nexport * from './waiting';\nexport * from './with-visibility-observer';\nexport * from './interfaces';\nexport * from './place-order';\nexport * from './empty-active-cart';\nexport { CartCheckout } from './checkout';\n/**\n * AsyncResultStatusCode.\n */\nexport enum AsyncResultStatusCode {\n LOADING = 'LOADING',\n SUCCESS = 'SUCCESS',\n FAILED = 'FAILED'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Payment connect post message type.\n */\nexport enum PaymentConnectorPostMessageType {\n CardPrefix = 'msax-cc-cardprefix',\n Error = 'msax-cc-error',\n Height = 'msax-cc-height',\n Result = 'msax-cc-result',\n Submit = 'msax-cc-submit',\n ExtraContext = 'msax-cc-extracontext',\n Redirect = 'msax-cc-redirect',\n Showoverlay = 'msax-cc-showoverlay',\n Hideoverlay = 'msax-cc-hideoverlay',\n ShippingAddress = 'msax-shipping-address'\n}\n\n/**\n * Interface for payment connector post message.\n */\nexport interface IPaymentConnectorPostMessage {\n message: string;\n targetOrigin: string;\n}\n\n/**\n * Payment connector message.\n * @param data - Data with message.\n * @param messageType - Message type.\n * @returns Payment connector post message.\n */\nexport function paymentConnectorMessage(data: string, messageType: PaymentConnectorPostMessageType): IPaymentConnectorPostMessage {\n return {\n message: JSON.stringify({\n type: messageType,\n value: data\n }),\n targetOrigin: '*'\n };\n}\n\n/**\n * Payment connector extra context message.\n * @param data - The data.\n * @returns The payment connector post message.\n */\nexport function paymentConnectorExtraContextMessage(data: string): IPaymentConnectorPostMessage {\n return paymentConnectorMessage(data, PaymentConnectorPostMessageType.ExtraContext);\n}\n\n/**\n * Payment connector submit message.\n * @returns The payment connector post message.\n */\nexport function paymentConnectorSubmitMessage(): IPaymentConnectorPostMessage {\n return paymentConnectorMessage('true', PaymentConnectorPostMessageType.Submit);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartCheckout } from './checkout';\nimport { EmptyActiveCart } from './empty-active-cart';\n\nexport const PlaceOrder = async (\n ctx: IActionContext,\n checkoutState: ICheckoutState | undefined,\n orderedProducts: SimpleProduct[] | undefined,\n redirect: boolean,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n) => {\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\n ctx.telemetry.information('Checkout place-order method is triggered.');\n\n let salesOrder: SalesOrder;\n\n // Proceed checkout\n try {\n salesOrder = await CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n } catch (error) {\n reject(error);\n return;\n }\n\n // Remove purchased items from the active cart\n try {\n ctx.telemetry.information('Checkout emptyActiveCart is called.');\n await EmptyActiveCart(ctx);\n } catch (error) {\n reject(error);\n return;\n }\n\n if (redirect) {\n ctx.telemetry.information('Redirect to order confirmation page.');\n\n // Redirect to the order confirmation page\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\n if (!orderConfirmationUrl) {\n reject(new Error('Error: No orderConfirmationUrl'));\n return;\n }\n\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\n window.location.assign(url);\n } else {\n ctx.telemetry.information('Not redirect to order confirmation page.');\n\n if (checkoutState) {\n const result = await checkoutState.updateSalesOrder({\n newSalesOrder: salesOrder,\n newOrderedProducts: orderedProducts || []\n });\n\n if (result.status === 'FAILED') {\n reject(new Error('Error: Updating error state failed'));\n return;\n }\n } else {\n reject(new Error('Error: No checkout state'));\n return;\n }\n resolve();\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 { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC<IPaymentWaitingProps> = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n <div className={`${className}__loading-background`}>\n <Waiting />\n <span className={`${className}__loading-message`}>{message}</span>\n </div>\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 * Visibility observer state.\n */\ninterface IVisibilityObserverState {\n isVisible?: boolean;\n errorMessage?: string;\n observer?: MutationObserver;\n}\n\n/**\n * Visibility observer props.\n */\nexport interface IVisibilityObserverProps {\n visibilityObserver?: IVisibilityObserverState;\n}\n\n/**\n * With visibility observer.\n * @param WrappedComponent - Wrapped component.\n * @param className - ClassName.\n * @returns React node.\n */\nexport const withVisibilityObserver = <P extends IVisibilityObserverProps>(\n WrappedComponent: React.ComponentType<P>,\n className = 'ms-checkout-payment-instrument'\n): React.ComponentType<P> => {\n /**\n *\n * VisibilityObserver component.\n * @extends {React.Component<P>}\n */\n class VisibilityObserver extends React.Component<P> {\n // eslint-disable-next-line react/state-in-constructor -- Existing pattern.\n public state: IVisibilityObserverState = {\n isVisible: false,\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: '',\n observer: undefined\n };\n\n private readonly selfRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n public componentDidMount(): void {\n this.initMutationObserver();\n }\n\n public componentWillUnmount(): void {\n this.stopMutationObserver();\n }\n\n public shouldComponentUpdate(nextProps: IVisibilityObserverProps, nextState: IVisibilityObserverState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return (\n <div className={`${className}__mutation-observer`} ref={this.selfRef}>\n <WrappedComponent {...this.props} visibilityObserver={this.state} />\n </div>\n );\n }\n\n /**\n * Initial mutation observer.\n */\n private readonly initMutationObserver = (): void => {\n // Select the node that will be observed for mutations\n const targetNode = document.getElementsByTagName('body')[0];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Better double check.\n if (!targetNode) {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: 'No body element found'\n });\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Better double check.\n if (!MutationObserver) {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: 'MutationObserver is not supported'\n });\n return;\n }\n\n // Options for the observer (which mutations to observe)\n const config = { attributes: true, childList: true, subtree: true };\n\n // Create an observer instance linked to the callback function\n const mutationObserver = new MutationObserver(() => {\n this.handleVisibilityChange();\n });\n mutationObserver.observe(targetNode, config);\n\n this.setState({\n observer: mutationObserver\n });\n };\n\n /**\n * Stop mutation observer.\n */\n private readonly stopMutationObserver = (): void => {\n this.state.observer?.disconnect();\n };\n\n /**\n * Handle visibility change.\n */\n private readonly handleVisibilityChange = (): void => {\n // If module is visible or not\n const isVisible = !!this.selfRef.current && this.selfRef.current.offsetWidth > 0 && this.selfRef.current.offsetHeight > 0;\n if (!this.state.isVisible && isVisible) {\n this.setState({\n isVisible\n });\n this.stopMutationObserver();\n }\n };\n }\n\n return VisibilityObserver;\n};\n"],"names":["CheckoutStateInput","apiSettings","_this","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","this","createObservableDataAction","action","input","ctx","CheckoutState","inputData","requestContext","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","Object","defineProperty","prototype","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateShippingAddress","newShippingAddress","updateBillingAddress","newBillingAddress","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","filter","giftCard","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","__decorate","observable","computed","EnabledPaymentsForOBO","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","get","update","updateModuleStates","value","WrappedComponent","_super","ModuleState","props","call","initializeState","_b","id","typeName","context","states","actionContext","__assign","_a","hasInitialized","hasError","isRequired","isCancellable","isSubmitContainer","status","undefined","childIds","telemetry","error","getModuleStateManager","moduleState","validate","isReady","isUpdating","isPending","isSkipped","isDisabled","isCancelAllowed","shouldSubmitContainer","hasExternalSubmitGroup","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","setHasError","onReady","onUpdating","onPending","onSkip","onDisable","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","init","options","values","find","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","length","app","config","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","includes","ArrayExtensions","hasElements","enableControl","__extends","shouldComponentUpdate","nextProps","render","React","observer","CheckoutErrors","async","setCheckoutErrors","errorCode","resources","isExpressCheckoutApplied","clientCheckoutError","consoleCheckoutErrors","checkoutState","getCheckoutState","catch","exception","checkoutError","checkoutErrorsList","errorLocation","ErrorLocation","Console","consoleCheckoutError","errorMessageResource","push","Error","errorMessage","getCheckoutErrorMessage","console","log","CheckoutPaymentInstrument","Checkout","updateCheckoutError","newCheckoutError","updateShouldFocusOnCheckoutError","newShouldFocusOnCheckoutError","genericError","genericErrorMessage","focusOnCheckoutError","checkoutErrorRef","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","setCheckoutErrorFocus","checkoutModuleId","checkoutModule","keys","resource","ActionError","ErrorCode","ErrorMessageResource","checkoutTimeoutErrorMessage","Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard","blockedLoyaltyCardErrorMessage","CheckoutLoyalty","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue","customerAccountLimitSignDifferentFromAmountDueErrorMessage","CheckoutCustomerAccountPayment","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit","customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems","customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount","customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices","customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_FraudRisk","fraudRiskErrorMessage","Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed","giftCardBalanceInquiryFailedErrorMessage","CheckoutGiftCard","Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch","giftCardCurrencyMismatchErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion","invalidCartVersionErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber","invalidLoyaltyCardNumberErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest","invalidPaymentRequestErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console","invalidPaymentRequestConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines","missingRequiredCartTenderLinesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed","multipleCustomerAccountPaymentsNotAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender","noMoreThanOneLoyaltyTenderErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry","noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard","noTenderLoyaltyCardErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints","notEnoughRewardPointsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided","paymentAlreadyVoidedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance","paymentAmountExceedsGiftBalanceErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties","paymentRequiresMerchantPropertiesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console","paymentRequiresMerchantPropertiesConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount","paymentUsingUnauthorizedAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed","refundAmountMoreThanAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment","unableToAuthorizePaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired","unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported","unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment","unableToCancelPaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo","unableToReadCardTokenInfoErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult","unableToRetrieveCardPaymentAcceptResultErrorMessage","AddPaymentFormComponent","_ref","acceptPageUrl","acceptPageContent","onSubmit","onCancel","onIFrameMessage","iframeRef","canSubmit","canCancel","iFrameHeightOverride","requestUrlOrigin","messageOrigin","isFetchingPaymentConnector","paymentStyleOverride","className","moduleName","cancelButtonText","submitButtonText","iframeAriaLabel","classnames","Iframe","ref","displayContent","sourceUrl","height","css","defaultPaymentConnectorStyle","Button","title","color","onClick","OPERATIONS","getCardTypeId","cardPrefix","arguments","response","resolveCardTypesAsync","callerContext","CardType","Unknown","TypeId","findTenderIdTypeByOperationId","tenderTypes","operationId","matchedTenderType","tenderType","OperationId","TenderTypeId","roundNumber","Number","toFixed","CartCheckout","updatedCartVersion","isPaymentVerificationRedirection","cartState","checkoutCart","channelConfiguration","channel","giftCardExtends","tokenizedPaymentCard","guestCheckoutEmail","billingAddress","loyaltyAmount","cardPaymentAcceptResult","isExpressAddressApplied","Currency","cartTenderLines","amountDue","cart","AmountDue","getTenderLinePromises","loyaltyCardNumber","LoyaltyCardId","chargedAmount","Math","min","loyaltyTenderLinePromise","Amount","getTenderTypesAsync","queryResultSettings","getLoyaltyTenderLine","information","some","giftCardExtend","Balance","_giftCardExtend$Expir","_giftCardExtend$Expir2","tenderTypeId","giftCardPin","Pin","giftCardExpirationYear","ExpirationDate","parseInt","split","giftCardExpirationMonth","creditCardTenderLinePromise","GiftCardId","GiftCardPin","GiftCardExpirationYear","GiftCardExpirationMonth","getGiftCardTenderLine","customerAccountAmount","customerAccountTenderLinePromise","CustomerId","user","isAuthenticated","createCustomerAccountTenderLine","amount","currency","TokenizedPaymentCard","_objectSpread","House","Phone","Country","ThreeLetterISORegionName","Address1","Street","City","State","Zip","ZipCode","CardPaymentAcceptResult","getCreditCardTenderLineForSinglePaymentAuth","cartTypeId","CardTypeId","TenderType","cardTenderLine","CardTokenInfo","getCreditCardTenderLine","Promise","all","cartVersion","Version","salesOrder","checkoutAsync","bypassCache","_error$data","_error$data2","_cardPaymentAcceptRes","_cardPaymentAcceptRes2","data","AdditionalContext","warning","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","updateRedirectAdditionalContext","newRedirectAdditionalContext","updateRedirectPaymentConnectorId","newRedirectPaymentConnectorId","Settings","PaymentConnectorId","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","updateCheckoutErrorPaymentConnectorId","newCheckoutErrorPaymentConnectorId","refreshCart","updateIsExpressCheckoutApplied","newIsExpressCheckoutApplied","EmptyActiveCart","lineItemIdsToRemove","getCartState","activeCart","activeCartLine","CartLines","checkoutCartLine","LineId","removeCartLines","cartLineIds","removeAllPromoCodes","removeCheckoutCartId","ErrorComponent","message","role","POST_MESSAGE_NAME","getHostName","url","toLowerCase","constructor","super","postMessage","parameters","_this$iframeRef$curre","contentWindow","targetOrigin","onEvent","event","sourceHost","eventHost","origin","requestHost","messageHost","updateContentDocument","innerDocument","contentDocument","open","write","style","document","createElement","cssNote","createTextNode","appendChild","head","close","componentDidMount","window","addEventListener","componentDidUpdate","previousProps","componentWillUnmount","removeEventListener","src","sandbox","AsyncResultStatusCode","PaymentConnectorPostMessageType","paymentConnectorMessage","messageType","JSON","stringify","type","paymentConnectorExtraContextMessage","ExtraContext","paymentConnectorSubmitMessage","Submit","PlaceOrder","orderedProducts","redirect","resolve","reject","orderConfirmationUrl","getUrlSync","separator","location","assign","updateSalesOrder","newSalesOrder","newOrderedProducts","WaitingComponent","Waiting","withVisibilityObserver","VisibilityObserver","state","isVisible","selfRef","initMutationObserver","targetNode","getElementsByTagName","setState","MutationObserver","mutationObserver","handleVisibilityChange","observe","attributes","childList","subtree","stopMutationObserver","_this$state$observer","disconnect","offsetWidth","offsetHeight","nextState","visibilityObserver"],"sourceRoot":""}