@adyen/adyen-web 6.47.0-alpha.eada81f → 6.47.0
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 +20 -22
- 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 +122 -581
- package/dist/es/adyen.css +20 -22
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
- package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayButton.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es/components/AmazonPay/components/OrderButton.js +1 -1
- package/dist/es/components/AmazonPay/components/OrderButton.js.map +1 -1
- package/dist/es/components/AmazonPay/components/SignOutButton.js +1 -1
- package/dist/es/components/AmazonPay/components/SignOutButton.js.map +1 -1
- package/dist/es/components/AmazonPay/utils.js +1 -1
- package/dist/es/components/AmazonPay/utils.js.map +1 -1
- package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
- package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es/components/CashAppPay/components/CashAppComponent.js +1 -1
- package/dist/es/components/CashAppPay/components/CashAppComponent.js.map +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es/components/CashAppPay/services/types.js.map +1 -1
- package/dist/es/components/CustomCard/CustomCard.js +1 -1
- package/dist/es/components/CustomCard/CustomCard.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/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es/components/Giftcard/Giftcard.js +1 -1
- package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es/components/Giftcard/types.js +2 -0
- package/dist/es/components/Giftcard/types.js.map +1 -0
- package/dist/es/components/Giftcard/utils.js +2 -0
- package/dist/es/components/Giftcard/utils.js.map +1 -0
- package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
- package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
- package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
- package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
- package/dist/es/components/PayPal/Paypal.js +1 -1
- package/dist/es/components/PayPal/Paypal.js.map +1 -1
- 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/config.js +1 -1
- package/dist/es/components/PayPal/config.js.map +1 -1
- 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/PayPalFastlane/Fastlane.js +1 -1
- package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/utils.js +1 -1
- package/dist/es/components/ThreeDS2/components/utils.js.map +1 -1
- 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/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es/components/index.js +1 -1
- package/dist/es/components/internal/Address/Address.js +1 -1
- package/dist/es/components/internal/Address/Address.js.map +1 -1
- package/dist/es/components/internal/Address/Specifications.js +1 -1
- package/dist/es/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es/components/internal/Address/components/AddressSearch.js +1 -1
- package/dist/es/components/internal/Address/components/AddressSearch.js.map +1 -1
- package/dist/es/components/internal/Address/components/CountryField.js +1 -1
- package/dist/es/components/internal/Address/components/CountryField.js.map +1 -1
- package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
- package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
- package/dist/es/components/internal/Address/components/StateField.js +1 -1
- package/dist/es/components/internal/Address/components/StateField.js.map +1 -1
- package/dist/es/components/internal/Address/constants.js.map +1 -1
- package/dist/es/components/internal/Address/utils.js.map +1 -1
- package/dist/es/components/internal/Address/validate.formats.js +1 -1
- package/dist/es/components/internal/Address/validate.formats.js.map +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/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
- package/dist/es/components/internal/CompanyDetails/CompanyDetails.js +1 -1
- package/dist/es/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
- package/dist/es/components/internal/CompanyDetails/validate.js +1 -1
- package/dist/es/components/internal/CompanyDetails/validate.js.map +1 -1
- package/dist/es/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
- package/dist/es/components/internal/FormFields/Field/Field.js +1 -1
- package/dist/es/components/internal/FormFields/Field/Field.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputBase.js +1 -1
- package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputDate/InputDate.js +1 -1
- package/dist/es/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputDate/utils.js.map +1 -1
- package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
- package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es/components/internal/IbanInput/specifications.js.map +1 -1
- package/dist/es/components/internal/IbanInput/utils.js +1 -1
- package/dist/es/components/internal/IbanInput/utils.js.map +1 -1
- package/dist/es/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
- package/dist/es/components/internal/PersonalDetails/validate.js +1 -1
- package/dist/es/components/internal/PersonalDetails/validate.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es/components/internal/UIElement/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/Services/http.js.map +1 -1
- package/dist/es/core/config.js +1 -1
- package/dist/es/core/config.js.map +1 -1
- package/dist/es/core/core.js +1 -1
- package/dist/es/core/core.js.map +1 -1
- package/dist/es/core/utils.js +1 -1
- package/dist/es/core/utils.js.map +1 -1
- package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
- package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
- package/dist/es/index.d.ts +122 -581
- package/dist/es/index.js +1 -1
- package/dist/es/language/Language.js +1 -1
- package/dist/es/language/Language.js.map +1 -1
- package/dist/es/language/utils.js +1 -1
- package/dist/es/language/utils.js.map +1 -1
- package/dist/es/utils/Script.js.map +1 -1
- package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es/utils/Validator/Validator.js +1 -1
- package/dist/es/utils/Validator/Validator.js.map +1 -1
- package/dist/es/utils/Validator/defaultRules.js +1 -1
- package/dist/es/utils/Validator/defaultRules.js.map +1 -1
- package/dist/es/utils/amount-util.js +1 -1
- package/dist/es/utils/amount-util.js.map +1 -1
- package/dist/es/utils/browserInfo.js.map +1 -1
- package/dist/es/utils/createSdkData.js +1 -1
- package/dist/es/utils/createSdkData.js.map +1 -1
- package/dist/es/utils/get-issuer-image.js +1 -1
- package/dist/es/utils/get-issuer-image.js.map +1 -1
- package/dist/es/utils/get-process-message-handler.js.map +1 -1
- package/dist/es/utils/getConsentUrl.js +1 -1
- package/dist/es/utils/getConsentUrl.js.map +1 -1
- package/dist/es/utils/getErrorMessage.js.map +1 -1
- package/dist/es/utils/getOrigin.js.map +1 -1
- package/dist/es/utils/isValidURL.js +1 -1
- package/dist/es/utils/isValidURL.js.map +1 -1
- package/dist/es/utils/promiseTimeout.js.map +1 -1
- package/dist/es/utils/useAutoFocus.js.map +1 -1
- package/dist/es/utils/validator-utils.js +1 -1
- package/dist/es/utils/validator-utils.js.map +1 -1
- package/dist/es-legacy/adyen.css +20 -22
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
- package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/OrderButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/OrderButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
- package/dist/es-legacy/components/AmazonPay/utils.js.map +1 -1
- package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js +1 -1
- package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/services/types.js.map +1 -1
- package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
- package/dist/es-legacy/components/CustomCard/CustomCard.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/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
- package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/types.js +2 -0
- package/dist/es-legacy/components/Giftcard/types.js.map +1 -0
- package/dist/es-legacy/components/Giftcard/utils.js +2 -0
- package/dist/es-legacy/components/Giftcard/utils.js.map +1 -0
- package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
- 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/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/config.js +1 -1
- package/dist/es-legacy/components/PayPal/config.js.map +1 -1
- 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/PayPalFastlane/Fastlane.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/utils.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/utils.js.map +1 -1
- 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/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es-legacy/components/index.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/Specifications.js +1 -1
- package/dist/es-legacy/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/AddressSearch.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/AddressSearch.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/CountryField.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/CountryField.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/StateField.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/StateField.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/validate.formats.js +1 -1
- package/dist/es-legacy/components/internal/Address/validate.formats.js.map +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/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/validate.js +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/validate.js.map +1 -1
- package/dist/es-legacy/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Field/Field.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/specifications.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/utils.js +1 -1
- package/dist/es-legacy/components/internal/IbanInput/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/validate.js +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/validate.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/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/Services/http.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/core/core.js +1 -1
- package/dist/es-legacy/core/core.js.map +1 -1
- package/dist/es-legacy/core/utils.js +1 -1
- package/dist/es-legacy/core/utils.js.map +1 -1
- package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
- package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
- package/dist/es-legacy/index.js +1 -1
- package/dist/es-legacy/language/Language.js +1 -1
- package/dist/es-legacy/language/Language.js.map +1 -1
- package/dist/es-legacy/language/utils.js +1 -1
- package/dist/es-legacy/language/utils.js.map +1 -1
- package/dist/es-legacy/utils/Script.js.map +1 -1
- package/dist/es-legacy/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es-legacy/utils/Validator/Validator.js +1 -1
- package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
- package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
- package/dist/es-legacy/utils/Validator/defaultRules.js.map +1 -1
- package/dist/es-legacy/utils/amount-util.js +1 -1
- package/dist/es-legacy/utils/amount-util.js.map +1 -1
- package/dist/es-legacy/utils/browserInfo.js.map +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/get-issuer-image.js +1 -1
- package/dist/es-legacy/utils/get-issuer-image.js.map +1 -1
- package/dist/es-legacy/utils/get-process-message-handler.js.map +1 -1
- package/dist/es-legacy/utils/getConsentUrl.js +1 -1
- package/dist/es-legacy/utils/getConsentUrl.js.map +1 -1
- package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
- package/dist/es-legacy/utils/getOrigin.js.map +1 -1
- package/dist/es-legacy/utils/isValidURL.js +1 -1
- package/dist/es-legacy/utils/isValidURL.js.map +1 -1
- package/dist/es-legacy/utils/promiseTimeout.js.map +1 -1
- package/dist/es-legacy/utils/useAutoFocus.js.map +1 -1
- package/dist/es-legacy/utils/validator-utils.js +1 -1
- package/dist/es-legacy/utils/validator-utils.js.map +1 -1
- package/package.json +25 -24
- package/styles/adyen.css +20 -22
- package/dist/es/components/PayPal/PayPalCredit.js +0 -2
- package/dist/es/components/PayPal/PayPalCredit.js.map +0 -1
- package/dist/es/components/PayPal/PayPalPaylater.js +0 -2
- package/dist/es/components/PayPal/PayPalPaylater.js.map +0 -1
- package/dist/es/components/PayPal/Venmo.js +0 -2
- package/dist/es/components/PayPal/Venmo.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalComponentV6.js +0 -2
- package/dist/es/components/PayPal/components/PayPalComponentV6.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalCreditButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalCreditButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js +0 -2
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalMessaging.js +0 -2
- package/dist/es/components/PayPal/components/PayPalMessaging.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalSpinner.js +0 -2
- package/dist/es/components/PayPal/components/PayPalSpinner.js.map +0 -1
- package/dist/es/components/PayPal/components/VenmoButton.js +0 -2
- package/dist/es/components/PayPal/components/VenmoButton.js.map +0 -1
- package/dist/es/components/PayPal/components/VenmoComponent.js +0 -2
- package/dist/es/components/PayPal/components/VenmoComponent.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js +0 -2
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
- package/dist/es/components/PayPal/models/BasePayPalElement.js +0 -2
- package/dist/es/components/PayPal/models/BasePayPalElement.js.map +0 -1
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js +0 -2
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
- package/dist/es/components/PayPal/services/PayPalService.js +0 -2
- package/dist/es/components/PayPal/services/PayPalService.js.map +0 -1
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js +0 -2
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
- package/dist/es/components/PayPal/services/request-paypal-order-details.js +0 -2
- package/dist/es/components/PayPal/services/request-paypal-order-details.js.map +0 -1
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
- package/dist/es/utils/is-live-environment.js +0 -2
- package/dist/es/utils/is-live-environment.js.map +0 -1
- package/dist/es-legacy/components/PayPal/PayPalCredit.js +0 -2
- package/dist/es-legacy/components/PayPal/PayPalCredit.js.map +0 -1
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js +0 -2
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js.map +0 -1
- package/dist/es-legacy/components/PayPal/Venmo.js +0 -2
- package/dist/es-legacy/components/PayPal/Venmo.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js +0 -2
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js +0 -2
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/PayPalService.js +0 -2
- package/dist/es-legacy/components/PayPal/services/PayPalService.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js +0 -2
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js +0 -2
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js.map +0 -1
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
- package/dist/es-legacy/utils/is-live-environment.js +0 -2
- package/dist/es-legacy/utils/is-live-environment.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiftcardComponent.js","sources":["../../../../../src/components/Giftcard/components/GiftcardComponent.tsx"],"sourcesContent":["import { Component, FunctionComponent, h } from 'preact';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport Alert from '../../internal/Alert';\nimport GiftcardResult from './GiftcardResult';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\nimport { useSRPanelForGiftcardErrors } from './useSRPanelForGiftcardErrors';\nimport { GiftCardBalanceCheckErrorType, GiftCardValidationError } from '../types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport type { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\nimport type { SFPProps } from '../../internal/SecuredFields/SFP/types';\nimport type { UIElementStatus } from '../../internal/UIElement/types';\n\ninterface GiftcardComponentProps extends Partial<Pick<SFPProps, 'clientKey' | 'loadingContext'>> {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n makeBalanceCheck: (event) => void;\n makePayment: (event) => void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyDown?: (event: KeyboardEvent) => void;\n onSubmitAnalytics?: (event: AbstractAnalyticsEvent) => void;\n}\n\nclass Giftcard extends Component<Readonly<GiftcardComponentProps>> {\n public state = {\n status: 'ready',\n data: {},\n balance: null,\n transactionLimit: null,\n focusedElement: false,\n isValid: false,\n sfpState: {},\n isValidating: false,\n transformedErrors: {}\n };\n\n public static readonly defaultProps = {\n pinRequired: true,\n expiryDateRequired: false,\n onChange: () => {},\n onFocus: () => {},\n onBlur: () => {},\n fieldsLayoutComponent: GiftCardFields\n };\n\n public sfp: SecuredFieldsProvider;\n\n /**\n * Maps string error codes from SecuredFields to validation rule objects\n */\n public mapErrorsToValidationObjects = () => {\n // Use the sfp reference to call mapErrorsToValidationRuleResult\n if (!this.sfp) return {};\n return this.sfp.mapErrorsToValidationRuleResult();\n };\n\n private readonly updateTransformedErrors = (balanceCheckErrors?: Record<string, GiftCardValidationError>) => {\n const transformedErrors = this.mapErrorsToValidationObjects();\n\n const mergedErrors = { ...transformedErrors, ...balanceCheckErrors };\n\n this.setState({ transformedErrors: mergedErrors });\n };\n\n public onChange = sfpState => {\n this.setState({ sfpState }, () => this.updateTransformedErrors());\n\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\n };\n\n public handleFocus = e => {\n this.setState({ focusedElement: e.currentFocusObject });\n\n const isFocused = e.focus === true;\n if (isFocused) {\n this.props.onFocus(e);\n } else {\n this.props.onBlur(e);\n }\n };\n\n public setBalance = ({ balance, transactionLimit }) => {\n this.setState({ balance, transactionLimit });\n };\n\n /**\n * Generates balance check errors in the same format as SFP errors\n * Compatible with the transformedErrors structure\n */\n private generateBalanceCheckErrors(errorType?: GiftCardBalanceCheckErrorType | null): Record<string, GiftCardValidationError> {\n const balanceCheckErrors: Record<string, GiftCardValidationError> = {};\n\n // This is the field that the error is associated with, only used for SR logic\n const fieldToAnnounce = 'encryptedCardNumber';\n\n // If errorType is null, clear errors\n if (errorType === null) {\n return balanceCheckErrors;\n }\n\n // Create error in the same format as SFP errors for consistency\n balanceCheckErrors[fieldToAnnounce] = {\n isValid: false,\n errorMessage: `error.giftcard.${errorType}`,\n error: errorType\n };\n\n return balanceCheckErrors;\n }\n\n /**\n * Checks if a status represents a balance check error\n */\n private isBalanceCheckError(status: string): boolean {\n return ['no-balance', 'card-error', 'currency-error'].includes(status);\n }\n\n /**\n * Method called by GiftcardElement to set balance check errors only\n */\n public setBalanceCheckErrors = (errorType: GiftCardBalanceCheckErrorType | null): void => {\n // Check if the errors should be displayed\n if (this.isBalanceCheckError(errorType)) {\n // Generate balance check errors in the style of useForm\n // This is usefull because then we can use the same logic for SF and balance check errors\n // Also we can use the same logic for SRPanel errors\n const balanceCheckErrors = this.generateBalanceCheckErrors(errorType);\n this.updateTransformedErrors(balanceCheckErrors);\n }\n };\n\n public showValidation = () => {\n this.setState({ isValidating: true });\n\n // Validate SecuredFields\n this.sfp?.showValidation();\n };\n\n public setIsValidating = (val: boolean) => {\n this.setState({ isValidating: val });\n };\n\n public setStatus = (status: UIElementStatus) => {\n this.setState({ status });\n };\n\n render(props, { focusedElement, balance, transactionLimit, isValidating, transformedErrors }) {\n const { i18n } = useCoreContext();\n const { amount } = useAmount();\n\n // Handle SRPanel errors in render with transformed error objects\n useSRPanelForGiftcardErrors({\n errors: transformedErrors,\n isValidating,\n setIsValidating: this.setIsValidating,\n sfp: this.sfp\n });\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return (\n <GiftcardResult\n balance={balance}\n transactionLimit={transactionLimit}\n makePayment={props.makePayment}\n status={this.state.status}\n makeBalanceCheck={props.makeBalanceCheck}\n payButton={this.props.payButton}\n />\n );\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n // This logic is a bit of a hack, but it's the only way to get the error message for balance check errors\n // In the future we should move this logic to useForm\n if (transformedErrors.encryptedCardNumber) {\n return i18n.get(transformedErrors.encryptedCardNumber.errorMessage);\n }\n\n return null;\n };\n\n return (\n <div className=\"adyen-checkout__giftcard\">\n {this.state.status === 'error' && <Alert icon={'cross'}>{i18n.get('error.message.unknown')}</Alert>}\n\n <SecuredFieldsProvider\n {...this.props}\n clientKey={this.props.clientKey}\n loadingContext={this.props.loadingContext}\n ref={ref => {\n this.sfp = ref;\n }}\n onChange={this.onChange}\n onFocus={this.handleFocus}\n onSubmitAnalytics={props.onSubmitAnalytics}\n type={GIFT_CARD}\n componentType={props.type}\n render={({ setRootNode, setFocusOn }, sfpState) =>\n this.props.fieldsLayoutComponent({\n i18n: i18n,\n pinRequired: this.props.pinRequired,\n focusedElement: focusedElement,\n getCardErrorMessage: getCardErrorMessage,\n setRootNode: setRootNode,\n setFocusOn: setFocusOn,\n sfpState: sfpState\n })\n }\n />\n\n {this.props.payButton({\n status: this.state.status,\n onClick: this.props.makeBalanceCheck,\n label: i18n.get('applyGiftcard'),\n showReview: false\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","generateBalanceCheckErrors","errorType","balanceCheckErrors","isValid","errorMessage","error","isBalanceCheckError","status","includes","render","props","focusedElement","balance","transactionLimit","isValidating","transformedErrors","i18n","useCoreContext","amount","useAmount","useSRPanelForGiftcardErrors","errors","setIsValidating","this","sfp","transactionAmount","value","hasEnoughBalance","h","GiftcardResult","makePayment","state","makeBalanceCheck","payButton","getCardErrorMessage","sfpState","encryptedCardNumber","get","div","className","Alert","icon","SecuredFieldsProvider","clientKey","loadingContext","ref","onChange","onFocus","handleFocus","onSubmitAnalytics","type","GIFT_CARD","componentType","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","onClick","label","showReview","super","args","_define_property","data","mapErrorsToValidationObjects","mapErrorsToValidationRuleResult","updateTransformedErrors","mergedErrors","_object_spread","setState","isSfpValid","e","currentFocusObject","focus","onBlur","setBalance","setBalanceCheckErrors","showValidation","_this_sfp","val","setStatus","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GiftcardComponent.js","sources":["../../../../../src/components/Giftcard/components/GiftcardComponent.tsx"],"sourcesContent":["import { Component, FunctionComponent, h } from 'preact';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport Alert from '../../internal/Alert';\nimport GiftcardResult from './GiftcardResult';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\nimport { useSRPanelForGiftcardErrors } from './useSRPanelForGiftcardErrors';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport type { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\nimport type { SFPProps } from '../../internal/SecuredFields/SFP/types';\nimport type { UIElementStatus } from '../../internal/UIElement/types';\nimport type { GiftCardBalanceCheckErrorType, GiftCardValidationError, KnownBalanceCheckError } from '../types';\n\n/**\n * Explicit key map so that adding a member to KnownBalanceCheckError is a compile error until a translation key exists.\n * An interpolated key cannot be verified by TS and a missing one renders the raw key to the shopper.\n */\nconst INLINE_ERROR_TRANSLATION_KEYS: Record<KnownBalanceCheckError, string> = {\n 'no-balance': 'error.giftcard.no-balance',\n 'card-error': 'error.giftcard.card-error',\n 'currency-error': 'error.giftcard.currency-error'\n};\n\ninterface GiftcardComponentProps extends Partial<Pick<SFPProps, 'clientKey' | 'loadingContext'>> {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n makeBalanceCheck: (event) => void;\n makePayment: (event) => void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyDown?: (event: KeyboardEvent) => void;\n onSubmitAnalytics?: (event: AbstractAnalyticsEvent) => void;\n}\n\nclass Giftcard extends Component<Readonly<GiftcardComponentProps>> {\n public state = {\n status: 'ready',\n data: {},\n balance: null,\n transactionLimit: null,\n focusedElement: false,\n isValid: false,\n sfpState: {},\n isValidating: false,\n transformedErrors: {},\n showUnknownError: false\n };\n\n public static readonly defaultProps = {\n pinRequired: true,\n expiryDateRequired: false,\n onChange: () => {},\n onFocus: () => {},\n onBlur: () => {},\n fieldsLayoutComponent: GiftCardFields\n };\n\n public sfp: SecuredFieldsProvider;\n\n /**\n * Maps string error codes from SecuredFields to validation rule objects\n */\n public mapErrorsToValidationObjects = () => {\n // Use the sfp reference to call mapErrorsToValidationRuleResult\n if (!this.sfp) return {};\n return this.sfp.mapErrorsToValidationRuleResult();\n };\n\n private readonly updateTransformedErrors = (balanceCheckErrors?: Record<string, GiftCardValidationError>) => {\n const transformedErrors = this.mapErrorsToValidationObjects();\n\n const mergedErrors = { ...transformedErrors, ...balanceCheckErrors };\n\n this.setState({ transformedErrors: mergedErrors });\n };\n\n public onChange = sfpState => {\n this.setState({ sfpState }, () => this.updateTransformedErrors());\n\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\n };\n\n public handleFocus = e => {\n this.setState({ focusedElement: e.currentFocusObject });\n\n const isFocused = e.focus === true;\n if (isFocused) {\n this.props.onFocus(e);\n } else {\n this.props.onBlur(e);\n }\n };\n\n public setBalance = ({ balance, transactionLimit }) => {\n this.setState({ balance, transactionLimit });\n };\n\n /**\n * Generates balance check errors in the same format as SFP errors\n * Compatible with the transformedErrors structure\n */\n private generateBalanceCheckErrors(errorType: KnownBalanceCheckError | null): Record<string, GiftCardValidationError> {\n const balanceCheckErrors: Record<string, GiftCardValidationError> = {};\n\n // This is the field that the error is associated with, only used for SR logic\n const fieldToAnnounce = 'encryptedCardNumber';\n\n // If there is no errorType, clear errors\n if (errorType == null) {\n return balanceCheckErrors;\n }\n\n // Create error in the same format as SFP errors for consistency\n balanceCheckErrors[fieldToAnnounce] = {\n isValid: false,\n errorMessage: INLINE_ERROR_TRANSLATION_KEYS[errorType],\n error: errorType\n };\n\n return balanceCheckErrors;\n }\n\n /**\n * Method called by GiftcardElement to set balance check errors only\n */\n public setBalanceCheckErrors = (errorType: GiftCardBalanceCheckErrorType | null): void => {\n // Errors we cannot attribute to the card itself are shown as a banner instead of an inline field error\n const inlineError = errorType != null && errorType !== 'unknown-error' ? errorType : null;\n\n this.setState({ showUnknownError: errorType === 'unknown-error' });\n\n // Generate balance check errors in the style of useForm\n // This is usefull because then we can use the same logic for SF and balance check errors\n // Also we can use the same logic for SRPanel errors\n this.updateTransformedErrors(this.generateBalanceCheckErrors(inlineError));\n };\n\n public showValidation = () => {\n this.setState({ isValidating: true });\n\n // Validate SecuredFields\n this.sfp?.showValidation();\n };\n\n public setIsValidating = (val: boolean) => {\n this.setState({ isValidating: val });\n };\n\n public setStatus = (status: UIElementStatus) => {\n this.setState({ status });\n };\n\n render(props, { focusedElement, balance, transactionLimit, isValidating, transformedErrors, showUnknownError }) {\n const { i18n } = useCoreContext();\n const { amount } = useAmount();\n\n // Handle SRPanel errors in render with transformed error objects\n useSRPanelForGiftcardErrors({\n errors: transformedErrors,\n isValidating,\n setIsValidating: this.setIsValidating,\n sfp: this.sfp\n });\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return (\n <GiftcardResult\n balance={balance}\n transactionLimit={transactionLimit}\n makePayment={props.makePayment}\n status={this.state.status}\n makeBalanceCheck={props.makeBalanceCheck}\n payButton={this.props.payButton}\n />\n );\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n // This logic is a bit of a hack, but it's the only way to get the error message for balance check errors\n // In the future we should move this logic to useForm\n if (transformedErrors.encryptedCardNumber) {\n return i18n.get(transformedErrors.encryptedCardNumber.errorMessage);\n }\n\n return null;\n };\n\n return (\n <div className=\"adyen-checkout__giftcard\">\n {showUnknownError && <Alert icon={'cross'}>{i18n.get('error.message.unknown')}</Alert>}\n\n <SecuredFieldsProvider\n {...this.props}\n clientKey={this.props.clientKey}\n loadingContext={this.props.loadingContext}\n ref={ref => {\n this.sfp = ref;\n }}\n onChange={this.onChange}\n onFocus={this.handleFocus}\n onSubmitAnalytics={props.onSubmitAnalytics}\n type={GIFT_CARD}\n componentType={props.type}\n render={({ setRootNode, setFocusOn }, sfpState) =>\n this.props.fieldsLayoutComponent({\n i18n: i18n,\n pinRequired: this.props.pinRequired,\n focusedElement: focusedElement,\n getCardErrorMessage: getCardErrorMessage,\n setRootNode: setRootNode,\n setFocusOn: setFocusOn,\n sfpState: sfpState\n })\n }\n />\n\n {this.props.payButton({\n status: this.state.status,\n onClick: this.props.makeBalanceCheck,\n label: i18n.get('applyGiftcard'),\n showReview: false\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["INLINE_ERROR_TRANSLATION_KEYS","Giftcard","Component","generateBalanceCheckErrors","errorType","balanceCheckErrors","isValid","errorMessage","error","render","props","focusedElement","balance","transactionLimit","isValidating","transformedErrors","showUnknownError","i18n","useCoreContext","amount","useAmount","useSRPanelForGiftcardErrors","errors","setIsValidating","this","sfp","transactionAmount","value","hasEnoughBalance","h","GiftcardResult","makePayment","status","state","makeBalanceCheck","payButton","getCardErrorMessage","sfpState","encryptedCardNumber","get","div","className","Alert","icon","SecuredFieldsProvider","clientKey","loadingContext","ref","onChange","onFocus","handleFocus","onSubmitAnalytics","type","GIFT_CARD","componentType","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","onClick","label","showReview","super","args","_define_property","data","mapErrorsToValidationObjects","mapErrorsToValidationRuleResult","updateTransformedErrors","mergedErrors","_object_spread","setState","isSfpValid","e","currentFocusObject","focus","onBlur","setBalance","setBalanceCheckErrors","inlineError","showValidation","_this_sfp","val","setStatus","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/Giftcard/types.ts"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { GiftcardFieldsProps } from './components/types';\nimport { UIElementProps } from '../internal/UIElement/types';\nimport { Order, PaymentAmount, PaymentData } from '../../types/global-types';\nimport type { BrandConfiguration } from '../internal/SecuredFields/lib/types';\nimport type { Placeholders } from './components/types';\n\nexport interface GiftCardBrandConfiguration extends BrandConfiguration {\n /**\n * Placeholders for this gift card brand. Keys not set here fall back to the top-level `placeholders`.\n */\n placeholders?: Placeholders;\n}\n\nexport type GiftCardBrandsConfiguration = Record<string, GiftCardBrandConfiguration>;\n\nexport interface GiftCardElementData {\n paymentMethod: {\n type: 'giftcard';\n brand: string;\n encryptedCardNumber: string;\n encryptedSecurityCode: string;\n };\n}\n\nexport type balanceCheckResponseType = {\n sessionData?: string;\n pspReference?: string;\n resultCode?: string;\n balance?: PaymentAmount;\n transactionLimit?: PaymentAmount;\n};\n\nexport type onBalanceCheckCallbackType = (\n resolve: (res: balanceCheckResponseType) => void,\n reject: (error: Error) => void,\n data: GiftCardElementData\n) => Promise<void>;\n\nexport type onOrderUpdatedCallbackType = (data: { order: Order }) => void;\n\nexport type onRequiringConfirmationCallbackType = (resolve: () => void, reject: (error: Error) => void) => Promise<void>;\n\nexport type onOrderRequestCallbackType = (resolve: (order: Order) => void, reject: (error: Error) => void, data: PaymentData) => Promise<void>;\n\n// TODO: Fix these types\nexport interface GiftCardConfiguration extends UIElementProps {\n pinRequired?: boolean;\n expiryDateRequired?: boolean;\n brandsConfiguration?: GiftCardBrandsConfiguration;\n /**\n * Placeholders for the gift card fields. Used for every brand, unless a brand sets its own in `brandsConfiguration`.\n */\n placeholders?: Placeholders;\n brand?: string;\n onOrderUpdated?: onOrderUpdatedCallbackType;\n onBalanceCheck?: onBalanceCheckCallbackType;\n onOrderRequest?: onOrderRequestCallbackType;\n\n onRequiringConfirmation?: onRequiringConfirmationCallbackType;\n\n /**\n * @internal\n */\n fieldsLayoutComponent?: FunctionComponent<GiftcardFieldsProps>;\n}\n\n/**\n * Unified error interface that matches useForm error structure for gift cards\n */\nexport interface GiftCardValidationError {\n isValid: boolean;\n errorMessage: string;\n errorI18n?: string;\n error?: string; // Original error code\n}\n\n/**\n * Errors synthesized client-side from a successful (2xx) balance check response.\n * These are rendered inline, next to the gift card number field.\n */\nexport const BALANCE_CHECK_ERRORS = ['no-balance', 'card-error', 'currency-error'] as const;\n\nexport type KnownBalanceCheckError = (typeof BALANCE_CHECK_ERRORS)[number];\n\n/**\n * `unknown-error` covers everything we cannot attribute to the card itself\n * (5xx, network, CORS, timeout, a merchant calling `reject()`) and is rendered\n * as a banner rather than an inline field error.\n */\nexport type GiftCardBalanceCheckErrorType = KnownBalanceCheckError | 'unknown-error';\n"],"names":["BALANCE_CHECK_ERRORS"],"mappings":"MAiFaA,EAAuB,CAAC,aAAc,aAAc"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import r from"../../core/Errors/AdyenCheckoutError.js";import{BALANCE_CHECK_ERRORS as e}from"./types.js";function o(r,e,o){return e in r?Object.defineProperty(r,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[e]=o,r}const n=(r,e,n)=>{var t;return function(r){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},t=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(n).filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable}))),t.forEach(function(e){o(r,e,n[e])})}return r}({},n,r?null==e||null===(t=e[r])||void 0===t?void 0:t.placeholders:void 0)},t=o=>{var n,t;return o instanceof Error&&("string"==typeof(t=o.message)&&e.includes(t))?o.message:o instanceof r&&"validation"===(null===(n=o.cause)||void 0===n?void 0:n.errorType)?"card-error":"unknown-error"};export{t as resolveBalanceCheckError,n as resolvePlaceholders};
|
|
2
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/components/Giftcard/utils.ts"],"sourcesContent":["import AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { BALANCE_CHECK_ERRORS } from './types';\nimport type { AdyenApiErrorResponse } from '../../core/Services/http';\nimport type { GiftCardBalanceCheckErrorType, GiftCardBrandsConfiguration, KnownBalanceCheckError } from './types';\nimport type { Placeholders } from './components/types';\n\nconst isKnownBalanceCheckError = (value: unknown): value is KnownBalanceCheckError =>\n typeof value === 'string' && (BALANCE_CHECK_ERRORS as readonly string[]).includes(value);\n\n/**\n * Merges the placeholders of a gift card brand over the top-level placeholders, key by key.\n * An empty string set on the brand is kept, so a brand can blank out a top-level placeholder.\n *\n * @param brand - the gift card brand being rendered\n * @param brandsConfiguration - the merchant's per-brand configuration\n * @param placeholders - the top-level placeholders, used for keys the brand does not define\n * @returns the placeholders to send to the secured fields\n */\nexport const resolvePlaceholders = (\n brand?: string,\n brandsConfiguration?: GiftCardBrandsConfiguration,\n placeholders?: Placeholders\n): Placeholders => ({\n ...placeholders,\n ...(brand ? brandsConfiguration?.[brand]?.placeholders : undefined)\n});\n\n/**\n * Classifies anything the balance check promise can reject with into a single error type the component knows how to render.\n *\n * @param error - the rejection value from the balance check\n * @returns the error type to display to the shopper\n */\nexport const resolveBalanceCheckError = (error: unknown): GiftCardBalanceCheckErrorType => {\n // Identifiers thrown by our own checks on a successful response\n if (error instanceof Error && isKnownBalanceCheckError(error.message)) return error.message;\n\n // The API rejected the card details, so treat it as a bad card number\n if (error instanceof AdyenCheckoutError && (error.cause as AdyenApiErrorResponse)?.errorType === 'validation') return 'card-error';\n\n // 5xx, network, CORS, timeout, or a merchant calling reject()\n return 'unknown-error';\n};\n"],"names":["resolvePlaceholders","brand","brandsConfiguration","placeholders","_object_spread","undefined","resolveBalanceCheckError","error","value","Error","message","BALANCE_CHECK_ERRORS","includes","AdyenCheckoutError","cause","_error_cause","errorType"],"mappings":"iOAMA,MAYaA,EAAsB,CAC/BC,EACAC,EACAC,KAGYD,IAAAA,EAFI,yUAAAE,CAAA,GACbD,EACCF,EAAQC,SAA4B,QAA5BA,EAAAA,EAAsBD,UAAtBC,IAAAA,SAAAA,EAA8BC,kBAAeE,IAShDC,EAA4BC,IAKOA,IAAAA,EAhCdC,EA6B9B,OAAID,aAAiBE,QA5BJ,iBADaD,EA6ByBD,EAAMG,UA5B/BC,EAA2CC,SAASJ,IA4BJD,EAAMG,QAGhFH,aAAiBM,GAA4E,gBAA1C,QAAXN,EAAAA,EAAMO,aAANP,IAAAA,OAAAA,EAADQ,EAAwCC,WAAmC,aAG/G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\n\nimport type { AddressData, BrowserInfo, RawPaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\nimport { AnalyticsInfoEvent, InfoEventType, UiTarget } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { mapGooglePayBrands } from './utils/map-adyen-brands-to-googlepay-brands';\n\nconst DEFAULT_ALLOWED_CARD_NETWORKS: google.payments.api.CardNetwork[] = ['AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA'];\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static readonly type = TxVariants.googlepay;\n public static readonly txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static readonly defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(\n this.props.environment,\n this.analytics,\n {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n },\n this.props.nonce\n );\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @param paymentMethodId - Unique internal payment method ID\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string, paymentMethodId?: string): RawPaymentMethod {\n if (paymentMethodId) return this.core.paymentMethodsResponse.findById(paymentMethodId);\n\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props: GooglePayConfiguration): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n const allowedCardNetworks = this.createAllowedCardNetworksValues({\n allowedCardNetworks: props.allowedCardNetworks,\n brands: props.brands\n });\n\n return {\n ...props,\n allowedCardNetworks,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n /**\n * Generate the 'allowedCardNetworks' value used by Google Pay\n *\n * If the 'allowedCardNetworks' is defined in the Component configuration, it will be used. Otherwise we fallback\n * to use the 'brands' returned by the backoffice. It can be that 'brands' is not returned, which in this case we\n * set default values\n *\n * @param {object} brandsConfig\n * @param brandsConfig.allowedCardNetworks - Brands set in the component config\n * @param brandsConfig.brands - Brands returned by backend\n * @private\n */\n private createAllowedCardNetworksValues({\n allowedCardNetworks,\n brands\n }: {\n allowedCardNetworks?: google.payments.api.CardNetwork[];\n brands?: string[];\n }): google.payments.api.CardNetwork[] {\n if (allowedCardNetworks?.length > 0) return allowedCardNetworks;\n if (brands?.length > 0) return mapGooglePayBrands(brands);\n\n return DEFAULT_ALLOWED_CARD_NETWORKS;\n }\n\n protected override beforeRender(configSetByMerchant?: GooglePayConfiguration) {\n // We don't send 'rendered' events when rendering actions\n if (configSetByMerchant?.originalAction) {\n return;\n }\n\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 /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.selected,\n target: UiTarget.instantPaymentButton\n });\n\n this.submitAnalytics(event);\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n public get isValid(): boolean {\n return true;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["DEFAULT_ALLOWED_CARD_NETWORKS","GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","paymentMethodId","this","core","paymentMethodsResponse","findById","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","allowedCardNetworks","createAllowedCardNetworksValues","brands","_object_spread_props","_object_spread","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","length","mapGooglePayBrands","beforeRender","configSetByMerchant","originalAction","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","expressPage","analytics","sendAnalytics","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","_this_props_icon","resources","getImage","componentToRender","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","super","_define_property","isInstantPayment","selected","target","UiTarget","instantPaymentButton","submitAnalytics","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","merchantId","GooglePayService","environment","nonce","googlepay","txVariants","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\n\nimport type { AddressData, BrowserInfo, RawPaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\nimport { AnalyticsInfoEvent, InfoEventType, UiTarget } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { mapGooglePayBrands } from './utils/map-adyen-brands-to-googlepay-brands';\n\nconst DEFAULT_ALLOWED_CARD_NETWORKS: google.payments.api.CardNetwork[] = ['AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA'];\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static readonly type = TxVariants.googlepay;\n public static readonly txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static readonly defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(\n this.props.environment,\n this.analytics,\n {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n },\n this.props.nonce\n );\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @param paymentMethodId - Unique internal payment method ID\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string, paymentMethodId?: string): RawPaymentMethod {\n if (paymentMethodId) return this.core.paymentMethodsResponse.findById(paymentMethodId);\n\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props: GooglePayConfiguration): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n const allowedCardNetworks = this.createAllowedCardNetworksValues({\n allowedCardNetworks: props.allowedCardNetworks,\n brands: props.brands\n });\n\n return {\n ...props,\n allowedCardNetworks,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n /**\n * Generate the 'allowedCardNetworks' value used by Google Pay\n *\n * If the 'allowedCardNetworks' is defined in the Component configuration, it will be used. Otherwise we fallback\n * to use the 'brands' returned by the backoffice. It can be that 'brands' is not returned, which in this case we\n * set default values\n *\n * @param {object} brandsConfig\n * @param brandsConfig.allowedCardNetworks - Brands set in the component config\n * @param brandsConfig.brands - Brands returned by backend\n * @private\n */\n private createAllowedCardNetworksValues({\n allowedCardNetworks,\n brands\n }: {\n allowedCardNetworks?: google.payments.api.CardNetwork[];\n brands?: string[];\n }): google.payments.api.CardNetwork[] {\n if (allowedCardNetworks?.length > 0) return allowedCardNetworks;\n if (brands?.length > 0) return mapGooglePayBrands(brands);\n\n return DEFAULT_ALLOWED_CARD_NETWORKS;\n }\n\n protected override beforeRender(configSetByMerchant?: GooglePayConfiguration) {\n // We don't send 'rendered' events when rendering actions\n if (configSetByMerchant?.originalAction) {\n return;\n }\n\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 /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.selected,\n target: UiTarget.instantPaymentButton\n });\n\n this.submitAnalytics(event);\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n public get isValid(): boolean {\n return true;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo | undefined {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["DEFAULT_ALLOWED_CARD_NETWORKS","GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","paymentMethodId","this","core","paymentMethodsResponse","findById","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","allowedCardNetworks","createAllowedCardNetworksValues","brands","_object_spread_props","_object_spread","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","length","mapGooglePayBrands","beforeRender","configSetByMerchant","originalAction","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","expressPage","analytics","sendAnalytics","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","_this_props_icon","resources","getImage","componentToRender","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","super","_define_property","isInstantPayment","selected","target","UiTarget","instantPaymentButton","submitAnalytics","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","merchantId","GooglePayService","environment","nonce","googlepay","txVariants","defaultProps"],"mappings":"8jDAiBA,MAAMA,EAAmE,CAAC,OAAQ,WAAY,MAAO,aAAc,QAEnH,MAAMC,UAAkBC,EA+CpB,0CAAAC,CAA8DC,EAAeC,GACzE,OAAIA,EAAwBC,KAAKC,KAAKC,uBAAuBC,SAASJ,GAGlEC,KAAKC,KAAKC,uBAAuBE,KAAKN,GAAQE,KAAKK,YAAY,OAAYL,KAAKC,KAAKC,uBAAuBE,KAAKE,EAAWC,cAEpI,CAEmBC,WAAAA,CAAYC,OACJA,EACiBA,EAAsBA,EAD9D,MAAMC,EAAqC,QAApBD,EAAAA,EAAMC,0BAAND,EAAAA,EAAyBA,EAAME,SAAW,OAAS,SACpEC,EAAeC,EAAqC,QAAlBJ,EAAAA,EAAMG,wBAANH,EAAAA,EAAgC,QAAVA,EAAAA,EAAMK,gBAANL,OAAAA,EAAAA,EAAYM,QAEpEC,EAAwD,IAAIP,EAAMO,gBAAiB,yBAEnFC,EAAsBjB,KAAKkB,gCAAgC,CAC7DD,oBAAqBR,EAAMQ,oBAC3BE,OAAQV,EAAMU,SAGlB,OAAOC,EAAAC,EAAA,CAAA,EACAZ,GAAAA,CACHQ,sBACAK,cAAeb,EAAMa,cACrBZ,iBACAE,eACAI,mBAER,CAKA,UAAAO,GACI,MAAMC,qBAAEA,EAAoBC,eAAEA,EAAcC,eAAEA,EAAcC,gBAAEA,GAAoB3B,KAAK4B,OACjFC,UAAEA,GAAc7B,KAAKS,MAE3B,OAAOY,EAAA,CACHS,cAAeT,EAAA,CACXvB,KAAME,KAAKF,KACX0B,uBACAC,kBACII,GAAa,CAAEE,QAAS,YAEhCC,YAAahC,KAAKgC,YAClBC,SAAUC,QAAUA,OAAOC,SAASF,QAChCP,GAAkB,CAAEA,kBACpBC,GAAmB,CAAEA,mBAEjC,CAcA,+BAAAT,EAAwCD,oBACpCA,EAAmBE,OACnBA,IAKA,OAAIF,aAAAA,EAAAA,EAAqBmB,QAAS,EAAUnB,GACxCE,aAAAA,EAAAA,EAAQiB,QAAS,EAAUC,EAAmBlB,GAE3CzB,CACX,CAEmB4C,YAAAA,CAAaC,GAE5B,GAAIA,aAAAA,EAAAA,EAAqBC,eACrB,OAGJ,MAAMC,EAAQ,IAAIC,EAAmBrB,EAAA,CACjCvB,KAAM6C,EAAcC,SACpBC,UAAW7C,KAAKF,KAChBgD,WAAY1B,EAAAC,EAAA,CAAA,EAAKkB,GAAAA,CAAqBQ,cAAe/C,KAAKS,MAAMsC,kBAC5DR,aAAAA,EAAAA,EAAqBV,YAAa,CAAEA,UAAWU,EAAoBV,YACnEU,aAAAA,EAAAA,EAAqBS,cAAe,CAAEA,YAAaT,EAAoBS,eAG/EhD,KAAKiD,UAAUC,cAAcT,EACjC,CAKA,yBAAAU,GACInD,KAAKoD,UAAUC,gBAAgBrD,KAAKS,MAAOT,KAAKC,KAAKqD,QAAQC,aAAaC,MAAOC,IAE7EzD,KAAK0D,YAAY,IAAIC,EAAwC,aAArBF,EAAMG,WAA4B,SAAW,QAASH,EAAMI,WAAY,CAAEC,MAAOL,MAEjI,CAuFA,yBAAcM,GACV,OAAO,IAAIC,QAAc,CAACC,EAASC,KAC1BlE,KAAKS,MAAM0D,cACZF,IAGJ,MAAMG,gBAAEA,EAAe1C,eAAEA,EAAcC,gBAAEA,GAAoB3B,KAAK4B,MAElE5B,KAAKS,MAAM0D,aACP9C,EAAA,CACI+C,mBACI1C,GAAkB,CAAEA,kBACpBC,GAAmB,CAAEA,oBAE7B,CAAEsC,UAASC,aAEhBV,MAAOC,IAEN,MAAMY,EAAO,CAAEZ,MAAO,CAAEa,eAAgBb,IACxC,OAAOO,QAAQE,OAAOG,IAE9B,CAEA,WAAWE,GACP,OAAO,CACX,CAKA,iBAAsBC,GAClB,OAAOxE,KAAKyE,eACPC,KAAKC,IACF,IAAKA,EAASC,OACV,MAAM,IAAIjB,EAAmB,QAAS,8BAG1C,IAAsC,IAAlCgB,EAASE,qBACT,MAAM,IAAIlB,EAAmB,QAAS,uCAG1C,OAAOK,QAAQC,YAElBT,MAAMC,GACIO,QAAQE,OAAOT,GAElC,CAgBA,eAAIzB,GACA,OAAO8C,GACX,CAEA,QAAIC,GACO,IAAAC,EAAP,OAAsB,QAAfA,EAAAhF,KAAKS,MAAMsE,YAAX,IAAAC,EAAAA,EAAmBhF,KAAKiF,UAAUC,UAAflF,CAA0B,YACxD,CAEmBmF,iBAAAA,GACf,OAAInF,KAAKS,MAAMsC,cAEPqC,EAACC,EAAAA,CACGC,YAAatF,KAAKS,MAAM6E,YACxBC,WAAYvF,KAAKS,MAAM8E,WACvB7E,eAAgBV,KAAKS,MAAMC,eAC3BE,aAAcZ,KAAKS,MAAMG,aACzB4E,eAAgBxF,KAAKS,MAAM+E,eAC3BC,aAAczF,KAAKS,MAAMgF,aACzBC,eAAgB1F,KAAKoD,UAAUsC,eAC/BC,QAAS3F,KAAK4F,SAKnB,IACX,CA1TA,WAAAvF,CAAYwF,EAAiBpF,GACzBqF,MAAMD,EAAUpF,GAHpBsF,EAAA/F,KAAmBoD,iBAAnB,GAgJA2C,OAAgBH,SAAS,KACrB,GAAI5F,KAAKS,MAAMuF,iBAAkB,CAC7B,MAAMvD,EAAQ,IAAIC,EAAmB,CACjCG,UAAW7C,KAAKF,KAChBA,KAAM6C,EAAcsD,SACpBC,OAAQC,EAASC,uBAGrBpG,KAAKqG,gBAAgB5D,EACzB,CAEA,IAAIuB,QAAc,CAACC,EAASC,IAAWlE,KAAKS,MAAMkF,QAAQ1B,EAASC,IAASQ,KAAK1E,KAAKmD,2BAA2BK,MAAM,UAU3HuC,EAAA/F,KAAQsG,sBAAsBC,MAAOC,IACjC,MAAM9E,EAA8B+E,EAA2CD,EAAYE,kBAAkBC,KAAKjF,gBAC5GC,EAA+B8E,EAA2CD,EAAYI,iBAAiB,GAU7G,OARA5G,KAAK6G,SAASxF,EAAA,CACV+C,gBAAiBoC,EACjB/E,eAAgB+E,EAAYE,kBAAkBI,iBAAiBC,MAC/DvF,qBAAsBgF,EAAYE,kBAAkBC,KAAKK,aACrDtF,GAAkB,CAAEA,kBACpBC,GAAmB,CAAEA,qBAGtB,IAAIqC,QAAwDC,IAC/DjE,KAAK+D,sBACAW,KAAK1E,KAAKiH,kBACVvC,KAAKwC,GACLxC,KAAKyC,GACLzC,KAAM0C,IACHnD,EAAQ,CAAEoD,iBAAkB,YACrBD,IAEV1C,KAAK0C,IACFpH,KAAKsH,eAAeF,KAEvB5D,MAAO4D,IAGmBA,IAAAA,EAFvBpH,KAAKuH,iBAAiB,SAEtB,MAAMjD,EAAiB8C,SAAsB,QAAtBA,EAAAA,EAAiB3D,aAAjB2D,IAAAA,OAAAA,EAAAA,EAAwB9C,eACzCkD,EAAkBxH,KAAKS,MAAMK,KAAK2G,IAAI,0BAEtChE,EACwB,iBAAnBa,EACD,CACIoD,OAAQ,wBACRC,OAAQ,cACRC,QAAStD,GAA8BkD,GAE3C,CACIE,QAAQpD,aAAAA,EAAAA,EAAgBoD,SAAU,wBAClCC,QAAQrD,aAAAA,EAAAA,EAAgBqD,SAAU,cAClCC,SAAStD,aAAAA,EAAAA,EAAgBsD,UAAWJ,GAGlDvD,EAAQ,CACJoD,iBAAkB,QAClB5D,UAGJ,MAAMoE,EAAoBzG,EAAAC,EAAA,CAAA,EACnB+F,GAAAA,CACH3D,MAAO,CACHa,eAAgBb,KAIxBzD,KAAK8H,mBAAmBD,SA4DxC9B,OAAOtB,eAAe,IACXzE,KAAKoD,UAAUqB,aAAazE,KAAKS,QAM5CsF,OAAOgC,WAAW,IACP/H,KAAKoD,UAAU4E,oBAAoBhI,KAAKS,MAAOT,KAAKC,KAAKqD,QAAQC,cA5RxEvD,KAAK+D,oBAAsB/D,KAAK+D,oBAAoBkE,KAAKjI,MACzDA,KAAKmD,0BAA4BnD,KAAKmD,0BAA0B8E,KAAKjI,MAErE,MAAM6B,UAAEA,EAASqG,qBAAEA,GAAyBlI,KAAKS,MAEjD,IAAkB,IAAdoB,IAAuBqG,aAAAA,EAAAA,EAAsBC,sBAC7C,MAAM,IAAIxE,EACN,uBACA,uGAIR,IAAK3D,KAAKS,MAAMa,cAAc8G,WAC1B,MAAM,IAAIzE,EACN,uBACA,wGAIR3D,KAAKoD,UAAY,IAAIiF,EACjBrI,KAAKS,MAAM6H,YACXtI,KAAKiD,UACL7B,EAAAC,EAAA,GACQQ,IAAaqG,aAAAA,EAAAA,EAAsBC,uBAAwB,CAAEA,qBAAsBD,EAAqBC,uBAAqB,CACjI7B,oBAAqBtG,KAAKsG,sBAE9BtG,KAAKS,MAAM8H,MAEnB,EApCAxC,EADEpG,EACqBG,OAAOQ,EAAWkI,WACzCzC,EAFEpG,EAEqB8I,aAAa,CAACnI,EAAWkI,UAAWlI,EAAWC,gBACtEwF,EAHEpG,EAGqB+I,eAAeA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../external/preact/dist/preact.js";import{TxVariants as t}from"../tx-variants.js";import{UIElement as n}from"../internal/UIElement/UIElement.js";import r from"../internal/RedirectButton/RedirectButton.js";import
|
|
1
|
+
import{createElement as e}from"../../external/preact/dist/preact.js";import{TxVariants as t}from"../tx-variants.js";import{UIElement as n}from"../internal/UIElement/UIElement.js";import r from"../internal/RedirectButton/RedirectButton.js";import o from"../internal/PayButton/PayButton.js";import i,{ERROR as s}from"../../core/Errors/AdyenCheckoutError.js";import{PasskeyService as a}from"./services/PasskeyService.js";import{authorizeEnrollment as l}from"./services/authorizeEnrollment.js";import{authorizePayment as p}from"./services/authorizePayment.js";import d from"./components/StoredPayment/StoredPayment.js";import c from"./components/Enrollment/Enrollment.js";function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){h(e,t,n[t])})}return e}function m(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function u(e,t){if(null==e)return{};var n,r,o,i={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(Object(e)),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r]);return i}if(i=function(e,t){if(null==e)return{};var n,r,o={},i=Object.getOwnPropertyNames(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r]);return i}class v extends n{get isValid(){var e;return!(this.props._isAdyenHosted&&!this.props.storedPaymentMethodId)||!!(null===(e=this.state)||void 0===e?void 0:e.isValid)}get additionalInfo(){var e,t;return this.props.storedPaymentMethodId?this.props.i18n.get("paybybankpix.storedPayment.additionalLabel",{values:{receiver:null===(t=this.props)||void 0===t||null===(e=t.payByBankPixDetails)||void 0===e?void 0:e.receiver}}):""}get icon(){var e,t;return this.props.storedPaymentMethodId?this.resources.getImage({parentFolder:`${v.type}/`})(null===(t=this.props)||void 0===t||null===(e=t.payByBankPixDetails)||void 0===e?void 0:e.ispb):super.icon}async isAvailable(){const e=await this.passkeyService.getWebAuthnUnsupportedReason();if(e)return Promise.reject(new i(s,e));if(!this.props._isAdyenHosted)return Promise.resolve();try{if(await this.passkeyService.initialize(),this.props.storedPaymentMethodId){return await this.passkeyService.canUseStoredCredential()?Promise.resolve():Promise.reject(new i("ERROR","The stored payment method is not available on this device"))}return Promise.resolve()}catch(e){return Promise.reject(e instanceof Error?null==e?void 0:e.message:"Unknown error")}}handleAction(e,t={}){const n=this.core.createFromAction(e,m(y({},this.elementRef.props,t),{onAdditionalDetails:this.handleAdditionalDetails}));return n?(this.unmount(),n.isAvailable().then(()=>{n.mount(this.mountedNode)}),n):null}formatData(){if(!this.props._isAdyenHosted)return{paymentMethod:{type:t.paybybank_pix}};const e=null==this.props.storedPaymentMethodId;return y({paymentMethod:y({type:t.paybybank_pix},this.state.data)},e?{storePaymentMethod:!0}:{})}componentToRender(){var t,n,o;return this.props._isAdyenHosted?null!=this.props.storedPaymentMethodId?e(d,{txVariant:v.type,type:this.props.type,clientKey:this.props.clientKey,enrollmentId:null===(t=this.props.paymentMethodData)||void 0===t?void 0:t.enrollmentId,initiationId:null===(n=this.props.paymentMethodData)||void 0===n?void 0:n.initiationId,setComponentRef:this.setComponentRef,onPay:this.payWithStoredPayment,onAuthorize:this.authorizePayment}):e(c,{onError:this.handleError,txVariant:v.type,type:this.props.type,clientKey:this.props.clientKey,enrollmentId:null===(o=this.props.paymentMethodData)||void 0===o?void 0:o.enrollmentId,countdownTime:this.props.countdownTime,onEnroll:this.authorizeEnrollment,issuers:this.props.issuers,payButton:this.enrollmentPayButton,onChange:this.onIssuerSelected,onSubmitAnalytics:this.submitAnalytics,setComponentRef:this.setComponentRef}):e(r,{name:this.displayName,label:this.props.i18n.get("paybybankpix.redirectBtn.label"),payButton:this.payButton,onSubmit:this.submit,setComponentRef:this.setComponentRef})}constructor(t,n){var r,d;super(t,n),h(this,"passkeyService",void 0),h(this,"onIssuerSelected",async e=>{try{const{data:t={}}=e;if(!t.issuer)return;const n=await this.passkeyService.captureRiskSignalsEnrollment(),{deviceId:r}=n,o=u(n,["deviceId"]);this.setState(m(y({},e),{data:m(y({},t),{riskSignals:o,deviceId:r})}))}catch(e){const t=e instanceof Error?e.message:"Unknown error in the onIssuerSelected";this.handleError(e instanceof i?e:new i(s,t))}}),h(this,"authorizeEnrollment",async e=>{try{var t;const n=await this.passkeyService.createCredentialForEnrollment(e),r={enrollmentId:null===(t=this.props.paymentMethodData)||void 0===t?void 0:t.enrollmentId,fidoAssertion:n},{redirectResult:o}=await l({enrollment:r,clientKey:this.props.clientKey,loadingContext:this.props.loadingContext});this.handleAdditionalDetails({data:{details:{redirectResult:o}}})}catch(e){const t=e instanceof Error?e.message:"Unknown error in the authorizeEnrollment";this.handleError(e instanceof i?e:new i(s,t))}}),h(this,"payWithStoredPayment",async()=>{try{const e=await this.passkeyService.captureRiskSignalsAuthentication(),{deviceId:t}=e,n=u(e,["deviceId"]);this.state=y({},this.state,{data:{storedPaymentMethodId:this.props.storedPaymentMethodId,riskSignals:n,deviceId:t}}),this.executePaymentsCall()}catch(e){const t=e instanceof Error?e.message:"Unknown error in the payWithStoredPayment";this.handleError(e instanceof i?e:new i(s,t))}}),h(this,"authorizePayment",async e=>{try{var t,n;const r=await this.passkeyService.authenticateWithCredential(e),o={enrollmentId:null===(t=this.props.paymentMethodData)||void 0===t?void 0:t.enrollmentId,initiationId:null===(n=this.props.paymentMethodData)||void 0===n?void 0:n.initiationId,fidoAssertion:r},{redirectResult:i}=await p({payment:o,clientKey:this.props.clientKey,loadingContext:this.props.loadingContext});this.handleAdditionalDetails({data:{details:{redirectResult:i}}})}catch(e){const t=e instanceof Error?e.message:"Unknown error in the authorizePayment";this.handleError(e instanceof i?e:new i(s,t))}}),h(this,"enrollmentPayButton",t=>e(o,m(y({},t),{showPayButton:!0,disclaimerMessage:this.props.disclaimerMessage,onClick:this.submit})));const c=this.props.storedPaymentMethodId?null===(d=this.props)||void 0===d||null===(r=d.payByBankPixDetails)||void 0===r?void 0:r.deviceId:this.props.deviceId;this.passkeyService=new a({environment:this.props.environment,deviceId:c},this.analytics),this.props._isAdyenHosted&&this.passkeyService.initialize()}}h(v,"type",t.paybybank_pix),h(v,"TIMEOUT_MINUTES",1),h(v,"defaultProps",{showPayButton:!0,_isAdyenHosted:(()=>{try{return new URL(window.location.href).hostname.endsWith(".adyen.com")}catch(e){return!1}})(),countdownTime:v.TIMEOUT_MINUTES});export{v as default};
|
|
2
2
|
//# sourceMappingURL=PayByBankPix.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayByBankPix.js","sources":["../../../../src/components/PayByBankPix/PayByBankPix.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { PayByBankPixData, PayByBankPixConfiguration } from './types';\nimport { TxVariants } from '../tx-variants';\nimport UIElement from '../internal/UIElement';\nimport RedirectButton from '../internal/RedirectButton';\nimport PayButton, { PayButtonProps } from '../internal/PayButton/PayButton';\nimport AdyenCheckoutError, { ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { PasskeyService } from './services/PasskeyService';\nimport { authorizeEnrollment } from './services/authorizeEnrollment';\nimport { authorizePayment } from './services/authorizePayment';\nimport StoredPayment from './components/StoredPayment';\nimport Enrollment from './components/Enrollment';\nimport { PaymentAction } from '../../types/global-types';\nimport type { ICore } from '../../core/types';\n\nconst isAdyenHosted = () => {\n try {\n const currentUrl = new URL(window.location.href);\n return currentUrl.hostname.endsWith('.adyen.com');\n } catch (e) {\n // SSR, or it fails to parse the full url\n return false;\n }\n};\nclass PayByBankPixElement extends UIElement<PayByBankPixConfiguration> {\n public static readonly type = TxVariants.paybybank_pix;\n private static readonly TIMEOUT_MINUTES = 1;\n private readonly passkeyService: PasskeyService;\n\n public static readonly defaultProps: PayByBankPixConfiguration = {\n showPayButton: true,\n _isAdyenHosted: isAdyenHosted(),\n countdownTime: PayByBankPixElement.TIMEOUT_MINUTES\n };\n\n constructor(checkout: ICore, props?: PayByBankPixConfiguration) {\n super(checkout, props);\n const deviceId = this.props.storedPaymentMethodId ? this.props?.payByBankPixDetails?.deviceId : this.props.deviceId;\n\n this.passkeyService = new PasskeyService(\n {\n environment: this.props.environment,\n deviceId\n },\n this.analytics\n );\n\n if (this.props._isAdyenHosted) {\n void this.passkeyService.initialize();\n }\n }\n\n get isValid(): boolean {\n // Always true for non-hosted page or stored payment\n if (!this.props._isAdyenHosted || this.props.storedPaymentMethodId) {\n return true;\n }\n return !!this.state?.isValid;\n }\n\n /**\n * Display in the drop-in\n */\n get additionalInfo() {\n return this.props.storedPaymentMethodId\n ? this.props.i18n.get('paybybankpix.storedPayment.additionalLabel', { values: { receiver: this.props?.payByBankPixDetails?.receiver } })\n : '';\n }\n\n /**\n * Display in the drop-in\n */\n public override get icon() {\n return this.props.storedPaymentMethodId\n ? this.resources.getImage({ parentFolder: `${PayByBankPixElement.type}/` })(this.props?.payByBankPixDetails?.ispb)\n : super.icon;\n }\n\n /**\n * Method used to let the merchant know if the shopper's device supports WebAuthn APIs: https://featuredetect.passkeys.dev/\n */\n public override async isAvailable(): Promise<void> {\n const unsupportedReason = await this.passkeyService.getWebAuthnUnsupportedReason();\n if (unsupportedReason) {\n return Promise.reject(new AdyenCheckoutError(ERROR, unsupportedReason));\n }\n if (!this.props._isAdyenHosted) {\n return Promise.resolve();\n }\n\n // Load passkey sdk on the hosted page\n try {\n await this.passkeyService.initialize();\n\n if (this.props.storedPaymentMethodId) {\n // If the provided deviceId from the server does not match the localstorage deviceId, do not render the stored payment component.\n const shouldShowStoredPaymentMethod = await this.passkeyService.canUseStoredCredential();\n return shouldShowStoredPaymentMethod\n ? Promise.resolve()\n : Promise.reject(new AdyenCheckoutError('ERROR', 'The stored payment method is not available on this device'));\n }\n\n return Promise.resolve();\n } catch (error) {\n return Promise.reject(error instanceof Error ? error?.message : 'Unknown error');\n }\n }\n\n /**\n * Make sure the await action UIElement is available before mounting\n */\n public override handleAction(action: PaymentAction, props: {} = {}): UIElement | null {\n const paymentAction = this.core.createFromAction(action, {\n ...this.elementRef.props,\n ...props,\n onAdditionalDetails: this.handleAdditionalDetails\n });\n if (paymentAction) {\n this.unmount();\n void paymentAction.isAvailable().then(() => {\n paymentAction.mount(this._node);\n });\n return paymentAction;\n }\n\n return null;\n }\n\n formatData(): PayByBankPixData {\n if (!this.props._isAdyenHosted) {\n return {\n paymentMethod: { type: TxVariants.paybybank_pix }\n };\n }\n\n const isEnrollment = this.props.storedPaymentMethodId == null;\n return {\n paymentMethod: { type: TxVariants.paybybank_pix, ...this.state.data },\n // Always store the payment method for the enrollment flow.\n ...(isEnrollment ? { storePaymentMethod: true } : {})\n };\n }\n\n /**\n * There are 3 endpoints (stages) we need to call for the enrollment flow.\n * The first one is the regular payments call on issuer selection - we indicate to store the payment token for the selected issuer.\n * The second one is to poll the enrollment eligibility - we poll the server to get the enrollment challenge in the `getEnrollmentStatus` function.\n * The third one is in the `authorizeEnrollment` function - we create passkeys and authorize the enrollment with shopper's passkey.\n */\n private readonly onIssuerSelected = async payload => {\n try {\n const { data = {} } = payload;\n if (!data.issuer) {\n return;\n }\n\n const { deviceId, ...riskSignals } = await this.passkeyService.captureRiskSignalsEnrollment();\n this.setState({ ...payload, data: { ...data, riskSignals, deviceId } });\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the onIssuerSelected';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n private readonly authorizeEnrollment = async (registrationOptions: string): Promise<void> => {\n try {\n const fidoAssertion = await this.passkeyService.createCredentialForEnrollment(registrationOptions); // Create passkey and trigger biometrics\n const enrollment = { enrollmentId: this.props.paymentMethodData?.enrollmentId, fidoAssertion };\n const { redirectResult } = await authorizeEnrollment({\n enrollment,\n clientKey: this.props.clientKey,\n loadingContext: this.props.loadingContext\n });\n // Make paymentDetails call to finalize the enrollment.\n this.handleAdditionalDetails({ data: { details: { redirectResult } } });\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the authorizeEnrollment';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n /**\n * There are 3 endpoints (stages) we need to call for the payment flow.\n * The first one `payWithStoredPayment` is the regular payments call - we attempt to pay with the stored payment token.\n * The second one is to poll the authorization options - we poll the server to get the challenge in the `getAuthorizationStatus` function.\n * The third one is in the `authorizePayment` function - we authorize the payment with shopper's passkey.\n */\n private readonly payWithStoredPayment = async () => {\n try {\n const { deviceId, ...riskSignals } = await this.passkeyService.captureRiskSignalsAuthentication();\n this.state = { ...this.state, ...{ data: { storedPaymentMethodId: this.props.storedPaymentMethodId, riskSignals, deviceId } } };\n this.executePaymentsCall();\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the payWithStoredPayment';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n private readonly authorizePayment = async (authenticationOptions: string): Promise<void> => {\n try {\n const fidoAssertion = await this.passkeyService.authenticateWithCredential(authenticationOptions);\n const payment = {\n enrollmentId: this.props.paymentMethodData?.enrollmentId,\n initiationId: this.props.paymentMethodData?.initiationId,\n fidoAssertion\n };\n const { redirectResult } = await authorizePayment({\n payment,\n clientKey: this.props.clientKey,\n loadingContext: this.props.loadingContext\n });\n this.handleAdditionalDetails({ data: { details: { redirectResult } } });\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the authorizePayment';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n /**\n * The enrollment flow is only rendered on the Adyen hosted page and it is always shown, regardless of the showPayButton configuration.\n */\n private readonly enrollmentPayButton = (props: PayButtonProps): h.JSX.Element => {\n return <PayButton {...props} showPayButton={true} disclaimerMessage={this.props.disclaimerMessage} onClick={this.submit} />;\n };\n\n protected override componentToRender(): h.JSX.Element {\n // Always render the redirect button on the merchant's page\n if (!this.props._isAdyenHosted) {\n return (\n <RedirectButton\n name={this.displayName}\n label={this.props.i18n.get('paybybankpix.redirectBtn.label')}\n payButton={this.payButton}\n onSubmit={this.submit}\n setComponentRef={this.setComponentRef}\n />\n );\n }\n\n return this.props.storedPaymentMethodId != null ? (\n <StoredPayment\n txVariant={PayByBankPixElement.type}\n type={this.props.type}\n clientKey={this.props.clientKey}\n enrollmentId={this.props.paymentMethodData?.enrollmentId}\n initiationId={this.props.paymentMethodData?.initiationId}\n setComponentRef={this.setComponentRef}\n onPay={this.payWithStoredPayment}\n onAuthorize={this.authorizePayment}\n />\n ) : (\n <Enrollment\n onError={this.handleError}\n txVariant={PayByBankPixElement.type}\n // Await\n type={this.props.type}\n clientKey={this.props.clientKey}\n enrollmentId={this.props.paymentMethodData?.enrollmentId}\n countdownTime={this.props.countdownTime}\n onEnroll={this.authorizeEnrollment}\n // Issuer List\n issuers={this.props.issuers}\n payButton={this.enrollmentPayButton}\n onChange={this.onIssuerSelected}\n onSubmitAnalytics={this.submitAnalytics}\n setComponentRef={this.setComponentRef}\n />\n );\n }\n}\n//\nexport default PayByBankPixElement;\n"],"names":["PayByBankPixElement","UIElement","isValid","_this_state","this","props","_isAdyenHosted","storedPaymentMethodId","state","additionalInfo","_this_props_payByBankPixDetails","_this_props","i18n","get","values","receiver","payByBankPixDetails","icon","resources","getImage","parentFolder","type","ispb","super","isAvailable","unsupportedReason","passkeyService","getWebAuthnUnsupportedReason","Promise","reject","AdyenCheckoutError","ERROR","resolve","initialize","canUseStoredCredential","error","Error","message","handleAction","action","paymentAction","core","createFromAction","_object_spread_props","_object_spread","elementRef","onAdditionalDetails","handleAdditionalDetails","unmount","then","mount","_node","formatData","paymentMethod","TxVariants","paybybank_pix","isEnrollment","data","storePaymentMethod","componentToRender","_this_props_paymentMethodData","_this_props_paymentMethodData1","_this_props_paymentMethodData2","h","StoredPayment","txVariant","clientKey","enrollmentId","paymentMethodData","initiationId","setComponentRef","onPay","payWithStoredPayment","onAuthorize","authorizePayment","Enrollment","onError","handleError","countdownTime","onEnroll","authorizeEnrollment","issuers","payButton","enrollmentPayButton","onChange","onIssuerSelected","onSubmitAnalytics","submitAnalytics","RedirectButton","name","displayName","label","onSubmit","submit","constructor","checkout","_define_property","async","payload","issuer","_ref","captureRiskSignalsEnrollment","deviceId","riskSignals","setState","errorMsg","registrationOptions","fidoAssertion","createCredentialForEnrollment","enrollment","redirectResult","loadingContext","details","captureRiskSignalsAuthentication","executePaymentsCall","authenticationOptions","authenticateWithCredential","payment","PayButton","showPayButton","disclaimerMessage","onClick","PasskeyService","environment","analytics","TIMEOUT_MINUTES","defaultProps","URL","window","location","href","hostname","endsWith","e","isAdyenHosted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PayByBankPix.js","sources":["../../../../src/components/PayByBankPix/PayByBankPix.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { PayByBankPixData, PayByBankPixConfiguration } from './types';\nimport { TxVariants } from '../tx-variants';\nimport UIElement from '../internal/UIElement';\nimport RedirectButton from '../internal/RedirectButton';\nimport PayButton, { PayButtonProps } from '../internal/PayButton/PayButton';\nimport AdyenCheckoutError, { ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { PasskeyService } from './services/PasskeyService';\nimport { authorizeEnrollment } from './services/authorizeEnrollment';\nimport { authorizePayment } from './services/authorizePayment';\nimport StoredPayment from './components/StoredPayment';\nimport Enrollment from './components/Enrollment';\nimport { PaymentAction } from '../../types/global-types';\nimport type { ICore } from '../../core/types';\n\nconst isAdyenHosted = () => {\n try {\n const currentUrl = new URL(window.location.href);\n return currentUrl.hostname.endsWith('.adyen.com');\n } catch (e) {\n // SSR, or it fails to parse the full url\n return false;\n }\n};\nclass PayByBankPixElement extends UIElement<PayByBankPixConfiguration> {\n public static readonly type = TxVariants.paybybank_pix;\n private static readonly TIMEOUT_MINUTES = 1;\n private readonly passkeyService: PasskeyService;\n\n public static readonly defaultProps: PayByBankPixConfiguration = {\n showPayButton: true,\n _isAdyenHosted: isAdyenHosted(),\n countdownTime: PayByBankPixElement.TIMEOUT_MINUTES\n };\n\n constructor(checkout: ICore, props?: PayByBankPixConfiguration) {\n super(checkout, props);\n const deviceId = this.props.storedPaymentMethodId ? this.props?.payByBankPixDetails?.deviceId : this.props.deviceId;\n\n this.passkeyService = new PasskeyService(\n {\n environment: this.props.environment,\n deviceId\n },\n this.analytics\n );\n\n if (this.props._isAdyenHosted) {\n void this.passkeyService.initialize();\n }\n }\n\n get isValid(): boolean {\n // Always true for non-hosted page or stored payment\n if (!this.props._isAdyenHosted || this.props.storedPaymentMethodId) {\n return true;\n }\n return !!this.state?.isValid;\n }\n\n /**\n * Display in the drop-in\n */\n get additionalInfo() {\n return this.props.storedPaymentMethodId\n ? this.props.i18n.get('paybybankpix.storedPayment.additionalLabel', { values: { receiver: this.props?.payByBankPixDetails?.receiver } })\n : '';\n }\n\n /**\n * Display in the drop-in\n */\n public override get icon() {\n return this.props.storedPaymentMethodId\n ? this.resources.getImage({ parentFolder: `${PayByBankPixElement.type}/` })(this.props?.payByBankPixDetails?.ispb)\n : super.icon;\n }\n\n /**\n * Method used to let the merchant know if the shopper's device supports WebAuthn APIs: https://featuredetect.passkeys.dev/\n */\n public override async isAvailable(): Promise<void> {\n const unsupportedReason = await this.passkeyService.getWebAuthnUnsupportedReason();\n if (unsupportedReason) {\n return Promise.reject(new AdyenCheckoutError(ERROR, unsupportedReason));\n }\n if (!this.props._isAdyenHosted) {\n return Promise.resolve();\n }\n\n // Load passkey sdk on the hosted page\n try {\n await this.passkeyService.initialize();\n\n if (this.props.storedPaymentMethodId) {\n // If the provided deviceId from the server does not match the localstorage deviceId, do not render the stored payment component.\n const shouldShowStoredPaymentMethod = await this.passkeyService.canUseStoredCredential();\n return shouldShowStoredPaymentMethod\n ? Promise.resolve()\n : Promise.reject(new AdyenCheckoutError('ERROR', 'The stored payment method is not available on this device'));\n }\n\n return Promise.resolve();\n } catch (error) {\n return Promise.reject(error instanceof Error ? error?.message : 'Unknown error');\n }\n }\n\n /**\n * Make sure the await action UIElement is available before mounting\n */\n public override handleAction(action: PaymentAction, props: {} = {}): UIElement | null {\n const paymentAction = this.core.createFromAction(action, {\n ...this.elementRef.props,\n ...props,\n onAdditionalDetails: this.handleAdditionalDetails\n });\n if (paymentAction) {\n this.unmount();\n void paymentAction.isAvailable().then(() => {\n paymentAction.mount(this.mountedNode);\n });\n return paymentAction;\n }\n\n return null;\n }\n\n formatData(): PayByBankPixData {\n if (!this.props._isAdyenHosted) {\n return {\n paymentMethod: { type: TxVariants.paybybank_pix }\n };\n }\n\n const isEnrollment = this.props.storedPaymentMethodId == null;\n return {\n paymentMethod: { type: TxVariants.paybybank_pix, ...this.state.data },\n // Always store the payment method for the enrollment flow.\n ...(isEnrollment ? { storePaymentMethod: true } : {})\n };\n }\n\n /**\n * There are 3 endpoints (stages) we need to call for the enrollment flow.\n * The first one is the regular payments call on issuer selection - we indicate to store the payment token for the selected issuer.\n * The second one is to poll the enrollment eligibility - we poll the server to get the enrollment challenge in the `getEnrollmentStatus` function.\n * The third one is in the `authorizeEnrollment` function - we create passkeys and authorize the enrollment with shopper's passkey.\n */\n private readonly onIssuerSelected = async payload => {\n try {\n const { data = {} } = payload;\n if (!data.issuer) {\n return;\n }\n\n const { deviceId, ...riskSignals } = await this.passkeyService.captureRiskSignalsEnrollment();\n this.setState({ ...payload, data: { ...data, riskSignals, deviceId } });\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the onIssuerSelected';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n private readonly authorizeEnrollment = async (registrationOptions: string): Promise<void> => {\n try {\n const fidoAssertion = await this.passkeyService.createCredentialForEnrollment(registrationOptions); // Create passkey and trigger biometrics\n const enrollment = { enrollmentId: this.props.paymentMethodData?.enrollmentId, fidoAssertion };\n const { redirectResult } = await authorizeEnrollment({\n enrollment,\n clientKey: this.props.clientKey,\n loadingContext: this.props.loadingContext\n });\n // Make paymentDetails call to finalize the enrollment.\n this.handleAdditionalDetails({ data: { details: { redirectResult } } });\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the authorizeEnrollment';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n /**\n * There are 3 endpoints (stages) we need to call for the payment flow.\n * The first one `payWithStoredPayment` is the regular payments call - we attempt to pay with the stored payment token.\n * The second one is to poll the authorization options - we poll the server to get the challenge in the `getAuthorizationStatus` function.\n * The third one is in the `authorizePayment` function - we authorize the payment with shopper's passkey.\n */\n private readonly payWithStoredPayment = async () => {\n try {\n const { deviceId, ...riskSignals } = await this.passkeyService.captureRiskSignalsAuthentication();\n this.state = { ...this.state, ...{ data: { storedPaymentMethodId: this.props.storedPaymentMethodId, riskSignals, deviceId } } };\n this.executePaymentsCall();\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the payWithStoredPayment';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n private readonly authorizePayment = async (authenticationOptions: string): Promise<void> => {\n try {\n const fidoAssertion = await this.passkeyService.authenticateWithCredential(authenticationOptions);\n const payment = {\n enrollmentId: this.props.paymentMethodData?.enrollmentId,\n initiationId: this.props.paymentMethodData?.initiationId,\n fidoAssertion\n };\n const { redirectResult } = await authorizePayment({\n payment,\n clientKey: this.props.clientKey,\n loadingContext: this.props.loadingContext\n });\n this.handleAdditionalDetails({ data: { details: { redirectResult } } });\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in the authorizePayment';\n this.handleError(error instanceof AdyenCheckoutError ? error : new AdyenCheckoutError(ERROR, errorMsg));\n }\n };\n\n /**\n * The enrollment flow is only rendered on the Adyen hosted page and it is always shown, regardless of the showPayButton configuration.\n */\n private readonly enrollmentPayButton = (props: PayButtonProps): h.JSX.Element => {\n return <PayButton {...props} showPayButton={true} disclaimerMessage={this.props.disclaimerMessage} onClick={this.submit} />;\n };\n\n protected override componentToRender(): h.JSX.Element {\n // Always render the redirect button on the merchant's page\n if (!this.props._isAdyenHosted) {\n return (\n <RedirectButton\n name={this.displayName}\n label={this.props.i18n.get('paybybankpix.redirectBtn.label')}\n payButton={this.payButton}\n onSubmit={this.submit}\n setComponentRef={this.setComponentRef}\n />\n );\n }\n\n return this.props.storedPaymentMethodId != null ? (\n <StoredPayment\n txVariant={PayByBankPixElement.type}\n type={this.props.type}\n clientKey={this.props.clientKey}\n enrollmentId={this.props.paymentMethodData?.enrollmentId}\n initiationId={this.props.paymentMethodData?.initiationId}\n setComponentRef={this.setComponentRef}\n onPay={this.payWithStoredPayment}\n onAuthorize={this.authorizePayment}\n />\n ) : (\n <Enrollment\n onError={this.handleError}\n txVariant={PayByBankPixElement.type}\n // Await\n type={this.props.type}\n clientKey={this.props.clientKey}\n enrollmentId={this.props.paymentMethodData?.enrollmentId}\n countdownTime={this.props.countdownTime}\n onEnroll={this.authorizeEnrollment}\n // Issuer List\n issuers={this.props.issuers}\n payButton={this.enrollmentPayButton}\n onChange={this.onIssuerSelected}\n onSubmitAnalytics={this.submitAnalytics}\n setComponentRef={this.setComponentRef}\n />\n );\n }\n}\n//\nexport default PayByBankPixElement;\n"],"names":["PayByBankPixElement","UIElement","isValid","_this_state","this","props","_isAdyenHosted","storedPaymentMethodId","state","additionalInfo","_this_props_payByBankPixDetails","_this_props","i18n","get","values","receiver","payByBankPixDetails","icon","resources","getImage","parentFolder","type","ispb","super","isAvailable","unsupportedReason","passkeyService","getWebAuthnUnsupportedReason","Promise","reject","AdyenCheckoutError","ERROR","resolve","initialize","canUseStoredCredential","error","Error","message","handleAction","action","paymentAction","core","createFromAction","_object_spread_props","_object_spread","elementRef","onAdditionalDetails","handleAdditionalDetails","unmount","then","mount","mountedNode","formatData","paymentMethod","TxVariants","paybybank_pix","isEnrollment","data","storePaymentMethod","componentToRender","_this_props_paymentMethodData","_this_props_paymentMethodData1","_this_props_paymentMethodData2","h","StoredPayment","txVariant","clientKey","enrollmentId","paymentMethodData","initiationId","setComponentRef","onPay","payWithStoredPayment","onAuthorize","authorizePayment","Enrollment","onError","handleError","countdownTime","onEnroll","authorizeEnrollment","issuers","payButton","enrollmentPayButton","onChange","onIssuerSelected","onSubmitAnalytics","submitAnalytics","RedirectButton","name","displayName","label","onSubmit","submit","constructor","checkout","_define_property","async","payload","issuer","_ref","captureRiskSignalsEnrollment","deviceId","riskSignals","setState","errorMsg","registrationOptions","fidoAssertion","createCredentialForEnrollment","enrollment","redirectResult","loadingContext","details","captureRiskSignalsAuthentication","executePaymentsCall","authenticationOptions","authenticateWithCredential","payment","PayButton","showPayButton","disclaimerMessage","onClick","PasskeyService","environment","analytics","TIMEOUT_MINUTES","defaultProps","URL","window","location","href","hostname","endsWith","e","isAdyenHosted"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as e,useEffect as t}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../../../../utils/get-issuer-image.js";import
|
|
1
|
+
import{useState as e,useEffect as t}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../../../../utils/get-issuer-image.js";import o from"../../../../core/Context/useImage.js";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}const i=({issuers:i=[],txVariant:s})=>{const u=o(),[p,f]=e(i);return t(()=>{if((null==i?void 0:i.length)>0){const e=r({},s,u);f(i.map(t=>c(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),o.forEach(function(t){n(e,t,r[t])})}return e}({},t),{icon:e(t.id)})))}},[i,s]),p};export{i as useIssuerWithLogo};
|
|
2
2
|
//# sourceMappingURL=useIssuerWithLogo.js.map
|
package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIssuerWithLogo.js","sources":["../../../../../../src/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.ts"],"sourcesContent":["import { useEffect, useState } from 'preact/hooks';\nimport { IssuerItem } from '../../../internal/IssuerList/types';\nimport getIssuerImageUrl from '../../../../utils/get-issuer-image';\nimport
|
|
1
|
+
{"version":3,"file":"useIssuerWithLogo.js","sources":["../../../../../../src/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.ts"],"sourcesContent":["import { useEffect, useState } from 'preact/hooks';\nimport { IssuerItem } from '../../../internal/IssuerList/types';\nimport getIssuerImageUrl from '../../../../utils/get-issuer-image';\nimport useImage from '../../../../core/Context/useImage';\n\ninterface UseIssuerWithLogoProps {\n txVariant: string;\n issuers: IssuerItem[];\n}\nexport const useIssuerWithLogo = ({ issuers = [], txVariant }: UseIssuerWithLogoProps): IssuerItem[] => {\n const getImage = useImage();\n const [issuersWithLogo, setIssuersWithLogo] = useState<IssuerItem[]>(issuers);\n\n useEffect(() => {\n if (issuers?.length > 0) {\n const getIssuerIcon = getIssuerImageUrl({}, txVariant, getImage);\n setIssuersWithLogo(\n issuers.map(item => ({\n ...item,\n icon: getIssuerIcon(item.id)\n }))\n );\n }\n }, [issuers, txVariant]);\n\n return issuersWithLogo;\n};\n"],"names":["useIssuerWithLogo","issuers","txVariant","getImage","useImage","issuersWithLogo","setIssuersWithLogo","useState","useEffect","length","getIssuerIcon","getIssuerImageUrl","map","item","_object_spread_props","_object_spread","icon","id"],"mappings":"wqBASO,MAAMA,EAAoB,EAAGC,UAAU,GAAIC,gBAC9C,MAAMC,EAAWC,KACVC,EAAiBC,GAAsBC,EAAuBN,GAcrE,OAZAO,EAAU,KACN,IAAIP,eAAAA,EAASQ,QAAS,EAAG,CACrB,MAAMC,EAAgBC,EAAkB,GAAIT,EAAWC,GACvDG,EACIL,EAAQW,IAAIC,GAASC,oUAAAC,CAAA,GACdF,GAAAA,CACHG,KAAMN,EAAcG,EAAKI,OAGrC,GACD,CAAChB,EAASC,IAENG"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e,Fragment as t}from"../../external/preact/dist/preact.js";import r from"../Redirect/Redirect.js";import o from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as n}from"../tx-variants.js";import s from"
|
|
1
|
+
import{createElement as e,Fragment as t}from"../../external/preact/dist/preact.js";import r from"../Redirect/Redirect.js";import o from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as n}from"../tx-variants.js";import s from"../internal/PayButton/PayButton.js";import{payAmountLabel as a}from"../internal/PayButton/utils.js";function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),o.forEach(function(t){i(e,t,r[t])})}return e}function c(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}class m extends r{formatProps(e){return p({keepBrandsVisible:!0,showOtherInsteadOfNumber:!0},e)}formatData(){return{paymentMethod:p({type:this.type},this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId}),browserInfo:this.browserInfo}}get displayName(){return this.props.storedPaymentMethodId&&this.props.label?this.props.label:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.name:""}get brands(){const e=this.resources.getImage({parentFolder:"paybybank/"});return[{icon:e("US-1"),name:"Wells Fargo"},{icon:e("US-2"),name:"Bank of America"},{icon:e("US-3"),name:"Chase"},{icon:e("US-4"),name:"Citi"}]}componentToRender(){return this.props.storedPaymentMethodId?e(s,c(p({},this.props),{classNameModifiers:["standalone"],label:a(this.props.i18n,this.props.amount),showReview:!!this.props.onReview,onClick:this.submit})):e(t,null,e("div",{className:"adyen-checkout-paybybank_AIS_DD"},e("p",{className:"adyen-checkout-paybybank_AIS_DD__description-header"},this.props.i18n.get("payByBankAISDD.disclaimer.header")),e("p",{className:"adyen-checkout-paybybank_AIS_DD__description-body"},this.props.i18n.get("payByBankAISDD.disclaimer.body"))),e(o,c(p({},this.props),{name:this.displayName,onSubmit:this.submit,payButton:this.payButton,setComponentRef:this.setComponentRef})))}}i(m,"type",n.paybybank_AIS_DD);export{m as default};
|
|
2
2
|
//# sourceMappingURL=PayByBankUS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayByBankUS.js","sources":["../../../../src/components/PayByBankUS/PayByBankUS.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport RedirectElement from '../Redirect';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport
|
|
1
|
+
{"version":3,"file":"PayByBankUS.js","sources":["../../../../src/components/PayByBankUS/PayByBankUS.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport RedirectElement from '../Redirect';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport PayButton from '../internal/PayButton';\nimport { payAmountLabel } from '../internal/PayButton/utils';\nimport { PaymentMethodBrand } from '../../types/global-types';\nimport './PayByBankUS.scss';\n\nexport default class PayByBankUS extends RedirectElement {\n public static override readonly type: TxVariants = TxVariants.paybybank_AIS_DD;\n\n protected formatProps(props) {\n return {\n // paymentMethodBrands configuration\n keepBrandsVisible: true,\n showOtherInsteadOfNumber: true,\n ...props\n };\n }\n\n public formatData() {\n return {\n paymentMethod: {\n type: this.type,\n ...(this.props.storedPaymentMethodId && {\n storedPaymentMethodId: this.props.storedPaymentMethodId\n })\n },\n browserInfo: this.browserInfo\n };\n }\n\n get displayName() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.label;\n }\n return this.props.name;\n }\n\n get additionalInfo() {\n return this.props.storedPaymentMethodId ? this.props.name : '';\n }\n\n /*\n Hardcode US brands \n */\n get brands(): PaymentMethodBrand[] {\n // paybybank_AIS_DD / tx_variant not used here since images are kept in paybybank subfolder\n const getIssuerIcon = this.resources.getImage({ parentFolder: 'paybybank/' });\n\n // hardcoding\n return [\n { icon: getIssuerIcon('US-1'), name: 'Wells Fargo' },\n { icon: getIssuerIcon('US-2'), name: 'Bank of America' },\n { icon: getIssuerIcon('US-3'), name: 'Chase' },\n { icon: getIssuerIcon('US-4'), name: 'Citi' }\n ];\n }\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.storedPaymentMethodId ? (\n <PayButton\n {...this.props}\n classNameModifiers={['standalone']}\n label={payAmountLabel(this.props.i18n, this.props.amount)}\n showReview={!!this.props.onReview}\n onClick={this.submit}\n />\n ) : (\n <Fragment>\n <div className=\"adyen-checkout-paybybank_AIS_DD\">\n <p className=\"adyen-checkout-paybybank_AIS_DD__description-header\">{this.props.i18n.get('payByBankAISDD.disclaimer.header')}</p>\n <p className=\"adyen-checkout-paybybank_AIS_DD__description-body\">{this.props.i18n.get('payByBankAISDD.disclaimer.body')}</p>\n </div>\n\n <RedirectButton\n {...this.props}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n setComponentRef={this.setComponentRef}\n />\n </Fragment>\n );\n }\n}\n"],"names":["PayByBankUS","RedirectElement","formatProps","props","_object_spread","keepBrandsVisible","showOtherInsteadOfNumber","formatData","paymentMethod","type","this","storedPaymentMethodId","browserInfo","displayName","label","name","additionalInfo","brands","getIssuerIcon","resources","getImage","parentFolder","icon","componentToRender","h","PayButton","classNameModifiers","payAmountLabel","i18n","amount","showReview","onReview","onClick","submit","Fragment","div","className","p","get","RedirectButton","onSubmit","payButton","setComponentRef","_define_property","TxVariants","paybybank_AIS_DD"],"mappings":"goCASe,MAAMA,UAAoBC,EAG3BC,WAAAA,CAAYC,GAClB,OAAOC,EAAA,CAEHC,mBAAmB,EACnBC,0BAA0B,GACvBH,EAEX,CAEOI,UAAAA,GACH,MAAO,CACHC,cAAeJ,EAAA,CACXK,KAAMC,KAAKD,MACPC,KAAKP,MAAMQ,uBAAyB,CACpCA,sBAAuBD,KAAKP,MAAMQ,wBAG1CC,YAAaF,KAAKE,YAE1B,CAEA,eAAIC,GACA,OAAIH,KAAKP,MAAMQ,uBAAyBD,KAAKP,MAAMW,MACxCJ,KAAKP,MAAMW,MAEfJ,KAAKP,MAAMY,IACtB,CAEA,kBAAIC,GACA,OAAON,KAAKP,MAAMQ,sBAAwBD,KAAKP,MAAMY,KAAO,EAChE,CAKA,UAAIE,GAEA,MAAMC,EAAgBR,KAAKS,UAAUC,SAAS,CAAEC,aAAc,eAG9D,MAAO,CACH,CAAEC,KAAMJ,EAAc,QAASH,KAAM,eACrC,CAAEO,KAAMJ,EAAc,QAASH,KAAM,mBACrC,CAAEO,KAAMJ,EAAc,QAASH,KAAM,SACrC,CAAEO,KAAMJ,EAAc,QAASH,KAAM,QAE7C,CAEmBQ,iBAAAA,GACf,OAAOb,KAAKP,MAAMQ,sBACda,EAACC,EAAAA,EAAAA,EAAAA,CAAAA,EACOf,KAAKP,OAAK,CACduB,mBAAoB,CAAC,cACrBZ,MAAOa,EAAejB,KAAKP,MAAMyB,KAAMlB,KAAKP,MAAM0B,QAClDC,aAAcpB,KAAKP,MAAM4B,SACzBC,QAAStB,KAAKuB,UAGlBT,EAACU,OACGV,EAACW,MAAAA,CAAIC,UAAU,mCACXZ,EAACa,IAAAA,CAAED,UAAU,uDAAuD1B,KAAKP,MAAMyB,KAAKU,IAAI,qCACxFd,EAACa,IAAAA,CAAED,UAAU,qDAAqD1B,KAAKP,MAAMyB,KAAKU,IAAI,oCAG1Fd,EAACe,EAAAA,EAAAA,EAAAA,CAAAA,EACO7B,KAAKP,OAAK,CACdY,KAAML,KAAKG,YACX2B,SAAU9B,KAAKuB,OACfQ,UAAW/B,KAAK+B,UAChBC,gBAAiBhC,KAAKgC,mBAItC,EA3EAC,EADiB3C,EACeS,OAAmBmC,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 i from"./defaultProps.js";import r from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as o}from"./constants.js";import{TxVariants as s}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as a}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as l,InfoEventType as p}from"../../core/Analytics/events/AnalyticsInfoEvent.js";import{sanitizeResponse as h,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import u from"../../core/Errors/CancelError.js";import{PayPalSdkLoader as c}from"./services/PayPalSdkLoader.js";import{PayPalService as y}from"./services/PayPalService.js";import{PayPalComponentV6 as v}from"./components/PayPalComponentV6.js";import m 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 P}from"./config.js";import f from"../../utils/browserInfo.js";function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),i.forEach(function(t){O(e,t,n[t])})}return e}function b(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function E(e,t){if(null==e)return{};var n,i,r,o={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(Object(e)),r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i]);return o}if(o=function(e,t){if(null==e)return{};var n,i,r={},o=Object.getOwnPropertyNames(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n]);return r}(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i]);return o}class A extends t{initializePayPalV6(){var e;const t=new c({analytics:this.analytics,environment:this.props.environment,nonce:null===(e=this.props.usePayPalV6)||void 0===e?void 0:e.nonce});this.paypalService=new y(S({sdkLoader:t},this.paypalServiceConfig)),this.onPayPalServiceReady(this.paypalService.initialize())}update(e){const t=this.paypalServiceConfig;return this.props=this.formatProps(S({},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(){var e,t,n,i,r;const o=this.props.usePayPalV6,s=["paypal-payments"];return(null==o?void 0:o.blockPayPalVenmoButton)||s.push("venmo-payments"),(null==o?void 0:o.onCreatePayPalMessages)&&s.push("paypal-messages"),{loadingContext:null!==(e=this.props.loadingContext)&&void 0!==e?e:"",clientKey:null!==(t=this.props.clientKey)&&void 0!==t?t:"",merchantId:null!==(n=null===(r=this.props.configuration)||void 0===r?void 0:r.merchantId)&&void 0!==n?n:"",countryCode:null!==(i=this.props.countryCode)&&void 0!==i?i:"",amount:this.props.amount,vault:Boolean(null==o?void 0:o.vault),locale:null==o?void 0:o.locale,pageType:null==o?void 0:o.pageType,environment:this.props.environment,components:s}}onPayPalServiceReady(e){e.then(()=>{var e,t,n;const{onCreatePayPalMessages:i}=null!==(e=this.props.usePayPalV6)&&void 0!==e?e:{};i&&(null===(n=this.paypalService)||void 0===n||null===(t=n.getInstance())||void 0===t?void 0:t.createPayPalMessages)&&i(this.paypalService.getInstance().createPayPalMessages)}).catch(e=>{this.handleError(e instanceof r?e:new r("ERROR","Something went wrong while initializing PayPal",{cause:e}))})}async isAvailable(){if(this.props.usePayPalV6){if(!this.paypalService)throw new r("ERROR","PayPal is not available");if(await this.paypalService.isSdkLoaded(),!this.paypalService.getEligiblePaymentMethods().isEligible("paypal"))throw new r("ERROR","PayPal is not available")}}get sdkDataPaymentMethodConfiguration(){return this.props.usePayPalV6?{supportsPayPalV6:!0}:void 0}formatProps(e){var t,n,i;const r=null===(t=e.configuration)||void 0===t?void 0:t.merchantId,o=null===(n=e.configuration)||void 0===n?void 0:n.intent,s=0===(null===(i=e.amount)||void 0===i?void 0:i.value)?"tokenize":e.intent||o,a="tokenize"===s||e.vault,l="continue"===e.userAction;return b(S({},e),{commit:!l&&e.commit,vault:a,configuration:{intent:s,merchantId:r}})}beforeRender(e){const t=new l(S({type:p.rendered,component:this.type,configData:b(S({},e),{showPayButton:this.props.showPayButton})},(null==e?void 0:e.isExpress)&&{isExpress:e.isExpress},(null==e?void 0: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 f()}formatData(){var e;const{isExpress:t,userAction:n,usePayPalV6:i}=this.props,r=0===(null===(e=this.props.amount)||void 0===e?void 0:e.value);return S({paymentMethod:S({type:A.type,subtype:t?"express":A.subtype},!i&&{userAction:n})},i&&{browserInfo:this.browserInfo},i&&(i.vault||r)&&{storePaymentMethod:!0})}get isValid(){return!0}handleOnApprove(e,t){var n;const{onAuthorized:i}=this.props,o={data:{details:Object.entries(e).reduce((e,[t,n])=>(e[t]=null!=n?n:void 0,e),{}),paymentData:null!==(n=this.paymentData)&&void 0!==n?n:void 0}};return i?t.order?t.order.get().then(e=>{var t;const n=a(null==e?void 0:e.payer),r=a(null==e||null===(t=e.purchase_units)||void 0===t?void 0:t[0].shipping,!0);return this.setState(S({authorizedEvent:e},n&&{billingAddress:n},r&&{deliveryAddress:r})),new Promise((t,o)=>i(S({authorizedEvent:e},n&&{billingAddress:n},r&&{deliveryAddress:r}),{resolve:t,reject:o}))}).then(()=>this.handleAdditionalDetails(o)).catch(e=>this.handleError(new r("ERROR","Something went wrong with finalizing the PayPal order",{cause:e}))):(this.handleError(new r("ERROR","PayPal order actions are not available")),Promise.resolve()):(this.handleAdditionalDetails(o),Promise.resolve())}handleOnApproveV6(e){var t,n,i,o,s;const a=null===(o=this.props.usePayPalV6)||void 0===o?void 0:o.onAuthorized;let l;if("orderId"in e){var p;const{orderId:t,payerId:n,fundingSource:i}=e;l={data:{details:{orderID:t,payerID:n,paymentSource:i},paymentData:null!==(p=this.paymentData)&&void 0!==p?p:void 0}}}if("vaultSetupToken"in e){var h;const{vaultSetupToken:t,payerId:n,fundingSource:i}=e;l={data:{details:{vaultToken:t,payerID:n,paymentSource:i},paymentData:null!==(h=this.paymentData)&&void 0!==h?h:void 0}}}return l?a&&"orderId"in e?m(null!==(t=this.props.loadingContext)&&void 0!==t?t:"",{clientKey:null!==(n=this.props.clientKey)&&void 0!==n?n:"",merchantId:null!==(i=null===(s=this.props.configuration)||void 0===s?void 0:s.merchantId)&&void 0!==i?i:"",orderId:e.orderId}).then(e=>(this.setState(S({authorizedEvent:e.payPalOrder},e.billingAddress&&{billingAddress:e.billingAddress},e.deliveryAddress&&{deliveryAddress:e.deliveryAddress},e.shopperName&&{shopperName:e.shopperName})),new Promise((t,n)=>a(S({authorizedEvent:e.payPalOrder},e.billingAddress&&{billingAddress:e.billingAddress},e.deliveryAddress&&{deliveryAddress:e.deliveryAddress},e.shopperName&&{shopperName:e.shopperName}),{resolve:t,reject:n})))).then(()=>this.handleAdditionalDetails(l)).catch(e=>this.handleError(new r("ERROR","Something went wrong with finalizing the PayPal order",{cause:e}))):(this.handleAdditionalDetails(l),Promise.resolve()):(this.handleError(new r("ERROR","Missing `orderId` or `vaultSetupToken` in PayPal approval data")),Promise.resolve())}handleResolve(e){if(!this.resolve)return this.handleError(new r("ERROR",o.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new r("ERROR",o.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return new Promise((e,t)=>{this.resolve=e,this.reject=t,this.makePaymentsCall().then(h).then(d).then(this.handleResponse).catch(e=>{if(e instanceof u)return void this.setElementStatus("ready");this.handleFailedResult(e);const t=e instanceof Error?e.message:JSON.stringify(e),n=e?`: ${t}`:"";this.handleReject(`${o.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(null==t?void 0:t.onShippingAddressChange)?t.onShippingAddressChange(e,this):Promise.resolve()}handleOnShippingOptionsChangeV6(e){const{usePayPalV6:t}=this.props;return(null==t?void 0:t.onShippingOptionsChange)?t.onShippingOptionsChange(e,this):Promise.resolve()}componentToRender(){if(this.props.usePayPalV6){const{usePayPalV6:t}=this.props;return this.paypalService?e(v,b(S({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 r("CANCEL")),onError:e=>this.handleError(new r("ERROR",String(e),{cause:e}))})):null}if(!this.props.showPayButton)return null;const t=this.props,{onShippingAddressChange:i,onShippingOptionsChange:o}=t,s=E(t,["onShippingAddressChange","onShippingOptionsChange"]);return e(n,b(S(b(S({},s),{setComponentRef:this.setComponentRef}),i&&{onShippingAddressChange:this.handleOnShippingAddressChange},o&&{onShippingOptionsChange:this.handleOnShippingOptionsChange}),{onCancel:()=>this.handleError(new r("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:e=>{this.handleError(new r("ERROR",String(e),{cause:e}))},onScriptLoadFailure:e=>this.handleError(e),onSubmit:this.handleSubmit}))}constructor(e,t){if(super(e,t),O(this,"paymentData",null),O(this,"resolve",null),O(this,"reject",null),O(this,"paypalService",void 0),O(this,"submit",()=>{this.handleError(new r("IMPLEMENTATION_ERROR",o.SUBMIT_NOT_SUPPORTED))}),O(this,"handleAction",e=>this.updateWithAction(e)),O(this,"updateWithAction",e=>{var t;if(e.paymentMethodType!==this.type)throw new Error("Invalid Action");return e.paymentData&&(this.paymentData=e.paymentData),(null==e||null===(t=e.sdkData)||void 0===t?void 0:t.token)?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:e}),this.handleResolve(e.sdkData.token)):this.handleReject(o.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 r("IMPLEMENTATION_ERROR",'PayPal - You must set "isExpress" flag to "true" in order to use "onShippingAddressChange" and/or "onShippingOptionsChange" callbacks');if(e&&(null==i?void 0:i.presentationMode)&&!P.includes(i.presentationMode))throw new r("IMPLEMENTATION_ERROR",`PayPal - Unsupported presentation mode: ${i.presentationMode} for express checkout`);this.initializePayPalV6()}}}O(A,"type",s.paypal),O(A,"subtype","sdk"),O(A,"defaultProps",i);export{A 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 r from"./defaultProps.js";import i from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as o}from"./constants.js";import{TxVariants as s}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as a}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as l,InfoEventType as p}from"../../core/Analytics/events/AnalyticsInfoEvent.js";import{sanitizeResponse as h,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import c from"../../core/Errors/CancelError.js";function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){u(e,t,n[t])})}return e}function y(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function O(e,t){if(null==e)return{};var n,r,i,o={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(Object(e)),i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}if(o=function(e,t){if(null==e)return{};var n,r,i={},o=Object.getOwnPropertyNames(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n]);return i}(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}class f extends t{formatProps(e){var t,n,r;const i=null===(t=e.configuration)||void 0===t?void 0:t.merchantId,o=null===(n=e.configuration)||void 0===n?void 0:n.intent,s=0===(null===(r=e.amount)||void 0===r?void 0:r.value)?"tokenize":e.intent||o,a="tokenize"===s||e.vault,l="continue"===e.userAction;return y(m({},e),{commit:!l&&e.commit,vault:a,configuration:{intent:s,merchantId:i}})}beforeRender(e){const t=new l(m({type:p.rendered,component:this.type,configData:y(m({},e),{showPayButton:this.props.showPayButton})},(null==e?void 0:e.isExpress)&&{isExpress:e.isExpress},(null==e?void 0: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:f.type,userAction:t,subtype:e?"express":f.subtype}}}get isValid(){return!0}handleResolve(e){if(!this.resolve)return this.handleError(new i("ERROR",o.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new i("ERROR",o.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return new Promise((e,t)=>{var n;this.resolve=e,this.reject=t,null===(n=this.makePaymentsCall())||void 0===n||n.then(h).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(`${o.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 t=this.props,{onShippingAddressChange:r,onShippingOptionsChange:o}=t,s=O(t,["onShippingAddressChange","onShippingOptionsChange"]);return e(n,y(m(y(m({},s),{setComponentRef:this.setComponentRef}),r&&{onShippingAddressChange:this.handleOnShippingAddressChange},o&&{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),u(this,"paymentData",null),u(this,"resolve",null),u(this,"reject",null),u(this,"submit",()=>{this.handleError(new i("IMPLEMENTATION_ERROR",o.SUBMIT_NOT_SUPPORTED))}),u(this,"handleAction",e=>this.updateWithAction(e)),u(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(o.NO_TOKEN_PROVIDED),null}),u(this,"handleOnApprove",(e,t)=>{var n;const{onAuthorized:r}=this.props,o={data:{details:Object.entries(e).reduce((e,[t,n])=>(e[t]=null!=n?n:void 0,e),{}),paymentData:null!==(n=this.paymentData)&&void 0!==n?n:void 0}};return r?t.order?t.order.get().then(e=>{var t;const n=a(null==e?void 0:e.payer),i=a(null==e||null===(t=e.purchase_units)||void 0===t?void 0:t[0].shipping,!0);return this.setState(m({authorizedEvent:e},n&&{billingAddress:n},i&&{deliveryAddress:i})),new Promise((t,o)=>r(m({authorizedEvent:e},n&&{billingAddress:n},i&&{deliveryAddress:i}),{resolve:t,reject:o}))}).then(()=>this.handleAdditionalDetails(o)).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(o),Promise.resolve())}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this)}}u(f,"type",s.paypal),u(f,"subtype","sdk"),u(f,"defaultProps",r);export{f as default};
|
|
2
2
|
//# sourceMappingURL=Paypal.js.map
|