{"version":3,"sources":["components/AddFI/PotentialCard/index.js","components/SplitTender/index.js","components/SplitTender/SplitTenderToggle/styles.css","components/SplitTender/SplitTenderHeader/styles.css","components/RemainderMessage/index.js","components/RemainderMessage/styles.css","components/PayWith/ShowMore/index.js","components/PayWith/FundingInstrumentList/styles.css","components/PayWith/PayWith.css","components/FundingInstrument/index.js","components/PayWith/FundingInstrumentList/utils.js","components/PayWith/FundingInstrumentList/index.js","components/SplitTender/SplitTenderToggle/index.js","components/SplitTender/SplitTenderHeader/index.js","components/SelectFiLink/index.js","components/SplitBalance/index.js","shared/components/Link/index.js","shared/components/Link/styles.css","components/AddOption/index.js","components/AddOption/styles.css","shared/components/Space/index.js","components/SplitTender/utils.js","lib/eligibility.js","components/AddFI/AddCard/query.gql.js","components/AddFILink/query.gql.js","shared/components/Amount/index.js","components/AddFILink/index.js","components/CreditOfferAsFi/CreditCrossCurrency/index.js","shared/components/VerticalRadioButton/index.js","shared/components/PreferredLabel/index.js","shared/components/PreferredLabel/styles.css","components/FundingInstrument/FundingInstrument.css","shared/components/VerticalRadioButton/styles.css","shared/components/Amount/styles.css","components/Incentives/styles.css","components/Incentives/Incentives.js","components/Incentives/index.js","components/CurrencyConversionOption/index.js","components/PayWith/hooks.js","components/PayWith/PayWith.js","components/PayWith/PayWithContainer.js","components/PayWith/utils.js","components/FundingInstrument/FINote/index.js","components/FundingInstrument/FIDisplay.js","components/FundingInstrument/FINote/style.css","components/FundingInstrument/Attribution/index.js","components/FundingInstrument/PayerDisclaimer/index.js","components/PayAfterDelivery/index.js","components/PayAfterDeliveryFiSubtext/index.js","components/BackupFundingDisclaimer/index.js","components/BackupFundingInstrument/index.js","components/BackupFundingDisclaimer/query.gql.js","components/BackupFundingDisclaimer/hooks.js","components/AddFI/PotentialCard/query.gql.js"],"names":["PotentialCard","Feature","id","queries","query","POTENTIAL_CARDS_QUERY","variables","token","getToken","BILLING_ADDRESS_QUERY","subscribeTo","LoadingComponent","InterstitialLoading","contingencies","SplitTender","Loading","SPLIT_TENDER_CART_QUERY","fetchPolicy","module","exports","Message","className","styles","remainder","getContent","RemainderMessage","showMessage","height","defaultProps","ShowMore","FundingInstrument","props","useCryptoTermsInterstitial","isCryptoTermsInterstitialAcknowledged","isInterstitialAcknowledged","openCryptoTermsInterstitial","openInterstitial","payContext","usePayContext","payState","selectedFundingOptionId","preferredFundingOptionId","payLaterContext","usePayLaterContext","fi","selectedInstallment","showCurrencyCode","isSingleFI","isPPCInstallment","selectedPlan","getSelectedPlan","backupFundingInstrument","currencyConversion","fundingSource","getSelectedFundingSource","plan","hasIncentive","isIncentivesPlan","fundingSources","gplAmountDueToday","gplAmountDueTodayDetails","fundingInstrument","amount","isDiscountAvailableForInstallment","totalCost","isSelected","isPreferredChecked","style","container","data-testid","FIDisplay","backup","togglePreferred","allPlans","rewards","installmentsInPlans","findInstallmentsInPlans","setPreferredFiId","undefined","fptiAction","logger","fpti","TRANSITION_PAYLOAD","from","to","preferred_fi_id","installment_shown","areInstallmentsAvailable","rewardsFpti","makeSelected","fundingOptionType","type","isPreferred","hasPadPlan","Boolean","getPadPlan","getSelectedFundingOption","fundingOptions","isCryptoFundingInstrument","setSelectedFiId","setPayState","usePayAfterDelivery","updateFeatures","visible","data","showDescriptor","then","resetRewards","clearSelectedOffer","fundingMethodType","isPaypalBalance","fundingOption","instrumentSubType","FundingInstrumentList","fundingInstruments","payWithFeatureDependencies","featureDependencies","INSTALLMENTS_DISPLAY","SHOW_MORE_FUNDING_OPTIONS","installmentsData","showMoreData","isShowMoreEnabled","enabled","isShowMoreActive","showMore","getDependentFeatureData","useFundingInstruments","initialFundingInstruments","extraFundingInstruments","isSingleFundingOptionByType","multipleBalances","filter","length","createFundingInstrument","key","getSelectedInstallmentOption","map","animateOpacity","animateHeightFIs","featureSplitTenderGate","useFeature","showSplitExperience","useEffect","logTriggerLoaded","onChange","updateFeature","isSplitReady","showSplitContinue","checked","onLabel","offLabel","splitToggleLabel","SplitTenderHeader","showToggle","splitTenderHeaderId","header","toggleHeader","headerText","changeLink","AddOption","label","onClick","logPayWithChangeClicked","withPlusIcon","SplitTenderToggle","shouldLoadFeatureComponent","memoize","eligible","SelectFiLink","get","LazySplitBalance","lazyComponent","loading","splitBalanceQuery","definitions","names","definition","kind","name","value","FundingOptionFragment","DisallowedInstrumentFragment","SplitBalance","useQuery","useSplitBalance","checkoutSession","disallowedInstruments","selectedFundingOption","splitBalancePlan","getSplitBalancePlan","hasIncompleteDisallowedInstruments","getIncompleteDisallowedInstruments","splitBalanceEligible","React","isLoading","Link","tag","href","newProps","tabIndex","cx","link","createElement","children","action","containerClassName","dataTestId","getPayload","linkClassName","onMouseOver","prefetchQueries","getPayloadParams","textClassName","rest","shouldFetch","handlePrefetch","e","preventDefault","prefetchData","resources","classNames","client_epoch_ts","Date","now","onFocus","textContent","Space","size","spaces","i","push","Fragment","resetSplitTenderData","userCanSplit","selectedBackupFundingInstrument","selectedSplitFundingInstruments","getEligibleForPrimaryFiIdList","splitFundingOptions","isEligibleForPrimaryInstrument","isSplitTenderActive","SplitTenderGate","experiment","resolvedTreatment","getSplitOptionsAndBackup","find","backupFi","flags","paymentContingencies","reason","hasPPCInstallmentsTreatment","isEnabled","checkElmoTreatment","ElmoExperiment","TREATMENTS","TREATMENT_1","hasCreditSecondButtonTreatment","some","hasPPCreditInstallments","getCredit","isCreditSecondButton","confirmCreditCardCvvData","threeDomainSecure","isIncentivePresent","logEligibility","eligibility","eligibility_reason","cal","info","isUSGambling","merchantCountry","merchantIsGambling","isUSBuyer","getCountry","hasAllowedCardIssuerTypes","allowedCardTypes","hasContingency","isEmpty","getFeatures","isFunction","treatment","resolvedTrmt","CONTROL","LOCALE_PHONE_QUERY","GET_SUPPORTED_CARDS_QUERY","ADD_FI_LINK","Amount","currencyFormat","currencyCode","dueDate","multiLine","attributes","hasCode","includes","canAddFundingOption","allowedCardIssuers","hasAllowedCardTypesContingency","hasContingencies","isGamblingMerchant","showCloseBtn","isGambling","isFullyFundedByIncentives","hasAllowedCardTypes","hasFundingOptionsOrContingencies","customProps","features","allQueryData","NEED_CREDIT_CARD","NEED_SHIPPING_ADDRESS","NEED_CREDIT_CARD_OR_BANK_ACCOUNT","EXPIRED_CREDIT_CARD","ALLOWED_CARD_TYPES_COULD_NOT_BE_RETRIEVED","ADD_FI","options","country","context","skipFallback","SELECT_FI","AddFILink","CreditCrossCurrency","VerticalRadioButton","PreferredLabel","preferredLabelContainer","noMargins","status","Incentives","goldTreatment","useState","showSplitUp","state","setState","useIncentiveContext","incentives","incentiveType","isSinglePercentIncentive","totalIncentives","fundingOptionWithIncentives","merchantName","INCENTIVES_PAYLOAD","toggle","titleContainer","flexContainer","title","iconContainer","aria-label","aria-expanded","width","amountContainer","renderTitle","detailContainer","incentiveContainer","index","incentive","incentiveNameContainer","incentiveItem","getIncentiveName","balanceType","shortTitle","defaultContent","position","INCENTIVE_PERCENTAGE_TYPE","offerPercentage","percentOff","offerAmount","maxDiscount","incentiveAmount","CurrencyConversionOption","CurrencyConversionOptionContainer","usePaymentContingencyHandler","splitTenderGate","prevContingencies","usePrevious","handleContingency","clearContingencies","forEach","contingency","updateContingency","clear","queryVars","withSplitTender","threeDsExperienceVars","refetch","SELL_CRYPTOCURRENCY_ERROR","handleCryptoSellContingency","error","CC_AUTHORIZATION_DECLINED","CC_PROCESSOR_DECLINED","PayWith","allFundingOptions","checkoutSessionFundingOptions","payWithFeature","isPPCAvailableAsFI","isPotentialCardFeatureVisible","isOfferSelected","showControlCreditOffers","useEligibilityContext","fiCountByType","countValues","triggerInitialCPLEvent","PAGE","REVIEW","prevIsEligible","useEligibilityLogger","message","REVIEW_PAYLOAD","CheckoutError","getFallback","redirectOnError","showPotentialCard","showIncentives","isPPCFundingInstrument","isPayLaterFundingInstrument","placement","LANDING_PAGE","PayWithContainer","eligibilityContext","forceRadioButton","forceAsFirstId","showTitle","showAddFiLink","showSelectedOnly","selectFiLink","cart","billingChargePattern","merchant","checkoutSessionType","feature","cartCategory","category","reduce","sorted","option","unshift","CREDIT_OFFER_AS_FI_DE","presentmentType","CREDIT_OFFER_AS_FI","eligibleForHermione","userAction","hideCart","SPLIT_TENDER_GATE","isSplitToggle","showSplitTenderToggle","showTabs","filterOutCreditInstruments","getIsPayNowUserActionFlow","mapPayWithDataToProps","preferredId","headingStyles","FINote","note","fiNote","finNoteSingleFi","institutionImages","creditFields","payerDisclaimer","cryptocurrencyHoldingDetails","showAttribution","showRewards","isCryptoFi","lastDigits","attribution","fiName","fiFormatName","primaryType","formatType","showSetPreferredOption","currencyConversionInfo","secondaryName","isGpl","formattedRate","rateFormatted","fromCurrencyCode","fundingOptionId","isReadOnly","isCreditWithAdditionalData","creditFIDetails","getCreditFIDetails","repaymentsFIName","creditFIDescription","crossCurrencyInfo","preferredLabel","imgSrc","getImage","brandImageSrc","url","currencyLabel","showNote","useCart","cartExperiment","isHideCartFlagSet","fiDetails","FIDetails","imgAltText","styleOverrides","instrument","isPPCInstallmentWithIncentive","showAmountForCartExperiment","shouldShowAmount","item","getAmountFromSoloPlan","getDisplayAmountForFi","PayerDisclaimer","Attribution","isFundingOptionSelected","PayAfterDeliveryFiSubtext","Rewards","fiId","isSingle","selected","duration","isTesting","cn","details","detailsSingleFi","BackupFundingInstrument","makePreferred","PayAfterDelivery","isFiSelected","cryptoFi","BackupFundingDisclaimer","primaryFundingOption","primaryCurrencyConversion","Crypto","fId","Installments","isSingleFi","BackupFundingDisclaimerContainer","cartAmount","useBackupFundingDisclaimer","BackupFi","BackupFiWithDescription","TREATMENT_2","BUFS_DISCLAIMER_QUERY","amounts","total"],"mappings":"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","file":"js/PayWithContainer~21833f8f.2d91a5ba.js","sourcesContent":["import { getToken } from '@paypalcorp/c3-shared-globals';\nimport Feature from '@/components/Feature';\nimport { POTENTIAL_CARDS_QUERY } from './query.gql';\nimport { BILLING_ADDRESS_QUERY } from '@/components/AddFI/query.gql';\nimport { InterstitialLoading } from '@/shared/components/Loading';\n\n/**\n * Component responsible for displaying the potential cards.\n * Potentila-Cards are funding instruments used in guest checkout flow and they are not part of user wallet yet.\n */\nconst PotentialCard = Feature({\n id: 'ADD_POTENTIAL_CARD',\n queries: [\n {\n query: POTENTIAL_CARDS_QUERY,\n variables: { token: getToken() },\n },\n {\n // Need this query to fetch user default billingAddress for adding a card\n // fetchPolicy: cache-only returns undefined in some use-cases on local testing\n // so fetching from server is safer\n query: BILLING_ADDRESS_QUERY,\n variables: { token: getToken() },\n },\n ],\n subscribeTo: ['BANK_AS_DEBIT'],\n LoadingComponent: InterstitialLoading,\n contingencies: ['EXPIRED_CREDIT_CARD', 'NEED_CREDIT_CARD'],\n})(() => import('./PotentialCard'));\n\nexport default PotentialCard;\n","import Feature from '@/components/Feature';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport Loading from '@/components/PayWith/Loading';\nimport { SPLIT_TENDER_CART_QUERY } from './query.gql';\n\n/**\n * Component for Split Tender Edit UI (select/input).\n */\nconst SplitTender = Feature({\n id: 'PAY_WITH_SPLIT_TENDER',\n subscribeTo: ['SPLIT_TENDER_GATE'],\n LoadingComponent: Loading,\n queries: [\n {\n query: SPLIT_TENDER_CART_QUERY,\n variables: { token: getToken() },\n fetchPolicy: 'cache-only',\n },\n ],\n})(() => import('./PayWithSplitTender'));\n\nexport default SplitTender;\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-font-weight-bold\":\"700\",\"ppuiFontWeightBold\":\"700\",\"split-toggle-label\":\"SplitTenderToggle_split-toggle-label_3eqEs\",\"splitToggleLabel\":\"SplitTenderToggle_split-toggle-label_3eqEs\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-font-weight-bold\":\"700\",\"ppuiFontWeightBold\":\"700\",\"ppui-font-size-md\":\"0.9375rem\",\"ppuiFontSizeMd\":\"0.9375rem\",\"header\":\"SplitTenderHeader_header_3B27j\",\"toggle-header\":\"SplitTenderHeader_toggle-header_1rqbY\",\"toggleHeader\":\"SplitTenderHeader_toggle-header_1rqbY\",\"header-text\":\"SplitTenderHeader_header-text_3Pdvc\",\"headerText\":\"SplitTenderHeader_header-text_3Pdvc\",\"change-link\":\"SplitTenderHeader_change-link_3nQUg\",\"changeLink\":\"SplitTenderHeader_change-link_3nQUg\"};","import React from 'react';\nimport AnimateHeight from 'react-animate-height';\nimport PropTypes from 'prop-types';\nimport styles from './styles.css';\nimport getContent from '@/lib/content';\n\nfunction Message() {\n return (\n

{getContent('fundingInstruments.splitBalanceRemainder')}

\n );\n}\n\nfunction RemainderMessage({ showMessage }) {\n return (\n \n \n \n );\n}\n\nRemainderMessage.propTypes = {\n showMessage: PropTypes.bool,\n};\n\nRemainderMessage.defaultProps = {\n showMessage: false,\n};\n\nexport default RemainderMessage;\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"remainder\":\"RemainderMessage_remainder_1P-UA\"};","import Feature from '@/components/Feature';\n\nexport const ShowMore = Feature({\n id: 'SHOW_MORE_FUNDING_OPTIONS',\n})(() => import('./ShowMore'));\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"animateHeightFIs\":\"FundingInstrumentList_animateHeightFIs_YEbWE\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-size-xl\":\"2.5rem\",\"ppuiSizeXl\":\"2.5rem\",\"container\":\"PayWith_container_1uz6G\",\"min-height\":\"PayWith_min-height_a2prH\",\"minHeight\":\"PayWith_min-height_a2prH\",\"link\":\"PayWith_link_1hmIw\",\"header\":\"PayWith_header_3w1y1\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { logger, TRANSITION_PAYLOAD } from '@paypalcorp/c3-util-logger';\nimport {\n updateFeatures,\n getSelectedPlan,\n getSelectedFundingSource,\n getPadPlan,\n getSelectedFundingOption,\n isCryptoFundingInstrument,\n} from '@paypalcorp/c3-util-store';\nimport { useCryptoTermsInterstitial } from '@/components/Crypto';\nimport { InstallmentsPropType } from '@/components/Installments/propTypes';\nimport {\n areInstallmentsAvailable,\n findInstallmentsInPlans,\n isDiscountAvailableForInstallment,\n} from '@/components/Installments/utilities';\nimport { rewardsFpti, resetRewards } from '@/components/Rewards/utilities';\nimport FIDisplay from './FIDisplay';\nimport { FundingInstrumentPropType } from './constants';\nimport style from './FundingInstrument.css';\nimport { gplAmountDueTodayDetails, isIncentivesPlan } from '@/lib/utils';\nimport { usePayLaterContext, usePayContext } from '@/components/ContextProviders';\n\nconst FundingInstrument = (props) => {\n const {\n isInterstitialAcknowledged: isCryptoTermsInterstitialAcknowledged,\n openInterstitial: openCryptoTermsInterstitial,\n } = useCryptoTermsInterstitial();\n const payContext = usePayContext();\n const { selectedFundingOptionId, preferredFundingOptionId } = payContext.payState;\n const payLaterContext = usePayLaterContext();\n\n const makeSelected = () => {\n const { fi = {} } = props ?? {};\n const { id, fundingInstrument = {} } = fi;\n const { type: fundingOptionType, isPreferred } = fundingInstrument;\n const hasPadPlan = Boolean(getPadPlan(getSelectedFundingOption(payContext.fundingOptions, id)));\n\n // If we are attempting to select a crypto funding instrument and we have not\n // acknowledged the cryptocurrency terms and conditions we need to surface this\n // to the user. Once the user has acknowledged them the FI will be selected\n if (isCryptoFundingInstrument(fundingInstrument) && !isCryptoTermsInterstitialAcknowledged) {\n openCryptoTermsInterstitial(id);\n\n return;\n }\n\n payContext.setSelectedFiId(id);\n payContext.setPreferredFiId(isPreferred ? id : undefined);\n\n if (!hasPadPlan) {\n payContext.setPayState({\n usePayAfterDelivery: false,\n });\n }\n\n updateFeatures([\n // Show / Hide Soft Descriptor based on the type of the current selected fi type\n {\n id: 'DISCLAIMER',\n visible: true,\n data: { showDescriptor: fundingOptionType === 'CREDIT_CARD' },\n },\n {\n id: 'CREDIT_OFFER_AS_FI_DE',\n data: { isSelected: false },\n },\n ]).then(resetRewards);\n\n payLaterContext.clearSelectedOffer();\n };\n\n const togglePreferred = () => {\n const {\n fi: {\n id,\n allPlans = [],\n fundingInstrument: { rewards = null },\n },\n } = props;\n const installmentsInPlans = findInstallmentsInPlans(id, allPlans);\n\n payContext.setPreferredFiId(!preferredFundingOptionId ? id : undefined);\n\n const fptiAction = 'change_preferred_fi';\n\n logger.fpti(\n fptiAction,\n TRANSITION_PAYLOAD({\n from: 'review',\n to: fptiAction,\n preferred_fi_id: id,\n installment_shown: areInstallmentsAvailable(installmentsInPlans) ? 1 : 0,\n ...rewardsFpti(rewards),\n })\n );\n };\n\n // The prop `isNewPreferred` denotes that a user has performed an action in\n // the UI to change the preferred FI. Would prefer to sync the `isPreferred`\n // value in the cache with apollo-link-state.\n const {\n fi: { id },\n selectedInstallment,\n showCurrencyCode,\n isSingleFI,\n isPPCInstallment,\n } = props;\n\n const selectedPlan = getSelectedPlan({ fi: props.fi, payContext });\n const { backupFundingInstrument, currencyConversion } = selectedPlan;\n const fundingSource = getSelectedFundingSource({\n fi: props.fi,\n plan: selectedPlan,\n });\n\n const hasIncentive = isIncentivesPlan(selectedPlan?.fundingSources);\n const gplAmountDueToday = gplAmountDueTodayDetails(props.fi.fundingInstrument);\n\n let amount = fundingSource.amount;\n\n if (isDiscountAvailableForInstallment(selectedInstallment)) {\n // TODO: Should revisit fundingInstrument schema to see if we can surface currency for balance\n //\n // If the selected installment for this FI has a discount then we need to update the\n // amount to reflect this. The installment data will reflect the new total cost which\n // will be charged to this FI\n amount = selectedInstallment.totalCost;\n } else if (gplAmountDueToday) {\n //If GPL FI is selected, corresponding due amount should be shown\n amount = gplAmountDueToday;\n }\n\n const isSelected = selectedFundingOptionId === id;\n const isPreferredChecked = preferredFundingOptionId === id;\n\n return (\n
\n \n
\n );\n};\n\nFundingInstrument.propTypes = {\n fi: PropTypes.shape({\n id: PropTypes.string,\n fundingInstrument: FundingInstrumentPropType,\n }).isRequired,\n selectedInstallment: InstallmentsPropType,\n showCurrencyCode: PropTypes.bool,\n isPPCInstallment: PropTypes.bool,\n};\n\nFundingInstrument.defaultProps = {\n selectedInstallment: null,\n showCurrencyCode: false,\n isPPCInstallment: false,\n};\n\nexport default FundingInstrument;\n","export const isPaypalBalance = (fundingOption) => {\n const { fundingInstrument } = fundingOption;\n const { type, instrumentSubType } = fundingInstrument;\n\n return type === 'PAYPAL_BALANCE' && instrumentSubType === 'PAYPAL';\n};\n","import React from 'react';\nimport AnimateHeight from 'react-animate-height';\n\nimport FundingInstrument from '@/components/FundingInstrument';\nimport { getSelectedInstallmentOption } from '@/components/Installments/utilities';\nimport { ShowMore } from '@/components/PayWith/ShowMore';\nimport { isSingleFundingOptionByType } from '@paypalcorp/c3-util-store';\n\nimport { useFundingInstruments } from './hooks';\nimport styles from './styles.css';\nimport { isPaypalBalance } from './utils';\n\nconst getDependentFeatureData = (featureDependencies) => {\n const { INSTALLMENTS_DISPLAY = {}, SHOW_MORE_FUNDING_OPTIONS = {} } = featureDependencies;\n const { data: installmentsData } = INSTALLMENTS_DISPLAY;\n const { data: showMoreData, enabled: isShowMoreEnabled } = SHOW_MORE_FUNDING_OPTIONS;\n\n return {\n installmentsData,\n isShowMoreActive: isShowMoreEnabled && showMoreData?.showMore,\n isShowMoreEnabled,\n };\n};\n\nexport const FundingInstrumentList = ({\n fundingInstruments,\n payWithFeatureDependencies = {},\n isSingleFI,\n isPPCInstallment = false,\n}) => {\n const { installmentsData, isShowMoreActive, isShowMoreEnabled } = getDependentFeatureData(\n payWithFeatureDependencies\n );\n const [initialFundingInstruments, extraFundingInstruments] = useFundingInstruments({\n fundingInstruments,\n isShowMoreEnabled,\n });\n\n // NOTE: if `isFullyFundedByIncentives` is true for a transaction, it means that\n // incentives > cart amount, this incentives in itself is sufficient for us to\n // complete the transaction. Hence we can hide other FIs since they wont be part of the checkout process\n const isFullyFundedByIncentives = isSingleFundingOptionByType({\n fundingOptions: fundingInstruments,\n type: 'INCENTIVE',\n });\n\n if (isFullyFundedByIncentives) {\n return null;\n }\n\n const multipleBalances = fundingInstruments.filter(isPaypalBalance).length > 1;\n\n const createFundingInstrument = (fundingInstrument) => {\n const { id } = fundingInstrument;\n\n return (\n \n );\n };\n\n return (\n
\n
\n {initialFundingInstruments.map((fi) => createFundingInstrument(fi))}\n
\n {Boolean(extraFundingInstruments.length) ? (\n
\n \n \n {extraFundingInstruments.map((fi) => createFundingInstrument(fi))}\n \n
\n ) : null}\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { triggerLoaded as logTriggerLoaded } from '@/components/SplitTender/logging';\nimport { Switch } from '@paypalcorp/pp-react';\nimport { updateFeature } from '@paypalcorp/c3-util-store';\nimport getContent from '@/lib/content';\nimport { useFeature } from '@/components/Feature/hooks';\nimport styles from './styles.css';\n\nexport default function () {\n const featureSplitTenderGate = useFeature('SPLIT_TENDER_GATE');\n const showSplitExperience = featureSplitTenderGate?.data?.showSplitExperience;\n\n useEffect(() => {\n logTriggerLoaded('TOGGLE');\n }, []);\n\n return (\n \n updateFeature('SPLIT_TENDER_GATE', {\n data: {\n showSplitExperience: !showSplitExperience,\n isSplitReady: false,\n showSplitContinue: false,\n },\n })\n }\n checked={showSplitExperience}\n onLabel={getContent('splitTender.cta.main')}\n offLabel={getContent('splitTender.cta.main')}\n className={styles.splitToggleLabel}\n />\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getContent from '@/lib/content';\nimport { updateFeature } from '@paypalcorp/c3-util-store';\nimport { useFeature } from '@/components/Feature/hooks';\nimport {\n payWithChangeClicked as logPayWithChangeClicked,\n} from '@/components/SplitTender/logging';\nimport AddOption from '@/components/AddOption';\nimport SplitTenderToggle from '../SplitTenderToggle';\nimport styles from './styles.css';\n\nconst SplitTenderHeader = ({ showToggle }) => {\n const featureSplitTenderGate = useFeature('SPLIT_TENDER_GATE');\n\n const {\n data: {\n splitTenderHeaderId,\n showSplitExperience,\n isSplitReady = false,\n } = {},\n enabled = false,\n } = featureSplitTenderGate || {};\n\n return (\n
\n {showSplitExperience &&\n
\n {!!splitTenderHeaderId && getContent(splitTenderHeaderId)}\n
\n }\n {isSplitReady &&\n
\n {\n logPayWithChangeClicked();\n updateFeature('SPLIT_TENDER_GATE', { data: { isSplitReady: false } });\n }}\n withPlusIcon={false}\n />\n
\n }\n {showToggle &&\n \n }\n
\n )\n};\n\nSplitTenderHeader.propTypes = {\n showToggle: PropTypes.bool\n};\n\nexport default SplitTenderHeader;","import Feature from '@/components/Feature';\nimport { memoize } from '@paypalcorp/c3-util-lang';\nimport get from 'dlv';\n\nconst shouldLoadFeatureComponent = memoize(({ enabled, eligible }) => {\n return enabled && eligible;\n});\n\n/**\n * SelectFiLink component is responsible for activating SelectFi, in case the\n * user wants to select a different funding instrument for his transaction\n */\nconst SelectFiLink = Feature({\n id: 'SELECT_FI_LINK',\n subscribeTo: ['SELECT_FI'],\n shouldLoadFeatureComponent: (props) => {\n const { enabled, eligible } = get(props, 'features.SELECT_FI', {});\n return shouldLoadFeatureComponent({ enabled, eligible });\n },\n})(() => import('./SelectFiLink'));\n\nexport default SelectFiLink;\n","import React from 'react';\nimport gql from 'graphql-tag';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport {\n getSplitBalancePlan,\n getSelectedFundingOption,\n getIncompleteDisallowedInstruments,\n} from '@paypalcorp/c3-util-store';\nimport {\n FundingOptionFragment,\n DisallowedInstrumentFragment,\n} from '@paypalcorp/c3-graphql-fragments';\nimport { usePayContext } from '@/components/ContextProviders';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { useQuery } from '@apollo/react-hooks';\n\nconst LazySplitBalance = lazyComponent(() => import('./SplitBalance'), {\n id: 'SPLIT_BALANCE',\n loading: () =>
,\n});\n\nexport const splitBalanceQuery = gql`\n ${FundingOptionFragment}\n ${DisallowedInstrumentFragment}\n query SplitBalanceQuery($token: String!) {\n checkoutSession(token: $token) {\n disallowedInstruments {\n ...DisallowedInstrumentFragment\n }\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n ...FundingOptionFragment\n }\n }\n }\n`;\n\nconst SplitBalance = () => {\n const { loading, data } = useQuery(splitBalanceQuery, {\n fetchPolicy: 'cache-only',\n variables: { token: getToken() },\n });\n const payContext = usePayContext();\n const { selectedFundingOptionId, usePayAfterDelivery, useSplitBalance } = payContext.payState;\n const checkoutSession = data?.checkoutSession;\n const fundingOptions = checkoutSession?.fundingOptions || [];\n const disallowedInstruments = checkoutSession?.disallowedInstruments || [];\n\n const selectedFundingOption = getSelectedFundingOption(fundingOptions, selectedFundingOptionId);\n const splitBalancePlan = getSplitBalancePlan(selectedFundingOption);\n const hasIncompleteDisallowedInstruments = !getIncompleteDisallowedInstruments(\n disallowedInstruments\n );\n\n // Determine split balance eligibility\n // PayPal balance should be disabled if current disallowedInstruments contain PayPal Balance + CIP_INCOMPLETE reason\n // TODO: https://github.paypal.com/Checkout-R/checkoutuinodeweb/issues/1051\n const splitBalanceEligible =\n splitBalancePlan && !usePayAfterDelivery && hasIncompleteDisallowedInstruments;\n\n if (!splitBalanceEligible && useSplitBalance) {\n // Unset split balance if the FI is no longer eligible\n payContext.setPayState({\n useSplitBalance: false,\n });\n }\n\n React.useEffect(() => {\n return () => {\n payContext.setPayState({\n useSplitBalance: false,\n });\n };\n }, []);\n\n if (!splitBalanceEligible) {\n return null;\n }\n\n return ;\n};\n\nexport default SplitBalance;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './styles.css';\n\nexport default function Link(props) {\n const tag = props.href ? 'a' : 'button';\n let newProps = props;\n\n if (tag === 'button') {\n newProps = {\n ...props,\n tabIndex: 0,\n className: cx(styles.link, props.className),\n type: 'button',\n };\n }\n\n return React.createElement(tag, newProps, props.children);\n}\n\nLink.propTypes = {\n href: PropTypes.string,\n className: PropTypes.string,\n};\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-color-blue-600\":\"#0070ba\",\"ppuiColorBlue600\":\"#0070ba\",\"ppui-color-blue-800\":\"#003087\",\"ppuiColorBlue800\":\"#003087\",\"link\":\"Link_link_12w0g\"};","import React from 'react';\nimport classNames from 'classnames';\nimport { logger } from '@paypalcorp/c3-util-logger';\nimport PropTypes from 'prop-types';\nimport { prefetchData } from '@paypalcorp/c3-util-store';\nimport { PlusSVG } from '@/shared/components/Icons';\nimport Link from '@/shared/components/Link';\nimport styles from './styles.css';\n\nfunction AddOption({\n href,\n label,\n action,\n containerClassName,\n onClick,\n dataTestId,\n getPayload,\n linkClassName,\n onMouseOver,\n withPlusIcon,\n prefetchQueries,\n getPayloadParams,\n textClassName,\n ...rest\n}) {\n const shouldFetch = prefetchQueries.length !== 0;\n\n const handleClick = (e) => {\n // Analytics wants to measure how long the user action took, logging the time right at the time of click\n\n if (getPayload) {\n logger.fpti(action, getPayload({ action, client_epoch_ts: Date.now(), ...getPayloadParams }));\n }\n\n if (!href && onClick) {\n e && e.preventDefault();\n onClick(e);\n }\n };\n\n const handlePrefetch = (e) => {\n e && e.preventDefault();\n\n if (!shouldFetch) {\n return;\n }\n\n return prefetchData({ resources: prefetchQueries })(e);\n };\n\n return (\n
\n \n {withPlusIcon && }\n {label}\n \n
\n );\n}\n\nAddOption.defaultProps = {\n withPlusIcon: true,\n prefetchQueries: [],\n};\n\nAddOption.propTypes = {\n href: PropTypes.string,\n onClick: PropTypes.func,\n action: PropTypes.string,\n onMouseOver: PropTypes.func,\n dataTestId: PropTypes.string,\n withPlusIcon: PropTypes.bool,\n prefetchQueries: PropTypes.array,\n label: PropTypes.oneOfType([PropTypes.string.isRequired, PropTypes.object.isRequired]).isRequired,\n getPayload: PropTypes.func,\n getPayloadParams: PropTypes.object,\n};\n\nexport default AddOption;\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"container\":\"AddOption_container_1YSQc\",\"link\":\"AddOption_link_8_YEt\",\"textContent\":\"AddOption_textContent_wSzDs\"};","import React from 'react';\n\nexport default function Space({ size = 1 }) {\n // Must use html entity because multiple unicode spaces won't visibly repeat.\n // But html entities get escaped by React, so must set as inner html\n\n const spaces = [];\n\n for (let i = 0; i < size; i++) {\n spaces.push( );\n }\n\n return {spaces};\n}\n","import { updateFeature } from '@paypalcorp/c3-util-store';\n\n/**\n * Method created to reset split tender related data\n */\nexport const resetSplitTenderData = () => {\n updateFeature('SPLIT_TENDER_GATE', {\n data: {\n userCanSplit: false,\n isSplitReady: false,\n showSplitContinue: false,\n showSplitExperience: false,\n selectedBackupFundingInstrument: undefined,\n selectedSplitFundingInstruments: undefined,\n },\n });\n};\n\n/**\n * Method responsible for returning a list of fi ids that a elegible\n * for being a backup/primary fi.\n */\nexport const getEligibleForPrimaryFiIdList = (splitFundingOptions) => {\n return splitFundingOptions\n .filter((fundingOption) => fundingOption.isEligibleForPrimaryInstrument)\n .map((fundingOption) => fundingOption.id);\n};\n\nexport const isSplitTenderActive = (SplitTenderGate) => {\n return SplitTenderGate?.experiment?.resolvedTreatment === 'TREATMENT_1';\n};\n\nexport const getSplitOptionsAndBackup = ({\n splitFundingOptions,\n selectedSplitFundingInstruments,\n selectedBackupFundingInstrument,\n}) => {\n const backupIsOneOfSelected = !!selectedSplitFundingInstruments.find(\n ({ id }) => id === selectedBackupFundingInstrument\n );\n\n if (backupIsOneOfSelected) {\n return selectedSplitFundingInstruments;\n }\n\n const backupFi = splitFundingOptions.find(({ id }) => id === selectedBackupFundingInstrument);\n\n if (!backupFi) {\n // This should never happen.\n return selectedSplitFundingInstruments;\n }\n\n return [...selectedSplitFundingInstruments, { ...backupFi, value: 0 }];\n};\n","import get from 'dlv';\nimport { logger } from '@paypalcorp/c3-util-logger';\nimport { getCountry, getCredit } from '@paypalcorp/c3-shared-globals';\nimport { getPadPlan, getFeatures } from '@paypalcorp/c3-util-store';\nimport { isFunction, isEmpty } from '@paypalcorp/c3-util-lang';\nimport { ElmoExperiment } from '@paypalcorp/c3-util-elmo-experiment';\n\n/**\n * Hermione Eligibility Check\n * Currently Unsupported :\n * - No Funding Options\n * - 3DS Flow\n */\nexport const eligible = ({\n checkoutSession: { fundingOptions = [], flags = {}, paymentContingencies = {} } = {},\n}) => {\n let eligible = false;\n let reason = 'unknown';\n\n //PayPal Credit Treatment\n const hasPPCInstallmentsTreatment = !(\n isEnabled('PPC_INSTALLMENTS') &&\n checkElmoTreatment('PPC_INSTALLMENTS', ElmoExperiment.TREATMENTS.TREATMENT_1)\n );\n const hasCreditSecondButtonTreatment = !(\n isEnabled('PPC_SECOND_BUTTON') &&\n checkElmoTreatment('PPC_SECOND_BUTTON', ElmoExperiment.TREATMENTS.TREATMENT_1)\n );\n\n if (fundingOptions.some(getPadPlan) && !isEnabled('PAY_AFTER_DELIVERY')) {\n reason = 'has_pad_options';\n } else if (flags.hasPPCreditInstallments && hasPPCInstallmentsTreatment) {\n reason = 'has_pp_credit_installment';\n } else if (getCredit().isCreditSecondButton && hasCreditSecondButtonTreatment) {\n reason = 'is_pp_credit_second_button';\n } else if (paymentContingencies.confirmCreditCardCvvData && !isEnabled('CVV_CONFIRMATION')) {\n reason = 'cvv_required';\n } else if (\n get(paymentContingencies, 'threeDomainSecure.experience') === 'REDIRECT' &&\n !isEnabled('THREE_DS_FULL_PAGE_RESOLVER')\n ) {\n reason = '3ds_full_page_required';\n } else if (paymentContingencies.threeDomainSecure && !isEnabled('THREE_DS_CONFIRMATION')) {\n reason = '3ds_required';\n } else if (flags.isIncentivePresent && !isEnabled('INCENTIVES')) {\n reason = 'incentive_present';\n } else {\n eligible = true;\n reason = 'supported_features';\n }\n\n return {\n eligible,\n reason,\n };\n};\n\nexport const logEligibility = ({ checkoutSession = {}, eligibility } = {}) => {\n const { eligible, reason } = eligibility;\n const eligibility_reason = `xolite_${eligible ? 'eligible' : 'ineligible'}_${reason}`;\n logger.cal.info(`${eligibility_reason}`);\n};\n\nexport const isUSGambling = ({ merchantCountry = '', merchantIsGambling = false }) => {\n const isUSBuyer = getCountry() === 'US';\n const isUSMerchant = merchantCountry === 'US';\n return merchantIsGambling && isUSBuyer && isUSMerchant;\n};\n\nexport const hasAllowedCardIssuerTypes = ({ allowedCardTypes = [], hasContingency }) => {\n return !isEmpty(allowedCardTypes) || hasContingency;\n};\n\n/**\n * Returns `enabled` status for feature name. This is an easier pattern to work with\n * than having to pass the specific features to the `eligibility` function from\n * inside a React component.\n *\n * @param {String} name | The name of the feature\n * @return {Boolean} The resolved value for `[feature].eligible`;\n * */\nconst isEnabled = (name) => {\n const { enabled } = getFeatures().find(({ id }) => id === name);\n return isFunction(enabled) ? enabled() : enabled;\n};\n\n/**\n * Returns `enabled` and `treatment` status for feature name.\n *\n * @param {String} name | The name of the feature\n * @param {String} treatment | The treatment name to match (defaults to `TREATMENT_1`)\n * @return {Boolean} The resolved value for `[feature].eligible && [feature].experiment.resolvedTreatment === treatment`;\n * */\nexport const checkElmoTreatment = (name, treatment) => {\n const {\n experiment: { resolvedTreatment: resolvedTrmt = ElmoExperiment.TREATMENTS.CONTROL } = {},\n } = getFeatures().find(({ id }) => id === name);\n\n return isEnabled(name) && resolvedTrmt === treatment;\n};\n","import gql from 'graphql-tag';\n\nexport const LOCALE_PHONE_QUERY = gql`\n query LocalePhoneQuery($country: CountryCodes!, $language: CheckoutContentLanguageCode!) {\n localeMetadata {\n territories(countryCode: $country, languageCode: $language) {\n code\n internationalDialingCode\n }\n phone(countryCode: $country, languageCode: $language) {\n patterns {\n mobile\n }\n masks {\n mobile\n }\n }\n }\n }\n`;\n\nexport const GET_SUPPORTED_CARDS_QUERY = gql`\n query GetSupportedCards($token: String!, $country: CountryCodes!) {\n checkoutSession(token: $token) {\n allowedCardIssuers(country: $country)\n }\n }\n`;\n","import gql from 'graphql-tag';\nimport { DisallowedInstrumentFragment } from '@paypalcorp/c3-graphql-fragments';\n\nexport const ADD_FI_LINK = gql`\n ${DisallowedInstrumentFragment}\n query AddFILinkFundingOptions($token: String!) {\n checkoutSession(token: $token) {\n disallowedInstruments {\n ...DisallowedInstrumentFragment\n }\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n id\n fundingInstrument {\n type\n }\n }\n merchant {\n country\n isGambling\n }\n }\n }\n`;\n","import React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.css';\n\n/**\n * Amount component to display the currency values with the symbol\n * @param {object} amount | amount with {currencyCode, currencyFormat} details\n * @param {string} className | className, if you want add additional styles\n * @param {Boolean} multiLine | if multiLine is set to true, the currency symbol will be displayed in the next line\n * @returns {Amount} component\n */\nconst Amount = ({\n amount: { currencyFormat = '', currencyCode, dueDate } = {},\n multiLine = false,\n showCurrencyCode = true,\n ...attributes\n}) => {\n // Certain locales use the currency code in the formatted amount instead\n // of the symbol. In that case, hide the separate currency code display.\n const hasCode = currencyFormat.includes(currencyCode);\n\n return (\n
\n \n {currencyFormat}\n \n {!hasCode && showCurrencyCode && (\n \n {currencyCode}\n \n )}\n {dueDate && (\n \n {dueDate}\n \n )}\n
\n );\n};\n\nAmount.propTypes = {\n multiLine: PropTypes.bool,\n className: PropTypes.string,\n amount: PropTypes.shape({\n currencyCode: PropTypes.string,\n currencyFormat: PropTypes.string,\n dueDate: PropTypes.string,\n }),\n};\n\nexport default Amount;\n","import Feature from '@/components/Feature';\nimport { getToken, getCountry } from '@paypalcorp/c3-shared-globals';\nimport { isUSGambling, hasAllowedCardIssuerTypes } from '@/lib/eligibility';\nimport { isSingleFundingOptionByType } from '@paypalcorp/c3-util-store';\nimport { GET_SUPPORTED_CARDS_QUERY } from '@/components/AddFI/AddCard/query.gql';\nimport { ADD_FI_LINK } from './query.gql';\n\nexport function canAddFundingOption({\n allowedCardIssuers = [],\n fundingOptions = [],\n hasAllowedCardTypesContingency,\n hasContingencies,\n isGamblingMerchant,\n merchantCountry,\n showCloseBtn,\n}) {\n const isGambling = isUSGambling({\n merchantCountry,\n merchantIsGambling: isGamblingMerchant,\n });\n const isFullyFundedByIncentives = isSingleFundingOptionByType({\n fundingOptions,\n type: 'INCENTIVE',\n });\n const hasAllowedCardTypes = hasAllowedCardIssuerTypes({\n allowedCardTypes: allowedCardIssuers,\n hasContingency: hasAllowedCardTypesContingency,\n });\n const hasFundingOptionsOrContingencies = Boolean(fundingOptions?.length || hasContingencies);\n\n // In case of potential-card treatment, if there are no funding options, we want to display add_fi\n // link to the user to go back to interstitial and add a card via BANK_AS_DEBIT feature\n const isPotentialCardFeatureVisible = showCloseBtn;\n\n const canAddFI =\n !isGambling &&\n !isFullyFundedByIncentives &&\n hasAllowedCardTypes &&\n hasFundingOptionsOrContingencies;\n\n return isPotentialCardFeatureVisible || canAddFI;\n}\n\nexport const eligibility = (props) => {\n const { contingencies, customProps, features } = props;\n const { isGamblingMerchant, merchantCountry } = customProps;\n const { allowedCardIssuers = [] } = props?.allQueryData?.[0]?.data?.checkoutSession ?? {};\n const { fundingOptions = [] } = props?.allQueryData?.[1]?.data?.checkoutSession ?? {};\n const hasContingencies =\n contingencies.NEED_CREDIT_CARD ||\n contingencies.NEED_SHIPPING_ADDRESS ||\n contingencies.NEED_CREDIT_CARD_OR_BANK_ACCOUNT ||\n contingencies.EXPIRED_CREDIT_CARD;\n\n return canAddFundingOption({\n allowedCardIssuers,\n fundingOptions,\n hasAllowedCardTypesContingency: contingencies.ALLOWED_CARD_TYPES_COULD_NOT_BE_RETRIEVED,\n hasContingencies,\n isGamblingMerchant,\n merchantCountry,\n showCloseBtn: features?.ADD_FI?.data?.showCloseBtn,\n });\n};\n\nexport const shouldLoadFeatureComponent = (props) => {\n const { features } = props;\n return eligibility(props) && !(features.SELECT_FI.enabled && features.SELECT_FI.eligible);\n};\n\nexport const options = {\n id: 'ADD_FI_LINK',\n queries: [\n {\n query: GET_SUPPORTED_CARDS_QUERY,\n variables: { token: getToken(), country: getCountry() },\n context: {\n skipFallback: true,\n },\n },\n {\n query: ADD_FI_LINK,\n variables: { token: getToken() },\n fetchPolicy: 'cache-only',\n },\n ],\n subscribeTo: [\n 'ADD_FI',\n 'SELECT_FI',\n 'ADD_BANK_OR_CARD',\n 'BANK_AS_DEBIT',\n 'SELECT_COMBO_CARD_TYPE',\n 'ADD_POTENTIAL_CARD',\n ],\n contingencies: [\n 'NEED_CREDIT_CARD',\n 'NEED_SHIPPING_ADDRESS',\n 'NEED_CREDIT_CARD_OR_BANK_ACCOUNT',\n 'ALLOWED_CARD_TYPES_COULD_NOT_BE_RETRIEVED',\n 'EXPIRED_CREDIT_CARD',\n ],\n shouldLoadFeatureComponent,\n};\n\nconst AddFILink = Feature(options)(() => import('./AddFILink'));\n\nexport default AddFILink;\n","import Feature from '@/components/Feature';\n\nconst CreditCrossCurrency = Feature({\n id: 'CREDIT_CROSS_CURRENCY_INFO',\n})(() => import('./CreditCrossCurrency'));\n\nexport default CreditCrossCurrency;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.css';\n\nexport default function VerticalRadioButton({ children }) {\n return
{children}
;\n}\n\nVerticalRadioButton.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport { Badge } from '@paypalcorp/pp-react';\nimport getContent from '@/lib/content';\nimport styles from './styles.css';\n\n/**\n * Component that represets the preferred label within a container.\n */\nconst PreferredLabel = (props) => {\n // Temporary solution for the label when the FI is PayPal Credit or Balance.\n const { className, type } = props;\n\n return (\n \n \n {getContent('fundingInstruments.preferredLabel')}\n \n \n );\n};\n\nexport default PreferredLabel;\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"preferred-label-container\":\"PreferredLabel_preferred-label-container_3B3Cg\",\"preferredLabelContainer\":\"PreferredLabel_preferred-label-container_3B3Cg\",\"no-margins\":\"PreferredLabel_no-margins_f9574\",\"noMargins\":\"PreferredLabel_no-margins_f9574\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-size-xl\":\"2.5rem\",\"ppuiSizeXl\":\"2.5rem\",\"ppui-color-blue-600\":\"#0070ba\",\"ppuiColorBlue600\":\"#0070ba\",\"details-padding-left\":\"3.875rem\",\"detailsPaddingLeft\":\"3.875rem\",\"details-single-padding-left\":\"1.525rem\",\"detailsSinglePaddingLeft\":\"1.525rem\",\"container\":\"FundingInstrument_container_16IeJ\",\"item\":\"FundingInstrument_item_3lQ2z\",\"instrument\":\"FundingInstrument_instrument_2e3av\",\"selected-details\":\"FundingInstrument_selected-details_153wp\",\"selectedDetails\":\"FundingInstrument_selected-details_153wp\",\"details\":\"FundingInstrument_details_2XwGW\",\"details-single-fi\":\"FundingInstrument_details-single-fi_Xbpz1\",\"detailsSingleFi\":\"FundingInstrument_details-single-fi_Xbpz1\",\"make-preferred\":\"FundingInstrument_make-preferred_wkmr9\",\"makePreferred\":\"FundingInstrument_make-preferred_wkmr9\",\"currency-conversion\":\"FundingInstrument_currency-conversion_2PGt4\",\"currencyConversion\":\"FundingInstrument_currency-conversion_2PGt4\",\"crypto-fi\":\"FundingInstrument_crypto-fi_1g1sb\",\"cryptoFi\":\"FundingInstrument_crypto-fi_1g1sb\",\"amount\":\"FundingInstrument_amount_3exwq\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"container\":\"VerticalRadioButton_container_3W21c\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"currencyFormat\":\"Amount_currencyFormat_MMF5G\",\"currencyCode\":\"Amount_currencyCode_2ZnyV\",\"multiLine\":\"Amount_multiLine_VDWH_\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-font-size-sm\":\"0.8125rem\",\"ppuiFontSizeSm\":\"0.8125rem\",\"ppui-line-height-sm\":\"1.125rem\",\"ppuiLineHeightSm\":\"1.125rem\",\"container\":\"Incentives_container_1NlSZ\",\"titleContainer\":\"Incentives_titleContainer_3Osa3\",\"detailContainer\":\"Incentives_detailContainer_3FH_C\",\"text\":\"Incentives_text_3Dv5f\",\"details\":\"Incentives_details_11nyx\",\"content\":\"Incentives_content_3cx_4\",\"info\":\"Incentives_info_1Dmqx\",\"title\":\"Incentives_title_3z0lw\",\"incentiveContainer\":\"Incentives_incentiveContainer_3alVF\",\"amount\":\"Incentives_amount_2Vw08\",\"incentive\":\"Incentives_incentive_1lD1a\",\"offerExpand\":\"Incentives_offerExpand_qdZMk\",\"incentiveNameContainer\":\"Incentives_incentiveNameContainer_3eezn\",\"incentiveName\":\"Incentives_incentiveName_2SqXr\",\"incentiveAmount\":\"Incentives_incentiveAmount_3WAQg\",\"incentiveItem\":\"Incentives_incentiveItem_2Gueb\",\"amountContainer\":\"Incentives_amountContainer_3vDYR\",\"iconContainer\":\"Incentives_iconContainer_V3Lkv\",\"flexContainer\":\"Incentives_flexContainer_1twu4\"};","import React from 'react';\nimport AnimateHeight from 'react-animate-height';\n\nimport getContent from '@/lib/content';\nimport Amount from '@/shared/components/Amount';\nimport { LessSVG, MoreSVG, TagIconSVG } from '@/shared/components/Icons';\nimport {\n getSoloPlan,\n getSplitPlan,\n isSingleFundingOptionByType,\n getFundingSourceFromPlanByType,\n getFundingOptionByFundingInstrumentType,\n} from '@paypalcorp/c3-util-store';\nimport { INCENTIVE_PERCENTAGE_TYPE } from './constants';\nimport { getIncentiveName } from './utils';\nimport { useFeature } from '@/components/Feature/hooks';\nimport { logger } from '@paypalcorp/c3-util-logger';\nimport { INCENTIVES_PAYLOAD } from '@paypalcorp/c3-util-logger';\nimport { usePayContext } from '@/components/ContextProviders';\nimport { useIncentiveContext } from '@/components/Incentives/hooks';\nimport { FundingOptionType } from '@paypalcorp/c3-graphql-schema';\n\nimport styles from './styles.css';\nimport Space from '@/shared/components/Space';\n\nconst Incentives = (props) => {\n const { experiment: { resolvedTreatment: goldTreatment } = {} } =\n useFeature('GOLD_PSB_MSB_TITLE');\n\n const [state, setState] = React.useState({\n showSplitUp: false,\n });\n\n const payContext = usePayContext();\n const {\n incentives,\n isIncentivePresent,\n isSinglePercentIncentive,\n incentiveType,\n totalIncentives,\n fundingOptionWithIncentives,\n amount,\n merchantName,\n } = useIncentiveContext();\n const { fundingOptions } = payContext;\n\n React.useEffect(() => {\n const action = 'renderIncentives';\n logger.fpti(action, INCENTIVES_PAYLOAD({ action }));\n }, []);\n\n if (!isIncentivePresent || !fundingOptionWithIncentives) {\n return null;\n }\n\n const toggle = (e) => {\n setState({\n showSplitUp: !state.showSplitUp,\n });\n const action = 'expandIncentives';\n logger.fpti(action, INCENTIVES_PAYLOAD({ action }));\n };\n\n const renderTitle = (incentiveType, amount) => {\n return (\n
\n
\n \n \n {totalIncentives}\n \n {getContent(`incentives.${incentiveType}.heading`)}\n \n \n {state.showSplitUp ? (\n \n \n \n ) : (\n \n \n \n )}\n \n
\n
\n \n
\n
\n );\n };\n\n const { showSplitUp } = state;\n\n return (\n
\n {renderTitle(incentiveType, amount)}\n\n \n
\n {incentives.map(({ fundingInstrument: { name }, amount, incentives }, index) => (\n
\n
\n \n {getIncentiveName({\n merchantName,\n treatment: goldTreatment,\n balanceType: incentives?.balanceType,\n shortTitle: incentives?.shortTitle,\n defaultContent: getContent(`incentives.${name}`, { position: index + 1 }),\n })}\n {!!incentives &&\n incentives.type === INCENTIVE_PERCENTAGE_TYPE &&\n ` ${getContent(`incentives.percentage.${incentiveType}.info`, {\n offerPercentage: incentives.percentOff,\n offerAmount: incentives.maxDiscount.currencyFormat,\n })}`}\n \n
\n
\n \n
\n
\n ))}\n
\n
\n
\n );\n};\n\nexport default Incentives;\n","import Incentives from './Incentives';\n/**\n * @description `INCENTIVES` component displays all the incentives that are available in a user account.\n *\n * @summary On clicking the continue button in the review page, the IncentiveId will be added as the\n * `secondaryFundingOptionIds` to fund the transaction.\n *\n * For a fully funded by incentive transaction, IncentiveId will be the `selectedFundingOptionId`\n */\n\nexport default Incentives;\n","import React from 'react';\n\nimport { useFeature } from '@/components/Feature/hooks';\nimport { lazyComponent } from '@/lib/lazyLoad';\n\nconst CurrencyConversionOption = lazyComponent(() => import('./CurrencyConversionOption'), {\n id: 'CURRENCY_CONVERSION_OPTION',\n loading: () => null,\n});\n\n/**\n * Currency conversion information to display for each FI.\n * Besides info, it has a link to change currency conversion which shows CURRENCY_CONVERSION interstitial\n */\nconst CurrencyConversionOptionContainer = (props) => {\n /**\n * Show currency conversion option if feature is enabled and `currencyConversion` prop exists which means fi has it\n */\n const { enabled } = useFeature('CURRENCY_CONVERSION');\n\n if (!enabled) {\n return null;\n }\n\n return ;\n};\n\nexport default CurrencyConversionOptionContainer;\n","import { useEffect } from 'react';\nimport { usePrevious } from 'react-use';\n\nimport { logger } from '@paypalcorp/c3-util-logger';\n\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { updateContingency, updateFeature } from '@paypalcorp/c3-util-store';\nimport { logEligibility } from '@/lib/eligibility';\nimport { useFeature } from '@/components/Feature/hooks';\nimport { threeDsExperienceVars } from '@paypalcorp/c3-util-threed-ds';\nimport { handleCryptoSellContingency } from '@/components/Crypto';\nimport { isSplitTenderActive } from '@/components/SplitTender/utils';\n\nexport const usePaymentContingencyHandler = (contingencies, allQueryData) => {\n const splitTenderGate = useFeature('SPLIT_TENDER_GATE');\n const prevContingencies = usePrevious(contingencies);\n\n useEffect(() => {\n const handleContingency = async () => {\n updateFeature('SPINNER', { visible: true });\n\n const clearContingencies = (contingencies = []) => {\n contingencies.forEach((contingency) => {\n updateContingency(contingency, {\n clear: true,\n });\n });\n };\n\n try {\n const queryVars = {\n withSplitTender: isSplitTenderActive(splitTenderGate),\n ...threeDsExperienceVars({ token: getToken() }),\n };\n\n await allQueryData[0].refetch(queryVars);\n\n updateFeature('SPINNER', { visible: false });\n\n if (contingencies?.SELL_CRYPTOCURRENCY_ERROR) {\n logger.cal.info('CRYPTO_ERROR_SELL_CONTINGENCY');\n\n handleCryptoSellContingency();\n }\n\n clearContingencies([\n 'CC_AUTHORIZATION_DECLINED',\n 'CC_PROCESSOR_DECLINED',\n 'SELL_CRYPTOCURRENCY_ERROR',\n ]);\n } catch (err) {\n logger.cal.error('PAY_WITH_REFETCH_ERROR', err);\n\n clearContingencies([\n 'CC_AUTHORIZATION_DECLINED',\n 'CC_PROCESSOR_DECLINED',\n 'SELL_CRYPTOCURRENCY_ERROR',\n ]);\n }\n };\n\n if (\n (!prevContingencies?.CC_AUTHORIZATION_DECLINED && contingencies?.CC_AUTHORIZATION_DECLINED) ||\n (!prevContingencies?.CC_PROCESSOR_DECLINED && contingencies?.CC_PROCESSOR_DECLINED) ||\n (!prevContingencies?.SELL_CRYPTOCURRENCY_ERROR && contingencies?.SELL_CRYPTOCURRENCY_ERROR)\n ) {\n handleContingency();\n }\n }, [allQueryData, contingencies, prevContingencies, splitTenderGate]);\n};\n\nexport const useEligibilityLogger = (checkoutSession, eligibility) => {\n const prevIsEligible = usePrevious(eligibility.eligible);\n\n useEffect(() => {\n if (eligibility.eligible !== prevIsEligible) {\n logEligibility({ checkoutSession, eligibility });\n }\n }, [checkoutSession, eligibility, prevIsEligible]);\n};\n","import React, { useEffect } from 'react';\n\nimport { getFallback } from '@paypalcorp/c3-shared-globals';\nimport { countValues } from '@paypalcorp/c3-util-lang';\nimport { logger, REVIEW_PAYLOAD } from '@paypalcorp/c3-util-logger';\n\nimport {\n useEligibilityContext,\n usePayContext,\n usePayLaterContext,\n} from '@/components/ContextProviders';\nimport Incentives from '@/components/Incentives';\nimport SplitBalance from '@/components/SplitBalance';\nimport CheckoutError from '@/lib/checkoutError';\nimport { LANDING_PAGE } from '@/lib/landingPage';\nimport PotentialCard from '../AddFI/PotentialCard';\nimport RemainderMessage from '@/components/RemainderMessage';\nimport { useIncentiveContext } from '@/components/Incentives/hooks';\n\nimport { useEligibilityLogger, usePaymentContingencyHandler } from './hooks';\nimport { FundingInstrumentList } from './FundingInstrumentList';\nimport Loading from './Loading';\nimport { isPPCFundingInstrument, isPayLaterFundingInstrument } from '@paypalcorp/c3-util-store';\nimport { PAGE, triggerInitialCPLEvent } from '@/lib/cplUtils';\n\n/**\n * 1. Renders list of funding instruments\n * 2. Auto updates selected fi id / preferred fi id based previous vs new funding options\n * For example, after adding new Card we need to set it as a new selected fi\n * 3. handles such contingencies as \"CC_AUTHORIZATION_DECLINED\"\n */\nconst PayWith = ({\n allFundingOptions,\n allQueryData,\n checkoutSession,\n checkoutSessionFundingOptions = [],\n contingencies,\n eligibility,\n payWithFeature,\n featureDependencies,\n fundingOptions = [],\n isPPCAvailableAsFI,\n isSingleFI,\n isPotentialCardFeatureVisible,\n}) => {\n const { eligible, reason } = eligibility;\n const { isOfferSelected } = usePayLaterContext();\n const { selectedFundingOption, payState } = usePayContext();\n const { useSplitBalance } = payState;\n const { showControlCreditOffers } = useEligibilityContext();\n const { isIncentivePresent } = useIncentiveContext();\n\n useEffect(() => {\n /**\n * logging a count of the available cards by subtype :)\n * we're looking at initially targeting the option to split a payment between multiple Funding Instruments soon,\n * with the focus strategically to look at Prepaid cards first\n */\n const fiCountByType = countValues(\n allFundingOptions,\n (fi) => fi.fundingInstrument.instrumentSubType\n );\n\n logger.cal.info('FI_COUNT_BY_TYPE', fiCountByType);\n logger.cal.info(`FUNDING_OPTIONS_LENGTH_${checkoutSessionFundingOptions.length}`);\n\n // Trigger CPL event once pay with component is loaded\n triggerInitialCPLEvent(PAGE.REVIEW);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n usePaymentContingencyHandler(contingencies, allQueryData);\n\n useEligibilityLogger(checkoutSession, eligibility);\n\n if (!eligible) {\n const message = `ineligible_${reason}`;\n logger.fpti(message, REVIEW_PAYLOAD({ action: message }));\n CheckoutError({ message });\n }\n\n // Added potential-card visbility to check avoid showing loading component incase of potential-cards treatmemt\n // we will be displaying potential-cards on the RYP page, incase of no fis\n if (\n (!isPotentialCardFeatureVisible && !eligible && getFallback().redirectOnError) ||\n // NOTE: below logic might seem to be confusing, but is needed for 3DS & CVV\n // removing `fundingOptions.length === 0` check will break both 3DS and CVV\n // flow tests\n (fundingOptions.length === 0 &&\n !contingencies.NEED_CREDIT_CARD &&\n !contingencies.NEED_CREDIT_CARD_OR_BANK_ACCOUNT &&\n !isPPCAvailableAsFI)\n ) {\n return ;\n }\n const showPotentialCard = fundingOptions.length === 0 && isPotentialCardFeatureVisible;\n const showIncentives =\n (!isOfferSelected &&\n !isPPCFundingInstrument(selectedFundingOption?.fundingInstrument) &&\n !isPayLaterFundingInstrument(selectedFundingOption?.fundingInstrument) &&\n isIncentivePresent) ||\n (showControlCreditOffers && isIncentivePresent);\n\n return (\n <>\n {showIncentives ? : null}\n \n \n {showPotentialCard && }\n \n \n );\n};\n\nexport default PayWith;\n","import React, { useEffect } from 'react';\n\nimport { heading as headingStyles } from '@/App.css';\nimport SelectFiLink from '@/components/SelectFiLink';\nimport AddFILink from '@/components/AddFILink';\nimport getContent from '@/lib/content';\nimport PayWithSplitTender from '@/components/SplitTender';\nimport SplitTenderHeader from '../SplitTender/SplitTenderHeader';\nimport PayWith from './PayWith';\nimport styles from './PayWith.css';\nimport { mapPayWithDataToProps } from './utils';\nimport { usePayContext, useEligibilityContext } from '@/components/ContextProviders';\nimport { updateFeature } from '@paypalcorp/c3-util-store';\n\nconst PayWithContainer = (props) => {\n const payContext = usePayContext();\n const eligibilityContext = useEligibilityContext();\n const { selectedFundingOptionId, forceRadioButton, forceAsFirstId } = payContext.payState;\n\n const { allQueryData, customProps } = props;\n const {\n showTitle = true,\n showAddFiLink = true,\n showSelectedOnly = false,\n selectFiLink,\n } = customProps;\n const {\n cart: { billingChargePattern } = {},\n merchant: { country: merchantCountry, isGambling: isGamblingMerchant } = {},\n checkoutSessionType,\n } = allQueryData?.[0]?.data.checkoutSession || {};\n const {\n allFundingOptions,\n checkoutSession: { fundingOptions: checkoutSessionFundingOptions = [] } = {},\n checkoutSession = {},\n contingencies,\n eligibility,\n payWithFeature,\n featureDependencies,\n fundingOptions = [],\n isSingleFI,\n hideCart,\n cartCategory,\n isPotentialCardFeatureVisible,\n isPPCAvailableAsFI,\n showSplitExperience,\n showSplitTenderToggle,\n } = mapPayWithDataToProps(\n props,\n selectedFundingOptionId,\n forceRadioButton,\n eligibilityContext,\n showSelectedOnly,\n forceAsFirstId\n );\n\n useEffect(() => {\n const preferredId = allFundingOptions.find((fi) => fi?.fundingInstrument?.isPreferred)\n ?.fundingInstrument?.id;\n if (preferredId) {\n updateFeature('PAY_WITH', { data: { preferredId } });\n }\n }, [allFundingOptions]);\n\n return (\n <>\n
\n
\n {showTitle && !showSplitExperience ? (\n

\n {cartCategory === 'DONATION'\n ? getContent('fundingInstruments.donateWith')\n : getContent('fundingInstruments.payWith')}\n

\n ) : null}\n {showSplitTenderToggle && !showSelectedOnly && }\n {selectFiLink || }\n
\n {showSplitExperience ? (\n \n ) : (\n \n )}\n
\n {showAddFiLink ? (\n \n ) : null}\n \n );\n};\n\nexport default PayWithContainer;\n","import { eligible as eligibleForHermione } from '@/lib/eligibility';\nimport { getIsPayNowUserActionFlow } from '@/lib/userAction';\nimport { filterOutCreditInstruments } from '@/lib/credit';\nimport { isPayLaterFundingInstrument } from '@paypalcorp/c3-util-store';\n\nexport const mapPayWithDataToProps = (\n { allQueryData, feature = {}, features = {}, contingencies = {} },\n selectedFundingOptionId,\n forceRadioButton,\n eligibilityContext,\n showSelectedOnly,\n forceAsFirstId\n) => {\n const checkoutSession = allQueryData[0]?.data?.checkoutSession;\n let fundingOptions = checkoutSession?.fundingOptions ?? [];\n const cartCategory = checkoutSession?.cart?.category;\n let allFundingOptions = fundingOptions;\n const { showControlCreditOffers } = eligibilityContext;\n /**\n * TEMP fix: hide all preferred labels if there is more than 1 (currently happens in a PAD case)\n * TODO: fix the bug in the xobuyer. Basically \"isPreferred\" for PAD is different\n * from \"isPreferred\" for IACH so when we combine instruments isPreferred from PAD should be ignored\n */\n const isMultiplePreferredFis =\n fundingOptions.filter((fi) => fi.fundingInstrument.isPreferred).length > 1;\n if (isMultiplePreferredFis) {\n fundingOptions = fundingOptions.map((fi) => ({\n ...fi,\n fundingInstrument: {\n ...fi.fundingInstrument,\n isPreferred: false,\n },\n }));\n }\n\n const presentCreditInstruments = (fundingOption) =>\n isPayLaterFundingInstrument(fundingOption?.fundingInstrument);\n\n /**\n * The features.SELECT_FI.enabled flag is used to determine if a funding option was chosen by the Choice Feature (SelectFi).\n * If it was, that means that we need to filter and display only the chosen funding option in this component.\n */\n if (features.SELECT_FI.enabled && features.SELECT_FI.eligible) {\n fundingOptions = fundingOptions.filter((fi) => {\n return fi.id === selectedFundingOptionId;\n });\n }\n\n /**\n * For 2nd button credit flows, the user has already chosen to use credit,\n * so we show it as the first funding option.\n */\n if (forceAsFirstId) {\n fundingOptions = fundingOptions.reduce((sorted, option) => {\n if (option.id === forceAsFirstId) {\n sorted.unshift(option);\n } else {\n sorted.push(option);\n }\n return sorted;\n }, []);\n }\n\n if (showSelectedOnly) {\n fundingOptions = fundingOptions.filter((option) => option.id === selectedFundingOptionId);\n }\n\n let isSingleFI = fundingOptions.length === 1;\n if (\n features.CREDIT_OFFER_AS_FI_DE.data.presentmentType === 'Radio' ||\n (features.CREDIT_OFFER_AS_FI.enabled && forceRadioButton) ||\n !showControlCreditOffers\n ) {\n /* In this case, the credit banner will be presented as an FI, so\n * even if the user has only 1 FI, we would like to render it as a Radio button\n * (non-single FI style)\n */\n isSingleFI = false;\n }\n\n const eligibility = eligibleForHermione({ checkoutSession: checkoutSession || {} });\n const userAction = checkoutSession?.userAction;\n const hideCart = checkoutSession?.flags?.hideCart ?? false;\n\n const featureSplitTenderGate = features.SPLIT_TENDER_GATE;\n const { splitFundingOptions, showSplitExperience = false } = featureSplitTenderGate?.data || {};\n const isSplitToggle = featureSplitTenderGate.enabled && !!splitFundingOptions?.length;\n const showSplitTenderToggle = !eligibilityContext.showTabs && isSplitToggle;\n const isPPCAvailableAsFI = Boolean(allFundingOptions.filter(presentCreditInstruments));\n\n if (!showControlCreditOffers && !showSelectedOnly) {\n fundingOptions = fundingOptions.filter(filterOutCreditInstruments);\n allFundingOptions = allFundingOptions.filter(filterOutCreditInstruments);\n }\n\n return {\n fundingOptions,\n checkoutSession,\n payWithFeature: feature,\n featureDependencies: features,\n contingencies,\n eligibility,\n isSingleFI,\n allFundingOptions,\n hideCart: !getIsPayNowUserActionFlow(userAction) && hideCart,\n cartCategory,\n isPotentialCardFeatureVisible: features?.ADD_FI?.data?.showCloseBtn,\n isPPCAvailableAsFI,\n showSplitExperience,\n showSplitTenderToggle,\n };\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport style from './style.css';\nimport PropTypes from 'prop-types';\n\nfunction FINote({ isSelected, isSingleFI, note }) {\n return (\n isSelected && (\n {note}\n )\n );\n}\n\nFINote.defaultProps = {\n note: '',\n isSelected: false,\n isSingleFI: false,\n};\n\nFINote.propTypes = {\n note: PropTypes.string,\n isSelected: PropTypes.bool,\n isSingleFI: PropTypes.bool,\n}\n\nexport default FINote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport AnimateHeight from 'react-animate-height';\nimport { FIDetails } from '@checkout/react-components';\nimport { Radio } from '@paypalcorp/pp-react';\nimport { isEmpty } from '@paypalcorp/c3-util-lang';\nimport {\n getAmountFromSoloPlan,\n isCryptoFundingInstrument,\n isPPCFundingInstrument,\n} from '@paypalcorp/c3-util-store';\nimport FINote from '@/components/FundingInstrument/FINote';\nimport getContent from '@/lib/content';\nimport Amount from '@/shared/components/Amount';\nimport PreferredLabel from '@/shared/components/PreferredLabel';\nimport { Checkbox } from '@paypalcorp/pp-react';\nimport { isTesting } from '@paypalcorp/c3-shared-globals';\nimport Attribution from '@/components/FundingInstrument/Attribution';\nimport PayerDisclaimer from '@/components/FundingInstrument/PayerDisclaimer';\nimport CurrencyConversionOption from '@/components/CurrencyConversionOption';\nimport PayAfterDelivery from '@/components/PayAfterDelivery';\nimport PayAfterDeliveryFiSubtext from '@/components/PayAfterDeliveryFiSubtext';\nimport { fiFormatName, formatType, getImage } from './utilities';\nimport { FundingInstrumentPropType } from './constants';\nimport style from './FundingInstrument.css';\nimport { CryptoDisplay } from '@/components/Crypto';\nimport { RewardsItem } from '@/components/Rewards';\nimport { InstallmentsDisplay } from '@/components/Installments';\nimport { isCreditWithAdditionalData, getCreditFIDetails } from '@/lib/creditInstallmentsHelper';\nimport CreditCrossCurrency from '@/components/CreditOfferAsFi/CreditCrossCurrency';\nimport BackupFundingDisclaimer from '@/components/BackupFundingDisclaimer';\nimport BackupFundingInstrument from '@/components/BackupFundingInstrument';\nimport VerticalRadioButton from '@/shared/components/VerticalRadioButton';\nimport { useCart } from '../Cart/hooks';\n\nconst FIDisplay = (props) => {\n const {\n fi: {\n id,\n fundingInstrument: {\n name,\n type,\n institutionImages,\n isPreferred,\n creditFields,\n payerDisclaimer,\n cryptocurrencyHoldingDetails,\n } = {},\n } = {},\n amount: { currencyCode } = {},\n showCurrencyCode,\n showAttribution = true,\n showRewards = true,\n isSelected,\n isSingleFI,\n backup,\n isPreferredChecked,\n togglePreferred,\n makeSelected,\n currencyConversion,\n fundingMethodType,\n hasIncentive,\n isPPCInstallment,\n } = props;\n const fundingInstrument = props?.fi?.fundingInstrument ?? {};\n const isCryptoFi = isCryptoFundingInstrument(fundingInstrument);\n\n let lastDigits = fundingInstrument?.lastDigits;\n let attribution = fundingInstrument?.attribution;\n let fiName = fiFormatName(props?.fi?.fundingInstrument);\n let primaryType = formatType(props?.fi?.fundingInstrument, isSelected);\n let showSetPreferredOption = true;\n let currencyConversionInfo = null;\n let secondaryName = null;\n let isGpl = false;\n\n if (currencyConversion && !isEmpty(currencyConversion)) {\n currencyConversionInfo = (\n \n );\n }\n\n // Update the primaryType data and fiName to match with creditFI content, which comes from Personalisation Studio\n if (isCreditWithAdditionalData(name, type)) {\n showSetPreferredOption = false;\n\n if (creditFields) {\n const creditFIDetails = getCreditFIDetails(creditFields);\n\n isGpl = true;\n secondaryName = creditFIDetails.repaymentsFIName;\n primaryType = creditFIDetails.primaryType;\n fiName = creditFIDetails.fiName;\n lastDigits = creditFIDetails.lastDigits;\n attribution = creditFIDetails.creditFIDescription;\n\n if (creditFIDetails.crossCurrencyInfo) {\n currencyConversionInfo = ;\n }\n } else {\n fiName = getContent('fundingInstruments.defaultCreditInstallmentName');\n }\n }\n\n if (isCryptoFi) {\n fiName = fundingInstrument?.label;\n showSetPreferredOption = false;\n }\n\n const preferredLabel = isPreferred ? : null;\n const imgSrc = getImage(props?.fi?.fundingInstrument);\n const brandImageSrc = institutionImages?.[0]?.url?.href;\n const currencyLabel = showCurrencyCode && currencyCode ? ` (${currencyCode})` : null;\n const showNote = fundingMethodType === 'ECHECK';\n const { experiment: cartExperiment, isHideCartFlagSet } = useCart();\n\n const fiDetails = (\n \n );\n\n /**\n * When displaying amount we should usually defer to amount sent in from props\n * but for currency conversion use-cases with crypto currency funding instruments\n * we need to always display USD. So for these use-cases we will defer to\n * using amount from plans which should be in USD\n */\n const getDisplayAmountForFi = () => {\n if (!isCryptoFi || !currencyConversion) {\n return props?.amount;\n }\n\n // For currency conversion use-cases with crypto fi\n const amount = getAmountFromSoloPlan(props?.fi);\n\n return amount ?? props?.amount;\n };\n\n // Only show amount for non PPC EZP Merchants because of a bug on payments & PAPS: DTPPCREDIT-2010\n // https://engineering.paypalcorp.com/jira/browse/DTPPCREDIT-2010\n const isPPCInstallmentWithIncentive =\n isPPCFundingInstrument(fundingInstrument) && isPPCInstallment && hasIncentive;\n const showAmountForCartExperiment =\n !isHideCartFlagSet || isCryptoFi || cartExperiment?.resolvedTreatment === 'TREATMENT_2';\n const shouldShowAmount =\n isSelected && showAmountForCartExperiment && !isPPCInstallmentWithIncentive;\n return (\n
\n
\n {isSingleFI ? (\n fiDetails\n ) : (\n \n \n \n )}\n {shouldShowAmount && (\n \n )}\n
\n {showNote && (\n \n )}\n \n {showAttribution && (\n \n )}\n {!isSelected && }\n {showRewards && }\n \n {/* Crypto funding instruments display BUFS details within CryptoDisplay */}\n {!isCryptoFi ? (\n \n ) : null}\n\n {showSetPreferredOption && !isPreferred && (\n
\n \n
\n )}\n \n {currencyConversion ? (\n \n {currencyConversionInfo}\n {/* Crypto funding instruments display BUFS disclaimers within CryptoDisplay */}\n {!isCryptoFi ? (\n \n ) : null}\n
\n ) : null}\n {isCryptoFi && cryptocurrencyHoldingDetails ? (\n \n ) : null}\n \n \n \n );\n};\n\nFIDisplay.propTypes = {\n fi: PropTypes.shape({\n id: PropTypes.string.isRequired,\n fundingInstrument: FundingInstrumentPropType.isRequired,\n }).isRequired,\n amount: PropTypes.shape({\n currencyCode: PropTypes.string,\n currencyFormat: PropTypes.string,\n }),\n showCurrencyCode: PropTypes.bool,\n isSelected: PropTypes.bool,\n isSingleFI: PropTypes.bool,\n backup: PropTypes.shape({\n name: PropTypes.string,\n lastDigits: PropTypes.string,\n }),\n isPreferredChecked: PropTypes.bool.isRequired,\n togglePreferred: PropTypes.func.isRequired,\n makeSelected: PropTypes.func.isRequired,\n currencyConversion: PropTypes.shape({\n isReadOnly: PropTypes.bool,\n rateFormatted: PropTypes.string,\n type: PropTypes.oneOf(['PAYPAL', 'VENDOR']),\n from: PropTypes.shape({\n currencyCode: PropTypes.string,\n }),\n }),\n hasIncentive: PropTypes.bool,\n isPPCInstallment: PropTypes.bool,\n};\n\nFIDisplay.defaultProps = {\n amount: {},\n backup: undefined,\n currencyConversion: {},\n isPreferredChecked: false,\n isSelected: false,\n isSingleFI: true,\n showCurrencyCode: false,\n togglePreferred: () => {},\n makeSelected: () => {},\n hasIncentive: false,\n isPPCInstallment: false,\n};\n\nexport default FIDisplay;\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-color-grey-700\":\"#2c2e2f\",\"ppuiColorGrey700\":\"#2c2e2f\",\"ppui-font-size-md\":\"0.9375rem\",\"ppuiFontSizeMd\":\"0.9375rem\",\"ppui-line-height-md\":\"1.5rem\",\"ppuiLineHeightMd\":\"1.5rem\",\"ppui-spacing-xs\":\"0.25rem\",\"ppuiSpacingXs\":\"0.25rem\",\"size-base-1200\":\"4rem\",\"sizeBase1200\":\"4rem\",\"fiNote\":\"FINote_fiNote_2B9_B\",\"finNote-single-fi\":\"FINote_finNote-single-fi_2XnJi\",\"finNoteSingleFi\":\"FINote_finNote-single-fi_2XnJi\"};","import Feature from '@/components/Feature';\n\nconst shouldLoadFeatureComponent = ({ customProps: { type, attribution, isGpl } }) => {\n return (type === 'CREDIT_CARD' || isGpl) && attribution;\n};\n\nconst Attribution = Feature({\n id: 'FI_ATTRIBUTION',\n shouldLoadFeatureComponent,\n})(() => import('./Attribution.js'));\n\nexport default Attribution;\n","import Feature from '@/components/Feature';\n\nconst shouldLoadFeatureComponent = ({ customProps: { isSelected, payerDisclaimer } }) => {\n // This feature relies upon the payerDisclaimer field in the payWith query.\n // This field is passed in as a custom prop from FIDisplay.\n return isSelected && payerDisclaimer === 'COBRANDED';\n};\n\nconst PayerDisclaimer = Feature({\n id: 'FI_PAYER_DISCLAIMER',\n shouldLoadFeatureComponent,\n})(() => import('./PayerDisclaimer.js'));\n\nexport default PayerDisclaimer;\n","import gql from 'graphql-tag';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport Feature from '@/components/Feature';\nimport { getPadPlan } from '@paypalcorp/c3-util-store';\n\nconst shouldLoadFeatureComponent = ({ customProps: { fundingOption } }) => {\n return !!(fundingOption && getPadPlan(fundingOption));\n};\n\nconst query = gql`\n query PAD_QUERY($token: String!) {\n checkoutSession(token: $token) {\n flags {\n isPadPreferred\n }\n }\n }\n`;\n\n/**\n * What's PAD?: https://engineering.paypalcorp.com/confluence/display/GKM/Pay+After+Delivery\n * UI mocks: https://paypalamericas.invisionapp.com/d/main#/projects/prototypes/12154097\n * Steps to create user with PAD: https://engineering.paypalcorp.com/confluence/display/MICA/Reproduce+pad+on+stage+-+AU+and+DE#Reproducepadonstage-AUandDE-GothroughthePADflow\n * Original PR: https://github.paypal.com/Checkout-R/checkoutuinodeweb/pull/973\n */\nconst PayAfterDelivery = Feature({\n id: 'PAY_AFTER_DELIVERY',\n queries: [{ query: query, variables: { token: getToken() }, fetchPolicy: 'cache-only' }],\n shouldLoadFeatureComponent,\n})(() => import('./PayAfterDelivery'));\n\nexport default PayAfterDelivery;\n","import Feature from '@/components/Feature';\nimport { getPadPlan } from '@paypalcorp/c3-util-store';\n\nconst shouldLoadFeatureComponent = ({ customProps: { fundingOption } }) => {\n return !!(fundingOption && getPadPlan(fundingOption));\n};\n\n/**\n * @description `PayAfterDeliveryFiSubtext` component displays PAD subtext content for unselected FI's with PAD enabled.\n */\nconst PayAfterDeliveryFiSubtext = Feature({\n id: 'PAY_AFTER_DELIVERY_FI_SUBTEXT',\n shouldLoadFeatureComponent,\n})(() => import('./PayAfterDeliveryFiSubtext'));\n\nexport default PayAfterDeliveryFiSubtext;\n","import React from 'react';\n\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { useBackupFundingDisclaimer } from './hooks';\n\nconst BackupFundingDisclaimer = lazyComponent(() => import('./BackupFundingDisclaimer'), {\n id: 'BACKUP_FUNDING_DISCLAIMER',\n});\n\n/**\n *\n * Displays disclaimer for backup funding instrument for a currency conversion\n * transaction when a bank is the main FI.\n *\n */\nfunction BackupFundingDisclaimerContainer(props) {\n const { cartAmount } = useBackupFundingDisclaimer();\n const backup = props?.backup;\n const currencyConversion = props?.primaryCurrencyConversion;\n\n if (!backup || !currencyConversion || !cartAmount) {\n return null;\n }\n\n return ;\n}\n\nexport default BackupFundingDisclaimerContainer;\n","import React from 'react';\n\nimport { ElmoExperiment } from '@paypalcorp/c3-util-elmo-experiment';\n\nimport { useFeature } from '@/components/Feature/hooks';\nimport { lazyComponent } from '@/lib/lazyLoad';\n\nconst BackupFi = lazyComponent(() => import('./BackupFi'), {\n id: 'BACKUP_FI',\n loading: () => <>,\n});\n\nconst BackupFiWithDescription = lazyComponent(() => import('./BackupFiWithDescription'), {\n id: 'BACKUP_FI_DESCRIPTION',\n loading: () => <>,\n});\n\n/**\n * Displays backup funding instrument for a non currency conversion\n * transaction.\n */\n\nconst BackupFundingDisclaimer = ({ backup, currencyConversion }) => {\n const { experiment } = useFeature('BACKUP_FI');\n\n if (!backup || currencyConversion) {\n return null;\n }\n\n if (experiment?.resolvedTreatment === ElmoExperiment.TREATMENTS.TREATMENT_1) {\n return ;\n }\n\n if (experiment?.resolvedTreatment === ElmoExperiment.TREATMENTS.TREATMENT_2) {\n return ;\n }\n\n return null;\n};\n\nexport default BackupFundingDisclaimer;\n","import gql from 'graphql-tag';\n\nexport const BUFS_DISCLAIMER_QUERY = gql`\n query BufsDisclaimerQuery($token: String!) {\n checkoutSession(token: $token) {\n cart {\n amounts {\n total {\n currencyFormatSymbolISOCurrency\n currencyCode\n }\n }\n }\n }\n }\n`;\n","import { useQuery } from '@apollo/react-hooks';\nimport { BUFS_DISCLAIMER_QUERY } from './query.gql';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\n\nexport function useBackupFundingDisclaimer() {\n const { data } = useQuery(BUFS_DISCLAIMER_QUERY, {\n variables: { token: getToken() },\n });\n\n const cartAmount = data?.checkoutSession?.cart?.amounts?.total;\n\n return {\n cartAmount,\n };\n}\n","import gql from 'graphql-tag';\n\n/**\n * query to fetch potential cards of guest member checkout exp\n */\nexport const POTENTIAL_CARDS_QUERY = gql`\n query PotentialCardsQuery($token: String!) {\n potentialCards(token: $token) {\n id\n name\n type\n expirationDate\n instrumentSubType\n lastDigits\n issuerProductDescription\n source\n image {\n url {\n href\n }\n width\n height\n }\n }\n }\n`;\n"],"sourceRoot":""}