{"version":3,"sources":["components/ShipTo/Loading/index.js","components/ShipTo/Title/styles.css","components/ShipTo/Loading/styles.css","components/Rewards/PayWithRewards/index.js","components/Rewards/query.gql.js","components/Rewards/RewardsInterstitial/index.js","components/RemittanceDisclosure/query.gql.js","components/RemittanceDisclosure/hooks.js","components/ThreeDSTwoConfirmation/index.js","components/ShipTo/AddShipping/index.js","components/RemittanceDisclosure/index.js","components/SplitTender/SplitTenderContinue/index.js","components/RedirectToCredit/index.js","components/RedirectToCredit/query.gql.js","components/ReturnFromCredit/index.js","components/ReviewPageAlert/index.js","components/Sca/index.js","components/SelectFi/index.js","components/ShipTo/SelectShippingInterstitial/index.js","components/SepaConfirmation/index.js","components/SharedCard/SharedCardConsent/index.js","components/SharedCard/SharedCardWait/index.js","components/SplitTender/SplitTenderBackup/index.js","components/SplitTender/SplitTenderErrors/index.js","components/SplitTender/SplitTenderErrors/styles.css","components/SplitTender/SplitTenderGate/index.js","components/ShippingAndTax/ShippingAndTaxInterstitial/index.js","components/Sca/query.gql.js","components/Sca/hooks.js","components/SplitTender/logging.js","components/ShipTo/index.js","components/Sca/constants.js","components/Rewards/index.js","components/ShipTo/Title/index.js","components/SplitTender/query.gql.js"],"names":["Loading","clipPathId","uniqueStr","gradientId","className","styles","loading","viewBox","version","preserveAspectRatio","svg","clipPath","x","y","width","height","style","fill","id","rx","ry","offset","stopColor","attributeName","values","dur","repeatCount","module","exports","LazyPayWithRewards","lazyComponent","RewardsItem","props","REWARDS_DISPLAY","useFeature","useQuery","RewardsQuery","query","variables","fetchPolicy","data","usePayContext","payState","selectedFundingOptionId","useSplitBalance","rewardSelected","fiId","rewards","getFundingInstrumentFromCheckoutSession","matchedRewards","relatedCardId","hasIssuer","issuer","name","resetRewards","experiment","resolvedTreatment","isLoading","allQueryData","definitions","names","filter","definition","kind","value","RewardsFragment","token","getToken","RewardsInterstitial","Feature","subscribeTo","interstitial","interstitialOptions","type","queries","REMITTANCE_DISCLOSURE_QUERY","useRemittanceDisclosure","selectedFundingOption","checkoutSession","fundingPlan","allPlans","merchantName","merchant","getMerchantName","amountInPayerCurrency","currencyConversion","convertedAmount","currencyFormatSymbolISOCurrency","getAmountInPayerCurrency","amountInInvCurrency","cart","total","getAmountInInvCurrency","remittanceConversionInfo","remittanceNonConversionInfo","amount","showRemittanceDisclosure","flags","getShowRemittanceDisclosure","remittanceContent","getContent","ThreeDSTwoConfirmation","onBeforeCloseFn","updateFeature","status","CHECKOUT_BUTTON_STATES","INITIAL","inContingencyFlow","LoadingComponent","InterstitialLoading","contingencies","shouldLoadFeatureComponent","memoize","enabled","selectedAddressId","isEnabledWithAddress","Boolean","canHandleAddressContingencies","NEED_SHIPPING_ADDRESS","NEED_PRIMARY_ADDRESS","shouldAutoDisplayComponent","featureId","isRemembered","handlePostRiskyLogin","hasShippingParam","needShippingAddressContingency","handleContingency","redirectToRiskyLogin","reason","destination","extraParams","lite","fromLite","ulClientKey","ulClientRedirect","AddShipping","showCloseBtnFunc","headerTitleFunc","get","userSelectedAddressId","getIsRememberedAuthState","isDestination","params","addShipping","RemittanceDisclosure","RemittanceDisclosureContainer","visible","SplitTenderContinue","splitFundingOptions","selectedValues","incentiveValues","preferredId","allSplitValues","splitFundingOptionsObject","arrayToObject","React","useEffect","logSplitContinueLoaded","onClick","length","showSplitExperience","showSplitContinue","selectedSplitFundingInstruments","map","splitOptionsEligibleForBackup","isEligibleForPrimaryInstrument","selectedBackupFundingInstrument","find","isBackupPreferred","sort","fiA","fiB","logSelectInputProcess","isSplitReady","data-testid","RedirectToCredit","RedirectToCreditContainer","econsentVisible","previousEconsentVisible","usePrevious","userData","ECONSENT_QUERY","checkoutSessionData","CREDIT_SECOND_BUTTON_QUERY","creditPpcOffersGqlParams","context","planningBatch","errorPolicy","newUser","getCredit","isEconsentInitiallyShown","user","eConsent","isEconsentTriggeredRefresh","shouldMountComponent","key","isCreditSecondButton","isLoadedData","isRedirectWaitForEconsent","useState","waitingOnEconsent","setWaitingOnEconsent","FundingOptionFragment","CreditOfferFragment","ReturnFromCredit","REVIEW_PAGE_ALERT_QUERY","ReviewPageAlert","ReviewPageAlertContainer","featureData","needCreditCardContingency","useContingency","needCreditCardOrBankAccountContingency","expiredCreditCardContingency","skipFallback","isScaRegion","getIsScaRegion","isPPCEligible","isEligibleForCreditSecondButton","getIsUserDeviceTokenImplicitLogin","message","ReviewBeforeLogin","TrustedBeneficiaryOptIn","ScaContainer","useSca","exemptReason","reviewBeforeLoginEligible","reviewBeforeLoginProps","trustedBeneficiaryEligible","trustedBeneficiaryProps","logger","fpti","EXEMPTIONS","SCA_CONTINGENCY_PAYLOAD","action","areCookiesDisabled","TRUSTED_BENEFICIARY_FLOW","cookieDisabledTraffic","TRUSTED_BENEFICIARY_PAYLOAD","isWebView","navigator","userAgent","webview","REVIEW_BEFORE_LOGIN_FLOW","SELECT_FI_QUERY","fundingOptions","hasAttribution","some","fi","hasSplitBalance","getSplitBalancePlan","getPreferredFi","cal","info","landingPage","LANDING_PAGE","REVIEW","CHOICE","SelectFi","showCloseBtn","SelectShippingInterstitial","SelectShippingInterstitialContainer","shipToQuery","SepaMandateAcceptanceNeededFragment","SepaConfirmation","bankData","contingency","features","hasContingency","SHARED_INSTRUMENT_CONSENT_REQUIRED","hasFormData","ADD_CARD","isObject","SharedCardConsent","updateContingency","clear","shouldLoadFeature","ADD_CARD_PAYLOAD","ORIGINAL_USER_CHECK_PENDING","SharedCardWait","NEED_CREDIT_CARD","feature","from","SplitTenderBackup","SplitTenderErrors","featureSplitTenderGate","errorsOccurrenceCount","showSplitTenderError","messageId","userCanSplit","alert","SplitTenderGate","SPLIT_TENDER_GATE_QUERY","SplitTenderEntry","featureTabs","showSplitTender","useEligibilityContext","experienceLogged","setExperienceLogged","isGateOpen","logGateLoaded","logGateOpen","experience","logExperience","SelectShippingOptionInterstitial","Interstitial","SelectShippingOptionInterstitialContainer","SCA_CONTINGENCY_QUERY","PaymentContingenciesFragment","tbExperiment","threeDsExperienceVars","paymentContingencies","secureCustomerAuthenticationContext","cancelUrl","href","isTrustedBeneficiary","logo","merchantId","contextId","strongCustomerAuthenticationRequired","scaStatus","COMPLETE","SCA_CONTEXT_STATUS","IN_PROGRESS","prefix","loggit","stateName","process","transition","splitFiList","backupSelected","remaining","transitionName","toUpperCase","split_fi_list","JSON","stringify","split_backup_selected","event","payload","toLowerCase","toLocaleLowerCase","TRANSITION_PAYLOAD","to","_logger","amountEntry","entryType","entry_type","fi_id","gateLoaded","gateOpen","isOpen","requestSplitTenderOptions","responseSplitTenderOptions","option","isPreferred","availableAmount","mustUseFullAmount","canEditAmount","fundingInstrumentType","fundingInstrument","canSplitWith","triggerLoaded","selectInputLoaded","loaded","splitContinueLoaded","selectInputProcess","backup_logic","backupViewShown","backupViewCompleted","payWithViewShown","payWithChangeClicked","payWithChangeBackup","approvePaymentPrepare","isPrimaryInstrument","approvePaymentProcess","currencyCode","buyerCountry","shipping","currency_code","buyer_country","approvePaymentError","error","ERROR_PAYLOAD","code","ShippingAddressesFragment","ShippingCartAmountFragment","ShipTo","LOW_VALUE_TRANSACTION","BUYER_NOT_PRESENT","REFERENCE_TRANSACTION","TRUSTED_BENEFICIARY","init","success","close","prepare","render","optedIn","noThanks","Title","headingStyles","title","SPLIT_TENDER_CART_QUERY","SPLIT_TENDER_OPTIONS_QUERY","SplitFundingOptionsFragment","SPLIT_TENDER_APPROVE_MUTATION"],"mappings":"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","file":"js/experiences/Hermione~a0a49702.929106e2.js","sourcesContent":["import React from 'react';\nimport { uniqueStr } from '@checkout/react-components';\nimport LoadingContainer from '@/shared/components/LoadingContainer';\nimport Title from '../Title';\nimport styles from './styles.css';\n\nexport const Loading = () => {\n const clipPathId = uniqueStr();\n const gradientId = uniqueStr();\n\n return (\n \n \n <svg\n viewBox=\"0 0 300 75\"\n version=\"1.1\"\n preserveAspectRatio=\"xMinYMin meet\"\n className={styles.svg}\n >\n <rect\n clipPath={`url(#${clipPathId})`}\n x=\"0\"\n y=\"0\"\n width=\"300\"\n height=\"75\"\n style={{ fill: `url(#${gradientId})` }}\n />\n <defs>\n <clipPath id={clipPathId}>\n <rect x=\"0\" y=\"2\" rx=\"4\" ry=\"4\" width=\"200\" height=\"13\" />\n <rect x=\"0\" y=\"23\" rx=\"4\" ry=\"4\" width=\"300\" height=\"10\" />\n <rect x=\"0\" y=\"37\" rx=\"4\" ry=\"4\" width=\"250\" height=\"10\" />\n </clipPath>\n <linearGradient id={gradientId}>\n <stop offset=\"0.62503\" stopColor=\"#f3f3f3\">\n <animate attributeName=\"offset\" values=\"-2; 1\" dur=\"1.5s\" repeatCount=\"indefinite\" />\n </stop>\n <stop offset=\"1.12503\" stopColor=\"#ecebeb\">\n <animate\n attributeName=\"offset\"\n values=\"-1.5; 1.5\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"\n />\n </stop>\n <stop offset=\"1.62503\" stopColor=\"#f3f3f3\">\n <animate attributeName=\"offset\" values=\"-1; 2\" dur=\"1.5s\" repeatCount=\"indefinite\" />\n </stop>\n </linearGradient>\n </defs>\n </svg>\n </LoadingContainer>\n );\n};\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"title\":\"Title_title_19nMY\"};","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"loading\":\"Loading_loading_2h9FE\",\"svg\":\"Loading_svg_2Tace\"};","import React from 'react';\nimport { RewardsQuery } from '../query.gql';\nimport { getFundingInstrumentFromCheckoutSession, resetRewards } from '../utilities';\nimport { usePayContext } from '@/components/ContextProviders';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useFeature } from '@/components/Feature/hooks';\n\nconst LazyPayWithRewards = lazyComponent(() => import('./PayWithRewards'), {\n id: 'REWARDS_DISPLAY',\n loading: () => <div></div>,\n});\n\nexport const RewardsItem = (props) => {\n const REWARDS_DISPLAY = useFeature('REWARDS_DISPLAY');\n const { loading, data } = useQuery(RewardsQuery.query, {\n variables: RewardsQuery.variables,\n fetchPolicy: RewardsQuery.fetchPolicy,\n });\n const payContext = usePayContext();\n const { selectedFundingOptionId, useSplitBalance } = payContext.payState;\n const rewardSelected = REWARDS_DISPLAY.data?.rewardSelected;\n const fiId = props?.fiId;\n const { rewards } = getFundingInstrumentFromCheckoutSession([{ data }], fiId) || {};\n const matchedRewards =\n rewards && rewardSelected === rewards.id && selectedFundingOptionId !== rewards.relatedCardId;\n const hasIssuer = rewards && rewards.issuer && !!rewards.issuer.name;\n\n // reset rewards to initial default state if split balance or current reward has been selected\n if ((useSplitBalance && rewardSelected) || matchedRewards) {\n resetRewards();\n }\n\n if (\n !(\n rewards &&\n hasIssuer &&\n !useSplitBalance &&\n REWARDS_DISPLAY.experiment.resolvedTreatment !== 'CONTROL'\n )\n ) {\n return null;\n }\n\n return (\n <LazyPayWithRewards\n isLoading={loading}\n REWARDS_DISPLAY={REWARDS_DISPLAY}\n {...props}\n allQueryData={[{ data }]}\n />\n );\n};\n","import gql from 'graphql-tag';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { RewardsFragment } from '@paypalcorp/c3-graphql-fragments';\n\nexport { RewardsFragment } from '@paypalcorp/c3-graphql-fragments';\n\nexport const FI_REWARDS_QUERY = gql`\n ${RewardsFragment}\n query GetFIRewards($token: String!) {\n checkoutSession(token: $token) {\n cart {\n amounts {\n total {\n currencyValue\n currencyCode\n }\n }\n }\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n id\n fundingInstrument {\n id\n lastDigits\n issuerProductDescription\n ...RewardsFragment\n }\n }\n }\n }\n`;\n\nexport const RewardsQuery = {\n query: FI_REWARDS_QUERY,\n variables: { token: getToken() },\n fetchPolicy: 'cache-only',\n};\n","import Feature from '@/components/Feature';\nimport { RewardsQuery } from '../query.gql';\n\n/**\n * Component interstitial triggered when a user wants to see info about the\n * reward or change amount to put towards their reward (if allowed).\n */\nexport const RewardsInterstitial = Feature({\n id: 'REWARDS_INTERSTITIAL',\n subscribeTo: ['REWARDS_DISPLAY'],\n interstitial: true,\n interstitialOptions: {\n type: 'tall',\n },\n queries: [RewardsQuery],\n})(() => import('./RewardsInterstitial'));\n","import gql from 'graphql-tag';\n\nexport const REMITTANCE_DISCLOSURE_QUERY = gql`\n query RemittanceDisclosureQuery($token: String!) {\n checkoutSession(token: $token) {\n cart {\n total {\n currencyFormatSymbolISOCurrency\n }\n }\n merchant {\n name\n }\n flags {\n showRemittanceDisclosure\n }\n }\n }\n`;\n","import { usePayContext } from '@/components/ContextProviders';\nimport { useQuery } from '@apollo/react-hooks';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport getContent from '@/lib/content';\nimport { REMITTANCE_DISCLOSURE_QUERY } from './query.gql';\n\nconst getMerchantName = (checkoutSession) => {\n return checkoutSession?.merchant?.name;\n};\n\nconst getAmountInPayerCurrency = (fundingPlan) => {\n return fundingPlan?.currencyConversion?.convertedAmount?.currencyFormatSymbolISOCurrency;\n};\n\nconst getAmountInInvCurrency = (checkoutSession) => {\n return checkoutSession?.cart?.total?.currencyFormatSymbolISOCurrency;\n};\n\nconst getShowRemittanceDisclosure = (checkoutSession) => {\n return checkoutSession?.flags?.showRemittanceDisclosure;\n};\n\nexport function useRemittanceDisclosure() {\n const { selectedFundingOption } = usePayContext();\n const { data } = useQuery(REMITTANCE_DISCLOSURE_QUERY, {\n variables: {\n token: getToken(),\n },\n fetchPolicy: 'cache-only',\n });\n\n const checkoutSession = data?.checkoutSession;\n const fundingPlan = selectedFundingOption?.allPlans?.[0];\n\n const merchantName = getMerchantName(checkoutSession);\n const amountInPayerCurrency = getAmountInPayerCurrency(fundingPlan);\n const amountInInvCurrency = getAmountInInvCurrency(checkoutSession);\n const showRemittanceDisclosure = getShowRemittanceDisclosure(checkoutSession);\n const remittanceConversionInfo = {\n amountInPayerCurrency,\n merchantName,\n amountInInvCurrency,\n };\n const remittanceNonConversionInfo = {\n merchantName,\n amount: amountInInvCurrency\n };\n const remittanceContent = amountInPayerCurrency ? getContent(`invoicing.regulationEMsgWithCurrConv`, remittanceConversionInfo) : getContent('invoicing.regulationEMsg', remittanceNonConversionInfo)\n\n return {\n showRemittanceDisclosure,\n remittanceContent,\n amountInPayerCurrency\n };\n}\n","import Feature from '@/components/Feature';\nimport gql from 'graphql-tag';\nimport { CHECKOUT_BUTTON_STATES, updateFeature } from '@paypalcorp/c3-util-store';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { InterstitialLoading } from '@/shared/components/Loading';\n\nconst FUNDING_OPTIONS_QUERY = gql`\n query GetFundingInstruments($token: String!) {\n checkoutSession(token: $token) {\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n id\n }\n }\n }\n`;\n/**\n * 3DS (2.0) interstitial confirmation page\n */\nexport const ThreeDSTwoConfirmation = Feature({\n id: 'THREE_DS_TWO_CONFIRMATION',\n interstitial: true,\n interstitialOptions: {\n onBeforeCloseFn: () => {\n // Reset `CHECKOUT_BUTTON` to `INITIAL` is needed so any future related payment contingencies\n // can be captured and react\n updateFeature('CHECKOUT_BUTTON', {\n data: {\n status: CHECKOUT_BUTTON_STATES.INITIAL,\n inContingencyFlow: false,\n },\n });\n },\n },\n queries: [\n {\n query: FUNDING_OPTIONS_QUERY,\n variables: { token: getToken() },\n fetchPolicy: 'cache-only',\n },\n ],\n LoadingComponent: InterstitialLoading,\n contingencies: ['FI_CONFIRMATION_CONTINGENCY'],\n subscribeTo: ['CHECKOUT_BUTTON'],\n})(() => import('./ThreeDS'));\n","import get from 'dlv';\nimport { isDestination } from '@/lib/utils';\nimport { memoize } from '@paypalcorp/c3-util-lang';\nimport { params } from '@paypalcorp/c3-util-browser';\nimport getContent from '@/lib/content';\nimport Feature from '@/components/Feature';\nimport { redirectToRiskyLogin } from '@/lib/redirects';\nimport { getIsRememberedAuthState } from '@/authStates';\n// Eligibility criteria:\n// 1. `addShippingLink` is enabled + current `ShipTo` has a selected shipping address\n// 2. An address contingency is present\n// shouldLoad for either of the conditions\nconst shouldLoadFeatureComponent = memoize((enabled, selectedAddressId, contingencies) => {\n const isEnabledWithAddress = Boolean(enabled && selectedAddressId);\n const canHandleAddressContingencies =\n enabled && Boolean(contingencies.NEED_SHIPPING_ADDRESS || contingencies.NEED_PRIMARY_ADDRESS);\n return isEnabledWithAddress || canHandleAddressContingencies;\n});\n\n// If last attempted destination value exits and matches to `addShippingOneTouch`, we'll\n// need to redirect current user to `addShipping` interstitial. This is needed to support\n// one touch users after successfully re-login via riskyLogin.\nconst shouldAutoDisplayComponent = memoize(\n (\n contingencies,\n featureId,\n isRemembered,\n handlePostRiskyLogin = false,\n hasShippingParam = false\n ) => {\n const needShippingAddressContingency = Boolean(\n contingencies.NEED_SHIPPING_ADDRESS || contingencies.NEED_PRIMARY_ADDRESS\n );\n\n // We should NOT handle those contingencies when current logged in user has a `REMEMBERED` auth state\n const handleContingency = needShippingAddressContingency;\n\n // Handle riskyLogin redirection for `REMEMBERED` user\n // Example, for `NEED_SHIPPING_ADDRESS` contingency + one touched (or OTP, UDT) use case, instead\n // of showing `ADD_SHIPPING` interstitial, we should redirect users to riskyLogin\n if (needShippingAddressContingency && isRemembered) {\n redirectToRiskyLogin({\n reason: 'ADD_SHIPPING',\n destination: 'ADD_SHIPPING',\n extraParams: {\n lite: 1,\n fromLite: 1,\n ulClientKey: 'loginAddAddress',\n ulClientRedirect: 'insufficientPermission',\n },\n });\n return false;\n }\n\n // Handle post-riskyLogin auto showing `ADD_SHIPPING` interstitial\n // NOTE: we need to explicit check `isRemembered` state because users can hit back button from\n // riskyLogin page, in that use case, users will still be considered as a `REMEMBERED` user, so\n // we'll still need to redirect users to riskyLogin\n const handleDestination = handlePostRiskyLogin && !isRemembered;\n return handleContingency || handleDestination || hasShippingParam;\n }\n);\n\n/**\n * AddShipping interstitial Feature component\n */\nconst AddShipping = Feature({\n id: 'ADD_SHIPPING',\n interstitial: true,\n interstitialOptions: {\n // don't display close button when it is a contingency flow\n showCloseBtnFunc: ({ contingencies }) => {\n const isContingencyFlow =\n contingencies.NEED_SHIPPING_ADDRESS || contingencies.NEED_PRIMARY_ADDRESS;\n return !isContingencyFlow;\n },\n headerTitleFunc: ({ contingencies }) => {\n return contingencies.NEED_PRIMARY_ADDRESS\n ? getContent('addShipping.addNewPrimaryAddress')\n : getContent('addShipping.addNewShippingAddress');\n },\n type: 'tall',\n },\n shouldLoadFeatureComponent: (props) => {\n const { enabled } = get(props, 'features.ADD_SHIPPING_LINK', {});\n const { userSelectedAddressId } = get(props, 'features.SHIP_TO.data', {});\n const contingencies = get(props, 'contingencies', {});\n return shouldLoadFeatureComponent(enabled, userSelectedAddressId, contingencies);\n },\n shouldAutoDisplayComponent: (props) => {\n const contingencies = get(props, 'contingencies', {});\n const { id: featureId } = get(props, 'feature', {});\n const isRemembered = getIsRememberedAuthState();\n const handlePostRiskyLogin = isDestination(featureId);\n const hasShippingParam = Boolean(params().addShipping);\n\n return shouldAutoDisplayComponent(\n contingencies,\n featureId,\n isRemembered,\n handlePostRiskyLogin,\n hasShippingParam\n );\n },\n subscribeTo: ['ADD_NORMALIZED_ADDRESS', 'ADD_SHIPPING_LINK', 'SHIP_TO'],\n contingencies: ['NEED_SHIPPING_ADDRESS', 'NEED_PRIMARY_ADDRESS'],\n})(() => import('../AddShippingInterstitial'));\n\nexport default AddShipping;\n","import React from 'react';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { useFeature } from '../Feature/hooks';\nimport { useRemittanceDisclosure } from './hooks';\n\nconst RemittanceDisclosure = lazyComponent(() => import('./RemittanceDisclosure'), {\n id: 'REMITTANCE_DISCLOSURE',\n});\n\nexport default function RemittanceDisclosureContainer() {\n const { visible, enabled } = useFeature('REMITTANCE_DISCLOSURE');\n const { showRemittanceDisclosure } = useRemittanceDisclosure();\n\n // checks if planning shows disclosure and if there is a conversion taking place\n if ( enabled && visible && showRemittanceDisclosure) {\n return <RemittanceDisclosure />\n }\n\n return null;\n}\n","import React from 'react';\nimport getContent from '@/lib/content';\nimport { Button } from '@paypalcorp/pp-react-buttons';\nimport { updateFeature } from '@paypalcorp/c3-util-store';\nimport { arrayToObject } from '@/shared/utilities/arrayToObject';\nimport { useFeature } from '@/components/Feature/hooks';\nimport {\n selectInputProcess as logSelectInputProcess,\n splitContinueLoaded as logSplitContinueLoaded,\n} from '../logging';\n\nconst SplitTenderContinue = () => {\n const {\n data: { splitFundingOptions = [], selectedValues = [], incentiveValues = [] } = {},\n } = useFeature('SPLIT_TENDER_GATE');\n const { data: { preferredId } = {} } = useFeature('PAY_WITH');\n\n const allSplitValues = [...selectedValues, ...incentiveValues];\n\n const splitFundingOptionsObject = arrayToObject(splitFundingOptions, ({ id }) => id);\n\n const onSubmit = () => {\n // If user enter full amount only in one FI, then we're going to send to the PAY WITH screen\n if (selectedValues.length < 2) {\n updateFeature('SPLIT_TENDER_GATE', {\n data: { showSplitExperience: false, showSplitContinue: false },\n });\n return;\n }\n\n const selectedSplitFundingInstruments = allSplitValues.map(({ id, amount }) => ({\n value: amount,\n ...splitFundingOptionsObject[id],\n }));\n\n // Filter out any FI which is ineligible to be a backup\n const splitOptionsEligibleForBackup = allSplitValues.filter(\n ({ id }) => splitFundingOptionsObject[id]?.isEligibleForPrimaryInstrument\n );\n\n // Find if there is already a preferred FI selected by the user.\n // Because the preferred fi is not made available to us from the splitFundingOptions,\n // we get this info from the paywith component.\n let selectedBackupFundingInstrument = (\n splitOptionsEligibleForBackup.find(({ id }) => preferredId && id === preferredId) || {}\n ).id;\n\n const isBackupPreferred = !!selectedBackupFundingInstrument;\n // If there is no preferred FI on file, then pick the FI which has the largest amount to be the backup\n if (!selectedBackupFundingInstrument) {\n selectedBackupFundingInstrument = splitOptionsEligibleForBackup.sort(\n (fiA, fiB) => fiB?.amount - fiA?.amount\n )[0]?.id;\n }\n\n logSelectInputProcess(\n selectedSplitFundingInstruments,\n selectedBackupFundingInstrument,\n isBackupPreferred\n );\n\n updateFeature('SPLIT_TENDER_GATE', {\n data: {\n selectedSplitFundingInstruments,\n selectedBackupFundingInstrument,\n isSplitReady: true,\n },\n });\n };\n\n React.useEffect(() => {\n logSplitContinueLoaded();\n }, []);\n\n return (\n <Button onClick={onSubmit} data-testid={'split-tender-continue'}>\n {getContent('buttons.continue')}\n </Button>\n );\n};\n\nexport default SplitTenderContinue;\n","import React, { useState } from 'react';\nimport { usePrevious } from 'react-use';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useFeature } from '@/components/Feature/hooks';\nimport { getToken, getCredit } from '@paypalcorp/c3-shared-globals';\nimport { params } from '@/lib/utils';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { ECONSENT_QUERY } from '@/components/Econsent';\nimport { creditPpcOffersGqlParams } from '@/lib/credit';\nimport { CREDIT_SECOND_BUTTON_QUERY } from './query.gql.js';\n\nconst RedirectToCredit = lazyComponent(() => import('./RedirectToCredit'), {\n id: 'REDIRECT_TO_CREDIT',\n loading: () => null,\n});\n\nconst RedirectToCreditContainer = () => {\n const { visible: econsentVisible } = useFeature('ECONSENT');\n const previousEconsentVisible = usePrevious(econsentVisible);\n const { data: userData } = useQuery(ECONSENT_QUERY);\n const { data: checkoutSessionData } = useQuery(CREDIT_SECOND_BUTTON_QUERY, {\n variables: { token: getToken(), ...creditPpcOffersGqlParams() },\n context: { planningBatch: true },\n errorPolicy: 'ignore',\n });\n const newUser = getCredit().newUser;\n\n // assume that econsent could be shown until user data is ready\n const isEconsentInitiallyShown = userData?.user?.eConsent ?? true;\n const isEconsentTriggeredRefresh = econsentVisible === false && previousEconsentVisible === true;\n const shouldMountComponent = !params().key && getCredit().isCreditSecondButton;\n const isLoadedData = Boolean(checkoutSessionData && userData);\n const isRedirectWaitForEconsent = isEconsentInitiallyShown && !isEconsentTriggeredRefresh;\n const [waitingOnEconsent, setWaitingOnEconsent] = useState(true);\n\n // dont redirect to CAPE before eConsent is accepted\n if (waitingOnEconsent && (newUser || !isRedirectWaitForEconsent)) {\n setWaitingOnEconsent(false);\n }\n\n if ((!newUser && !isLoadedData) || !shouldMountComponent) {\n return null;\n }\n\n const props = {\n ...checkoutSessionData,\n waitingOnEconsent,\n };\n\n return <RedirectToCredit {...props} />;\n};\n\nexport default RedirectToCreditContainer;\n","import gql from 'graphql-tag';\nimport { FundingOptionFragment } from '@paypalcorp/c3-graphql-fragments';\nimport { CreditOfferFragment } from '@/components/CreditOffer';\n\nexport const CREDIT_SECOND_BUTTON_QUERY = gql`\n ${FundingOptionFragment}\n ${CreditOfferFragment}\n query RedirectToCreditQuery($areCookiesDisabled: Boolean, $isIframe: Boolean, $token: String!) {\n checkoutSession(token: $token) {\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n ...FundingOptionFragment\n }\n creditPPCOffers(areCookiesDisabled: $areCookiesDisabled, isIframe: $isIframe) {\n ...CreditOfferFragment\n }\n flags {\n hasPPCreditInstallments\n showPPCreditOffer\n isEligibleForCreditSecondButton\n }\n }\n }\n`;\n","import Feature from '@/components/Feature';\nimport { isDestination, params } from '@/lib/utils';\n\n/**\n * Handles redirect from PPC\n */\nconst ReturnFromCredit = Feature({\n id: 'RETURN_FROM_CREDIT',\n shouldLoadFeatureComponent: () => Boolean(params().key),\n})(() => import('./ReturnFromCredit'));\n\nexport default ReturnFromCredit;\n","import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useContingency, useFeature } from '@/components/Feature/hooks';\nimport { getIsUserDeviceTokenImplicitLogin } from '@/authStates';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport gql from 'graphql-tag';\nimport { getToken, getCredit, getIsScaRegion } from '@paypalcorp/c3-shared-globals';\n\nexport const REVIEW_PAGE_ALERT_QUERY = gql`\n query ReviewPageAlertQuery($token: String!) {\n checkoutSession(token: $token) {\n flags {\n isEligibleForCreditSecondButton\n }\n }\n }\n`;\n\nconst ReviewPageAlert = lazyComponent(() => import('./ReviewPageAlert'), {\n id: 'REVIEW_PAGE_ALERT',\n loading: () => <></>,\n});\n\nconst ReviewPageAlertContainer = () => {\n const { visible, data: featureData } = useFeature('REVIEW_PAGE_ALERT');\n\n const needCreditCardContingency = useContingency('NEED_CREDIT_CARD');\n const needCreditCardOrBankAccountContingency = useContingency('NEED_CREDIT_CARD_OR_BANK_ACCOUNT');\n const expiredCreditCardContingency = useContingency('EXPIRED_CREDIT_CARD');\n\n const { loading, data } = useQuery(REVIEW_PAGE_ALERT_QUERY, {\n variables: { token: getToken() },\n context: { skipFallback: true },\n fetchPolicy: process.env.NODE_ENV === 'test' ? 'no-cache' : 'cache-only',\n });\n\n if (loading || !visible) {\n return null;\n }\n\n const checkoutSession = data?.checkoutSession;\n const isScaRegion = getIsScaRegion();\n const isCreditSecondButton = getCredit().isCreditSecondButton;\n const isPPCEligible = checkoutSession?.flags?.isEligibleForCreditSecondButton ?? true;\n const newUser = getCredit().newUser;\n\n const shouldShowComponent =\n needCreditCardContingency ||\n needCreditCardOrBankAccountContingency ||\n expiredCreditCardContingency ||\n (getIsUserDeviceTokenImplicitLogin() && !isScaRegion) ||\n (isCreditSecondButton && !newUser && !isPPCEligible) ||\n featureData?.message;\n\n if (shouldShowComponent) {\n const props = {\n contingencies: {\n needCreditCardContingency,\n needCreditCardOrBankAccountContingency,\n expiredCreditCardContingency,\n },\n isCreditSecondButton,\n isPPCEligible,\n isScaRegion,\n };\n return <ReviewPageAlert {...props} />;\n } else {\n return null;\n }\n};\n\nexport default ReviewPageAlertContainer;\n","import React from 'react';\nimport { areCookiesDisabled } from '@/lib/cookie';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport {\n logger,\n TRUSTED_BENEFICIARY_PAYLOAD,\n SCA_CONTINGENCY_PAYLOAD,\n} from '@paypalcorp/c3-util-logger';\nimport { isWebView } from '@paypalcorp/c3-util-browser';\nimport { EXEMPTIONS, TRUSTED_BENEFICIARY_FLOW, REVIEW_BEFORE_LOGIN_FLOW } from './constants';\nimport { useSca } from './hooks';\n\n\nconst ReviewBeforeLogin = lazyComponent(() => import('./ReviewBeforeLogin'), {\n id: 'REVIEW_BEFORE_LOGIN',\n loading: () => null,\n});\n\nconst TrustedBeneficiaryOptIn = lazyComponent(() => import('./TrustedBeneficiaryOptIn'), {\n id: 'TRUSTED_BENEFICIARY_OPT_IN',\n loading: () => null,\n});\n\nfunction ScaContainer() {\n const {\n exemptReason,\n isLoading,\n reviewBeforeLoginEligible,\n reviewBeforeLoginProps,\n trustedBeneficiaryEligible,\n trustedBeneficiaryProps,\n } = useSca();\n\n if (isLoading) {\n return null;\n }\n\n if (exemptReason) {\n logger.fpti(\n EXEMPTIONS[exemptReason],\n SCA_CONTINGENCY_PAYLOAD({ action: EXEMPTIONS[exemptReason] })\n );\n return null;\n }\n\n if (trustedBeneficiaryEligible) {\n if (areCookiesDisabled()) {\n logger.fpti(\n TRUSTED_BENEFICIARY_FLOW.cookieDisabledTraffic,\n TRUSTED_BENEFICIARY_PAYLOAD({ action: TRUSTED_BENEFICIARY_FLOW.cookieDisabledTraffic })\n );\n return null;\n }\n\n if (isWebView(navigator?.userAgent)) {\n logger.fpti(\n TRUSTED_BENEFICIARY_FLOW.webview,\n TRUSTED_BENEFICIARY_PAYLOAD({ action: TRUSTED_BENEFICIARY_FLOW.webview })\n );\n return null;\n }\n return <TrustedBeneficiaryOptIn {...trustedBeneficiaryProps} />;\n }\n if (reviewBeforeLoginEligible) {\n if (areCookiesDisabled()) {\n logger.fpti(\n REVIEW_BEFORE_LOGIN_FLOW.cookieDisabledTraffic,\n SCA_CONTINGENCY_PAYLOAD({ action: REVIEW_BEFORE_LOGIN_FLOW.cookieDisabledTraffic })\n );\n return null;\n }\n\n if (isWebView(navigator?.userAgent)) {\n logger.fpti(\n REVIEW_BEFORE_LOGIN_FLOW.webview,\n SCA_CONTINGENCY_PAYLOAD({ action: REVIEW_BEFORE_LOGIN_FLOW.webview })\n );\n return null;\n }\n return <ReviewBeforeLogin {...reviewBeforeLoginProps} />;\n }\n return null;\n}\n\nexport default ScaContainer;\n","import Feature from '@/components/Feature';\nimport { FundingOptionFragment } from '@paypalcorp/c3-graphql-fragments';\nimport getContent from '@/lib/content';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport gql from 'graphql-tag';\nimport { logger } from '@paypalcorp/c3-util-logger';\nimport { memoize } from '@paypalcorp/c3-util-lang';\nimport get from 'dlv';\nimport { getPreferredFi, getSplitBalancePlan, updateFeature } from '@paypalcorp/c3-util-store';\nimport { LANDING_PAGE } from '@/lib/landingPage';\n\nexport const SELECT_FI_QUERY = gql`\n ${FundingOptionFragment}\n query GetFundingInstruments($token: String!) {\n checkoutSession(token: $token) {\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n ...FundingOptionFragment\n }\n }\n }\n`;\n\nconst shouldLoadFeatureComponent = memoize((fundingOptions) => {\n const hasAttribution = fundingOptions.some((fi) => get(fi, 'fundingInstrument.attribution'));\n const hasSplitBalance = fundingOptions.some((fi) => getSplitBalancePlan(fi));\n\n return fundingOptions.length >= 1 && !hasAttribution && !hasSplitBalance;\n});\n\nconst shouldAutoDisplayComponent = memoize((fundingOptions) => {\n let preferredFi = getPreferredFi(fundingOptions);\n\n if (preferredFi || fundingOptions.length === 1) {\n logger.cal.info('SELECT_FI_LANDING_RYI');\n updateFeature('SELECT_FI', { data: { landingPage: LANDING_PAGE.REVIEW } });\n return false;\n }\n\n logger.cal.info('SELECT_FI_LANDING_CHOICE');\n\n updateFeature('SELECT_FI', { data: { landingPage: LANDING_PAGE.CHOICE } });\n\n return true;\n});\n\n/**\n * Component responsible for displaying the funding instruments in the Choice feature (SelectFi).\n */\nconst SelectFi = Feature({\n id: 'SELECT_FI',\n interstitial: true,\n interstitialOptions: {\n type: 'tall',\n showCloseBtn: true,\n headerTitleFunc: () => getContent('choice.title'),\n },\n queries: [\n {\n query: SELECT_FI_QUERY,\n variables: { token: getToken() },\n fetchPolicy: 'cache-only',\n },\n ],\n shouldAutoDisplayComponent: (props) => {\n const fundingOptions = get(props, 'allQueryData.0.data.checkoutSession.fundingOptions', []);\n return shouldAutoDisplayComponent(fundingOptions);\n },\n shouldLoadFeatureComponent: (props) => {\n const fundingOptions = get(props, 'allQueryData.0.data.checkoutSession.fundingOptions', []);\n return shouldLoadFeatureComponent(fundingOptions);\n },\n})(() => import('./SelectFi'));\n\nexport default SelectFi;\n","import React from 'react';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { shipToQuery } from '@/components/ShipTo';\nimport { useQuery } from '@apollo/react-hooks';\n\nconst SelectShippingInterstitial = lazyComponent(() => import('./SelectShippingInterstitial'), {\n id: 'SELECT_SHIPPING_INTERSTITIAL',\n loading: () => <></>,\n});\n\nfunction SelectShippingInterstitialContainer() {\n const { loading, data } = useQuery(shipToQuery, {\n context: { planningBatch: true },\n variables: { token: getToken() },\n });\n return <SelectShippingInterstitial checkoutSession={data?.checkoutSession} isLoading={loading} />;\n}\n\nexport default SelectShippingInterstitialContainer;\n","import gql from 'graphql-tag';\nimport get from 'dlv';\n\nimport Feature from '@/components/Feature';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport getContent from '@/lib/content';\nimport { updateFeature } from '@paypalcorp/c3-util-store';\nimport { CHECKOUT_BUTTON_STATES } from '@/components/CheckoutButton/constants';\nimport { InterstitialLoading } from '@/shared/components/Loading';\nimport { SepaMandateAcceptanceNeededFragment } from '@paypalcorp/c3-graphql-fragments';\n\n// checkoutSession api call\nconst query = gql`\n ${SepaMandateAcceptanceNeededFragment}\n query SEPA_CONFIRMATION_QUERY($token: String!) {\n checkoutSession(token: $token) {\n paymentContingencies {\n sepaMandateAcceptanceNeeded {\n ...SepaMandateAcceptanceNeededFragment\n }\n }\n }\n }\n`;\n\nconst shouldLoadFeatureComponent = (props) => {\n const contingency = get(\n props,\n 'allQueryData.0.data.checkoutSession.paymentContingencies.sepaMandateAcceptanceNeeded'\n );\n const bankData = get(props, 'feature.data.bankData');\n\n return Boolean(bankData) || Boolean(contingency);\n};\n\n/**\n * @description `SepaConfirmation` component resolves the SepaMandateAcceptanceNeeded payment contingency through the interstitial page.\n *\n * @summary On clicking the continue button in the review page, if the selected FI needs to resolve the\n * contingency then sepa interstitial will get triggered. Once the user clicks 'agree & continue' the contingency\n * will be cleared.\n *\n * @todo Currently the payWith feature will query the SepaMandateAcceptanceNeededFragment. This feature will use the cache-only\n * fetch policy to get the data from the cache instead of making its own query to the server. In the future it would be good to\n * remove this query from payWith, so that payWith only has to query the 'id' to check for a SEPA contingency.\n *\n */\nconst SepaConfirmation = Feature({\n id: 'SEPA_CONFIRMATION',\n interstitial: true,\n interstitialOptions: {\n onBeforeCloseFn: () => {\n updateFeature('SEPA_CONFIRMATION', { data: { bankData: null } });\n updateFeature('CHECKOUT_BUTTON', {\n data: {\n status: CHECKOUT_BUTTON_STATES.INITIAL,\n inContingencyFlow: false,\n },\n });\n },\n headerTitleFunc: () => getContent('sepa.title'),\n },\n LoadingComponent: InterstitialLoading,\n shouldLoadFeatureComponent,\n queries: [{ query: query, variables: { token: getToken() }, fetchPolicy: 'cache-only' }],\n})(() => import('./SepaInterstitial'));\n\nexport default SepaConfirmation;\n","import Feature from '@/components/Feature';\nimport getContent from '@/lib/content';\nimport { InterstitialLoading } from '@/shared/components/Loading';\nimport { logger } from '@paypalcorp/c3-util-logger';\nimport { ADD_CARD_PAYLOAD } from '@paypalcorp/c3-util-logger';\nimport { isObject } from '@paypalcorp/c3-util-lang';\nimport { updateContingency } from '@paypalcorp/c3-util-store';\n\nconst shouldAutoDisplayComponent = ({ contingencies, features }) => {\n const hasContingency = contingencies && contingencies.SHARED_INSTRUMENT_CONSENT_REQUIRED;\n const hasFormData = features.ADD_CARD.data && isObject(features.ADD_CARD.data);\n\n return hasContingency && hasFormData;\n};\n\nconst shouldLoadFeatureComponent = ({ contingencies, features }) => {\n const shouldLoadFeature = shouldAutoDisplayComponent({ contingencies, features });\n\n if (shouldLoadFeature) {\n logger.fpti(\n 'prepareSaveSharedCardConsent',\n ADD_CARD_PAYLOAD({ action: 'prepareSaveSharedCardConsent' })\n );\n }\n\n // this `SharedCardConsent` test is so flaky...not exactly sure why, but it's annoying 🤦‍♂️\n // so we should always load this feature when running tests\n return process.env.NODE_ENV === 'test' || shouldLoadFeature;\n};\n\n// This feature will get loaded when 'SHARED_INSTRUMENT_CONSENT_REQUIRED' contingency is thrown from FI\n// This will display a shared card consent page to send consent of the logged in user to share his details to the card owner\nconst SharedCardConsent = Feature({\n id: 'SHARED_CARD_CONSENT_PAGE',\n interstitial: true,\n interstitialOptions: {\n onBeforeCloseFn: () => {\n updateContingency('SHARED_INSTRUMENT_CONSENT_REQUIRED', { clear: true });\n },\n headerTitleFunc: () => getContent('sharedCard.consentPageHeader'),\n },\n LoadingComponent: InterstitialLoading,\n subscribeTo: ['ADD_CARD', 'SPLIT_TENDER_GATE'],\n shouldLoadFeatureComponent,\n shouldAutoDisplayComponent,\n contingencies: ['NEED_CREDIT_CARD', 'SHARED_INSTRUMENT_CONSENT_REQUIRED'],\n})(() => import('./SharedCardConsent'));\n\nexport default SharedCardConsent;\n","import Feature from '@/components/Feature';\nimport getContent from '@/lib/content';\nimport { InterstitialLoading } from '@/shared/components/Loading';\nimport { logger } from '@paypalcorp/c3-util-logger';\nimport { ADD_CARD_PAYLOAD } from '@paypalcorp/c3-util-logger';\nimport { updateContingency } from '@paypalcorp/c3-util-store';\n\nconst shouldAutoDisplayComponent = ({ contingencies }) => {\n return contingencies && contingencies.ORIGINAL_USER_CHECK_PENDING;\n};\n\nconst shouldLoadFeatureComponent = ({ contingencies, feature }) => {\n const shouldLoadFeature = shouldAutoDisplayComponent({ contingencies });\n const from = feature.data && feature.data.from;\n\n // instrumentation to track only if user is coming from add card and has skipped consent page\n if (shouldLoadFeature && from !== 'shared_card_consent') {\n logger.fpti(\n 'prepareWaitAfterSharedCardConsent',\n ADD_CARD_PAYLOAD({ action: 'prepareWaitAfterSharedCardConsent' })\n );\n }\n\n return shouldLoadFeature;\n};\n\nconst getHeaderTitle = ({ contingencies }) => {\n if (contingencies.NEED_CREDIT_CARD) {\n return getContent('sharedCard.waitPageHeaderNoFI');\n }\n return getContent('sharedCard.waitPageHeader');\n};\n\n// This feature will get loaded when 'ORIGINAL_USER_CHECK_PENDING' contingency is thrown from FI\n// This will display a shared card wait page giving an option to the logged in user to wait until the card owner gives a OK to share card\n\nconst SharedCardWait = Feature({\n id: 'SHARED_CARD_CONSENT_WAIT_PAGE',\n interstitial: true,\n interstitialOptions: {\n onBeforeCloseFn: () => {\n updateContingency('ORIGINAL_USER_CHECK_PENDING', { clear: true });\n },\n headerTitleFunc: getHeaderTitle,\n },\n LoadingComponent: InterstitialLoading,\n shouldLoadFeatureComponent,\n shouldAutoDisplayComponent,\n contingencies: ['NEED_CREDIT_CARD', 'ORIGINAL_USER_CHECK_PENDING'],\n})(() => import('./SharedCardWait'));\n\nexport default SharedCardWait;\n","import Feature from '@/components/Feature';\nimport getContent from '@/lib/content';\n\nconst SplitTenderBackup = Feature({\n id: 'SPLIT_TENDER_BACKUP',\n interstitial: true,\n interstitialOptions: {\n type: 'tall',\n showCloseBtn: true,\n headerTitleFunc: () => getContent('splitTender.backup.title'),\n },\n subscribeTo: ['SPLIT_TENDER_GATE'],\n})(() => import('./SplitTenderBackup'));\n\nexport default SplitTenderBackup;\n","import React from 'react';\nimport { Alert } from '@paypalcorp/pp-react';\nimport { updateFeature } from '@paypalcorp/c3-util-store';\nimport { useFeature } from '@/components/Feature/hooks';\nimport getContent from '@/lib/content';\nimport styles from './styles.css';\n\nconst SplitTenderErrors = () => {\n const featureSplitTenderGate = useFeature('SPLIT_TENDER_GATE');\n const { errorsOccurrenceCount = 0, showSplitTenderError = false } =\n featureSplitTenderGate?.data || {};\n\n const messageId =\n errorsOccurrenceCount > 2\n ? 'splitTender.toast.stillPayUsualWay'\n : 'splitTender.toast.pleaseRetryAgain';\n\n // The general `temporary` rule is that we're going to allow users to try submitting their order three times per session,\n // if for some reason all of the attempts resulted with an error, then we're going to disable the Split experience for now.\n // Note that this is a temporary solution since we do not know what all of the error types that PAPS returns are.\n if (errorsOccurrenceCount > 2) {\n updateFeature('SPLIT_TENDER_GATE', {\n visible: false,\n data: {\n splitFundingOptions: [],\n selectedSplitFundingInstruments: [],\n isSplitReady: false,\n userCanSplit: false,\n showSplitExperience: false,\n },\n });\n }\n\n return (\n showSplitTenderError && (\n <div data-testid=\"split-tender-warning-alert\" className={styles.alert}>\n <Alert type=\"warning\">{getContent(messageId)}</Alert>\n </div>\n )\n );\n};\n\nexport default SplitTenderErrors;\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"ppui-spacing-xl-2\":\"1.5rem\",\"ppuiSpacingXl2\":\"1.5rem\",\"ppui-grid-media-query-sm\":\"36rem\",\"ppuiGridMediaQuerySm\":\"36rem\",\"alert\":\"SplitTenderErrors_alert_1C_77\"};","import React from 'react';\nimport Feature from '@/components/Feature';\nimport { SPLIT_TENDER_GATE_QUERY } from '../query.gql';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport {\n experience as logExperience,\n gateLoaded as logGateLoaded,\n gateOpen as logGateOpen,\n} from '@/components/SplitTender/logging';\nimport { useFeature } from '@/components/Feature/hooks';\nimport { useState } from 'react';\nimport { useEligibilityContext } from '@/components/ContextProviders';\n\nconst FEATURE_NAME = 'SPLIT_TENDER_GATE';\n\n/**\n * Component responsible for being the gate to all split tender functionalities.\n */\nconst SplitTenderGate = Feature({\n id: FEATURE_NAME,\n queries: [\n {\n query: SPLIT_TENDER_GATE_QUERY,\n variables: { token: getToken() },\n fetchPolicy: 'cache-only',\n },\n ],\n})(() => import('./SplitTenderGate'));\n\n// This is to take advantage of using the mount and logging only once effectively\nexport default function SplitTenderEntry() {\n const featureSplitTenderGate = useFeature('SPLIT_TENDER_GATE');\n const featureTabs = useFeature('TABBED_PAYMENT_OPTIONS');\n const { showSplitTender } = useEligibilityContext();\n\n const [experienceLogged, setExperienceLogged] = useState(false);\n const mountSplitTender = () => {\n const { resolvedTreatment: gateTreatment } = featureSplitTenderGate?.experiment || {};\n const isGateOpen = gateTreatment === 'TREATMENT_1';\n logGateLoaded();\n logGateOpen(isGateOpen);\n };\n\n React.useEffect(mountSplitTender, []);\n React.useEffect(() => {\n if (!experienceLogged && featureSplitTenderGate && featureTabs) {\n const { resolvedTreatment: tabTreatment } = featureTabs?.experiment || {};\n\n const experience = tabTreatment === 'TREATMENT_1' ? 'TAB' : 'TOGGLE';\n\n logExperience(experience);\n setExperienceLogged(true);\n }\n }, [featureSplitTenderGate, featureTabs, experienceLogged]);\n\n return showSplitTender && <SplitTenderGate />;\n}\n","import React from 'react';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { useFeature } from '@/components/Feature/hooks';\n\nconst SelectShippingOptionInterstitial = lazyComponent(\n () => import('./ShippingAndTaxInterstitial'),\n {\n id: 'SELECT_SHIPPING_OPTION_INTERSTITIAL',\n Interstitial: true,\n }\n);\n\nexport default function SelectShippingOptionInterstitialContainer() {\n const { visible } = useFeature('SHIP_TAX_INTERSTITIAL');\n\n if (!visible) {\n return null;\n }\n\n return <SelectShippingOptionInterstitial />;\n}\n","import gql from 'graphql-tag';\nimport { PaymentContingenciesFragment } from '@paypalcorp/c3-graphql-fragments';\n\nexport const SCA_CONTINGENCY_QUERY = gql`\n ${PaymentContingenciesFragment}\n query SCA_CONTINGENCY_QUERY($token: String!, $experiences: [ThreeDSPaymentExperience]) {\n checkoutSession(token: $token) {\n cart {\n cancelUrl {\n href\n }\n }\n merchant {\n isTrustedBeneficiary\n logo {\n href\n }\n merchantId\n name\n }\n paymentContingencies {\n ...PaymentContingenciesFragment\n }\n secureCustomerAuthenticationContext {\n status\n exemptReason\n }\n }\n }\n`;\n","import { useQuery } from '@apollo/react-hooks';\nimport { useFeature } from '@/components/Feature/hooks';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { threeDsExperienceVars } from '@paypalcorp/c3-util-threed-ds';\nimport { SCA_CONTEXT_STATUS } from './constants';\nimport { SCA_CONTINGENCY_QUERY } from './query.gql';\n\nexport const useSca = () => {\n const { experiment: tbExperiment } = useFeature('TRUSTED_BENEFICIARY_OPT_IN');\n const { data } = useQuery(SCA_CONTINGENCY_QUERY, {\n variables: threeDsExperienceVars({ token: getToken() }),\n fetchPolicy: 'cache-only',\n });\n\n if (!data) {\n return { isLoading: true };\n }\n\n const checkoutSession = data?.checkoutSession || {};\n const {\n cart = {},\n merchant = {},\n paymentContingencies = {},\n secureCustomerAuthenticationContext,\n } = checkoutSession;\n\n const cancelUrl = cart?.cancelUrl?.href;\n const isTrustedBeneficiary = merchant?.isTrustedBeneficiary;\n const logo = merchant?.logo?.href;\n const merchantId = merchant?.merchantId;\n const name = merchant?.name;\n const contextId = paymentContingencies?.strongCustomerAuthenticationRequired?.contextId;\n const { status: scaStatus, exemptReason } = secureCustomerAuthenticationContext || {};\n\n const { COMPLETE, IN_PROGRESS } = SCA_CONTEXT_STATUS;\n\n const trustedBeneficiaryEligible =\n isTrustedBeneficiary === false &&\n scaStatus === COMPLETE &&\n tbExperiment?.resolvedTreatment !== 'CONTROL';\n\n const reviewBeforeLoginEligible = Boolean(contextId) && scaStatus === IN_PROGRESS;\n\n return {\n exemptReason,\n isLoading: false,\n reviewBeforeLoginEligible,\n reviewBeforeLoginProps: {\n cancelUrl,\n contextId,\n name,\n },\n trustedBeneficiaryEligible,\n trustedBeneficiaryProps: {\n logo,\n merchantId,\n },\n };\n};\n","import { logger, ERROR_PAYLOAD, TRANSITION_PAYLOAD } from '@paypalcorp/c3-util-logger';\nconst prefix = 'split_tender_';\n\nconst _logger = (event, transition, payload = {}) => {\n event = `${prefix}${event}`.toLowerCase();\n transition = `${prefix}${transition}`.toLocaleLowerCase();\n logger.fpti(\n event,\n TRANSITION_PAYLOAD({\n from: event,\n to: transition,\n ...payload,\n })\n );\n};\n\nexport const loggit = ({\n stateName,\n process,\n transition,\n splitFiList,\n backupSelected,\n remaining = {},\n}) => {\n transition = transition || (process ? 'COMPLETED' : 'SHOWN');\n const transitionName = `${stateName}_${transition}`.toUpperCase();\n const params = {};\n if (splitFiList) {\n params.split_fi_list = JSON.stringify(splitFiList);\n }\n if (backupSelected) {\n params.split_backup_selected = backupSelected;\n }\n _logger(stateName, transitionName, { ...params, ...remaining });\n};\n\nexport const amountEntry = (payload = {}) => {\n const { amount, entryType, fiId } = payload;\n const stateName = 'AMOUNT_ENTRY';\n const transition = 'PROCESS';\n loggit({\n stateName,\n transition,\n remaining: {\n amount,\n entry_type: entryType,\n fi_id: fiId,\n },\n });\n};\n\nexport const experience = (type = 'BUTTON') => {\n const stateName = 'EXPERIENCE';\n const transition = type.toUpperCase();\n loggit({\n stateName,\n transition,\n });\n};\n\n// logged when ELMO gate component is loaded\nexport const gateLoaded = () => {\n const stateName = 'GATE';\n loggit({ stateName, transition: 'LOADED' });\n};\n\n// logged when ELMO gate state: [open | closed]\nexport const gateOpen = (isOpen = false) => {\n const stateName = 'GATE';\n const transition = isOpen ? 'OPEN' : 'CLOSED';\n loggit({ stateName, transition });\n};\n\n// logged when doing a gql request for split tender options\nexport const requestSplitTenderOptions = () => {\n const stateName = 'QUERY';\n const transition = 'REQUEST';\n loggit({ stateName, transition });\n};\n\n// logged when gql request is completed\nexport const responseSplitTenderOptions = (splitFundingOptions = null) => {\n const stateName = 'QUERY';\n const transition = 'RESPONSE';\n const splitFiList = splitFundingOptions.map((option) => {\n let {\n id,\n isPreferred,\n isEligibleForPrimaryInstrument,\n availableAmount,\n mustUseFullAmount,\n canEditAmount,\n fundingInstrument: { type: fundingInstrumentType },\n canSplitWith,\n } = option;\n return {\n id,\n isPreferred,\n isEligibleForPrimaryInstrument,\n availableAmount,\n mustUseFullAmount,\n canEditAmount,\n fundingInstrumentType,\n canSplitWith,\n };\n });\n loggit({ stateName, transition, splitFiList });\n};\n\nexport const triggerLoaded = (type = 'BUTTON') => {\n const stateName = 'TRIGGER_LOADED';\n const transition = type.toUpperCase();\n loggit({\n stateName,\n transition,\n });\n};\n\nexport const selectInputLoaded = (loaded = false) => {\n const stateName = 'SELECTINPUT';\n const transition = loaded ? 'LOADED' : 'UNLOADED';\n loggit({\n stateName,\n transition,\n });\n};\n\nexport const splitContinueLoaded = () => {\n const stateName = 'SELECTINPUT';\n const transition = 'CONTINUE';\n loggit({\n stateName,\n transition,\n });\n};\n\nexport const selectInputProcess = (splitFiList, backupSelected, isBackupPreferred) => {\n const stateName = 'SELECTINPUT';\n const transition = 'PROCESS';\n loggit({\n stateName,\n transition,\n splitFiList,\n backupSelected,\n remaining: {\n backup_logic: isBackupPreferred ? 'preferred_fi' : 'highest_amount',\n },\n });\n};\n\nexport const backupViewShown = (splitFundingOptions = null) => {\n const stateName = 'BACKUP_VIEW';\n const process = false;\n const splitFiList = splitFundingOptions.map((option) => option.id);\n loggit({ stateName, process, splitFiList });\n};\n\nexport const backupViewCompleted = (backupSelected) => {\n const stateName = 'BACKUP_VIEW';\n const process = true;\n loggit({ stateName, process, backupSelected });\n};\n\nexport const payWithViewShown = () => {\n const stateName = `PAYWITH_VIEW`;\n const process = false;\n loggit({ stateName, process });\n};\n\nexport const payWithChangeClicked = () => {\n const stateName = `PAYWITH_CHANGE`;\n const transition = 'CLICKED';\n loggit({ stateName, transition });\n};\n\nexport const payWithChangeViewShown = () => {\n const stateName = `PAYWITH_CHANGE_VIEW`;\n const process = false;\n loggit({ stateName, process });\n};\n\nexport const payWithViewChangeAmounts = () => {\n const stateName = `PAYWITH_CHANGE_VIEW`;\n const transition = 'CHANGE_AMOUNTS';\n loggit({ stateName, transition });\n};\n\nexport const payWithViewCancelSplit = () => {\n const stateName = `PAYWITH_CHANGE_VIEW`;\n const transition = 'CANCEL_SPLIT';\n loggit({ stateName, transition });\n};\n\nexport const payWithChangeBackup = () => {\n const stateName = `PAYWITH_VIEW`;\n const transition = 'CHANGE_BACKUP';\n loggit({ stateName, transition });\n};\n\nexport const approvePaymentPrepare = (splitFundingOptions) => {\n const stateName = `REVIEW`;\n const transition = 'APPROVE_REQUEST';\n let backupSelected;\n const splitFiList = splitFundingOptions.map((option) => {\n let { isPrimaryInstrument, id, amount } = option;\n if (isPrimaryInstrument) {\n backupSelected = id;\n }\n return { id, isPrimaryInstrument, amount };\n });\n loggit({ stateName, transition, splitFiList, backupSelected });\n};\n\n// splitFiList has selected values and their amounts\nexport const approvePaymentProcess = (\n splitFundingOptions,\n currencyCode,\n buyerCountry,\n shipping = {}\n) => {\n const stateName = `REVIEW`;\n const transition = 'PROCESS_REVIEW';\n let backupSelected;\n const splitFiList = splitFundingOptions.map((option) => {\n let { isPrimaryInstrument, id, amount } = option;\n if (isPrimaryInstrument) {\n backupSelected = id;\n }\n return { id, isPrimaryInstrument, amount };\n });\n const remaining = {\n currency_code: currencyCode,\n buyer_country: buyerCountry,\n ...shipping,\n };\n loggit({ stateName, transition, splitFiList, backupSelected, remaining });\n\n // analytics/instrumentation req to match current payment completed log\n logger.fpti(\n 'approvePayment',\n TRANSITION_PAYLOAD({\n from: stateName,\n to: transition.toLowerCase(),\n split_fi_list: JSON.stringify(splitFiList),\n split_backup_selected: backupSelected,\n ...remaining,\n })\n );\n};\n\nexport const approvePaymentError = (error) => {\n logger.fpti(`approvePaymentSplitTenderError`, ERROR_PAYLOAD({ code: 'GQLError', error }));\n logger.fpti(`approvePaymentError`, ERROR_PAYLOAD({ code: 'GQLError' }));\n};\n\n// try to log context_id/token\n// SPLIT_TENDER_XOB_\n// REQUEST\n// RESPONSE\n","import { Loading } from './Loading';\nimport gql from 'graphql-tag';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { ShippingCartAmountFragment } from '@paypalcorp/c3-graphql-fragments';\nimport Feature from '@/components/Feature';\n\nexport const ShippingAddressesFragment = gql`\n fragment ShippingAddressesFragment on CheckoutShippingAddress {\n isPrimary\n isSelected\n isDisabled\n isDefault\n state\n postalCode\n country\n city\n name {\n fullName\n }\n fullAddress\n addressId\n __typename\n }\n`;\n\nexport const shipToQuery = gql`\n ${ShippingAddressesFragment}\n ${ShippingCartAmountFragment}\n query ShipToQuery($token: String!) {\n checkoutSession(token: $token) {\n merchant {\n name\n }\n shippingAddresses {\n ...ShippingAddressesFragment\n }\n flags {\n isChangeShippingAddressAllowed\n hideShipping\n blockNonDomesticShipping\n isOptionallyShareAddress\n isSntSupported\n }\n cart {\n total {\n currencyFormatSymbolISOCurrency\n currencyCode\n currencyValue\n }\n amounts {\n ...ShippingCartAmountFragment\n }\n shippingMethods {\n id\n type\n label\n selected\n amount {\n currencyCode\n currencyValue\n currencyFormatSymbolISOCurrency\n }\n }\n cancelUrl {\n href\n }\n paymentId\n }\n }\n }\n`;\n\nconst ShipTo = Feature({\n id: 'SHIP_TO',\n queries: [\n {\n query: shipToQuery,\n variables: { token: getToken() },\n context: { planningBatch: true },\n },\n ],\n subscribeTo: ['DONATION_SHARE_ADDRESS', 'CREDIT_SINGLE_FI_DISPLAY'],\n LoadingComponent: Loading,\n})(() => import('./ShipTo'));\n\nexport default ShipTo;\n","/**\n * Expand to include TB, various error reasons\n */\n\nexport const EXEMPTIONS = {\n LOW_VALUE_TRANSACTION: 'lowValueExemption',\n BUYER_NOT_PRESENT: 'buyerNotPresentExemption',\n REFERENCE_TRANSACTION: 'referenceTxnExemption',\n TRUSTED_BENEFICIARY: 'isTrustedBeneficiaryExemption',\n};\n\nexport const REVIEW_BEFORE_LOGIN_FLOW = {\n cookieDisabledTraffic: 'rbl_ineligible_cdb',\n webview: 'rbl_ineligible_webview',\n init: 'initReviewBeforeLogin',\n success: 'loginSuccess',\n close: 'cancelReviewBeforeLogin',\n error: 'loginError',\n prepare: 'prepare_rbl',\n};\n\nexport const TRUSTED_BENEFICIARY_FLOW = {\n cookieDisabledTraffic: 'tb_ineligible_cdb',\n webview: 'tb_ineligible_webview',\n render: 'renderTrustedBeneficiary',\n optedIn: 'trustedBeneficiaryOptedIn',\n noThanks: 'trustedBeneficiaryNoThanks',\n error: 'trustedBeneficiaryError',\n};\n\nexport const SCA_CONTEXT_STATUS = {\n COMPLETE: 'COMPLETE',\n IN_PROGRESS: 'IN_PROGRESS',\n};\n","export * from './PayWithRewards';\nexport * from './RewardsInterstitial';\n","import React from 'react';\nimport getContent from '@/lib/content';\n\nimport { heading as headingStyles } from '@/App.css';\nimport styles from './styles.css';\n\nexport const Title = () => (\n <h2 id=\"ShipTo\" className={`${headingStyles} ${styles.title}`}>\n {getContent('shipping.shipToHeader')}\n </h2>\n);\n\nexport default Title;\n","import gql from 'graphql-tag';\nimport { SplitFundingOptionsFragment } from '@paypalcorp/c3-graphql-fragments';\n\nexport const SPLIT_TENDER_CART_QUERY = gql`\n query SplitTenderInputQuery($token: String!) {\n checkoutSession(token: $token) {\n cart {\n amounts {\n total {\n currencyCode\n currencySymbol\n currencyFormat\n currencyValue\n }\n }\n billingChargePattern\n }\n checkoutSessionType\n merchant {\n country\n isGambling\n name\n }\n }\n }\n`;\n\nexport const SPLIT_TENDER_GATE_QUERY = gql`\n query SplitTenderGateQuery($token: String!) {\n checkoutSession(token: $token) {\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n id\n }\n }\n }\n`;\n\nexport const SPLIT_TENDER_OPTIONS_QUERY = gql`\n ${SplitFundingOptionsFragment}\n query SplitTenderOptionsQuery($token: String!) {\n checkoutSession(token: $token) {\n splitFundingOptions {\n ...SplitFundingOptionsFragment\n }\n }\n }\n`;\n\nexport const SPLIT_TENDER_APPROVE_MUTATION = gql`\n mutation approveMemberPaymentWithSplitFundingOptions(\n $token: String!\n $splitFundingOptions: [SplitFundingOptionsInput]!\n $selectedAddressId: String\n $preferredShippingAddressId: String\n ) {\n approveMemberPaymentWithSplitFundingOptions(\n token: $token\n splitFundingOptions: $splitFundingOptions\n selectedAddressId: $selectedAddressId\n preferredShippingAddressId: $preferredShippingAddressId\n ) {\n state\n buyer {\n userId\n }\n cart {\n intent\n paymentId\n billingToken\n returnUrl {\n href\n }\n state\n }\n }\n }\n`;\n"],"sourceRoot":""}