{"version":3,"file":"js/342.js","mappings":"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","sources":["webpack://nocodenodeweb/./src/client/contexts/AppContext.tsx","webpack://nocodenodeweb/./src/client/components/layout/PaymentWrapper.tsx","webpack://nocodenodeweb/./src/common/fpti.ts","webpack://nocodenodeweb/./src/client/utils/utils.ts","webpack://nocodenodeweb/./src/common/analytics.ts","webpack://nocodenodeweb/./src/client/utils/PaymentContext.tsx","webpack://nocodenodeweb/./src/client/utils/localeHelper.ts","webpack://nocodenodeweb/./src/client/components/common/commonStyles.ts","webpack://nocodenodeweb/./src/client/components/common/ShimmerPreMount.tsx","webpack://nocodenodeweb/./src/common/sanitize.ts","webpack://nocodenodeweb/./src/client/components/payment/QuantityDropdown.tsx","webpack://nocodenodeweb/./src/client/components/payment/PaymentTotal.tsx","webpack://nocodenodeweb/./src/client/components/payment/FixedPrice.tsx","webpack://nocodenodeweb/./src/client/utils/constants.ts","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/DisclaimerPolicy.tsx","webpack://nocodenodeweb/./src/client/components/payment/BusinessNameHeader.tsx","webpack://nocodenodeweb/./src/client/utils/beaverLogger.ts","webpack://nocodenodeweb/./src/client/utils/server-data.ts","webpack://nocodenodeweb/./src/client/helpers/fetchWrapper.ts","webpack://nocodenodeweb/./src/client/components/payment/HostedButtons.tsx","webpack://nocodenodeweb/./src/client/hooks/useOrderStatus.ts","webpack://nocodenodeweb/./src/client/components/OrderStatus/utils.tsx","webpack://nocodenodeweb/./src/client/components/payment/validation/index.ts","webpack://nocodenodeweb/./src/client/components/payment/validation/rules.ts","webpack://nocodenodeweb/./src/client/components/payment/ErrorMessage.tsx","webpack://nocodenodeweb/./src/client/components/payment/index.tsx","webpack://nocodenodeweb/./src/client/components/notfound/index.tsx","webpack://nocodenodeweb/./src/client/lib/constants.js","webpack://nocodenodeweb/./src/client/bootstrap.tsx","webpack://nocodenodeweb/./src/client/components/App/index.tsx"],"sourcesContent":["import React, { useState, useContext } from 'react';\nimport { HostedButtonDetails, OrderDetails } from '../typings/Common';\n\ninterface IData {\n app: {\n context?: any;\n csrfToken: string;\n nonce: string;\n targetEnv: string;\n worldReady: any;\n locale: string;\n timeZone: any;\n region: any;\n };\n hostedButtonDetails?: HostedButtonDetails;\n orderDetails?: OrderDetails | null;\n serverData: any;\n countryList: any;\n}\n\ninterface IAppContext extends IData {\n setCsrfToken: (csrfToken: string) => void;\n}\n\nconst AppContext = React.createContext(null);\n\nexport const AppContextProvider = ({\n value,\n children\n}: {\n value: IData | null;\n children: React.ReactElement;\n}) => {\n const [data, setData] = useState(value);\n\n const setCsrfToken = (csrfToken: string) => {\n // data cannot be null in this case because data and setCsrfToken exist together\n /* istanbul ignore next */\n if (!data) return;\n data.app.csrfToken = csrfToken;\n setData({ ...data });\n };\n\n const appContextValue = data\n ? {\n ...data,\n setCsrfToken\n }\n : null;\n\n return {children};\n};\n\nexport const useAppContext = () => useContext(AppContext);\n","import React from 'react';\nimport { Container } from '@paypalcorp/pp-react';\nimport { css } from '@emotion/react';\n\ntype PaymentLayoutProps = {\n children?: React.ReactNode;\n};\n\nconst containerStyles = css`\n width: auto;\n margin-top: 4.5rem;\n max-width: 28.25rem;\n box-sizing: border-box;\n padding: 0 1rem;\n\n @media (min-width: 47rem) {\n max-width: 28.25rem;\n }\n`;\n\nconst PaymentWrapper = ({ children }: PaymentLayoutProps) => {\n return (\n \n {children}\n \n );\n};\n\nexport default PaymentWrapper;\n","export const COMPONENT = 'nocodenodeweb';\nexport const PRODUCT = 'quantum_leap';\nexport const FPTI_GROUP = 'main:business:web:hostedcheckout';\nexport const fptiPageNames = {\n payment: 'main:business:web:hostedcheckout:payment',\n order_status: 'main:business:web:hostedcheckout:order_status',\n not_found: 'main:business:web:hostedcheckout:not_found'\n};\n","import type { HostedButtonDetails } from '../typings/Common';\n\nexport const transformButtonVariables = (linkVariables: HostedButtonDetails['link_variables']) =>\n (linkVariables || []).reduce((acc, curr) => {\n acc[curr.name] = curr.value;\n return acc;\n }, {} as Record);\n\ntype Style = {\n layout?: string;\n shape?: string;\n color?: string;\n label?: string;\n tagline?: string;\n};\nexport const getStyleFromButtonVariables = (\n buttonVariables: Record\n) => {\n const { layout, shape, color, button_text: label, tagline } = buttonVariables;\n const style: Style = { layout, shape, color, label };\n\n // JSSDK - style.tagline is not allowed for vertical layout\n if (layout !== 'vertical') {\n style.tagline = tagline;\n }\n return style;\n};\n\nexport const isMerchantHostedExp = () =>\n typeof window !== 'undefined' && window.opener && window.opener !== window;\n\n/**\n * Align with round method used in worldready\n * (2.54, 0) => 3\n * (2.54, 1) => 2.5\n * (2.54, 2) => 2.54\n * (2.54, 3) => 2.54\n */\nexport const roundToMaxDecimal = (initValue: number, maximumFractionDigits: number = 2) => {\n const maxDecimals = Math.max(0, maximumFractionDigits);\n return +`${Math.round(Number(`${initValue}e${maxDecimals}`))}e-${maxDecimals}`;\n};\n\nexport const getTaxAmount = (\n subtotal: number,\n taxRate: number,\n maximumFractionDigits: number = 2\n) => {\n const taxAmount = (subtotal * taxRate) / 100;\n return roundToMaxDecimal(taxAmount, maximumFractionDigits);\n};\n","import { HostedButtonDetails } from '../client/typings/Common';\nimport { fptiPageNames, FPTI_GROUP, COMPONENT, PRODUCT } from './fpti';\nimport { transformButtonVariables } from '../client/utils/utils';\nimport { KrakenRequest } from '../server/typings';\n\nexport type FlowType = 'paypal' | 'merchant';\nexport type SourceType = 'link' | 'qr_code' | 'button_code';\nexport type PageName = 'payment' | 'order_status' | 'not_found';\nexport type FptiData = {\n pageName: PageName;\n eventName: string;\n hosted_button_id?: string;\n merchant_id?: string;\n order_id?: string | unknown;\n payment_source?: string;\n error_type?: string;\n flow_type?: FlowType;\n source_type?: SourceType;\n api_response_code?: number;\n api_duration?: number;\n [key: string]: unknown;\n};\n\nexport const buildBaseTags = (pageName: string, eventName: string, event?: string) => {\n const data = {\n product: PRODUCT,\n component: COMPONENT,\n pgrp: FPTI_GROUP,\n page: fptiPageNames[pageName]\n };\n if (event) {\n return {\n ...data,\n event_name: eventName,\n e: event,\n event_type: event\n };\n }\n return {\n ...data,\n action: eventName\n };\n};\n\nexport const buildAdditionalTags = (\n buttonDetails: HostedButtonDetails,\n sourceType: SourceType,\n flowType: FlowType\n) => {\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const hostedButtonId = buttonDetails.id;\n const {\n business: merchantId,\n shape: buttonShape,\n color: buttonColor,\n ...otherProps\n } = buttonVariables;\n return {\n ...otherProps,\n button_shape: buttonShape,\n button_color: buttonColor,\n merchant_id: merchantId,\n hosted_button_id: hostedButtonId,\n source_type: sourceType,\n flow_type: flowType\n };\n};\n\nexport const recordImpression = (fptiData: FptiData, onceData?: Partial) => {\n if (window.PAYPAL?.analytics?.instance) {\n const { eventName, pageName, ...otherProps } = fptiData;\n const data = {\n ...buildBaseTags(pageName, eventName, 'im'),\n ...otherProps\n };\n\n window.PAYPAL.analytics.instance.recordImpression({ data }, onceData);\n }\n};\n\nexport const recordClick = (fptiData: FptiData) => {\n if (window.PAYPAL?.analytics?.instance) {\n const { eventName, pageName, ...otherProps } = fptiData;\n const data = {\n ...buildBaseTags(pageName, eventName, 'cl'),\n ...otherProps\n };\n\n window.PAYPAL.analytics.instance.recordClick({ data });\n }\n};\n\nexport const startCPLTracking = (fptiData: FptiData) => {\n if (window.PAYPAL?.analytics) {\n const { pageName, eventName, ...otherProps } = fptiData;\n const data = {\n ...buildBaseTags(pageName, eventName),\n ...otherProps\n };\n window.PAYPAL.analytics.startCPLTracking(data);\n }\n};\n\nexport const endCPLTracking = () => {\n if (window.PAYPAL?.analytics) {\n window.PAYPAL.analytics.endCPLTracking();\n }\n};\n\nexport const recordServerSide = (req: KrakenRequest, fptiData: FptiData) => {\n const { eventName, pageName, ...otherProps } = fptiData;\n const base = buildBaseTags(pageName, eventName, 'im');\n if (req.tracking) {\n req.tracking.addServerSideFptiData({ ...base, ...otherProps });\n req.tracking.doAnalytics();\n }\n};\n","import { createContext, Dispatch, SetStateAction } from 'react';\nimport { UserInputsType, FormErrorMessageType, OrderDetails } from '../typings/Common';\n\ninterface PaymentContextType {\n userInputs: UserInputsType;\n setUserInputs: Dispatch>;\n captureStatus: string;\n setCaptureStatus: Dispatch>;\n orderData: OrderDetails;\n setOrderData: Dispatch>;\n formErrorMessage: FormErrorMessageType;\n setFormErrorMessage: Dispatch>;\n setErrorMessage: Dispatch>;\n fptiAdditionalTags: Record;\n}\n\nconst PaymentContext = createContext({} as PaymentContextType);\n\nexport default PaymentContext;\n","import { MessageFormat, AddressFormat, CurrencyFormat, NumberFormat } from '@paypalcorp/worldready';\nimport type { Address } from '../typings/Common';\n\nexport interface WorldReadyProps {\n language: string; // en, fr\n region: string; // US, GB\n locale: string; // en-US, en-GB\n bundle: string; // en-US, en-GB\n globalize: Object;\n}\n\nexport type CurrencyConfigType = {\n symbol: string;\n currencyCode: string;\n maxDecimalPlaces: number;\n};\n\nexport const getLocalizedString = (\n worldReady: WorldReadyProps,\n id: string | undefined,\n format: any = {}\n): string => {\n if (!id) {\n return '';\n }\n\n const messageFormatter = new MessageFormat(worldReady, {\n id\n });\n return messageFormatter.format(format);\n};\n\nexport const getLocalizedAddress = (\n worldReady: WorldReadyProps,\n address: Address | undefined\n): string => {\n if (!address) {\n return '';\n }\n\n const addressFormatter = new AddressFormat(worldReady, {\n addressRegion: address.country_code,\n style: 'international-multiline'\n });\n return addressFormatter.format({\n addressLine1: address.address_line_1,\n adminArea1: address.admin_area_1,\n adminArea2: address.admin_area_2,\n countryCode: address.country_code,\n postalCode: address.postal_code\n });\n};\n\nexport const getCurrencyConfig = (\n worldReady: WorldReadyProps,\n currency: string | undefined\n): CurrencyConfigType => {\n if (!currency) {\n return {\n symbol: '$',\n currencyCode: 'USD',\n maxDecimalPlaces: 2\n };\n }\n\n const currencyFormatter = new CurrencyFormat(worldReady, {\n currency,\n style: 'international'\n });\n const maxDecimalPlaces = currencyFormatter.resolvedOptions().maximumFractionDigits;\n const dummyParts = currencyFormatter.formatToParts(1);\n const symbol = dummyParts.find((part) => part.type === 'currencySymbol')?.value;\n const currencyCode = dummyParts.find((part) => part.type === 'currencyCode')?.value;\n\n return {\n symbol: symbol || '',\n currencyCode,\n maxDecimalPlaces\n };\n};\n\nexport const formatCurrency = (\n worldReady: WorldReadyProps,\n currencyCode: string | undefined,\n currencyAmount: string | number | undefined\n) => {\n if (currencyCode && currencyAmount != null) {\n const { minimumFractionDigits, maximumFractionDigits } = new CurrencyFormat(worldReady, {\n currency: currencyCode\n }).resolvedOptions();\n\n const numberFormatter = new NumberFormat(worldReady, {\n minimumFractionDigits,\n maximumFractionDigits\n });\n const formattedCurrencyAmount = numberFormatter.format(Number(currencyAmount));\n\n return `${formattedCurrencyAmount} ${currencyCode}`;\n }\n return null;\n};\n","import { css } from '@emotion/react';\n\nexport const Row = (gap?: number, center = false) => css`\n margin: ${gap || 1}rem 0;\n ${center\n ? `\n display: flex;\n justify-content: center;\n align-items: center;\n `\n : ''}\n`;\n\nexport const Col = css`\n box-sizing: border-box;\n`;\n\nexport const inputShimmer = css`\n height: 4rem;\n`;\n\nexport default { Row, Col, inputShimmer };\n","import React, { useEffect, useState } from 'react';\nimport { Shimmer } from '@paypalcorp/pp-react';\nimport commonStyles from './commonStyles';\n\nexport default ({ children }) => {\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","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\n// the object should be flattened, otherwise this would not work properly\nexport const 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","import React, { useContext, useEffect } from 'react';\nimport { DropdownMenu, BodyText } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport ShimmerPreMount from '../common/ShimmerPreMount';\nimport { getLocalizedString, WorldReadyProps } from '../../utils/localeHelper';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { sanitize } from '../../../common/sanitize';\nimport commonStyles from '../common/commonStyles';\n\ninterface QuantityItem {\n primaryText: string;\n value: string;\n}\n\nconst getQuantity = (quantityOption: number): QuantityItem[] | null => {\n if (quantityOption > 0) {\n const quantity: QuantityItem[] = [];\n for (let i = 0; i < quantityOption; i++) {\n quantity.push({\n primaryText: String(i + 1),\n value: String(i + 1)\n });\n }\n return quantity;\n }\n return null;\n};\n\nexport default ({ buttonVariables }) => {\n const worldReady = useContext(WorldReadyContext);\n const { userInputs, setUserInputs } = useContext(PaymentContext);\n const quantityOption = Number(buttonVariables?.quantity_option || 0);\n const quantity = getQuantity(quantityOption);\n useEffect(() => {\n if (quantityOption > 0 && !userInputs.quantity) {\n setUserInputs({\n ...userInputs,\n quantity: quantity?.[0]?.value\n });\n }\n });\n let dropdownMenu;\n if (quantity && userInputs.quantity) {\n dropdownMenu = (\n ) => {\n setUserInputs({\n ...userInputs,\n quantity: sanitize(event.target.value)\n });\n }}\n />\n );\n }\n return (\n <>\n {quantity && (\n
\n {dropdownMenu}\n
\n )}\n \n );\n};\n","import React, { useContext } from 'react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { BodyText, Divider } from '@paypalcorp/pp-react';\nimport {\n formatCurrency,\n WorldReadyProps,\n getLocalizedString,\n getCurrencyConfig\n} from '../../utils/localeHelper';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { getTaxAmount } from '../../utils/utils';\nimport commonStyles from '../common/commonStyles';\nimport { OptionItem } from './SingleSelectList';\n\ninterface PaymentTotalProps {\n buttonVariables: Record;\n options?: OptionItem[];\n}\n\nconst getItemPrice = (buttonVariables, options, userInputs) => {\n if (buttonVariables.amount) {\n return buttonVariables.amount;\n }\n if (userInputs.item) {\n return options.find((opt) => opt.value === userInputs.item).price;\n }\n\n return options[0]?.price;\n};\n\nconst PaymentTotal = ({ buttonVariables, options }: PaymentTotalProps) => {\n const worldReady = useContext(WorldReadyContext);\n const { userInputs } = useContext(PaymentContext);\n const currencyCode = buttonVariables.currency_code;\n const currencyConfig = getCurrencyConfig(worldReady, currencyCode);\n const quantity = userInputs.quantity ? parseInt(userInputs.quantity) : 1;\n const itemPrice = getItemPrice(buttonVariables, options, userInputs);\n const subtotal = Number(itemPrice) * quantity;\n const shipping = Number(buttonVariables.shipping);\n const shouldShowShipping = shipping > 0;\n const taxRate = Number(buttonVariables.tax_rate);\n const tax = getTaxAmount(subtotal, taxRate, currencyConfig.maxDecimalPlaces);\n const shouldShowTax = tax > 0;\n const total = subtotal + shipping + tax;\n\n return (\n <>\n {(shouldShowShipping || shouldShowTax) && (\n
\n \n {getLocalizedString(worldReady, 'payment.text.subtotal')}:{' '}\n {formatCurrency(worldReady, currencyCode, subtotal)}\n \n
\n )}\n {shouldShowShipping && (\n
\n \n {getLocalizedString(worldReady, 'payment.text.shipping')}:{' '}\n {formatCurrency(worldReady, currencyCode, shipping)}\n \n
\n )}\n {shouldShowTax && (\n
\n \n {getLocalizedString(worldReady, 'payment.text.tax')}:{' '}\n {formatCurrency(worldReady, currencyCode, tax)}\n \n
\n )}\n
\n \n
\n
\n \n {getLocalizedString(worldReady, 'payment.text.total')}:{' '}\n {formatCurrency(worldReady, currencyCode, total)}\n \n
\n \n );\n};\n\nexport default PaymentTotal;\n","import React, { useEffect, useContext } from 'react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { HeadingText, BodyText } from '@paypalcorp/pp-react';\nimport { recordImpression } from '../../../common/analytics';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { formatCurrency, WorldReadyProps } from '../../utils/localeHelper';\nimport commonStyles from '../common/commonStyles';\nimport QuantityDropdown from './QuantityDropdown';\nimport PaymentTotal from './PaymentTotal';\n\ninterface FixedPriceProps {\n buttonVariables: Record;\n}\n\nconst FixedPrice = ({ buttonVariables }: FixedPriceProps) => {\n const { fptiAdditionalTags } = useContext(PaymentContext);\n const worldReady = useContext(WorldReadyContext);\n useEffect(() => {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'hosted_buttons_shown'\n });\n }, []);\n\n const formattedAmount = formatCurrency(\n worldReady,\n buttonVariables.currency_code,\n buttonVariables.amount\n );\n\n return (\n <>\n
\n {buttonVariables.item_name}\n
\n
\n \n {formattedAmount}\n \n
\n \n \n \n );\n};\n\nexport default FixedPrice;\n","export enum OrderStatus {\n CREATED = 'CREATED',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n PAYER_ACTION_REQUIRED = 'PAYER_ACTION_REQUIRED'\n}\n\nexport enum CaptureStatus {\n PENDING = 'PENDING',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n DECLINED = 'DECLINED',\n AUTH_FAILED = 'AUTH_FAILED'\n}\n\nexport enum ButtonType {\n FIXED_PRICE = 'FIXED_PRICE',\n VARIABLE_PRICE = 'VARIABLE_PRICE',\n SINGLE_SELECT_LIST = 'SINGLE_SELECT_LIST'\n}\n","import React, { useEffect, useContext } from 'react';\nimport { TextInput, CurrencyInput, BodyText } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { getLocalizedString, WorldReadyProps, getCurrencyConfig } from '../../utils/localeHelper';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { sanitize } from '../../../common/sanitize';\nimport { recordImpression } from '../../../common/analytics';\nimport { CaptureStatus } from '../../utils/constants';\nimport commonStyles from '../common/commonStyles';\nimport ShimmerPreMount from '../common/ShimmerPreMount';\n\ninterface VariablePriceProps {\n buttonVariables: Record;\n}\n\ntype OnChangeInput = {\n memo?: string;\n amount?: string;\n invoice?: string;\n};\n\nconst VariablePrice = ({ buttonVariables }: VariablePriceProps) => {\n const worldReady = useContext(WorldReadyContext);\n const currencyConfig = getCurrencyConfig(worldReady, buttonVariables.currency_code);\n const {\n userInputs,\n setUserInputs,\n setCaptureStatus,\n formErrorMessage,\n setFormErrorMessage,\n fptiAdditionalTags\n } = useContext(PaymentContext);\n\n const onChange = (value: OnChangeInput) => {\n // clean up the keys where its value is empty\n value = Object.fromEntries(Object.entries(value).filter(([k, v]) => v !== ''));\n\n /* istanbul ignore next */\n setUserInputs((prevUserInputs) => {\n return {\n ...prevUserInputs,\n ...value,\n currency: currencyConfig.currencyCode,\n currencySymbol: currencyConfig.symbol\n };\n });\n setCaptureStatus(CaptureStatus.PENDING);\n };\n\n useEffect(() => {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'hosted_buttons_shown'\n });\n }, []);\n\n return (\n <>\n
\n {buttonVariables.item_name}\n
\n
\n
\n \n {buttonVariables.memo_label}\n \n
\n \n ) => {\n onChange({ memo: sanitize(e.target.value) });\n setFormErrorMessage({ ...formErrorMessage, memo: '' });\n }}\n label=\"\"\n errorText={getLocalizedString(worldReady, formErrorMessage.memo)}\n />\n \n
\n
\n
\n \n {buttonVariables.amount_label}\n \n
\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 {buttonVariables.invoice_label && (\n
\n
\n \n {buttonVariables.invoice_label}\n \n
\n \n ) => {\n onChange({ invoice: sanitize(e.target.value) });\n setFormErrorMessage({ ...formErrorMessage, invoice: '' });\n }}\n label=\"\"\n errorText={getLocalizedString(worldReady, formErrorMessage.invoice)}\n />\n \n
\n )}\n \n );\n};\n\nexport default VariablePrice;\n","import React, { useContext, useEffect } from 'react';\nimport { DropdownMenu, BodyText } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport ShimmerPreMount from '../common/ShimmerPreMount';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { sanitize } from '../../../common/sanitize';\nimport { recordImpression } from '../../../common/analytics';\nimport { formatCurrency, WorldReadyProps, getLocalizedString } from '../../utils/localeHelper';\nimport commonStyles from '../common/commonStyles';\nimport QuantityDropdown from './QuantityDropdown';\nimport PaymentTotal from './PaymentTotal';\n\ninterface OptionDetail {\n name: string;\n selection_details: Array<{\n option_selection: string;\n price: string;\n }>;\n}\n\nexport interface OptionItem {\n primaryText: string;\n value: string;\n price: string;\n}\n\nconst getSelectionDetails = (optionDetails: OptionDetail[]) =>\n optionDetails.find((option) => option.name === 'items')?.selection_details || [];\n\nconst getOptions = (\n optionDetails: OptionDetail[],\n currencyCode: string,\n worldReady: WorldReadyProps\n): OptionItem[] => {\n const items = getSelectionDetails(optionDetails);\n return items.map((item) => ({\n primaryText: `${sanitize(item.option_selection)} ${formatCurrency(\n worldReady,\n currencyCode,\n item.price\n )}`,\n value: item.option_selection,\n price: item.price\n }));\n};\n\nconst SingleSelectList = ({ buttonVariables, optionDetails }) => {\n const { userInputs, setUserInputs, fptiAdditionalTags } = useContext(PaymentContext);\n const worldReady = useContext(WorldReadyContext);\n const options = getOptions(optionDetails, buttonVariables?.currency_code, worldReady);\n\n useEffect(() => {\n if (!userInputs.item && options.length > 0) {\n setUserInputs({\n ...userInputs,\n item: options[0].value\n });\n }\n }, []);\n\n useEffect(() => {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'hosted_buttons_shown'\n });\n }, []);\n\n return (\n <>\n
\n {buttonVariables.item_name}\n
\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 }}\n />\n \n
\n \n \n \n );\n};\nexport default SingleSelectList;\n","import React from 'react';\nimport { css } from '@emotion/react';\nimport FixedPrice from './FixedPrice';\nimport VariablePrice from './VariablePrice';\nimport SingleSelectList from './SingleSelectList';\nimport { transformButtonVariables } from '../../utils/utils';\nimport type { HostedButtonDetails as HostedButtonDetailsType } from '../../typings/Common';\n\nconst style = css`\n margin-bottom: 2rem;\n`;\n\ntype buttonDetailsProps = {\n buttonDetails: HostedButtonDetailsType;\n};\n\nconst HostedButtonDetails = ({ buttonDetails }: buttonDetailsProps) => {\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const buttonType = buttonVariables?.button_type?.toUpperCase();\n\n return (\n
\n {buttonType === 'FIXED_PRICE' && }\n {buttonType === 'VARIABLE_PRICE' && }\n {buttonType === 'SINGLE_SELECT_LIST' && (\n \n )}\n
\n );\n};\n\nexport default HostedButtonDetails;\n","import React, { useContext } from 'react';\nimport { CaptionText, Link } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { css } from '@emotion/react';\nimport { getLocalizedString, WorldReadyProps } from '../../utils/localeHelper';\nimport { recordClick } from '../../../common/analytics';\nimport commonStyles from '../common/commonStyles';\n\nconst style = css`\n ${commonStyles.Row()};\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin-top: 2rem;\n row-gap: 2rem;\n`;\n\nconst DisclaimerPolicy = () => {\n const worldReady = useContext(WorldReadyContext);\n\n return (\n
\n \n {`${getLocalizedString(worldReady, 'payment.text.disclaimerPolicy')}`}\n \n {\n recordClick({\n eventName: 'disclaimer_link_clicked',\n pageName: 'payment'\n });\n }}\n >\n {`${getLocalizedString(worldReady, 'payment.text.reportThisLink')}`}\n \n
\n );\n};\n\nexport default DisclaimerPolicy;\n","import React from 'react';\nimport { HeadingText } from '@paypalcorp/pp-react';\nimport { css } from '@emotion/react';\nimport { useAppContext } from '../../contexts/AppContext';\n\nconst containerStyles = css`\n display: flex;\n flex-direction: column;\n margin-bottom: 3rem;\n`;\n\nexport default () => {\n const appContext = useAppContext();\n const hostedButtonDetails = appContext?.hostedButtonDetails;\n\n return (\n
\n \n {hostedButtonDetails?.business_name}\n \n
\n );\n};\n","import { Logger } from 'beaver-logger';\n\nlet logger: any; // beaver logger instance\n\nconst getCurrentPathname = () => window?.location?.pathname || '';\n\n// Reference: https://github.com/krakenjs/beaver-logger\n// NOTE: exporting beaverLogger for unit tests\nexport const beaverLogger = () => {\n if (logger) {\n return logger;\n }\n // eslint-disable-next-line new-cap\n logger = Logger({\n url: '/nocode/api/log',\n prefix: '',\n flushInterval: 10 * 1000,\n logLevel: 'info'\n });\n\n logger.addMetaBuilder(function () {\n // add the current pathname to the meta so we can log it before all the other logs\n // and can tell where the user is\n return {\n currPathname: getCurrentPathname()\n };\n });\n\n return logger;\n};\n\nconst getPayloadString = (payload: object | string): string => {\n if (!payload) {\n return '';\n }\n\n let payloadString = '';\n try {\n payloadString = typeof payload !== 'string' ? JSON.stringify(payload) : payload;\n } catch {\n console.error('getPayloadStringError Issue generating payload string');\n }\n\n return payloadString;\n};\n\nexport const logInfoClient = (event: string, payload?: object | string): void => {\n beaverLogger().info(event, { payload: getPayloadString(payload) });\n};\n\nexport const logErrorClient = (event: string, payload?: object | string): void => {\n beaverLogger().error(event, { payload: getPayloadString(payload) });\n};\n\nexport const logWarnClient = (event: string, payload?: object | string): void => {\n beaverLogger().warn(event, { payload: getPayloadString(payload) });\n};\n\nexport const logFptiClient = (payload?: object): void => {\n if (typeof payload !== 'object') {\n return;\n }\n beaverLogger().track(payload);\n};\n","/**\n * Grabs the data we dump from the server into the DOM and exports them as a singleton.\n * This allows us to conveniently dump server data into the dom and use this to load\n * that data into our app.\n */\n// because the way webpack is implemented, you can import this file anywhere\n// in the codebase like so:\n// import serverData from 'utils/server-data'\nimport { WorldReady } from '@paypalcorp/worldready';\nimport { ServerData } from '../typings/Common';\nimport { logErrorClient } from './beaverLogger';\n\nconst serverData = {} as ServerData;\n\ninterface Data extends ServerData {\n serializedServerData?: string;\n serializedFptiConfigs?: string;\n}\n\nfunction init(data: Data) {\n if (!data) {\n return;\n }\n\n try {\n const serverDataDetails = JSON.parse(data.serializedServerData || '{}');\n const serverFPTIConfig = JSON.parse(data.serializedFptiConfigs || '{}');\n Object.assign(serverData, { ...data, ...serverDataDetails, ...serverFPTIConfig });\n\n if (process.env.NODE_ENV !== 'test' && serverData?.worldReady) {\n WorldReady.load(serverData.worldReady);\n }\n } catch (err) {\n logErrorClient('server-data: ', err.toString());\n }\n}\n\nconst supportedCurrencies = () => {\n return serverData.accountCurrencies || [];\n};\n\nexport default serverData;\nexport { init, supportedCurrencies };\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 React, { useContext, memo, useRef, useEffect, useState } from 'react';\nimport {\n PayPalScriptProvider,\n PayPalButtons,\n usePayPalScriptReducer,\n ReactPayPalScriptOptions\n} from '@paypal/react-paypal-js';\nimport type { OnApproveData, CreateOrderData, OnApproveActions } from '@paypal/paypal-js';\nimport { Row, LoadingSpinner } from '@paypalcorp/pp-react';\nimport { css } from '@emotion/react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { useAppContext } from '../../contexts/AppContext';\nimport { transformButtonVariables, getStyleFromButtonVariables } from '../../utils/utils';\nimport { CaptureStatus } from '../../utils/constants';\nimport { HostedButtonDetails } from '../../typings/Common';\nimport { validateForm } from './validation';\nimport serverData from '../../utils/server-data';\nimport fetchWrapper from '../../helpers/fetchWrapper';\nimport useOrderStatus from '../../hooks/useOrderStatus';\nimport commonStyles from '../common/commonStyles';\nimport {\n endCPLTracking,\n recordClick,\n startCPLTracking,\n recordImpression\n} from '../../../common/analytics';\nimport { WorldReadyProps, getCurrencyConfig } from '../../utils/localeHelper';\n\nconst spinnerStyle = css`\n ${commonStyles.Row()};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\ninterface ButtonWrapperProps {\n merchantId: string | undefined;\n hostedButtonId: string;\n style: Object;\n buttonDetails: HostedButtonDetails;\n}\n\n// Custom component to wrap the PayPalButtons and show loading spinner\nconst ButtonWrapper = ({\n merchantId,\n hostedButtonId,\n buttonDetails,\n style\n}: ButtonWrapperProps) => {\n const [{ isPending }] = usePayPalScriptReducer();\n const appContext = useAppContext();\n const { userInputs, setCaptureStatus, setOrderData, setFormErrorMessage, fptiAdditionalTags } =\n useContext(PaymentContext);\n const userInputsRef = useRef(userInputs);\n const [initComplete, setInitComplete] = useState(false);\n const ppBtnLoading = isPending || !initComplete;\n\n const btnType = buttonDetails.link_variables?.filter((data) => data.name === 'button_type')[0]\n ?.value;\n const currency = buttonDetails.link_variables?.filter((data) => data.name === 'currency_code')[0]\n ?.value;\n const worldReady = useContext(WorldReadyContext);\n const currencyConfig = getCurrencyConfig(worldReady, currency);\n\n const createOrder = async (data: CreateOrderData) => {\n const paymentSource = data.paymentSource.toUpperCase();\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'create_order_start'\n },\n {\n funding_type: paymentSource\n }\n );\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': appContext?.app.csrfToken || serverData.csrfToken\n },\n body: JSON.stringify({\n link_id: hostedButtonId,\n merchant_id: merchantId,\n ...userInputsRef.current,\n funding_source: paymentSource,\n button_type: btnType\n })\n },\n true\n );\n const apiDuration = Date.now() - tStart;\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName: 'payment',\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 if (response.status === 403) {\n return Promise.reject({ status: 403 });\n }\n if (order.csrfToken) {\n appContext?.setCsrfToken(order.csrfToken);\n }\n if (order.context_id) {\n return order.context_id;\n }\n return Promise.reject({});\n };\n\n const onApprove = async (data: OnApproveData, actions: OnApproveActions) => {\n // @ts-ignore: paymentSource type does exist\n const { paymentSource } = data;\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'capture_order_start'\n },\n {\n funding_type: paymentSource?.toUpperCase(),\n order_id: data.orderID\n }\n );\n const tStart = Date.now();\n const { response, responseData: orderData } = await fetchWrapper(\n '/ncp/api/capture-order',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': appContext?.app.csrfToken || serverData.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: btnType\n })\n },\n true\n );\n const apiDuration = Date.now() - tStart;\n recordImpression(\n {\n ...fptiAdditionalTags,\n pageName: 'payment',\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 if (response.status === 403) {\n return Promise.reject({ status: 403 });\n }\n if (orderData.csrfToken) {\n appContext?.setCsrfToken(orderData.csrfToken);\n }\n if (orderData.name === 'INSTRUMENT_DECLINED') {\n return actions.restart();\n }\n\n setOrderData(orderData);\n return orderData;\n };\n\n useEffect(() => {\n userInputsRef.current = userInputs;\n }, [userInputs]);\n\n useEffect(() => {\n if (ppBtnLoading) {\n startCPLTracking({\n pageName: 'payment',\n eventName: 'js_sdk_loaded'\n });\n } else {\n endCPLTracking();\n }\n }, [ppBtnLoading]);\n\n useOrderStatus();\n\n return (\n <>\n {ppBtnLoading && (\n \n \n \n )}\n
\n {\n recordClick({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: `${data.fundingSource}_button_clicked`\n });\n const formValidation = validateForm(userInputsRef.current, btnType, currencyConfig);\n setFormErrorMessage(formValidation);\n if (!formValidation.isFormValid) {\n return actions.reject();\n }\n return actions.resolve();\n }}\n createOrder={createOrder}\n onApprove={onApprove}\n onInit={() => setInitComplete(true)}\n onError={(error) => {\n if (error.status === 403) {\n return setCaptureStatus(CaptureStatus.AUTH_FAILED);\n }\n setCaptureStatus(CaptureStatus.FAILED);\n }}\n onCancel={(data) => {\n recordClick({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'popup_close_clicked',\n order_id: data.orderID\n });\n }}\n />\n
\n \n );\n};\n\ninterface HostedButtonProps {\n hostedButtonId: string;\n buttonDetails: HostedButtonDetails;\n}\n\nconst HostedButtons = memo(({ hostedButtonId, buttonDetails }: HostedButtonProps) => {\n const buttonVariables = transformButtonVariables(buttonDetails.link_variables);\n const merchantId = buttonVariables.business;\n const style = getStyleFromButtonVariables(buttonVariables);\n const currencyCode = buttonVariables.currency_code;\n const worldReady = useContext(WorldReadyContext);\n let sdkOptions: ReactPayPalScriptOptions = {\n clientId: serverData.sdkClientId,\n merchantId,\n components: 'buttons,funding-eligibility',\n currency: currencyCode,\n sdkBaseUrl: serverData.sdkUrl,\n dataCspNonce: serverData.nonce,\n locale: worldReady.locale.replace('-', '_')\n };\n if (buttonDetails.venmoEligibility) {\n sdkOptions = { ...sdkOptions, enableFunding: 'venmo' };\n } else {\n sdkOptions = { ...sdkOptions, disableFunding: 'venmo' };\n }\n\n // when using in dev env, add the right domain or use msmaster\n return (\n
\n \n \n \n
\n );\n});\n\nexport default HostedButtons;\n","import { useEffect, useContext } from 'react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { CaptureStatus } from '../utils/constants';\nimport PaymentContext from '../utils/PaymentContext';\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 } = useContext(PaymentContext);\n\n useEffect(() => {\n if (isOrderCompleted(orderData) || isOrderPending(orderData)) {\n const qrcodeQueryParam = fptiAdditionalTags.source_type === 'qr_code' ? '?qrcode=true' : '';\n window.location.assign(\n `/ncp/payment/${orderData.link_id}/${orderData.context_id}${qrcodeQueryParam}`\n );\n } else 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 }, [orderData]);\n};\n\nexport default useOrderStatus;\n","import type { OrderDetails } from 'src/client/typings/Common';\nimport { OrderStatus, CaptureStatus } from '../../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","import { ButtonType } from '../../../utils/constants';\nimport { UserInputsType, FormErrorMessageType } from '../../../typings/Common';\nimport { CurrencyConfigType } from '../../../utils/localeHelper';\nimport getValidationRules, { getPriceRange } from './rules';\n\nexport const validateForm = (\n userInputs: UserInputsType,\n btnType: string | undefined,\n currencyConfig: CurrencyConfigType\n): FormErrorMessageType => {\n if (!btnType) {\n return { isFormValid: false, msgVariables: {} };\n }\n\n const invalidItems: FormErrorMessageType = { isFormValid: true, msgVariables: {} };\n\n switch (btnType) {\n case ButtonType.FIXED_PRICE:\n break;\n case ButtonType.SINGLE_SELECT_LIST:\n break;\n case ButtonType.VARIABLE_PRICE:\n const maxTextLength = 127;\n const { min, max } = getPriceRange(currencyConfig.currencyCode);\n const rules = getValidationRules({ maxTextLength, min, max, symbol: currencyConfig.symbol });\n for (const field in rules) {\n const fieldSpecificRules = rules[field];\n const value = userInputs[field];\n for (const fieldSpecificRule of fieldSpecificRules) {\n if (fieldSpecificRule.isInvalid(value)) {\n invalidItems.isFormValid = false;\n invalidItems[field] = fieldSpecificRule.messageId;\n invalidItems.msgVariables = {\n ...invalidItems.msgVariables,\n ...fieldSpecificRule.getMessageVars()\n };\n }\n }\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\nexport default (restrictions) => ({\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 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 invoice: [\n {\n isInvalid: (val) => val && val.length > restrictions.maxTextLength,\n getMessageVars: () => ({}),\n messageId: 'error.text.max'\n }\n ]\n});\n","import React, { useContext } from 'react';\nimport { Alert } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { getLocalizedString, WorldReadyProps } from '../../utils/localeHelper';\nimport { CaptureStatus } from '../../utils/constants';\nimport commonStyles from '../common/commonStyles';\n\ninterface ErrorMessageProps {\n captureStatus: string;\n errorMessage: string;\n}\nconst ErrorMessage = ({ captureStatus, errorMessage }: ErrorMessageProps) => {\n const worldReady = useContext(WorldReadyContext);\n let message: string | null = null;\n if (captureStatus === CaptureStatus.FAILED) {\n message = errorMessage || getLocalizedString(worldReady, 'error.text.default');\n } else if (captureStatus === CaptureStatus.AUTH_FAILED) {\n message = getLocalizedString(worldReady, 'error.text.refreshPage');\n }\n\n if (!message) {\n return null;\n }\n\n return (\n
\n {message}\n
\n );\n};\n\nexport default ErrorMessage;\n","import React, { useEffect, useState } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { Col } from '@paypalcorp/pp-react';\nimport PaymentWrapper from '../layout/PaymentWrapper';\nimport HostedButtonDetails from './HostedButtonDetails';\nimport DisclaimerPolicy from './DisclaimerPolicy';\nimport { useAppContext } from '../../contexts/AppContext';\nimport PaymentContext from '../../utils/PaymentContext';\nimport { CaptureStatus } from '../../utils/constants';\nimport BusinessNameHeader from './BusinessNameHeader';\nimport commonStyles from '../common/commonStyles';\nimport {\n HostedButtonDetails as HostedButtonDetailsType,\n FormErrorMessageType,\n UserInputsType,\n OrderDetails\n} from '../../typings/Common';\nimport { buildAdditionalTags, recordImpression } from '../../../common/analytics';\nimport HostedButtons from './HostedButtons';\nimport ErrorMessage from './ErrorMessage';\n\nexport const useOnCaptureFailEffect = (\n captureStatus: string,\n fptiAdditionalTags: ReturnType,\n errorMessage: string\n) => {\n useEffect(() => {\n if (captureStatus === CaptureStatus.FAILED || captureStatus === CaptureStatus.AUTH_FAILED) {\n recordImpression({\n ...fptiAdditionalTags,\n pageName: 'payment',\n eventName: 'payment_failed_alert_shown',\n error_message: errorMessage || 'default'\n });\n }\n }, [captureStatus]);\n};\n\nexport const getSourceType = (searchParams: URLSearchParams) =>\n searchParams.get('qrcode') ? 'qr_code' : 'link';\n\nconst Payment = () => {\n const { hostedButtonId } = useParams();\n const appContext = useAppContext();\n const hostedButtonDetails = appContext?.hostedButtonDetails as HostedButtonDetailsType;\n const [userInputs, setUserInputs] = useState({});\n const [captureStatus, setCaptureStatus] = useState('');\n const [orderData, setOrderData] = useState({} as OrderDetails);\n const [errorMessage, setErrorMessage] = useState('');\n const [formErrorMessage, setFormErrorMessage] = useState({} as FormErrorMessageType);\n const [searchParams] = useSearchParams();\n const fptiAdditionalTags = buildAdditionalTags(\n hostedButtonDetails,\n getSourceType(searchParams),\n 'paypal'\n );\n\n useOnCaptureFailEffect(captureStatus, fptiAdditionalTags, errorMessage);\n\n return (\n \n \n \n \n \n \n {!!hostedButtonId && (\n \n )}\n \n \n \n \n );\n};\n\nexport default Payment;\n","import React, { useContext, useEffect } from 'react';\nimport { CriticalIcon, HeadingText } from '@paypalcorp/pp-react';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { css } from '@emotion/react';\nimport { getLocalizedString, WorldReadyProps } from '../../utils/localeHelper';\nimport { recordImpression } from '../../../common/analytics';\n\nconst containerStyles = css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 30rem;\n`;\n\nconst iconContainerStyles = css`\n margin: 0 0.5rem;\n`;\n\nconst NotFound = () => {\n const worldReady = useContext(WorldReadyContext);\n\n useEffect(() => {\n recordImpression({\n eventName: 'not_found_shown',\n pageName: 'not_found'\n });\n }, []);\n\n return (\n
\n
\n \n
\n {getLocalizedString(worldReady, 'error.text.default')}\n
\n );\n};\n\nexport default NotFound;\n","import config from '../../../config/config.json';\n\nexport const CONTEXT_ROOT = config.express.mountpath;\nexport const COMPONENT = 'nocodenodeweb';\nexport const PRODUCT = 'quantum_leap';\n\n// Account Types\nexport const BUSINESS = 'BUSINESS';\nexport const INDIVIDUAL = 'INDIVIDUAL';\n\nexport const fptiPageNames = {\n hostedExp: 'container'\n};\n\nexport const FPTI_GROUP = 'main:business:web:hostedcheckout';\n","import React from 'react';\nimport { hydrateRoot } from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport { WorldReady } from '@paypalcorp/worldready';\nimport { WorldReadyProvider } from '@paypalcorp/pp-react-worldready';\nimport { ContextProvider as WorldReadyContextProvider } from '@paypalcorp/worldready-react';\nimport App from './components/App';\nimport { init as initServerData } from './utils/server-data';\nimport { CONTEXT_ROOT } from './lib/constants';\n\n// eslint-disable-next-line no-underscore-dangle\nconst windowInitialState = window.__initialState__;\n\n// Load localization messages from WorldReady\nconst worldReadyData = windowInitialState?.app?.worldReady;\nWorldReady.load(worldReadyData);\ninitServerData(windowInitialState?.serverData);\n\n// Allow the passed state to be garbage-collected\n// eslint-disable-next-line no-underscore-dangle\ndelete window.__initialState__;\n\nconst container = document.getElementById('root');\nif (container) {\n hydrateRoot(\n container,\n \n {/* @ts-ignore: unassignable children type in WorldReadyProvider */}\n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport { ThemeProvider as EmotionThemeProvider } from '@emotion/react';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react';\nimport { AppContextProvider } from '@client/contexts/AppContext';\nimport Payment from '@components/payment';\nimport Notfound from '@components/notfound';\n\nfunction App({ initialAppData }) {\n return (\n \n \n \n } />\n } />\n \n \n \n );\n}\n\nexport default App;\n"],"names":["AppContext","React","AppContextProvider","value","children","data","setData","useState","appContextValue","setCsrfToken","csrfToken","app","_jsx","Provider","useAppContext","useContext","containerStyles","css","PaymentWrapper","_Container","xxl","fptiPageNames","payment","order_status","not_found","transformButtonVariables","linkVariables","reduce","acc","curr","name","buildBaseTags","pageName","eventName","event","product","component","pgrp","page","event_name","e","event_type","action","recordImpression","fptiData","onceData","window","PAYPAL","analytics","instance","otherProps","recordClick","createContext","getLocalizedString","worldReady","id","format","MessageFormat","getCurrencyConfig","currency","symbol","currencyCode","maxDecimalPlaces","currencyFormatter","CurrencyFormat","style","resolvedOptions","maximumFractionDigits","dummyParts","formatToParts","find","part","type","formatCurrency","currencyAmount","minimumFractionDigits","NumberFormat","Number","Row","gap","center","Col","inputShimmer","mounted","setMounted","useEffect","_Shimmer","commonStyles","XSS_REGEX","sanitizeString","regExList","Set","sanitizedValue","forEach","regex","replace","sanitize","toString","trim","key","buttonVariables","WorldReadyContext","userInputs","setUserInputs","PaymentContext","quantityOption","quantity_option","quantity","i","push","primaryText","String","getQuantity","dropdownMenu","_DropdownMenu","label","options","onChange","target","_Fragment","ShimmerPreMount","PaymentTotal","currency_code","currencyConfig","parseInt","itemPrice","getItemPrice","amount","item","opt","price","subtotal","shipping","shouldShowShipping","tax","getTaxAmount","taxRate","roundToMaxDecimal","initValue","maxDecimals","Math","max","round","tax_rate","shouldShowTax","total","_jsxs","_BodyText","_Divider","strong","FixedPrice","fptiAdditionalTags","formattedAmount","item_name","_HeadingText","size","QuantityDropdown","OrderStatus","CaptureStatus","ButtonType","VariablePrice","setCaptureStatus","formErrorMessage","setFormErrorMessage","Object","fromEntries","entries","filter","k","v","prevUserInputs","currencySymbol","PENDING","memo_label","_TextInput","memo","errorText","amount_label","_CurrencyInput","prefix","suffix","currencyType","onAccept","unmaskedValue","msgVariables","invoice_label","invoice","SingleSelectList","optionDetails","getOptions","items","option","selection_details","getSelectionDetails","map","option_selection","length","HostedButtonDetails","buttonDetails","link_variables","buttonType","button_type","toUpperCase","option_details","DisclaimerPolicy","_CaptionText","_Link","href","region","secondary","onClick","appContext","hostedButtonDetails","business_name","logger","getPayloadString","payload","payloadString","JSON","stringify","console","error","serverData","async","path","csrfRetryEnabled","initialOptions","oldBody","body","parse","response","fetch","responseData","json","message","headers","spinnerStyle","ButtonWrapper","merchantId","hostedButtonId","isPending","usePayPalScriptReducer","setOrderData","userInputsRef","useRef","initComplete","setInitComplete","ppBtnLoading","btnType","current","startCPLTracking","endCPLTracking","useOrderStatus","orderData","setErrorMessage","orderDetails","status","COMPLETED","payment_status","isOrderPending","qrcodeQueryParam","source_type","location","assign","link_id","context_id","isOrderInstrumentDeclined","FAILED","isOrderDuplicateInvoiceId","DECLINED","isOrderDeclined","isOrderFailed","_Row","_LoadingSpinner","display","PayPalButtons","disabled","forceReRender","fundingSource","undefined","actions","formValidation","validateForm","isFormValid","invalidItems","FIXED_PRICE","SINGLE_SELECT_LIST","VARIABLE_PRICE","maxTextLength","min","priceRange","currencyRules","getPriceRange","rules","restrictions","isInvalid","val","getMessageVars","messageId","field","fieldSpecificRules","fieldSpecificRule","resolve","reject","createOrder","paymentSource","funding_type","tStart","Date","now","order","fetchWrapper","method","merchant_id","funding_source","apiDuration","order_id","api_response_code","api_duration","Promise","onApprove","orderID","source","restart","onInit","onError","AUTH_FAILED","onCancel","HostedButtons","business","layout","shape","color","button_text","tagline","getStyleFromButtonVariables","sdkOptions","clientId","sdkClientId","components","sdkBaseUrl","sdkUrl","dataCspNonce","nonce","locale","venmoEligibility","enableFunding","disableFunding","PayPalScriptProvider","ErrorMessage","captureStatus","errorMessage","_Alert","Payment","useParams","searchParams","useSearchParams","buildAdditionalTags","sourceType","flowType","buttonShape","buttonColor","button_shape","button_color","hosted_button_id","flow_type","get","getSourceType","useOnCaptureFailEffect","error_message","_Col","BusinessNameHeader","iconContainerStyles","NotFound","_CriticalIcon","windowInitialState","__initialState__","worldReadyData","WorldReady","load","logErrorClient","serverDataDetails","serializedServerData","serverFPTIConfig","serializedFptiConfigs","err","Logger","url","flushInterval","logLevel","addMetaBuilder","currPathname","pathname","initServerData","container","document","getElementById","hydrateRoot","WorldReadyContextProvider","WorldReadyProvider","BrowserRouter","basename","initialAppData","EmotionThemeProvider","theme","_PAYPAL_THEME","Routes","Route","element","Notfound"],"sourceRoot":""}