@adyen/adyen-web 6.22.0 → 6.23.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/README.md +8 -7
- package/dist/cjs/adyen.css +5 -4
- 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 +292 -117
- package/dist/es/adyen.css +5 -4
- 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/AmazonPayComponent.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es/components/ApplePay/ApplePay.js +1 -1
- package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
- package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js +1 -1
- package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
- package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map +1 -1
- package/dist/es/components/Card/Card.js +1 -1
- package/dist/es/components/Card/Card.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
- package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/defaultProps.js +1 -1
- package/dist/es/components/Card/components/CardInput/defaultProps.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/utils.js +1 -1
- package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
- package/dist/es/components/Card/components/Fastlane/FastlaneSignup.js +1 -1
- package/dist/es/components/Card/components/Fastlane/FastlaneSignup.js.map +1 -1
- package/dist/es/components/Card/constants.js +2 -0
- package/dist/es/components/Card/constants.js.map +1 -0
- package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es/components/CashAppPay/services/CashAppSdkLoader.js +1 -1
- package/dist/es/components/CashAppPay/services/CashAppSdkLoader.js.map +1 -1
- package/dist/es/components/ClickToPay/ClickToPay.js +1 -1
- package/dist/es/components/ClickToPay/ClickToPay.js.map +1 -1
- package/dist/es/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
- package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
- package/dist/es/components/GooglePay/GooglePay.js +1 -1
- package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es/components/GooglePay/GooglePayService.js +1 -1
- package/dist/es/components/GooglePay/GooglePayService.js.map +1 -1
- package/dist/es/components/GooglePay/defaultProps.js +1 -1
- package/dist/es/components/GooglePay/defaultProps.js.map +1 -1
- package/dist/es/components/GooglePay/utils/map-adyen-brands-to-googlepay-brands.js +2 -0
- package/dist/es/components/GooglePay/utils/map-adyen-brands-to-googlepay-brands.js.map +1 -0
- package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
- package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
- package/dist/es/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
- package/dist/es/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
- package/dist/es/components/MBWay/components/MBWayInput/MBWayInput.js +1 -1
- package/dist/es/components/MBWay/components/MBWayInput/MBWayInput.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/services/PasskeySdkLoader.js +1 -1
- package/dist/es/components/PayByBankPix/services/PasskeySdkLoader.js.map +1 -1
- package/dist/es/components/PayByBankPix/services/PasskeyService.js +1 -1
- package/dist/es/components/PayByBankPix/services/PasskeyService.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.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/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es/components/PayTo/PayTo.js.map +1 -1
- package/dist/es/components/PayTo/components/PayIDInput.js +1 -1
- package/dist/es/components/PayTo/components/PayIDInput.js.map +1 -1
- package/dist/es/components/PayTo/components/PayToPhone.js +1 -1
- package/dist/es/components/PayTo/components/PayToPhone.js.map +1 -1
- package/dist/es/components/PayTo/components/validate.js +1 -1
- package/dist/es/components/PayTo/components/validate.js.map +1 -1
- package/dist/es/components/Pix/Pix.js +1 -1
- package/dist/es/components/Pix/Pix.js.map +1 -1
- package/dist/es/components/Pix/components/PixInput/PixInput.js +2 -0
- package/dist/es/components/Pix/components/PixInput/PixInput.js.map +1 -0
- package/dist/es/components/Pix/components/PixInput/utils.js +2 -0
- package/dist/es/components/Pix/components/PixInput/utils.js.map +1 -0
- package/dist/es/components/Pix/components/PixInput/validate.js +2 -0
- package/dist/es/components/Pix/components/PixInput/validate.js.map +1 -0
- package/dist/es/components/Pix/components/PixQRDetails.js +2 -0
- package/dist/es/components/Pix/components/PixQRDetails.js.map +1 -0
- package/dist/es/components/UPI/UPI.js +1 -1
- package/dist/es/components/UPI/UPI.js.map +1 -1
- package/dist/es/components/UPI/components/UPIIntentAppList/UPIIntentAppItem/UPIIntentAppItem.js +1 -1
- package/dist/es/components/UPI/components/UPIIntentAppList/UPIIntentAppItem/UPIIntentAppItem.js.map +1 -1
- package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
- package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
- package/dist/es/components/internal/Button/Button.js +1 -1
- package/dist/es/components/internal/Button/Button.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/create-clicktopay-service.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/create-clicktopay-service.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/MastercardSdk.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/MastercardSdk.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/VisaSdk.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/VisaSdk.js.map +1 -1
- package/dist/es/components/internal/Countdown/CountdownA11yReporter.js +1 -1
- package/dist/es/components/internal/Countdown/CountdownA11yReporter.js.map +1 -1
- package/dist/es/components/internal/Countdown/index.js +1 -1
- package/dist/es/components/internal/Countdown/index.js.map +1 -1
- package/dist/es/components/internal/PayButton/PayButton.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoaderDetailsProvider.js +2 -0
- package/dist/es/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -0
- package/dist/es/components/internal/QRLoader/components/QRCodeCopyButton.js +2 -0
- package/dist/es/components/internal/QRLoader/components/QRCodeCopyButton.js.map +1 -0
- package/dist/es/components/internal/QRLoader/components/QRCountdown.js +2 -0
- package/dist/es/components/internal/QRLoader/components/QRCountdown.js.map +1 -0
- package/dist/es/components/internal/QRLoader/components/QRDetails.js +2 -0
- package/dist/es/components/internal/QRLoader/components/QRDetails.js.map +1 -0
- package/dist/es/components/internal/QRLoader/components/QRImage.js +2 -0
- package/dist/es/components/internal/QRLoader/components/QRImage.js.map +1 -0
- package/dist/es/components/internal/QRLoader/components/QRIntructions.js +2 -0
- package/dist/es/components/internal/QRLoader/components/QRIntructions.js.map +1 -0
- package/dist/es/components/internal/QRLoader/components/QRProgressbar.js +2 -0
- package/dist/es/components/internal/QRLoader/components/QRProgressbar.js.map +1 -0
- package/dist/es/components/internal/SecuredFields/binLookup/extensions.js +1 -1
- package/dist/es/components/internal/SecuredFields/binLookup/extensions.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
- package/dist/es/components/internal/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/es/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/es/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js +1 -1
- package/dist/es/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.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/tx-variants.js +1 -1
- package/dist/es/components/tx-variants.js.map +1 -1
- package/dist/es/core/Analytics/Analytics.js +1 -1
- package/dist/es/core/Analytics/Analytics.js.map +1 -1
- package/dist/es/core/Analytics/AnalyticsInfoEvent.js +1 -1
- package/dist/es/core/Analytics/AnalyticsInfoEvent.js.map +1 -1
- package/dist/es/core/Analytics/constants.js +1 -1
- package/dist/es/core/Analytics/constants.js.map +1 -1
- package/dist/es/core/Analytics/useAnalytics.js +2 -0
- package/dist/es/core/Analytics/useAnalytics.js.map +1 -0
- package/dist/es/core/Context/CoreProvider.js +1 -1
- package/dist/es/core/Context/CoreProvider.js.map +1 -1
- package/dist/es/core/Environment/Environment.js.map +1 -1
- package/dist/es/core/Services/analytics/collect-id.js +1 -1
- package/dist/es/core/Services/analytics/collect-id.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/index.d.ts +292 -117
- package/dist/es/utils/Script.js +1 -1
- package/dist/es/utils/Script.js.map +1 -1
- package/dist/es-legacy/adyen.css +5 -4
- 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/AmazonPayComponent.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
- package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
- package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js +1 -1
- package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
- package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResult.js +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map +1 -1
- package/dist/es-legacy/components/Card/Card.js +1 -1
- package/dist/es-legacy/components/Card/Card.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/defaultProps.js +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/defaultProps.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
- package/dist/es-legacy/components/Card/components/Fastlane/FastlaneSignup.js +1 -1
- package/dist/es-legacy/components/Card/components/Fastlane/FastlaneSignup.js.map +1 -1
- package/dist/es-legacy/components/Card/constants.js +2 -0
- package/dist/es-legacy/components/Card/constants.js.map +1 -0
- 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/services/CashAppSdkLoader.js +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppSdkLoader.js.map +1 -1
- package/dist/es-legacy/components/ClickToPay/ClickToPay.js +1 -1
- package/dist/es-legacy/components/ClickToPay/ClickToPay.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
- package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
- package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
- package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es-legacy/components/GooglePay/GooglePayService.js +1 -1
- package/dist/es-legacy/components/GooglePay/GooglePayService.js.map +1 -1
- package/dist/es-legacy/components/GooglePay/defaultProps.js +1 -1
- package/dist/es-legacy/components/GooglePay/defaultProps.js.map +1 -1
- package/dist/es-legacy/components/GooglePay/utils/map-adyen-brands-to-googlepay-brands.js +2 -0
- package/dist/es-legacy/components/GooglePay/utils/map-adyen-brands-to-googlepay-brands.js.map +1 -0
- package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
- package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
- package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
- package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
- package/dist/es-legacy/components/MBWay/components/MBWayInput/MBWayInput.js +1 -1
- package/dist/es-legacy/components/MBWay/components/MBWayInput/MBWayInput.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/services/PasskeySdkLoader.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/services/PasskeySdkLoader.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/services/PasskeyService.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/services/PasskeyService.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.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/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
- package/dist/es-legacy/components/PayTo/components/PayIDInput.js +1 -1
- package/dist/es-legacy/components/PayTo/components/PayIDInput.js.map +1 -1
- package/dist/es-legacy/components/PayTo/components/PayToPhone.js +1 -1
- package/dist/es-legacy/components/PayTo/components/PayToPhone.js.map +1 -1
- package/dist/es-legacy/components/PayTo/components/validate.js +1 -1
- package/dist/es-legacy/components/PayTo/components/validate.js.map +1 -1
- package/dist/es-legacy/components/Pix/Pix.js +1 -1
- package/dist/es-legacy/components/Pix/Pix.js.map +1 -1
- package/dist/es-legacy/components/Pix/components/PixInput/PixInput.js +2 -0
- package/dist/es-legacy/components/Pix/components/PixInput/PixInput.js.map +1 -0
- package/dist/es-legacy/components/Pix/components/PixInput/utils.js +2 -0
- package/dist/es-legacy/components/Pix/components/PixInput/utils.js.map +1 -0
- package/dist/es-legacy/components/Pix/components/PixInput/validate.js +2 -0
- package/dist/es-legacy/components/Pix/components/PixInput/validate.js.map +1 -0
- package/dist/es-legacy/components/Pix/components/PixQRDetails.js +2 -0
- package/dist/es-legacy/components/Pix/components/PixQRDetails.js.map +1 -0
- package/dist/es-legacy/components/UPI/UPI.js +1 -1
- package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
- package/dist/es-legacy/components/UPI/components/UPIIntentAppList/UPIIntentAppItem/UPIIntentAppItem.js +1 -1
- package/dist/es-legacy/components/UPI/components/UPIIntentAppList/UPIIntentAppItem/UPIIntentAppItem.js.map +1 -1
- package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
- package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
- package/dist/es-legacy/components/internal/Button/Button.js +1 -1
- package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/create-clicktopay-service.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/create-clicktopay-service.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/MastercardSdk.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/MastercardSdk.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/VisaSdk.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/sdks/VisaSdk.js.map +1 -1
- package/dist/es-legacy/components/internal/Countdown/CountdownA11yReporter.js +1 -1
- package/dist/es-legacy/components/internal/Countdown/CountdownA11yReporter.js.map +1 -1
- package/dist/es-legacy/components/internal/Countdown/index.js +1 -1
- package/dist/es-legacy/components/internal/Countdown/index.js.map +1 -1
- package/dist/es-legacy/components/internal/PayButton/PayButton.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRCodeCopyButton.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRCodeCopyButton.js.map +1 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRCountdown.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRCountdown.js.map +1 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js.map +1 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js.map +1 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRIntructions.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRIntructions.js.map +1 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRProgressbar.js +2 -0
- package/dist/es-legacy/components/internal/QRLoader/components/QRProgressbar.js.map +1 -0
- package/dist/es-legacy/components/internal/SecuredFields/binLookup/extensions.js +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/binLookup/extensions.js.map +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
- package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js +1 -1
- package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.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/tx-variants.js +1 -1
- package/dist/es-legacy/components/tx-variants.js.map +1 -1
- package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
- package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
- package/dist/es-legacy/core/Analytics/AnalyticsInfoEvent.js +1 -1
- package/dist/es-legacy/core/Analytics/AnalyticsInfoEvent.js.map +1 -1
- package/dist/es-legacy/core/Analytics/constants.js +1 -1
- package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
- package/dist/es-legacy/core/Analytics/useAnalytics.js +2 -0
- package/dist/es-legacy/core/Analytics/useAnalytics.js.map +1 -0
- package/dist/es-legacy/core/Context/CoreProvider.js +1 -1
- package/dist/es-legacy/core/Context/CoreProvider.js.map +1 -1
- package/dist/es-legacy/core/Environment/Environment.js.map +1 -1
- package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
- package/dist/es-legacy/core/Services/analytics/collect-id.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/utils/Script.js +1 -1
- package/dist/es-legacy/utils/Script.js.map +1 -1
- package/package.json +13 -13
- package/styles/adyen.css +5 -4
- package/dist/es/components/Pix/PixInput/PixInput.js +0 -2
- package/dist/es/components/Pix/PixInput/PixInput.js.map +0 -1
- package/dist/es/components/Pix/PixInput/utils.js +0 -2
- package/dist/es/components/Pix/PixInput/utils.js.map +0 -1
- package/dist/es/components/Pix/PixInput/validate.js +0 -2
- package/dist/es/components/Pix/PixInput/validate.js.map +0 -1
- package/dist/es-legacy/components/Pix/PixInput/PixInput.js +0 -2
- package/dist/es-legacy/components/Pix/PixInput/PixInput.js.map +0 -1
- package/dist/es-legacy/components/Pix/PixInput/utils.js +0 -2
- package/dist/es-legacy/components/Pix/PixInput/utils.js.map +0 -1
- package/dist/es-legacy/components/Pix/PixInput/validate.js +0 -2
- package/dist/es-legacy/components/Pix/PixInput/validate.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../../../external/preact/dist/preact.js";import{useRef as
|
|
1
|
+
import{createElement as t}from"../../../../external/preact/dist/preact.js";import{useRef as e,useState as a,useCallback as o,useEffect as n}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../../../../utils/Script.js";import{KLARNA_WIDGET_URL as s}from"../../constants.js";import i from"../../../../core/Analytics/useAnalytics.js";function c({sdkData:c,paymentMethodType:m,widgetInitializationTime:l,payButton:d,...y}){const p=e(null),[u,_]=a("ready"),{analytics:f}=i(),h=o(()=>{_("error"),y.onComplete({data:{paymentData:y.paymentData,details:{}}})},[y.paymentData,y.onComplete]),w=o(()=>{window.Klarna.Payments.init({client_token:c.client_token}),window.Klarna.Payments.load({container:p.current,payment_method_category:c.payment_method_category},function(t){!t.show_form||t.error?h():y.onLoaded()})},[c.client_token,c.payment_method_category]),k=o(()=>{_("loading");try{window.Klarna.Payments.authorize({payment_method_category:c.payment_method_category},function(t){!0===t.approved&&!0===t.show_form?(_("success"),y.onComplete({data:{paymentData:y.paymentData,details:{authorization_token:t.authorization_token}}})):t.approved||!0!==t.show_form?h():(_("ready"),y.onError(t))})}catch(t){h()}},[c.payment_method_category,y.onComplete,y.onError]),g=t=>{"Enter"!==t.key&&"Enter"!==t.code||(t.preventDefault(),k())};return n(()=>{const t=window.Klarna?.Payments?.init;t&&w()},[l]),n(()=>{window.klarnaAsyncCallback=function(){w()};const t=new r({src:s,component:"klarna",analytics:f});return t.load(),()=>{t.remove()}},[w,f]),"error"!==u&&"success"!==u?t("div",{className:"adyen-checkout__klarna-widget"},t("div",{ref:p}),d({status:u,disabled:"loading"===u,onClick:k,onKeyDown:g})):null}export{c as KlarnaWidget};
|
|
2
2
|
//# sourceMappingURL=KlarnaWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KlarnaWidget.js","sources":["../../../../../../src/components/Klarna/components/KlarnaWidget/KlarnaWidget.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState, useCallback } from 'preact/hooks';\nimport Script from '../../../../utils/Script';\nimport { KLARNA_WIDGET_URL } from '../../constants';\nimport type { KlarnaWidgetAuthorizeResponse, KlarnaWidgetProps } from '../../types';\n\nimport './KlarnaWidget.scss';\n\nexport function KlarnaWidget({ sdkData, paymentMethodType, widgetInitializationTime, payButton, ...props }: KlarnaWidgetProps) {\n const klarnaWidgetRef = useRef(null);\n const [status, setStatus] = useState('ready');\n\n const handleError = useCallback(() => {\n setStatus('error');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {}\n }\n });\n }, [props.paymentData, props.onComplete]);\n\n const initializeKlarnaWidget = useCallback(() => {\n window.Klarna.Payments.init({\n client_token: sdkData.client_token\n });\n\n window.Klarna.Payments.load(\n {\n container: klarnaWidgetRef.current,\n payment_method_category: sdkData.payment_method_category\n },\n function (res) {\n // If show_form: true is received together with an error, something fixable is wrong and the consumer\n // needs to take action before moving forward\n // If show_form: false, the payment method in the loaded widget will not be offered for this order\n // based on Klarna’s pre-assessment.\n if (!res.show_form || !!res.error) {\n handleError();\n } else {\n props.onLoaded();\n }\n }\n );\n }, [sdkData.client_token, sdkData.payment_method_category]);\n\n const authorizeKlarna = useCallback(() => {\n setStatus('loading');\n try {\n window.Klarna.Payments.authorize(\n {\n payment_method_category: sdkData.payment_method_category\n },\n function (res: KlarnaWidgetAuthorizeResponse) {\n if (res.approved === true && res.show_form === true) {\n // Klarna has approved the authorization of credit for this order.\n setStatus('success');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {\n authorization_token: res.authorization_token\n }\n }\n });\n } else if (!res.approved && res.show_form === true) {\n // Fixable error\n setStatus('ready');\n props.onError(res);\n } else {\n // The purchase is declined. The widget should be hidden and the user\n // should select another payment method.\n handleError();\n }\n }\n );\n } catch (e) {\n handleError();\n }\n }, [sdkData.payment_method_category, props.onComplete, props.onError]);\n\n /**\n * Initializes Klarna SDK if it is already available and reinitialize\n * it when the init time refreshes\n */\n useEffect(() => {\n const isKlarnaAvailable = window.Klarna?.Payments?.init;\n if (isKlarnaAvailable) {\n initializeKlarnaWidget();\n }\n }, [widgetInitializationTime]);\n\n useEffect(() => {\n window.klarnaAsyncCallback = function () {\n initializeKlarnaWidget();\n };\n const script = new Script(KLARNA_WIDGET_URL);\n void script.load();\n\n return () => {\n script.remove();\n };\n }, [initializeKlarnaWidget]);\n\n if (status !== 'error' && status !== 'success') {\n return (\n <div className=\"adyen-checkout__klarna-widget\">\n <div ref={klarnaWidgetRef} />\n {payButton({
|
|
1
|
+
{"version":3,"file":"KlarnaWidget.js","sources":["../../../../../../src/components/Klarna/components/KlarnaWidget/KlarnaWidget.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState, useCallback } from 'preact/hooks';\nimport Script from '../../../../utils/Script';\nimport { KLARNA_WIDGET_URL } from '../../constants';\nimport type { KlarnaWidgetAuthorizeResponse, KlarnaWidgetProps } from '../../types';\n\nimport './KlarnaWidget.scss';\nimport useAnalytics from '../../../../core/Analytics/useAnalytics';\n\nexport function KlarnaWidget({ sdkData, paymentMethodType, widgetInitializationTime, payButton, ...props }: KlarnaWidgetProps) {\n const klarnaWidgetRef = useRef(null);\n const [status, setStatus] = useState('ready');\n const { analytics } = useAnalytics();\n\n const handleError = useCallback(() => {\n setStatus('error');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {}\n }\n });\n }, [props.paymentData, props.onComplete]);\n\n const initializeKlarnaWidget = useCallback(() => {\n window.Klarna.Payments.init({\n client_token: sdkData.client_token\n });\n\n window.Klarna.Payments.load(\n {\n container: klarnaWidgetRef.current,\n payment_method_category: sdkData.payment_method_category\n },\n function (res: { show_form: boolean; error: unknown }) {\n // If show_form: true is received together with an error, something fixable is wrong and the consumer\n // needs to take action before moving forward\n // If show_form: false, the payment method in the loaded widget will not be offered for this order\n // based on Klarna’s pre-assessment.\n if (!res.show_form || !!res.error) {\n handleError();\n } else {\n props.onLoaded();\n }\n }\n );\n }, [sdkData.client_token, sdkData.payment_method_category]);\n\n const authorizeKlarna = useCallback(() => {\n setStatus('loading');\n try {\n window.Klarna.Payments.authorize(\n {\n payment_method_category: sdkData.payment_method_category\n },\n function (res: KlarnaWidgetAuthorizeResponse) {\n if (res.approved === true && res.show_form === true) {\n // Klarna has approved the authorization of credit for this order.\n setStatus('success');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {\n authorization_token: res.authorization_token\n }\n }\n });\n } else if (!res.approved && res.show_form === true) {\n // Fixable error\n setStatus('ready');\n props.onError(res);\n } else {\n // The purchase is declined. The widget should be hidden and the user\n // should select another payment method.\n handleError();\n }\n }\n );\n } catch (e) {\n handleError();\n }\n }, [sdkData.payment_method_category, props.onComplete, props.onError]);\n\n /**\n * TODO: Clean this up when we have a different solution for handling on click in the BaseElement class\n * We need this specifically for handling ENTER keypresses from the keyboard\n * because the UIElement class has an on keypress handler which can trigger a components submit function\n * ENTER key press on this button should not trigger this behaviour since the Klarna script has already been loaded\n */\n const handleKeyDown = (e: h.JSX.TargetedKeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.code === 'Enter') {\n e.preventDefault();\n authorizeKlarna();\n }\n };\n\n /**\n * Initializes Klarna SDK if it is already available and reinitialize\n * it when the init time refreshes\n */\n useEffect(() => {\n const isKlarnaAvailable = window.Klarna?.Payments?.init;\n if (isKlarnaAvailable) {\n initializeKlarnaWidget();\n }\n }, [widgetInitializationTime]);\n\n useEffect(() => {\n window.klarnaAsyncCallback = function () {\n initializeKlarnaWidget();\n };\n const script = new Script({\n src: KLARNA_WIDGET_URL,\n component: 'klarna',\n analytics\n });\n\n void script.load();\n\n return () => {\n script.remove();\n };\n }, [initializeKlarnaWidget, analytics]);\n\n if (status !== 'error' && status !== 'success') {\n return (\n <div className=\"adyen-checkout__klarna-widget\">\n <div ref={klarnaWidgetRef} />\n {payButton({\n status,\n disabled: status === 'loading',\n onClick: authorizeKlarna,\n onKeyDown: handleKeyDown\n })}\n </div>\n );\n }\n\n return null;\n}\n"],"names":["KlarnaWidget","sdkData","paymentMethodType","widgetInitializationTime","payButton","props","klarnaWidgetRef","useRef","status","setStatus","useState","analytics","useAnalytics","handleError","useCallback","onComplete","data","paymentData","details","initializeKlarnaWidget","window","Klarna","Payments","init","client_token","load","container","current","payment_method_category","res","show_form","error","onLoaded","authorizeKlarna","authorize","approved","authorization_token","onError","e","handleKeyDown","key","code","preventDefault","useEffect","isKlarnaAvailable","klarnaAsyncCallback","script","Script","src","KLARNA_WIDGET_URL","component","remove","h","div","className","ref","disabled","onClick","onKeyDown"],"mappings":"8VASO,SAASA,GAAaC,QAAEA,EAAOC,kBAAEA,EAAiBC,yBAAEA,EAAwBC,UAAEA,KAAcC,IAC/F,MAAMC,EAAkBC,EAAO,OACxBC,EAAQC,GAAaC,EAAS,UAC/BC,UAAEA,GAAcC,IAEhBC,EAAcC,EAAY,KAC5BL,EAAU,SACVJ,EAAMU,WAAW,CACbC,KAAM,CACFC,YAAaZ,EAAMY,YACnBC,QAAS,CAAA,MAGlB,CAACb,EAAMY,YAAaZ,EAAMU,aAEvBI,EAAyBL,EAAY,KACvCM,OAAOC,OAAOC,SAASC,KAAK,CACxBC,aAAcvB,EAAQuB,eAG1BJ,OAAOC,OAAOC,SAASG,KACnB,CACIC,UAAWpB,EAAgBqB,QAC3BC,wBAAyB3B,EAAQ2B,yBAErC,SAAUC,IAKDA,EAAIC,WAAeD,EAAIE,MACxBlB,IAEAR,EAAM2B,UAEd,IAEL,CAAC/B,EAAQuB,aAAcvB,EAAQ2B,0BAE5BK,EAAkBnB,EAAY,KAChCL,EAAU,WACV,IACIW,OAAOC,OAAOC,SAASY,UACnB,CACIN,wBAAyB3B,EAAQ2B,yBAErC,SAAUC,IACe,IAAjBA,EAAIM,WAAuC,IAAlBN,EAAIC,WAE7BrB,EAAU,WACVJ,EAAMU,WAAW,CACbC,KAAM,CACFC,YAAaZ,EAAMY,YACnBC,QAAS,CACLkB,oBAAqBP,EAAIO,yBAI7BP,EAAIM,WAA8B,IAAlBN,EAAIC,UAO5BjB,KALAJ,EAAU,SACVJ,EAAMgC,QAAQR,GAMtB,EAER,CAAE,MAAOS,GACLzB,GACJ,GACD,CAACZ,EAAQ2B,wBAAyBvB,EAAMU,WAAYV,EAAMgC,UAQvDE,EAAiBD,IACL,UAAVA,EAAEE,KAA8B,UAAXF,EAAEG,OACvBH,EAAEI,iBACFT,MAgCR,OAxBAU,EAAU,KACN,MAAMC,EAAoBxB,OAAOC,QAAQC,UAAUC,KAC/CqB,GACAzB,KAEL,CAAChB,IAEJwC,EAAU,KACNvB,OAAOyB,oBAAsB,WACzB1B,GACJ,EACA,MAAM2B,EAAS,IAAIC,EAAO,CACtBC,IAAKC,EACLC,UAAW,SACXvC,cAKJ,OAFKmC,EAAOrB,OAEL,KACHqB,EAAOK,WAEZ,CAAChC,EAAwBR,IAEb,UAAXH,GAAiC,YAAXA,EAElB4C,EAACC,MAAAA,CAAIC,UAAU,iCACXF,EAACC,MAAAA,CAAIE,IAAKjD,IACTF,EAAU,CACPI,SACAgD,SAAqB,YAAXhD,EACViD,QAASxB,EACTyB,UAAWnB,KAMpB,IACX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useState as o}from"../../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as t}from"../../../../core/Context/CoreProvider.js";import r from"../../../internal/PhoneInput/PhoneInputForm.js";import a from"../../../internal/LoadingWrapper/LoadingWrapper.js";import n from"../../../internal/PhoneInput/usePhonePrefixes.js";function s(s){const{i18n:i,loadingContext:l}=t(),{allowedCountries:m=[]}=s,[d,p]=o("ready");this.setStatus=p;const{loadingStatus:u,phonePrefixes:h}=n({allowedCountries:m,loadingContext:l,handleError:s.onError});return e(a,{status:u},e("div",{className:"adyen-checkout__mb-way"},e(r,{setComponentRef:s.setComponentRef,...s,items:h,onChange:({data:e,valid:o,errors:t,isValid:r})=>{s.onChange({data:e,valid:o,errors:t,isValid:r})},data:s.data}),s.showPayButton&&s.payButton({status:d,label:i.get("confirmPurchase")})))}s.defaultProps={onChange:()=>{},phoneNumberKey:"mobileNumber",phoneNumberErrorKey:"mobileNumber.invalid"};export{s as default};
|
|
2
2
|
//# sourceMappingURL=MBWayInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MBWayInput.js","sources":["../../../../../../src/components/MBWay/components/MBWayInput/MBWayInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState
|
|
1
|
+
{"version":3,"file":"MBWayInput.js","sources":["../../../../../../src/components/MBWay/components/MBWayInput/MBWayInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { MBWayInputProps } from './types';\nimport './MBWayInput.scss';\nimport PhoneInputForm from '../../../internal/PhoneInput';\nimport LoadingWrapper from '../../../internal/LoadingWrapper';\nimport usePhonePrefixes from '../../../internal/PhoneInput/usePhonePrefixes';\n\nfunction MBWayInput(props: MBWayInputProps) {\n const { i18n, loadingContext } = useCoreContext();\n\n const { allowedCountries = [] } = props;\n\n const [status, setStatus] = useState<string>('ready');\n\n this.setStatus = setStatus;\n\n const { loadingStatus: prefixLoadingStatus, phonePrefixes } = usePhonePrefixes({ allowedCountries, loadingContext, handleError: props.onError });\n\n const onChange = ({ data, valid, errors, isValid }) => {\n props.onChange({ data, valid, errors, isValid });\n };\n\n return (\n <LoadingWrapper status={prefixLoadingStatus}>\n <div className=\"adyen-checkout__mb-way\">\n <PhoneInputForm setComponentRef={props.setComponentRef} {...props} items={phonePrefixes} onChange={onChange} data={props.data} />\n\n {props.showPayButton && props.payButton({ status, label: i18n.get('confirmPurchase') })}\n </div>\n </LoadingWrapper>\n );\n}\n\nMBWayInput.defaultProps = {\n onChange: () => {},\n phoneNumberKey: 'mobileNumber',\n phoneNumberErrorKey: 'mobileNumber.invalid'\n};\n\nexport default MBWayInput;\n"],"names":["MBWayInput","props","i18n","loadingContext","useCoreContext","allowedCountries","status","setStatus","useState","this","loadingStatus","prefixLoadingStatus","phonePrefixes","usePhonePrefixes","handleError","onError","h","LoadingWrapper","div","className","PhoneInputForm","setComponentRef","items","onChange","data","valid","errors","isValid","showPayButton","payButton","label","get","defaultProps","phoneNumberKey","phoneNumberErrorKey"],"mappings":"gaASA,SAASA,EAAWC,GAChB,MAAMC,KAAEA,EAAIC,eAAEA,GAAmBC,KAE3BC,iBAAEA,EAAmB,IAAOJ,GAE3BK,EAAQC,GAAaC,EAAiB,SAE7CC,KAAKF,UAAYA,EAEjB,MAAQG,cAAeC,EAAmBC,cAAEA,GAAkBC,EAAiB,CAAER,mBAAkBF,iBAAgBW,YAAab,EAAMc,UAMtI,OACIC,EAACC,EAAAA,CAAeX,OAAQK,GACpBK,EAACE,MAAAA,CAAIC,UAAU,0BACXH,EAACI,EAAAA,CAAeC,gBAAiBpB,EAAMoB,mBAAqBpB,EAAOqB,MAAOV,EAAeW,SAPpF,EAAGC,OAAMC,QAAOC,SAAQC,cACrC1B,EAAMsB,SAAS,CAAEC,OAAMC,QAAOC,SAAQC,aAM+EH,KAAMvB,EAAMuB,OAExHvB,EAAM2B,eAAiB3B,EAAM4B,UAAU,CAAEvB,SAAQwB,MAAO5B,EAAK6B,IAAI,sBAIlF,CAEA/B,EAAWgC,aAAe,CACtBT,SAAU,OACVU,eAAgB,eAChBC,oBAAqB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../external/preact/dist/preact.js";import{CoreProvider as e}from"../../core/Context/CoreProvider.js";import{TxVariants as s}from"../tx-variants.js";import{UIElement as n}from"../internal/UIElement/UIElement.js";import i from"../../core/Errors/SRPanelProvider.js";import r from"../internal/RedirectButton/RedirectButton.js";import o,{ERROR as a}from"../../core/Errors/AdyenCheckoutError.js";import{PasskeyService as p}from"./services/PasskeyService.js";import{authorizeEnrollment as d}from"./services/authorizeEnrollment.js";import{authorizePayment as h}from"./services/authorizePayment.js";import l from"./components/StoredPayment/StoredPayment.js";import c from"./components/Enrollment/Enrollment.js";function m(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class y extends n{get isValid(){return!(this.props._isAdyenHosted&&!this.props.storedPaymentMethodId)||!!this.state?.isValid}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.i18n.get("paybybankpix.storedPayment.additionalLabel",{values:{receiver:this.props?.payByBankPixDetails?.receiver}}):""}get icon(){return this.props.storedPaymentMethodId?this.resources.getImage({parentFolder:`${y.type}/`})(this.props?.payByBankPixDetails?.ispb):super.icon}async isAvailable(){const t=await this.passkeyService.getWebAuthnUnsupportedReason();if(t)return Promise.reject(new o(a,t));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 o("ERROR","The stored payment method is not available on this device"))}return Promise.resolve()}catch(t){return Promise.reject(t instanceof Error?t?.message:"Unknown error")}}handleAction(t,e={}){const s=this.core.createFromAction(t,{...this.elementRef.props,...e,onAdditionalDetails:this.handleAdditionalDetails});return s?(this.unmount(),s.isAvailable().then(()=>{s.mount(this._node)}),s):null}formatData(){if(!this.props._isAdyenHosted)return{paymentMethod:{type:s.paybybank_pix}};const t=null==this.props.storedPaymentMethodId;return{paymentMethod:{type:s.paybybank_pix,...this.state.data},...t?{storePaymentMethod:!0}:{}}}render(){return this.props._isAdyenHosted?t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{srPanel:this.props.modules.srPanel},null!=this.props.storedPaymentMethodId?t(l,{txVariant:y.type,type:this.props.type,clientKey:this.props.clientKey,amount:this.props.amount,enrollmentId:this.props.paymentMethodData?.enrollmentId,initiationId:this.props.paymentMethodData?.initiationId,setComponentRef:this.setComponentRef,onPay:this.payWithStoredPayment,onAuthorize:this.authorizePayment}):t(c,{onError:this.handleError,txVariant:y.type,type:this.props.type,clientKey:this.props.clientKey,enrollmentId:this.props.paymentMethodData?.enrollmentId,countdownTime:this.props.countdownTime,onEnroll:this.authorizeEnrollment,issuers:this.props.issuers,payButton:this.payButton,onChange:this.onIssuerSelected,onSubmitAnalytics:this.submitAnalytics,setComponentRef:this.setComponentRef}))):t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{srPanel:this.props.modules.srPanel},t(r,{showPayButton:this.props.showPayButton,name:this.displayName,label:this.props.i18n.get("paybybankpix.redirectBtn.label"),amount:this.props.amount,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}})))}constructor(t,e){super(t,e),m(this,"passkeyService",void 0),m(this,"onIssuerSelected",async t=>{try{const{data:e={}}=t;if(!e.issuer)return;const{deviceId:s,...n}=await this.passkeyService.captureRiskSignalsEnrollment();this.setState({...t,data:{...e,riskSignals:n,deviceId:s}})}catch(t){const e=t instanceof Error?t.message:"Unknown error in the onIssuerSelected";this.handleError(t instanceof o?t:new o(a,e))}}),m(this,"authorizeEnrollment",async t=>{try{const e=await this.passkeyService.createCredentialForEnrollment(t),s={enrollmentId:this.props.paymentMethodData?.enrollmentId,fidoAssertion:e},{redirectResult:n}=await d({enrollment:s,clientKey:this.props.clientKey,loadingContext:this.props.loadingContext});this.handleAdditionalDetails({data:{details:{redirectResult:n}}})}catch(t){const e=t instanceof Error?t.message:"Unknown error in the authorizeEnrollment";this.handleError(t instanceof o?t:new o(a,e))}}),m(this,"payWithStoredPayment",async()=>{try{const{deviceId:t,...e}=await this.passkeyService.captureRiskSignalsAuthentication();this.state={...this.state,data:{storedPaymentMethodId:this.props.storedPaymentMethodId,riskSignals:e,deviceId:t}},super.submit()}catch(t){const e=t instanceof Error?t.message:"Unknown error in the payWithStoredPayment";this.handleError(t instanceof o?t:new o(a,e))}}),m(this,"authorizePayment",async t=>{try{const e=await this.passkeyService.authenticateWithCredential(t),s={enrollmentId:this.props.paymentMethodData?.enrollmentId,initiationId:this.props.paymentMethodData?.initiationId,fidoAssertion:e},{redirectResult:n}=await h({payment:s,clientKey:this.props.clientKey,loadingContext:this.props.loadingContext});this.handleAdditionalDetails({data:{details:{redirectResult:n}}})}catch(t){const e=t instanceof Error?t.message:"Unknown error in the authorizePayment";this.handleError(t instanceof o?t:new o(a,e))}});const s=this.props.storedPaymentMethodId?this.props?.payByBankPixDetails?.deviceId:this.props.deviceId;this.passkeyService=new p({environment:this.props.environment,deviceId:s}),this.props._isAdyenHosted&&this.passkeyService.initialize()}}m(y,"type",s.paybybank_pix),m(y,"TIMEOUT_MINUTES",1),m(y,"defaultProps",{showPayButton:!0,_isAdyenHosted:(()=>{try{return new URL(window.location.href).hostname.endsWith(".adyen.com")}catch(t){return!1}})(),countdownTime:y.TIMEOUT_MINUTES});export{y as default};
|
|
1
|
+
import{createElement as t}from"../../external/preact/dist/preact.js";import{CoreProvider as e}from"../../core/Context/CoreProvider.js";import{TxVariants as s}from"../tx-variants.js";import{UIElement as n}from"../internal/UIElement/UIElement.js";import i from"../../core/Errors/SRPanelProvider.js";import r from"../internal/RedirectButton/RedirectButton.js";import o,{ERROR as a}from"../../core/Errors/AdyenCheckoutError.js";import{PasskeyService as p}from"./services/PasskeyService.js";import{authorizeEnrollment as d}from"./services/authorizeEnrollment.js";import{authorizePayment as h}from"./services/authorizePayment.js";import l from"./components/StoredPayment/StoredPayment.js";import c from"./components/Enrollment/Enrollment.js";function m(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class y extends n{get isValid(){return!(this.props._isAdyenHosted&&!this.props.storedPaymentMethodId)||!!this.state?.isValid}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.i18n.get("paybybankpix.storedPayment.additionalLabel",{values:{receiver:this.props?.payByBankPixDetails?.receiver}}):""}get icon(){return this.props.storedPaymentMethodId?this.resources.getImage({parentFolder:`${y.type}/`})(this.props?.payByBankPixDetails?.ispb):super.icon}async isAvailable(){const t=await this.passkeyService.getWebAuthnUnsupportedReason();if(t)return Promise.reject(new o(a,t));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 o("ERROR","The stored payment method is not available on this device"))}return Promise.resolve()}catch(t){return Promise.reject(t instanceof Error?t?.message:"Unknown error")}}handleAction(t,e={}){const s=this.core.createFromAction(t,{...this.elementRef.props,...e,onAdditionalDetails:this.handleAdditionalDetails});return s?(this.unmount(),s.isAvailable().then(()=>{s.mount(this._node)}),s):null}formatData(){if(!this.props._isAdyenHosted)return{paymentMethod:{type:s.paybybank_pix}};const t=null==this.props.storedPaymentMethodId;return{paymentMethod:{type:s.paybybank_pix,...this.state.data},...t?{storePaymentMethod:!0}:{}}}render(){return this.props._isAdyenHosted?t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{srPanel:this.props.modules.srPanel},null!=this.props.storedPaymentMethodId?t(l,{txVariant:y.type,type:this.props.type,clientKey:this.props.clientKey,amount:this.props.amount,enrollmentId:this.props.paymentMethodData?.enrollmentId,initiationId:this.props.paymentMethodData?.initiationId,setComponentRef:this.setComponentRef,onPay:this.payWithStoredPayment,onAuthorize:this.authorizePayment}):t(c,{onError:this.handleError,txVariant:y.type,type:this.props.type,clientKey:this.props.clientKey,enrollmentId:this.props.paymentMethodData?.enrollmentId,countdownTime:this.props.countdownTime,onEnroll:this.authorizeEnrollment,issuers:this.props.issuers,payButton:this.payButton,onChange:this.onIssuerSelected,onSubmitAnalytics:this.submitAnalytics,setComponentRef:this.setComponentRef}))):t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{srPanel:this.props.modules.srPanel},t(r,{showPayButton:this.props.showPayButton,name:this.displayName,label:this.props.i18n.get("paybybankpix.redirectBtn.label"),amount:this.props.amount,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}})))}constructor(t,e){super(t,e),m(this,"passkeyService",void 0),m(this,"onIssuerSelected",async t=>{try{const{data:e={}}=t;if(!e.issuer)return;const{deviceId:s,...n}=await this.passkeyService.captureRiskSignalsEnrollment();this.setState({...t,data:{...e,riskSignals:n,deviceId:s}})}catch(t){const e=t instanceof Error?t.message:"Unknown error in the onIssuerSelected";this.handleError(t instanceof o?t:new o(a,e))}}),m(this,"authorizeEnrollment",async t=>{try{const e=await this.passkeyService.createCredentialForEnrollment(t),s={enrollmentId:this.props.paymentMethodData?.enrollmentId,fidoAssertion:e},{redirectResult:n}=await d({enrollment:s,clientKey:this.props.clientKey,loadingContext:this.props.loadingContext});this.handleAdditionalDetails({data:{details:{redirectResult:n}}})}catch(t){const e=t instanceof Error?t.message:"Unknown error in the authorizeEnrollment";this.handleError(t instanceof o?t:new o(a,e))}}),m(this,"payWithStoredPayment",async()=>{try{const{deviceId:t,...e}=await this.passkeyService.captureRiskSignalsAuthentication();this.state={...this.state,data:{storedPaymentMethodId:this.props.storedPaymentMethodId,riskSignals:e,deviceId:t}},super.submit()}catch(t){const e=t instanceof Error?t.message:"Unknown error in the payWithStoredPayment";this.handleError(t instanceof o?t:new o(a,e))}}),m(this,"authorizePayment",async t=>{try{const e=await this.passkeyService.authenticateWithCredential(t),s={enrollmentId:this.props.paymentMethodData?.enrollmentId,initiationId:this.props.paymentMethodData?.initiationId,fidoAssertion:e},{redirectResult:n}=await h({payment:s,clientKey:this.props.clientKey,loadingContext:this.props.loadingContext});this.handleAdditionalDetails({data:{details:{redirectResult:n}}})}catch(t){const e=t instanceof Error?t.message:"Unknown error in the authorizePayment";this.handleError(t instanceof o?t:new o(a,e))}});const s=this.props.storedPaymentMethodId?this.props?.payByBankPixDetails?.deviceId:this.props.deviceId;this.passkeyService=new p({environment:this.props.environment,deviceId:s},this.analytics),this.props._isAdyenHosted&&this.passkeyService.initialize()}}m(y,"type",s.paybybank_pix),m(y,"TIMEOUT_MINUTES",1),m(y,"defaultProps",{showPayButton:!0,_isAdyenHosted:(()=>{try{return new URL(window.location.href).hostname.endsWith(".adyen.com")}catch(t){return!1}})(),countdownTime:y.TIMEOUT_MINUTES});export{y 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 { CoreProvider } from '../../core/Context/CoreProvider';\nimport { PayByBankPixData, PayByBankPixConfiguration } from './types';\nimport { TxVariants } from '../tx-variants';\nimport UIElement from '../internal/UIElement';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport RedirectButton from '../internal/RedirectButton';\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 this.passkeyService = new PasskeyService({ environment: this.props.environment, deviceId });\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 super.submit();\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 render() {\n // Always render the redirect button on the merchant's page\n if (!this.props._isAdyenHosted) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n label={this.props.i18n.get('paybybankpix.redirectBtn.label')}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n {this.props.storedPaymentMethodId != null ? (\n <StoredPayment\n txVariant={PayByBankPixElement.type}\n type={this.props.type}\n clientKey={this.props.clientKey}\n amount={this.props.amount}\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.payButton}\n onChange={this.onIssuerSelected}\n onSubmitAnalytics={this.submitAnalytics}\n setComponentRef={this.setComponentRef}\n />\n )}\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n//\nexport default PayByBankPixElement;\n"],"names":["PayByBankPixElement","UIElement","isValid","this","props","_isAdyenHosted","storedPaymentMethodId","state","additionalInfo","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","elementRef","onAdditionalDetails","handleAdditionalDetails","unmount","then","mount","_node","formatData","paymentMethod","TxVariants","paybybank_pix","isEnrollment","data","storePaymentMethod","render","h","CoreProvider","loadingContext","SRPanelProvider","srPanel","modules","StoredPayment","txVariant","clientKey","amount","enrollmentId","paymentMethodData","initiationId","setComponentRef","onPay","payWithStoredPayment","onAuthorize","authorizePayment","Enrollment","onError","handleError","countdownTime","onEnroll","authorizeEnrollment","issuers","payButton","onChange","onIssuerSelected","onSubmitAnalytics","submitAnalytics","RedirectButton","showPayButton","name","displayName","label","onSubmit","submit","ref","componentRef","constructor","checkout","_define_property","async","payload","issuer","deviceId","riskSignals","captureRiskSignalsEnrollment","setState","errorMsg","registrationOptions","fidoAssertion","createCredentialForEnrollment","enrollment","redirectResult","details","captureRiskSignalsAuthentication","authenticationOptions","authenticateWithCredential","payment","PasskeyService","environment","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 { CoreProvider } from '../../core/Context/CoreProvider';\nimport { PayByBankPixData, PayByBankPixConfiguration } from './types';\nimport { TxVariants } from '../tx-variants';\nimport UIElement from '../internal/UIElement';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport RedirectButton from '../internal/RedirectButton';\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 super.submit();\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 render() {\n // Always render the redirect button on the merchant's page\n if (!this.props._isAdyenHosted) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n label={this.props.i18n.get('paybybankpix.redirectBtn.label')}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n {this.props.storedPaymentMethodId != null ? (\n <StoredPayment\n txVariant={PayByBankPixElement.type}\n type={this.props.type}\n clientKey={this.props.clientKey}\n amount={this.props.amount}\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.payButton}\n onChange={this.onIssuerSelected}\n onSubmitAnalytics={this.submitAnalytics}\n setComponentRef={this.setComponentRef}\n />\n )}\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n//\nexport default PayByBankPixElement;\n"],"names":["PayByBankPixElement","UIElement","isValid","this","props","_isAdyenHosted","storedPaymentMethodId","state","additionalInfo","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","elementRef","onAdditionalDetails","handleAdditionalDetails","unmount","then","mount","_node","formatData","paymentMethod","TxVariants","paybybank_pix","isEnrollment","data","storePaymentMethod","render","h","CoreProvider","loadingContext","SRPanelProvider","srPanel","modules","StoredPayment","txVariant","clientKey","amount","enrollmentId","paymentMethodData","initiationId","setComponentRef","onPay","payWithStoredPayment","onAuthorize","authorizePayment","Enrollment","onError","handleError","countdownTime","onEnroll","authorizeEnrollment","issuers","payButton","onChange","onIssuerSelected","onSubmitAnalytics","submitAnalytics","RedirectButton","showPayButton","name","displayName","label","onSubmit","submit","ref","componentRef","constructor","checkout","_define_property","async","payload","issuer","deviceId","riskSignals","captureRiskSignalsEnrollment","setState","errorMsg","registrationOptions","fidoAssertion","createCredentialForEnrollment","enrollment","redirectResult","details","captureRiskSignalsAuthentication","authenticationOptions","authenticateWithCredential","payment","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{getUrlFromMap as
|
|
1
|
+
import{getUrlFromMap as n}from"../../../core/Environment/Environment.js";import{CDN_ENVIRONMENTS as e}from"../../../core/Environment/constants.js";import s from"../../../core/Errors/AdyenCheckoutError.js";import t from"../../../utils/Script.js";function r(n,e,s){return e in n?Object.defineProperty(n,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[e]=s,n}class i{isAvailable(){return null!=this.AdyenPasskey}async load(){if(this.isAvailable())return this.AdyenPasskey;try{const s=n(this.environment,e),r=new t({src:`${s}${i.PASSKEY_SDK_URL}`,component:"paybybank_pix",analytics:this.analytics});return await r.load(),this.AdyenPasskey=window.AdyenPasskey?.default,this.AdyenPasskey}catch(n){throw new s("SCRIPT_ERROR",`Unable to load script. Message: ${n instanceof Error?n.message:"Unknown error loading Passkey sdk"}`)}}constructor({analytics:n,environment:e}){r(this,"AdyenPasskey",void 0),r(this,"analytics",void 0),r(this,"environment",void 0),this.analytics=n,this.environment=e}}r(i,"PASSKEY_SDK_URL","js/adyenpasskey/1.1.0/adyen-passkey.js");export{i as PasskeySdkLoader};
|
|
2
2
|
//# sourceMappingURL=PasskeySdkLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasskeySdkLoader.js","sources":["../../../../../src/components/PayByBankPix/services/PasskeySdkLoader.ts"],"sourcesContent":["import { IAdyenPasskey } from './types';\nimport { getUrlFromMap } from '../../../core/Environment/Environment';\nimport type { CoreConfiguration } from '../../../core/types';\nimport { CDN_ENVIRONMENTS } from '../../../core/Environment/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport Script from '../../../utils/Script';\n\nexport interface IPasskeySdkLoader {\n load(environment: CoreConfiguration['environment']): Promise<IAdyenPasskey>;\n}\n\nclass PasskeySdkLoader implements IPasskeySdkLoader {\n private static readonly PASSKEY_SDK_URL = 'js/adyenpasskey/1.1.0/adyen-passkey.js';\n private AdyenPasskey: IAdyenPasskey;\n\n private isAvailable(): boolean {\n return this.AdyenPasskey != null;\n }\n\n public async load(
|
|
1
|
+
{"version":3,"file":"PasskeySdkLoader.js","sources":["../../../../../src/components/PayByBankPix/services/PasskeySdkLoader.ts"],"sourcesContent":["import { IAdyenPasskey } from './types';\nimport { getUrlFromMap } from '../../../core/Environment/Environment';\nimport type { CoreConfiguration } from '../../../core/types';\nimport { CDN_ENVIRONMENTS } from '../../../core/Environment/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport Script from '../../../utils/Script';\nimport { AnalyticsModule } from '../../../types/global-types';\n\nexport interface IPasskeySdkLoader {\n load(environment: CoreConfiguration['environment'], analytics: AnalyticsModule): Promise<IAdyenPasskey>;\n}\n\nclass PasskeySdkLoader implements IPasskeySdkLoader {\n private static readonly PASSKEY_SDK_URL = 'js/adyenpasskey/1.1.0/adyen-passkey.js';\n private AdyenPasskey: IAdyenPasskey;\n\n private readonly analytics: AnalyticsModule;\n private readonly environment: string;\n\n constructor({ analytics, environment }: { analytics: AnalyticsModule; environment: string }) {\n this.analytics = analytics;\n this.environment = environment;\n }\n\n private isAvailable(): boolean {\n return this.AdyenPasskey != null;\n }\n\n public async load(): Promise<IAdyenPasskey> {\n if (this.isAvailable()) {\n return this.AdyenPasskey;\n }\n\n try {\n const cdnUrl = getUrlFromMap(this.environment as CoreConfiguration['environment'], CDN_ENVIRONMENTS);\n const url = `${cdnUrl}${PasskeySdkLoader.PASSKEY_SDK_URL}`;\n\n const scriptElement = new Script({\n src: url,\n component: 'paybybank_pix',\n analytics: this.analytics\n });\n\n await scriptElement.load();\n this.AdyenPasskey = window.AdyenPasskey?.default;\n return this.AdyenPasskey;\n } catch (e: unknown) {\n throw new AdyenCheckoutError(\n 'SCRIPT_ERROR',\n `Unable to load script. Message: ${e instanceof Error ? e.message : 'Unknown error loading Passkey sdk'}`\n );\n }\n }\n}\n\nexport { PasskeySdkLoader };\n"],"names":["PasskeySdkLoader","isAvailable","this","AdyenPasskey","load","cdnUrl","getUrlFromMap","environment","CDN_ENVIRONMENTS","scriptElement","Script","src","PASSKEY_SDK_URL","component","analytics","window","default","e","AdyenCheckoutError","Error","message","constructor","_define_property"],"mappings":"6WAYA,MAAMA,EAYMC,WAAAA,GACJ,OAA4B,MAArBC,KAAKC,YAChB,CAEA,UAAaC,GACT,GAAIF,KAAKD,cACL,OAAOC,KAAKC,aAGhB,IACI,MAAME,EAASC,EAAcJ,KAAKK,YAAiDC,GAG7EC,EAAgB,IAAIC,EAAO,CAC7BC,IAHQ,GAAGN,IAASL,EAAiBY,kBAIrCC,UAAW,gBACXC,UAAWZ,KAAKY,YAKpB,aAFML,EAAcL,OACpBF,KAAKC,aAAeY,OAAOZ,cAAca,QAClCd,KAAKC,YAChB,CAAE,MAAOc,GACL,MAAM,IAAIC,EACN,eACA,mCAAmCD,aAAaE,MAAQF,EAAEG,QAAU,sCAE5E,CACJ,CAjCA,WAAAC,EAAYP,UAAEA,EAASP,YAAEA,IALzBe,EAAApB,KAAQC,oBAAR,GAEAmB,EAAApB,KAAiBY,iBAAjB,GACAQ,EAAApB,KAAiBK,mBAAjB,GAGIL,KAAKY,UAAYA,EACjBZ,KAAKK,YAAcA,CACvB,EATAe,EADEtB,EACsBY,kBAAkB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{PasskeySdkLoader as e}from"./PasskeySdkLoader.js";import{PasskeyErrorTypes as i}from"./types.js";import t,{SDK_ERROR as n}from"../../../core/Errors/AdyenCheckoutError.js";import s from"../../../utils/base64.js";function
|
|
1
|
+
import{PasskeySdkLoader as e}from"./PasskeySdkLoader.js";import{PasskeyErrorTypes as i}from"./types.js";import t,{SDK_ERROR as n}from"../../../core/Errors/AdyenCheckoutError.js";import s from"../../../utils/base64.js";function a(e,i,t){return i in e?Object.defineProperty(e,i,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[i]=t,e}class r{get deviceId(){return this.passkeyServiceConfig.deviceId}async getWebAuthnUnsupportedReason(){if(!window.PublicKeyCredential)return"Browser does not support webauthn";try{if(!await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable())return"Device does not have platform authenticator"}catch(e){return"Unknown error"}return""}initialize(){return null==this.initialized&&(this.initialized=new e({environment:this.passkeyServiceConfig.environment,analytics:this.analytics}).load().then(e=>{this.passkeySdk=e})),this.initialized}async captureRiskSignalsEnrollment(){if(await this.initialized,this.riskSignals)return this.riskSignals;const e=await this.passkeySdk.captureRiskSignalsEnrollment(this.deviceId);if(e&&"type"in e&&e.type===i.RISK_SIGNALS_ERROR)throw new t(n,e.message);return this.riskSignals=e,this.riskSignals}async canUseStoredCredential(){try{return await this.captureRiskSignalsAuthentication(),!0}catch(e){return console.warn(`The device is not eligible for stored credential authentication: ${e instanceof Error?e?.message:"unknown error"}`),!1}}async captureRiskSignalsAuthentication(){await this.initialized;const e=await this.passkeySdk.captureRiskSignalsAuthentication(this.deviceId);if(e&&"type"in e&&e.type===i.RISK_SIGNALS_ERROR)throw new t(n,e.message);return e}async createCredentialForEnrollment(e){await this.initialized;const a=this.decodeJsonBase64(e,"Failed to decode registrationOptions"),r=await this.passkeySdk.createCredentialForEnrollment(a);if(r&&"type"in r&&r.type===i.CREDENTIAL_CREATION_ERROR)throw new t(n,r.message);return s.encode(JSON.stringify(r))}async authenticateWithCredential(e){await this.initialized;const a=this.decodeJsonBase64(e,"Failed to decode authenticationOptions"),r=await this.passkeySdk.authenticateWithCredential(a);if(r&&"type"in r&&r.type===i.CREDENTIAL_RETRIEVAL_ERROR)throw new t(n,r.message);return s.encode(JSON.stringify(r))}decodeJsonBase64(e,i){const a=s.decode(e);if(!a.success)throw new t(n,i);return JSON.parse(a.data)}constructor(e,i){a(this,"passkeyServiceConfig",void 0),a(this,"analytics",void 0),a(this,"passkeySdk",void 0),a(this,"riskSignals",void 0),a(this,"initialized",void 0),this.analytics=i,this.passkeyServiceConfig=e}}export{r as PasskeyService};
|
|
2
2
|
//# sourceMappingURL=PasskeyService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasskeyService.js","sources":["../../../../../src/components/PayByBankPix/services/PasskeyService.ts"],"sourcesContent":["import { PasskeySdkLoader } from './PasskeySdkLoader';\nimport {\n PasskeyServiceConfig,\n IPasskeyService,\n IAdyenPasskey,\n PasskeyErrorTypes,\n RiskSignalsEnrollment,\n RiskSignalsAuthentication,\n NavigatorCredentialCreationsError,\n NavigatorCredentialRetrievalError\n} from './types';\nimport AdyenCheckoutError, { SDK_ERROR } from '../../../core/Errors/AdyenCheckoutError';\nimport { DecodeObject } from '../../../types/global-types';\nimport base64 from '../../../utils/base64';\n\nexport class PasskeyService implements IPasskeyService {\n private
|
|
1
|
+
{"version":3,"file":"PasskeyService.js","sources":["../../../../../src/components/PayByBankPix/services/PasskeyService.ts"],"sourcesContent":["import { PasskeySdkLoader } from './PasskeySdkLoader';\nimport {\n PasskeyServiceConfig,\n IPasskeyService,\n IAdyenPasskey,\n PasskeyErrorTypes,\n RiskSignalsEnrollment,\n RiskSignalsAuthentication,\n NavigatorCredentialCreationsError,\n NavigatorCredentialRetrievalError\n} from './types';\nimport AdyenCheckoutError, { SDK_ERROR } from '../../../core/Errors/AdyenCheckoutError';\nimport { AnalyticsModule, DecodeObject } from '../../../types/global-types';\nimport base64 from '../../../utils/base64';\n\nexport class PasskeyService implements IPasskeyService {\n private readonly passkeyServiceConfig: PasskeyServiceConfig;\n private readonly analytics: AnalyticsModule;\n\n private passkeySdk: IAdyenPasskey;\n private riskSignals: RiskSignalsEnrollment | RiskSignalsAuthentication;\n private initialized: Promise<void>;\n\n constructor(configuration: PasskeyServiceConfig, analytics: AnalyticsModule) {\n this.analytics = analytics;\n this.passkeyServiceConfig = configuration;\n }\n\n get deviceId() {\n return this.passkeyServiceConfig.deviceId;\n }\n\n public async getWebAuthnUnsupportedReason(): Promise<string> {\n if (!window.PublicKeyCredential) {\n return 'Browser does not support webauthn';\n }\n try {\n const platformAuthenticatorAvailable = await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n if (!platformAuthenticatorAvailable) {\n return 'Device does not have platform authenticator';\n }\n } catch (e) {\n return 'Unknown error';\n }\n\n return '';\n }\n\n public initialize() {\n if (this.initialized == null) {\n this.initialized = new PasskeySdkLoader({ environment: this.passkeyServiceConfig.environment, analytics: this.analytics })\n .load()\n .then(passkey => {\n this.passkeySdk = passkey;\n });\n }\n\n return this.initialized;\n }\n\n public async captureRiskSignalsEnrollment(): Promise<RiskSignalsEnrollment> {\n await this.initialized;\n if (this.riskSignals) {\n // Cache it so we don't create unnecessary entries in the localstorage by calling captureRiskSignalsEnrollment\n return this.riskSignals;\n }\n\n const result = await this.passkeySdk.captureRiskSignalsEnrollment(this.deviceId);\n if (result && 'type' in result && result.type === PasskeyErrorTypes.RISK_SIGNALS_ERROR) {\n throw new AdyenCheckoutError(SDK_ERROR, result.message);\n }\n this.riskSignals = result as RiskSignalsEnrollment;\n return this.riskSignals;\n }\n\n public async canUseStoredCredential(): Promise<boolean> {\n try {\n await this.captureRiskSignalsAuthentication();\n return true;\n } catch (error) {\n console.warn(\n `The device is not eligible for stored credential authentication: ${error instanceof Error ? error?.message : 'unknown error'}`\n );\n return false;\n }\n }\n\n public async captureRiskSignalsAuthentication(): Promise<RiskSignalsAuthentication> {\n await this.initialized;\n const result = await this.passkeySdk.captureRiskSignalsAuthentication(this.deviceId);\n if (result && 'type' in result && result.type === PasskeyErrorTypes.RISK_SIGNALS_ERROR) {\n throw new AdyenCheckoutError(SDK_ERROR, result.message);\n }\n return result as RiskSignalsAuthentication;\n }\n\n public async createCredentialForEnrollment(registrationOptions: string): Promise<string> {\n await this.initialized;\n const options = this.decodeJsonBase64(registrationOptions, 'Failed to decode registrationOptions');\n const result = await this.passkeySdk.createCredentialForEnrollment(options);\n if (result && 'type' in result && result.type === PasskeyErrorTypes.CREDENTIAL_CREATION_ERROR) {\n throw new AdyenCheckoutError(SDK_ERROR, (result as NavigatorCredentialCreationsError).message);\n }\n return base64.encode(JSON.stringify(result));\n }\n\n public async authenticateWithCredential(authenticationOptions: string): Promise<string> {\n await this.initialized;\n const options = this.decodeJsonBase64(authenticationOptions, 'Failed to decode authenticationOptions');\n const result = await this.passkeySdk.authenticateWithCredential(options);\n if (result && 'type' in result && result.type === PasskeyErrorTypes.CREDENTIAL_RETRIEVAL_ERROR) {\n throw new AdyenCheckoutError(SDK_ERROR, (result as NavigatorCredentialRetrievalError).message);\n }\n return base64.encode(JSON.stringify(result));\n }\n\n private decodeJsonBase64(encoded: string, errorMessage: string) {\n const decoded: DecodeObject = base64.decode(encoded);\n if (!decoded.success) {\n throw new AdyenCheckoutError(SDK_ERROR, errorMessage);\n }\n return JSON.parse(decoded.data);\n }\n}\n"],"names":["PasskeyService","deviceId","this","passkeyServiceConfig","getWebAuthnUnsupportedReason","window","PublicKeyCredential","isUserVerifyingPlatformAuthenticatorAvailable","e","initialize","initialized","PasskeySdkLoader","environment","analytics","load","then","passkey","passkeySdk","captureRiskSignalsEnrollment","riskSignals","result","type","PasskeyErrorTypes","RISK_SIGNALS_ERROR","AdyenCheckoutError","SDK_ERROR","message","canUseStoredCredential","captureRiskSignalsAuthentication","error","console","warn","Error","createCredentialForEnrollment","registrationOptions","options","decodeJsonBase64","CREDENTIAL_CREATION_ERROR","base64","encode","JSON","stringify","authenticateWithCredential","authenticationOptions","CREDENTIAL_RETRIEVAL_ERROR","encoded","errorMessage","decoded","decode","success","parse","data","constructor","configuration","_define_property"],"mappings":"kVAeO,MAAMA,EAaT,YAAIC,GACA,OAAOC,KAAKC,qBAAqBF,QACrC,CAEA,kCAAaG,GACT,IAAKC,OAAOC,oBACR,MAAO,oCAEX,IAEI,UAD6CD,OAAOC,oBAAoBC,gDAEpE,MAAO,6CAEf,CAAE,MAAOC,GACL,MAAO,eACX,CAEA,MAAO,EACX,CAEOC,UAAAA,GASH,OARwB,MAApBP,KAAKQ,cACLR,KAAKQ,YAAc,IAAIC,EAAiB,CAAEC,YAAaV,KAAKC,qBAAqBS,YAAaC,UAAWX,KAAKW,YACzGC,OACAC,KAAKC,IACFd,KAAKe,WAAaD,KAIvBd,KAAKQ,WAChB,CAEA,kCAAaQ,GAET,SADMhB,KAAKQ,YACPR,KAAKiB,YAEL,OAAOjB,KAAKiB,YAGhB,MAAMC,QAAelB,KAAKe,WAAWC,6BAA6BhB,KAAKD,UACvE,GAAImB,GAAU,SAAUA,GAAUA,EAAOC,OAASC,EAAkBC,mBAChE,MAAM,IAAIC,EAAmBC,EAAWL,EAAOM,SAGnD,OADAxB,KAAKiB,YAAcC,EACZlB,KAAKiB,WAChB,CAEA,4BAAaQ,GACT,IAEI,aADMzB,KAAK0B,oCACJ,CACX,CAAE,MAAOC,GAIL,OAHAC,QAAQC,KACJ,oEAAoEF,aAAiBG,MAAQH,GAAOH,QAAU,oBAE3G,CACX,CACJ,CAEA,sCAAaE,SACH1B,KAAKQ,YACX,MAAMU,QAAelB,KAAKe,WAAWW,iCAAiC1B,KAAKD,UAC3E,GAAImB,GAAU,SAAUA,GAAUA,EAAOC,OAASC,EAAkBC,mBAChE,MAAM,IAAIC,EAAmBC,EAAWL,EAAOM,SAEnD,OAAON,CACX,CAEA,mCAAaa,CAA8BC,SACjChC,KAAKQ,YACX,MAAMyB,EAAUjC,KAAKkC,iBAAiBF,EAAqB,wCACrDd,QAAelB,KAAKe,WAAWgB,8BAA8BE,GACnE,GAAIf,GAAU,SAAUA,GAAUA,EAAOC,OAASC,EAAkBe,0BAChE,MAAM,IAAIb,EAAmBC,EAAYL,EAA6CM,SAE1F,OAAOY,EAAOC,OAAOC,KAAKC,UAAUrB,GACxC,CAEA,gCAAasB,CAA2BC,SAC9BzC,KAAKQ,YACX,MAAMyB,EAAUjC,KAAKkC,iBAAiBO,EAAuB,0CACvDvB,QAAelB,KAAKe,WAAWyB,2BAA2BP,GAChE,GAAIf,GAAU,SAAUA,GAAUA,EAAOC,OAASC,EAAkBsB,2BAChE,MAAM,IAAIpB,EAAmBC,EAAYL,EAA6CM,SAE1F,OAAOY,EAAOC,OAAOC,KAAKC,UAAUrB,GACxC,CAEQgB,gBAAAA,CAAiBS,EAAiBC,GACtC,MAAMC,EAAwBT,EAAOU,OAAOH,GAC5C,IAAKE,EAAQE,QACT,MAAM,IAAIzB,EAAmBC,EAAWqB,GAE5C,OAAON,KAAKU,MAAMH,EAAQI,KAC9B,CAnGA,WAAAC,CAAYC,EAAqCxC,GAPjDyC,EAAApD,KAAiBC,4BAAjB,GACAmD,EAAApD,KAAiBW,iBAAjB,GAEAyC,EAAApD,KAAQe,kBAAR,GACAqC,EAAApD,KAAQiB,mBAAR,GACAmC,EAAApD,KAAQQ,mBAAR,GAGIR,KAAKW,UAAYA,EACjBX,KAAKC,qBAAuBkD,CAChC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import n from"./components/PaypalComponent.js";import i from"./defaultProps.js";import{CoreProvider as s}from"../../core/Context/CoreProvider.js";import r from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as
|
|
1
|
+
import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import n from"./components/PaypalComponent.js";import i from"./defaultProps.js";import{CoreProvider as s}from"../../core/Context/CoreProvider.js";import r from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as a}from"./constants.js";import{TxVariants as o}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as h}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{ANALYTICS_RENDERED_STR as p,ANALYTICS_EXPRESS_PAGES_ARRAY as d}from"../../core/Analytics/constants.js";import{AnalyticsInfoEvent as l}from"../../core/Analytics/AnalyticsInfoEvent.js";function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class u extends e{formatProps(t){const e=t.configuration?.merchantId,n=t.configuration?.intent,i=0===t.amount?.value?"tokenize":t.intent||n,s="tokenize"===i||t.vault,r="continue"===t.userAction;return{...t,commit:!r&&t.commit,vault:s,configuration:{intent:i,merchantId:e}}}submitAnalytics(t){if(t instanceof l&&t.type===p){const{isExpress:e,expressPage:n}=this.props,i=n&&d.includes(n);"boolean"==typeof e&&(t.isExpress=e),!0===e&&i&&(t.expressPage=n)}super.submitAnalytics(t)}updatePaymentData(t){t||console.warn("PayPal - Updating payment data with an invalid value"),this.paymentData=t}formatData(){const{isExpress:t,userAction:e}=this.props;return{paymentMethod:{type:u.type,userAction:e,subtype:t?"express":u.subtype}}}get isValid(){return!0}handleResolve(t){if(!this.resolve)return this.handleError(new r("ERROR",a.WRONG_INSTANCE));this.resolve(t)}handleReject(t){if(!this.reject)return this.handleError(new r("ERROR",a.WRONG_INSTANCE));this.reject(new Error(t))}handleSubmit(){return super.submit(),new Promise((t,e)=>{this.resolve=t,this.reject=e})}handleOnShippingAddressChange(t,e){return this.props.onShippingAddressChange(t,e,this)}handleOnShippingOptionsChange(t,e){return this.props.onShippingOptionsChange(t,e,this)}render(){if(!this.props.showPayButton)return null;const{onShippingAddressChange:e,onShippingOptionsChange:i,...a}=this.props;return t(s,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources,analytics:this.analytics},t(n,{ref:t=>{this.componentRef=t},...a,...e&&{onShippingAddressChange:this.handleOnShippingAddressChange},...i&&{onShippingOptionsChange:this.handleOnShippingOptionsChange},onCancel:()=>this.handleError(new r("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:t=>{this.handleError(new r("ERROR",t.toString(),{cause:t}))},onScriptLoadFailure:t=>this.handleError(t),onSubmit:this.handleSubmit}))}constructor(t,e){super(t,e),c(this,"paymentData",null),c(this,"resolve",null),c(this,"reject",null),c(this,"submit",()=>{this.handleError(new r("IMPLEMENTATION_ERROR",a.SUBMIT_NOT_SUPPORTED))}),c(this,"handleAction",t=>this.updateWithAction(t)),c(this,"updateWithAction",t=>{if(t.paymentMethodType!==this.type)throw new Error("Invalid Action");return t.paymentData&&(this.paymentData=t.paymentData),t.sdkData&&t.sdkData.token?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:t}),this.handleResolve(t.sdkData.token)):this.handleReject(a.NO_TOKEN_PROVIDED),null}),c(this,"handleOnApprove",(t,e)=>{const{onAuthorized:n}=this.props,i={data:{details:t,paymentData:this.paymentData}};if(n)return e.order.get().then(t=>{const e=h(t?.payer),i=h(t?.purchase_units?.[0].shipping,!0);return this.setState({authorizedEvent:t,...e&&{billingAddress:e},...i&&{deliveryAddress:i}}),new Promise((s,r)=>n({authorizedEvent:t,...e&&{billingAddress:e},...i&&{deliveryAddress:i}},{resolve:s,reject:r}))}).then(()=>this.handleAdditionalDetails(i)).catch(t=>this.handleError(new r("ERROR","Something went wrong while parsing PayPal Order",{cause:t})));this.handleAdditionalDetails(i)}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this)}}c(u,"type",o.paypal),c(u,"subtype","sdk"),c(u,"defaultProps",i);export{u as default};
|
|
2
2
|
//# sourceMappingURL=Paypal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paypal.js","sources":["../../../../src/components/PayPal/Paypal.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PaypalComponent from './components/PaypalComponent';\nimport defaultProps from './defaultProps';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { ERRORS } from './constants';\nimport { TxVariants } from '../tx-variants';\nimport { formatPaypalOrderContactToAdyenFormat } from './utils/format-paypal-order-contact-to-adyen-format';\n\nimport type { ICore } from '../../core/types';\nimport type { PaymentAction } from '../../types/global-types';\nimport type { Intent, PayPalConfiguration } from './types';\n\nimport './Paypal.scss';\nimport { ANALYTICS_EXPRESS_PAGES_ARRAY, ANALYTICS_RENDERED_STR } from '../../core/Analytics/constants';\nimport { AnalyticsInfoEvent } from '../../core/Analytics/AnalyticsInfoEvent';\nimport { AnalyticsEvent } from '../../core/Analytics/AnalyticsEvent';\n\nclass PaypalElement extends UIElement<PayPalConfiguration> {\n public static type = TxVariants.paypal;\n public static subtype = 'sdk';\n\n public paymentData: string = null;\n\n private resolve = null;\n private reject = null;\n\n protected static defaultProps = defaultProps;\n\n constructor(checkout: ICore, props?: PayPalConfiguration) {\n super(checkout, props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnShippingAddressChange = this.handleOnShippingAddressChange.bind(this);\n this.handleOnShippingOptionsChange = this.handleOnShippingOptionsChange.bind(this);\n }\n\n formatProps(props: PayPalConfiguration): PayPalConfiguration {\n const merchantId = props.configuration?.merchantId;\n const intentFromConfig = props.configuration?.intent;\n const isZeroAuth = props.amount?.value === 0;\n const intent: Intent = isZeroAuth ? 'tokenize' : props.intent || intentFromConfig;\n const vault = intent === 'tokenize' || props.vault;\n\n const displayContinueToReviewPageButton = props.userAction === 'continue';\n\n return {\n ...props,\n commit: displayContinueToReviewPageButton ? false : props.commit,\n vault,\n configuration: {\n intent,\n merchantId\n }\n };\n }\n\n protected submitAnalytics(analyticsObj: AnalyticsEvent) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n if (analyticsObj instanceof AnalyticsInfoEvent && analyticsObj.type === ANALYTICS_RENDERED_STR) {\n const { isExpress, expressPage } = this.props;\n const hasExpressPage = expressPage && ANALYTICS_EXPRESS_PAGES_ARRAY.includes(expressPage);\n\n if (typeof isExpress === 'boolean') {\n analyticsObj.isExpress = isExpress;\n }\n\n if (isExpress === true && hasExpressPage) {\n analyticsObj.expressPage = expressPage; // We only care about the expressPage value if isExpress is true\n }\n }\n\n super.submitAnalytics(analyticsObj);\n }\n\n public submit = () => {\n this.handleError(new AdyenCheckoutError('IMPLEMENTATION_ERROR', ERRORS.SUBMIT_NOT_SUPPORTED));\n };\n\n /**\n * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount\n * @param paymentData - Payment data value\n */\n public updatePaymentData(paymentData: string): void {\n if (!paymentData) console.warn('PayPal - Updating payment data with an invalid value');\n this.paymentData = paymentData;\n }\n\n /**\n * Formats the component data output\n */\n protected formatData() {\n const { isExpress, userAction } = this.props;\n\n return {\n paymentMethod: {\n type: PaypalElement.type,\n userAction,\n subtype: isExpress ? 'express' : PaypalElement.subtype\n }\n };\n }\n\n public handleAction = (action: PaymentAction) => {\n return this.updateWithAction(action);\n };\n\n public updateWithAction = (action: PaymentAction) => {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n\n if (action.paymentData) {\n this.paymentData = action.paymentData;\n }\n\n if (action.sdkData && action.sdkData.token) {\n this.onActionHandled({ componentType: this.type, actionDescription: 'sdk-loaded', originalAction: action });\n this.handleResolve(action.sdkData.token);\n } else {\n this.handleReject(ERRORS.NO_TOKEN_PROVIDED);\n }\n\n return null;\n };\n\n /**\n * Dropin Validation\n *\n * @remarks\n * Paypal does not require any specific Dropin validation\n */\n get isValid() {\n return true;\n }\n\n private handleOnApprove = (data: any, actions: any): Promise<void> | void => {\n const { onAuthorized } = this.props;\n const state = { data: { details: data, paymentData: this.paymentData } };\n\n if (!onAuthorized) {\n this.handleAdditionalDetails(state);\n return;\n }\n\n return actions.order\n .get()\n .then((paypalOrder: any) => {\n const billingAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.payer);\n const deliveryAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.purchase_units?.[0].shipping, true);\n\n this.setState({\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error => this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong while parsing PayPal Order', { cause: error })));\n };\n\n handleResolve(token: string) {\n if (!this.resolve) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.resolve(token);\n }\n\n handleReject(errorMessage: string) {\n if (!this.reject) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.reject(new Error(errorMessage));\n }\n\n private handleSubmit(): Promise<void> {\n super.submit();\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n /**\n * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingAddressChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingAddressChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingOptionsChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingOptionsChange(data, actions, this);\n }\n\n render() {\n if (!this.props.showPayButton) return null;\n\n const { onShippingAddressChange, onShippingOptionsChange, ...rest } = this.props;\n\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <PaypalComponent\n ref={ref => {\n this.componentRef = ref;\n }}\n {...rest}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onChange={this.setState}\n onApprove={this.handleOnApprove}\n onError={error => {\n this.handleError(new AdyenCheckoutError('ERROR', error.toString(), { cause: error }));\n }}\n onScriptLoadFailure={error => this.handleError(error)}\n onSubmit={this.handleSubmit}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default PaypalElement;\n"],"names":["PaypalElement","UIElement","formatProps","props","merchantId","configuration","intentFromConfig","intent","amount","value","vault","displayContinueToReviewPageButton","userAction","commit","submitAnalytics","analyticsObj","AnalyticsInfoEvent","type","ANALYTICS_RENDERED_STR","isExpress","expressPage","this","hasExpressPage","ANALYTICS_EXPRESS_PAGES_ARRAY","includes","super","updatePaymentData","paymentData","console","warn","formatData","paymentMethod","subtype","isValid","handleResolve","token","resolve","handleError","AdyenCheckoutError","ERRORS","WRONG_INSTANCE","handleReject","errorMessage","reject","Error","handleSubmit","submit","Promise","handleOnShippingAddressChange","data","actions","onShippingAddressChange","handleOnShippingOptionsChange","onShippingOptionsChange","render","showPayButton","rest","h","CoreProvider","i18n","loadingContext","resources","PaypalComponent","ref","componentRef","onCancel","onChange","setState","onApprove","handleOnApprove","onError","error","toString","cause","onScriptLoadFailure","onSubmit","constructor","checkout","_define_property","SUBMIT_NOT_SUPPORTED","handleAction","action","updateWithAction","paymentMethodType","sdkData","onActionHandled","componentType","actionDescription","originalAction","NO_TOKEN_PROVIDED","onAuthorized","state","details","order","get","then","paypalOrder","billingAddress","formatPaypalOrderContactToAdyenFormat","payer","deliveryAddress","purchase_units","shipping","authorizedEvent","handleAdditionalDetails","catch","bind","TxVariants","paypal","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Paypal.js","sources":["../../../../src/components/PayPal/Paypal.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PaypalComponent from './components/PaypalComponent';\nimport defaultProps from './defaultProps';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { ERRORS } from './constants';\nimport { TxVariants } from '../tx-variants';\nimport { formatPaypalOrderContactToAdyenFormat } from './utils/format-paypal-order-contact-to-adyen-format';\n\nimport type { ICore } from '../../core/types';\nimport type { PaymentAction } from '../../types/global-types';\nimport type { Intent, PayPalConfiguration } from './types';\n\nimport './Paypal.scss';\nimport { ANALYTICS_EXPRESS_PAGES_ARRAY, ANALYTICS_RENDERED_STR } from '../../core/Analytics/constants';\nimport { AnalyticsInfoEvent } from '../../core/Analytics/AnalyticsInfoEvent';\nimport { AnalyticsEvent } from '../../core/Analytics/AnalyticsEvent';\n\nclass PaypalElement extends UIElement<PayPalConfiguration> {\n public static type = TxVariants.paypal;\n public static subtype = 'sdk';\n\n public paymentData: string = null;\n\n private resolve = null;\n private reject = null;\n\n protected static defaultProps = defaultProps;\n\n constructor(checkout: ICore, props?: PayPalConfiguration) {\n super(checkout, props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnShippingAddressChange = this.handleOnShippingAddressChange.bind(this);\n this.handleOnShippingOptionsChange = this.handleOnShippingOptionsChange.bind(this);\n }\n\n formatProps(props: PayPalConfiguration): PayPalConfiguration {\n const merchantId = props.configuration?.merchantId;\n const intentFromConfig = props.configuration?.intent;\n const isZeroAuth = props.amount?.value === 0;\n const intent: Intent = isZeroAuth ? 'tokenize' : props.intent || intentFromConfig;\n const vault = intent === 'tokenize' || props.vault;\n\n const displayContinueToReviewPageButton = props.userAction === 'continue';\n\n return {\n ...props,\n commit: displayContinueToReviewPageButton ? false : props.commit,\n vault,\n configuration: {\n intent,\n merchantId\n }\n };\n }\n\n protected submitAnalytics(analyticsObj: AnalyticsEvent) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n if (analyticsObj instanceof AnalyticsInfoEvent && analyticsObj.type === ANALYTICS_RENDERED_STR) {\n const { isExpress, expressPage } = this.props;\n const hasExpressPage = expressPage && ANALYTICS_EXPRESS_PAGES_ARRAY.includes(expressPage);\n\n if (typeof isExpress === 'boolean') {\n analyticsObj.isExpress = isExpress;\n }\n\n if (isExpress === true && hasExpressPage) {\n analyticsObj.expressPage = expressPage; // We only care about the expressPage value if isExpress is true\n }\n }\n\n super.submitAnalytics(analyticsObj);\n }\n\n public submit = () => {\n this.handleError(new AdyenCheckoutError('IMPLEMENTATION_ERROR', ERRORS.SUBMIT_NOT_SUPPORTED));\n };\n\n /**\n * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount\n * @param paymentData - Payment data value\n */\n public updatePaymentData(paymentData: string): void {\n if (!paymentData) console.warn('PayPal - Updating payment data with an invalid value');\n this.paymentData = paymentData;\n }\n\n /**\n * Formats the component data output\n */\n protected formatData() {\n const { isExpress, userAction } = this.props;\n\n return {\n paymentMethod: {\n type: PaypalElement.type,\n userAction,\n subtype: isExpress ? 'express' : PaypalElement.subtype\n }\n };\n }\n\n public handleAction = (action: PaymentAction) => {\n return this.updateWithAction(action);\n };\n\n public updateWithAction = (action: PaymentAction) => {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n\n if (action.paymentData) {\n this.paymentData = action.paymentData;\n }\n\n if (action.sdkData && action.sdkData.token) {\n this.onActionHandled({ componentType: this.type, actionDescription: 'sdk-loaded', originalAction: action });\n this.handleResolve(action.sdkData.token);\n } else {\n this.handleReject(ERRORS.NO_TOKEN_PROVIDED);\n }\n\n return null;\n };\n\n /**\n * Dropin Validation\n *\n * @remarks\n * Paypal does not require any specific Dropin validation\n */\n get isValid() {\n return true;\n }\n\n private handleOnApprove = (data: any, actions: any): Promise<void> | void => {\n const { onAuthorized } = this.props;\n const state = { data: { details: data, paymentData: this.paymentData } };\n\n if (!onAuthorized) {\n this.handleAdditionalDetails(state);\n return;\n }\n\n return actions.order\n .get()\n .then((paypalOrder: any) => {\n const billingAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.payer);\n const deliveryAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.purchase_units?.[0].shipping, true);\n\n this.setState({\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error => this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong while parsing PayPal Order', { cause: error })));\n };\n\n handleResolve(token: string) {\n if (!this.resolve) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.resolve(token);\n }\n\n handleReject(errorMessage: string) {\n if (!this.reject) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.reject(new Error(errorMessage));\n }\n\n private handleSubmit(): Promise<void> {\n super.submit();\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n /**\n * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingAddressChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingAddressChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingOptionsChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingOptionsChange(data, actions, this);\n }\n\n render() {\n if (!this.props.showPayButton) return null;\n\n const { onShippingAddressChange, onShippingOptionsChange, ...rest } = this.props;\n\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources} analytics={this.analytics}>\n <PaypalComponent\n ref={ref => {\n this.componentRef = ref;\n }}\n {...rest}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onChange={this.setState}\n onApprove={this.handleOnApprove}\n onError={error => {\n this.handleError(new AdyenCheckoutError('ERROR', error.toString(), { cause: error }));\n }}\n onScriptLoadFailure={error => this.handleError(error)}\n onSubmit={this.handleSubmit}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default PaypalElement;\n"],"names":["PaypalElement","UIElement","formatProps","props","merchantId","configuration","intentFromConfig","intent","amount","value","vault","displayContinueToReviewPageButton","userAction","commit","submitAnalytics","analyticsObj","AnalyticsInfoEvent","type","ANALYTICS_RENDERED_STR","isExpress","expressPage","this","hasExpressPage","ANALYTICS_EXPRESS_PAGES_ARRAY","includes","super","updatePaymentData","paymentData","console","warn","formatData","paymentMethod","subtype","isValid","handleResolve","token","resolve","handleError","AdyenCheckoutError","ERRORS","WRONG_INSTANCE","handleReject","errorMessage","reject","Error","handleSubmit","submit","Promise","handleOnShippingAddressChange","data","actions","onShippingAddressChange","handleOnShippingOptionsChange","onShippingOptionsChange","render","showPayButton","rest","h","CoreProvider","i18n","loadingContext","resources","analytics","PaypalComponent","ref","componentRef","onCancel","onChange","setState","onApprove","handleOnApprove","onError","error","toString","cause","onScriptLoadFailure","onSubmit","constructor","checkout","_define_property","SUBMIT_NOT_SUPPORTED","handleAction","action","updateWithAction","paymentMethodType","sdkData","onActionHandled","componentType","actionDescription","originalAction","NO_TOKEN_PROVIDED","onAuthorized","state","details","order","get","then","paypalOrder","billingAddress","formatPaypalOrderContactToAdyenFormat","payer","deliveryAddress","purchase_units","shipping","authorizedEvent","handleAdditionalDetails","catch","bind","TxVariants","paypal","defaultProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\nimport Spinner from '../../internal/Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\n\nimport type { PayPalButtonsProps } from './types';\nimport type { FundingSource } from '../types';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: PayPalButtonsProps) {\n const { i18n } = useCoreContext();\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: FundingSource, buttonRef) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef.Buttons(configuration);\n\n if (button.isEligible()) {\n button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef.FUNDING;\n createButton(PAYPAL, paypalButtonRef);\n\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n const isProcessingPaymentWithoutReviewPage = props.commit === true;\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\">\n <Spinner size=\"medium\" inline />\n {isProcessingPaymentWithoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","props","i18n","useCoreContext","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","render","current","useEffect","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","isProcessingPaymentWithoutReviewPage","commit","h","div","className","classnames","ref","Spinner","size","inline","get"],"mappings":"wXAUe,SAASA,GAAcC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,wBACPA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,KACGC,IAEH,MAAMC,KAAEA,GAASC,IACXC,EAA6C,aAAhCH,EAAMI,eAAeC,OAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8BC,KAChD,MAAMT,EAAgB,IACdD,GAAc,CAAEW,uBAAwBlB,OACvCO,GAAc,CAAEY,YAAanB,OAC7BO,GAAgC,UAAlBS,GAA6BlB,GAA2B,CAAEA,+BACxES,GAAgC,UAAlBS,GAA6BjB,GAA2B,CAAEA,2BAC7EiB,gBACAb,MAAOiB,EAASJ,EAAeb,GAC/BV,SACAE,UACAC,WACAC,UACAH,aAGE2B,EAASnB,EAAUoB,QAAQd,GAE7Ba,EAAOE,cACPF,EAAOG,OAAOP,EAAUQ,UAIhCC,EAAU,KACN,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU5B,EAAU6B,
|
|
1
|
+
{"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\nimport Spinner from '../../internal/Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\n\nimport type { PayPalButtonsProps } from './types';\nimport type { FundingSource } from '../types';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: PayPalButtonsProps) {\n const { i18n } = useCoreContext();\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: FundingSource, buttonRef: RefObject<HTMLDivElement>) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef.Buttons(configuration);\n\n if (button.isEligible()) {\n button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef.FUNDING;\n\n createButton(PAYPAL, paypalButtonRef);\n\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n const isProcessingPaymentWithoutReviewPage = props.commit === true;\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\">\n <Spinner size=\"medium\" inline />\n {isProcessingPaymentWithoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","props","i18n","useCoreContext","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","render","current","useEffect","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","isProcessingPaymentWithoutReviewPage","commit","h","div","className","classnames","ref","Spinner","size","inline","get"],"mappings":"wXAUe,SAASA,GAAcC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,wBACPA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,KACGC,IAEH,MAAMC,KAAEA,GAASC,IACXC,EAA6C,aAAhCH,EAAMI,eAAeC,OAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8BC,KAChD,MAAMT,EAAgB,IACdD,GAAc,CAAEW,uBAAwBlB,OACvCO,GAAc,CAAEY,YAAanB,OAC7BO,GAAgC,UAAlBS,GAA6BlB,GAA2B,CAAEA,+BACxES,GAAgC,UAAlBS,GAA6BjB,GAA2B,CAAEA,2BAC7EiB,gBACAb,MAAOiB,EAASJ,EAAeb,GAC/BV,SACAE,UACAC,WACAC,UACAH,aAGE2B,EAASnB,EAAUoB,QAAQd,GAE7Ba,EAAOE,cACPF,EAAOG,OAAOP,EAAUQ,UAIhCC,EAAU,KACN,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU5B,EAAU6B,QAEtDhB,EAAaY,EAAQjB,GAEhBN,EAAM4B,yBAAyBjB,EAAaa,EAAQhB,GACpDR,EAAM6B,2BAA2BlB,EAAac,EAAUhB,GACxDT,EAAM8B,wBAAwBnB,EAAae,EAAOhB,IACxD,IAEH,MAAMqB,GAAwD,IAAjB/B,EAAMgC,OAEnD,OACIC,EAACC,MAAAA,CAAIC,UAAWC,EAAW,kCAAmC,CAAE,oCAAqCvC,KACjGoC,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK/B,IAC5F2B,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK7B,IAC5FyB,EAACC,MAAAA,CAAIC,UAAU,2EAA2EE,IAAK5B,IAC/FwB,EAACC,MAAAA,CAAIC,UAAU,uEAAuEE,IAAK3B,IAE1Fb,GACGoC,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACC,MAAAA,CAAIC,UAAU,6EACXF,EAACK,EAAAA,CAAQC,KAAK,SAASC,QAAAA,IACtBT,GAAwC9B,EAAKwC,IAAI,8BAM1E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as
|
|
1
|
+
import{createElement as a}from"../../../external/preact/dist/preact.js";import{useState as e,useCallback as t,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import o from"./PaypalButtons.js";import s from"../../internal/Spinner/Spinner.js";import{getPaypalUrl as r}from"../utils/get-paypal-url.js";import p from"../../../utils/Script.js";import c from"../../../core/Analytics/useAnalytics.js";function i({onApprove:i,onCancel:l,onChange:u,onError:m,onSubmit:d,onScriptLoadFailure:y,...f}){const[_,h]=e("pending"),{analytics:g}=c();this.setStatus=h;const N=t((a,e)=>{h("processing"),i(a,e)},[i]),S=()=>{h("ready")},j=a=>{y(a)};return n(()=>{const a=r(f),e={...f.cspNonce&&{nonce:f.cspNonce}},t={...f.cspNonce&&{cspNonce:f.cspNonce}},n=new p({src:a,component:"paypal",attributes:e,dataAttributes:t,analytics:g});return n.load().then(S).catch(j),()=>{n.remove()}},[]),"pending"===_?a("div",{className:"adyen-checkout__paypal","aria-live":"polite","aria-busy":"true"},a("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending","data-testid":"paypal-loader"},a(s,null))):a("div",{className:"adyen-checkout__paypal"},a(o,{...f,onCancel:l,onChange:u,onError:m,onSubmit:d,onApprove:N,isProcessingPayment:"processing"===_,paypalRef:window.paypal}))}export{i as default};
|
|
2
2
|
//# sourceMappingURL=PaypalComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaypalComponent.js","sources":["../../../../../src/components/PayPal/components/PaypalComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useCallback } from 'preact/hooks';\nimport PaypalButtons from './PaypalButtons';\nimport Spinner from '../../internal/Spinner';\nimport { getPaypalUrl } from '../utils/get-paypal-url';\nimport Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport type { PayPalComponentProps } from './types';\n\nexport default function PaypalComponent({ onApprove, onCancel, onChange, onError, onSubmit, onScriptLoadFailure, ...props }: PayPalComponentProps) {\n const [status, setStatus] = useState('pending');\n\n this.setStatus = setStatus;\n\n const handleOnApprove = useCallback(\n (data: any, actions: any) => {\n setStatus('processing');\n onApprove(data, actions);\n },\n [onApprove]\n );\n\n const handlePaypalLoad = () => {\n setStatus('ready');\n };\n\n const handlePaypalLoadFailure = (error: AdyenCheckoutError) => {\n onScriptLoadFailure(error);\n };\n\n useEffect(() => {\n const src = getPaypalUrl(props);\n\n const attributes = { ...(props.cspNonce && { nonce: props.cspNonce }) },\n dataAttributes = { ...(props.cspNonce && { cspNonce: props.cspNonce }) };\n\n const script = new Script(src
|
|
1
|
+
{"version":3,"file":"PaypalComponent.js","sources":["../../../../../src/components/PayPal/components/PaypalComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useCallback } from 'preact/hooks';\nimport PaypalButtons from './PaypalButtons';\nimport Spinner from '../../internal/Spinner';\nimport { getPaypalUrl } from '../utils/get-paypal-url';\nimport Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport type { PayPalComponentProps } from './types';\nimport useAnalytics from '../../../core/Analytics/useAnalytics';\n\nexport default function PaypalComponent({ onApprove, onCancel, onChange, onError, onSubmit, onScriptLoadFailure, ...props }: PayPalComponentProps) {\n const [status, setStatus] = useState('pending');\n const { analytics } = useAnalytics();\n\n this.setStatus = setStatus;\n\n const handleOnApprove = useCallback(\n (data: any, actions: any) => {\n setStatus('processing');\n onApprove(data, actions);\n },\n [onApprove]\n );\n\n const handlePaypalLoad = () => {\n setStatus('ready');\n };\n\n const handlePaypalLoadFailure = (error: AdyenCheckoutError) => {\n onScriptLoadFailure(error);\n };\n\n useEffect(() => {\n const src = getPaypalUrl(props);\n\n const attributes = { ...(props.cspNonce && { nonce: props.cspNonce }) },\n dataAttributes = { ...(props.cspNonce && { cspNonce: props.cspNonce }) };\n\n const script = new Script({\n src,\n component: 'paypal',\n attributes,\n dataAttributes,\n analytics\n });\n\n script.load().then(handlePaypalLoad).catch(handlePaypalLoadFailure);\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__paypal\" aria-live=\"polite\" aria-busy=\"true\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending\" data-testid={'paypal-loader'}>\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__paypal\">\n <PaypalButtons\n {...props}\n onCancel={onCancel}\n onChange={onChange}\n onError={onError}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n isProcessingPayment={status === 'processing'}\n paypalRef={window.paypal}\n />\n </div>\n );\n}\n"],"names":["PaypalComponent","onApprove","onCancel","onChange","onError","onSubmit","onScriptLoadFailure","props","status","setStatus","useState","analytics","useAnalytics","this","handleOnApprove","useCallback","data","actions","handlePaypalLoad","handlePaypalLoadFailure","error","useEffect","src","getPaypalUrl","attributes","cspNonce","nonce","dataAttributes","script","Script","component","load","then","catch","remove","h","div","className","aria-live","aria-busy","data-testid","Spinner","PaypalButtons","isProcessingPayment","paypalRef","window","paypal"],"mappings":"4ZAUe,SAASA,GAAgBC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,QAAEA,EAAOC,SAAEA,EAAQC,oBAAEA,KAAwBC,IAChH,MAAOC,EAAQC,GAAaC,EAAS,YAC/BC,UAAEA,GAAcC,IAEtBC,KAAKJ,UAAYA,EAEjB,MAAMK,EAAkBC,EACpB,CAACC,EAAWC,KACRR,EAAU,cACVR,EAAUe,EAAMC,IAEpB,CAAChB,IAGCiB,EAAmB,KACrBT,EAAU,UAGRU,EAA2BC,IAC7Bd,EAAoBc,IAwBxB,OArBAC,EAAU,KACN,MAAMC,EAAMC,EAAahB,GAEnBiB,EAAa,IAAMjB,EAAMkB,UAAY,CAAEC,MAAOnB,EAAMkB,WACtDE,EAAiB,IAAMpB,EAAMkB,UAAY,CAAEA,SAAUlB,EAAMkB,WAEzDG,EAAS,IAAIC,EAAO,CACtBP,MACAQ,UAAW,SACXN,aACAG,iBACAhB,cAKJ,OAFAiB,EAAOG,OAAOC,KAAKd,GAAkBe,MAAMd,GAEpC,KACHS,EAAOM,WAEZ,IAEY,YAAX1B,EAEI2B,EAACC,MAAAA,CAAIC,UAAU,yBAAyBC,YAAU,SAASC,YAAU,QACjEJ,EAACC,MAAAA,CAAIC,UAAU,yEAAyEG,cAAa,iBACjGL,EAACM,EAAAA,QAObN,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACO,EAAAA,IACOnC,EACJL,SAAUA,EACVC,SAAUA,EACVC,QAASA,EACTC,SAAUA,EACVJ,UAAWa,EACX6B,oBAAgC,eAAXnC,EACrBoC,UAAWC,OAAOC,SAIlC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{resolveEnvironments as t}from"../../core/Environment/Environment.js";import e from"./services/request-fastlane-token.js";import{convertAdyenLocaleToFastlaneLocale as n}from"./utils/convert-locale.js";import a from"../../utils/Script.js";import i from"../../core/Errors/AdyenCheckoutError.js";function
|
|
1
|
+
import{resolveEnvironments as t}from"../../core/Environment/Environment.js";import e from"./services/request-fastlane-token.js";import{convertAdyenLocaleToFastlaneLocale as n}from"./utils/convert-locale.js";import a from"../../utils/Script.js";import i from"../../core/Errors/AdyenCheckoutError.js";import s from"../../core/Analytics/Analytics.js";import{InfoEventType as o,AnalyticsInfoEvent as r}from"../../core/Analytics/AnalyticsInfoEvent.js";function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class l{async initialize(){this.analytics.setUp({checkoutStage:"precheckout"});const t=await this.requestClientToken();return await this.fetchSdk(t.value,t.clientId),await this.initializeFastlaneInstance(),this.trackEvent(o.Initialized),this}destroy(){document.removeEventListener("visibilitychange",this.handlePageVisibilityChanges),this.analytics.flush()}async authenticate(t){if(!this.fastlaneSdk)throw new i("IMPLEMENTATION_ERROR","authenticate(): Fastlane SDK is not initialized");this.trackEvent(o.LookupStarted);try{const{customerContextId:e}=await this.fastlaneSdk.identity.lookupCustomerByEmail(t);if(e){this.latestShopperDetails={email:t,customerId:e},this.trackEvent(o.OtpStarted);const n=await this.fastlaneSdk.identity.triggerAuthenticationFlow(e);return this.trackEvent(this.getOtpAnalyticsSubtype(n.authenticationState)),n}return this.trackEvent(o.LookupUserNotFound),{authenticationState:"not_found",profileData:void 0}}catch(t){throw new i("ERROR","Fastlane SDK: An error occurred during the authentication flow.",{cause:t})}}async getComponentConfiguration(t){if(!t)throw new i("IMPLEMENTATION_ERROR","FastlaneSDK: you must pass the authentication result to get the component configuration");this.analytics.flush();const e="succeeded"===t.authenticationState,n=!!t.profileData?.card,a=!!this.latestShopperDetails?.email;return e&&n&&a?this.createFastlaneComponentConfiguration(t):this.createCardComponentConfiguration()}async showShippingAddressSelector(){if(!this.fastlaneSdk)throw new i("IMPLEMENTATION_ERROR","showShippingAddressSelector(): Fastlane SDK is not initialized");this.trackEvent(o.AddressSelectorClicked);try{const t=await this.fastlaneSdk.profile.showShippingAddressSelector();return t.selectionChanged&&this.trackEvent(o.AddressChanged),this.trackEvent(o.AddressSelectorClosed),t}catch(t){throw new i("ERROR","Fastlane SDK: An error occurred when showing the shipping address selector",{cause:t})}}async mountWatermark(t,e={includeAdditionalInfo:!0}){if(!this.fastlaneSdk)throw new i("IMPLEMENTATION_ERROR","mountWatermark(): Fastlane SDK is not initialized");try{(await this.fastlaneSdk.FastlaneWatermarkComponent(e)).render(t)}catch(t){throw new i("ERROR","Fastlane SDK: An error occurred when rendering the watermark",{cause:t})}}requestClientToken(){return e(this.checkoutShopperURL,this.clientKey)}async fetchSdk(t,e){const n=new URL("https://www.paypal.com/sdk/js");n.searchParams.set("client-id",e),n.searchParams.set("components","buttons,fastlane");const i=new a({src:n.href,component:"fastlane",dataAttributes:{sdkClientToken:t},analytics:this.analytics});await i.load()}async fetchSessionIdAsync(){try{const{sessionId:t}=await this.fastlaneSdk.identity.getSession();this.fastlaneSessionId=t}catch(t){console.warn("Fastlane SDK: Failed to fetch session ID",t)}}async fetchConsentDetails(){try{const t=await this.fastlaneSdk.ConsentComponent();return await t.getRenderState()}catch(t){throw new i("ERROR","fetchConsentDetails(): failed to fetch consent details",{cause:t})}}async initializeFastlaneInstance(){try{this.fastlaneSdk=await window.paypal.Fastlane({intendedExperience:"externalProcessorCustomConsent",...this.forceConsentDetails&&{metadata:{geoLocOverride:"US"}}}),this.fastlaneSdk.setLocale(this.fastlaneLocale),this.fetchSessionIdAsync()}catch(t){throw new i("ERROR","Fastlane SDK: Failed to initialize fastlane using the window.paypal.Fastlane constructor",{cause:t})}}createFastlaneComponentConfiguration(t){return{paymentType:"fastlane",configuration:{fastlaneSessionId:this.fastlaneSessionId,email:this.latestShopperDetails.email,tokenId:t.profileData.card.id,lastFour:t.profileData.card.paymentSource.card.lastDigits,brand:t.profileData.card.paymentSource.card.brand.toLowerCase()}}}async createCardComponentConfiguration(){const t=await this.fetchConsentDetails(),e={};return t&&(e.fastlaneConfiguration={fastlaneSessionId:this.fastlaneSessionId,...t}),{paymentType:"card",configuration:e}}trackEvent(t){const e=new r({type:t,component:"fastlane"});this.analytics.sendAnalytics(e)}getOtpAnalyticsSubtype(t){switch(t){case"succeeded":return o.OtpSucceeded;case"canceled":return o.OtpCanceled;case"failed":default:return o.OtpFailed;case"not_found":return o.LookupUserNotFound}}constructor(e){if(c(this,"clientKey",void 0),c(this,"checkoutShopperURL",void 0),c(this,"fastlaneLocale",void 0),c(this,"forceConsentDetails",void 0),c(this,"analytics",void 0),c(this,"fastlaneSdk",void 0),c(this,"latestShopperDetails",void 0),c(this,"fastlaneSessionId",void 0),c(this,"handlePageVisibilityChanges",()=>{"hidden"===document.visibilityState&&this.analytics.flush()}),!e?.environment)throw new i("IMPLEMENTATION_ERROR","FastlaneSDK: 'environment' property is required");if(!e?.clientKey)throw new i("IMPLEMENTATION_ERROR","FastlaneSDK: 'clientKey' property is required");e.forceConsentDetails&&e.environment.includes("live")&&console.warn("Fastlane SDK: 'forceConsentDetails' should not be used on 'live' environment");const{apiUrl:a,analyticsUrl:o}=t(e.environment);this.checkoutShopperURL=a,this.clientKey=e.clientKey,this.forceConsentDetails=e.forceConsentDetails||!1,this.fastlaneLocale=n(e.locale||"en-US"),this.analytics=s({analytics:e.analytics,locale:e.locale||"en-US",analyticsContext:o,clientKey:this.clientKey}),document.addEventListener("visibilitychange",this.handlePageVisibilityChanges)}}export{l as default};
|
|
2
2
|
//# sourceMappingURL=FastlaneSDK.js.map
|