@adyen/adyen-web 6.46.0 → 6.47.0-alpha.eada81f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/adyen.css +14 -12
- package/dist/cjs/adyen.css.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +525 -4
- package/dist/es/adyen.css +14 -12
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es/components/Donation/components/DonationComponent.js.map +1 -1
- package/dist/es/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es/components/PayPal/PayPalCredit.js +2 -0
- package/dist/es/components/PayPal/PayPalCredit.js.map +1 -0
- package/dist/es/components/PayPal/PayPalPaylater.js +2 -0
- package/dist/es/components/PayPal/PayPalPaylater.js.map +1 -0
- package/dist/es/components/PayPal/Paypal.js +1 -1
- package/dist/es/components/PayPal/Paypal.js.map +1 -1
- package/dist/es/components/PayPal/Venmo.js +2 -0
- package/dist/es/components/PayPal/Venmo.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalButton.js +2 -0
- package/dist/es/components/PayPal/components/PayPalButton.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalComponentV6.js +2 -0
- package/dist/es/components/PayPal/components/PayPalComponentV6.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js +2 -0
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalCreditButton.js +2 -0
- package/dist/es/components/PayPal/components/PayPalCreditButton.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js +2 -0
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalMessaging.js +2 -0
- package/dist/es/components/PayPal/components/PayPalMessaging.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js +2 -0
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js +2 -0
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +2 -0
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js +2 -0
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js.map +1 -0
- package/dist/es/components/PayPal/components/PayPalSpinner.js +2 -0
- package/dist/es/components/PayPal/components/PayPalSpinner.js.map +1 -0
- package/dist/es/components/PayPal/components/PaypalButtons.js +1 -1
- package/dist/es/components/PayPal/components/PaypalButtons.js.map +1 -1
- package/dist/es/components/PayPal/components/PaypalComponent.js +1 -1
- package/dist/es/components/PayPal/components/PaypalComponent.js.map +1 -1
- package/dist/es/components/PayPal/components/VenmoButton.js +2 -0
- package/dist/es/components/PayPal/components/VenmoButton.js.map +1 -0
- package/dist/es/components/PayPal/components/VenmoComponent.js +2 -0
- package/dist/es/components/PayPal/components/VenmoComponent.js.map +1 -0
- package/dist/es/components/PayPal/config.js +1 -1
- package/dist/es/components/PayPal/config.js.map +1 -1
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js +2 -0
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js.map +1 -0
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js +2 -0
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js.map +1 -0
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js +2 -0
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js.map +1 -0
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js +2 -0
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js.map +1 -0
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js +2 -0
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js.map +1 -0
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js +2 -0
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js.map +1 -0
- package/dist/es/components/PayPal/models/BasePayPalElement.js +2 -0
- package/dist/es/components/PayPal/models/BasePayPalElement.js.map +1 -0
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js +2 -0
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js.map +1 -0
- package/dist/es/components/PayPal/services/PayPalService.js +2 -0
- package/dist/es/components/PayPal/services/PayPalService.js.map +1 -0
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js +2 -0
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js.map +1 -0
- package/dist/es/components/PayPal/services/request-paypal-order-details.js +2 -0
- package/dist/es/components/PayPal/services/request-paypal-order-details.js.map +1 -0
- package/dist/es/components/PayPal/utils/get-paypal-locale.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-locale.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-settings.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-settings.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-url.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-url.js.map +1 -1
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js +2 -0
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js.map +1 -0
- package/dist/es/components/components-name-map.js +1 -1
- package/dist/es/components/components-name-map.js.map +1 -1
- package/dist/es/components/index.js +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es/components/tx-variants.js +1 -1
- package/dist/es/components/tx-variants.js.map +1 -1
- package/dist/es/core/config.js +1 -1
- package/dist/es/core/config.js.map +1 -1
- package/dist/es/index.d.ts +525 -4
- package/dist/es/index.js +1 -1
- package/dist/es/utils/createSdkData.js +1 -1
- package/dist/es/utils/createSdkData.js.map +1 -1
- package/dist/es/utils/is-live-environment.js +2 -0
- package/dist/es/utils/is-live-environment.js.map +1 -0
- package/dist/es-legacy/adyen.css +14 -12
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/DonationComponent.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es-legacy/components/PayPal/PayPalCredit.js +2 -0
- package/dist/es-legacy/components/PayPal/PayPalCredit.js.map +1 -0
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js +2 -0
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js.map +1 -0
- package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
- package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
- package/dist/es-legacy/components/PayPal/Venmo.js +2 -0
- package/dist/es-legacy/components/PayPal/Venmo.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js +2 -0
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js +2 -0
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js.map +1 -0
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js +2 -0
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js.map +1 -0
- package/dist/es-legacy/components/PayPal/config.js +1 -1
- package/dist/es-legacy/components/PayPal/config.js.map +1 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js +2 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js.map +1 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js +2 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js.map +1 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js +2 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js.map +1 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js +2 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js.map +1 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js +2 -0
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js.map +1 -0
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js +2 -0
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js.map +1 -0
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js +2 -0
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js.map +1 -0
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js +2 -0
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js.map +1 -0
- package/dist/es-legacy/components/PayPal/services/PayPalService.js +2 -0
- package/dist/es-legacy/components/PayPal/services/PayPalService.js.map +1 -0
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js +2 -0
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js.map +1 -0
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js +2 -0
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js.map +1 -0
- package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js +2 -0
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js.map +1 -0
- package/dist/es-legacy/components/components-name-map.js +1 -1
- package/dist/es-legacy/components/components-name-map.js.map +1 -1
- package/dist/es-legacy/components/index.js +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es-legacy/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es-legacy/components/tx-variants.js +1 -1
- package/dist/es-legacy/components/tx-variants.js.map +1 -1
- package/dist/es-legacy/core/config.js +1 -1
- package/dist/es-legacy/core/config.js.map +1 -1
- package/dist/es-legacy/index.js +1 -1
- package/dist/es-legacy/utils/createSdkData.js +1 -1
- package/dist/es-legacy/utils/createSdkData.js.map +1 -1
- package/dist/es-legacy/utils/is-live-environment.js +2 -0
- package/dist/es-legacy/utils/is-live-environment.js.map +1 -0
- package/package.json +1 -1
- package/styles/adyen.css +14 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplePaySdkLoader.js","sources":["../../../../../src/components/ApplePay/services/ApplePaySdkLoader.ts"],"sourcesContent":["import Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { IAnalytics } from '../../../core/Analytics/Analytics';\n\nexport const APPLE_PAY_SDK_URL = 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js';\n\nclass ApplePaySdkLoader {\n private sdkLoadingPromise: Promise<void>;\n private readonly analytics: IAnalytics;\n\n constructor({ analytics }: { analytics: IAnalytics }) {\n this.analytics = analytics;\n }\n\n public async load(): Promise<ApplePaySession> {\n try {\n const scriptElement = new Script({\n src: APPLE_PAY_SDK_URL,\n component: 'applepay',\n attributes: { crossOrigin: 'anonymous' },\n analytics: this.analytics\n });\n\n this.sdkLoadingPromise = scriptElement.load();\n await this.sdkLoadingPromise;\n\n return window?.ApplePaySession;\n } catch (error) {\n throw new AdyenCheckoutError('SCRIPT_ERROR', 'ApplePaySDK failed to load', { cause: error });\n }\n }\n\n public isSdkLoaded(): Promise<void> {\n if (this.sdkLoadingPromise === undefined) {\n return Promise.reject();\n }\n\n return this.sdkLoadingPromise;\n }\n}\n\nexport default ApplePaySdkLoader;\n"],"names":["APPLE_PAY_SDK_URL","ApplePaySdkLoader","load","scriptElement","Script","src","component","attributes","crossOrigin","analytics","this","sdkLoadingPromise","window","ApplePaySession","error","AdyenCheckoutError","cause","isSdkLoaded","undefined","Promise","reject","constructor","_define_property"],"mappings":"0NAIO,MAAMA,EAAoB,iEAEjC,MAAMC,EAQF,UAAaC,GACT,IACI,MAAMC,EAAgB,IAAIC,EAAO,CAC7BC,IAAKL,EACLM,UAAW,WACXC,WAAY,CAAEC,YAAa,aAC3BC,UAAWC,KAAKD,YAMpB,OAHAC,KAAKC,kBAAoBR,EAAcD,aACjCQ,KAAKC,kBAEJC,QAAQC,eACnB,CAAE,MAAOC,GACL,MAAM,IAAIC,EAAmB,eAAgB,6BAA8B,CAAEC,MAAOF,GACxF,CACJ,CAEOG,WAAAA,GACH,YAA+BC,IAA3BR,KAAKC,kBACEQ,QAAQC,SAGZV,KAAKC,iBAChB,CA5BA,WAAAU,EAAYZ,UAAEA,IAHda,EAAAZ,KAAQC,4BACRW,EAAAZ,KAAiBD,oBAGbC,KAAKD,UAAYA,CACrB"}
|
|
1
|
+
{"version":3,"file":"ApplePaySdkLoader.js","sources":["../../../../../src/components/ApplePay/services/ApplePaySdkLoader.ts"],"sourcesContent":["import Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { IAnalytics } from '../../../core/Analytics/Analytics';\n\nexport const APPLE_PAY_SDK_URL = 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js';\n\nclass ApplePaySdkLoader {\n private sdkLoadingPromise: Promise<void>;\n private readonly analytics: IAnalytics;\n\n constructor({ analytics }: { analytics: IAnalytics }) {\n this.analytics = analytics;\n }\n\n public async load(): Promise<typeof ApplePaySession | undefined> {\n try {\n const scriptElement = new Script({\n src: APPLE_PAY_SDK_URL,\n component: 'applepay',\n attributes: { crossOrigin: 'anonymous' },\n analytics: this.analytics\n });\n\n this.sdkLoadingPromise = scriptElement.load();\n await this.sdkLoadingPromise;\n\n return window?.ApplePaySession;\n } catch (error) {\n throw new AdyenCheckoutError('SCRIPT_ERROR', 'ApplePaySDK failed to load', { cause: error });\n }\n }\n\n public isSdkLoaded(): Promise<void> {\n if (this.sdkLoadingPromise === undefined) {\n return Promise.reject();\n }\n\n return this.sdkLoadingPromise;\n }\n}\n\nexport default ApplePaySdkLoader;\n"],"names":["APPLE_PAY_SDK_URL","ApplePaySdkLoader","load","scriptElement","Script","src","component","attributes","crossOrigin","analytics","this","sdkLoadingPromise","window","ApplePaySession","error","AdyenCheckoutError","cause","isSdkLoaded","undefined","Promise","reject","constructor","_define_property"],"mappings":"0NAIO,MAAMA,EAAoB,iEAEjC,MAAMC,EAQF,UAAaC,GACT,IACI,MAAMC,EAAgB,IAAIC,EAAO,CAC7BC,IAAKL,EACLM,UAAW,WACXC,WAAY,CAAEC,YAAa,aAC3BC,UAAWC,KAAKD,YAMpB,OAHAC,KAAKC,kBAAoBR,EAAcD,aACjCQ,KAAKC,kBAEJC,QAAQC,eACnB,CAAE,MAAOC,GACL,MAAM,IAAIC,EAAmB,eAAgB,6BAA8B,CAAEC,MAAOF,GACxF,CACJ,CAEOG,WAAAA,GACH,YAA+BC,IAA3BR,KAAKC,kBACEQ,QAAQC,SAGZV,KAAKC,iBAChB,CA5BA,WAAAU,EAAYZ,UAAEA,IAHda,EAAAZ,KAAQC,4BACRW,EAAAZ,KAAiBD,oBAGbC,KAAKD,UAAYA,CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DonationComponent.js","sources":["../../../../../src/components/Donation/components/DonationComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport CampaignContent from './CampaignContent';\nimport Button from '../../internal/Button';\nimport Img from '../../internal/Img';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport
|
|
1
|
+
{"version":3,"file":"DonationComponent.js","sources":["../../../../../src/components/Donation/components/DonationComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport CampaignContent from './CampaignContent';\nimport Button from '../../internal/Button';\nimport Img from '../../internal/Img';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport DisclaimerMessage from '../../internal/DisclaimerMessage';\nimport { DonationAmount, DonationComponentProps } from './types';\nimport useImage from '../../../core/Context/useImage';\nimport FixedAmounts from './FixedAmounts';\nimport Roundup from './Roundup';\nimport { getAmountLabel, getRoundupAmount, getRoundupAmountLabel } from './utils';\nimport { ComponentMethodsRef, UIElementStatus } from '../../types';\nimport '../Donation.scss';\n\nexport default function DonationComponent(props: Readonly<DonationComponentProps>) {\n const { donation, commercialTxAmount, onAmountSelected, onCancel, onDonate, showCancelButton = true, termsAndConditionsUrl } = props;\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { currency, type } = donation;\n const isRoundupDonation = type === 'roundup';\n const [status, setStatus] = useState<UIElementStatus>('ready');\n const [isValid, setIsValid] = useState<boolean>(isRoundupDonation);\n const [amount, setAmount] = useState<DonationAmount>({\n currency,\n value: isRoundupDonation ? getRoundupAmount(donation.maxRoundupAmount, commercialTxAmount) : null\n });\n\n const donationComponentRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus\n });\n\n useEffect(() => {\n props.setComponentRef(donationComponentRef.current);\n }, [props.setComponentRef]);\n\n const handleAmountSelected = ({ target }) => {\n const value = parseInt(target.value, 10);\n setIsValid(true);\n setAmount((amount: DonationAmount) => ({ ...amount, value }));\n\n onAmountSelected({ data: { amount: { ...amount, value } } });\n };\n\n const handleDonate = () => {\n setStatus('loading');\n onDonate({ data: { amount } });\n };\n\n const handleDecline = () => {\n setStatus('ready');\n onCancel({ data: { amount }, isValid });\n };\n\n useEffect(() => {\n props.onChange({ data: { amount }, isValid });\n }, [amount, isValid]);\n\n if (status === 'error') {\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({ imageFolder: 'components/' })('error')}\n alt={i18n.get('error.message.unknown')}\n />\n <div className=\"adyen-checkout__status__text\">{i18n.get('error.message.unknown')}</div>\n </div>\n );\n }\n\n if (status === 'success') {\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--success\"\n src={getImage({ imageFolder: 'components/' })('heart')}\n alt={i18n.get('thanksForYourSupport')}\n />\n\n <div className=\"adyen-checkout__status__text\">{i18n.get('thanksForYourSupport')}</div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <CampaignContent {...props} />\n\n <div className=\"adyen-checkout__adyen-giving-actions\">\n {termsAndConditionsUrl && <DisclaimerMessage message={i18n.get('donationTermsCondition')} urls={[termsAndConditionsUrl]} />}\n {isRoundupDonation ? (\n <Roundup\n donationAmount={getRoundupAmountLabel(i18n, { maxRoundupAmount: donation.maxRoundupAmount, commercialTxAmount, currency })}\n originalPaymentAmount={getAmountLabel(i18n, { value: commercialTxAmount, currency })}\n status={status}\n onDonateButtonClicked={handleDonate}\n ></Roundup>\n ) : (\n <FixedAmounts\n selectedAmount={amount.value}\n values={donation.values}\n currency={currency}\n status={status}\n onAmountSelected={handleAmountSelected}\n onDonateButtonClicked={handleDonate}\n ></FixedAmounts>\n )}\n {showCancelButton && (\n <Button\n classNameModifiers={['decline']}\n variant=\"ghost\"\n onClick={handleDecline}\n disabled={status === 'loading'}\n label={`${i18n.get('notNowButton')} ›`}\n />\n )}\n </div>\n </div>\n );\n}\n\nDonationComponent.defaultProps = {\n onCancel: () => {},\n onChange: () => {},\n onDonate: () => {},\n donation: {},\n showCancelButton: true\n};\n"],"names":["DonationComponent","props","donation","commercialTxAmount","onAmountSelected","onCancel","onDonate","showCancelButton","termsAndConditionsUrl","i18n","useCoreContext","getImage","useImage","currency","type","isRoundupDonation","status","setStatus","useState","isValid","setIsValid","amount","setAmount","value","getRoundupAmount","maxRoundupAmount","donationComponentRef","useRef","useEffect","setComponentRef","current","handleDonate","data","onChange","h","div","className","Img","src","imageFolder","alt","get","CampaignContent","DisclaimerMessage","message","urls","Roundup","donationAmount","getRoundupAmountLabel","originalPaymentAmount","getAmountLabel","onDonateButtonClicked","FixedAmounts","selectedAmount","values","target","parseInt","Button","classNameModifiers","variant","onClick","disabled","label","defaultProps"],"mappings":"8nBAee,SAASA,EAAkBC,GACtC,MAAMC,SAAEA,EAAQC,mBAAEA,EAAkBC,iBAAEA,EAAgBC,SAAEA,EAAQC,SAAEA,EAAQC,iBAAEA,GAAmB,EAAIC,sBAAEA,GAA0BP,GACzHQ,KAAEA,GAASC,IACXC,EAAWC,KACXC,SAAEA,EAAQC,KAAEA,GAASZ,EACrBa,EAA6B,YAATD,GACnBE,EAAQC,GAAaC,EAA0B,UAC/CC,EAASC,GAAcF,EAAkBH,IACzCM,EAAQC,GAAaJ,EAAyB,CACjDL,WACAU,MAAOR,EAAoBS,EAAiBtB,EAASuB,iBAAkBtB,GAAsB,OAG3FuB,EAAuBC,EAA4B,CACrDV,UAAWA,IAGfW,EAAU,KACN3B,EAAM4B,gBAAgBH,EAAqBI,UAC5C,CAAC7B,EAAM4B,kBAEV,MAQME,EAAe,KACjBd,EAAU,WACVX,EAAS,CAAE0B,KAAM,CAAEX,aAYvB,OAJAO,EAAU,KACN3B,EAAMgC,SAAS,CAAED,KAAM,CAAEX,UAAUF,aACpC,CAACE,EAAQF,IAEG,UAAXH,EAEIkB,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,EAAAA,CACGD,UAAU,mEACVE,IAAK3B,EAAS,CAAE4B,YAAa,eAAxB5B,CAAyC,SAC9C6B,IAAK/B,EAAKgC,IAAI,2BAElBP,EAACC,MAAAA,CAAIC,UAAU,gCAAgC3B,EAAKgC,IAAI,2BAKrD,YAAXzB,EAEIkB,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,EAAAA,CACGD,UAAU,qEACVE,IAAK3B,EAAS,CAAE4B,YAAa,eAAxB5B,CAAyC,SAC9C6B,IAAK/B,EAAKgC,IAAI,0BAGlBP,EAACC,MAAAA,CAAIC,UAAU,gCAAgC3B,EAAKgC,IAAI,0BAMhEP,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACQ,EAAoBzC,GAErBiC,EAACC,MAAAA,CAAIC,UAAU,wCACV5B,GAAyB0B,EAACS,EAAAA,CAAkBC,QAASnC,EAAKgC,IAAI,0BAA2BI,KAAM,CAACrC,KAChGO,EACGmB,EAACY,EAAAA,CACGC,eAAgBC,EAAsBvC,EAAM,CAAEgB,iBAAkBvB,EAASuB,iBAAkBtB,qBAAoBU,aAC/GoC,sBAAuBC,EAAezC,EAAM,CAAEc,MAAOpB,EAAoBU,aACzEG,OAAQA,EACRmC,sBAAuBpB,IAG3BG,EAACkB,EAAAA,CACGC,eAAgBhC,EAAOE,MACvB+B,OAAQpD,EAASoD,OACjBzC,SAAUA,EACVG,OAAQA,EACRZ,iBApES,EAAGmD,aAC5B,MAAMhC,EAAQiC,SAASD,EAAOhC,MAAO,IACrCH,GAAW,GACXE,EAAWD,QAAiCA,EAAQE,WAEpDnB,EAAiB,CAAE4B,KAAM,CAAEX,OAAQ,IAAKA,EAAQE,aAgEhC4B,sBAAuBpB,IAG9BxB,GACG2B,EAACuB,EAAAA,CACGC,mBAAoB,CAAC,WACrBC,QAAQ,QACRC,QA/DE,KAClB3C,EAAU,SACVZ,EAAS,CAAE2B,KAAM,CAAEX,UAAUF,aA8Db0C,SAAqB,YAAX7C,EACV8C,MAAO,GAAGrD,EAAKgC,IAAI,uBAM3C,CAEAzC,EAAkB+D,aAAe,CAC7B1D,SAAU,OACV4B,SAAU,OACV3B,SAAU,OACVJ,SAAU,CAAA,EACVK,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FixedAmounts.js","sources":["../../../../../src/components/Donation/components/FixedAmounts.tsx"],"sourcesContent":["import { h, Fragment } from 'preact';\nimport ButtonGroup from '../../internal/ButtonGroup';\nimport Button from '../../internal/Button';\nimport { getAmountLabel } from './utils';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport {
|
|
1
|
+
{"version":3,"file":"FixedAmounts.js","sources":["../../../../../src/components/Donation/components/FixedAmounts.tsx"],"sourcesContent":["import { h, Fragment } from 'preact';\nimport ButtonGroup from '../../internal/ButtonGroup';\nimport Button from '../../internal/Button';\nimport { getAmountLabel } from './utils';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { UIElementStatus } from '../../types';\n\ninterface FixedAmountsProps {\n selectedAmount: number;\n currency: string;\n values: Array<number>;\n status: UIElementStatus;\n onAmountSelected: ({ target }) => void;\n onDonateButtonClicked: () => void;\n}\nexport default function FixedAmounts(props: Readonly<FixedAmountsProps>) {\n const { currency, values, selectedAmount, status, onAmountSelected, onDonateButtonClicked } = props;\n const { i18n } = useCoreContext();\n\n return (\n <Fragment>\n <div className=\"adyen-checkout__amounts\">\n <ButtonGroup\n options={values.map(value => ({\n value,\n label: getAmountLabel(i18n, { value, currency }),\n disabled: status === 'loading',\n selected: value === selectedAmount\n }))}\n name=\"amount\"\n onChange={onAmountSelected}\n />\n </div>\n <Button\n classNameModifiers={['donate']}\n onClick={onDonateButtonClicked}\n label={i18n.get('donateButton')}\n disabled={selectedAmount === null}\n status={status}\n />\n </Fragment>\n );\n}\n"],"names":["FixedAmounts","props","currency","values","selectedAmount","status","onAmountSelected","onDonateButtonClicked","i18n","useCoreContext","h","Fragment","div","className","ButtonGroup","options","map","value","label","getAmountLabel","disabled","selected","name","onChange","Button","classNameModifiers","onClick","get"],"mappings":"iTAee,SAASA,EAAaC,GACjC,MAAMC,SAAEA,EAAQC,OAAEA,EAAMC,eAAEA,EAAcC,OAAEA,EAAMC,iBAAEA,EAAgBC,sBAAEA,GAA0BN,GACxFO,KAAEA,GAASC,IAEjB,OACIC,EAACC,OACGD,EAACE,MAAAA,CAAIC,UAAU,2BACXH,EAACI,EAAAA,CACGC,QAASZ,EAAOa,IAAIC,KAChBA,QACAC,MAAOC,EAAeX,EAAM,CAAES,QAAOf,aACrCkB,SAAqB,YAAXf,EACVgB,SAAUJ,IAAUb,KAExBkB,KAAK,SACLC,SAAUjB,KAGlBI,EAACc,EAAAA,CACGC,mBAAoB,CAAC,UACrBC,QAASnB,EACTW,MAAOV,EAAKmB,IAAI,gBAChBP,SAA6B,OAAnBhB,EACVC,OAAQA,IAIxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../external/preact/dist/preact.js";import n from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as t}from"../tx-variants.js";import{BasePayPalElement as r}from"./models/BasePayPalElement.js";import{PayPalCreditComponent as o}from"./components/PayPalCreditComponent.js";function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class p extends r{componentToRender(){const{onShippingAddressChange:t,onShippingOptionsChange:r}=this.props;return this.paypalService?e(o,{setComponentRef:this.setComponentRef,paypalService:this.paypalService,...t&&{onShippingAddressChange:this.handleOnShippingAddressChange},...r&&{onShippingOptionsChange:this.handleOnShippingOptionsChange},commit:this.props.commit,vault:this.props.vault,presentationModeOptions:this.props.presentationModeOptions,onSubmit:this.handleSubmit,onApprove:this.handleOnApprove,onCancel:()=>this.handleError(new n("CANCEL")),onError:e=>this.handleError(new n("ERROR",String(e),{cause:e}))}):null}constructor(...e){super(...e),i(this,"fundingSource","credit")}}i(p,"type",t.paypal_credit);export{p as default};
|
|
2
|
+
//# sourceMappingURL=PayPalCredit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalCredit.js","sources":["../../../../src/components/PayPal/PayPalCredit.tsx"],"sourcesContent":["import { h } from 'preact';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\n\nimport type { PayPalCreditConfiguration, SupportedPayPalFundingSources } from './types';\n\nimport { BasePayPalElement } from './models/BasePayPalElement';\nimport { PayPalCreditComponent } from './components/PayPalCreditComponent';\n\nclass PayPalCreditElement extends BasePayPalElement<PayPalCreditConfiguration> {\n public static readonly type = TxVariants.paypal_credit;\n\n protected override fundingSource: SupportedPayPalFundingSources = 'credit';\n\n protected override componentToRender(): h.JSX.Element | null {\n const { onShippingAddressChange, onShippingOptionsChange } = this.props;\n\n if (!this.paypalService) return null;\n\n return (\n <PayPalCreditComponent\n setComponentRef={this.setComponentRef}\n paypalService={this.paypalService}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n commit={this.props.commit}\n vault={this.props.vault}\n presentationModeOptions={this.props.presentationModeOptions}\n onSubmit={this.handleSubmit}\n onApprove={this.handleOnApprove}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onError={error => this.handleError(new AdyenCheckoutError('ERROR', String(error), { cause: error }))}\n />\n );\n }\n}\n\nexport default PayPalCreditElement;\n"],"names":["PayPalCreditElement","BasePayPalElement","componentToRender","onShippingAddressChange","onShippingOptionsChange","this","props","paypalService","h","PayPalCreditComponent","setComponentRef","handleOnShippingAddressChange","handleOnShippingOptionsChange","commit","vault","presentationModeOptions","onSubmit","handleSubmit","onApprove","handleOnApprove","onCancel","handleError","AdyenCheckoutError","onError","error","String","cause","super","args","_define_property","fundingSource","type","TxVariants","paypal_credit"],"mappings":"mbASA,MAAMA,UAA4BC,EAKXC,iBAAAA,GACf,MAAMC,wBAAEA,EAAuBC,wBAAEA,GAA4BC,KAAKC,MAElE,OAAKD,KAAKE,cAGNC,EAACC,EAAAA,CACGC,gBAAiBL,KAAKK,gBACtBH,cAAeF,KAAKE,iBACfJ,GAA2B,CAAEA,wBAAyBE,KAAKM,kCAC3DP,GAA2B,CAAEA,wBAAyBC,KAAKO,+BAChEC,OAAQR,KAAKC,MAAMO,OACnBC,MAAOT,KAAKC,MAAMQ,MAClBC,wBAAyBV,KAAKC,MAAMS,wBACpCC,SAAUX,KAAKY,aACfC,UAAWb,KAAKc,gBAChBC,SAAU,IAAMf,KAAKgB,YAAY,IAAIC,EAAmB,WACxDC,QAASC,GAASnB,KAAKgB,YAAY,IAAIC,EAAmB,QAASG,OAAOD,GAAQ,CAAEE,MAAOF,OAdnE,IAiBpC,mBAzBJG,SAAAC,GAGIC,OAAmBC,gBAA+C,WAFlED,EADE7B,EACqB+B,OAAOC,EAAWC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../external/preact/dist/preact.js";import n from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as t}from"../tx-variants.js";import{BasePayPalElement as s}from"./models/BasePayPalElement.js";import{PayPalPaylaterComponent as o}from"./components/PayPalPaylaterComponent.js";function p(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class r extends s{formatData(){const{isExpress:e}=this.props;return{paymentMethod:{type:this.type,subtype:e?"express":r.subtype},browserInfo:this.browserInfo}}get paypalComponents(){return["paypal-payments","paypal-messages"]}componentToRender(){const{onShippingAddressChange:t,onShippingOptionsChange:s}=this.props;return this.paypalService?e(o,{setComponentRef:this.setComponentRef,paypalService:this.paypalService,...t&&{onShippingAddressChange:this.handleOnShippingAddressChange},...s&&{onShippingOptionsChange:this.handleOnShippingOptionsChange},commit:this.props.commit,presentationModeOptions:this.props.presentationModeOptions,hidePayPalMessaging:this.props.hidePayPalMessaging,messagingContentOptions:this.props.messagingContentOptions,countryCode:this.props.countryCode,onSubmit:this.handleSubmit,onApprove:this.handleOnApprove,onCancel:()=>this.handleError(new n("CANCEL")),onError:e=>this.handleError(new n("ERROR",String(e),{cause:e}))}):null}constructor(...e){super(...e),p(this,"fundingSource","paylater")}}p(r,"type",t.paypal_paylater);export{r as default};
|
|
2
|
+
//# sourceMappingURL=PayPalPaylater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalPaylater.js","sources":["../../../../src/components/PayPal/PayPalPaylater.tsx"],"sourcesContent":["import { h } from 'preact';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\n\nimport type { PayPalPayLaterConfiguration, SupportedPayPalFundingSources } from './types';\n\nimport { BasePayPalElement } from './models/BasePayPalElement';\nimport { PayPalPaylaterComponent } from './components/PayPalPaylaterComponent';\nimport { PayPalComponents } from './paypal-js-types';\n\nclass PayPalPaylaterElement extends BasePayPalElement<PayPalPayLaterConfiguration> {\n public static readonly type = TxVariants.paypal_paylater;\n\n protected override fundingSource: SupportedPayPalFundingSources = 'paylater';\n\n protected formatData() {\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n subtype: isExpress ? 'express' : PayPalPaylaterElement.subtype\n },\n browserInfo: this.browserInfo\n };\n }\n\n protected override get paypalComponents(): PayPalComponents {\n return ['paypal-payments', 'paypal-messages'];\n }\n\n protected override componentToRender(): h.JSX.Element | null {\n const { onShippingAddressChange, onShippingOptionsChange } = this.props;\n\n if (!this.paypalService) return null;\n\n return (\n <PayPalPaylaterComponent\n setComponentRef={this.setComponentRef}\n paypalService={this.paypalService}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n commit={this.props.commit}\n presentationModeOptions={this.props.presentationModeOptions}\n hidePayPalMessaging={this.props.hidePayPalMessaging}\n messagingContentOptions={this.props.messagingContentOptions}\n countryCode={this.props.countryCode}\n onSubmit={this.handleSubmit}\n onApprove={this.handleOnApprove}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onError={error => this.handleError(new AdyenCheckoutError('ERROR', String(error), { cause: error }))}\n />\n );\n }\n}\n\nexport default PayPalPaylaterElement;\n"],"names":["PayPalPaylaterElement","BasePayPalElement","formatData","isExpress","this","props","paymentMethod","type","subtype","browserInfo","paypalComponents","componentToRender","onShippingAddressChange","onShippingOptionsChange","paypalService","h","PayPalPaylaterComponent","setComponentRef","handleOnShippingAddressChange","handleOnShippingOptionsChange","commit","presentationModeOptions","hidePayPalMessaging","messagingContentOptions","countryCode","onSubmit","handleSubmit","onApprove","handleOnApprove","onCancel","handleError","AdyenCheckoutError","onError","error","String","cause","super","args","_define_property","fundingSource","TxVariants","paypal_paylater"],"mappings":"ubAUA,MAAMA,UAA8BC,EAKtBC,UAAAA,GACN,MAAMC,UAAEA,GAAcC,KAAKC,MAE3B,MAAO,CACHC,cAAe,CACXC,KAAMH,KAAKG,KACXC,QAASL,EAAY,UAAYH,EAAsBQ,SAE3DC,YAAaL,KAAKK,YAE1B,CAEA,oBAAuBC,GACnB,MAAO,CAAC,kBAAmB,kBAC/B,CAEmBC,iBAAAA,GACf,MAAMC,wBAAEA,EAAuBC,wBAAEA,GAA4BT,KAAKC,MAElE,OAAKD,KAAKU,cAGNC,EAACC,EAAAA,CACGC,gBAAiBb,KAAKa,gBACtBH,cAAeV,KAAKU,iBACfF,GAA2B,CAAEA,wBAAyBR,KAAKc,kCAC3DL,GAA2B,CAAEA,wBAAyBT,KAAKe,+BAChEC,OAAQhB,KAAKC,MAAMe,OACnBC,wBAAyBjB,KAAKC,MAAMgB,wBACpCC,oBAAqBlB,KAAKC,MAAMiB,oBAChCC,wBAAyBnB,KAAKC,MAAMkB,wBACpCC,YAAapB,KAAKC,MAAMmB,YACxBC,SAAUrB,KAAKsB,aACfC,UAAWvB,KAAKwB,gBAChBC,SAAU,IAAMzB,KAAK0B,YAAY,IAAIC,EAAmB,WACxDC,QAASC,GAAS7B,KAAK0B,YAAY,IAAIC,EAAmB,QAASG,OAAOD,GAAQ,CAAEE,MAAOF,OAhBnE,IAmBpC,mBA3CJG,SAAAC,GAGIC,OAAmBC,gBAA+C,aAFlED,EADEtC,EACqBO,OAAOiC,EAAWC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import n from"./components/PaypalComponent.js";import s from"./defaultProps.js";import i from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as r}from"./constants.js";import{TxVariants as a}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as o}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as h,InfoEventType as p}from"../../core/Analytics/events/AnalyticsInfoEvent.js";import{sanitizeResponse as d,verifyPaymentDidNotFail as l}from"../internal/UIElement/utils.js";import c from"../../core/Errors/CancelError.js";function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u extends t{formatProps(e){const t=e.configuration?.merchantId,n=e.configuration?.intent,s=0===e.amount?.value?"tokenize":e.intent||n,i="tokenize"===s||e.vault,r="continue"===e.userAction;return{...e,commit:!r&&e.commit,vault:i,configuration:{intent:s,merchantId:t}}}beforeRender(e){const t=new h({type:p.rendered,component:this.type,configData:{...e,showPayButton:this.props.showPayButton},...e?.isExpress&&{isExpress:e.isExpress},...e?.expressPage&&{expressPage:e.expressPage}});this.analytics.sendAnalytics(t)}updatePaymentData(e){e||console.warn("PayPal - Updating payment data with an invalid value"),this.paymentData=e}formatData(){const{isExpress:e,userAction:t}=this.props;return{paymentMethod:{type:u.type,userAction:t,subtype:e?"express":u.subtype}}}get isValid(){return!0}handleResolve(e){if(!this.resolve)return this.handleError(new i("ERROR",r.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new i("ERROR",r.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return new Promise((e,t)=>{this.resolve=e,this.reject=t,this.makePaymentsCall().then(d).then(l).then(this.handleResponse).catch(e=>{if(e instanceof c)return void this.setElementStatus("ready");this.handleFailedResult(e);const t=e instanceof Error?e.message:JSON.stringify(e),n=e?`: ${t}`:"";this.handleReject(`${r.PAYMENT_FAILED}${n}`)})})}handleOnShippingAddressChange(e,t){const{onShippingAddressChange:n}=this.props;return n?n(e,t,this):Promise.resolve()}handleOnShippingOptionsChange(e,t){const{onShippingOptionsChange:n}=this.props;return n?n(e,t,this):Promise.resolve()}componentToRender(){if(!this.props.showPayButton)return null;const{onShippingAddressChange:t,onShippingOptionsChange:s,...r}=this.props;return e(n,{...r,setComponentRef:this.setComponentRef,...t&&{onShippingAddressChange:this.handleOnShippingAddressChange},...s&&{onShippingOptionsChange:this.handleOnShippingOptionsChange},onCancel:()=>this.handleError(new i("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:e=>{this.handleError(new i("ERROR",String(e),{cause:e}))},onScriptLoadFailure:e=>this.handleError(e),onSubmit:this.handleSubmit})}constructor(e,t){super(e,t),m(this,"paymentData",null),m(this,"resolve",null),m(this,"reject",null),m(this,"submit",()=>{this.handleError(new i("IMPLEMENTATION_ERROR",r.SUBMIT_NOT_SUPPORTED))}),m(this,"handleAction",e=>this.updateWithAction(e)),m(this,"updateWithAction",e=>{if(e.paymentMethodType!==this.type)throw new Error("Invalid Action");return e.paymentData&&(this.paymentData=e.paymentData),e.sdkData&&e.sdkData.token?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:e}),this.handleResolve(e.sdkData.token)):this.handleReject(r.NO_TOKEN_PROVIDED),null}),m(this,"handleOnApprove",(e,t)=>{const{onAuthorized:n}=this.props,s={data:{details:Object.entries(e).reduce((e,[t,n])=>(e[t]=n??void 0,e),{}),paymentData:this.paymentData??void 0}};return n?t.order?t.order.get().then(e=>{const t=o(e?.payer),s=o(e?.purchase_units?.[0].shipping,!0);return this.setState({authorizedEvent:e,...t&&{billingAddress:t},...s&&{deliveryAddress:s}}),new Promise((i,r)=>n({authorizedEvent:e,...t&&{billingAddress:t},...s&&{deliveryAddress:s}},{resolve:i,reject:r}))}).then(()=>this.handleAdditionalDetails(s)).catch(e=>this.handleError(new i("ERROR","Something went wrong while parsing PayPal Order",{cause:e}))):(this.handleError(new i("ERROR","PayPal order actions are not available")),Promise.resolve()):(this.handleAdditionalDetails(s),Promise.resolve())}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this)}}m(u,"type",a.paypal),m(u,"subtype","sdk"),m(u,"defaultProps",s);export{u as default};
|
|
1
|
+
import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import n from"./components/PaypalComponent.js";import i from"./defaultProps.js";import s from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as a}from"./constants.js";import{TxVariants as r}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as o}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as p,InfoEventType as h}from"../../core/Analytics/events/AnalyticsInfoEvent.js";import{sanitizeResponse as l,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import c from"../../core/Errors/CancelError.js";import{PayPalSdkLoader as u}from"./services/PayPalSdkLoader.js";import{PayPalService as y}from"./services/PayPalService.js";import{PayPalComponentV6 as m}from"./components/PayPalComponentV6.js";import P from"./services/request-paypal-order-details.js";import{isPayPalServiceConfigEqual as g}from"./utils/is-paypal-service-config-equal.js";import{SUPPORTED_EXPRESS_PRESENTATION_MODE_OPTIONS as v}from"./config.js";import S from"../../utils/browserInfo.js";function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class O extends t{initializePayPalV6(){const e=new u({analytics:this.analytics,environment:this.props.environment,nonce:this.props.usePayPalV6?.nonce});this.paypalService=new y({sdkLoader:e,...this.paypalServiceConfig}),this.onPayPalServiceReady(this.paypalService.initialize())}update(e){const t=this.paypalServiceConfig;return this.props=this.formatProps({...this.props,...e}),this.state={},this.refreshPayPalService(t),this.unmount().mount(this._node)}refreshPayPalService(e){if(!this.paypalService)return;const t=this.paypalServiceConfig;g(e,t)||this.onPayPalServiceReady(this.paypalService.refresh(t))}get paypalServiceConfig(){const e=this.props.usePayPalV6,t=["paypal-payments"];return e?.blockPayPalVenmoButton||t.push("venmo-payments"),e?.onCreatePayPalMessages&&t.push("paypal-messages"),{loadingContext:this.props.loadingContext??"",clientKey:this.props.clientKey??"",merchantId:this.props.configuration?.merchantId??"",countryCode:this.props.countryCode??"",amount:this.props.amount,vault:Boolean(e?.vault),locale:e?.locale,pageType:e?.pageType,environment:this.props.environment,components:t}}onPayPalServiceReady(e){e.then(()=>{const{onCreatePayPalMessages:e}=this.props.usePayPalV6??{};e&&this.paypalService?.getInstance()?.createPayPalMessages&&e(this.paypalService.getInstance().createPayPalMessages)}).catch(e=>{this.handleError(e instanceof s?e:new s("ERROR","Something went wrong while initializing PayPal",{cause:e}))})}async isAvailable(){if(this.props.usePayPalV6){if(!this.paypalService)throw new s("ERROR","PayPal is not available");if(await this.paypalService.isSdkLoaded(),!this.paypalService.getEligiblePaymentMethods().isEligible("paypal"))throw new s("ERROR","PayPal is not available")}}get sdkDataPaymentMethodConfiguration(){return this.props.usePayPalV6?{supportsPayPalV6:!0}:void 0}formatProps(e){const t=e.configuration?.merchantId,n=e.configuration?.intent,i=0===e.amount?.value?"tokenize":e.intent||n,s="tokenize"===i||e.vault,a="continue"===e.userAction;return{...e,commit:!a&&e.commit,vault:s,configuration:{intent:i,merchantId:t}}}beforeRender(e){const t=new p({type:h.rendered,component:this.type,configData:{...e,showPayButton:this.props.showPayButton},...e?.isExpress&&{isExpress:e.isExpress},...e?.expressPage&&{expressPage:e.expressPage}});this.analytics.sendAnalytics(t)}updatePaymentData(e){e||console.warn("PayPal - Updating payment data with an invalid value"),this.paymentData=e}get browserInfo(){return S()}formatData(){const{isExpress:e,userAction:t,usePayPalV6:n}=this.props,i=0===this.props.amount?.value;return{paymentMethod:{type:O.type,subtype:e?"express":O.subtype,...!n&&{userAction:t}},...n&&{browserInfo:this.browserInfo},...n&&(n.vault||i)&&{storePaymentMethod:!0}}}get isValid(){return!0}handleOnApprove(e,t){const{onAuthorized:n}=this.props,i={data:{details:Object.entries(e).reduce((e,[t,n])=>(e[t]=n??void 0,e),{}),paymentData:this.paymentData??void 0}};return n?t.order?t.order.get().then(e=>{const t=o(e?.payer),i=o(e?.purchase_units?.[0].shipping,!0);return this.setState({authorizedEvent:e,...t&&{billingAddress:t},...i&&{deliveryAddress:i}}),new Promise((s,a)=>n({authorizedEvent:e,...t&&{billingAddress:t},...i&&{deliveryAddress:i}},{resolve:s,reject:a}))}).then(()=>this.handleAdditionalDetails(i)).catch(e=>this.handleError(new s("ERROR","Something went wrong with finalizing the PayPal order",{cause:e}))):(this.handleError(new s("ERROR","PayPal order actions are not available")),Promise.resolve()):(this.handleAdditionalDetails(i),Promise.resolve())}handleOnApproveV6(e){const t=this.props.usePayPalV6?.onAuthorized;let n;if("orderId"in e){const{orderId:t,payerId:i,fundingSource:s}=e;n={data:{details:{orderID:t,payerID:i,paymentSource:s},paymentData:this.paymentData??void 0}}}if("vaultSetupToken"in e){const{vaultSetupToken:t,payerId:i,fundingSource:s}=e;n={data:{details:{vaultToken:t,payerID:i,paymentSource:s},paymentData:this.paymentData??void 0}}}return n?t&&"orderId"in e?P(this.props.loadingContext??"",{clientKey:this.props.clientKey??"",merchantId:this.props.configuration?.merchantId??"",orderId:e.orderId}).then(e=>(this.setState({authorizedEvent:e.payPalOrder,...e.billingAddress&&{billingAddress:e.billingAddress},...e.deliveryAddress&&{deliveryAddress:e.deliveryAddress},...e.shopperName&&{shopperName:e.shopperName}}),new Promise((n,i)=>t({authorizedEvent:e.payPalOrder,...e.billingAddress&&{billingAddress:e.billingAddress},...e.deliveryAddress&&{deliveryAddress:e.deliveryAddress},...e.shopperName&&{shopperName:e.shopperName}},{resolve:n,reject:i})))).then(()=>this.handleAdditionalDetails(n)).catch(e=>this.handleError(new s("ERROR","Something went wrong with finalizing the PayPal order",{cause:e}))):(this.handleAdditionalDetails(n),Promise.resolve()):(this.handleError(new s("ERROR","Missing `orderId` or `vaultSetupToken` in PayPal approval data")),Promise.resolve())}handleResolve(e){if(!this.resolve)return this.handleError(new s("ERROR",a.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new s("ERROR",a.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return new Promise((e,t)=>{this.resolve=e,this.reject=t,this.makePaymentsCall().then(l).then(d).then(this.handleResponse).catch(e=>{if(e instanceof c)return void this.setElementStatus("ready");this.handleFailedResult(e);const t=e instanceof Error?e.message:JSON.stringify(e),n=e?`: ${t}`:"";this.handleReject(`${a.PAYMENT_FAILED}${n}`)})})}handleOnShippingAddressChange(e,t){const{onShippingAddressChange:n}=this.props;return n?n(e,t,this):Promise.resolve()}handleOnShippingOptionsChange(e,t){const{onShippingOptionsChange:n}=this.props;return n?n(e,t,this):Promise.resolve()}handleOnShippingAddressChangeV6(e){const{usePayPalV6:t}=this.props;return t?.onShippingAddressChange?t.onShippingAddressChange(e,this):Promise.resolve()}handleOnShippingOptionsChangeV6(e){const{usePayPalV6:t}=this.props;return t?.onShippingOptionsChange?t.onShippingOptionsChange(e,this):Promise.resolve()}componentToRender(){if(this.props.usePayPalV6){const{usePayPalV6:t}=this.props;return this.paypalService?e(m,{setComponentRef:this.setComponentRef,paypalService:this.paypalService,...t.onShippingAddressChange&&{onShippingAddressChange:this.handleOnShippingAddressChangeV6},...t.onShippingOptionsChange&&{onShippingOptionsChange:this.handleOnShippingOptionsChangeV6},style:t.style,commit:t.commit,vault:t.vault,blockPayPalButtonVariants:t.blockPayPalButtonVariants,blockPayPalCreditButton:t.blockPayPalCreditButton,blockPayPalPayLaterButton:t.blockPayPalPayLaterButton,blockPayPalVenmoButton:t.blockPayPalVenmoButton,presentationModeOptions:t.presentationModeOptions,environment:this.props.environment,onSubmit:this.handleSubmit,onApprove:this.handleOnApproveV6,onCancel:()=>this.handleError(new s("CANCEL")),onError:e=>this.handleError(new s("ERROR",String(e),{cause:e}))}):null}if(!this.props.showPayButton)return null;const{onShippingAddressChange:t,onShippingOptionsChange:i,...a}=this.props;return e(n,{...a,setComponentRef:this.setComponentRef,...t&&{onShippingAddressChange:this.handleOnShippingAddressChange},...i&&{onShippingOptionsChange:this.handleOnShippingOptionsChange},onCancel:()=>this.handleError(new s("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:e=>{this.handleError(new s("ERROR",String(e),{cause:e}))},onScriptLoadFailure:e=>this.handleError(e),onSubmit:this.handleSubmit})}constructor(e,t){if(super(e,t),f(this,"paymentData",null),f(this,"resolve",null),f(this,"reject",null),f(this,"paypalService",void 0),f(this,"submit",()=>{this.handleError(new s("IMPLEMENTATION_ERROR",a.SUBMIT_NOT_SUPPORTED))}),f(this,"handleAction",e=>this.updateWithAction(e)),f(this,"updateWithAction",e=>{if(e.paymentMethodType!==this.type)throw new Error("Invalid Action");return e.paymentData&&(this.paymentData=e.paymentData),e?.sdkData?.token?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:e}),this.handleResolve(e.sdkData.token)):this.handleReject(a.NO_TOKEN_PROVIDED),null}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this),this.handleOnApprove=this.handleOnApprove.bind(this),this.handleOnShippingAddressChangeV6=this.handleOnShippingAddressChangeV6.bind(this),this.handleOnShippingOptionsChangeV6=this.handleOnShippingOptionsChangeV6.bind(this),this.handleOnApproveV6=this.handleOnApproveV6.bind(this),this.initializePayPalV6=this.initializePayPalV6.bind(this),this.props.usePayPalV6){const{isExpress:e}=this.props,{onShippingAddressChange:t,onShippingOptionsChange:n,presentationModeOptions:i}=this.props.usePayPalV6;if(!e&&(t||n))throw new s("IMPLEMENTATION_ERROR",'PayPal - You must set "isExpress" flag to "true" in order to use "onShippingAddressChange" and/or "onShippingOptionsChange" callbacks');if(e&&i?.presentationMode&&!v.includes(i.presentationMode))throw new s("IMPLEMENTATION_ERROR",`PayPal - Unsupported presentation mode: ${i.presentationMode} for express checkout`);this.initializePayPalV6()}}}f(O,"type",r.paypal),f(O,"subtype","sdk"),f(O,"defaultProps",i);export{O as default};
|
|
2
2
|
//# sourceMappingURL=Paypal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paypal.js","sources":["../../../../src/components/PayPal/Paypal.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PaypalComponent from './components/PaypalComponent';\nimport defaultProps from './defaultProps';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { ERRORS } from './constants';\nimport { TxVariants } from '../tx-variants';\nimport { formatPaypalOrderContactToAdyenFormat } from './utils/format-paypal-order-contact-to-adyen-format';\n\nimport type { ICore } from '../../core/types';\nimport type { PaymentAction, PaymentResponseData } from '../../types/global-types';\nimport type { Intent, PayPalConfiguration } from './types';\nimport type {\n PayPalOnApproveActions,\n PayPalOnApproveData,\n PayPalOnShippingAddressChangeActions,\n PayPalOnShippingAddressChangeData,\n PayPalOnShippingOptionsChangeActions,\n PayPalOnShippingOptionsChangeData,\n PayPalOrderResponseBody\n} from './paypal-js-types';\n\nimport { AnalyticsInfoEvent, InfoEventType } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport CancelError from '../../core/Errors/CancelError';\nimport './Paypal.scss';\n\nclass PaypalElement extends UIElement<PayPalConfiguration> {\n public static readonly type = TxVariants.paypal;\n public static readonly subtype = 'sdk';\n\n public paymentData: string | null = null;\n\n private resolve: ((value: string) => void) | null = null;\n private reject: ((error?: Error) => void) | null = null;\n\n protected static readonly defaultProps = defaultProps;\n\n constructor(checkout: ICore, props?: PayPalConfiguration) {\n super(checkout, props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnShippingAddressChange = this.handleOnShippingAddressChange.bind(this);\n this.handleOnShippingOptionsChange = this.handleOnShippingOptionsChange.bind(this);\n }\n\n formatProps(props: PayPalConfiguration): PayPalConfiguration {\n const merchantId = props.configuration?.merchantId;\n const intentFromConfig = props.configuration?.intent;\n const isZeroAuth = props.amount?.value === 0;\n const intent: Intent | undefined = isZeroAuth ? 'tokenize' : props.intent || intentFromConfig;\n const vault = intent === 'tokenize' || props.vault;\n\n const displayContinueToReviewPageButton = props.userAction === 'continue';\n\n return {\n ...props,\n commit: displayContinueToReviewPageButton ? false : props.commit,\n vault,\n configuration: {\n intent,\n merchantId\n }\n };\n }\n\n protected override beforeRender(configSetByMerchant?: PayPalConfiguration) {\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n public submit = () => {\n this.handleError(new AdyenCheckoutError('IMPLEMENTATION_ERROR', ERRORS.SUBMIT_NOT_SUPPORTED));\n };\n\n /**\n * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount\n * @param paymentData - Payment data value\n */\n public updatePaymentData(paymentData: string): void {\n if (!paymentData) console.warn('PayPal - Updating payment data with an invalid value');\n this.paymentData = paymentData;\n }\n\n /**\n * Formats the component data output\n */\n protected formatData() {\n const { isExpress, userAction } = this.props;\n\n return {\n paymentMethod: {\n type: PaypalElement.type,\n userAction,\n subtype: isExpress ? 'express' : PaypalElement.subtype\n }\n };\n }\n\n public handleAction = (action: PaymentAction) => {\n return this.updateWithAction(action);\n };\n\n public updateWithAction = (action: PaymentAction) => {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n\n if (action.paymentData) {\n this.paymentData = action.paymentData;\n }\n\n if (action.sdkData && action.sdkData.token) {\n this.onActionHandled({ componentType: this.type, actionDescription: 'sdk-loaded', originalAction: action });\n this.handleResolve(action.sdkData.token);\n } else {\n this.handleReject(ERRORS.NO_TOKEN_PROVIDED);\n }\n\n return null;\n };\n\n /**\n * Dropin Validation\n *\n * @remarks\n * Paypal does not require any specific Dropin validation\n */\n get isValid() {\n return true;\n }\n\n private readonly handleOnApprove = (data: PayPalOnApproveData, actions: PayPalOnApproveActions): Promise<void> => {\n const { onAuthorized } = this.props;\n\n const details = Object.entries(data).reduce<Record<string, string | undefined>>((result, [key, value]) => {\n result[key] = value ?? undefined;\n return result;\n }, {});\n\n const state = { data: { details, paymentData: this.paymentData ?? undefined } };\n\n if (!onAuthorized) {\n this.handleAdditionalDetails(state);\n return Promise.resolve();\n }\n\n if (!actions.order) {\n this.handleError(new AdyenCheckoutError('ERROR', 'PayPal order actions are not available'));\n return Promise.resolve();\n }\n\n return actions.order\n .get()\n .then((paypalOrder: PayPalOrderResponseBody) => {\n const billingAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.payer);\n const deliveryAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.purchase_units?.[0].shipping, true);\n\n this.setState({\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error => this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong while parsing PayPal Order', { cause: error })));\n };\n\n handleResolve(token: string) {\n if (!this.resolve) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.resolve(token);\n }\n\n handleReject(errorMessage: string) {\n if (!this.reject) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.reject(new Error(errorMessage));\n }\n\n private handleSubmit(): Promise<string> {\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n\n this.makePaymentsCall()\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then(this.handleResponse)\n .catch((e: PaymentResponseData | Error) => {\n if (e instanceof CancelError) {\n this.setElementStatus('ready');\n return;\n }\n this.handleFailedResult(e as PaymentResponseData);\n const errorDetail = e instanceof Error ? e.message : JSON.stringify(e);\n const errorMessage = e ? `: ${errorDetail}` : '';\n this.handleReject(`${ERRORS.PAYMENT_FAILED}${errorMessage}`);\n });\n });\n }\n\n /**\n * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingAddressChange(data: PayPalOnShippingAddressChangeData, actions: PayPalOnShippingAddressChangeActions): Promise<void> {\n const { onShippingAddressChange } = this.props;\n\n if (!onShippingAddressChange) return Promise.resolve();\n\n return onShippingAddressChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingOptionsChange(data: PayPalOnShippingOptionsChangeData, actions: PayPalOnShippingOptionsChangeActions): Promise<void> {\n const { onShippingOptionsChange } = this.props;\n\n if (!onShippingOptionsChange) return Promise.resolve();\n\n return onShippingOptionsChange(data, actions, this);\n }\n\n protected override componentToRender(): h.JSX.Element | null {\n if (!this.props.showPayButton) return null;\n\n const { onShippingAddressChange, onShippingOptionsChange, ...rest } = this.props;\n\n return (\n <PaypalComponent\n {...rest}\n setComponentRef={this.setComponentRef}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onChange={this.setState}\n onApprove={this.handleOnApprove}\n onError={error => {\n this.handleError(new AdyenCheckoutError('ERROR', String(error), { cause: error }));\n }}\n onScriptLoadFailure={error => this.handleError(error)}\n onSubmit={this.handleSubmit}\n />\n );\n }\n}\n\nexport default PaypalElement;\n"],"names":["PaypalElement","UIElement","formatProps","props","merchantId","configuration","intentFromConfig","intent","amount","value","vault","displayContinueToReviewPageButton","userAction","commit","beforeRender","configSetByMerchant","event","AnalyticsInfoEvent","type","InfoEventType","rendered","component","this","configData","showPayButton","isExpress","expressPage","analytics","sendAnalytics","updatePaymentData","paymentData","console","warn","formatData","paymentMethod","subtype","isValid","handleResolve","token","resolve","handleError","AdyenCheckoutError","ERRORS","WRONG_INSTANCE","handleReject","errorMessage","reject","Error","handleSubmit","Promise","makePaymentsCall","then","sanitizeResponse","verifyPaymentDidNotFail","handleResponse","catch","e","CancelError","setElementStatus","handleFailedResult","errorDetail","message","JSON","stringify","PAYMENT_FAILED","handleOnShippingAddressChange","data","actions","onShippingAddressChange","handleOnShippingOptionsChange","onShippingOptionsChange","componentToRender","rest","h","PaypalComponent","setComponentRef","onCancel","onChange","setState","onApprove","handleOnApprove","onError","error","String","cause","onScriptLoadFailure","onSubmit","constructor","checkout","super","_define_property","submit","SUBMIT_NOT_SUPPORTED","handleAction","action","updateWithAction","paymentMethodType","sdkData","onActionHandled","componentType","actionDescription","originalAction","NO_TOKEN_PROVIDED","onAuthorized","state","details","Object","entries","reduce","result","key","undefined","order","get","paypalOrder","billingAddress","formatPaypalOrderContactToAdyenFormat","payer","deliveryAddress","purchase_units","shipping","authorizedEvent","handleAdditionalDetails","bind","TxVariants","paypal","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Paypal.js","sources":["../../../../src/components/PayPal/Paypal.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PaypalComponent from './components/PaypalComponent';\nimport defaultProps from './defaultProps';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { ERRORS } from './constants';\nimport { TxVariants } from '../tx-variants';\nimport { formatPaypalOrderContactToAdyenFormat } from './utils/format-paypal-order-contact-to-adyen-format';\n\nimport type { AdditionalDetailsData, ICore } from '../../core/types';\nimport type { PaymentAction, PaymentResponseData } from '../../types/global-types';\nimport type { Intent, PayPalConfiguration } from './types';\nimport type {\n PayPalComponents,\n PayPalOnApproveActions,\n PayPalOnApproveData,\n PayPalOnShippingAddressChangeActions,\n PayPalOnShippingAddressChangeData,\n PayPalOnShippingOptionsChangeActions,\n PayPalOnShippingOptionsChangeData,\n PayPalOrderResponseBody,\n PayPalV6OnApproveData,\n PayPalV6OnShippingAddressChangeData,\n PayPalV6OnShippingOptionsChangeData\n} from './paypal-js-types';\nimport type { BaseElementState } from '../internal/BaseElement/types';\nimport type { PayPalServiceRefreshConfig } from './services/PayPalService';\n\nimport { AnalyticsInfoEvent, InfoEventType } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport CancelError from '../../core/Errors/CancelError';\nimport { PayPalSdkLoader } from './services/PayPalSdkLoader';\nimport { PayPalService } from './services/PayPalService';\nimport { PayPalComponentV6 } from './components/PayPalComponentV6';\nimport requestPayPalOrderDetails from './services/request-paypal-order-details';\nimport { isPayPalServiceConfigEqual } from './utils/is-paypal-service-config-equal';\nimport { SUPPORTED_EXPRESS_PRESENTATION_MODE_OPTIONS } from './config';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport './Paypal.scss';\n\nclass PaypalElement extends UIElement<PayPalConfiguration> {\n public static readonly type = TxVariants.paypal;\n public static readonly subtype = 'sdk';\n\n public paymentData: string | null = null;\n\n private resolve: ((value: string) => void) | null = null;\n private reject: ((error?: Error) => void) | null = null;\n\n protected static readonly defaultProps = defaultProps;\n\n private paypalService?: PayPalService;\n\n constructor(checkout: ICore, props?: PayPalConfiguration) {\n super(checkout, props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnShippingAddressChange = this.handleOnShippingAddressChange.bind(this);\n this.handleOnShippingOptionsChange = this.handleOnShippingOptionsChange.bind(this);\n this.handleOnApprove = this.handleOnApprove.bind(this);\n this.handleOnShippingAddressChangeV6 = this.handleOnShippingAddressChangeV6.bind(this);\n this.handleOnShippingOptionsChangeV6 = this.handleOnShippingOptionsChangeV6.bind(this);\n this.handleOnApproveV6 = this.handleOnApproveV6.bind(this);\n this.initializePayPalV6 = this.initializePayPalV6.bind(this);\n\n if (this.props.usePayPalV6) {\n const { isExpress } = this.props;\n const { onShippingAddressChange, onShippingOptionsChange, presentationModeOptions } = this.props.usePayPalV6;\n\n if (!isExpress && (onShippingAddressChange || onShippingOptionsChange)) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'PayPal - You must set \"isExpress\" flag to \"true\" in order to use \"onShippingAddressChange\" and/or \"onShippingOptionsChange\" callbacks'\n );\n }\n\n if (\n isExpress &&\n presentationModeOptions?.presentationMode &&\n !SUPPORTED_EXPRESS_PRESENTATION_MODE_OPTIONS.includes(presentationModeOptions.presentationMode)\n ) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `PayPal - Unsupported presentation mode: ${presentationModeOptions.presentationMode} for express checkout`\n );\n }\n\n this.initializePayPalV6();\n }\n }\n\n private initializePayPalV6() {\n const sdkLoader = new PayPalSdkLoader({\n analytics: this.analytics,\n environment: this.props.environment,\n nonce: this.props.usePayPalV6?.nonce\n });\n\n this.paypalService = new PayPalService({ sdkLoader, ...this.paypalServiceConfig });\n\n this.onPayPalServiceReady(this.paypalService.initialize());\n }\n\n /**\n * Updates the props, refreshes the PayPal SDK instance and the eligible payment methods if needed, and then\n * re-mounts the element. The refresh is needed because both the SDK instance and the eligible payment methods\n * are derived from props that the merchant can update, like the amount, the country code or the locale.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public override update(props: Partial<PayPalConfiguration>): this {\n const previousServiceConfig = this.paypalServiceConfig;\n\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {} as BaseElementState;\n\n this.refreshPayPalService(previousServiceConfig);\n\n return this.unmount().mount(this._node);\n }\n\n /**\n * Re-creates the PayPal SDK instance and the eligible payment methods, but only if the updated props changed\n * the configuration they are derived from. Any other prop change just re-renders the element.\n *\n * @param previousServiceConfig - The service configuration before the props were updated\n */\n private refreshPayPalService(previousServiceConfig: PayPalServiceRefreshConfig): void {\n if (!this.paypalService) return;\n\n const serviceConfig = this.paypalServiceConfig;\n\n if (isPayPalServiceConfigEqual(previousServiceConfig, serviceConfig)) return;\n\n this.onPayPalServiceReady(this.paypalService.refresh(serviceConfig));\n }\n\n /**\n * Configuration used to create and to refresh the PayPal service. It is kept in a single place to guarantee\n * that the service is always created and refreshed with the same set of props.\n */\n private get paypalServiceConfig(): PayPalServiceRefreshConfig {\n const paypalV6Props = this.props.usePayPalV6;\n\n const components: PayPalComponents = ['paypal-payments'];\n\n if (!paypalV6Props?.blockPayPalVenmoButton) {\n components.push('venmo-payments');\n }\n\n if (paypalV6Props?.onCreatePayPalMessages) {\n components.push('paypal-messages');\n }\n\n return {\n loadingContext: this.props.loadingContext ?? '',\n clientKey: this.props.clientKey ?? '',\n merchantId: this.props.configuration?.merchantId ?? '',\n countryCode: this.props.countryCode ?? '',\n amount: this.props.amount,\n vault: Boolean(paypalV6Props?.vault),\n locale: paypalV6Props?.locale,\n pageType: paypalV6Props?.pageType,\n environment: this.props.environment,\n components\n };\n }\n\n private onPayPalServiceReady(sdkReadyPromise: Promise<void>): void {\n sdkReadyPromise\n .then(() => {\n const { onCreatePayPalMessages } = this.props.usePayPalV6 ?? {};\n\n if (onCreatePayPalMessages && this.paypalService?.getInstance()?.createPayPalMessages) {\n onCreatePayPalMessages(this.paypalService.getInstance().createPayPalMessages);\n }\n })\n .catch(error => {\n this.handleError(\n error instanceof AdyenCheckoutError\n ? error\n : new AdyenCheckoutError('ERROR', 'Something went wrong while initializing PayPal', { cause: error })\n );\n });\n }\n\n public override async isAvailable(): Promise<void> {\n if (this.props.usePayPalV6) {\n if (!this.paypalService) {\n throw new AdyenCheckoutError('ERROR', 'PayPal is not available');\n }\n\n await this.paypalService.isSdkLoaded();\n\n if (!this.paypalService.getEligiblePaymentMethods().isEligible('paypal')) {\n throw new AdyenCheckoutError('ERROR', 'PayPal is not available');\n }\n }\n }\n\n protected override get sdkDataPaymentMethodConfiguration() {\n return this.props.usePayPalV6 ? { supportsPayPalV6: true } : undefined;\n }\n\n formatProps(props: PayPalConfiguration): PayPalConfiguration {\n const merchantId = props.configuration?.merchantId;\n const intentFromConfig = props.configuration?.intent;\n const isZeroAuth = props.amount?.value === 0;\n const intent: Intent | undefined = isZeroAuth ? 'tokenize' : props.intent || intentFromConfig;\n const vault = intent === 'tokenize' || props.vault;\n\n const displayContinueToReviewPageButton = props.userAction === 'continue';\n\n return {\n ...props,\n commit: displayContinueToReviewPageButton ? false : props.commit,\n vault,\n configuration: {\n intent,\n merchantId\n }\n };\n }\n\n protected override beforeRender(configSetByMerchant?: PayPalConfiguration) {\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n public submit = () => {\n this.handleError(new AdyenCheckoutError('IMPLEMENTATION_ERROR', ERRORS.SUBMIT_NOT_SUPPORTED));\n };\n\n /**\n * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount\n * @param paymentData - Payment data value\n */\n public updatePaymentData(paymentData: string): void {\n if (!paymentData) console.warn('PayPal - Updating payment data with an invalid value');\n this.paymentData = paymentData;\n }\n\n private get browserInfo() {\n return collectBrowserInfo();\n }\n\n /**\n * Formats the component data output\n */\n protected formatData() {\n const { isExpress, userAction, usePayPalV6 } = this.props;\n const isZeroAuth = this.props.amount?.value === 0;\n\n return {\n paymentMethod: {\n type: PaypalElement.type,\n subtype: isExpress ? 'express' : PaypalElement.subtype,\n ...(!usePayPalV6 && { userAction })\n },\n ...(usePayPalV6 && { browserInfo: this.browserInfo }),\n ...(usePayPalV6 && (usePayPalV6.vault || isZeroAuth) && { storePaymentMethod: true })\n };\n }\n\n public handleAction = (action: PaymentAction) => {\n return this.updateWithAction(action);\n };\n\n public updateWithAction = (action: PaymentAction) => {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n\n if (action.paymentData) {\n this.paymentData = action.paymentData;\n }\n\n if (action?.sdkData?.token) {\n this.onActionHandled({ componentType: this.type, actionDescription: 'sdk-loaded', originalAction: action });\n this.handleResolve(action.sdkData.token);\n } else {\n this.handleReject(ERRORS.NO_TOKEN_PROVIDED);\n }\n\n return null;\n };\n\n /**\n * Dropin Validation\n *\n * @remarks\n * Paypal does not require any specific Dropin validation\n */\n get isValid() {\n return true;\n }\n\n private handleOnApprove(data: PayPalOnApproveData, actions: PayPalOnApproveActions): Promise<void> {\n const { onAuthorized } = this.props;\n\n const details = Object.entries(data).reduce<Record<string, string | undefined>>((result, [key, value]) => {\n result[key] = value ?? undefined;\n return result;\n }, {});\n\n const state = { data: { details, paymentData: this.paymentData ?? undefined } };\n\n if (!onAuthorized) {\n this.handleAdditionalDetails(state);\n return Promise.resolve();\n }\n\n if (!actions.order) {\n this.handleError(new AdyenCheckoutError('ERROR', 'PayPal order actions are not available'));\n return Promise.resolve();\n }\n\n return actions.order\n .get()\n .then((paypalOrder: PayPalOrderResponseBody) => {\n const billingAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.payer);\n const deliveryAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.purchase_units?.[0].shipping, true);\n\n this.setState({\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error =>\n this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong with finalizing the PayPal order', { cause: error }))\n );\n }\n\n /**\n * Handles the PayPal SDK v6 'onApprove' event. The shape of the data depends on which session type was started:\n * a one-time payment session returns an 'orderId', whereas a save payment session (zero-auth) returns a\n * 'vaultSetupToken'.\n *\n * @param data - Approve data from the PayPal SDK\n */\n private handleOnApproveV6(data: PayPalV6OnApproveData): Promise<void> {\n const onAuthorized = this.props.usePayPalV6?.onAuthorized;\n\n let state: AdditionalDetailsData | undefined;\n\n // 'orderId' is only present when the shopper approved a one-time payment session, meaning an actual\n // PayPal order was created. The SDK v6 keys are remapped to the casing expected by the /payments/details API.\n if ('orderId' in data) {\n // @ts-expect-error - fundingSource is not in the type but is present in the data\n const { orderId, payerId, fundingSource } = data;\n state = {\n data: {\n details: {\n orderID: orderId,\n payerID: payerId,\n paymentSource: fundingSource\n },\n paymentData: this.paymentData ?? undefined\n }\n };\n }\n\n // 'vaultSetupToken' is only present when the shopper approved a save payment session (zero-auth\n // tokenization). No PayPal order exists in this flow, so the vault token is sent instead of an order id.\n if ('vaultSetupToken' in data) {\n // @ts-expect-error - fundingSource is not in the type but is present in the data\n const { vaultSetupToken, payerId, fundingSource } = data;\n state = {\n data: {\n details: {\n vaultToken: vaultSetupToken,\n payerID: payerId,\n paymentSource: fundingSource\n },\n paymentData: this.paymentData ?? undefined\n }\n };\n }\n\n if (!state) {\n this.handleError(new AdyenCheckoutError('ERROR', 'Missing `orderId` or `vaultSetupToken` in PayPal approval data'));\n return Promise.resolve();\n }\n\n // The order details can only be fetched for a one-time payment session, since the save payment session\n // does not create a PayPal order. Therefore 'onAuthorized' is skipped in the zero-auth flow.\n if (!onAuthorized || !('orderId' in data)) {\n this.handleAdditionalDetails(state);\n return Promise.resolve();\n }\n\n return requestPayPalOrderDetails(this.props.loadingContext ?? '', {\n clientKey: this.props.clientKey ?? '',\n merchantId: this.props.configuration?.merchantId ?? '',\n orderId: data.orderId\n })\n .then(res => {\n this.setState({\n authorizedEvent: res.payPalOrder,\n ...(res.billingAddress && { billingAddress: res.billingAddress }),\n ...(res.deliveryAddress && { deliveryAddress: res.deliveryAddress }),\n ...(res.shopperName && { shopperName: res.shopperName })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: res.payPalOrder,\n ...(res.billingAddress && { billingAddress: res.billingAddress }),\n ...(res.deliveryAddress && { deliveryAddress: res.deliveryAddress }),\n ...(res.shopperName && { shopperName: res.shopperName })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error =>\n this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong with finalizing the PayPal order', { cause: error }))\n );\n }\n\n handleResolve(token: string) {\n if (!this.resolve) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.resolve(token);\n }\n\n handleReject(errorMessage: string) {\n if (!this.reject) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.reject(new Error(errorMessage));\n }\n\n private handleSubmit(): Promise<string> {\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n\n this.makePaymentsCall()\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then(this.handleResponse)\n .catch((e: PaymentResponseData | Error) => {\n if (e instanceof CancelError) {\n this.setElementStatus('ready');\n return;\n }\n this.handleFailedResult(e as PaymentResponseData);\n const errorDetail = e instanceof Error ? e.message : JSON.stringify(e);\n const errorMessage = e ? `: ${errorDetail}` : '';\n this.handleReject(`${ERRORS.PAYMENT_FAILED}${errorMessage}`);\n });\n });\n }\n\n /**\n * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingAddressChange(data: PayPalOnShippingAddressChangeData, actions: PayPalOnShippingAddressChangeActions): Promise<void> {\n const { onShippingAddressChange } = this.props;\n\n if (!onShippingAddressChange) return Promise.resolve();\n\n return onShippingAddressChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingOptionsChange(data: PayPalOnShippingOptionsChangeData, actions: PayPalOnShippingOptionsChangeActions): Promise<void> {\n const { onShippingOptionsChange } = this.props;\n\n if (!onShippingOptionsChange) return Promise.resolve();\n\n return onShippingOptionsChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'usePayPalV6' prop with an 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - The shipping address change data\n */\n private handleOnShippingAddressChangeV6(data: PayPalV6OnShippingAddressChangeData): Promise<void> {\n const { usePayPalV6 } = this.props;\n\n if (!usePayPalV6?.onShippingAddressChange) return Promise.resolve();\n\n return usePayPalV6.onShippingAddressChange(data, this);\n }\n\n /**\n * If the merchant provides the 'usePayPalV6' prop with an 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - The shipping options change data\n */\n private handleOnShippingOptionsChangeV6(data: PayPalV6OnShippingOptionsChangeData): Promise<void> {\n const { usePayPalV6 } = this.props;\n\n if (!usePayPalV6?.onShippingOptionsChange) return Promise.resolve();\n\n return usePayPalV6.onShippingOptionsChange(data, this);\n }\n\n protected override componentToRender(): h.JSX.Element | null {\n if (this.props.usePayPalV6) {\n const { usePayPalV6: paypalv6Props } = this.props;\n\n if (!this.paypalService) return null;\n\n return (\n <PayPalComponentV6\n setComponentRef={this.setComponentRef}\n paypalService={this.paypalService}\n {...(paypalv6Props.onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChangeV6 })}\n {...(paypalv6Props.onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChangeV6 })}\n style={paypalv6Props.style}\n commit={paypalv6Props.commit}\n vault={paypalv6Props.vault}\n blockPayPalButtonVariants={paypalv6Props.blockPayPalButtonVariants}\n blockPayPalCreditButton={paypalv6Props.blockPayPalCreditButton}\n blockPayPalPayLaterButton={paypalv6Props.blockPayPalPayLaterButton}\n blockPayPalVenmoButton={paypalv6Props.blockPayPalVenmoButton}\n presentationModeOptions={paypalv6Props.presentationModeOptions}\n environment={this.props.environment}\n onSubmit={this.handleSubmit}\n onApprove={this.handleOnApproveV6}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onError={error => this.handleError(new AdyenCheckoutError('ERROR', String(error), { cause: error }))}\n />\n );\n }\n\n // TODO: remove this check in adyen-web v7 as the PayPal buttons do not support custom pay buttons\n if (!this.props.showPayButton) return null;\n\n const { onShippingAddressChange, onShippingOptionsChange, ...rest } = this.props;\n\n return (\n <PaypalComponent\n {...rest}\n setComponentRef={this.setComponentRef}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onChange={this.setState}\n onApprove={this.handleOnApprove}\n onError={error => {\n this.handleError(new AdyenCheckoutError('ERROR', String(error), { cause: error }));\n }}\n onScriptLoadFailure={error => this.handleError(error)}\n onSubmit={this.handleSubmit}\n />\n );\n }\n}\n\nexport default PaypalElement;\n"],"names":["PaypalElement","UIElement","initializePayPalV6","sdkLoader","PayPalSdkLoader","analytics","this","environment","props","nonce","usePayPalV6","paypalService","PayPalService","paypalServiceConfig","onPayPalServiceReady","initialize","update","previousServiceConfig","formatProps","state","refreshPayPalService","unmount","mount","_node","serviceConfig","isPayPalServiceConfigEqual","refresh","paypalV6Props","components","blockPayPalVenmoButton","push","onCreatePayPalMessages","loadingContext","clientKey","merchantId","configuration","countryCode","amount","vault","Boolean","locale","pageType","sdkReadyPromise","then","getInstance","createPayPalMessages","catch","error","handleError","AdyenCheckoutError","cause","isAvailable","isSdkLoaded","getEligiblePaymentMethods","isEligible","sdkDataPaymentMethodConfiguration","supportsPayPalV6","undefined","intentFromConfig","intent","value","displayContinueToReviewPageButton","userAction","commit","beforeRender","configSetByMerchant","event","AnalyticsInfoEvent","type","InfoEventType","rendered","component","configData","showPayButton","isExpress","expressPage","sendAnalytics","updatePaymentData","paymentData","console","warn","browserInfo","collectBrowserInfo","formatData","isZeroAuth","paymentMethod","subtype","storePaymentMethod","isValid","handleOnApprove","data","actions","onAuthorized","details","Object","entries","reduce","result","key","order","get","paypalOrder","billingAddress","formatPaypalOrderContactToAdyenFormat","payer","deliveryAddress","purchase_units","shipping","setState","authorizedEvent","Promise","resolve","reject","handleAdditionalDetails","handleOnApproveV6","orderId","payerId","fundingSource","orderID","payerID","paymentSource","vaultSetupToken","vaultToken","requestPayPalOrderDetails","res","payPalOrder","shopperName","handleResolve","token","ERRORS","WRONG_INSTANCE","handleReject","errorMessage","Error","handleSubmit","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","handleResponse","e","CancelError","setElementStatus","handleFailedResult","errorDetail","message","JSON","stringify","PAYMENT_FAILED","handleOnShippingAddressChange","onShippingAddressChange","handleOnShippingOptionsChange","onShippingOptionsChange","handleOnShippingAddressChangeV6","handleOnShippingOptionsChangeV6","componentToRender","paypalv6Props","h","PayPalComponentV6","setComponentRef","style","blockPayPalButtonVariants","blockPayPalCreditButton","blockPayPalPayLaterButton","presentationModeOptions","onSubmit","onApprove","onCancel","onError","String","rest","PaypalComponent","onChange","onScriptLoadFailure","constructor","checkout","super","_define_property","submit","SUBMIT_NOT_SUPPORTED","handleAction","action","updateWithAction","paymentMethodType","sdkData","onActionHandled","componentType","actionDescription","originalAction","NO_TOKEN_PROVIDED","bind","presentationMode","SUPPORTED_EXPRESS_PRESENTATION_MODE_OPTIONS","includes","TxVariants","paypal","defaultProps"],"mappings":"ywCAwCA,MAAMA,UAAsBC,EAkDhBC,kBAAAA,GACJ,MAAMC,EAAY,IAAIC,EAAgB,CAClCC,UAAWC,KAAKD,UAChBE,YAAaD,KAAKE,MAAMD,YACxBE,MAAOH,KAAKE,MAAME,aAAaD,QAGnCH,KAAKK,cAAgB,IAAIC,EAAc,CAAET,eAAcG,KAAKO,sBAE5DP,KAAKQ,qBAAqBR,KAAKK,cAAcI,aACjD,CAUgBC,MAAAA,CAAOR,GACnB,MAAMS,EAAwBX,KAAKO,oBAOnC,OALAP,KAAKE,MAAQF,KAAKY,YAAY,IAAKZ,KAAKE,SAAUA,IAClDF,KAAKa,MAAQ,CAAA,EAEbb,KAAKc,qBAAqBH,GAEnBX,KAAKe,UAAUC,MAAMhB,KAAKiB,MACrC,CAQQH,oBAAAA,CAAqBH,GACzB,IAAKX,KAAKK,cAAe,OAEzB,MAAMa,EAAgBlB,KAAKO,oBAEvBY,EAA2BR,EAAuBO,IAEtDlB,KAAKQ,qBAAqBR,KAAKK,cAAce,QAAQF,GACzD,CAMA,uBAAYX,GACR,MAAMc,EAAgBrB,KAAKE,MAAME,YAE3BkB,EAA+B,CAAC,mBAUtC,OARKD,GAAeE,wBAChBD,EAAWE,KAAK,kBAGhBH,GAAeI,wBACfH,EAAWE,KAAK,mBAGb,CACHE,eAAgB1B,KAAKE,MAAMwB,gBAAkB,GAC7CC,UAAW3B,KAAKE,MAAMyB,WAAa,GACnCC,WAAY5B,KAAKE,MAAM2B,eAAeD,YAAc,GACpDE,YAAa9B,KAAKE,MAAM4B,aAAe,GACvCC,OAAQ/B,KAAKE,MAAM6B,OACnBC,MAAOC,QAAQZ,GAAeW,OAC9BE,OAAQb,GAAea,OACvBC,SAAUd,GAAec,SACzBlC,YAAaD,KAAKE,MAAMD,YACxBqB,aAER,CAEQd,oBAAAA,CAAqB4B,GACzBA,EACKC,KAAK,KACF,MAAMZ,uBAAEA,GAA2BzB,KAAKE,MAAME,aAAe,CAAA,EAEzDqB,GAA0BzB,KAAKK,eAAeiC,eAAeC,sBAC7Dd,EAAuBzB,KAAKK,cAAciC,cAAcC,wBAG/DC,MAAMC,IACHzC,KAAK0C,YACDD,aAAiBE,EACXF,EACA,IAAIE,EAAmB,QAAS,iDAAkD,CAAEC,MAAOH,MAGjH,CAEA,iBAAsBI,GAClB,GAAI7C,KAAKE,MAAME,YAAa,CACxB,IAAKJ,KAAKK,cACN,MAAM,IAAIsC,EAAmB,QAAS,2BAK1C,SAFM3C,KAAKK,cAAcyC,eAEpB9C,KAAKK,cAAc0C,4BAA4BC,WAAW,UAC3D,MAAM,IAAIL,EAAmB,QAAS,0BAE9C,CACJ,CAEA,qCAAuBM,GACnB,OAAOjD,KAAKE,MAAME,YAAc,CAAE8C,kBAAkB,QAASC,CACjE,CAEAvC,WAAAA,CAAYV,GACR,MAAM0B,EAAa1B,EAAM2B,eAAeD,WAClCwB,EAAmBlD,EAAM2B,eAAewB,OAExCA,EADqC,IAAxBnD,EAAM6B,QAAQuB,MACe,WAAapD,EAAMmD,QAAUD,EACvEpB,EAAmB,aAAXqB,GAAyBnD,EAAM8B,MAEvCuB,EAAyD,aAArBrD,EAAMsD,WAEhD,MAAO,IACAtD,EACHuD,QAAQF,GAA4CrD,EAAMuD,OAC1DzB,QACAH,cAAe,CACXwB,SACAzB,cAGZ,CAEmB8B,YAAAA,CAAaC,GAC5B,MAAMC,EAAQ,IAAIC,EAAmB,CACjCC,KAAMC,EAAcC,SACpBC,UAAWjE,KAAK8D,KAChBI,WAAY,IAAKP,EAAqBQ,cAAenE,KAAKE,MAAMiE,kBAC5DR,GAAqBS,WAAa,CAAEA,UAAWT,EAAoBS,cACnET,GAAqBU,aAAe,CAAEA,YAAaV,EAAoBU,eAG/ErE,KAAKD,UAAUuE,cAAcV,EACjC,CAUOW,iBAAAA,CAAkBC,GAChBA,GAAaC,QAAQC,KAAK,wDAC/B1E,KAAKwE,YAAcA,CACvB,CAEA,eAAYG,GACR,OAAOC,GACX,CAKA,UAAAC,GACI,MAAMT,UAAEA,EAASZ,WAAEA,EAAUpD,YAAEA,GAAgBJ,KAAKE,MAC9C4E,EAA0C,IAA7B9E,KAAKE,MAAM6B,QAAQuB,MAEtC,MAAO,CACHyB,cAAe,CACXjB,KAAMpE,EAAcoE,KACpBkB,QAASZ,EAAY,UAAY1E,EAAcsF,YAC1C5E,GAAe,CAAEoD,kBAEtBpD,GAAe,CAAEuE,YAAa3E,KAAK2E,gBACnCvE,IAAgBA,EAAY4B,OAAS8C,IAAe,CAAEG,oBAAoB,GAEtF,CA6BA,WAAIC,GACA,OAAO,CACX,CAEQC,eAAAA,CAAgBC,EAA2BC,GAC/C,MAAMC,aAAEA,GAAiBtF,KAAKE,MAOxBW,EAAQ,CAAEuE,KAAM,CAAEG,QALRC,OAAOC,QAAQL,GAAMM,OAA2C,CAACC,GAASC,EAAKtC,MAC3FqC,EAAOC,GAAOtC,QAASH,EAChBwC,GACR,CAAA,GAE8BnB,YAAaxE,KAAKwE,kBAAerB,IAElE,OAAKmC,EAKAD,EAAQQ,MAKNR,EAAQQ,MACVC,MACAzD,KAAM0D,IACH,MAAMC,EAAiBC,EAAsCF,GAAaG,OACpEC,EAAkBF,EAAsCF,GAAaK,iBAAiB,GAAGC,UAAU,GAQzG,OANArG,KAAKsG,SAAS,CACVC,gBAAiBR,KACbC,GAAkB,CAAEA,qBACpBG,GAAmB,CAAEA,qBAGtB,IAAIK,QAAc,CAACC,EAASC,IAC/BpB,EACI,CACIiB,gBAAiBR,KACbC,GAAkB,CAAEA,qBACpBG,GAAmB,CAAEA,oBAE7B,CAAEM,UAASC,cAItBrE,KAAK,IAAMrC,KAAK2G,wBAAwB9F,IACxC2B,MAAMC,GACHzC,KAAK0C,YAAY,IAAIC,EAAmB,QAAS,wDAAyD,CAAEC,MAAOH,OA7BvHzC,KAAK0C,YAAY,IAAIC,EAAmB,QAAS,2CAC1C6D,QAAQC,YANfzG,KAAK2G,wBAAwB9F,GACtB2F,QAAQC,UAmCvB,CASQG,iBAAAA,CAAkBxB,GACtB,MAAME,EAAetF,KAAKE,MAAME,aAAakF,aAE7C,IAAIzE,EAIJ,GAAI,YAAauE,EAAM,CAEnB,MAAMyB,QAAEA,EAAOC,QAAEA,EAAOC,cAAEA,GAAkB3B,EAC5CvE,EAAQ,CACJuE,KAAM,CACFG,QAAS,CACLyB,QAASH,EACTI,QAASH,EACTI,cAAeH,GAEnBvC,YAAaxE,KAAKwE,kBAAerB,GAG7C,CAIA,GAAI,oBAAqBiC,EAAM,CAE3B,MAAM+B,gBAAEA,EAAeL,QAAEA,EAAOC,cAAEA,GAAkB3B,EACpDvE,EAAQ,CACJuE,KAAM,CACFG,QAAS,CACL6B,WAAYD,EACZF,QAASH,EACTI,cAAeH,GAEnBvC,YAAaxE,KAAKwE,kBAAerB,GAG7C,CAEA,OAAKtC,EAOAyE,GAAkB,YAAaF,EAK7BiC,EAA0BrH,KAAKE,MAAMwB,gBAAkB,GAAI,CAC9DC,UAAW3B,KAAKE,MAAMyB,WAAa,GACnCC,WAAY5B,KAAKE,MAAM2B,eAAeD,YAAc,GACpDiF,QAASzB,EAAKyB,UAEbxE,KAAKiF,IACFtH,KAAKsG,SAAS,CACVC,gBAAiBe,EAAIC,eACjBD,EAAItB,gBAAkB,CAAEA,eAAgBsB,EAAItB,mBAC5CsB,EAAInB,iBAAmB,CAAEA,gBAAiBmB,EAAInB,oBAC9CmB,EAAIE,aAAe,CAAEA,YAAaF,EAAIE,eAGvC,IAAIhB,QAAc,CAACC,EAASC,IAC/BpB,EACI,CACIiB,gBAAiBe,EAAIC,eACjBD,EAAItB,gBAAkB,CAAEA,eAAgBsB,EAAItB,mBAC5CsB,EAAInB,iBAAmB,CAAEA,gBAAiBmB,EAAInB,oBAC9CmB,EAAIE,aAAe,CAAEA,YAAaF,EAAIE,cAE9C,CAAEf,UAASC,cAItBrE,KAAK,IAAMrC,KAAK2G,wBAAwB9F,IACxC2B,MAAMC,GACHzC,KAAK0C,YAAY,IAAIC,EAAmB,QAAS,wDAAyD,CAAEC,MAAOH,OA/BvHzC,KAAK2G,wBAAwB9F,GACtB2F,QAAQC,YARfzG,KAAK0C,YAAY,IAAIC,EAAmB,QAAS,mEAC1C6D,QAAQC,UAuCvB,CAEAgB,aAAAA,CAAcC,GACV,IAAK1H,KAAKyG,QAAS,OAAOzG,KAAK0C,YAAY,IAAIC,EAAmB,QAASgF,EAAOC,iBAClF5H,KAAKyG,QAAQiB,EACjB,CAEAG,YAAAA,CAAaC,GACT,IAAK9H,KAAK0G,OAAQ,OAAO1G,KAAK0C,YAAY,IAAIC,EAAmB,QAASgF,EAAOC,iBACjF5H,KAAK0G,OAAO,IAAIqB,MAAMD,GAC1B,CAEQE,YAAAA,GACJ,OAAO,IAAIxB,QAAQ,CAACC,EAASC,KACzB1G,KAAKyG,QAAUA,EACfzG,KAAK0G,OAASA,EAEd1G,KAAKiI,mBACA5F,KAAK6F,GACL7F,KAAK8F,GACL9F,KAAKrC,KAAKoI,gBACV5F,MAAO6F,IACJ,GAAIA,aAAaC,EAEb,YADAtI,KAAKuI,iBAAiB,SAG1BvI,KAAKwI,mBAAmBH,GACxB,MAAMI,EAAcJ,aAAaN,MAAQM,EAAEK,QAAUC,KAAKC,UAAUP,GAC9DP,EAAeO,EAAI,KAAKI,IAAgB,GAC9CzI,KAAK6H,aAAa,GAAGF,EAAOkB,iBAAiBf,QAG7D,CAUA,6BAAAgB,CAAsC1D,EAAyCC,GAC3E,MAAM0D,wBAAEA,GAA4B/I,KAAKE,MAEzC,OAAK6I,EAEEA,EAAwB3D,EAAMC,EAASrF,MAFTwG,QAAQC,SAGjD,CAUA,6BAAAuC,CAAsC5D,EAAyCC,GAC3E,MAAM4D,wBAAEA,GAA4BjJ,KAAKE,MAEzC,OAAK+I,EAEEA,EAAwB7D,EAAMC,EAASrF,MAFTwG,QAAQC,SAGjD,CASQyC,+BAAAA,CAAgC9D,GACpC,MAAMhF,YAAEA,GAAgBJ,KAAKE,MAE7B,OAAKE,GAAa2I,wBAEX3I,EAAY2I,wBAAwB3D,EAAMpF,MAFCwG,QAAQC,SAG9D,CASQ0C,+BAAAA,CAAgC/D,GACpC,MAAMhF,YAAEA,GAAgBJ,KAAKE,MAE7B,OAAKE,GAAa6I,wBAEX7I,EAAY6I,wBAAwB7D,EAAMpF,MAFCwG,QAAQC,SAG9D,CAEmB2C,iBAAAA,GACf,GAAIpJ,KAAKE,MAAME,YAAa,CACxB,MAAQA,YAAaiJ,GAAkBrJ,KAAKE,MAE5C,OAAKF,KAAKK,cAGNiJ,EAACC,EAAAA,CACGC,gBAAiBxJ,KAAKwJ,gBACtBnJ,cAAeL,KAAKK,iBACfgJ,EAAcN,yBAA2B,CAAEA,wBAAyB/I,KAAKkJ,oCACzEG,EAAcJ,yBAA2B,CAAEA,wBAAyBjJ,KAAKmJ,iCAC9EM,MAAOJ,EAAcI,MACrBhG,OAAQ4F,EAAc5F,OACtBzB,MAAOqH,EAAcrH,MACrB0H,0BAA2BL,EAAcK,0BACzCC,wBAAyBN,EAAcM,wBACvCC,0BAA2BP,EAAcO,0BACzCrI,uBAAwB8H,EAAc9H,uBACtCsI,wBAAyBR,EAAcQ,wBACvC5J,YAAaD,KAAKE,MAAMD,YACxB6J,SAAU9J,KAAKgI,aACf+B,UAAW/J,KAAK4G,kBAChBoD,SAAU,IAAMhK,KAAK0C,YAAY,IAAIC,EAAmB,WACxDsH,QAASxH,GAASzC,KAAK0C,YAAY,IAAIC,EAAmB,QAASuH,OAAOzH,GAAQ,CAAEG,MAAOH,OApBnE,IAuBpC,CAGA,IAAKzC,KAAKE,MAAMiE,cAAe,OAAO,KAEtC,MAAM4E,wBAAEA,EAAuBE,wBAAEA,KAA4BkB,GAASnK,KAAKE,MAE3E,OACIoJ,EAACc,EAAAA,IACOD,EACJX,gBAAiBxJ,KAAKwJ,mBACjBT,GAA2B,CAAEA,wBAAyB/I,KAAK8I,kCAC3DG,GAA2B,CAAEA,wBAAyBjJ,KAAKgJ,+BAChEgB,SAAU,IAAMhK,KAAK0C,YAAY,IAAIC,EAAmB,WACxD0H,SAAUrK,KAAKsG,SACfyD,UAAW/J,KAAKmF,gBAChB8E,QAASxH,IACLzC,KAAK0C,YAAY,IAAIC,EAAmB,QAASuH,OAAOzH,GAAQ,CAAEG,MAAOH,MAE7E6H,oBAAqB7H,GAASzC,KAAK0C,YAAYD,GAC/CqH,SAAU9J,KAAKgI,cAG3B,CAnhBA,WAAAuC,CAAYC,EAAiBtK,GAWzB,GAVAuK,MAAMD,EAAUtK,GAVpBwK,EAAA1K,KAAOwE,cAA6B,MAEpCkG,EAAA1K,KAAQyG,UAA4C,MACpDiE,EAAA1K,KAAQ0G,SAA2C,MAInDgE,EAAA1K,KAAQK,qBAAR,GAyLAqK,OAAOC,SAAS,KACZ3K,KAAK0C,YAAY,IAAIC,EAAmB,uBAAwBgF,EAAOiD,yBAkC3EF,EAAA1K,KAAO6K,eAAgBC,GACZ9K,KAAK+K,iBAAiBD,IAGjCJ,EAAA1K,KAAO+K,mBAAoBD,IACvB,GAAIA,EAAOE,oBAAsBhL,KAAK8D,KAAM,MAAM,IAAIiE,MAAM,kBAa5D,OAXI+C,EAAOtG,cACPxE,KAAKwE,YAAcsG,EAAOtG,aAG1BsG,GAAQG,SAASvD,OACjB1H,KAAKkL,gBAAgB,CAAEC,cAAenL,KAAK8D,KAAMsH,kBAAmB,aAAcC,eAAgBP,IAClG9K,KAAKyH,cAAcqD,EAAOG,QAAQvD,QAElC1H,KAAK6H,aAAaF,EAAO2D,mBAGtB,OA1OPtL,KAAKgI,aAAehI,KAAKgI,aAAauD,KAAKvL,MAC3CA,KAAK8I,8BAAgC9I,KAAK8I,8BAA8ByC,KAAKvL,MAC7EA,KAAKgJ,8BAAgChJ,KAAKgJ,8BAA8BuC,KAAKvL,MAC7EA,KAAKmF,gBAAkBnF,KAAKmF,gBAAgBoG,KAAKvL,MACjDA,KAAKkJ,gCAAkClJ,KAAKkJ,gCAAgCqC,KAAKvL,MACjFA,KAAKmJ,gCAAkCnJ,KAAKmJ,gCAAgCoC,KAAKvL,MACjFA,KAAK4G,kBAAoB5G,KAAK4G,kBAAkB2E,KAAKvL,MACrDA,KAAKJ,mBAAqBI,KAAKJ,mBAAmB2L,KAAKvL,MAEnDA,KAAKE,MAAME,YAAa,CACxB,MAAMgE,UAAEA,GAAcpE,KAAKE,OACrB6I,wBAAEA,EAAuBE,wBAAEA,EAAuBY,wBAAEA,GAA4B7J,KAAKE,MAAME,YAEjG,IAAKgE,IAAc2E,GAA2BE,GAC1C,MAAM,IAAItG,EACN,uBACA,yIAIR,GACIyB,GACAyF,GAAyB2B,mBACxBC,EAA4CC,SAAS7B,EAAwB2B,kBAE9E,MAAM,IAAI7I,EACN,uBACA,2CAA2CkH,EAAwB2B,yCAI3ExL,KAAKJ,oBACT,CACJ,EA/CA8K,EADEhL,EACqBoE,OAAO6H,EAAWC,QACzClB,EAFEhL,EAEqBsF,UAAU,OAOjC0F,EATEhL,EASwBmM,eAAeA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../external/preact/dist/preact.js";import t from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as n}from"../tx-variants.js";import{BasePayPalElement as o}from"./models/BasePayPalElement.js";import{VenmoComponent as r}from"./components/VenmoComponent.js";function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class p extends o{get paypalComponents(){return["venmo-payments"]}componentToRender(){return this.paypalService?e(r,{setComponentRef:this.setComponentRef,paypalService:this.paypalService,commit:this.props.commit,vault:this.props.vault,presentationModeOptions:this.props.presentationModeOptions,environment:this.props.environment,onSubmit:this.handleSubmit,onApprove:this.handleOnApprove,onCancel:()=>this.handleError(new t("CANCEL")),onError:e=>this.handleError(new t("ERROR",String(e),{cause:e}))}):null}constructor(...e){super(...e),s(this,"fundingSource","venmo")}}s(p,"type",n.venmo);export{p as default};
|
|
2
|
+
//# sourceMappingURL=Venmo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Venmo.js","sources":["../../../../src/components/PayPal/Venmo.tsx"],"sourcesContent":["import { h } from 'preact';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\n\nimport type { SupportedPayPalFundingSources, VenmoConfiguration } from './types';\n\nimport { BasePayPalElement } from './models/BasePayPalElement';\nimport { VenmoComponent } from './components/VenmoComponent';\nimport { PayPalComponents } from './paypal-js-types';\n\nclass VenmoElement extends BasePayPalElement<VenmoConfiguration> {\n public static readonly type = TxVariants.venmo;\n\n protected override fundingSource: SupportedPayPalFundingSources = 'venmo';\n\n protected override get paypalComponents(): PayPalComponents {\n return ['venmo-payments'];\n }\n\n protected override componentToRender(): h.JSX.Element | null {\n if (!this.paypalService) return null;\n\n return (\n <VenmoComponent\n setComponentRef={this.setComponentRef}\n paypalService={this.paypalService}\n commit={this.props.commit}\n vault={this.props.vault}\n presentationModeOptions={this.props.presentationModeOptions}\n environment={this.props.environment}\n onSubmit={this.handleSubmit}\n onApprove={this.handleOnApprove}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onError={error => this.handleError(new AdyenCheckoutError('ERROR', String(error), { cause: error }))}\n />\n );\n }\n}\n\nexport default VenmoElement;\n"],"names":["VenmoElement","BasePayPalElement","paypalComponents","componentToRender","this","paypalService","h","VenmoComponent","setComponentRef","commit","props","vault","presentationModeOptions","environment","onSubmit","handleSubmit","onApprove","handleOnApprove","onCancel","handleError","AdyenCheckoutError","onError","error","String","cause","super","args","_define_property","fundingSource","type","TxVariants","venmo"],"mappings":"qaAUA,MAAMA,UAAqBC,EAKvB,oBAAuBC,GACnB,MAAO,CAAC,iBACZ,CAEmBC,iBAAAA,GACf,OAAKC,KAAKC,cAGNC,EAACC,EAAAA,CACGC,gBAAiBJ,KAAKI,gBACtBH,cAAeD,KAAKC,cACpBI,OAAQL,KAAKM,MAAMD,OACnBE,MAAOP,KAAKM,MAAMC,MAClBC,wBAAyBR,KAAKM,MAAME,wBACpCC,YAAaT,KAAKM,MAAMG,YACxBC,SAAUV,KAAKW,aACfC,UAAWZ,KAAKa,gBAChBC,SAAU,IAAMd,KAAKe,YAAY,IAAIC,EAAmB,WACxDC,QAASC,GAASlB,KAAKe,YAAY,IAAIC,EAAmB,QAASG,OAAOD,GAAQ,CAAEE,MAAOF,OAbnE,IAgBpC,mBA1BJG,SAAAC,GAGIC,OAAmBC,gBAA+C,UAFlED,EADE3B,EACqB6B,OAAOC,EAAWC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as o}from"../../../external/preact/dist/preact.js";import{useMemo as e}from"../../../external/preact/hooks/dist/hooks.js";import{usePayPalSessionOptions as n}from"../hooks/usePayPalSessionOptions.js";import{useAmount as s}from"../../../core/Context/AmountProvider.js";import{usePayPalOneTimeSession as t}from"../hooks/usePayPalOneTimeSession.js";import{usePayPalSaveSession as i}from"../hooks/usePayPalSaveSession.js";import{usePayPalButtonEligibility as a}from"../hooks/usePayPalButtonEligibility.js";const r=({paypalService:r,commit:p,vault:l,style:m,presentationModeOptions:c,onApprove:S,onShippingAddressChange:u,onShippingOptionsChange:y,onCancel:h,onError:P,onSubmit:d})=>{const g=e(()=>r.getInstance(),[r]),{isZeroAuth:O}=s(),{oneTimeSessionOptions:k,saveSessionOptions:v}=n({commit:p,vault:l,onApprove:S,onShippingAddressChange:u,onShippingOptionsChange:y,onCancel:h,onError:P}),{onClick:C}=t(e(()=>({presentationModeOptions:c,createSession:()=>g.createPayPalOneTimePaymentSession(k),onSubmit:d,onError:P}),[g,k,d,P,c])),{onClick:b}=i(e(()=>({presentationModeOptions:c,createSession:()=>g.createPayPalSavePaymentSession(v),onSubmit:d,onError:P}),[g,v,d,P,c])),{isEligible:f}=a(r,"paypal");return f?o("paypal-button",{onclick:O?b:C,type:m.type,class:m.class,"data-testid":"paypal-button"}):null};export{r as PayPalButton};
|
|
2
|
+
//# sourceMappingURL=PayPalButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalButton.js","sources":["../../../../../src/components/PayPal/components/PayPalButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\n\nimport type { PayPalButtonStyle, PayPalComponentV6Props } from './types';\nimport { usePayPalSessionOptions } from '../hooks/usePayPalSessionOptions';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport { usePayPalOneTimeSession } from '../hooks/usePayPalOneTimeSession';\nimport { usePayPalSaveSession } from '../hooks/usePayPalSaveSession';\nimport { usePayPalButtonEligibility } from '../hooks/usePayPalButtonEligibility';\n\nexport const PayPalButton = ({\n paypalService,\n commit,\n vault,\n style,\n presentationModeOptions,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n onSubmit\n}: Readonly<\n Omit<PayPalComponentV6Props, 'style' | 'setComponentRef'> & {\n style: PayPalButtonStyle;\n }\n>) => {\n const payPalSDKInstance = useMemo(() => paypalService.getInstance(), [paypalService]);\n\n const { isZeroAuth } = useAmount();\n\n const { oneTimeSessionOptions, saveSessionOptions } = usePayPalSessionOptions({\n paypalService,\n commit,\n vault,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError\n });\n\n const { onClick: oneTimePaymentClick } = usePayPalOneTimeSession(\n useMemo(\n () => ({\n presentationModeOptions,\n createSession: () => payPalSDKInstance.createPayPalOneTimePaymentSession(oneTimeSessionOptions),\n onSubmit,\n onError\n }),\n [payPalSDKInstance, oneTimeSessionOptions, onSubmit, onError, presentationModeOptions]\n )\n );\n\n const { onClick: savePaymentClick } = usePayPalSaveSession(\n useMemo(\n () => ({\n presentationModeOptions,\n createSession: () => payPalSDKInstance.createPayPalSavePaymentSession(saveSessionOptions),\n onSubmit,\n onError\n }),\n [payPalSDKInstance, saveSessionOptions, onSubmit, onError, presentationModeOptions]\n )\n );\n\n const { isEligible } = usePayPalButtonEligibility(paypalService, 'paypal');\n\n if (!isEligible) {\n return null;\n }\n\n return (\n <paypal-button\n onclick={isZeroAuth ? savePaymentClick : oneTimePaymentClick}\n type={style.type}\n class={style.class}\n data-testid=\"paypal-button\"\n />\n );\n};\n"],"names":["PayPalButton","paypalService","commit","vault","style","presentationModeOptions","onApprove","onShippingAddressChange","onShippingOptionsChange","onCancel","onError","onSubmit","payPalSDKInstance","useMemo","getInstance","isZeroAuth","useAmount","oneTimeSessionOptions","saveSessionOptions","usePayPalSessionOptions","onClick","oneTimePaymentClick","usePayPalOneTimeSession","createSession","createPayPalOneTimePaymentSession","savePaymentClick","usePayPalSaveSession","createPayPalSavePaymentSession","isEligible","usePayPalButtonEligibility","h","paypal-button","onclick","type","class","data-testid"],"mappings":"2gBAUO,MAAMA,EAAe,EACxBC,gBACAC,SACAC,QACAC,QACAC,0BACAC,YACAC,0BACAC,0BACAC,WACAC,UACAC,eAMA,MAAMC,EAAoBC,EAAQ,IAAMZ,EAAca,cAAe,CAACb,KAEhEc,WAAEA,GAAeC,KAEjBC,sBAAEA,EAAqBC,mBAAEA,GAAuBC,EAAwB,CAE1EjB,SACAC,QACAG,YACAC,0BACAC,0BACAC,WACAC,aAGIU,QAASC,GAAwBC,EACrCT,EACI,KAAA,CACIR,0BACAkB,cAAe,IAAMX,EAAkBY,kCAAkCP,GACzEN,WACAD,YAEJ,CAACE,EAAmBK,EAAuBN,EAAUD,EAASL,MAI9De,QAASK,GAAqBC,EAClCb,EACI,KAAA,CACIR,0BACAkB,cAAe,IAAMX,EAAkBe,+BAA+BT,GACtEP,WACAD,YAEJ,CAACE,EAAmBM,EAAoBP,EAAUD,EAASL,MAI7DuB,WAAEA,GAAeC,EAA2B5B,EAAe,UAEjE,OAAK2B,EAKDE,EAACC,gBAAAA,CACGC,QAASjB,EAAaU,EAAmBJ,EACzCY,KAAM7B,EAAM6B,KACZC,MAAO9B,EAAM8B,MACbC,cAAY,kBART"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as o,Fragment as n}from"../../../external/preact/dist/preact.js";import{useMemo as t}from"../../../external/preact/hooks/dist/hooks.js";import{usePayPalStatus as e}from"../hooks/usePayPalStatus.js";import{PayPalButton as a}from"./PayPalButton.js";import{PayPalCreditButton as p}from"./PayPalCreditButton.js";import{PayPalPayLaterButton as r}from"./PayPalPayLaterButton.js";import{PayPalProcessingSpinner as i}from"./PayPalProcessingSpinner.js";import{PayPalSpinner as s}from"./PayPalSpinner.js";import{VenmoButton as m}from"./VenmoButton.js";import l from"./PayPalComponentV6.module.scss.js";const P=({paypalService:P,style:u={},commit:c=!0,vault:y,blockPayPalButtonVariants:g,blockPayPalCreditButton:h,blockPayPalPayLaterButton:d,blockPayPalVenmoButton:v,presentationModeOptions:C,onSubmit:S,onApprove:f,onShippingAddressChange:j,onShippingOptionsChange:A,onCancel:B,onError:k,setComponentRef:O,environment:b})=>{const{status:V,handleOnApprove:x}=e({paypalService:P,onApprove:f,setComponentRef:O}),E=t(()=>({paypalService:P,presentationModeOptions:C,commit:c,onSubmit:S,onApprove:x,onError:k,onCancel:B}),[P,S,x,k,j,A,B,c]);return"pending"===V?o(s,null):"processing"===V?o(i,{withoutReviewPage:c}):o("div",{className:l.payPalComponent,"data-testid":"paypal-component"},o(a,{...E,style:u.paypal??{},vault:y,onShippingAddressChange:j,onShippingOptionsChange:A}),!g&&o(n,null,!d&&o(r,{...E,onShippingAddressChange:j,onShippingOptionsChange:A}),!h&&o(p,{...E,vault:y,onShippingAddressChange:j,onShippingOptionsChange:A}),!v&&o(m,{...E,style:u.venmo??{},vault:y,environment:b})))};export{P as PayPalComponentV6};
|
|
2
|
+
//# sourceMappingURL=PayPalComponentV6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalComponentV6.js","sources":["../../../../../src/components/PayPal/components/PayPalComponentV6.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useMemo } from 'preact/hooks';\n\nimport { usePayPalStatus } from '../hooks/usePayPalStatus';\nimport { PayPalButton } from './PayPalButton';\nimport { PayPalCreditButton } from './PayPalCreditButton';\nimport { PayPalPayLaterButton } from './PayPalPayLaterButton';\nimport { PayPalProcessingSpinner } from './PayPalProcessingSpinner';\nimport { PayPalSpinner } from './PayPalSpinner';\nimport { PayPalComponentV6Props } from './types';\nimport { VenmoButton } from './VenmoButton';\n\nimport styles from './PayPalComponentV6.module.scss';\n\nconst PayPalComponentV6 = ({\n paypalService,\n style = {},\n commit = true,\n vault,\n blockPayPalButtonVariants,\n blockPayPalCreditButton,\n blockPayPalPayLaterButton,\n blockPayPalVenmoButton,\n presentationModeOptions,\n onSubmit,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n setComponentRef,\n environment\n}: Readonly<PayPalComponentV6Props>) => {\n const { status, handleOnApprove } = usePayPalStatus({\n paypalService,\n onApprove,\n setComponentRef\n });\n\n const commonProps = useMemo(\n () => ({\n paypalService,\n presentationModeOptions,\n commit,\n onSubmit,\n onApprove: handleOnApprove,\n onError,\n onCancel\n }),\n [paypalService, onSubmit, handleOnApprove, onError, onShippingAddressChange, onShippingOptionsChange, onCancel, commit]\n );\n\n if (status === 'pending') {\n return <PayPalSpinner />;\n }\n\n if (status === 'processing') {\n return <PayPalProcessingSpinner withoutReviewPage={commit} />;\n }\n\n return (\n <div className={styles.payPalComponent} data-testid=\"paypal-component\">\n <PayPalButton\n {...commonProps}\n style={style.paypal ?? {}}\n vault={vault}\n onShippingAddressChange={onShippingAddressChange}\n onShippingOptionsChange={onShippingOptionsChange}\n />\n {!blockPayPalButtonVariants && (\n <Fragment>\n {!blockPayPalPayLaterButton && (\n <PayPalPayLaterButton\n {...commonProps}\n onShippingAddressChange={onShippingAddressChange}\n onShippingOptionsChange={onShippingOptionsChange}\n />\n )}\n {!blockPayPalCreditButton && (\n <PayPalCreditButton\n {...commonProps}\n vault={vault}\n onShippingAddressChange={onShippingAddressChange}\n onShippingOptionsChange={onShippingOptionsChange}\n />\n )}\n {!blockPayPalVenmoButton && <VenmoButton {...commonProps} style={style.venmo ?? {}} vault={vault} environment={environment} />}\n </Fragment>\n )}\n </div>\n );\n};\n\nexport { PayPalComponentV6 };\n"],"names":["PayPalComponentV6","paypalService","style","commit","vault","blockPayPalButtonVariants","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","presentationModeOptions","onSubmit","onApprove","onShippingAddressChange","onShippingOptionsChange","onCancel","onError","setComponentRef","environment","status","handleOnApprove","usePayPalStatus","commonProps","useMemo","h","PayPalSpinner","PayPalProcessingSpinner","withoutReviewPage","div","className","styles","payPalComponent","data-testid","PayPalButton","paypal","Fragment","PayPalPayLaterButton","PayPalCreditButton","VenmoButton","venmo"],"mappings":"qmBAcA,MAAMA,EAAoB,EACtBC,gBACAC,QAAQ,CAAA,EACRC,UAAS,EACTC,QACAC,4BACAC,0BACAC,4BACAC,yBACAC,0BACAC,WACAC,YACAC,0BACAC,0BACAC,WACAC,UACAC,kBACAC,kBAEA,MAAMC,OAAEA,EAAMC,gBAAEA,GAAoBC,EAAgB,CAChDnB,gBACAU,YACAK,oBAGEK,EAAcC,EAChB,KAAA,CACIrB,gBACAQ,0BACAN,SACAO,WACAC,UAAWQ,EACXJ,UACAD,aAEJ,CAACb,EAAeS,EAAUS,EAAiBJ,EAASH,EAAyBC,EAAyBC,EAAUX,IAGpH,MAAe,YAAXe,EACOK,EAACC,EAAAA,MAGG,eAAXN,EACOK,EAACE,EAAAA,CAAwBC,kBAAmBvB,IAInDoB,EAACI,MAAAA,CAAIC,UAAWC,EAAOC,gBAAiBC,cAAY,oBAChDR,EAACS,EAAAA,IACOX,EACJnB,MAAOA,EAAM+B,QAAU,CAAA,EACvB7B,MAAOA,EACPQ,wBAAyBA,EACzBC,wBAAyBA,KAE3BR,GACEkB,EAACW,EAAAA,MACK3B,GACEgB,EAACY,EAAAA,IACOd,EACJT,wBAAyBA,EACzBC,wBAAyBA,KAG/BP,GACEiB,EAACa,EAAAA,IACOf,EACJjB,MAAOA,EACPQ,wBAAyBA,EACzBC,wBAAyBA,KAG/BL,GAA0Be,EAACc,EAAAA,IAAgBhB,EAAanB,MAAOA,EAAMoC,OAAS,CAAA,EAAIlC,MAAOA,EAAOa,YAAaA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalComponentV6.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as o,useMemo as t,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import{usePayPalSessionOptions as i}from"../hooks/usePayPalSessionOptions.js";import{usePayPalOneTimeSession as s}from"../hooks/usePayPalOneTimeSession.js";import{usePayPalButtonEligibility as r}from"../hooks/usePayPalButtonEligibility.js";import{usePayPalSaveSession as a}from"../hooks/usePayPalSaveSession.js";import{useAmount as p}from"../../../core/Context/AmountProvider.js";const m=({paypalService:m,commit:c,vault:l,presentationModeOptions:u,onApprove:d,onShippingAddressChange:S,onShippingOptionsChange:h,onCancel:P,onError:y,onSubmit:g})=>{const[C,f]=o(""),O=t(()=>m.getInstance(),[m]),{isZeroAuth:k}=p(),{oneTimeSessionOptions:v,saveSessionOptions:E}=i({commit:c,onApprove:d,onShippingAddressChange:S,onShippingOptionsChange:h,onCancel:P,onError:y,vault:l}),{onClick:b}=s(t(()=>({presentationModeOptions:u,createSession:()=>O.createPayPalCreditOneTimePaymentSession(v),onSubmit:g,onError:y}),[O,v,g,y,u])),{onClick:j}=a(t(()=>({presentationModeOptions:u,createSession:()=>O.createPayPalCreditSavePaymentSession(E),onSubmit:g,onError:y}),[O,E,g,y,u])),{isEligible:A}=r(m,"credit");return n(()=>{if(!A)return;const e=m.getEligiblePaymentMethods().getDetails("credit");f(e?.countryCode)},[A,m]),A?e("paypal-credit-button",{onclick:k?j:b,countryCode:C,"data-testid":"paypal-credit-button"}):null};export{m as PayPalCreditButton};
|
|
2
|
+
//# sourceMappingURL=PayPalCreditButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalCreditButton.js","sources":["../../../../../src/components/PayPal/components/PayPalCreditButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo, useState } from 'preact/hooks';\n\nimport type { PayPalComponentV6Props } from './types';\nimport { usePayPalSessionOptions } from '../hooks/usePayPalSessionOptions';\nimport { usePayPalOneTimeSession } from '../hooks/usePayPalOneTimeSession';\nimport { usePayPalButtonEligibility } from '../hooks/usePayPalButtonEligibility';\nimport { usePayPalSaveSession } from '../hooks/usePayPalSaveSession';\nimport { useAmount } from '../../../core/Context/AmountProvider';\n\nexport const PayPalCreditButton = ({\n paypalService,\n commit,\n vault,\n presentationModeOptions,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n onSubmit\n}: Readonly<Omit<PayPalComponentV6Props, 'style' | 'setComponentRef'>>) => {\n const [countryCode, setCountryCode] = useState<string>('');\n\n const payPalSDKInstance = useMemo(() => paypalService.getInstance(), [paypalService]);\n\n const { isZeroAuth } = useAmount();\n\n const { oneTimeSessionOptions, saveSessionOptions } = usePayPalSessionOptions({\n paypalService,\n commit,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n vault\n });\n\n const { onClick: oneTimePaymentClick } = usePayPalOneTimeSession(\n useMemo(\n () => ({\n presentationModeOptions,\n createSession: () => payPalSDKInstance.createPayPalCreditOneTimePaymentSession(oneTimeSessionOptions),\n onSubmit,\n onError\n }),\n [payPalSDKInstance, oneTimeSessionOptions, onSubmit, onError, presentationModeOptions]\n )\n );\n\n const { onClick: savePaymentClick } = usePayPalSaveSession(\n useMemo(\n () => ({\n presentationModeOptions,\n createSession: () => payPalSDKInstance.createPayPalCreditSavePaymentSession(saveSessionOptions),\n onSubmit,\n onError\n }),\n [payPalSDKInstance, saveSessionOptions, onSubmit, onError, presentationModeOptions]\n )\n );\n\n const { isEligible } = usePayPalButtonEligibility(paypalService, 'credit');\n\n useEffect(() => {\n if (!isEligible) return;\n\n const details = paypalService.getEligiblePaymentMethods().getDetails('credit');\n setCountryCode(details?.countryCode);\n }, [isEligible, paypalService]);\n\n if (!isEligible) {\n return null;\n }\n\n return (\n <paypal-credit-button\n onclick={isZeroAuth ? savePaymentClick : oneTimePaymentClick}\n countryCode={countryCode}\n data-testid=\"paypal-credit-button\"\n />\n );\n};\n"],"names":["PayPalCreditButton","paypalService","commit","vault","presentationModeOptions","onApprove","onShippingAddressChange","onShippingOptionsChange","onCancel","onError","onSubmit","countryCode","setCountryCode","useState","payPalSDKInstance","useMemo","getInstance","isZeroAuth","useAmount","oneTimeSessionOptions","saveSessionOptions","usePayPalSessionOptions","onClick","oneTimePaymentClick","usePayPalOneTimeSession","createSession","createPayPalCreditOneTimePaymentSession","savePaymentClick","usePayPalSaveSession","createPayPalCreditSavePaymentSession","isEligible","usePayPalButtonEligibility","useEffect","details","getEligiblePaymentMethods","getDetails","h","paypal-credit-button","onclick","data-testid"],"mappings":"wiBAUO,MAAMA,EAAqB,EAC9BC,gBACAC,SACAC,QACAC,0BACAC,YACAC,0BACAC,0BACAC,WACAC,UACAC,eAEA,MAAOC,EAAaC,GAAkBC,EAAiB,IAEjDC,EAAoBC,EAAQ,IAAMd,EAAce,cAAe,CAACf,KAEhEgB,WAAEA,GAAeC,KAEjBC,sBAAEA,EAAqBC,mBAAEA,GAAuBC,EAAwB,CAE1EnB,SACAG,YACAC,0BACAC,0BACAC,WACAC,UACAN,WAGImB,QAASC,GAAwBC,EACrCT,EACI,KAAA,CACIX,0BACAqB,cAAe,IAAMX,EAAkBY,wCAAwCP,GAC/ET,WACAD,YAEJ,CAACK,EAAmBK,EAAuBT,EAAUD,EAASL,MAI9DkB,QAASK,GAAqBC,EAClCb,EACI,KAAA,CACIX,0BACAqB,cAAe,IAAMX,EAAkBe,qCAAqCT,GAC5EV,WACAD,YAEJ,CAACK,EAAmBM,EAAoBV,EAAUD,EAASL,MAI7D0B,WAAEA,GAAeC,EAA2B9B,EAAe,UASjE,OAPA+B,EAAU,KACN,IAAKF,EAAY,OAEjB,MAAMG,EAAUhC,EAAciC,4BAA4BC,WAAW,UACrEvB,EAAeqB,GAAStB,cACzB,CAACmB,EAAY7B,IAEX6B,EAKDM,EAACC,uBAAAA,CACGC,QAASrB,EAAaU,EAAmBJ,EACzCZ,YAAaA,EACb4B,cAAY,yBAPT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as n}from"../../../external/preact/dist/preact.js";import{usePayPalStatus as o}from"../hooks/usePayPalStatus.js";import{PayPalCreditButton as e}from"./PayPalCreditButton.js";import{PayPalProcessingSpinner as p}from"./PayPalProcessingSpinner.js";import{PayPalSpinner as t}from"./PayPalSpinner.js";const r=({paypalService:r,commit:i=!0,presentationModeOptions:a,vault:s,onSubmit:m,onApprove:l,onShippingAddressChange:c,onShippingOptionsChange:g,onCancel:S,onError:h,setComponentRef:u})=>{const{status:d,handleOnApprove:v}=o({paypalService:r,onApprove:l,setComponentRef:u});return"pending"===d?n(t,null):"processing"===d?n(p,{withoutReviewPage:i}):n(e,{paypalService:r,presentationModeOptions:a,commit:i,vault:s,onSubmit:m,onApprove:v,onError:h,onCancel:S,onShippingAddressChange:c,onShippingOptionsChange:g})};export{r as PayPalCreditComponent};
|
|
2
|
+
//# sourceMappingURL=PayPalCreditComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalCreditComponent.js","sources":["../../../../../src/components/PayPal/components/PayPalCreditComponent.tsx"],"sourcesContent":["import { h } from 'preact';\n\nimport { usePayPalStatus } from '../hooks/usePayPalStatus';\nimport { PayPalCreditButton } from './PayPalCreditButton';\nimport { PayPalProcessingSpinner } from './PayPalProcessingSpinner';\nimport { PayPalSpinner } from './PayPalSpinner';\nimport { PayPalComponentV6Props } from './types';\n\nexport const PayPalCreditComponent = ({\n paypalService,\n commit = true,\n presentationModeOptions,\n vault,\n onSubmit,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n setComponentRef\n}: Readonly<Omit<PayPalComponentV6Props, 'style'>>) => {\n const { status, handleOnApprove } = usePayPalStatus({\n paypalService,\n onApprove,\n setComponentRef\n });\n\n if (status === 'pending') {\n return <PayPalSpinner />;\n }\n\n if (status === 'processing') {\n return <PayPalProcessingSpinner withoutReviewPage={commit} />;\n }\n\n return (\n <PayPalCreditButton\n paypalService={paypalService}\n presentationModeOptions={presentationModeOptions}\n commit={commit}\n vault={vault}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n onError={onError}\n onCancel={onCancel}\n onShippingAddressChange={onShippingAddressChange}\n onShippingOptionsChange={onShippingOptionsChange}\n />\n );\n};\n"],"names":["PayPalCreditComponent","paypalService","commit","presentationModeOptions","vault","onSubmit","onApprove","onShippingAddressChange","onShippingOptionsChange","onCancel","onError","setComponentRef","status","handleOnApprove","usePayPalStatus","h","PayPalSpinner","PayPalProcessingSpinner","withoutReviewPage","PayPalCreditButton"],"mappings":"6TAQO,MAAMA,EAAwB,EACjCC,gBACAC,UAAS,EACTC,0BACAC,QACAC,WACAC,YACAC,0BACAC,0BACAC,WACAC,UACAC,sBAEA,MAAMC,OAAEA,EAAMC,gBAAEA,GAAoBC,EAAgB,CAChDb,gBACAK,YACAK,oBAGJ,MAAe,YAAXC,EACOG,EAACC,EAAAA,MAGG,eAAXJ,EACOG,EAACE,EAAAA,CAAwBC,kBAAmBhB,IAInDa,EAACI,EAAAA,CACGlB,cAAeA,EACfE,wBAAyBA,EACzBD,OAAQA,EACRE,MAAOA,EACPC,SAAUA,EACVC,UAAWO,EACXH,QAASA,EACTD,SAAUA,EACVF,wBAAyBA,EACzBC,wBAAyBA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useMemo as t,useRef as o,useEffect as r}from"../../../external/preact/hooks/dist/hooks.js";import{useAmount as a}from"../../../core/Context/AmountProvider.js";import{getDecimalAmount as s}from"../../../utils/amount-util.js";const n=({paypalService:n,countryCode:c,messagingContentOptions:i,onError:u})=>{const l=t(()=>n.getInstance(),[n]),p=o(null),{amount:m}=a();return r(()=>{(async()=>{try{const e=l.createPayPalMessages({buyerCountry:c,currencyCode:m?.currency}),t=m?String(s(m.value,m.currency)):void 0;await e.fetchContent({textColor:i?.textColor??"BLACK",logoPosition:i?.logoPosition??"LEFT",logoType:i?.logoType??"TEXT",amount:t,onReady:e=>{p.current?.setContent(e)}})}catch(e){u(e)}})()},[l,c,m?.currency,m?.value,u]),e("paypal-message",{id:"paypal-message",ref:p,"data-testid":"paypal-message"})};export{n as PayPalMessaging};
|
|
2
|
+
//# sourceMappingURL=PayPalMessaging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalMessaging.js","sources":["../../../../../src/components/PayPal/components/PayPalMessaging.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useMemo, useEffect, useRef } from 'preact/hooks';\n\nimport { PayPalService } from '../services/PayPalService';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport type { PayPalFetchContentOptions, PayPalMessageElement } from '../paypal-js-types';\nimport { getDecimalAmount } from '../../../utils/amount-util';\n\nexport const PayPalMessaging = ({\n paypalService,\n countryCode,\n messagingContentOptions,\n onError\n}: Readonly<{\n paypalService: PayPalService;\n countryCode?: string;\n messagingContentOptions?: Pick<PayPalFetchContentOptions, 'logoType' | 'logoPosition' | 'textColor'>;\n onError: (error: Error) => void;\n}>) => {\n const payPalSDKInstance = useMemo(() => paypalService.getInstance(), [paypalService]);\n const messageElementRef = useRef<PayPalMessageElement | null>(null);\n const { amount } = useAmount();\n\n useEffect(() => {\n const fetchMessageContent = async (): Promise<void> => {\n try {\n const messagesInstance = payPalSDKInstance.createPayPalMessages({\n buyerCountry: countryCode,\n currencyCode: amount?.currency\n });\n\n const amountString = amount ? String(getDecimalAmount(amount.value, amount.currency)) : undefined;\n\n await messagesInstance.fetchContent({\n textColor: messagingContentOptions?.textColor ?? 'BLACK',\n logoPosition: messagingContentOptions?.logoPosition ?? 'LEFT',\n logoType: messagingContentOptions?.logoType ?? 'TEXT',\n amount: amountString,\n onReady: content => {\n messageElementRef.current?.setContent(content);\n }\n });\n } catch (error) {\n onError(error as Error);\n }\n };\n\n void fetchMessageContent();\n }, [payPalSDKInstance, countryCode, amount?.currency, amount?.value, onError]);\n\n return <paypal-message id=\"paypal-message\" ref={messageElementRef} data-testid=\"paypal-message\"></paypal-message>;\n};\n"],"names":["PayPalMessaging","paypalService","countryCode","messagingContentOptions","onError","payPalSDKInstance","useMemo","getInstance","messageElementRef","useRef","amount","useAmount","useEffect","async","messagesInstance","createPayPalMessages","buyerCountry","currencyCode","currency","amountString","String","getDecimalAmount","value","undefined","fetchContent","textColor","logoPosition","logoType","onReady","content","current","setContent","error","fetchMessageContent","h","paypal-message","id","ref","data-testid"],"mappings":"+SAQO,MAAMA,EAAkB,EAC3BC,gBACAC,cACAC,0BACAC,cAOA,MAAMC,EAAoBC,EAAQ,IAAML,EAAcM,cAAe,CAACN,IAChEO,EAAoBC,EAAoC,OACxDC,OAAEA,GAAWC,IA6BnB,OA3BAC,EAAU,KACsBC,WACxB,IACI,MAAMC,EAAmBT,EAAkBU,qBAAqB,CAC5DC,aAAcd,EACde,aAAcP,GAAQQ,WAGpBC,EAAeT,EAASU,OAAOC,EAAiBX,EAAOY,MAAOZ,EAAOQ,gBAAaK,QAElFT,EAAiBU,aAAa,CAChCC,UAAWtB,GAAyBsB,WAAa,QACjDC,aAAcvB,GAAyBuB,cAAgB,OACvDC,SAAUxB,GAAyBwB,UAAY,OAC/CjB,OAAQS,EACRS,QAASC,IACLrB,EAAkBsB,SAASC,WAAWF,KAGlD,CAAE,MAAOG,GACL5B,EAAQ4B,EACZ,GAGCC,IACN,CAAC5B,EAAmBH,EAAaQ,GAAQQ,SAAUR,GAAQY,MAAOlB,IAE9D8B,EAACC,iBAAAA,CAAeC,GAAG,iBAAiBC,IAAK7B,EAAmB8B,cAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as o,useMemo as t,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import{usePayPalSessionOptions as s}from"../hooks/usePayPalSessionOptions.js";import{usePayPalOneTimeSession as i}from"../hooks/usePayPalOneTimeSession.js";import{usePayPalButtonEligibility as a}from"../hooks/usePayPalButtonEligibility.js";const r=({paypalService:r,commit:p,presentationModeOptions:l,onApprove:c,onShippingAddressChange:m,onShippingOptionsChange:u,onCancel:d,onError:y,onSubmit:g})=>{const[h,S]=o(""),[C,P]=o(""),f=t(()=>r.getInstance(),[r]),{oneTimeSessionOptions:E}=s({commit:p,onApprove:c,onShippingAddressChange:m,onShippingOptionsChange:u,onCancel:d,onError:y}),{onClick:O}=i(t(()=>({presentationModeOptions:l,createSession:()=>f.createPayLaterOneTimePaymentSession(E),onSubmit:g,onError:y}),[f,E,g,y,l])),{isEligible:b}=a(r,"paylater");return n(()=>{if(!b)return;const e=r.getEligiblePaymentMethods().getDetails("paylater");P(e?.productCode),S(e?.countryCode)},[b,r]),b?e("paypal-pay-later-button",{onclick:O,productCode:C,countryCode:h,"data-testid":"paypal-paylater-button"}):null};export{r as PayPalPayLaterButton};
|
|
2
|
+
//# sourceMappingURL=PayPalPayLaterButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalPayLaterButton.js","sources":["../../../../../src/components/PayPal/components/PayPalPayLaterButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo, useState } from 'preact/hooks';\n\nimport type { PayPalComponentV6Props } from './types';\nimport { usePayPalSessionOptions } from '../hooks/usePayPalSessionOptions';\nimport { usePayPalOneTimeSession } from '../hooks/usePayPalOneTimeSession';\nimport { usePayPalButtonEligibility } from '../hooks/usePayPalButtonEligibility';\n\nexport const PayPalPayLaterButton = ({\n paypalService,\n commit,\n presentationModeOptions,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n onSubmit\n}: Readonly<Omit<PayPalComponentV6Props, 'style' | 'setComponentRef'>>) => {\n const [countryCode, setCountryCode] = useState<string>('');\n const [productCode, setProductCode] = useState<string>('');\n\n const payPalSDKInstance = useMemo(() => paypalService.getInstance(), [paypalService]);\n\n const { oneTimeSessionOptions } = usePayPalSessionOptions({\n paypalService,\n commit,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError\n });\n\n const { onClick } = usePayPalOneTimeSession(\n useMemo(\n () => ({\n presentationModeOptions,\n createSession: () => payPalSDKInstance.createPayLaterOneTimePaymentSession(oneTimeSessionOptions),\n onSubmit,\n onError\n }),\n [payPalSDKInstance, oneTimeSessionOptions, onSubmit, onError, presentationModeOptions]\n )\n );\n\n const { isEligible } = usePayPalButtonEligibility(paypalService, 'paylater');\n\n useEffect(() => {\n if (!isEligible) return;\n\n const details = paypalService.getEligiblePaymentMethods().getDetails('paylater');\n setProductCode(details?.productCode);\n setCountryCode(details?.countryCode);\n }, [isEligible, paypalService]);\n\n if (!isEligible) {\n return null;\n }\n\n return <paypal-pay-later-button onclick={onClick} productCode={productCode} countryCode={countryCode} data-testid=\"paypal-paylater-button\" />;\n};\n"],"names":["PayPalPayLaterButton","paypalService","commit","presentationModeOptions","onApprove","onShippingAddressChange","onShippingOptionsChange","onCancel","onError","onSubmit","countryCode","setCountryCode","useState","productCode","setProductCode","payPalSDKInstance","useMemo","getInstance","oneTimeSessionOptions","usePayPalSessionOptions","onClick","usePayPalOneTimeSession","createSession","createPayLaterOneTimePaymentSession","isEligible","usePayPalButtonEligibility","useEffect","details","getEligiblePaymentMethods","getDetails","h","paypal-pay-later-button","onclick","data-testid"],"mappings":"4ZAQO,MAAMA,EAAuB,EAChCC,gBACAC,SACAC,0BACAC,YACAC,0BACAC,0BACAC,WACAC,UACAC,eAEA,MAAOC,EAAaC,GAAkBC,EAAiB,KAChDC,EAAaC,GAAkBF,EAAiB,IAEjDG,EAAoBC,EAAQ,IAAMf,EAAcgB,cAAe,CAAChB,KAEhEiB,sBAAEA,GAA0BC,EAAwB,CAEtDjB,SACAE,YACAC,0BACAC,0BACAC,WACAC,aAGEY,QAAEA,GAAYC,EAChBL,EACI,KAAA,CACIb,0BACAmB,cAAe,IAAMP,EAAkBQ,oCAAoCL,GAC3ET,WACAD,YAEJ,CAACO,EAAmBG,EAAuBT,EAAUD,EAASL,MAIhEqB,WAAEA,GAAeC,EAA2BxB,EAAe,YAUjE,OARAyB,EAAU,KACN,IAAKF,EAAY,OAEjB,MAAMG,EAAU1B,EAAc2B,4BAA4BC,WAAW,YACrEf,EAAea,GAASd,aACxBF,EAAegB,GAASjB,cACzB,CAACc,EAAYvB,IAEXuB,EAIEM,EAACC,0BAAAA,CAAwBC,QAASZ,EAASP,YAAaA,EAAaH,YAAaA,EAAauB,cAAY,2BAHvG"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as o}from"../../../external/preact/dist/preact.js";import{usePayPalStatus as n}from"../hooks/usePayPalStatus.js";import{PayPalMessaging as e}from"./PayPalMessaging.js";import{PayPalPayLaterButton as t}from"./PayPalPayLaterButton.js";import{PayPalProcessingSpinner as a}from"./PayPalProcessingSpinner.js";import{PayPalSpinner as p}from"./PayPalSpinner.js";import r from"./PayPalPaylaterComponent.module.scss.js";const s=({paypalService:s,commit:i=!0,presentationModeOptions:m,hidePayPalMessaging:l,messagingContentOptions:g,countryCode:P,onSubmit:c,onApprove:y,onShippingAddressChange:d,onShippingOptionsChange:C,onCancel:S,onError:h,setComponentRef:u})=>{const{status:v,handleOnApprove:f}=n({paypalService:s,onApprove:y,setComponentRef:u});return"pending"===v?o(p,null):"processing"===v?o(a,{withoutReviewPage:i}):o("div",{className:r.payPalPaylaterComponent},!l&&o(e,{paypalService:s,countryCode:P,messagingContentOptions:g,onError:h}),o(t,{paypalService:s,presentationModeOptions:m,commit:i,onSubmit:c,onApprove:f,onError:h,onCancel:S,onShippingAddressChange:d,onShippingOptionsChange:C}))};export{s as PayPalPaylaterComponent};
|
|
2
|
+
//# sourceMappingURL=PayPalPaylaterComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalPaylaterComponent.js","sources":["../../../../../src/components/PayPal/components/PayPalPaylaterComponent.tsx"],"sourcesContent":["import { h } from 'preact';\n\nimport { usePayPalStatus } from '../hooks/usePayPalStatus';\nimport { PayPalMessaging } from './PayPalMessaging';\nimport { PayPalPayLaterButton } from './PayPalPayLaterButton';\nimport { PayPalProcessingSpinner } from './PayPalProcessingSpinner';\nimport { PayPalSpinner } from './PayPalSpinner';\nimport { PayPalComponentV6Props } from './types';\nimport { PayPalFetchContentOptions } from '../paypal-js-types';\n\nimport styles from './PayPalPaylaterComponent.module.scss';\n\nexport const PayPalPaylaterComponent = ({\n paypalService,\n commit = true,\n presentationModeOptions,\n hidePayPalMessaging,\n messagingContentOptions,\n countryCode,\n onSubmit,\n onApprove,\n onShippingAddressChange,\n onShippingOptionsChange,\n onCancel,\n onError,\n setComponentRef\n}: Readonly<\n Omit<PayPalComponentV6Props, 'style' | 'vault'> & {\n hidePayPalMessaging?: boolean;\n countryCode?: string;\n messagingContentOptions?: Pick<PayPalFetchContentOptions, 'logoType' | 'logoPosition' | 'textColor'>;\n }\n>) => {\n const { status, handleOnApprove } = usePayPalStatus({\n paypalService,\n onApprove,\n setComponentRef\n });\n\n if (status === 'pending') {\n return <PayPalSpinner />;\n }\n\n if (status === 'processing') {\n return <PayPalProcessingSpinner withoutReviewPage={commit} />;\n }\n\n return (\n <div className={styles.payPalPaylaterComponent}>\n {!hidePayPalMessaging && (\n <PayPalMessaging\n paypalService={paypalService}\n countryCode={countryCode}\n messagingContentOptions={messagingContentOptions}\n onError={onError}\n />\n )}\n <PayPalPayLaterButton\n paypalService={paypalService}\n presentationModeOptions={presentationModeOptions}\n commit={commit}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n onError={onError}\n onCancel={onCancel}\n onShippingAddressChange={onShippingAddressChange}\n onShippingOptionsChange={onShippingOptionsChange}\n />\n </div>\n );\n};\n"],"names":["PayPalPaylaterComponent","paypalService","commit","presentationModeOptions","hidePayPalMessaging","messagingContentOptions","countryCode","onSubmit","onApprove","onShippingAddressChange","onShippingOptionsChange","onCancel","onError","setComponentRef","status","handleOnApprove","usePayPalStatus","h","PayPalSpinner","PayPalProcessingSpinner","withoutReviewPage","div","className","styles","payPalPaylaterComponent","PayPalMessaging","PayPalPayLaterButton"],"mappings":"gbAYO,MAAMA,EAA0B,EACnCC,gBACAC,UAAS,EACTC,0BACAC,sBACAC,0BACAC,cACAC,WACAC,YACAC,0BACAC,0BACAC,WACAC,UACAC,sBAQA,MAAMC,OAAEA,EAAMC,gBAAEA,GAAoBC,EAAgB,CAChDf,gBACAO,YACAK,oBAGJ,MAAe,YAAXC,EACOG,EAACC,EAAAA,MAGG,eAAXJ,EACOG,EAACE,EAAAA,CAAwBC,kBAAmBlB,IAInDe,EAACI,MAAAA,CAAIC,UAAWC,EAAOC,0BACjBpB,GACEa,EAACQ,EAAAA,CACGxB,cAAeA,EACfK,YAAaA,EACbD,wBAAyBA,EACzBO,QAASA,IAGjBK,EAACS,EAAAA,CACGzB,cAAeA,EACfE,wBAAyBA,EACzBD,OAAQA,EACRK,SAAUA,EACVC,UAAWO,EACXH,QAASA,EACTD,SAAUA,EACVF,wBAAyBA,EACzBC,wBAAyBA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalPaylaterComponent.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../../internal/Spinner/Spinner.js";const a=({withoutReviewPage:a})=>{const{i18n:i}=t();return e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing","aria-live":"polite","aria-busy":"true"},e(r,{size:"medium",inline:!0}),a&&i.get("paypal.processingPayment"))};export{a as PayPalProcessingSpinner};
|
|
2
|
+
//# sourceMappingURL=PayPalProcessingSpinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalProcessingSpinner.js","sources":["../../../../../src/components/PayPal/components/PayPalProcessingSpinner.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Spinner from '../../internal/Spinner';\n\nexport const PayPalProcessingSpinner = ({ withoutReviewPage }: Readonly<{ withoutReviewPage: boolean }>) => {\n const { i18n } = useCoreContext();\n\n return (\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\" aria-live=\"polite\" aria-busy=\"true\">\n <Spinner size=\"medium\" inline />\n {withoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n );\n};\n"],"names":["PayPalProcessingSpinner","withoutReviewPage","i18n","useCoreContext","h","div","className","aria-live","aria-busy","Spinner","size","inline","get"],"mappings":"gMAIO,MAAMA,EAA0B,EAAGC,wBACtC,MAAMC,KAAEA,GAASC,IAEjB,OACIC,EAACC,MAAAA,CAAIC,UAAU,4EAA4EC,YAAU,SAASC,YAAU,QACpHJ,EAACK,EAAAA,CAAQC,KAAK,SAASC,QAAAA,IACtBV,GAAqBC,EAAKU,IAAI"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as a}from"../../../external/preact/dist/preact.js";import e from"../../internal/Spinner/Spinner.js";const t=()=>a("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending","aria-live":"polite","aria-busy":"true","data-testid":"paypal-loader"},a(e,null));export{t as PayPalSpinner};
|
|
2
|
+
//# sourceMappingURL=PayPalSpinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayPalSpinner.js","sources":["../../../../../src/components/PayPal/components/PayPalSpinner.tsx"],"sourcesContent":["import { h } from 'preact';\n\nimport Spinner from '../../internal/Spinner';\n\nexport const PayPalSpinner = () => {\n return (\n <div\n className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n data-testid=\"paypal-loader\"\n >\n <Spinner />\n </div>\n );\n};\n"],"names":["PayPalSpinner","h","div","className","aria-live","aria-busy","data-testid","Spinner"],"mappings":"+HAIaA,EAAgB,IAErBC,EAACC,MAAAA,CACGC,UAAU,yEACVC,YAAU,SACVC,YAAU,OACVC,cAAY,iBAEZL,EAACM,EAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as n,useEffect as
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as n,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import t from"../../../_virtual/index.js";import{getStyle as o}from"../utils/get-paypal-styles.js";import{PayPalProcessingSpinner as c}from"./PayPalProcessingSpinner.js";function l({onInit:l,onApprove:r,onClick:p,onCancel:i,onError:s,onShippingAddressChange:u,onShippingOptionsChange:_,onSubmit:y,isProcessingPayment:d,paypalRef:m,style:h,...k}){const g="tokenize"===k.configuration?.intent,P=n(null),f=n(null),b=n(null),v=n(null),C=(e,n)=>{const a={...g&&{createBillingAgreement:y},...!g&&{createOrder:y},...!g&&"venmo"!==e&&u&&{onShippingAddressChange:u},...!g&&"venmo"!==e&&_&&{onShippingOptionsChange:_},fundingSource:e,style:o(e,h),onInit:l,onClick:p,onCancel:i,onError:s,onApprove:r},t=m?.Buttons?.(a);t?.isEligible()&&n.current&&t.render(n.current)};return a(()=>{const{PAYPAL:e,CREDIT:n,PAYLATER:a,VENMO:t}=m?.FUNDING;k.blockPayPalButton||C(e,P),k.blockPayPalCreditButton||C(n,f),k.blockPayPalPayLaterButton||C(a,b),k.blockPayPalVenmoButton||C(t,v)},[]),e("div",{className:t("adyen-checkout__paypal__buttons",{"adyen-checkout__paypal-processing":d})},e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal",ref:P}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit",ref:f}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later",ref:b}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo",ref:v}),d&&e("div",{className:"adyen-checkout__paypal"},e(c,{withoutReviewPage:Boolean(k.commit)})))}export{l as default};
|
|
2
2
|
//# sourceMappingURL=PaypalButtons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\nimport
|
|
1
|
+
{"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\n\nimport type { PayPalButtonsProps } from './types';\nimport type { SupportedPayPalFundingSources } from '../types';\nimport { PayPalProcessingSpinner } from './PayPalProcessingSpinner';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: Readonly<PayPalButtonsProps>) {\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: SupportedPayPalFundingSources, buttonRef: RefObject<HTMLDivElement>) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef?.Buttons?.(configuration);\n\n if (button?.isEligible() && buttonRef.current) {\n void button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef?.FUNDING as Record<string, SupportedPayPalFundingSources>;\n\n if (!props.blockPayPalButton) createButton(PAYPAL, paypalButtonRef);\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <PayPalProcessingSpinner withoutReviewPage={Boolean(props.commit)} />\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","props","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","current","render","useEffect","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalButton","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","h","div","className","classnames","ref","PayPalProcessingSpinner","withoutReviewPage","Boolean","commit"],"mappings":"uUASe,SAASA,GAAcC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,wBACPA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,KACGC,IAEH,MAAMC,EAA6C,aAAhCD,EAAME,eAAeC,OAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8CC,KAChE,MAAMT,EAAgB,IACdD,GAAc,CAAEW,uBAAwBhB,OACvCK,GAAc,CAAEY,YAAajB,OAC7BK,GAAgC,UAAlBS,GAA6BhB,GAA2B,CAAEA,+BACxEO,GAAgC,UAAlBS,GAA6Bf,GAA2B,CAAEA,2BAC7Ee,gBACAX,MAAOe,EAASJ,EAAeX,GAC/BV,SACAE,UACAC,WACAC,UACAH,aAGEyB,EAASjB,GAAWkB,UAAUd,GAEhCa,GAAQE,cAAgBN,EAAUO,SAC7BH,EAAOI,OAAOR,EAAUO,UAarC,OATAE,EAAU,KACN,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU1B,GAAW2B,QAElDzB,EAAM0B,mBAAmBjB,EAAaY,EAAQjB,GAC9CJ,EAAM2B,yBAAyBlB,EAAaa,EAAQhB,GACpDN,EAAM4B,2BAA2BnB,EAAac,EAAUhB,GACxDP,EAAM6B,wBAAwBpB,EAAae,EAAOhB,IACxD,IAGCsB,EAACC,MAAAA,CAAIC,UAAWC,EAAW,kCAAmC,CAAE,oCAAqCpC,KACjGiC,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK9B,IAC5F0B,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK5B,IAC5FwB,EAACC,MAAAA,CAAIC,UAAU,2EAA2EE,IAAK3B,IAC/FuB,EAACC,MAAAA,CAAIC,UAAU,uEAAuEE,IAAK1B,IAE1FX,GACGiC,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACK,EAAAA,CAAwBC,kBAAmBC,QAAQrC,EAAMsC,WAK9E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useRef as o,useEffect as a,useCallback as s}from"../../../external/preact/hooks/dist/hooks.js";import n from"./PaypalButtons.js";import{PayPalSpinner as r}from"./PayPalSpinner.js";import{getPaypalUrl as c}from"../utils/get-paypal-url.js";import p from"../../../utils/Script.js";import i from"../../../core/Analytics/useAnalytics.js";function l({onApprove:l,onCancel:m,onError:u,onSubmit:y,onScriptLoadFailure:d,setComponentRef:f,...j}){const[N,S]=t("pending"),{analytics:g}=i(),h=o({setStatus:S});a(()=>{f(h.current)},[f]);const v=s((e,t)=>(S("processing"),l(e,t),Promise.resolve()),[l]),P=()=>{S("ready")},b=e=>{d(e)};return a(()=>{const e=c(j),t={...j.cspNonce&&{nonce:j.cspNonce}},o={...j.cspNonce&&{cspNonce:j.cspNonce}},a=new p({src:e,component:"paypal",attributes:t,dataAttributes:o,analytics:g});return a.load().then(P).catch(b),()=>{a.remove()}},[]),"pending"===N?e("div",{className:"adyen-checkout__paypal"},e(r,null)):e("div",{className:"adyen-checkout__paypal","data-testid":"paypal-component"},e(n,{...j,onCancel:m,onError:u,onSubmit:y,onApprove:v,isProcessingPayment:"processing"===N,paypalRef:window.paypal}))}export{l as default};
|
|
2
2
|
//# sourceMappingURL=PaypalComponent.js.map
|