{"version":3,"sources":["components/Disclaimer/INDisclaimer/index.js","components/Disclaimer/Disclaimer.js","components/Disclaimer/CPADisclaimer/eligibility.js","components/Disclaimer/AuDisclaimer/index.js","components/Disclaimer/CPADisclaimer/index.js","components/Disclaimer/ApacDisclaimer/index.js","components/Disclaimer/GplInstallmentDisclaimer/index.js","components/PaymentOptions/hooks.js"],"names":["INDisclaimerContainer","Feature","id","Disclaimer","props","checkoutSession","allQueryData","data","feature","cart","intent","merchant","userAction","checkoutSessionType","isContinueUserAction","getIsContinueUserActionFlow","isBillingAgreementWithPurchase","isBillingAgreement","preAuthorizationData","useGetPreAuthorizationData","isCPADisclaimerEligible","getIsCPADisclaimerEligible","disclaimers","auth","review","descriptor","showDescriptor","data-testid","className","styles","disclaimer","getContent","authType","isPayNowUserActionFlow","getIsPayNowUserActionFlow","AuDisclaimer","LazyDisclaimer","lazyComponent","loading","CPADisclaimer","useQuery","CPA_DISCLAIMER_QUERY","fetchPolicy","variables","token","getToken","isLoading","ApacDisclaimer","LazyGplInstallmentDisclaimer","GplInstallmentDisclaimer","offers","useCreditOffers","payState","usePayContext","offer","usePayLaterContext","payLaterState","lowestOffer","useCallback","getLowestOffer","referenceId","useGplMultiOfferInstallments","isDisclaimerRequired","definitions","names","filter","definition","kind","name","value","PAYMENT_OPTIONS_TABS","PAY_SPLIT","slug","panelId","label","PAY_NOW","PAY_LATER","QUERY","FundingOptionFragment","CREDIT_OFFERS_QUERY","CreditOfferFragment","creditPpcOffersGqlParams","creditPPCOffers","hasGPL","some","content","Product","usePaymentOptionsTabs","tabs","featureSplitTenderGate","useFeature","payContext","useEligibilityContext","hasPayLaterIntent","showGPLOffer","selectedTab","selectedTabIdx","findIndex","tab","fundingOptions","prevFundingOptionsLength","usePrevious","length","creditSelectedFundingOption","find","fundingOption","allPlans","plan","isSelected","isPayLaterFundingInstrument","fundingInstrument","firstFi","setSelectedTab","tabSlug","setPayState","setSelectedFiId","undefined","updateFeature","visible","availableFundingOptions","fundingOptionsToCSV","flags","useEffect","defaultTab","logger","fpti","TRANSITION_PAYLOAD","from","to","default_tab","toLowerCase","available_tabs","map","join","available_funding_options","view_name","document","title","handleChangeTab","event","index","showSplitExperience","isSplitReady","selectedSplitFundingInstruments","showSplitContinue"],"mappings":"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","file":"js/Disclaimer~b59217a9.46cf3143.js","sourcesContent":["import Feature from '@/components/Feature';\n\nconst INDisclaimerContainer = Feature({\n id: 'DISCLAIMER_IN',\n})(() => import('./INDisclaimer'));\n\nexport default INDisclaimerContainer;\n","import React from 'react';\nimport getContent from '@/lib/content';\nimport { getIsContinueUserActionFlow } from '@/lib/userAction';\nimport { isBillingAgreement } from '@/lib/checkoutSession';\n\nimport INDisclaimer from '@/components/Disclaimer/INDisclaimer';\nimport AuDisclaimer from '@/components/Disclaimer/AuDisclaimer';\nimport CPADisclaimer from '@/components/Disclaimer/CPADisclaimer';\nimport ApacDisclaimer from '@/components/Disclaimer/ApacDisclaimer';\nimport BillingAddressConsentDisclaimer from '@/components/Disclaimer/BillingAddressConsentDisclaimer';\nimport styles from './styles.css';\nimport { getIsCPADisclaimerEligible } from '@/components/Disclaimer/CPADisclaimer/eligibility';\nimport { useGetPreAuthorizationData } from './hooks';\nimport GplInstallmentDisclaimer from './GplInstallmentDisclaimer';\n\nexport default function Disclaimer(props) {\n const checkoutSession = props?.allQueryData?.[0]?.data?.checkoutSession ?? {};\n const feature = props?.feature;\n const { cart: { intent } = {}, merchant = {}, userAction, checkoutSessionType } = checkoutSession;\n const isContinueUserAction = getIsContinueUserActionFlow(userAction);\n const isBillingAgreementWithPurchase = isBillingAgreement(checkoutSessionType);\n const [preAuthorizationData] = useGetPreAuthorizationData();\n\n const isCPADisclaimerEligible = getIsCPADisclaimerEligible({\n preAuthorizationData,\n userAction,\n checkoutSessionType,\n });\n\n const disclaimers = {\n auth: intent === 'AUTHORIZE' || intent === 'ORDER',\n review: isContinueUserAction && !isBillingAgreementWithPurchase && !isCPADisclaimerEligible,\n descriptor: feature.data.showDescriptor && merchant.descriptor,\n };\n\n return (\n
\n {disclaimers.review &&

{getContent('disclaimer.reviewOrderBeforePurchase')}

}\n {disclaimers.descriptor && (\n

\n {getContent('disclaimer.transactionOnStatement', {\n descriptor: disclaimers.descriptor,\n })}\n

\n )}\n {disclaimers.auth &&

{getContent('disclaimer.authRequired')}

}\n \n \n \n \n \n \n
\n );\n}\n","import { getIsPayNowUserActionFlow } from '@/lib/userAction';\nimport { isBillingAgreement } from '@/lib/checkoutSession';\n\nexport const getIsCPADisclaimerEligible = ({\n preAuthorizationData,\n userAction,\n checkoutSessionType,\n}) => {\n const { authType } = preAuthorizationData || {};\n const isPayNowUserActionFlow = getIsPayNowUserActionFlow(userAction);\n const isBillingAgreementWithPurchase = isBillingAgreement(checkoutSessionType);\n\n if (authType === 'FULL' && isPayNowUserActionFlow) {\n return false;\n } else if (!authType) {\n return false;\n } else if (isBillingAgreementWithPurchase) {\n return false;\n }\n return true;\n};\n","import Feature from '@/components/Feature';\n\nconst AuDisclaimer = Feature({\n id: 'DISCLAIMER_AU',\n})(() => import('./AuDisclaimer'));\n\nexport default AuDisclaimer;\n","import React from 'react';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { useQuery } from '@apollo/react-hooks';\nimport { getIsCPADisclaimerEligible } from './eligibility';\nimport { useGetPreAuthorizationData } from '@/components/Disclaimer/hooks';\nimport { CPA_DISCLAIMER_QUERY } from './query.gql';\n\nconst LazyDisclaimer = lazyComponent(() => import('./CPADisclaimer'), {\n id: 'DISCLAIMER_CPA',\n loading: () =>
,\n});\n\nconst CPADisclaimer = () => {\n const { loading, data } = useQuery(CPA_DISCLAIMER_QUERY, {\n fetchPolicy: 'cache-only',\n variables: { token: getToken() },\n });\n const checkoutSession = data?.checkoutSession;\n const userAction = checkoutSession?.userAction;\n const checkoutSessionType = checkoutSession?.checkoutSessionType;\n const [preAuthorizationData] = useGetPreAuthorizationData();\n\n if (\n !getIsCPADisclaimerEligible({\n preAuthorizationData,\n userAction,\n checkoutSessionType,\n })\n ) {\n return null;\n }\n return (\n \n );\n};\n\nexport default CPADisclaimer;\n","import Feature from '@/components/Feature';\n\nconst ApacDisclaimer = Feature({\n id: 'APAC_DISCLAIMER',\n})(() => import('./ApacDisclaimer'));\n\nexport default ApacDisclaimer;\n","import React, { useCallback } from 'react';\nimport { lazyComponent } from '@/lib/lazyLoad';\nimport { usePayContext, usePayLaterContext } from '@/components/ContextProviders';\nimport { useCreditOffers } from '@/components/PaymentOptions/hooks';\nimport { useGplMultiOfferInstallments, getLowestOffer } from '@/components/PayLater/Multi/hooks';\n\nconst LazyGplInstallmentDisclaimer = lazyComponent(() => import('./GplInstallmentDisclaimer'), {\n id: 'GPL_INSTALLMENT_DISCLAIMER',\n loading: () => null,\n});\n\nconst GplInstallmentDisclaimer = () => {\n const { offers } = useCreditOffers();\n const { payState } = usePayContext();\n let {\n payLaterState: { offer },\n } = usePayLaterContext();\n\n const lowestOffer = useCallback(getLowestOffer(offers), [offers]);\n\n if (offer?.referenceId === 'noPreselection' || !offer) {\n offer = lowestOffer;\n }\n\n const { isDisclaimerRequired } = useGplMultiOfferInstallments(offers);\n\n // The GPL Installment Disclaimer is (for now) specific to Germany\n if (isDisclaimerRequired) {\n return ;\n }\n\n return null;\n};\n\nexport default GplInstallmentDisclaimer;\n","import { useCallback, useEffect } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport { usePrevious } from 'react-use';\nimport gql from 'graphql-tag';\nimport { logger, TRANSITION_PAYLOAD } from '@paypalcorp/c3-util-logger';\nimport { getToken } from '@paypalcorp/c3-shared-globals';\nimport { updateFeature, isPayLaterFundingInstrument } from '@paypalcorp/c3-util-store';\nimport { FundingOptionFragment } from '@paypalcorp/c3-graphql-fragments';\nimport getContent from '@/lib/content';\nimport { fundingOptionsToCSV } from '@/lib/fpti';\nimport { creditPpcOffersGqlParams } from '@/lib/credit';\nimport { useEligibilityContext, usePayContext } from '@/components/ContextProviders';\nimport { useFeature } from '@/components/Feature/hooks';\nimport { CreditOfferFragment } from '@/components/CreditOffer';\n\nexport const PAYMENT_OPTIONS_TABS = {\n PAY_SPLIT: {\n id: 'paywith-tab-split',\n slug: 'PAY_SPLIT',\n panelId: 'paywith-panel-split',\n label: getContent('splitTender.cta.main'),\n },\n PAY_NOW: {\n id: 'paywith-tab-now',\n slug: 'PAY_NOW',\n panelId: 'paywith-panel-now',\n label: getContent('paymentOptions.payNowTitle'),\n },\n PAY_LATER: {\n id: 'paywith-tab-later',\n slug: 'PAY_LATER',\n panelId: 'paywith-panel-later',\n label: getContent('paymentOptions.payLaterTitle'),\n },\n};\n\nexport const QUERY = gql`\n ${FundingOptionFragment}\n query TabbedPaymentOptionsQuery($token: String!) {\n checkoutSession(token: $token) {\n fundingOptions(returnAllPlans: true, groupSourcesOnType: INCENTIVE) {\n ...FundingOptionFragment\n }\n }\n }\n`;\n\nconst CREDIT_OFFERS_QUERY = gql`\n ${CreditOfferFragment}\n query CreditOffersQuery($token: String!, $areCookiesDisabled: Boolean, $isIframe: Boolean) {\n checkoutSession(token: $token) {\n creditPPCOffers(areCookiesDisabled: $areCookiesDisabled, isIframe: $isIframe) {\n ...CreditOfferFragment\n }\n }\n }\n`;\n\n/**\n * Gets the available credit offers as well as if there's a GPL offer\n */\nexport function useCreditOffers() {\n const { data } = useQuery(CREDIT_OFFERS_QUERY, {\n variables: { token: getToken(), ...creditPpcOffersGqlParams() },\n fetchPolicy: 'cache-only',\n });\n const offers = data?.checkoutSession?.creditPPCOffers || [];\n\n return {\n hasGPL: offers.some(({ content }) => content.Product === 'GPL'),\n offers,\n };\n}\n\n/**\n * Returns and sets the current payment options tab\n */\nexport function usePaymentOptionsTabs(tabs) {\n const featureSplitTenderGate = useFeature('SPLIT_TENDER_GATE');\n const payContext = usePayContext();\n const { hasPayLaterIntent, showGPLOffer } = useEligibilityContext();\n const { offers } = useCreditOffers();\n const { selectedTab } = payContext.payState;\n const selectedTabIdx = tabs.findIndex((tab) => tab.slug === selectedTab);\n const { data } = useQuery(QUERY, { variables: { token: getToken() }, fetchPolicy: 'cache-only' });\n const fundingOptions = data?.checkoutSession?.fundingOptions || [];\n const prevFundingOptionsLength = usePrevious(fundingOptions.length);\n const creditSelectedFundingOption = fundingOptions?.find(\n (fundingOption) =>\n fundingOption.allPlans?.some((plan) => plan?.isSelected) &&\n isPayLaterFundingInstrument(fundingOption?.fundingInstrument)\n );\n const firstFi = fundingOptions?.find(\n (fundingOption) => !isPayLaterFundingInstrument(fundingOption?.fundingInstrument)\n );\n const setSelectedTab = useCallback(\n (tabSlug) => {\n if (selectedTab === tabSlug) {\n return;\n }\n\n if (!tabs.find((tab) => tab.slug === tabSlug)) {\n return;\n }\n\n payContext.setPayState({ selectedTab: tabSlug });\n\n if (tabSlug === 'PAY_LATER') {\n if (creditSelectedFundingOption) {\n payContext.setSelectedFiId(creditSelectedFundingOption?.id);\n } else {\n payContext.setSelectedFiId(undefined);\n }\n }\n\n if (tabSlug === 'PAY_NOW') {\n payContext.setSelectedFiId(firstFi?.id);\n\n if (fundingOptions.length > 0) {\n updateFeature('REVIEW_PAGE_ALERT', {\n visible: false,\n });\n }\n }\n },\n [creditSelectedFundingOption, firstFi, fundingOptions.length, payContext, selectedTab, tabs]\n );\n const availableFundingOptions = fundingOptionsToCSV({\n fundingOptions,\n creditPPCOffers: offers,\n flags: { showGPLOffer },\n });\n\n /**\n * Set a default selected tab and log when we've rendered the tabs\n */\n useEffect(() => {\n if (prevFundingOptionsLength === fundingOptions.length) {\n return;\n }\n\n const defaultTab =\n fundingOptions.length < 1 || creditSelectedFundingOption || hasPayLaterIntent\n ? 'PAY_LATER'\n : 'PAY_NOW';\n setSelectedTab(defaultTab);\n\n logger.fpti(\n 'RENDER_TABS',\n TRANSITION_PAYLOAD({\n from: 'REVIEW',\n to: 'prepare_review_tabs',\n default_tab: defaultTab.toLowerCase(),\n available_tabs: tabs.map(({ slug }) => slug.toLowerCase()).join(','),\n available_funding_options: availableFundingOptions,\n view_name: 'tab_view',\n })\n );\n }, [\n availableFundingOptions,\n creditSelectedFundingOption,\n fundingOptions.length,\n hasPayLaterIntent,\n prevFundingOptionsLength,\n setSelectedTab,\n tabs,\n ]);\n\n /**\n * Update the page title based on the selected tab\n */\n useEffect(() => {\n if (document) {\n document.title = `PayPal Checkout | ${PAYMENT_OPTIONS_TABS[selectedTab].label}`;\n }\n }, [selectedTab]);\n\n /**\n * Handle changing the selected tab\n * @param {Event} event change tab event\n * @param {String} index the tab index to select\n */\n function handleChangeTab(event, index) {\n const slug = tabs[index]?.slug;\n const showSplitExperience = slug === 'PAY_SPLIT';\n const isSplitReady =\n showSplitExperience &&\n !!featureSplitTenderGate?.data?.selectedSplitFundingInstruments?.length;\n\n setSelectedTab(slug);\n updateFeature('SPLIT_TENDER_GATE', {\n data: {\n showSplitExperience,\n isSplitReady,\n showSplitContinue: isSplitReady,\n },\n });\n const to = `select_${slug.toLowerCase()}`;\n\n logger.fpti(\n to,\n TRANSITION_PAYLOAD({\n from: 'review',\n to,\n available_funding_options: availableFundingOptions,\n view_name: 'tab_view',\n })\n );\n }\n\n return {\n selectedTab,\n selectedTabIdx,\n setSelectedTab,\n handleChangeTab,\n };\n}\n"],"sourceRoot":""}