{"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\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 '../../client/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 = () => typeof window !== 'undefined' && window.opener && window.opener !== window;\n\n// Taking the answer from https://stackoverflow.com/questions/11832914/how-to-round-to-at-most-2-decimal-places-if-necessary\nexport const getTaxAmount = (subtotal: number, taxRate: number) =>\n Math.round(((subtotal * taxRate) / 100 + Number.EPSILON) * 100) / 100;\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 ? 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 = new CurrencyFormat(worldReady, {\n currency: currencyCode,\n }).resolvedOptions().minimumFractionDigits;\n\n const numberFormatter = new NumberFormat(worldReady, { minimumFractionDigits });\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 ShimmerPreMount from '../common/ShimmerPreMount';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\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
\n \n {getLocalizedString(worldReady, 'singleSelectList.options.quantity')}\n \n
\n
\n { dropdownMenu }\n
\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 { formatCurrency, WorldReadyProps, getLocalizedString } 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 } else 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 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);\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\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(worldReady, formErrorMessage.amount, formErrorMessage.msgVariables)}\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 } 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 FixedPrice from './FixedPrice';\nimport VariablePrice from './VariablePrice';\nimport SingleSelectList from './SingleSelectList';\nimport { transformButtonVariables } from '../../utils/utils';\nimport { css } from '@emotion/react';\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 { getLocalizedString, WorldReadyProps } from '../../utils/localeHelper';\nimport { recordClick } from '../../../common/analytics';\nimport commonStyles from '../common/commonStyles';\nimport { css } from '@emotion/react';\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 { useAppContext } from '../../contexts/AppContext';\nimport { css } from '@emotion/react';\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 {hostedButtonDetails?.business_name}\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 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 { css } from '@emotion/react';\nimport {\n endCPLTracking,\n recordClick,\n startCPLTracking,\n recordImpression\n} from '../../../common/analytics';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\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.paymentSource;\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 { CaptureStatus } from '../utils/constants';\nimport PaymentContext from '../utils/PaymentContext';\nimport { getLocalizedString, WorldReadyProps } from '../utils/localeHelper';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { isOrderCompleted, isOrderDeclined, isOrderFailed, isOrderPending, isOrderInstrumentDeclined, isOrderDuplicateInvoiceId } 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 { OrderStatus, CaptureStatus } from '../../utils/constants';\nimport type { OrderDetails } from 'src/client/typings/Common';\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 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 = (userInputs: UserInputsType, btnType: string | undefined, currencyConfig: CurrencyConfigType): 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 = { ...invalidItems.msgVariables, ...fieldSpecificRule.getMessageVars() };\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 { getLocalizedString, WorldReadyProps } from '../../utils/localeHelper';\nimport { css } from '@emotion/react';\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(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 '../../contexts/AppContext'\nimport Payment from '../payment';\nimport Notfound from '../notfound';\n\nconst 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","_jsxs","_BodyText","ShimmerPreMount","PaymentTotal","currency_code","parseInt","itemPrice","getItemPrice","amount","item","opt","price","subtotal","shipping","shouldShowShipping","tax","getTaxAmount","taxRate","Math","round","EPSILON","tax_rate","shouldShowTax","total","_Divider","strong","FixedPrice","fptiAdditionalTags","formattedAmount","item_name","_HeadingText","size","QuantityDropdown","OrderStatus","CaptureStatus","ButtonType","VariablePrice","currencyConfig","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","max","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","App","initialAppData","EmotionThemeProvider","theme","_PAYPAL_THEME","Routes","Route","element","Notfound"],"sourceRoot":""}