{"version":3,"file":"js/4760.js","mappings":"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","sources":["webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/apiHelpers.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/constants.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/getLineItems.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/getSupportedNetworks.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/index.tsx","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/sortShippingOptions.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/styles.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/useApplePay.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/JSSDKButton.tsx","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ApplePayButton/getIsEligibleForApplePay.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/styles.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/constants.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/WithButtons/styles.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/WithButtons/index.tsx","webpack://nocodenodeweb/./src/client/assets/PaywallIssuerCardArt.tsx","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/WithRadio/styles.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/WithRadio/index.tsx","webpack://nocodenodeweb/./src/client/components/ButtonsStack/PaywallHostedButtons/index.tsx","webpack://nocodenodeweb/./src/client/components/ButtonsStack/StackedPayPalButtons.tsx","webpack://nocodenodeweb/./src/client/components/ButtonsStack/ordersHelper.ts","webpack://nocodenodeweb/./src/client/components/ButtonsStack/styles.ts","webpack://nocodenodeweb/./src/client/components/FormFields/helpers.ts","webpack://nocodenodeweb/./src/client/components/common/ShimmerPreMount.tsx","webpack://nocodenodeweb/./src/client/components/payment/styles.ts","webpack://nocodenodeweb/./src/client/components/payment/QuantityDropdown.tsx","webpack://nocodenodeweb/./src/client/components/payment/PaymentTotal.tsx","webpack://nocodenodeweb/./src/client/components/payment/BusinessHeader.tsx","webpack://nocodenodeweb/./src/client/components/payment/util.ts","webpack://nocodenodeweb/./src/client/components/payment/Memo.tsx","webpack://nocodenodeweb/./src/client/components/payment/FixedPrice.tsx","webpack://nocodenodeweb/./src/client/components/payment/VariablePrice.tsx","webpack://nocodenodeweb/./src/client/components/payment/SingleSelectList.tsx","webpack://nocodenodeweb/./src/client/components/payment/HostedButtonDetails.tsx","webpack://nocodenodeweb/./src/client/components/payment/validation/index.ts","webpack://nocodenodeweb/./src/client/components/payment/validation/rules.ts","webpack://nocodenodeweb/./src/client/contexts/PaymentContext.tsx","webpack://nocodenodeweb/./src/client/helpers/fetchWrapper.ts","webpack://nocodenodeweb/./src/client/helpers/getPaymentTotalFields.ts","webpack://nocodenodeweb/./src/client/helpers/isNonZeroStr.ts","webpack://nocodenodeweb/./src/client/hooks/useDeepEqualMemo.ts","webpack://nocodenodeweb/./src/client/hooks/useOrderStatus.ts","webpack://nocodenodeweb/./src/client/components/OrderStatus/utils.tsx","webpack://nocodenodeweb/./src/common/sanitize.ts"],"sourcesContent":["import fetchWrapper from '@client/helpers/fetchWrapper';\nimport { logErrorClient } from '@client/utils/beaverLogger';\nimport type { UserInputsType, OrderDetails } from '@client/typings/Common';\nimport { startCPLTracking, endCPLTracking, recordImpression, PageName } from '@common/analytics';\n\nconst APPLE_PAY_FUNDING_SOURCE = 'APPLE_PAY';\nconst FUNDING_TYPE = 'APPLEPAY';\n\ntype ApplePayOrderDetails = Pick;\n\nexport type ApplePayCreateOrder = ApplePayOrderDetails & { session: string };\ntype ApplePayCaptureOrder = ApplePayOrderDetails & Pick;\ntype KnownErrorCaptureOrder = {\n status: 422;\n name: 'DUPLICATE_INVOICE_ID' | 'INSTRUMENT_DECLINED';\n error: true;\n details: Record[];\n};\n\nexport const createOrder = async ({\n csrfToken,\n hostedButtonId,\n merchantId,\n buttonType,\n userInputs,\n fptiAdditionalTags,\n pageName\n}: {\n csrfToken: string;\n hostedButtonId: string;\n merchantId: string;\n buttonType: string;\n userInputs: UserInputsType;\n fptiAdditionalTags: Record;\n pageName: PageName;\n}): Promise => {\n const cplImpressEvent = {\n pageName,\n eventName: 'create_order',\n event: 'im'\n };\n\n try {\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'create_order_start'\n },\n {\n funding_type: FUNDING_TYPE\n }\n );\n\n startCPLTracking(cplImpressEvent);\n const tStart = Date.now();\n const { responseData, response } = await fetchWrapper(\n '/ncp/api/apple-pay/create-order',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken\n },\n body: JSON.stringify({\n link_id: hostedButtonId,\n merchant_id: merchantId,\n ...userInputs,\n funding_source: APPLE_PAY_FUNDING_SOURCE,\n button_type: buttonType\n })\n },\n true\n );\n const apiDuration = Date.now() - tStart;\n const body = responseData as ApplePayCreateOrder;\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'create_order_end'\n },\n {\n funding_type: FUNDING_TYPE,\n order_id: body?.context_id,\n api_response_code: response.status,\n api_duration: apiDuration\n }\n );\n if (response.status !== 200) {\n throw Error(`CreateOrder error - ${JSON.stringify(body)}`);\n }\n return body;\n } catch (err) {\n logErrorClient('ApplePay createOrder', err);\n return null;\n } finally {\n endCPLTracking(cplImpressEvent);\n }\n};\n\nexport const captureOrder = async ({\n csrfToken,\n hostedButtonId,\n merchantId,\n buttonType,\n userInputs,\n contextId,\n applePayPayment,\n fptiAdditionalTags,\n pageName\n}: {\n csrfToken: string;\n hostedButtonId: string;\n merchantId: string;\n buttonType: string;\n userInputs: UserInputsType;\n contextId: string;\n applePayPayment: ApplePayJS.ApplePayPaymentAuthorizedEvent['payment'];\n fptiAdditionalTags: Record;\n pageName: PageName;\n}): Promise => {\n const cplImpressEvent = {\n pageName,\n eventName: 'capture_order',\n event: 'im'\n };\n\n try {\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'capture_order_start'\n },\n {\n funding_type: FUNDING_TYPE,\n order_id: contextId\n }\n );\n\n startCPLTracking(cplImpressEvent);\n const tStart = Date.now();\n const { responseData, response } = await fetchWrapper(\n '/ncp/api/apple-pay/capture-order',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken\n },\n body: JSON.stringify({\n context_id: contextId,\n orderId: contextId,\n applePay: applePayPayment,\n link_id: hostedButtonId,\n merchant_id: merchantId,\n ...userInputs,\n funding_source: { paymentSource: 'applepay' },\n button_type: buttonType\n })\n },\n true\n );\n const apiDuration = Date.now() - tStart;\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'capture_order_end'\n },\n {\n funding_type: FUNDING_TYPE,\n order_id: contextId,\n api_response_code: response.status,\n api_duration: apiDuration\n }\n );\n\n const body = responseData as ApplePayCaptureOrder | KnownErrorCaptureOrder;\n\n if (response.status !== 200 && response.status !== 422) {\n throw Error('CaptureOrder error');\n }\n return body;\n } catch (err) {\n logErrorClient('ApplePay captureOrder', err);\n return null;\n } finally {\n endCPLTracking(cplImpressEvent);\n }\n};\n\ninterface IMerchantSession {\n displayName: string;\n domainName: string;\n epochTimestamp: number;\n expiresAt: number;\n merchantIdentifier: string;\n merchantSessionIdentifier: string;\n nonce: string;\n operationalAnalyticsIdentifier: string;\n pspId: string;\n signature: string;\n}\nexport const getMerchantSession = (\n session: ApplePayCreateOrder['session']\n): IMerchantSession | null => {\n try {\n const merchantSession = JSON.parse(window.atob(session));\n return merchantSession;\n } catch (err) {\n logErrorClient('ApplePay parse merchant session', err);\n return null;\n }\n};\n","export const amexSupportedCurrencyCodes = [\n 'AUD',\n 'CAD',\n 'CHF',\n 'CZK',\n 'DKK',\n 'EUR',\n 'GBP',\n 'HKD',\n 'HUF',\n 'JPY',\n 'NOK',\n 'NZD',\n 'PLN',\n 'SEK',\n 'SGD',\n 'USD'\n];\n\nexport const notApplicable = 'notApplicable';\n","import type { WorldReadyProps } from '@client/contexts/WorldReadyContext';\nimport type { OrderShipping } from '@client/typings/Common';\nimport { getLocalizedString } from '@client/utils/localeHelper';\nimport isNonZeroStr from '@client/helpers/isNonZeroStr';\nimport getPaymentTotalFields, { FieldValueContent } from '@client/helpers/getPaymentTotalFields';\n\nenum ContentKey {\n Shipping = 'payment.text.shipping',\n Tax = 'payment.text.tax',\n Subtotal = 'payment.text.subtotal',\n FreeShipping = 'editor.shippingPreference.value.free'\n}\n\nconst getTotalFieldLineItems = (\n worldReady: WorldReadyProps,\n totalFields: ReturnType\n) => {\n const lineItems: ApplePayJS.ApplePayLineItem[] = [];\n\n const { shipping, tax, subtotal } = totalFields;\n if (shipping.showField) {\n if (typeof shipping.value === 'number') {\n lineItems.push({\n label: getLocalizedString(worldReady, ContentKey.Shipping),\n amount: shipping.value.toString()\n });\n } else if (shipping.value === FieldValueContent.Free) {\n lineItems.push({\n label: getLocalizedString(worldReady, ContentKey.FreeShipping),\n amount: '0'\n });\n }\n }\n\n if (tax.showField && typeof tax.value === 'number') {\n lineItems.push({\n label: getLocalizedString(worldReady, ContentKey.Tax),\n amount: tax.value.toString()\n });\n }\n\n if (subtotal.showField) {\n lineItems.unshift({\n label: getLocalizedString(worldReady, ContentKey.Subtotal),\n amount: subtotal.value.toString()\n });\n }\n\n return lineItems;\n};\n\nconst getLineItems = (\n worldReady: WorldReadyProps,\n orderShipping?: OrderShipping,\n totalFields?: ReturnType\n) => {\n const lineItems: ApplePayJS.ApplePayLineItem[] = [];\n\n if (orderShipping) {\n const { shipping, tax_total, item_total } = orderShipping.amount.breakdown;\n if (isNonZeroStr(shipping?.value)) {\n lineItems.push({\n label: getLocalizedString(worldReady, ContentKey.Shipping),\n amount: shipping.value\n });\n }\n\n if (isNonZeroStr(tax_total?.value)) {\n lineItems.push({\n label: getLocalizedString(worldReady, ContentKey.Tax),\n amount: tax_total.value\n });\n }\n\n if (lineItems.length) {\n lineItems.unshift({\n label: getLocalizedString(worldReady, ContentKey.Subtotal),\n amount: item_total.value\n });\n }\n } else if (totalFields) {\n return getTotalFieldLineItems(worldReady, totalFields);\n }\n return lineItems;\n};\n\nexport default getLineItems;\n","import { amexSupportedCurrencyCodes } from './constants';\n\ntype SupportedNetworks = 'visa' | 'masterCard' | 'discover' | 'cartesBancaires' | 'amex';\nconst getSupportedNetworks = (currencyCode: string): SupportedNetworks[] => {\n // At this point, we will have determined merchant country eligibility.\n const supportedNetworks: SupportedNetworks[] = ['visa', 'masterCard'];\n if (currencyCode === 'USD') {\n supportedNetworks.push('discover');\n }\n\n // cartesBancaires only available on Apple Pay JS API version 4 and later.\n if (currencyCode === 'EUR' && window.ApplePaySession?.supportsVersion?.(4)) {\n supportedNetworks.push('cartesBancaires');\n }\n\n if (amexSupportedCurrencyCodes.includes(currencyCode)) {\n supportedNetworks.push('amex');\n }\n\n return supportedNetworks;\n};\n\nexport default getSupportedNetworks;\n","import React, { MutableRefObject, useMemo, useEffect, MouseEventHandler, useState } from 'react';\nimport loadable from '@loadable/component';\nimport type {\n UserInputsType,\n HostedButtonDetails as HostedButtonDetailsType,\n FormErrorMessageType,\n OrderDetails,\n OrderShipping,\n SDKButtonStyle\n} from '@client/typings/Common';\nimport { PageName, recordClick } from '@common/analytics';\nimport { validateForm } from '@components/payment/validation';\nimport { useAppContext } from '@client/contexts/AppContext';\nimport { getFeatureFlags } from '@client/helpers/ucpConfig';\nimport { logErrorClient, logInfoClient, logWarnClient } from '@client/utils/beaverLogger';\nimport { transformButtonVariables } from '@client/utils/utils';\nimport { CaptureStatus, ButtonType } from '@client/utils/constants';\nimport { generateOptions } from '@components/FormFields/helpers';\nimport { ShippingPreference } from '@components/buttons/types';\nimport { getCurrencyConfig, getLocalizedString } from '@client/utils/localeHelper';\nimport getPaymentTotalFields, { FieldValueContent } from '@client/helpers/getPaymentTotalFields';\nimport { useWorldReadyContext } from '@client/contexts/WorldReadyContext';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { updateOrderShippingOptions } from '../ordersHelper';\nimport getSupportedNetworks from './getSupportedNetworks';\nimport { createOrder, captureOrder, getMerchantSession } from './apiHelpers';\nimport useApplePay from './useApplePay';\nimport styles, { buttonHeight } from './styles';\nimport sortShippingOptions from './sortShippingOptions';\nimport getLineItems from './getLineItems';\nimport { notApplicable } from './constants';\n\nconst LoadablePreviewButton = loadable(() => import('./PreviewButton'), {\n ssr: false\n});\n\nconst mapC2ToCN = (countryCode: string) => {\n return countryCode === 'C2' ? 'CN' : countryCode;\n};\n\nconst Button = ({\n onClick,\n buttonStyle\n}: {\n onClick: MouseEventHandler;\n buttonStyle: SDKButtonStyle;\n}) => {\n return (\n \n );\n};\n\ninterface ApplePayButtonContainerProps {\n merchantId: string | undefined;\n hostedButtonId: string;\n userInputsRef: MutableRefObject;\n formErrorMessageRef: MutableRefObject;\n shouldUpdateOrderShipping: boolean;\n setInitComplete?: (isCompleted: boolean) => void;\n pageName: PageName;\n buttonType: string | undefined;\n currencyCode: string | undefined;\n buttonStyle?: SDKButtonStyle;\n}\n\nexport const ApplePayButton = ({\n hostedButtonId,\n merchantId,\n userInputsRef,\n formErrorMessageRef,\n shouldUpdateOrderShipping,\n setInitComplete,\n pageName,\n buttonType,\n currencyCode,\n buttonStyle\n}: ApplePayButtonContainerProps) => {\n const appContext = useAppContext();\n const buttonDetails = appContext?.hostedButtonDetails as HostedButtonDetailsType;\n const featureFlags = getFeatureFlags(appContext);\n const {\n userInputs,\n setOrderData,\n setFormErrorMessage,\n fptiAdditionalTags,\n setCaptureStatus,\n setIsLoading\n } = usePaymentContext();\n const worldReady = useWorldReadyContext();\n const currencyConfig = getCurrencyConfig(worldReady, currencyCode);\n const {\n getSession,\n setSession,\n getOrder,\n updateOrder,\n getIsInProgress,\n setIsCancelled,\n getInitialPaymentRequest,\n setOrderShipping,\n getOrderShipping\n } = useApplePay();\n const buttonVariables = useMemo(\n () => transformButtonVariables(buttonDetails.link_variables),\n [buttonDetails]\n );\n\n const onValidateMerchant = async (event: ApplePayJS.ApplePayValidateMerchantEvent) => {\n const applePaySession = getSession() as ApplePaySession;\n try {\n const { button_type } = buttonVariables;\n if (!button_type) {\n throw Error('Missing button_type');\n }\n const csrfToken = appContext?.app.csrfToken;\n if (!csrfToken) {\n throw Error('Missing csrfToken');\n }\n if (!merchantId) {\n throw Error('Missing merchantId');\n }\n\n const { context_id, session: orderSession } =\n (await createOrder({\n csrfToken,\n hostedButtonId,\n merchantId,\n userInputs: userInputsRef.current,\n buttonType: button_type,\n fptiAdditionalTags,\n pageName\n })) || {};\n if (!context_id || !orderSession) {\n throw Error('Missing order context_id or session');\n }\n updateOrder({ context_id });\n const merchantSession = getMerchantSession(orderSession);\n if (!merchantSession) {\n throw Error('Missing merchantSession');\n }\n\n if (!getIsInProgress()) {\n /**\n * In case ApplePay is cancelled during createOrder call.\n * Either user clicks the cancel button or createOrder takes\n * more than 30 seconds.\n */\n return logErrorClient('onValidateMerchant', 'Apple Pay not in progress');\n }\n applePaySession.completeMerchantValidation(merchantSession);\n } catch (err) {\n logErrorClient('onValidateMerchant', err.message);\n // Close the ApplePay modal\n applePaySession.completeMerchantValidation({});\n setCaptureStatus(CaptureStatus.FAILED);\n }\n };\n\n const onPaymentAuthorized = async (event: ApplePayJS.ApplePayPaymentAuthorizedEvent) => {\n const applePaySession = getSession() as ApplePaySession;\n\n try {\n const csrfToken = appContext?.app.csrfToken;\n if (!csrfToken) {\n throw Error('Missing csrfToken');\n }\n\n const { button_type } = buttonVariables;\n if (!button_type) {\n throw Error('Missing button_type');\n }\n\n if (!merchantId) {\n throw Error('Missing merchantId');\n }\n\n const { context_id } = getOrder();\n if (!context_id) {\n throw Error('Missing order context_id');\n }\n\n /**\n * We don't need to setIsLoading false when capture order complete in this function\n * setIsLoading false will be called in useOrderStatus when thank you page redirection\n * is not required\n */\n setIsLoading(true);\n const order = await captureOrder({\n csrfToken,\n hostedButtonId,\n merchantId,\n buttonType: button_type,\n userInputs: userInputsRef.current,\n contextId: context_id,\n applePayPayment: event.payment,\n pageName,\n fptiAdditionalTags\n });\n\n if (!order) {\n throw Error('Capture order error');\n }\n\n /**\n * Edge case: ApplePay modal would only stay active for ~30 seconds\n * If captureOrder takes longer than that, ApplePay modal\n * would cancel and close. We don't expect captureOrder to\n * take longer than 30 seconds.\n *\n * At this moment, paywall should still be loading.\n */\n if (!getIsInProgress()) {\n logErrorClient('onPaymentAuthorized', 'ApplePay closed before captureOrder completed');\n\n /**\n * Since the ApplePay modal has already error'd out, we should not\n * contradict it in thank you page. Hence, we will redirect\n * to thank you page with unknown status to display \"We can't show your transaction status\"\n * even when order status is completed\n */\n if (order.status === 'COMPLETED') {\n setOrderData({\n ...order,\n name: 'UNKNOWN'\n } as OrderDetails);\n } else {\n setOrderData(order as OrderDetails);\n }\n return;\n }\n\n setOrderData(order as OrderDetails);\n\n if (order.status !== 'COMPLETED') {\n throw Error('Incomplete payment');\n }\n applePaySession.completePayment({\n status: ApplePaySession.STATUS_SUCCESS\n });\n } catch (err) {\n logErrorClient('onPaymentAuthorized', err.message);\n setIsLoading(false);\n applePaySession.completePayment({\n status: ApplePaySession.STATUS_FAILURE\n });\n setCaptureStatus(CaptureStatus.FAILED);\n }\n };\n\n const onShippingContactSelected = async (\n event: ApplePayJS.ApplePayShippingContactSelectedEvent\n ) => {\n const applePaySession = getSession() as ApplePaySession;\n const initialPaymentRequest = getInitialPaymentRequest() as ApplePayJS.ApplePayPaymentRequest;\n const { shipping_preference } = buttonVariables;\n const isShippingFromProfile = shipping_preference === ShippingPreference.FromProfile;\n\n try {\n const csrfToken = appContext?.app.csrfToken;\n if (!csrfToken) {\n throw Error('Missing csrfToken');\n }\n\n const { context_id } = getOrder();\n if (!context_id) {\n throw Error('Missing order context_id');\n }\n\n const {\n locality = '',\n administrativeArea = '',\n countryCode = '',\n postalCode = ''\n } = event.shippingContact;\n\n const orderShipping = await updateOrderShippingOptions({\n csrfToken,\n contextId: context_id,\n hostedButtonId,\n shippingAddress: {\n city: locality,\n state: administrativeArea,\n countryCode,\n postalCode\n },\n fptiAdditionalTags,\n pageName\n });\n\n if (!orderShipping) {\n throw Error('Invalid order shipping');\n }\n\n setOrderShipping(orderShipping);\n\n const shippingOptions = sortShippingOptions(orderShipping.shipping_options);\n\n const newShippingMethodsForProfileShippingButton = shippingOptions\n ? {\n newShippingMethods: shippingOptions.map((option) => ({\n label: option.label,\n detail: '',\n amount: option.amount.value,\n identifier: option.id\n }))\n }\n : {\n newShippingMethods: [\n {\n label: getLocalizedString(worldReady, 'payment.text.applePay.noShippingOptions'),\n detail: '',\n amount: '0',\n identifier: notApplicable\n }\n ]\n };\n\n applePaySession.completeShippingContactSelection({\n newTotal: {\n amount: orderShipping.amount.value.toString(),\n label: initialPaymentRequest.total.label\n },\n newLineItems: getLineItems(worldReady, orderShipping),\n ...(isShippingFromProfile ? newShippingMethodsForProfileShippingButton : {})\n });\n } catch (err) {\n logErrorClient('onShippingContactSelected', err.message);\n applePaySession.completeShippingContactSelection({\n newTotal: initialPaymentRequest.total,\n errors: [new window.ApplePayError!('shippingContactInvalid')]\n });\n setCaptureStatus(CaptureStatus.FAILED);\n }\n };\n\n const onShippingMethodsSelected = async (\n event: ApplePayJS.ApplePayShippingMethodSelectedEvent\n ) => {\n const applePaySession = getSession() as ApplePaySession;\n const initialPaymentRequest = getInitialPaymentRequest() as ApplePayJS.ApplePayPaymentRequest;\n\n try {\n const csrfToken = appContext?.app.csrfToken;\n if (!csrfToken) {\n throw Error('Missing csrfToken');\n }\n\n const { context_id } = getOrder();\n if (!context_id) {\n throw Error('Missing order context_id');\n }\n\n const { identifier } = event.shippingMethod;\n\n // If the identifier is notApplicable then there are no shipping\n // methods associated with the merchant profile shipping configuration\n // When this happens, we will invoke the shipping method selection\n // from the Apple Pay SDK with the initial payment information\n if (identifier === notApplicable) {\n const orderShipping = getOrderShipping() as OrderShipping;\n\n applePaySession.completeShippingMethodSelection({\n newTotal: {\n amount: orderShipping.amount.value.toString(),\n label: initialPaymentRequest.total.label\n },\n newLineItems: getLineItems(worldReady, orderShipping)\n });\n return;\n }\n\n const orderShipping = await updateOrderShippingOptions({\n csrfToken,\n contextId: context_id,\n hostedButtonId,\n optionId: identifier,\n fptiAdditionalTags,\n pageName\n });\n\n if (!orderShipping) {\n throw Error('Invalid order shipping');\n }\n\n // If shipping method is selected, shipping_options cannot be empty\n if (!orderShipping.shipping_options || !orderShipping.shipping_options.length) {\n throw Error('Invalid shipping options');\n }\n\n if (\n !orderShipping.shipping_options.some(\n (option) => option.id === identifier && option.selected\n )\n ) {\n throw Error('Order shipping not updated');\n }\n\n setOrderShipping(orderShipping);\n\n applePaySession.completeShippingMethodSelection({\n newTotal: {\n amount: orderShipping.amount.value.toString(),\n label: initialPaymentRequest.total.label\n },\n newLineItems: getLineItems(worldReady, orderShipping)\n });\n } catch (err) {\n logErrorClient('onShippingMethodsSelected', err.message);\n // ApplePay API completeShippingMethodSelection doesn't support error\n applePaySession.abort();\n setCaptureStatus(CaptureStatus.FAILED);\n }\n };\n\n const onCancel = (event: ApplePayJS.Event) => {\n setIsCancelled();\n logWarnClient('onCancel', 'ApplePay cancelled');\n };\n\n const createApplePaySession = () => {\n const formValidation = validateForm(\n userInputsRef.current,\n buttonType,\n currencyConfig,\n formErrorMessageRef.current,\n buttonVariables\n );\n setFormErrorMessage(formValidation);\n recordClick({\n ...fptiAdditionalTags,\n pageName,\n eventName: 'applepay_button_clicked',\n int_error_desc: formValidation.isFormValid ? {} : formValidation\n });\n\n if (!formValidation.isFormValid) {\n logWarnClient('createApplePaySession-Invalid form');\n return;\n }\n setCaptureStatus('');\n\n const options = generateOptions(\n buttonDetails.option_details,\n buttonVariables.currency_code,\n worldReady\n );\n\n const { ApplePaySession } = window;\n if (!ApplePaySession) {\n logWarnClient('createApplePaySession-Missing ApplePaySession');\n return;\n }\n\n const currencyCode = buttonVariables.currency_code;\n if (!currencyCode) {\n logWarnClient('createApplePaySession-Missing currencyCode');\n return;\n }\n\n const countryCode = appContext?.app.region;\n if (!countryCode) {\n logWarnClient('createApplePaySession-Missing countryCode');\n return;\n }\n\n let itemName = userInputs.item || buttonVariables.item_name;\n // for customer defined buttons, item name might be missing, add a default text here\n if (!itemName && buttonVariables.button_type === ButtonType.VARIABLE_PRICE) {\n itemName = getLocalizedString(worldReady, 'details.fields.customerDefinedItem');\n }\n if (!itemName) {\n logWarnClient('createApplePaySession-Missing itemName');\n return;\n }\n\n const totalFields = getPaymentTotalFields(buttonVariables, userInputs, options, featureFlags);\n const {\n total: { value: total },\n subtotal: { value: subTotal }\n } = totalFields;\n\n // TODO: Check for merchant country and determineSupportedNetworks can be moved over to the server side.\n const isCollectShippingAddress = buttonVariables.no_shipping !== '1';\n const paymentRequest: ApplePayJS.ApplePayPaymentRequest = {\n countryCode: mapC2ToCN(countryCode),\n currencyCode,\n merchantCapabilities: ['supports3DS', 'supportsCredit', 'supportsDebit'],\n requiredBillingContactFields: ['postalAddress'],\n requiredShippingContactFields: isCollectShippingAddress\n ? ['phone', 'email', 'name', 'postalAddress']\n : ['phone', 'email'],\n supportedNetworks: getSupportedNetworks(currencyCode),\n total: {\n label: itemName,\n // Must be a stringified number\n amount: total === FieldValueContent.EstimateLater ? subTotal.toString() : total.toString()\n },\n lineItems: getLineItems(worldReady, undefined, totalFields)\n };\n\n logInfoClient('createApplePaySession - paymentRequest', paymentRequest);\n\n const applePaySession = new ApplePaySession(7, paymentRequest);\n setSession(applePaySession, paymentRequest);\n applePaySession.onvalidatemerchant = onValidateMerchant;\n applePaySession.onpaymentauthorized = onPaymentAuthorized;\n applePaySession.oncancel = onCancel;\n if (shouldUpdateOrderShipping) {\n applePaySession.onshippingcontactselected = onShippingContactSelected;\n applePaySession.onshippingmethodselected = onShippingMethodsSelected;\n }\n applePaySession.begin();\n };\n\n useEffect(\n () => {\n setInitComplete?.(true);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n return \n );\n};\n\nconst ExpressOrCardFunding = ({\n fundingMethod,\n commonJSSDKButtonProps,\n setInitComplete,\n trackButtonLoaded,\n setRemoveSpinner\n}: {\n fundingMethod: FUNDING_SOURCE;\n commonJSSDKButtonProps: JSSDKButtonProps;\n setInitComplete?: React.Dispatch>;\n trackButtonLoaded: (paymentMethod: FUNDING_SOURCE) => void;\n setRemoveSpinner?: React.Dispatch>;\n}) => {\n return (\n
\n {\n setInitComplete?.(true);\n setRemoveSpinner?.(true);\n trackButtonLoaded(fundingMethod);\n }}\n />\n
\n );\n};\n\nconst OtherFunding = ({\n id,\n eligibleMethods,\n commonButtonProps,\n hostedButtonId,\n merchantId,\n shouldUpdateOrderShipping,\n trackButtonLoaded,\n commonJSSDKButtonProps,\n isShowMoreOptions\n}: WithButtonsProps & { id: string; isShowMoreOptions: boolean }) => {\n return eligibleMethods\n .filter((method: FUNDING_SOURCE) => method !== FUNDING.CARD)\n .map((method: FUNDING_SOURCE, index: number) => {\n const key = `button-${id}-${index}-${method}`;\n const isHidden = !isShowMoreOptions && index > 1;\n\n return (\n
\n {method === FUNDING.APPLEPAY ? (\n {\n trackButtonLoaded(method);\n }}\n />\n ) : (\n {\n trackButtonLoaded(method);\n }}\n />\n )}\n
\n );\n });\n};\n\nconst getFundingPlacements = (eligibleMethods: Array) => {\n const defaultPayments = {\n primary: FUNDING.PAYPAL,\n secondary: null,\n bottom: FUNDING.CARD,\n tertiary: []\n };\n if (eligibleMethods.length <= 2) {\n return {\n ...defaultPayments,\n secondary: eligibleMethods.filter((method) => method !== FUNDING.CARD)[0]\n };\n }\n\n return {\n ...defaultPayments,\n tertiary: eligibleMethods.filter((method) => method !== FUNDING.CARD)\n };\n};\n\nconst WithButtons = ({\n merchantId,\n hostedButtonId,\n eligibleMethods,\n commonJSSDKButtonProps,\n setInitComplete,\n trackButtonLoaded,\n setRemoveSpinner,\n commonButtonProps,\n shouldUpdateOrderShipping\n}: WithButtonsProps) => {\n const { fptiAdditionalTags } = usePaymentContext();\n const [isShowMoreOptions, setIsShowMoreOptions] = useState(false);\n const [fundingPlacements, setFundingPlacements] = useState(getFundingPlacements(eligibleMethods));\n\n const toggleFunding = (event) => {\n event?.preventDefault();\n event?.stopPropagation();\n recordClick({\n ...fptiAdditionalTags,\n pageName: PAGE_NAME,\n eventName: `${isShowMoreOptions ? 'hide' : 'show'}_more_options`\n });\n setIsShowMoreOptions(!isShowMoreOptions);\n };\n\n useEffect(() => {\n setFundingPlacements(getFundingPlacements(eligibleMethods));\n }, [eligibleMethods]);\n\n return (\n <>\n
\n \n
\n \n {fundingPlacements.secondary && (\n \n )}\n
\n {fundingPlacements.tertiary?.length > 1 && (\n
\n \n
\n )}\n {fundingPlacements?.tertiary?.length > 2 && (\n
\n \n
\n )}\n
\n
\n \n \n
\n \n );\n};\n\nexport default WithButtons;\n","import React, { CSSProperties } from 'react';\n\n// SVG for Paywall Issuer Card Art came from Adam Greer\n// The \"+more\" will not be translated and product/design want that.\nexport default ({ style = {} }: { style: CSSProperties }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import { css } from '@emotion/react';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react';\nimport { imageLocations } from '../constants';\n\nconst {\n sysBorderRadiusSm,\n sysBorderThicknessNormal,\n sysColorBackgroundMediumContrast,\n sysColorStructureBorderHighContrast,\n sysSizeIconSm,\n sysSpaceMd,\n sysSpaceSm,\n sysSpaceXs,\n sysSpaceLg\n} = PAYPAL_THEME;\n\nconst baseCardStyles = css`\n background-repeat: no-repeat;\n background-position: center;\n background-size: 50%;\n border-radius: ${sysBorderRadiusSm};\n border: ${sysBorderThicknessNormal} solid;\n border-color: ${sysColorStructureBorderHighContrast};\n width: 2.8125rem;\n min-width: 2.8125rem;\n height: 1.875rem;\n text-align: center;\n padding: 0;\n background-image: '';\n`;\n\nconst styles = {\n radioItem: {\n item: css`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 2rem;\n line-height: 2rem;\n `,\n label: css`\n .fullWidthRadio {\n width: 100%;\n vertical-align: middle;\n box-sizing: border-box;\n\n & > span {\n top: 50%;\n transform: translateY(-50%);\n }\n }\n `,\n body: css`\n align-self: center;\n padding-left: ${sysSpaceMd};\n white-space: nowrap;\n `,\n cardArt: css`\n margin-left: auto;\n `\n },\n creditCardIcon: css`\n width: ${sysSizeIconSm};\n `,\n cardStyles: {\n applepay: css`\n ${baseCardStyles};\n background-image: url(${imageLocations.applepay});\n background-size: 100%;\n border: 0 solid;\n `,\n card: css`\n ${baseCardStyles};\n display: flex;\n justify-content: center;\n align-items: center;\n `,\n paylater: css`\n ${baseCardStyles};\n background-image: url(${imageLocations.paylater});\n `,\n venmo: css`\n ${baseCardStyles};\n background-image: url(${imageLocations.venmo});\n `\n },\n payWithDivider: {\n container: css`\n display: flex;\n flex-direction: row;\n margin: ${sysSpaceLg} 0 ${sysSpaceXs} 0;\n `,\n divider: css`\n flex: 1 0 30%;\n border-top-color: ${sysColorStructureBorderHighContrast};\n margin: 0.7rem 0;\n `,\n text: css`\n text-align: center;\n margin: 0 ${sysSpaceSm};\n color: ${sysColorBackgroundMediumContrast};\n `\n },\n paymentMethodsDividerBase: css`\n margin-bottom: 0;\n `,\n paymentMethodsDividerSelected: css`\n margin-top: 0.75rem;\n `,\n paymentMethodsDividerUnselected: css`\n margin-top: 0;\n `,\n singleAdditionalFundingMethod: css`\n margin-top: ${sysSpaceMd};\n `,\n radioButtonGroup: css`\n border: none;\n padding: 0;\n `\n};\n\nexport default styles;\n","import React, { useState } from 'react';\nimport { FUNDING } from '@paypal/react-paypal-js';\nimport type { FUNDING_SOURCE } from '@paypal/paypal-js';\nimport { Radio, Divider, CaptionText, CreditCardIcon, BodyText } from '@paypalcorp/pp-react';\nimport { CheckoutPaymentOptionsOtherThanPayPal } from '@components/buttons/types';\nimport PaywallIssuerCardArt from '@client/assets/PaywallIssuerCardArt';\nimport { recordClick } from '@common/analytics';\nimport { useWorldReadyContext } from '@client/contexts/WorldReadyContext';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { getLocalizedString } from '@client/utils/localeHelper';\nimport { hideStyle } from '@client/components/common/commonStyles';\nimport JSSDKButton, { JSSDKButtonProps } from '../../JSSDKButton';\nimport ApplePayButtonContainer from '../../ApplePayButton';\nimport styles from './styles';\nimport { PAGE_NAME } from '../constants';\n\nconst OR_PAY_WITH_ID = 'or-pay-with';\nconst RADIO_BTN_GROUP_NAME = 'Radio-buttons-paywall';\n\ntype WithRadioProps = {\n merchantId: string | undefined;\n hostedButtonId: string;\n eligibleMethods: Array;\n commonJSSDKButtonProps: JSSDKButtonProps;\n commonButtonProps: JSSDKButtonProps;\n setInitComplete: React.Dispatch>;\n trackButtonLoaded: (paymentMethod: FUNDING_SOURCE) => void;\n setRemoveSpinner: React.Dispatch>;\n shouldUpdateOrderShipping: boolean;\n};\n\nconst PayWithDivider = () => {\n const worldReady = useWorldReadyContext();\n return (\n
\n \n \n \n {getLocalizedString(worldReady, 'payment.fundingMethod.orPayWith')}\n \n \n \n
\n );\n};\n\nconst FundingMethodRadioLabel = ({ fundingMethod }: { fundingMethod: FUNDING_SOURCE }) => {\n const worldReady = useWorldReadyContext();\n const isCardFundingMethod = fundingMethod === FUNDING.CARD;\n\n const radioItemIcon = (\n
\n {isCardFundingMethod && (\n \n )}\n
\n );\n\n return (\n
\n {radioItemIcon}\n \n {getLocalizedString(worldReady, `payment.fundingMethod.${fundingMethod}`)}\n \n {isCardFundingMethod && (\n
\n \n
\n )}\n
\n );\n};\n\nconst WithRadio = ({\n merchantId,\n hostedButtonId,\n eligibleMethods,\n commonJSSDKButtonProps,\n commonButtonProps,\n setInitComplete,\n trackButtonLoaded,\n setRemoveSpinner,\n shouldUpdateOrderShipping\n}: WithRadioProps) => {\n const { isPreview } = usePreviewContext();\n const { fptiAdditionalTags } = usePaymentContext();\n const [selectedRadio, updateSelectedRadio] = useState('');\n\n return (\n <>\n {\n setInitComplete(true);\n trackButtonLoaded('paypal');\n }}\n />\n {eligibleMethods.length === 1 && (\n
\n {\n trackButtonLoaded(eligibleMethods[0]);\n setRemoveSpinner(true);\n }}\n />\n
\n )}\n {eligibleMethods.length > 1 && (\n
\n \n {eligibleMethods.map((method) => {\n const isSelected = selectedRadio === method;\n return (\n
\n }\n labelClassName=\"fullWidthRadio\"\n checked={isSelected}\n onChange={() => {\n updateSelectedRadio(method);\n if (!isPreview) {\n recordClick({\n ...fptiAdditionalTags,\n selected_payment_method: method,\n pageName: PAGE_NAME,\n eventName: 'radio_button_selected'\n });\n }\n }}\n />\n
\n {method === FUNDING.APPLEPAY ? (\n {\n trackButtonLoaded(method);\n }}\n />\n ) : (\n {\n trackButtonLoaded(method);\n }}\n />\n )}\n
\n \n
\n );\n })}\n
\n )}\n \n );\n};\n\nexport default WithRadio;\n","import React, { useRef, useEffect, useState } from 'react';\nimport { FUNDING, usePayPalScriptReducer } from '@paypal/react-paypal-js';\nimport type {\n FUNDING_SOURCE,\n OnShippingAddressChangeData,\n OnShippingOptionsChangeData,\n OnShippingAddressChangeActions,\n OnShippingOptionsChangeActions,\n OnCancelledActions\n} from '@paypal/paypal-js';\nimport { Row, LoadingSpinner } from '@paypalcorp/pp-react';\nimport { spinnerStyle, hideStyle } from '@client/components/common/commonStyles';\nimport { useAppContext } from '@client/contexts/AppContext';\nimport { getFeatureFlags } from '@client/helpers/ucpConfig';\nimport serverData from '@client/utils/server-data';\nimport useOrderStatus from '@client/hooks/useOrderStatus';\nimport { PageName, endCPLTracking, startCPLTracking } from '@common/analytics';\nimport {\n CheckoutPaymentOptionsOtherThanPayPal,\n ShippingPreference,\n TaxRatePreference\n} from '@components/buttons/types';\nimport { logErrorClient } from '@client/utils/beaverLogger';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { OrderShipping, SDKButtonStyle } from '@client/typings/Common';\n\nimport getIsEligibleForApplePay from '@client/components/ButtonsStack/ApplePayButton/getIsEligibleForApplePay';\nimport {\n createOrderWrapper,\n captureOrderWrapper,\n updateOrderShippingOptions\n} from '../ordersHelper';\nimport styles from './styles';\nimport { PAGE_NAME } from './constants';\nimport { SDKButtonWrapperProps } from '../types';\nimport WithButtons from './WithButtons';\nimport WithRadio from './WithRadio';\nimport { JSSDKButtonProps } from '../JSSDKButton';\n\ntype PaywallButtonWrapperProps = SDKButtonWrapperProps & {\n allowedPaymentMethods: `${CheckoutPaymentOptionsOtherThanPayPal}`[];\n merchantCountryCode?: string;\n};\n\nconst PaywallHostedButtons = ({\n merchantId,\n hostedButtonId,\n buttonType,\n currencyCode,\n shippingPreference,\n taxRatePreference,\n allowedPaymentMethods,\n merchantCountryCode,\n notCollectShippingAddr,\n buttonVariables\n}: PaywallButtonWrapperProps) => {\n const [{ isPending }] = usePayPalScriptReducer();\n const appContext = useAppContext();\n const featureFlags = getFeatureFlags(appContext);\n const { isPreview } = usePreviewContext();\n const config = appContext?.app?.config;\n const enablePaywallButtons = appContext?.enablePaywallButtons;\n\n const {\n formErrorMessage,\n userInputs,\n setCaptureStatus,\n setOrderData,\n fptiAdditionalTags,\n setIsLoading,\n setProfileShipping,\n setProfileTax\n } = usePaymentContext();\n const userInputsRef = useRef(userInputs);\n const formErrorMessageRef = useRef(formErrorMessage);\n const [initComplete, setInitComplete] = useState(false);\n const [removeSpinner, setRemoveSpinner] = useState(false);\n const ppBtnLoading = isPending || !initComplete;\n const showSpinner = ppBtnLoading || !removeSpinner;\n const [eligibleMethods, updateEligibleMethods] = useState([]);\n const initialCsrfToken = serverData.csrfToken;\n\n const updateProfileShippingTax = (orderShipping: OrderShipping) => {\n const isShippingFromProfile = shippingPreference === ShippingPreference.FromProfile;\n const isTaxFromProfile = taxRatePreference === TaxRatePreference.FromProfile;\n\n if (isShippingFromProfile) {\n setProfileShipping(orderShipping?.amount?.breakdown?.shipping?.value ?? '0');\n }\n\n if (isTaxFromProfile) {\n setProfileTax(orderShipping?.amount?.breakdown?.tax_total?.value ?? '0');\n }\n };\n\n const onCreateOrder = createOrderWrapper({\n fptiAdditionalTags,\n userInputsRef,\n apiParams: {\n csrfToken: initialCsrfToken,\n hostedButtonId,\n merchantId,\n buttonType\n },\n pageName: PAGE_NAME,\n appContext\n });\n\n const onApprove = captureOrderWrapper({\n appContext,\n apiParams: {\n csrfToken: initialCsrfToken,\n hostedButtonId,\n merchantId,\n buttonType\n },\n fptiAdditionalTags,\n pageName: PAGE_NAME,\n setOrderData,\n setIsLoading\n });\n\n const onShippingAddressChange = async (\n data: OnShippingAddressChangeData,\n actions: OnShippingAddressChangeActions\n ) => {\n const orderShipping = await updateOrderShippingOptions({\n csrfToken: initialCsrfToken,\n // @ts-ignore workaround for guest xo. Issue: https://paypal.atlassian.net/browse/LI-61763\n contextId: data.orderID || data.orderId,\n hostedButtonId,\n shippingAddress: data.shippingAddress,\n fptiAdditionalTags,\n pageName: PAGE_NAME\n });\n\n if (!orderShipping) {\n // @ts-ignore\n return actions.reject(data.errors?.ADDRESS_ERROR);\n }\n\n updateProfileShippingTax(orderShipping);\n };\n const onShippingOptionsChange = async (\n data: OnShippingOptionsChangeData,\n actions: OnShippingOptionsChangeActions\n ) => {\n const { selectedShippingOption } = data;\n if (!selectedShippingOption) {\n logErrorClient('onShippingOptionsChange', 'No selected shipping option');\n // @ts-ignore\n return actions.reject(data.errors?.METHOD_UNAVAILABLE);\n }\n\n const orderShipping = await updateOrderShippingOptions({\n csrfToken: initialCsrfToken,\n // @ts-ignore workaround for guest xo. Issue: https://paypal.atlassian.net/browse/LI-61763\n contextId: data.orderID || data.orderId,\n hostedButtonId,\n optionId: selectedShippingOption.id,\n fptiAdditionalTags,\n pageName: PAGE_NAME\n });\n\n if (!orderShipping) {\n // @ts-ignore\n return actions.reject(data.errors?.METHOD_UNAVAILABLE);\n }\n\n updateProfileShippingTax(orderShipping);\n };\n\n const onCancel = (data: Record, actions: OnCancelledActions) => {\n setProfileShipping(undefined);\n setProfileTax(undefined);\n };\n\n const jssdkCommonPayload = { event: 'im', pageName: PAGE_NAME as PageName };\n let buttonStyle: SDKButtonStyle;\n if (enablePaywallButtons) {\n buttonStyle = {\n height: 50 // Explicit height as per UX recommendation\n };\n }\n\n /**\n * Whether to update the order shipping when shipping contact or shipping option is changed\n * This only applies to shipping_from_profile and tax_rate_from_profile\n */\n const shouldUpdateOrderShipping =\n shippingPreference === ShippingPreference.FromProfile ||\n taxRatePreference === TaxRatePreference.FromProfile;\n\n useEffect(() => {\n userInputsRef.current = userInputs;\n }, [userInputs]);\n\n useEffect(() => {\n formErrorMessageRef.current = formErrorMessage;\n }, [formErrorMessage]);\n\n const getFundingSources = () =>\n window.paypal?.getFundingSources?.()?.filter((source) => {\n if (!(allowedPaymentMethods as Partial[]).includes(source)) {\n return false;\n }\n if (source === FUNDING.VENMO && shouldUpdateOrderShipping) {\n return featureFlags?.venmoShipTaxSupport && window.paypal?.isFundingEligible?.(source);\n }\n if (source === FUNDING.APPLEPAY) {\n return (\n isPreview ||\n getIsEligibleForApplePay({\n buyerCountryCode: appContext?.app.region,\n merchantCountryCode,\n supportedCountries: config?.applepay?.supportedCountries ?? []\n })\n );\n }\n return window.paypal?.isFundingEligible?.(source);\n }) || [];\n\n const getEligibilities = async () => {\n const fundingSources = getFundingSources();\n\n // We should remove the spinner right away if we only need to show the PayPal button.\n // When we have more than one funding method, we will show the radio buttons\n // so that gives us enough lead-time to remove the spinner since we render the PayPalButtons\n // underneath the radio buttons.\n if (!enablePaywallButtons && fundingSources.length !== 1) {\n setRemoveSpinner(true);\n }\n\n updateEligibleMethods(fundingSources);\n\n if (!isPreview) {\n fundingSources.forEach((method) => {\n startCPLTracking(\n {\n ...jssdkCommonPayload,\n eventName: `js_sdk_loaded_${method}`\n },\n `js_sdk_loaded_${method}`\n );\n });\n }\n };\n\n useEffect(() => {\n if (ppBtnLoading) {\n return;\n }\n\n getEligibilities();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ppBtnLoading, shouldUpdateOrderShipping]);\n\n useEffect(() => {\n if (isPreview || !ppBtnLoading) return;\n startCPLTracking(\n {\n ...jssdkCommonPayload,\n eventName: 'js_sdk_loaded_paypal'\n },\n 'js_sdk_loaded_paypal'\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ppBtnLoading]);\n\n useEffect(() => {\n if (isPreview) return;\n\n if (showSpinner) {\n startCPLTracking(\n {\n ...jssdkCommonPayload,\n eventName: 'button_load_complete'\n },\n 'button_load_complete'\n );\n } else {\n endCPLTracking(\n {\n ...jssdkCommonPayload,\n eventName: 'button_load_complete',\n eligible_payment_count: eligibleMethods.length + 1\n },\n 'button_load_complete'\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showSpinner]);\n\n useOrderStatus();\n\n const commonButtonProps = {\n pageName: PAGE_NAME as PageName,\n userInputs,\n formErrorMessageRef,\n buttonType,\n currencyCode,\n buttonStyle\n };\n\n const commonJSSDKButtonProps = {\n ...commonButtonProps,\n userInputsRef,\n createOrder: onCreateOrder,\n onApprove,\n setCaptureStatus,\n notCollectShippingAddr,\n buttonVariables,\n fundingSource: undefined,\n ...(shouldUpdateOrderShipping && { onShippingAddressChange, onShippingOptionsChange, onCancel })\n };\n\n const trackButtonLoaded = (paymentMethod: FUNDING_SOURCE) => {\n if (isPreview) return;\n endCPLTracking(\n {\n ...jssdkCommonPayload,\n eventName: `js_sdk_loaded_${paymentMethod}`\n },\n `js_sdk_loaded_${paymentMethod}`\n );\n };\n\n return (\n <>\n {showSpinner && (\n \n \n \n )}\n \n {enablePaywallButtons ? (\n \n ) : (\n \n )}\n \n \n );\n};\n\nexport default PaywallHostedButtons;\n","import React, { useRef, useEffect, useState } from 'react';\nimport { usePayPalScriptReducer } from '@paypal/react-paypal-js';\nimport { Row, LoadingSpinner } from '@paypalcorp/pp-react';\nimport { spinnerStyle } from '@client/components/common/commonStyles';\nimport { useAppContext } from '@client/contexts/AppContext';\nimport serverData from '@client/utils/server-data';\nimport useOrderStatus from '@client/hooks/useOrderStatus';\nimport { endCPLTracking, startCPLTracking } from '@common/analytics';\nimport { SDKButtonStyle } from '@client/typings/Common';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { captureOrderWrapper, createOrderWrapper } from './ordersHelper';\nimport JSSDKButton from './JSSDKButton';\nimport { SDKButtonWrapperProps } from './types';\n\nconst PAGE_NAME = 'payment';\n\ntype StackedButtonWrapperProps = SDKButtonWrapperProps & {\n buttonStyle: SDKButtonStyle;\n};\n\n// Custom component to wrap the PayPalButtons and show loading spinner for hosted buttons\nconst StackedPayPalButtons = ({\n merchantId,\n hostedButtonId,\n buttonType,\n currencyCode,\n buttonStyle,\n notCollectShippingAddr,\n buttonVariables\n}: StackedButtonWrapperProps) => {\n const [{ isPending }] = usePayPalScriptReducer();\n const appContext = useAppContext();\n const { formErrorMessage, userInputs, setCaptureStatus, setOrderData, fptiAdditionalTags } =\n usePaymentContext();\n const userInputsRef = useRef(userInputs);\n const formErrorMessageRef = useRef(formErrorMessage);\n const [initComplete, setInitComplete] = useState(false);\n const ppBtnLoading = isPending || !initComplete;\n const { isPreview } = usePreviewContext();\n\n useEffect(() => {\n userInputsRef.current = userInputs;\n }, [userInputs]);\n\n useEffect(() => {\n formErrorMessageRef.current = formErrorMessage;\n }, [formErrorMessage]);\n\n useEffect(() => {\n if (isPreview) {\n return;\n }\n if (ppBtnLoading) {\n startCPLTracking({\n pageName: PAGE_NAME,\n eventName: 'js_sdk_loaded',\n event: 'im'\n });\n } else {\n endCPLTracking();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ppBtnLoading]);\n\n useOrderStatus();\n const initialCsrfToken = serverData.csrfToken;\n return (\n <>\n {ppBtnLoading && (\n \n \n \n )}\n
\n \n
\n \n );\n};\n\nexport default StackedPayPalButtons;\n","import { Dispatch, SetStateAction, MutableRefObject } from 'react';\nimport type {\n OnApproveActions,\n OnApproveData,\n CreateOrderData,\n OnShippingAddressChangeData\n} from '@paypal/paypal-js';\nimport fetchWrapper from '@client/helpers/fetchWrapper';\nimport { PageName, endCPLTracking, recordImpression, startCPLTracking } from '@common/analytics';\nimport { logErrorClient } from '@client/utils/beaverLogger';\nimport { UserInputsType, OrderShipping, OrderDetails } from '@client/typings/Common';\nimport { IAppContext } from '@client/contexts/AppContext';\n\ntype ApiParams = {\n csrfToken: string;\n hostedButtonId: string;\n merchantId: string | undefined;\n buttonType: string | undefined;\n};\n\nconst createOrder = async (\n data: CreateOrderData,\n userInputsRef: MutableRefObject,\n apiParams: ApiParams\n) => {\n const paymentSource = data.paymentSource.toUpperCase();\n const { csrfToken, hostedButtonId, merchantId, buttonType } = apiParams;\n const tStart = Date.now();\n const { response, responseData: order } = await fetchWrapper(\n '/ncp/api/create-order',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken\n },\n body: JSON.stringify({\n link_id: hostedButtonId,\n merchant_id: merchantId,\n ...userInputsRef.current,\n funding_source: paymentSource,\n button_type: buttonType\n })\n },\n true\n );\n const apiDuration = Date.now() - tStart;\n return { response, order, apiDuration };\n};\n\nconst captureOrder = async (data: OnApproveData, apiParams: ApiParams) => {\n // @ts-ignore: paymentSource type does exist\n const { paymentSource } = data;\n const { csrfToken, hostedButtonId, merchantId, buttonType } = apiParams;\n\n const tStart = Date.now();\n const { response, responseData: order } = await fetchWrapper(\n '/ncp/api/capture-order',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken\n },\n body: JSON.stringify({\n link_id: hostedButtonId,\n merchant_id: merchantId,\n context_id: data.orderID,\n source: paymentSource,\n button_type: buttonType\n })\n },\n true\n );\n const apiDuration = Date.now() - tStart;\n return { response, order, apiDuration };\n};\n\nconst csrfResponseHandler = (\n response: Response,\n order: { csrfToken?: string; [key: string]: unknown },\n appContext: IAppContext | null\n): Promise | void => {\n if (response.status === 403) {\n return Promise.reject({ status: 403 });\n }\n\n if (order.csrfToken) {\n appContext?.setCsrfToken(order.csrfToken);\n }\n};\n\nexport const createOrderWrapper =\n ({\n appContext,\n apiParams,\n fptiAdditionalTags,\n pageName,\n userInputsRef\n }: {\n appContext: IAppContext | null;\n apiParams: ApiParams;\n fptiAdditionalTags: Record;\n pageName: PageName;\n userInputsRef: React.MutableRefObject;\n }) =>\n async (data: CreateOrderData) => {\n const paymentSource = data.paymentSource.toUpperCase();\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'create_order_start'\n },\n {\n funding_type: paymentSource\n }\n );\n startCPLTracking({\n pageName,\n eventName: 'create_order',\n event: 'im'\n });\n const { response, order, apiDuration } = await createOrder(data, userInputsRef, {\n ...apiParams,\n csrfToken: appContext?.app?.csrfToken || apiParams.csrfToken\n });\n endCPLTracking();\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'create_order_end'\n },\n {\n funding_type: paymentSource,\n order_id: order?.context_id,\n api_response_code: response.status,\n api_duration: apiDuration\n }\n );\n const csrfResponse = csrfResponseHandler(response, order, appContext);\n if (csrfResponse) {\n return csrfResponse;\n }\n if (order.context_id) {\n return order.context_id;\n }\n return Promise.reject({});\n };\n\nexport const captureOrderWrapper =\n ({\n appContext,\n apiParams,\n fptiAdditionalTags,\n pageName,\n setOrderData,\n setIsLoading\n }: {\n appContext: IAppContext | null;\n apiParams: ApiParams;\n fptiAdditionalTags: Record;\n pageName: PageName;\n setOrderData: Dispatch>;\n setIsLoading?: Dispatch>;\n }) =>\n async (data: OnApproveData, actions: OnApproveActions) => {\n try {\n // @ts-ignore: paymentSource type does exist\n const { paymentSource } = data;\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'capture_order_start'\n },\n {\n funding_type: paymentSource?.toUpperCase(),\n order_id: data.orderID\n }\n );\n\n /**\n * We don't need to setIsLoading false when capture order complete in this function\n * setIsLoading false will be called in useOrderStatus when thank you page redirection\n * is not required\n */\n setIsLoading?.(true);\n startCPLTracking({\n pageName,\n eventName: 'capture_order',\n event: 'im'\n });\n const {\n response,\n order: orderData,\n apiDuration\n } = await captureOrder(data, {\n ...apiParams,\n csrfToken: appContext?.app?.csrfToken || apiParams.csrfToken\n });\n endCPLTracking();\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName,\n eventName: 'capture_order_end'\n },\n {\n funding_type: paymentSource?.toUpperCase(),\n order_id: data.orderID,\n api_response_code: response.status,\n api_duration: apiDuration\n }\n );\n const csrfResponse = csrfResponseHandler(response, orderData, appContext);\n if (csrfResponse) {\n setIsLoading?.(false);\n return csrfResponse;\n }\n if (orderData.name === 'INSTRUMENT_DECLINED') {\n setIsLoading?.(false);\n return actions.restart();\n }\n\n setOrderData(orderData);\n return orderData;\n } catch (err) {\n setIsLoading?.(false);\n }\n };\n\nexport const updateOrderShippingOptions = async ({\n csrfToken,\n contextId,\n hostedButtonId,\n shippingAddress,\n optionId,\n fptiAdditionalTags,\n pageName\n}: {\n csrfToken: string;\n contextId: string | undefined;\n hostedButtonId: string;\n shippingAddress?: OnShippingAddressChangeData['shippingAddress'];\n optionId?: string;\n fptiAdditionalTags: Record;\n pageName: PageName;\n}): Promise => {\n try {\n if (!contextId) {\n throw Error('Invalid context id');\n }\n\n if (!shippingAddress && !optionId) {\n throw Error('Invalid payload');\n }\n\n recordImpression({\n ...fptiAdditionalTags,\n pageName,\n eventName: optionId ? 'ship_option_change_start' : 'ship_address_change_start'\n });\n startCPLTracking({\n pageName,\n eventName: optionId ? 'ship_option_change' : 'ship_address_change',\n event: 'im'\n });\n const { responseData, response } = await fetchWrapper(\n `/ncp/api/order-shipping-options/${hostedButtonId}/${contextId}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken\n },\n body: JSON.stringify({\n ...(shippingAddress && {\n shipping_address: {\n admin_area_2: shippingAddress.city,\n admin_area_1: shippingAddress.state,\n country_code: shippingAddress.countryCode,\n postal_code: shippingAddress.postalCode\n }\n }),\n ...(optionId && { option_id: optionId })\n })\n },\n true\n );\n endCPLTracking();\n recordImpression({\n ...fptiAdditionalTags,\n pageName,\n eventName: optionId ? 'ship_option_change_end' : 'ship_address_change_end'\n });\n const body = responseData as OrderShipping;\n if (response.status !== 200) {\n throw Error(responseData?.message || 'Failed updating shipping options');\n }\n return body;\n } catch (err) {\n logErrorClient('updateOrderShippingOptions', err.message);\n return null;\n }\n};\n","import { css } from '@emotion/react';\nimport { checkoutColorMapping } from '@client/utils/constants';\n\nconst styles = {\n paypalButtonsContainer: css`\n &.hide {\n display: none;\n }\n `,\n checkoutButton: css`\n padding: 0 2rem;\n overflow-wrap: anywhere;\n width: 100%;\n line-height: 1.15;\n\n &.black {\n &:hover {\n filter: brightness(${checkoutColorMapping.black.hoverBrightness});\n }\n }\n\n &.white {\n &:hover {\n filter: brightness(${checkoutColorMapping.white.hoverBrightness});\n }\n }\n\n &:hover {\n filter: brightness(${checkoutColorMapping.default.hoverBrightness});\n }\n\n &:focus {\n outline-offset: ${checkoutColorMapping.default.focus.offset};\n outline: ${checkoutColorMapping.default.focus.outline};\n }\n `\n};\n\nexport const shimmerHeight = (height?: number) => css`\n height: ${height ? `${height}px` : '2.813rem'};\n`;\n\nexport default styles;\n","import hmacMD5 from 'crypto-js/hmac-md5';\nimport { MAX_QUANTITY } from '@common/buttonConfigValidations';\nimport { sanitize } from '@common/sanitize';\nimport { formatCurrency, WorldReadyProps } from '@client/utils/localeHelper';\nimport {\n OptionItem,\n QuantityOption,\n OptionDetail,\n HostedButtonDetails\n} from '../../typings/Common';\n\nconst generateQuantityOptions = (quantity_option): QuantityOption[] => {\n const options: QuantityOption[] = [];\n const maxQuantity = Math.min(Number(quantity_option), MAX_QUANTITY);\n if (!maxQuantity) {\n return options;\n }\n for (let i = 0; i < maxQuantity; i++) {\n options.push({\n primaryText: String(i + 1),\n value: String(i + 1)\n });\n }\n return options;\n};\n\nconst generateOptions = (\n optionDetails: OptionDetail[] | undefined,\n currencyCode: string | undefined,\n worldReady: WorldReadyProps\n): OptionItem[] => {\n const items = optionDetails?.find((_) => _.name === 'items')?.selection_details ?? [];\n return items.map((_) => {\n const paymentPrimaryText = `${sanitize(_.option_selection)} - ${formatCurrency(\n worldReady,\n currencyCode,\n _.price,\n true\n )}`;\n return {\n primaryText: paymentPrimaryText,\n value: _.option_selection,\n price: _.price\n };\n });\n};\n\n// generate item options for merchant hosted experience item dropdown\nconst getItemOptions = (\n optionDetails: HostedButtonDetails['option_details'] | undefined,\n currencyCode: string | undefined,\n worldReady: WorldReadyProps\n) => {\n if (!optionDetails || !currencyCode) {\n return [];\n }\n\n const selectionDetails =\n optionDetails.find((option) => option.name === 'items')?.selection_details || [];\n return selectionDetails.map((item) => ({\n primaryText: `${item.option_selection} - ${formatCurrency(\n worldReady,\n currencyCode,\n item.price\n )}`,\n value: item.option_selection,\n dataValue: item.price\n }));\n};\n\nconst containerId = (id: string) => `paypal-form-fields-container-${id}`;\n\nconst jsSdkContainerId = (id: string) => `js-sdk-container-${id}`;\n\nconst hashFieldName = (name: string, key: string) => hmacMD5(name, key);\n\nconst generateHashKey = (id: string, uuid: string) => `${id}-${uuid}`;\n\nexport {\n containerId,\n jsSdkContainerId,\n generateQuantityOptions,\n generateOptions,\n getItemOptions,\n hashFieldName,\n generateHashKey\n};\n","import React, { useEffect, useState } from 'react';\nimport { Shimmer } from '@paypalcorp/pp-react';\nimport commonStyles from './commonStyles';\n\ninterface ShimmerPreMountProps {\n children: React.ReactNode;\n}\nconst ShimmerPreMount = ({ children }: ShimmerPreMountProps) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (mounted) {\n return children;\n }\n\n return ;\n};\n\nexport default ShimmerPreMount;\n","import { css } from '@emotion/react';\n\nconst styles = {\n inputLabel: css`\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n overflow-wrap: anywhere;\n `,\n dropdownContainer: css`\n position: relative;\n\n &:after {\n content: close-quote;\n position: absolute;\n top: 1rem;\n right: 1rem;\n bottom: 0;\n width: 0.5rem;\n height: 0.5rem;\n border-style: solid;\n border-width: 2px;\n border-color: transparent transparent #545d68 #545d68;\n transform: rotate(-45deg);\n pointer-events: none;\n }\n `,\n dropdown: css`\n width: 100%;\n min-height: 3rem;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n border: solid 0.0625rem #929496;\n border-radius: 0.25rem;\n box-sizing: border-box;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -webkit-appearance: none;\n -moz-appearance: none;\n `,\n input: css`\n width: 100%;\n min-height: 3rem;\n border: solid 1px #929496;\n border-radius: 0.25rem;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n `,\n label: css`\n display: block;\n margin-bottom: 0.375rem;\n overflow-wrap: anywhere;\n word-break: break-all;\n `,\n amountContainer: css`\n position: relative;\n\n /* Chrome, Safari, Edge, Opera */\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n input[type='number'] {\n -moz-appearance: textfield;\n }\n\n input {\n padding: 0.5rem 3rem 0.5rem 1.4rem;\n }\n `,\n currencySymbol: css`\n position: absolute;\n top: 0;\n left: 0;\n padding: 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n `,\n currencyLabel: css`\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n `\n};\n\nexport default styles;\n","import React, { useContext, useEffect } from 'react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { DropdownMenu } from '@paypalcorp/pp-react';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { isMerchantHostedPreview, transformButtonVariables } from '@client/utils/utils';\nimport ShimmerPreMount from '@components/common/ShimmerPreMount';\nimport { getLocalizedString, WorldReadyProps } from '@client/utils/localeHelper';\nimport { generateQuantityOptions } from '@components/FormFields/helpers';\nimport type { HostedButtonDetails } from '@customTypes/client/Common';\nimport { sanitize } from '@common/sanitize';\nimport commonStyles from '@components/common/commonStyles';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport styles from './styles';\n\ninterface QuantityDropdownProps {\n buttonDetails: HostedButtonDetails;\n}\n\nexport default ({ buttonDetails }: QuantityDropdownProps) => {\n const worldReady = useContext(WorldReadyContext);\n const { isPreview, tabName } = usePreviewContext();\n const { userInputs, setUserInputs, formErrorMessage, setFormErrorMessage } = usePaymentContext();\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const quantityOption = Number(buttonVariables?.quantity_option || 0);\n const quantity = generateQuantityOptions(quantityOption);\n const quantityLabel = getLocalizedString(worldReady, 'singleSelectList.options.quantity');\n\n useEffect(() => {\n if (\n quantityOption > 0 &&\n (!userInputs.quantity || Number(userInputs.quantity) > quantityOption)\n ) {\n setUserInputs({\n ...userInputs,\n quantity: quantity?.[0]?.value\n });\n }\n });\n\n if (!quantity || !quantity.length) {\n return null;\n }\n\n const previewQuantityDropdown = (\n <>\n {quantityLabel}\n
\n ) => {\n setUserInputs({\n ...userInputs,\n quantity: sanitize(event.target.value)\n });\n }}\n >\n {quantity.map((option) => {\n return (\n \n );\n })}\n \n
\n \n );\n\n const quantityDropdown = (\n ) => {\n setUserInputs({\n ...userInputs,\n quantity: sanitize(event.target.value)\n });\n setFormErrorMessage((prevFormErrorMessage) => ({\n ...prevFormErrorMessage,\n quantity: ''\n }));\n }}\n errorText={getLocalizedString(worldReady, formErrorMessage.quantity)}\n />\n );\n\n const showMerchantHostedPreview = isMerchantHostedPreview(isPreview, tabName);\n const rowStyles = showMerchantHostedPreview ? commonStyles.Row(0.75) : commonStyles.Row();\n\n return (\n
\n \n {userInputs.quantity &&\n (showMerchantHostedPreview ? previewQuantityDropdown : quantityDropdown)}\n \n
\n );\n};\n","import React from 'react';\nimport { css } from '@emotion/react';\nimport { Row, Col, Divider, BodyText } from '@paypalcorp/pp-react';\nimport { useAppContext } from '@client/contexts/AppContext';\nimport { getFeatureFlags } from '@client/helpers/ucpConfig';\nimport { useWorldReadyContext, WorldReadyProps } from '@client/contexts/WorldReadyContext';\nimport { formatCurrency, getCurrencyConfig, getLocalizedString } from '@client/utils/localeHelper';\nimport { isMerchantHostedPreview, transformButtonVariables } from '@client/utils/utils';\nimport type { HostedButtonDetails as HostedButtonDetailsType } from '@customTypes/client/Common';\nimport { OptionItem } from '@customTypes/client/Common';\nimport getPaymentTotalFields, {\n FieldValueContent,\n PaymentTotalFields\n} from '@client/helpers/getPaymentTotalFields';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { ButtonType } from '@client/utils/constants';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\n\nconst style = css`\n margin-top: 2rem;\n`;\n\nconst lineSpaceStyle = css`\n margin-bottom: 1rem;\n`;\n\nconst rightAlignStyle = css`\n text-align: right;\n`;\n\nexport const getValueContent = (\n worldReady: WorldReadyProps,\n value: number | `${FieldValueContent}`,\n currencyCode: string | undefined,\n showCurrencySymbol: boolean = true\n) => {\n if (value === FieldValueContent.EstimateLater) {\n return getLocalizedString(worldReady, 'payment.text.estimatedLater');\n }\n\n if (value === FieldValueContent.Free) {\n return getLocalizedString(worldReady, 'payment.text.freeShipping');\n }\n\n return formatCurrency(worldReady, currencyCode, value, showCurrencySymbol);\n};\n\ninterface PaymentTotalProps {\n buttonDetails: HostedButtonDetailsType;\n options?: OptionItem[];\n}\n\ninterface BreakdownFieldProps {\n fields: PaymentTotalFields;\n currencyCode: string | undefined;\n fieldName: 'subtotal' | 'shipping' | 'tax' | 'total';\n merchantHostedPreview: boolean;\n}\n\nconst BreakdownField = ({\n fields,\n currencyCode,\n fieldName,\n merchantHostedPreview\n}: BreakdownFieldProps) => {\n const worldReady = useWorldReadyContext();\n const isTotalField = fieldName === 'total';\n return (\n <>\n {merchantHostedPreview && (\n \n \n \n {`${getLocalizedString(worldReady, `payment.text.${fieldName}`)}: ${getValueContent(\n worldReady,\n fields[fieldName].value,\n currencyCode,\n false\n )}`}\n \n \n \n )}\n {!merchantHostedPreview && (\n <>\n {fieldName === 'total' && }\n \n \n \n {getLocalizedString(worldReady, `payment.text.${fieldName}`)}\n \n \n \n \n {getValueContent(worldReady, fields[fieldName].value, currencyCode, true)}\n \n \n \n \n )}\n \n );\n};\n\nconst PaymentTotal = ({ buttonDetails, options }: PaymentTotalProps) => {\n const worldReady = useWorldReadyContext();\n const appContext = useAppContext();\n const { isPreview, tabName } = usePreviewContext();\n const featureFlags = getFeatureFlags(appContext);\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const currencyCode = buttonVariables.currency_code;\n const { userInputs, profileShipping, profileTax } = usePaymentContext();\n const currencyConfig = getCurrencyConfig(worldReady, currencyCode);\n const fields = getPaymentTotalFields(\n buttonVariables,\n userInputs,\n options,\n featureFlags,\n profileShipping,\n profileTax,\n currencyConfig.maxDecimalPlaces\n );\n const isSingleSelectList = buttonVariables.button_type === ButtonType.SINGLE_SELECT_LIST;\n const merchantHostedPreview = isMerchantHostedPreview(isPreview, tabName);\n\n /*\n The logic for showing the total in the preview differs from the actual payment total calculations\n since we want to show the total line even when there is NO value. However, since PaymentTotal is used\n in the preview for both paypal-hosted and merchant-hosted experiences, we need to make sure that the \n total line doesn't erroneously show up on the merchant hosted previews for our special cases.\n \n In the merchant-hosted preview, we only want to show the total line when the button has a quantity or\n subtotal (shipping/tax).\n */\n const showTotalInPreview =\n isPreview &&\n (fields.quantity.showField ||\n fields.subtotal.showField ||\n (isSingleSelectList && !merchantHostedPreview) ||\n (fields.total.showField && !merchantHostedPreview));\n\n const showTotal = isPreview ? showTotalInPreview : fields.total.showField;\n\n return (\n
\n {!merchantHostedPreview && fields.quantity.showField && (\n \n \n \n {getLocalizedString(worldReady, 'singleSelectList.options.quantity')}\n \n \n \n \n {fields.quantity.value}\n \n \n \n )}\n {fields.subtotal.showField && (\n \n )}\n {fields.shipping.showField && (\n \n )}\n {fields.tax.showField && (\n \n )}\n {showTotal && (\n \n )}\n
\n );\n};\n\nexport default PaymentTotal;\n","import React, { useContext } from 'react';\nimport { css } from '@emotion/react';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { BodyText } from '@paypalcorp/pp-react';\nimport { isMerchantHostedPreview, transformButtonVariables } from '@client/utils/utils';\nimport { formatCurrency, WorldReadyProps } from '@client/utils/localeHelper';\nimport type { HostedButtonDetails as HostedButtonDetailsType } from '@customTypes/client/Common';\nimport { ButtonType } from '@client/utils/constants';\nimport commonStyles from '@components/common/commonStyles';\n// import { usePreviewContext } from '@client/contexts/PreviewContext';\n\nconst styles = {\n itemName: css`\n word-break: break-word;\n `\n};\n\ninterface BusinessHeaderProps {\n buttonDetails: HostedButtonDetailsType;\n}\n\nconst BusinessHeader = ({ buttonDetails }: BusinessHeaderProps) => {\n const { isPreview, tabName } = usePreviewContext();\n const showMerchantHostedPreview = isMerchantHostedPreview(isPreview, tabName);\n const buttonVariables = transformButtonVariables(buttonDetails?.link_variables);\n const worldReady = useContext(WorldReadyContext);\n // const { isPreview, tabName } = usePreviewContext();\n const buttontype = buttonVariables?.button_type?.toUpperCase();\n const itemPriceIsValidNumber = !Number.isNaN(parseFloat(buttonVariables.amount as string));\n const showItemPrice = buttontype === ButtonType.FIXED_PRICE && itemPriceIsValidNumber;\n const formattedAmount = formatCurrency(\n worldReady,\n buttonVariables.currency_code,\n buttonVariables.amount,\n !showMerchantHostedPreview\n );\n\n return (\n
\n {/* hide business name temporarily: https://paypal.atlassian.net/browse/DTNCPS-882 */}\n {/* {(!isPreview || tabName !== PreviewTabName.PRODUCT) && (\n
\n \n {buttonDetails?.business_name}\n \n
\n )} */}\n
\n \n {buttonVariables?.item_name}\n \n
\n {showItemPrice && (\n
\n {formattedAmount}\n
\n )}\n
\n );\n};\n\nexport default BusinessHeader;\n","import type { UserInputsType } from '@client/typings/Common';\n\nexport const isUserInputsChanged = (userInputs: UserInputsType, key: string, value: string) => {\n const oldValue = userInputs?.[key];\n // on initial load, if the key doesnt exist inside userInputs\n // and we are passed in an empty string, return false\n // this use case can be replicated by focusing on and off the invoice id text area\n // when it has not been populated yet\n if (!oldValue && !value) {\n return false;\n }\n return oldValue !== value;\n};\n","import React, { useContext } from 'react';\nimport { BodyText, TextInput } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { getLocalizedString, WorldReadyProps } from '@client/utils/localeHelper';\nimport { sanitize } from '@common/sanitize';\nimport ShimmerPreMount from '@components/common/ShimmerPreMount';\nimport commonStyles from '@components/common/commonStyles';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { isUserInputsChanged } from '@components/payment/util';\nimport styles from './styles';\n\ntype OnChangeInput = {\n memo?: string;\n};\n\ninterface MemoProps {\n memoLabel: string | undefined;\n isNative: boolean;\n customOnChange?: (value: OnChangeInput) => void;\n}\n\nconst Memo = ({ memoLabel, isNative, customOnChange }: MemoProps) => {\n const worldReady = useContext(WorldReadyContext);\n const { formErrorMessage, setUserInputs, setFormErrorMessage, userInputs } = usePaymentContext();\n const INPUT_MAX_LENGTH = 127;\n\n const defaultOnChange = (value: OnChangeInput) => {\n setUserInputs((prevUserInputs) => {\n // clean up the keys where its value is empty\n return Object.fromEntries(\n Object.entries({\n ...prevUserInputs,\n ...value\n }).filter(([k, v]) => v !== '')\n );\n });\n };\n\n const onChange = customOnChange || defaultOnChange;\n\n const nativeMemoInput = (\n <>\n {memoLabel}\n ) => {\n onChange({ memo: sanitize(e.target.value) });\n setFormErrorMessage({ ...formErrorMessage, memo: '' });\n }}\n />\n \n );\n\n const memoInput = (\n <>\n \n {memoLabel}\n \n ) => {\n onChange({ memo: e.target.value });\n setFormErrorMessage({ ...formErrorMessage, memo: '' });\n }}\n onBlur={(e: React.FocusEvent) => {\n const value = sanitize(e.target.value);\n if (isUserInputsChanged(userInputs, 'memo', value)) {\n onChange({ memo: value });\n }\n }}\n errorText={getLocalizedString(worldReady, formErrorMessage.memo)}\n />\n \n );\n\n const rowStyles = isNative ? commonStyles.Row(0.75) : commonStyles.Row();\n\n return (\n memoLabel && (\n
\n {isNative ? nativeMemoInput : memoInput}\n
\n )\n );\n};\n\nexport default Memo;\n","import React, { useEffect } from 'react';\nimport type { HostedButtonDetails } from '@customTypes/client/Common';\nimport { recordImpression } from '@common/analytics';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { isMerchantHostedPreview, transformButtonVariables } from '@client/utils/utils';\nimport QuantityDropdown from './QuantityDropdown';\nimport PaymentTotal from './PaymentTotal';\nimport BusinessHeader from './BusinessHeader';\nimport Memo from './Memo';\n\ninterface FixedPriceProps {\n buttonDetails: HostedButtonDetails;\n hidePriceBreakDown?: boolean;\n}\n\nconst FixedPrice = ({ buttonDetails, hidePriceBreakDown }: FixedPriceProps) => {\n const { fptiAdditionalTags } = usePaymentContext();\n const { isPreview, tabName } = usePreviewContext();\n const buttonVariables = transformButtonVariables(buttonDetails?.link_variables);\n const memoLabel = buttonVariables.memo_label ?? '';\n useEffect(() => {\n if (!isPreview) {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'hosted_buttons_shown'\n });\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
\n \n \n \n {!hidePriceBreakDown && }\n
\n );\n};\n\nexport default FixedPrice;\n","import React, { useEffect, useContext, ChangeEvent } from 'react';\nimport { TextInput, CurrencyInput, BodyText } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { getLocalizedString, WorldReadyProps, getCurrencyConfig } from '@client/utils/localeHelper';\nimport type { HostedButtonDetails } from '@customTypes/client/Common';\nimport { isMerchantHostedPreview, transformButtonVariables } from '@client/utils/utils';\nimport { sanitize } from '@common/sanitize';\nimport { recordImpression } from '@common/analytics';\nimport { CaptureStatus } from '@client/utils/constants';\nimport commonStyles from '@components/common/commonStyles';\nimport ShimmerPreMount from '@components/common/ShimmerPreMount';\nimport { isUserInputsChanged } from '@components/payment/util';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport PaymentTotal from './PaymentTotal';\nimport BusinessHeader from './BusinessHeader';\nimport Memo from './Memo';\nimport styles from './styles';\n\ninterface VariablePriceProps {\n buttonDetails: HostedButtonDetails;\n hidePriceBreakDown?: boolean;\n}\n\ntype OnChangeInput = {\n memo?: string;\n amount?: string;\n invoice?: string;\n};\n\nconst VariablePrice = ({ buttonDetails, hidePriceBreakDown }: VariablePriceProps) => {\n const buttonVariables = transformButtonVariables(buttonDetails?.link_variables);\n const worldReady = useContext(WorldReadyContext);\n const { isPreview, tabName } = usePreviewContext();\n const currencyConfig = getCurrencyConfig(worldReady, buttonVariables.currency_code);\n const {\n userInputs,\n setUserInputs,\n setCaptureStatus,\n formErrorMessage,\n setFormErrorMessage,\n fptiAdditionalTags\n } = usePaymentContext();\n const memoLabel = buttonVariables.memo_label ?? '';\n const amountLabel = buttonVariables.amount_label ?? '';\n const invoiceLabel = buttonVariables.invoice_label ?? '';\n const INPUT_MAX_LENGTH = 127;\n\n const onChange = (value: OnChangeInput) => {\n setUserInputs((prevUserInputs) => {\n // clean up the keys where its value is empty\n return Object.fromEntries(\n Object.entries({\n ...prevUserInputs,\n ...value,\n currency: currencyConfig.currencyCode,\n currencySymbol: currencyConfig.symbol\n }).filter(([k, v]) => v !== '')\n );\n });\n setCaptureStatus(CaptureStatus.PENDING);\n };\n\n useEffect(() => {\n if (!isPreview) {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'hosted_buttons_shown'\n });\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const nativeCurrencyInput = (\n <>\n {amountLabel}\n
\n {currencyConfig.symbol}\n ) => {\n onChange({ amount: sanitize(event.target.value) });\n setFormErrorMessage({ ...formErrorMessage, amount: '' });\n }}\n />\n {currencyConfig.currencyCode}\n
\n \n );\n\n const currencyInput = (\n <>\n \n {amountLabel}\n \n {\n onChange({ amount: sanitize(unmaskedValue) });\n setFormErrorMessage({ ...formErrorMessage, amount: '' });\n }}\n errorText={getLocalizedString(\n worldReady,\n formErrorMessage.amount,\n formErrorMessage.msgVariables\n )}\n />\n \n );\n\n const nativeInvoiceInput = (\n <>\n {invoiceLabel}\n ) => {\n onChange({ invoice: sanitize(e.target.value) });\n setFormErrorMessage({ ...formErrorMessage, invoice: '' });\n }}\n />\n \n );\n\n const invoiceInput = (\n <>\n \n {invoiceLabel}\n \n ) => {\n onChange({ invoice: e.target.value });\n setFormErrorMessage({ ...formErrorMessage, invoice: '' });\n }}\n onBlur={(e: React.FocusEvent) => {\n const value = sanitize(e.target.value);\n if (isUserInputsChanged(userInputs, 'invoice', value)) {\n onChange({ invoice: value });\n }\n }}\n errorText={getLocalizedString(worldReady, formErrorMessage.invoice)}\n />\n \n );\n\n const showMerchantHostedPreview = isMerchantHostedPreview(isPreview, tabName);\n const rowStyles = showMerchantHostedPreview ? commonStyles.Row(0.75) : commonStyles.Row();\n\n return (\n
\n \n \n
\n \n {showMerchantHostedPreview ? nativeCurrencyInput : currencyInput}\n \n
\n {buttonVariables.invoice_label && (\n
\n \n {showMerchantHostedPreview ? nativeInvoiceInput : invoiceInput}\n \n
\n )}\n {!hidePriceBreakDown && }\n
\n );\n};\n\nexport default VariablePrice;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { DropdownMenu } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { isMerchantHostedPreview, transformButtonVariables } from '@client/utils/utils';\nimport useDeepEqualMemo from '@client/hooks/useDeepEqualMemo';\nimport type { HostedButtonDetails } from '@customTypes/client/Common';\nimport ShimmerPreMount from '@components/common/ShimmerPreMount';\nimport { recordImpression } from '@common/analytics';\nimport { generateOptions, getItemOptions } from '@components/FormFields/helpers';\nimport { WorldReadyProps, getLocalizedString } from '@client/utils/localeHelper';\nimport commonStyles from '@components/common/commonStyles';\nimport { usePreviewContext } from '@client/contexts/PreviewContext';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { Global } from '@emotion/react';\nimport QuantityDropdown from './QuantityDropdown';\nimport PaymentTotal from './PaymentTotal';\nimport BusinessHeader from './BusinessHeader';\nimport styles from './styles';\nimport Memo from './Memo';\n\ninterface SingleSelectListProps {\n buttonDetails: HostedButtonDetails;\n hidePriceBreakDown?: boolean;\n}\n\nconst SingleSelectList = ({ buttonDetails, hidePriceBreakDown }: SingleSelectListProps) => {\n const { userInputs, setUserInputs, fptiAdditionalTags, formErrorMessage, setFormErrorMessage } =\n usePaymentContext();\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const optionDetails = buttonDetails.option_details;\n const memoLabel = buttonVariables.memo_label ?? '';\n const worldReady = useContext(WorldReadyContext);\n const { isPreview, tabName } = usePreviewContext();\n const options = generateOptions(optionDetails, buttonVariables?.currency_code, worldReady);\n const optionNamesArr = useDeepEqualMemo(options.map((option) => option.value));\n const itemLabel = getLocalizedString(worldReady, 'singleSelectList.options.select');\n const prefilledOptionIndex = options.findIndex((option) => option.value === userInputs?.item);\n const [selectedIndex, setSelectedIndex] = useState(\n prefilledOptionIndex !== -1 ? prefilledOptionIndex : 0\n );\n\n useEffect(() => {\n if (!isPreview) {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'hosted_buttons_shown'\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (optionNamesArr.length > 0) {\n if (selectedIndex <= optionNamesArr.length - 1) {\n // Keep the selection value aligned with the value under same selectedIndex\n setUserInputs({\n ...userInputs,\n item: optionNamesArr[selectedIndex]\n });\n } else {\n // selectedIndex is no longer valid, set default.\n setUserInputs({\n ...userInputs,\n item: optionNamesArr[0]\n });\n setSelectedIndex(0);\n }\n } else {\n // Noop when options is empty.\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [optionNamesArr]);\n\n const itemOptions = getItemOptions(optionDetails, buttonVariables?.currency_code, worldReady);\n\n const previewItemDropdownMenu = (\n <>\n {itemLabel}\n
\n ) => {\n setUserInputs({\n ...userInputs,\n item: event.target.value\n });\n setSelectedIndex(options.findIndex((option) => option.value === event.target.value));\n }}\n >\n {itemOptions.map((option, index) => {\n return (\n \n {option.primaryText}\n \n );\n })}\n \n
\n \n );\n\n const itemDropdownMenu = (\n <>\n \n ) => {\n setUserInputs({\n ...userInputs,\n // skip item sanitization in phase 1\n // because it'll cause a field mismatch error when creating order\n item: event.target.value\n });\n setSelectedIndex(options.findIndex((option) => option.value === event.target.value));\n setFormErrorMessage((prevFormErrorMessage) => ({ ...prevFormErrorMessage, item: '' }));\n }}\n sheetClassName=\"dropdownMenuSheet\"\n errorText={getLocalizedString(worldReady, formErrorMessage.item)}\n />\n \n );\n\n const showMerchantHostedPreview = isMerchantHostedPreview(isPreview, tabName);\n const rowStyles = showMerchantHostedPreview ? commonStyles.Row(0.75) : commonStyles.Row();\n\n return (\n
\n \n
\n \n {showMerchantHostedPreview ? previewItemDropdownMenu : itemDropdownMenu}\n \n
\n \n \n {!hidePriceBreakDown && }\n
\n );\n};\nexport default SingleSelectList;\n","import React from 'react';\nimport { css } from '@emotion/react';\nimport { ButtonType } from '@client/utils/constants';\nimport { transformButtonVariables } from '@client/utils/utils';\nimport type { HostedButtonDetails as HostedButtonDetailsType } from '@customTypes/client/Common';\nimport FixedPrice from './FixedPrice';\nimport VariablePrice from './VariablePrice';\nimport SingleSelectList from './SingleSelectList';\n\nconst style = css`\n margin-bottom: 2rem;\n`;\n\ntype buttonDetailsProps = {\n buttonDetails: HostedButtonDetailsType;\n hidePriceBreakDown?: boolean;\n};\n\nconst HostedButtonDetails = ({ buttonDetails, hidePriceBreakDown }: buttonDetailsProps) => {\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const buttonType = buttonVariables?.button_type?.toUpperCase();\n\n return (\n
\n {buttonType === ButtonType.FIXED_PRICE && (\n \n )}\n {buttonType === ButtonType.VARIABLE_PRICE && (\n \n )}\n {buttonType === ButtonType.SINGLE_SELECT_LIST && (\n \n )}\n
\n );\n};\n\nexport default HostedButtonDetails;\n","import { ButtonType, INVALID_OPTION_CONTENT_KEY } from '@client/utils/constants';\nimport { FormErrorMessageType, UserInputsType } from '@client/typings/Common';\nimport { CurrencyConfigType } from '@client/utils/localeHelper';\nimport getValidationRules, { getPriceRange } from './rules';\n\ntype ValidationRule = {\n isInvalid: (val: string | undefined) => boolean;\n getMessageVars: () => Record;\n messageId: string;\n};\n\nconst focusOnError = (isFocused: boolean, field: string, useId: boolean = false) => {\n if (isFocused) {\n return;\n }\n // focus on first error\n const queryKey = useId ? `[id=\"${field}\"]` : `[name=\"${field}\"]`;\n const element = document.querySelector(queryKey);\n setTimeout(() => {\n element?.focus();\n }, 450);\n};\n\nconst hasPrefillError = (field: string, formErrorMessage: FormErrorMessageType) =>\n formErrorMessage[field] === INVALID_OPTION_CONTENT_KEY;\n\nconst FIELD_FOCUS_ID_MAP = {\n quantity: 'dropdownMenuButton_quantity-dropdown',\n item: 'dropdownMenuButton_item-dropdown'\n};\n\nexport const validateField = (\n field: string,\n rules: Array,\n value: string | undefined,\n invalidItems: FormErrorMessageType\n): FormErrorMessageType => {\n for (const fieldSpecificRule of rules) {\n if (fieldSpecificRule.isInvalid(value)) {\n focusOnError(invalidItems.isFocused, field);\n invalidItems.isFocused = true;\n invalidItems.isFormValid = false;\n invalidItems[field] = fieldSpecificRule.messageId;\n invalidItems.msgVariables = {\n ...invalidItems.msgVariables,\n ...fieldSpecificRule.getMessageVars()\n };\n }\n }\n\n return invalidItems;\n};\n\nconst getFixedPriceInvalidItems = (\n buttonVariables: Record,\n userInputs: UserInputsType,\n rules: Record>,\n formErrorMessage: FormErrorMessageType,\n invalidItems: FormErrorMessageType\n): FormErrorMessageType => {\n if (hasPrefillError('quantity', formErrorMessage)) {\n focusOnError(invalidItems.isFocused, FIELD_FOCUS_ID_MAP.quantity, true);\n invalidItems.isFocused = true;\n invalidItems.isFormValid = false;\n invalidItems.quantity = INVALID_OPTION_CONTENT_KEY;\n }\n\n [buttonVariables?.memo_label && 'memo'].filter(Boolean).forEach((field: string) => {\n validateField(field, rules[field], userInputs[field], invalidItems);\n });\n\n return invalidItems;\n};\n\nconst getSingleSelectInvalidItems = (\n buttonVariables: Record,\n userInputs: UserInputsType,\n rules: Record>,\n formErrorMessage: FormErrorMessageType,\n invalidItems: FormErrorMessageType\n): FormErrorMessageType => {\n ['item', 'quantity'].forEach((field) => {\n if (hasPrefillError(field, formErrorMessage)) {\n focusOnError(invalidItems.isFocused, FIELD_FOCUS_ID_MAP[field], true);\n invalidItems.isFocused = true;\n invalidItems.isFormValid = false;\n invalidItems[field] = INVALID_OPTION_CONTENT_KEY;\n }\n });\n\n [buttonVariables?.memo_label && 'memo'].filter(Boolean).forEach((field: string) => {\n validateField(field, rules[field], userInputs[field], invalidItems);\n });\n\n return invalidItems;\n};\n\nexport const validateForm = (\n userInputs: UserInputsType,\n btnType: string | undefined,\n currencyConfig: CurrencyConfigType,\n formErrorMessage: FormErrorMessageType,\n buttonVariables: Record\n): FormErrorMessageType => {\n if (!btnType) {\n return { isFormValid: false, isFocused: false, msgVariables: {} };\n }\n\n const invalidItems: FormErrorMessageType = {\n isFormValid: true,\n isFocused: false,\n msgVariables: {}\n };\n const maxTextLength = 127;\n const { min, max } = getPriceRange(currencyConfig.currencyCode);\n const rules = getValidationRules({ maxTextLength, min, max, symbol: currencyConfig.symbol });\n\n switch (btnType) {\n case ButtonType.FIXED_PRICE:\n getFixedPriceInvalidItems(buttonVariables, userInputs, rules, formErrorMessage, invalidItems);\n break;\n case ButtonType.SINGLE_SELECT_LIST:\n getSingleSelectInvalidItems(\n buttonVariables,\n userInputs,\n rules,\n formErrorMessage,\n invalidItems\n );\n break;\n case ButtonType.VARIABLE_PRICE:\n [buttonVariables?.memo_label && 'memo', 'amount', 'invoice']\n .filter(Boolean)\n .forEach((field: string) => {\n validateField(field, rules[field], userInputs[field], invalidItems);\n });\n break;\n default:\n break;\n }\n\n return invalidItems;\n};\n","import currencyRules from './currencyRules.json';\n\nexport const getPriceRange = (currency: string) => {\n const priceRange = currencyRules[currency] ?? currencyRules.default;\n const min = priceRange.min ?? currencyRules.default.min;\n return { min, max: priceRange.max };\n};\n\ntype Restrictions = {\n maxTextLength: number;\n min: number;\n max: number;\n symbol: string;\n};\n\nexport default (restrictions: Restrictions) => ({\n memo: [\n {\n isInvalid: (val) => !val,\n getMessageVars: () => ({}),\n messageId: 'error.text.blank'\n },\n {\n isInvalid: (val) => val && val.length > restrictions.maxTextLength,\n getMessageVars: () => ({}),\n messageId: 'error.text.max'\n }\n ],\n amount: [\n {\n isInvalid: (val) => !val,\n getMessageVars: () => ({}),\n messageId: 'error.text.amount'\n },\n {\n isInvalid: (val) => val && Number(val) < restrictions.min,\n getMessageVars: () => ({\n min: restrictions.min,\n currencySymbol: restrictions.symbol\n }),\n messageId: 'error.text.amountmin'\n },\n {\n isInvalid: (val) => val && Number(val) > restrictions.max,\n getMessageVars: () => ({\n max: restrictions.max\n }),\n messageId: 'error.text.amountmax'\n }\n ],\n invoice: [\n {\n isInvalid: (val) => val && val.length > restrictions.maxTextLength,\n getMessageVars: () => ({}),\n messageId: 'error.text.max'\n }\n ]\n});\n","import React, {\n Dispatch,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState\n} from 'react';\nimport {\n FormErrorMessageType,\n OrderDetails,\n PaymentPrefillData,\n UserInputsType\n} from '@client/typings/Common';\n\nexport interface PaymentContextType {\n userInputs: UserInputsType;\n setUserInputs: Dispatch>;\n captureStatus: string;\n setCaptureStatus: Dispatch>;\n orderData: OrderDetails;\n setOrderData: Dispatch>;\n errorMessage: string;\n setErrorMessage: Dispatch>;\n formErrorMessage: FormErrorMessageType;\n setFormErrorMessage: Dispatch>;\n fptiAdditionalTags: Record;\n setIsLoading: Dispatch>;\n isLoading: boolean;\n profileShipping: string | undefined;\n setProfileShipping: Dispatch>;\n profileTax: string | undefined;\n setProfileTax: Dispatch>;\n}\n\nexport type PaymentContextPrefillData = {\n values: PaymentPrefillData;\n errors: PaymentPrefillData;\n};\n\nexport const PaymentContextValuesGenerator = (\n fptiAdditionalTags: Record,\n prefillData?: PaymentContextPrefillData\n) => {\n const [isLoading, setIsLoading] = useState(false);\n const [userInputs, setUserInputs] = useState({\n // Set default quantity when initialized, to avoid race condition in MultiItem scenario when item is also needed to set at first rendering: https://paypal.atlassian.net/browse/DTNCPS-894\n quantity: '1',\n ...prefillData?.values\n });\n const [captureStatus, setCaptureStatus] = useState('');\n const [orderData, setOrderData] = useState({} as OrderDetails);\n const [errorMessage, setErrorMessage] = useState('');\n const [formErrorMessage, setFormErrorMessage] = useState({\n ...prefillData?.errors\n } as FormErrorMessageType);\n const [profileShipping, setProfileShipping] = useState(undefined);\n const [profileTax, setProfileTax] = useState(undefined);\n\n const contextValues = useMemo(\n () => ({\n userInputs,\n setUserInputs,\n captureStatus,\n setCaptureStatus,\n orderData,\n setOrderData,\n errorMessage,\n setErrorMessage,\n formErrorMessage,\n setFormErrorMessage,\n fptiAdditionalTags,\n setIsLoading,\n isLoading,\n profileShipping,\n setProfileShipping,\n profileTax,\n setProfileTax\n }),\n [\n captureStatus,\n formErrorMessage,\n fptiAdditionalTags,\n orderData,\n userInputs,\n isLoading,\n errorMessage,\n profileShipping,\n profileTax\n ]\n );\n\n return contextValues;\n};\n\nexport const PaymentContext = createContext({} as PaymentContextType);\n\nexport const PaymentContextProvider = ({\n value,\n children\n}: {\n value: PaymentContextType;\n children: React.ReactElement;\n}) => {\n return {children};\n};\n\nexport const usePaymentContext = () => useContext(PaymentContext);\n","const fetchWrapper = async (\n path: string,\n options: RequestInit | undefined,\n csrfRetryEnabled = false\n) => {\n let initialOptions = options;\n\n // If the call should be retried in case there is a CSRF mismatch,\n // we need to add a flag to distinguish the first pre-retry call and the\n // second call.\n if (csrfRetryEnabled) {\n const oldBody =\n options?.body && (typeof options.body === 'string' ? JSON.parse(options.body) : options.body);\n initialOptions = {\n ...options,\n body: JSON.stringify({\n ...oldBody,\n csrfRetryEnabled\n })\n };\n }\n\n let response = await fetch(path, initialOptions);\n let responseData = await response.json();\n\n const shouldRetry =\n csrfRetryEnabled && responseData?.csrfToken && responseData?.message === 'CSRF_MISMATCH_RETRY';\n\n // If the first call had a CSRF mismatch, then we should redo the call\n // but with the new CSRF token.\n if (shouldRetry) {\n response = await fetch(path, {\n ...options,\n headers: {\n ...options?.headers,\n 'x-csrf-token': responseData.csrfToken\n }\n });\n responseData = await response.json();\n }\n\n return { response, responseData };\n};\n\nexport default fetchWrapper;\n","import { ButtonType } from '@client/utils/constants';\nimport { getTaxAmount } from '@client/utils/utils';\nimport { OptionItem, UcpConfig } from '@client/typings/Common';\nimport { UserInputsType } from '@customTypes/client/Common';\nimport { ShippingPreference, TaxRatePreference } from '@components/buttons/types';\n\n// For Variable Price Button, not showing the quantity\n// For Fixed Price Button & Single Select Button, show quantity only if there is quantity option\nconst showItemQuantity = (buttonVariables: Record) => {\n if (buttonVariables.button_type === ButtonType.VARIABLE_PRICE) {\n return false;\n }\n if (buttonVariables.quantity_option) {\n return true;\n }\n return false;\n};\n\nconst getQuantity = (\n userInputs: UserInputsType | undefined,\n buttonVariables: Record\n) => {\n const quantityOption = parseInt(buttonVariables?.quantity_option || '1', 10);\n const quantityUserInput = parseInt(userInputs?.quantity || '1', 10);\n return quantityUserInput <= quantityOption ? quantityUserInput : 1;\n};\n\nconst getItemPrice = (\n buttonVariables: Record,\n userInputs: UserInputsType | undefined,\n options: OptionItem[] | undefined\n) => {\n if (buttonVariables?.button_type === ButtonType.SINGLE_SELECT_LIST) {\n return options?.find((_) => _.value === userInputs?.item)?.price || 0;\n }\n return buttonVariables.amount || 0;\n};\n\nconst getSubtotal = (\n buttonVariables: Record,\n userInputs: UserInputsType | undefined,\n options: OptionItem[] | undefined\n) => {\n if (buttonVariables.button_type === ButtonType.VARIABLE_PRICE) {\n return Number(userInputs?.amount ?? '0');\n }\n const quantity = getQuantity(userInputs, buttonVariables);\n const itemPrice = getItemPrice(buttonVariables, userInputs, options);\n const subtotal = quantity * Number(itemPrice);\n return subtotal;\n};\n\nexport enum FieldValueContent {\n EstimateLater = 'ESTIMATE_LATER',\n Free = 'FREE'\n}\ntype Field = {\n showField: boolean;\n value: T;\n};\nexport type PaymentTotalFields = {\n quantity: Field;\n tax: Field;\n shipping: Field;\n subtotal: Field;\n total: Field;\n};\n\nconst getShippingField = (\n buttonVariables: Record,\n featureFlags: UcpConfig['featureFlags'],\n profileShipping?: string\n) => {\n const { button_type, shipping_preference } = buttonVariables;\n const shipping = Number(buttonVariables.shipping || '0');\n if (button_type === ButtonType.VARIABLE_PRICE && !featureFlags.shippingTaxExpansion) {\n return {\n showField: false,\n value: 0\n };\n }\n\n // \"shipping_preference === undefined and shipping fee is not 0\" case happens in phase 1 button\n if (shipping_preference === ShippingPreference.Custom || shipping_preference === undefined) {\n return {\n showField: shipping > 0,\n value: shipping\n };\n }\n\n if (shipping_preference === ShippingPreference.FromProfile) {\n if (profileShipping !== undefined) {\n return {\n showField: true,\n value: Number(profileShipping)\n };\n }\n return {\n showField: true,\n value: FieldValueContent.EstimateLater\n };\n }\n\n if (shipping_preference === ShippingPreference.Free) {\n return {\n showField: true,\n value: FieldValueContent.Free\n };\n }\n\n return {\n showField: false,\n value: 0\n };\n};\n\nconst getTaxField = (\n tax: number,\n buttonVariables: Record,\n featureFlags: UcpConfig['featureFlags'],\n profileTax?: string\n) => {\n const { button_type, tax_rate_preference } = buttonVariables;\n if (button_type === ButtonType.VARIABLE_PRICE && !featureFlags.shippingTaxExpansion) {\n return {\n showField: false,\n value: 0\n };\n }\n\n // \"tax_rate_preference === undefined and tax is not 0\" case happens in phase 1 button\n if (tax_rate_preference === TaxRatePreference.Custom || tax_rate_preference === undefined) {\n return {\n showField: tax > 0,\n value: tax\n };\n }\n\n if (tax_rate_preference === TaxRatePreference.FromProfile) {\n if (profileTax !== undefined) {\n return {\n showField: true,\n value: Number(profileTax)\n };\n }\n return {\n showField: true,\n value: FieldValueContent.EstimateLater as `${FieldValueContent.EstimateLater}`\n };\n }\n\n return {\n showField: false,\n value: 0\n };\n};\n\nconst getTotalField = (\n subtotal: number,\n taxField: PaymentTotalFields['tax'],\n shippingField: PaymentTotalFields['shipping'],\n buttonVariables: Record\n) => {\n const totalField: PaymentTotalFields['total'] = {\n showField: true,\n value: subtotal\n };\n if (\n taxField.value === FieldValueContent.EstimateLater ||\n shippingField.value === FieldValueContent.EstimateLater\n ) {\n totalField.value = FieldValueContent.EstimateLater;\n } else if (shippingField.value === FieldValueContent.Free) {\n totalField.value = subtotal + (taxField.showField ? taxField.value : 0) + 0;\n } else {\n totalField.value =\n subtotal +\n (taxField.showField ? taxField.value : 0) +\n (shippingField.showField ? shippingField.value : 0);\n }\n\n // We need to only show the total field when there is a non-zero value there or if\n // it is a variable price button since we're showing total now for that in Phase 2\n totalField.showField =\n !!totalField.value || buttonVariables.button_type === ButtonType.VARIABLE_PRICE;\n\n return totalField;\n};\n\nconst getPaymentTotalFields = (\n buttonVariables: Record,\n userInputs: UserInputsType | undefined,\n options: OptionItem[] | undefined,\n featureFlags: UcpConfig['featureFlags'],\n profileShipping?: string,\n profileTax?: string,\n maximumFractionDigits: number = 2\n): PaymentTotalFields => {\n const quantity = getQuantity(userInputs, buttonVariables);\n const subtotal = getSubtotal(buttonVariables, userInputs, options);\n\n // Shipping\n const shippingField: PaymentTotalFields['shipping'] = getShippingField(\n buttonVariables,\n featureFlags,\n profileShipping\n );\n\n // Tax rate\n const tax = getTaxAmount(\n subtotal,\n Number(buttonVariables.tax_rate || '0'),\n maximumFractionDigits\n );\n const taxField: PaymentTotalFields['tax'] = getTaxField(\n tax,\n buttonVariables,\n featureFlags,\n profileTax\n );\n\n // Subtotal\n const subtotalField: PaymentTotalFields['subtotal'] = {\n showField: shippingField.showField || taxField.showField,\n value: subtotal\n };\n\n // Total\n const totalField: PaymentTotalFields['total'] = getTotalField(\n subtotal,\n taxField,\n shippingField,\n buttonVariables\n );\n\n return {\n quantity: {\n showField: showItemQuantity(buttonVariables),\n value: quantity\n },\n tax: taxField,\n shipping: shippingField,\n subtotal: subtotalField,\n total: totalField\n };\n};\n\nexport default getPaymentTotalFields;\n","/**\n * Return true when value is not undefined or not stringified zero. E.g '0', '0.0'\n */\nconst isNonZeroStr = (value: string | undefined): value is string =>\n Boolean(value && Number(value) > 0);\n\nexport default isNonZeroStr;\n","import { useRef } from 'react';\nimport isEqual from 'lodash/isEqual';\n/**\n * This hook is for and only for non-primitive value to keep a memorized version as long as it remains deeply equal.\n * Since React uses Object.is to compare deps, which is a shallow comparison in normal useMemo.\n * Not recommended for primitive use case. Returns original value if value is primitive.\n */\nfunction useDeepEqualMemo(value: T) {\n const ref = useRef(value);\n\n if (value == null || /^[sbn]/.test(typeof value)) {\n return value;\n }\n\n if (!isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n\nexport default useDeepEqualMemo;\n","import { useEffect, useContext } from 'react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { usePaymentContext } from '@client/contexts/PaymentContext';\nimport { CaptureStatus } from '../utils/constants';\nimport { getLocalizedString, WorldReadyProps } from '../utils/localeHelper';\nimport {\n isOrderCompleted,\n isOrderDeclined,\n isOrderFailed,\n isOrderPending,\n isOrderInstrumentDeclined,\n isOrderDuplicateInvoiceId\n} from '../components/OrderStatus/utils';\n\nconst useOrderStatus = () => {\n const worldReady = useContext(WorldReadyContext);\n const {\n setCaptureStatus,\n orderData,\n setErrorMessage,\n fptiAdditionalTags = {},\n setIsLoading\n } = usePaymentContext();\n\n useEffect(() => {\n if (isOrderCompleted(orderData) || isOrderPending(orderData)) {\n const queryParams: { key: string; value: string }[] = [];\n if (orderData.name === 'UNKNOWN') {\n queryParams.push({ key: 'status', value: 'UNKNOWN' });\n }\n if (fptiAdditionalTags.source_type === 'qr_code') {\n queryParams.push({ key: 'qrcode', value: 'true' });\n }\n const paramStr = queryParams.length\n ? `?${queryParams.map(({ key, value }) => `${key}=${value}`).join('&')}`\n : '';\n window.location.assign(\n `/ncp/payment/${orderData.link_id}/${orderData.context_id}${paramStr}`\n );\n } else {\n setIsLoading?.(false);\n if (isOrderInstrumentDeclined(orderData)) {\n setCaptureStatus(CaptureStatus.FAILED);\n setErrorMessage(getLocalizedString(worldReady, 'error.text.instrumentDeclined.alert'));\n } else if (isOrderDuplicateInvoiceId(orderData)) {\n setCaptureStatus(CaptureStatus.FAILED);\n setErrorMessage(getLocalizedString(worldReady, 'error.text.duplicateInvoiceId.alert'));\n } else if (isOrderDeclined(orderData) || isOrderFailed(orderData) || orderData.error) {\n setCaptureStatus(CaptureStatus.FAILED);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [orderData]);\n};\n\nexport default useOrderStatus;\n","import type { OrderDetails } from '@client/typings/Common';\nimport { OrderStatus, CaptureStatus } from '@client/utils/constants';\n\nexport const isOrderCompleted = (orderDetails: OrderDetails) =>\n orderDetails &&\n orderDetails.status === OrderStatus.COMPLETED &&\n orderDetails.payment_status === CaptureStatus.COMPLETED;\nexport const isOrderDeclined = (orderDetails: OrderDetails) =>\n orderDetails &&\n orderDetails.status === OrderStatus.COMPLETED &&\n orderDetails.payment_status === CaptureStatus.DECLINED;\nexport const isOrderPending = (orderDetails: OrderDetails) =>\n orderDetails &&\n orderDetails.status === OrderStatus.COMPLETED &&\n orderDetails.payment_status === CaptureStatus.PENDING;\nexport const isOrderFailed = (orderDetails: OrderDetails) =>\n orderDetails &&\n orderDetails.status === OrderStatus.COMPLETED &&\n orderDetails.payment_status === CaptureStatus.FAILED;\nexport const isOrderInstrumentDeclined = (orderDetails: OrderDetails) =>\n orderDetails && orderDetails.name === 'INSTRUMENT_DECLINED';\nexport const isOrderDuplicateInvoiceId = (orderDetails: OrderDetails) =>\n orderDetails && orderDetails.name === 'DUPLICATE_INVOICE_ID';\nexport const isOrderPaymentNotCaptured = (orderDetails: OrderDetails) =>\n orderDetails && orderDetails.name === 'PAYMENT_NOT_CAPTURED';\nexport const isSomethingWentWrong = (orderDetails: OrderDetails) =>\n orderDetails && orderDetails.name === 'SOMETHING_WENT_WRONG';\nexport const isOrderNotFound = (orderDetails: OrderDetails) =>\n orderDetails && orderDetails.error && orderDetails.name === 'RESOURCE_NOT_FOUND';\n","const XSS_REGEX = [/<\\/?(\\w|<|>)*>/g, /<\\/?(.)*>/g, //g, /[<>]/g];\n\nexport const sanitizeString = (value: string): string => {\n const regExList = new Set(XSS_REGEX);\n let sanitizedValue = value;\n regExList.forEach((regex) => {\n sanitizedValue = value.replace(regex, '');\n });\n\n return sanitizedValue;\n};\n\nexport function sanitize(value: string): string;\n\nexport function sanitize(value: object): object;\n\n// the object should be flattened, otherwise this would not work properly\nexport function sanitize(value: string | object): string | object {\n if (typeof value === 'string') {\n return sanitizeString(value).toString().trim();\n }\n\n if (typeof value === 'object') {\n for (const key in value) {\n if (typeof value[key] === 'string') {\n value[key] = sanitizeString(value[key]).toString().trim();\n }\n }\n }\n\n return value;\n}\n"],"names":["FUNDING_TYPE","createOrder","async","csrfToken","hostedButtonId","merchantId","buttonType","userInputs","fptiAdditionalTags","pageName","cplImpressEvent","eventName","event","recordImpression","funding_type","startCPLTracking","tStart","Date","now","responseData","response","fetchWrapper","method","headers","body","JSON","stringify","link_id","merchant_id","funding_source","button_type","apiDuration","order_id","context_id","api_response_code","status","api_duration","Error","err","logErrorClient","endCPLTracking","captureOrder","contextId","applePayPayment","orderId","applePay","paymentSource","getMerchantSession","session","parse","window","atob","amexSupportedCurrencyCodes","notApplicable","ContentKey","getLineItems","worldReady","orderShipping","totalFields","lineItems","shipping","tax_total","item_total","amount","breakdown","isNonZeroStr","value","push","label","getLocalizedString","Shipping","Tax","length","unshift","Subtotal","getTotalFieldLineItems","tax","subtotal","showField","toString","FieldValueContent","Free","FreeShipping","currencyCode","supportedNetworks","ApplePaySession","supportsVersion","includes","LoadablePreviewButton","loadable","resolved","chunkName","isReady","props","key","resolve","__webpack_modules__","importAsync","requireAsync","then","requireSync","id","__webpack_require__","ssr","mapC2ToCN","countryCode","Button","onClick","buttonStyle","_jsx","type","css","styles","button","buttonHeight","height","ApplePayButton","userInputsRef","formErrorMessageRef","shouldUpdateOrderShipping","setInitComplete","appContext","useAppContext","buttonDetails","hostedButtonDetails","featureFlags","getFeatureFlags","setOrderData","setFormErrorMessage","setCaptureStatus","setIsLoading","usePaymentContext","useWorldReadyContext","currencyConfig","getCurrencyConfig","getSession","setSession","getOrder","updateOrder","getIsInProgress","setIsCancelled","getInitialPaymentRequest","setOrderShipping","getOrderShipping","useApplePay","buttonVariables","useMemo","transformButtonVariables","link_variables","onValidateMerchant","applePaySession","app","orderSession","current","merchantSession","completeMerchantValidation","message","CaptureStatus","FAILED","onPaymentAuthorized","order","payment","name","completePayment","STATUS_SUCCESS","STATUS_FAILURE","onShippingContactSelected","initialPaymentRequest","shipping_preference","isShippingFromProfile","ShippingPreference","FromProfile","locality","administrativeArea","postalCode","shippingContact","updateOrderShippingOptions","shippingAddress","city","state","shippingOptions","sortShippingOptions","shipping_options","newShippingMethodsForProfileShippingButton","newShippingMethods","map","option","detail","identifier","completeShippingContactSelection","newTotal","total","newLineItems","errors","ApplePayError","onShippingMethodsSelected","shippingMethod","completeShippingMethodSelection","optionId","some","selected","abort","onCancel","logWarnClient","useEffect","createApplePaySession","formValidation","validateForm","recordClick","int_error_desc","isFormValid","options","generateOptions","option_details","currency_code","region","itemName","item","item_name","ButtonType","VARIABLE_PRICE","getPaymentTotalFields","subTotal","isCollectShippingAddress","no_shipping","paymentRequest","merchantCapabilities","requiredBillingContactFields","requiredShippingContactFields","getSupportedNetworks","EstimateLater","undefined","logInfoClient","onvalidatemerchant","onpaymentauthorized","oncancel","onshippingcontactselected","onshippingmethodselected","begin","isPreview","usePreviewContext","global","selectedIndex","findIndex","selectedOption","splice","buttonInPreview","previewModal","Status","applePaySessionRef","useRef","orderRef","statusRef","notStarted","orderShippingRef","_paymentRequest","inProgress","cancelled","JSSDKButton","fundingSource","onApprove","onShippingAddressChange","onShippingOptionsChange","notCollectShippingAddr","isLoading","useState","bcdcState","setBcdcState","showPaymentForm","showShimmer","forceButtonReRender","enablePaywallButtons","createOrderInPreview","onClickButtonInPreview","onApproveInPreview","useContext","WorldReadyContext","memorizedButtonStyle","useDeepEqualMemo","recordActivity","createOrderWrapper","data","actions","Promise","e","reject","_jsxs","_Fragment","children","_Shimmer","shimmerHeight","paypalButtonsContainer","className","cx","PayPalButtons","disabled","onInit","onError","error","AUTH_FAILED","orderID","style","forceReRender","getForceReRenderList","list","defaultProps","chinaCountryCodes","buttonContainer","PAGE_NAME","sysColorBackgroundMediumContrast","sysColorStructureBorderHighContrast","sysSpaceSm","sysSpaceXs","_PAYPAL_THEME","checkoutOptions","payWithDivider","container","divider","text","expressCheckout","primaryFundingMethod","otherFunding","cardFundingMethod","toggleFunding","OR_PAY_WITH_CARD_ID","EXPRESS_CHECKOUT_OPTIONS_ID","ExpressCheckoutText","_CaptionText","PayWithCardDivider","_Divider","SeeMoreToggle","isShowMoreOptions","contentKey","_Button","tertiary","size","isMenu","isOpen","ExpressOrCardFunding","fundingMethod","commonJSSDKButtonProps","trackButtonLoaded","setRemoveSpinner","OtherFunding","eligibleMethods","commonButtonProps","filter","FUNDING","CARD","index","isHidden","hideStyle","APPLEPAY","ApplePayButtonContainer","getFundingPlacements","defaultPayments","primary","PAYPAL","secondary","bottom","WithButtons","setIsShowMoreOptions","fundingPlacements","setFundingPlacements","preventDefault","stopPropagation","width","viewBox","fill","xmlns","clipPath","x","y","d","fillRule","clipRule","x1","y1","x2","y2","gradientUnits","offset","stopColor","cy","r","gradientTransform","rx","transform","sysBorderRadiusSm","sysBorderThicknessNormal","sysSizeIconSm","sysSpaceMd","sysSpaceLg","baseCardStyles","radioItem","cardArt","creditCardIcon","cardStyles","applepay","card","paylater","venmo","paymentMethodsDividerBase","paymentMethodsDividerSelected","paymentMethodsDividerUnselected","singleAdditionalFundingMethod","radioButtonGroup","OR_PAY_WITH_ID","PayWithDivider","FundingMethodRadioLabel","isCardFundingMethod","radioItemIcon","_CreditCardIcon","color","_BodyText","PaywallIssuerCardArt","display","WithRadio","selectedRadio","updateSelectedRadio","isSelected","_Radio","labelClassName","checked","onChange","selected_payment_method","PaywallHostedButtons","shippingPreference","taxRatePreference","allowedPaymentMethods","merchantCountryCode","isPending","usePayPalScriptReducer","config","formErrorMessage","setProfileShipping","setProfileTax","initComplete","removeSpinner","ppBtnLoading","showSpinner","updateEligibleMethods","initialCsrfToken","serverData","updateProfileShippingTax","isTaxFromProfile","TaxRatePreference","onCreateOrder","apiParams","captureOrderWrapper","jssdkCommonPayload","getEligibilities","fundingSources","paypal","getFundingSources","source","VENMO","venmoShipTaxSupport","isFundingEligible","getIsEligibleForApplePay","buyerCountryCode","supportedCountries","isDeviceEligibleForApplePay","buyerCountry","parser","UAParser","model","getDevice","version","getOS","toUpperCase","indexOf","major","minor","split","intMajor","parseInt","intMinor","isBuyerFromChina","isMerchantFromChina","top","self","supportedCountriesSet","Set","has","canMakePayments","forEach","eligible_payment_count","useOrderStatus","ADDRESS_ERROR","selectedShippingOption","METHOD_UNAVAILABLE","paymentMethod","_Row","spinnerStyle","_LoadingSpinner","StackedPayPalButtons","csrfResponseHandler","setCsrfToken","orderData","csrfResponse","restart","shipping_address","admin_area_2","admin_area_1","country_code","postal_code","option_id","checkoutButton","checkoutColorMapping","black","hoverBrightness","white","default","focus","outline","generateQuantityOptions","quantity_option","maxQuantity","Math","min","Number","MAX_QUANTITY","i","primaryText","String","optionDetails","find","_","selection_details","sanitize","option_selection","formatCurrency","price","getItemOptions","dataValue","ShimmerPreMount","mounted","setMounted","commonStyles","inputLabel","dropdownContainer","dropdown","input","amountContainer","currencySymbol","currencyLabel","tabName","setUserInputs","quantityOption","quantity","quantityLabel","previewQuantityDropdown","title","target","quantityDropdown","_DropdownMenu","menuContainerClassName","prevFormErrorMessage","errorText","showMerchantHostedPreview","isMerchantHostedPreview","rowStyles","lineSpaceStyle","rightAlignStyle","getValueContent","showCurrencySymbol","BreakdownField","fields","fieldName","merchantHostedPreview","isTotalField","_Col","strong","PaymentTotal","profileShipping","profileTax","maxDecimalPlaces","isSingleSelectList","SINGLE_SELECT_LIST","showTotalInPreview","showTotal","BusinessHeader","buttontype","itemPriceIsValidNumber","isNaN","parseFloat","showItemPrice","FIXED_PRICE","formattedAmount","isUserInputsChanged","oldValue","Memo","memoLabel","isNative","customOnChange","prevUserInputs","Object","fromEntries","entries","k","v","nativeMemoInput","maxLength","memo","memoInput","as","_TextInput","isLabelHidden","onBlur","FixedPrice","hidePriceBreakDown","memo_label","QuantityDropdown","VariablePrice","amountLabel","amount_label","invoiceLabel","invoice_label","currency","symbol","PENDING","nativeCurrencyInput","currencyInput","_CurrencyInput","suffix","currencyType","onAccept","unmaskedValue","msgVariables","nativeInvoiceInput","invoice","invoiceInput","SingleSelectList","optionNamesArr","itemLabel","prefilledOptionIndex","setSelectedIndex","itemOptions","previewItemDropdownMenu","itemDropdownMenu","Global","sheetClassName","HostedButtonDetails","focusOnError","isFocused","field","useId","queryKey","element","document","querySelector","setTimeout","hasPrefillError","INVALID_OPTION_CONTENT_KEY","FIELD_FOCUS_ID_MAP","validateField","rules","invalidItems","fieldSpecificRule","isInvalid","messageId","getMessageVars","btnType","max","priceRange","currencyRules","getPriceRange","restrictions","maxTextLength","val","getFixedPriceInvalidItems","Boolean","getSingleSelectInvalidItems","PaymentContextValuesGenerator","prefillData","values","captureStatus","errorMessage","setErrorMessage","PaymentContext","createContext","PaymentContextProvider","Provider","path","csrfRetryEnabled","initialOptions","oldBody","fetch","json","showItemQuantity","getQuantity","quantityUserInput","maximumFractionDigits","getSubtotal","itemPrice","getItemPrice","shippingField","getShippingField","shippingTaxExpansion","Custom","taxField","getTaxField","tax_rate_preference","getTaxAmount","tax_rate","subtotalField","totalField","getTotalField","ref","test","isEqual","orderDetails","OrderStatus","COMPLETED","payment_status","isOrderPending","queryParams","source_type","paramStr","join","location","assign","isOrderInstrumentDeclined","isOrderDuplicateInvoiceId","DECLINED","isOrderDeclined","isOrderFailed","XSS_REGEX","sanitizeString","regExList","sanitizedValue","regex","replace","trim"],"sourceRoot":""}