@adyen/adyen-web 6.4.0 → 6.5.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 +16 -5
- package/dist/cjs/adyen.css +7 -3
- 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 +27 -19
- package/dist/es/adyen.css +7 -3
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/ANCV/ANCV.js +1 -1
- package/dist/es/components/ANCV/ANCV.js.map +1 -1
- package/dist/es/components/Ach/Ach.js +1 -1
- package/dist/es/components/Ach/Ach.js.map +1 -1
- package/dist/es/components/Address/Address.js +1 -1
- package/dist/es/components/Address/Address.js.map +1 -1
- package/dist/es/components/Affirm/Affirm.js +1 -1
- package/dist/es/components/Affirm/Affirm.js.map +1 -1
- package/dist/es/components/AfterPay/AfterPay.js +1 -1
- package/dist/es/components/AfterPay/AfterPay.js.map +1 -1
- package/dist/es/components/AfterPay/AfterPayB2B.js +1 -1
- package/dist/es/components/AfterPay/AfterPayB2B.js.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/ApplePay/ApplePay.js +1 -1
- package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
- package/dist/es/components/ApplePay/ApplePayService.js +1 -1
- package/dist/es/components/ApplePay/ApplePayService.js.map +1 -1
- package/dist/es/components/ApplePay/components/ApplePayButton.js +1 -1
- package/dist/es/components/ApplePay/components/ApplePayButton.js.map +1 -1
- package/dist/es/components/Atome/Atome.js +1 -1
- package/dist/es/components/Atome/Atome.js.map +1 -1
- package/dist/es/components/BacsDD/BacsDD.js +1 -1
- package/dist/es/components/BacsDD/BacsDD.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/BcmcMobile/BcmcMobile.js +1 -1
- package/dist/es/components/BcmcMobile/BcmcMobile.js.map +1 -1
- package/dist/es/components/BillDesk/BillDeskOnline.js +1 -1
- package/dist/es/components/BillDesk/BillDeskOnline.js.map +1 -1
- package/dist/es/components/BillDesk/BillDeskWallet.js +1 -1
- package/dist/es/components/BillDesk/BillDeskWallet.js.map +1 -1
- package/dist/es/components/Blik/Blik.js +1 -1
- package/dist/es/components/Blik/Blik.js.map +1 -1
- package/dist/es/components/Boleto/Boleto.js +1 -1
- package/dist/es/components/Boleto/Boleto.js.map +1 -1
- package/dist/es/components/Card/Bancontact.js +1 -1
- package/dist/es/components/Card/Bancontact.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/CashAppPay/CashAppPay.js +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es/components/ClickToPay/ClickToPay.js +1 -1
- package/dist/es/components/ClickToPay/ClickToPay.js.map +1 -1
- package/dist/es/components/CustomCard/CustomCard.js +1 -1
- package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
- package/dist/es/components/Doku/Doku.js +1 -1
- package/dist/es/components/Doku/Doku.js.map +1 -1
- package/dist/es/components/Donation/Donation.js +1 -1
- package/dist/es/components/Donation/Donation.js.map +1 -1
- package/dist/es/components/Dotpay/index.js +1 -1
- package/dist/es/components/Dotpay/index.js.map +1 -1
- package/dist/es/components/Dragonpay/Dragonpay.js +1 -1
- package/dist/es/components/Dragonpay/Dragonpay.js.map +1 -1
- package/dist/es/components/Dropin/Dropin.js +1 -1
- package/dist/es/components/Dropin/Dropin.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/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es/components/DuitNow/DuitNow.js +1 -1
- package/dist/es/components/DuitNow/DuitNow.js.map +1 -1
- package/dist/es/components/EPS/index.js +1 -1
- package/dist/es/components/EPS/index.js.map +1 -1
- package/dist/es/components/Econtext/Econtext.js +1 -1
- package/dist/es/components/Econtext/Econtext.js.map +1 -1
- package/dist/es/components/FacilyPay/FacilyPay10x.js +1 -1
- package/dist/es/components/FacilyPay/FacilyPay10x.js.map +1 -1
- package/dist/es/components/FacilyPay/FacilyPay12x.js +1 -1
- package/dist/es/components/FacilyPay/FacilyPay12x.js.map +1 -1
- package/dist/es/components/FacilyPay/FacilyPay3x.js +1 -1
- package/dist/es/components/FacilyPay/FacilyPay3x.js.map +1 -1
- package/dist/es/components/FacilyPay/FacilyPay4x.js +1 -1
- package/dist/es/components/FacilyPay/FacilyPay4x.js.map +1 -1
- package/dist/es/components/FacilyPay/FacilyPay6x.js +1 -1
- package/dist/es/components/FacilyPay/FacilyPay6x.js.map +1 -1
- package/dist/es/components/Giftcard/Giftcard.js +1 -1
- package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es/components/Giropay/Giropay.js +1 -1
- package/dist/es/components/Giropay/Giropay.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/Klarna/KlarnaPayments.js +1 -1
- package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
- package/dist/es/components/MBWay/MBWay.js +1 -1
- package/dist/es/components/MBWay/MBWay.js.map +1 -1
- package/dist/es/components/MealVoucherFR/MealVoucherFR.js +1 -1
- package/dist/es/components/MealVoucherFR/MealVoucherFR.js.map +1 -1
- package/dist/es/components/MolPayEBanking/MolPayEBankingMY.js +1 -1
- package/dist/es/components/MolPayEBanking/MolPayEBankingMY.js.map +1 -1
- package/dist/es/components/MolPayEBanking/MolPayEBankingTH.js +1 -1
- package/dist/es/components/MolPayEBanking/MolPayEBankingTH.js.map +1 -1
- package/dist/es/components/MolPayEBanking/MolPayEBankingVN.js +1 -1
- package/dist/es/components/MolPayEBanking/MolPayEBankingVN.js.map +1 -1
- package/dist/es/components/Multibanco/Multibanco.js +1 -1
- package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
- package/dist/es/components/OnlineBankingCZ/index.js +1 -1
- package/dist/es/components/OnlineBankingCZ/index.js.map +1 -1
- package/dist/es/components/OnlineBankingFI/OnlineBankingFI.js +1 -1
- package/dist/es/components/OnlineBankingFI/OnlineBankingFI.js.map +1 -1
- package/dist/es/components/OnlineBankingIN/index.js +1 -1
- package/dist/es/components/OnlineBankingIN/index.js.map +1 -1
- package/dist/es/components/OnlineBankingPL/OnlineBankingPL.js +1 -1
- package/dist/es/components/OnlineBankingPL/OnlineBankingPL.js.map +1 -1
- package/dist/es/components/OnlineBankingSK/index.js +1 -1
- package/dist/es/components/OnlineBankingSK/index.js.map +1 -1
- package/dist/es/components/Oxxo/Oxxo.js +1 -1
- package/dist/es/components/Oxxo/Oxxo.js.map +1 -1
- package/dist/es/components/PayByBank/PayByBank.js +1 -1
- package/dist/es/components/PayByBank/PayByBank.js.map +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
- package/dist/es/components/PayMe/PayMe.js +1 -1
- package/dist/es/components/PayMe/PayMe.js.map +1 -1
- package/dist/es/components/PayMe/components/PayMeInstructions.js +2 -0
- package/dist/es/components/PayMe/components/PayMeInstructions.js.map +1 -0
- package/dist/es/components/PayMe/components/PayMeIntroduction.js +2 -0
- package/dist/es/components/PayMe/components/PayMeIntroduction.js.map +1 -0
- package/dist/es/components/PayNow/PayNow.js +1 -1
- package/dist/es/components/PayNow/PayNow.js.map +1 -1
- package/dist/es/components/PayNow/components/PayNowInstructions.js +2 -0
- package/dist/es/components/PayNow/components/PayNowInstructions.js.map +1 -0
- package/dist/es/components/PayNow/components/PayNowIntroduction.js +2 -0
- package/dist/es/components/PayNow/components/PayNowIntroduction.js.map +1 -0
- package/dist/es/components/PayPal/Paypal.js +1 -1
- package/dist/es/components/PayPal/Paypal.js.map +1 -1
- package/dist/es/components/PayU/PayuCashcard.js +1 -1
- package/dist/es/components/PayU/PayuCashcard.js.map +1 -1
- package/dist/es/components/PayU/PayuNetBanking.js +1 -1
- package/dist/es/components/PayU/PayuNetBanking.js.map +1 -1
- package/dist/es/components/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es/components/PersonalDetails/PersonalDetails.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/PromptPay/PromptPay.js +1 -1
- package/dist/es/components/PromptPay/PromptPay.js.map +1 -1
- package/dist/es/components/RatePay/RatePay.js +1 -1
- package/dist/es/components/RatePay/RatePay.js.map +1 -1
- package/dist/es/components/RatePay/RatePayDirectDebit.js +1 -1
- package/dist/es/components/RatePay/RatePayDirectDebit.js.map +1 -1
- package/dist/es/components/Redirect/Redirect.js +1 -1
- package/dist/es/components/Redirect/Redirect.js.map +1 -1
- package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
- package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
- package/dist/es/components/Riverty/Riverty.js +1 -1
- package/dist/es/components/Riverty/Riverty.js.map +1 -1
- package/dist/es/components/Sepa/Sepa.js +1 -1
- package/dist/es/components/Sepa/Sepa.js.map +1 -1
- package/dist/es/components/Swish/Swish.js +1 -1
- package/dist/es/components/Swish/Swish.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es/components/Trustly/Trustly.js +1 -1
- package/dist/es/components/Trustly/Trustly.js.map +1 -1
- package/dist/es/components/Twint/Twint.js +1 -1
- package/dist/es/components/Twint/Twint.js.map +1 -1
- 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/UPIComponent/UPIComponent.js +1 -1
- package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
- package/dist/es/components/Vipps/Vipps.js +1 -1
- package/dist/es/components/Vipps/Vipps.js.map +1 -1
- package/dist/es/components/WalletIN/index.js +1 -1
- package/dist/es/components/WalletIN/index.js.map +1 -1
- package/dist/es/components/WeChat/WeChat.js +1 -1
- package/dist/es/components/WeChat/WeChat.js.map +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.js +1 -1
- package/dist/es/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.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/Address/Address.js +1 -1
- package/dist/es/components/internal/Address/Address.js.map +1 -1
- package/dist/es/components/internal/Address/Specifications.js +1 -1
- package/dist/es/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.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/errors/TimeoutError.js +1 -1
- package/dist/es/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/models/ShopperCard.js +1 -1
- package/dist/es/components/internal/ClickToPay/models/ShopperCard.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/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/SrciError.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/sdks/SrciError.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/FormFields/ConsentCheckbox/ConsentCheckbox.js +1 -1
- package/dist/es/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.js.map +1 -1
- package/dist/es/components/internal/IFrame/Iframe.js +1 -1
- package/dist/es/components/internal/IFrame/Iframe.js.map +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
- package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/CSF/AbstractCSF.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/CSF/AbstractCSF.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/CSF/CSF.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/CSF/CSF.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
- package/dist/es/components/internal/Timeline/Timeline.js +2 -0
- package/dist/es/components/internal/Timeline/Timeline.js.map +1 -0
- package/dist/es/components/internal/Timeline/TimelineWrapper.js +2 -0
- package/dist/es/components/internal/Timeline/TimelineWrapper.js.map +1 -0
- package/dist/es/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es/core/CheckoutSession/CheckoutSession.js +1 -1
- package/dist/es/core/CheckoutSession/CheckoutSession.js.map +1 -1
- package/dist/es/core/Context/Resources.js +1 -1
- package/dist/es/core/Context/Resources.js.map +1 -1
- package/dist/es/core/Errors/AdyenCheckoutError.js +1 -1
- package/dist/es/core/Errors/AdyenCheckoutError.js.map +1 -1
- package/dist/es/core/Errors/SRPanel.js +1 -1
- package/dist/es/core/Errors/SRPanel.js.map +1 -1
- package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
- package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
- package/dist/es/core/RiskModule/RiskModule.js +1 -1
- package/dist/es/core/RiskModule/RiskModule.js.map +1 -1
- package/dist/es/core/RiskModule/components/DeviceFingerprint/DeviceFingerprint.js +1 -1
- package/dist/es/core/RiskModule/components/DeviceFingerprint/DeviceFingerprint.js.map +1 -1
- package/dist/es/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js +1 -1
- package/dist/es/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
- package/dist/es/core/Services/analytics/collect-id.js +1 -1
- package/dist/es/core/core.js +1 -1
- package/dist/es/core/core.js.map +1 -1
- package/dist/es/core/core.registry.js +1 -1
- package/dist/es/core/core.registry.js.map +1 -1
- package/dist/es/index.d.ts +27 -19
- package/dist/es/language/Language.js +1 -1
- package/dist/es/language/Language.js.map +1 -1
- package/dist/es/utils/Script.js +1 -1
- package/dist/es/utils/Script.js.map +1 -1
- package/dist/es/utils/Storage.js +1 -1
- package/dist/es/utils/Storage.js.map +1 -1
- package/dist/es/utils/Validator/ValidationRuleResult.js +1 -1
- package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es/utils/Validator/Validator.js +1 -1
- package/dist/es/utils/Validator/Validator.js.map +1 -1
- package/dist/es/utils/constants/currency-decimals.js +1 -1
- package/dist/es/utils/constants/currency-decimals.js.map +1 -1
- package/dist/es/utils/constants/currency-minor-units.js.map +1 -1
- package/dist/es/utils/useForm/reducer.js +1 -1
- package/dist/es/utils/useForm/reducer.js.map +1 -1
- package/dist/es/utils/useForm/useForm.js +1 -1
- package/dist/es/utils/useForm/useForm.js.map +1 -1
- package/dist/es/utils/useIsMobile.js +2 -0
- package/dist/es/utils/useIsMobile.js.map +1 -0
- package/dist/es-legacy/adyen.css +7 -3
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/BcmcMobile/BcmcMobile.js +1 -1
- package/dist/es-legacy/components/BcmcMobile/BcmcMobile.js.map +1 -1
- package/dist/es-legacy/components/PayMe/PayMe.js +1 -1
- package/dist/es-legacy/components/PayMe/PayMe.js.map +1 -1
- package/dist/es-legacy/components/PayMe/components/PayMeInstructions.js +2 -0
- package/dist/es-legacy/components/PayMe/components/PayMeInstructions.js.map +1 -0
- package/dist/es-legacy/components/PayMe/components/PayMeIntroduction.js +2 -0
- package/dist/es-legacy/components/PayMe/components/PayMeIntroduction.js.map +1 -0
- package/dist/es-legacy/components/PayNow/PayNow.js +1 -1
- package/dist/es-legacy/components/PayNow/PayNow.js.map +1 -1
- package/dist/es-legacy/components/PayNow/components/PayNowInstructions.js +2 -0
- package/dist/es-legacy/components/PayNow/components/PayNowInstructions.js.map +1 -0
- package/dist/es-legacy/components/PayNow/components/PayNowIntroduction.js +2 -0
- package/dist/es-legacy/components/PayNow/components/PayNowIntroduction.js.map +1 -0
- package/dist/es-legacy/components/Swish/Swish.js.map +1 -1
- package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
- package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/Timeline/Timeline.js +2 -0
- package/dist/es-legacy/components/internal/Timeline/Timeline.js.map +1 -0
- package/dist/es-legacy/components/internal/Timeline/TimelineWrapper.js +2 -0
- package/dist/es-legacy/components/internal/Timeline/TimelineWrapper.js.map +1 -0
- package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
- package/dist/es-legacy/core/core.js +1 -1
- package/dist/es-legacy/utils/constants/currency-decimals.js +1 -1
- package/dist/es-legacy/utils/constants/currency-decimals.js.map +1 -1
- package/dist/es-legacy/utils/constants/currency-minor-units.js.map +1 -1
- package/dist/es-legacy/utils/useForm/reducer.js +1 -1
- package/dist/es-legacy/utils/useForm/reducer.js.map +1 -1
- package/dist/es-legacy/utils/useForm/useForm.js +1 -1
- package/dist/es-legacy/utils/useForm/useForm.js.map +1 -1
- package/dist/es-legacy/utils/useIsMobile.js +2 -0
- package/dist/es-legacy/utils/useIsMobile.js.map +1 -0
- package/package.json +4 -2
- package/styles/adyen.css +7 -3
- package/dist/es/components/PayMe/Instructions.js +0 -2
- package/dist/es/components/PayMe/Instructions.js.map +0 -1
- package/dist/es-legacy/components/PayMe/Instructions.js +0 -2
- package/dist/es-legacy/components/PayMe/Instructions.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"./SrciError.js";import e from"../../../../../utils/Script.js";
|
|
1
|
+
import t from"./SrciError.js";import e from"../../../../../utils/Script.js";function i(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class s{async loadSdkScript(){this.isSdkIsAvailableOnWindow()||(this.scriptElement=new e(this.sdkUrl),await this.scriptElement.load()),this.assignSdkReference()}removeSdkScript(){this.scriptElement.remove()}async checkout(e){try{return await this.schemeSdk.checkout(e)}catch(e){throw new t(e,"checkout",this.schemeName)}}async unbindAppInstance(){try{await this.schemeSdk.unbindAppInstance()}catch(e){throw new t(e,"unbindAppInstance",this.schemeName)}}async isRecognized(){try{return await this.schemeSdk.isRecognized()}catch(e){throw new t(e,"isRecognized",this.schemeName)}}async initiateIdentityValidation(){try{return await this.schemeSdk.initiateIdentityValidation()}catch(e){throw new t(e,"initiateIdentityValidation",this.schemeName)}}async getSrcProfile(e){try{return await this.schemeSdk.getSrcProfile({idTokens:e})}catch(e){throw new t(e,"getSrcProfile",this.schemeName)}}constructor(t,e){if(i(this,"schemeSdk",void 0),i(this,"customSdkConfiguration",void 0),i(this,"sdkUrl",void 0),i(this,"scriptElement",null),!t)throw Error("AbstractSrcInitiator: Invalid SDK URL");this.sdkUrl=t,this.customSdkConfiguration=e}}export{s as default};
|
|
2
2
|
//# sourceMappingURL=AbstractSrcInitiator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSrcInitiator.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.ts"],"sourcesContent":["import {\n CustomSdkConfiguration,\n SrcCheckoutParams,\n SrciCheckoutResponse,\n SrciCompleteIdentityValidationResponse,\n SrcIdentityLookupParams,\n SrciIdentityLookupResponse,\n SrciInitiateIdentityValidationResponse,\n SrciIsRecognizedResponse,\n SrcInitParams,\n SrcProfile\n} from './types';\nimport SrciError, { MastercardError, VisaError } from './SrciError';\nimport { ClickToPayScheme } from '../../types';\nimport Script from '../../../../../utils/Script';\n\nexport interface ISrcInitiator {\n schemeName: ClickToPayScheme;\n // Loading 3rd party library\n loadSdkScript(): Promise<void>;\n removeSdkScript(): void;\n // SRCi specification methods\n init(params: SrcInitParams, srciTransactionId: string): Promise<void>;\n isRecognized(): Promise<SrciIsRecognizedResponse>;\n identityLookup(params: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse>;\n initiateIdentityValidation(): Promise<SrciInitiateIdentityValidationResponse>;\n completeIdentityValidation(validationData: string): Promise<SrciCompleteIdentityValidationResponse>;\n getSrcProfile(idTokens: string[]): Promise<SrcProfile>;\n checkout(params: SrcCheckoutParams): Promise<SrciCheckoutResponse>;\n unbindAppInstance(): Promise<void>;\n}\n\nexport default abstract class AbstractSrcInitiator implements ISrcInitiator {\n public schemeSdk: any;\n public abstract readonly schemeName: ClickToPayScheme;\n\n protected readonly customSdkConfiguration: CustomSdkConfiguration;\n\n private readonly sdkUrl: string;\n private scriptElement: Script | null = null;\n\n protected constructor(sdkUrl: string, customSdkConfiguration: CustomSdkConfiguration) {\n if (!sdkUrl) throw Error('AbstractSrcInitiator: Invalid SDK URL');\n\n this.sdkUrl = sdkUrl;\n this.customSdkConfiguration = customSdkConfiguration;\n }\n\n public async loadSdkScript(): Promise<void> {\n if (!this.isSdkIsAvailableOnWindow()) {\n this.scriptElement = new Script(this.sdkUrl);\n await this.scriptElement.load();\n }\n this.assignSdkReference();\n }\n\n public removeSdkScript(): void {\n this.scriptElement.remove();\n }\n\n /**\n * Verifies if SDK is already loaded on the window object.\n * Example: Merchant can preload the SDK to speed up the loading time\n */\n protected abstract isSdkIsAvailableOnWindow(): boolean;\n\n /**\n * Assign SchemeSDK object to 'schemeSdk' property.\n * Each scheme creates its own object reference on 'window' using different naming,\n * therefore this method should be implemented by the subclass to assign the property\n * accordingly\n */\n protected abstract assignSdkReference(): void;\n\n /**\n * Initializes the app with common state. The init method must be called before any other methods.\n */\n public abstract init(params: SrcInitParams, srciTransactionId: string): Promise<void>;\n\n /**\n * This method performs checkout using the specified card. If successful, the\n * response contains summary checkout information.\n */\n public async checkout(params: SrcCheckoutParams): Promise<SrciCheckoutResponse> {\n try {\n const checkoutResponse = await this.schemeSdk.checkout(params);\n return checkoutResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'checkout', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * This method disassociates the Consumer application / Consumer Device from the Consumer’s SRC Profile.\n */\n public async unbindAppInstance(): Promise<void> {\n try {\n await this.schemeSdk.unbindAppInstance();\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'unbindAppInstance', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Determines whether the consumer is recognized, e.g. by detecting the presence of a local cookie in\n * the browser environment.\n */\n public async isRecognized(): Promise<SrciIsRecognizedResponse> {\n try {\n const isRecognizedResponse = await this.schemeSdk.isRecognized();\n return isRecognizedResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'isRecognized', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Sends a validation code to the specified consumer.\n * This method sends a one-time password (OTP) to the consumer to start validation\n */\n public async initiateIdentityValidation(): Promise<SrciInitiateIdentityValidationResponse> {\n try {\n const identityValidationResponse = await this.schemeSdk.initiateIdentityValidation();\n return identityValidationResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'initiateIdentityValidation', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Obtains the masked card and other account profile data associated with the userId.\n */\n public async getSrcProfile(idTokens: string[]): Promise<SrcProfile> {\n try {\n const getSrcProfileResponse = await this.schemeSdk.getSrcProfile({ idTokens });\n return getSrcProfileResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'getSrcProfile', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Obtains the user account associated with the consumer’s identity (an email address or phone\n * number).\n */\n public abstract identityLookup(params: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse>;\n\n /**\n * This method completes the identity validation by receiving the one-time password (OTP) sent to the\n * consumer to start validation.\n */\n public abstract completeIdentityValidation(otp: string): Promise<SrciCompleteIdentityValidationResponse>;\n}\n"],"names":["AbstractSrcInitiator","
|
|
1
|
+
{"version":3,"file":"AbstractSrcInitiator.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.ts"],"sourcesContent":["import {\n CustomSdkConfiguration,\n SrcCheckoutParams,\n SrciCheckoutResponse,\n SrciCompleteIdentityValidationResponse,\n SrcIdentityLookupParams,\n SrciIdentityLookupResponse,\n SrciInitiateIdentityValidationResponse,\n SrciIsRecognizedResponse,\n SrcInitParams,\n SrcProfile\n} from './types';\nimport SrciError, { MastercardError, VisaError } from './SrciError';\nimport { ClickToPayScheme } from '../../types';\nimport Script from '../../../../../utils/Script';\n\nexport interface ISrcInitiator {\n schemeName: ClickToPayScheme;\n // Loading 3rd party library\n loadSdkScript(): Promise<void>;\n removeSdkScript(): void;\n // SRCi specification methods\n init(params: SrcInitParams, srciTransactionId: string): Promise<void>;\n isRecognized(): Promise<SrciIsRecognizedResponse>;\n identityLookup(params: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse>;\n initiateIdentityValidation(): Promise<SrciInitiateIdentityValidationResponse>;\n completeIdentityValidation(validationData: string): Promise<SrciCompleteIdentityValidationResponse>;\n getSrcProfile(idTokens: string[]): Promise<SrcProfile>;\n checkout(params: SrcCheckoutParams): Promise<SrciCheckoutResponse>;\n unbindAppInstance(): Promise<void>;\n}\n\nexport default abstract class AbstractSrcInitiator implements ISrcInitiator {\n public schemeSdk: any;\n public abstract readonly schemeName: ClickToPayScheme;\n\n protected readonly customSdkConfiguration: CustomSdkConfiguration;\n\n private readonly sdkUrl: string;\n private scriptElement: Script | null = null;\n\n protected constructor(sdkUrl: string, customSdkConfiguration: CustomSdkConfiguration) {\n if (!sdkUrl) throw Error('AbstractSrcInitiator: Invalid SDK URL');\n\n this.sdkUrl = sdkUrl;\n this.customSdkConfiguration = customSdkConfiguration;\n }\n\n public async loadSdkScript(): Promise<void> {\n if (!this.isSdkIsAvailableOnWindow()) {\n this.scriptElement = new Script(this.sdkUrl);\n await this.scriptElement.load();\n }\n this.assignSdkReference();\n }\n\n public removeSdkScript(): void {\n this.scriptElement.remove();\n }\n\n /**\n * Verifies if SDK is already loaded on the window object.\n * Example: Merchant can preload the SDK to speed up the loading time\n */\n protected abstract isSdkIsAvailableOnWindow(): boolean;\n\n /**\n * Assign SchemeSDK object to 'schemeSdk' property.\n * Each scheme creates its own object reference on 'window' using different naming,\n * therefore this method should be implemented by the subclass to assign the property\n * accordingly\n */\n protected abstract assignSdkReference(): void;\n\n /**\n * Initializes the app with common state. The init method must be called before any other methods.\n */\n public abstract init(params: SrcInitParams, srciTransactionId: string): Promise<void>;\n\n /**\n * This method performs checkout using the specified card. If successful, the\n * response contains summary checkout information.\n */\n public async checkout(params: SrcCheckoutParams): Promise<SrciCheckoutResponse> {\n try {\n const checkoutResponse = await this.schemeSdk.checkout(params);\n return checkoutResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'checkout', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * This method disassociates the Consumer application / Consumer Device from the Consumer’s SRC Profile.\n */\n public async unbindAppInstance(): Promise<void> {\n try {\n await this.schemeSdk.unbindAppInstance();\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'unbindAppInstance', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Determines whether the consumer is recognized, e.g. by detecting the presence of a local cookie in\n * the browser environment.\n */\n public async isRecognized(): Promise<SrciIsRecognizedResponse> {\n try {\n const isRecognizedResponse = await this.schemeSdk.isRecognized();\n return isRecognizedResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'isRecognized', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Sends a validation code to the specified consumer.\n * This method sends a one-time password (OTP) to the consumer to start validation\n */\n public async initiateIdentityValidation(): Promise<SrciInitiateIdentityValidationResponse> {\n try {\n const identityValidationResponse = await this.schemeSdk.initiateIdentityValidation();\n return identityValidationResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'initiateIdentityValidation', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Obtains the masked card and other account profile data associated with the userId.\n */\n public async getSrcProfile(idTokens: string[]): Promise<SrcProfile> {\n try {\n const getSrcProfileResponse = await this.schemeSdk.getSrcProfile({ idTokens });\n return getSrcProfileResponse;\n } catch (error) {\n const srciError = new SrciError(error as VisaError | MastercardError, 'getSrcProfile', this.schemeName);\n throw srciError;\n }\n }\n\n /**\n * Obtains the user account associated with the consumer’s identity (an email address or phone\n * number).\n */\n public abstract identityLookup(params: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse>;\n\n /**\n * This method completes the identity validation by receiving the one-time password (OTP) sent to the\n * consumer to start validation.\n */\n public abstract completeIdentityValidation(otp: string): Promise<SrciCompleteIdentityValidationResponse>;\n}\n"],"names":["AbstractSrcInitiator","loadSdkScript","this","isSdkIsAvailableOnWindow","scriptElement","Script","sdkUrl","load","assignSdkReference","removeSdkScript","remove","checkout","params","schemeSdk","error","SrciError","schemeName","unbindAppInstance","isRecognized","initiateIdentityValidation","getSrcProfile","idTokens","constructor","customSdkConfiguration","_define_property","Error"],"mappings":"oMAgCe,MAAeA,EAgB1B,mBAAaC,GACJC,KAAKC,6BACND,KAAKE,cAAgB,IAAIC,EAAOH,KAAKI,cAC/BJ,KAAKE,cAAcG,QAE7BL,KAAKM,oBACT,CAEOC,eAAAA,GACHP,KAAKE,cAAcM,QACvB,CAyBA,cAAaC,CAASC,GAClB,IAEI,aAD+BV,KAAKW,UAAUF,SAASC,EAE3D,CAAE,MAAOE,GAEL,MADkB,IAAIC,EAAUD,EAAsC,WAAYZ,KAAKc,WAE3F,CACJ,CAKA,uBAAaC,GACT,UACUf,KAAKW,UAAUI,mBACzB,CAAE,MAAOH,GAEL,MADkB,IAAIC,EAAUD,EAAsC,oBAAqBZ,KAAKc,WAEpG,CACJ,CAMA,kBAAaE,GACT,IAEI,aADmChB,KAAKW,UAAUK,cAEtD,CAAE,MAAOJ,GAEL,MADkB,IAAIC,EAAUD,EAAsC,eAAgBZ,KAAKc,WAE/F,CACJ,CAMA,gCAAaG,GACT,IAEI,aADyCjB,KAAKW,UAAUM,4BAE5D,CAAE,MAAOL,GAEL,MADkB,IAAIC,EAAUD,EAAsC,6BAA8BZ,KAAKc,WAE7G,CACJ,CAKA,mBAAaI,CAAcC,GACvB,IAEI,aADoCnB,KAAKW,UAAUO,cAAc,CAAEC,YAEvE,CAAE,MAAOP,GAEL,MADkB,IAAIC,EAAUD,EAAsC,gBAAiBZ,KAAKc,WAEhG,CACJ,CAvGA,WAAAM,CAAsBhB,EAAgBiB,GAClC,GATJC,EAAAtB,KAAOW,iBAAP,GAGAW,EAAAtB,KAAmBqB,8BAAnB,GAEAC,EAAAtB,KAAiBI,cAAjB,GACAkB,EAAAtB,KAAQE,gBAA+B,OAG9BE,EAAQ,MAAMmB,MAAM,yCAEzBvB,KAAKI,OAASA,EACdJ,KAAKqB,uBAAyBA,CAClC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{getMastercardSettings as t,MC_SDK_PROD as e,MC_SDK_TEST as i}from"./config.js";import n from"./AbstractSrcInitiator.js";import a from"./SrciError.js";const o={email:"EMAIL_ADDRESS",telephoneNumber:"MOBILE_PHONE_NUMBER"};class s extends n{isSdkIsAvailableOnWindow(){return!!window.SRCSDK_MASTERCARD}assignSdkReference(){this.schemeSdk=window.SRCSDK_MASTERCARD}async init(e,i){try{const n={...e,...t(this.customSdkConfiguration),srciTransactionId:i};await this.schemeSdk.init(n)}catch(t){throw new a(t,"init",this.schemeName)}}async identityLookup({identityValue:t,type:e}){try{const i={identityValue:t,identityType:o[e]};return await this.schemeSdk.identityLookup({consumerIdentity:i})}catch(t){throw new a(t,"identityLookup",this.schemeName)}}async completeIdentityValidation(t){try{return await this.schemeSdk.completeIdentityValidation({validationData:t})}catch(t){throw new a(t,"completeIdentityValidation",this.schemeName)}}constructor(t,n){var a,o,s;super(t.toLowerCase().includes("live")?e:i,n),s="mc",(o="schemeName")in(a=this)?Object.defineProperty(a,o,{value:s,enumerable:!0,configurable:!0,writable:!0}):a[o]=s}}export{s as default};
|
|
2
2
|
//# sourceMappingURL=MastercardSdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MastercardSdk.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/MastercardSdk.ts"],"sourcesContent":["import { getMastercardSettings, MC_SDK_PROD, MC_SDK_TEST } from './config';\nimport AbstractSrcInitiator from './AbstractSrcInitiator';\nimport SrciError, { MastercardError, VisaError } from './SrciError';\nimport {\n CustomSdkConfiguration,\n SrciCompleteIdentityValidationResponse,\n SrcIdentityLookupParams,\n SrciIdentityLookupResponse,\n SrcInitParams\n} from './types';\n\nconst IdentityTypeMap = {\n email: 'EMAIL_ADDRESS',\n telephoneNumber: 'MOBILE_PHONE_NUMBER'\n};\n\nclass MastercardSdk extends AbstractSrcInitiator {\n public readonly schemeName = 'mc';\n\n constructor(environment: string, customSdkConfig: CustomSdkConfiguration) {\n super(environment.toLowerCase().includes('live') ? MC_SDK_PROD : MC_SDK_TEST, customSdkConfig);\n }\n\n protected isSdkIsAvailableOnWindow(): boolean {\n // @ts-ignore SRCSDK_MASTERCARD is created by the MC sdk\n if (window.SRCSDK_MASTERCARD) return true;\n return false;\n }\n\n protected assignSdkReference(): void {\n // @ts-ignore SRCSDK_MASTERCARD is created by the MC sdk\n this.schemeSdk = window.SRCSDK_MASTERCARD;\n }\n\n public async init(params: SrcInitParams, srciTransactionId: string): Promise<void> {\n try {\n const sdkProps = {\n ...params,\n ...getMastercardSettings(this.customSdkConfiguration),\n srciTransactionId\n };\n await this.schemeSdk.init(sdkProps);\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'init', this.schemeName);\n throw srciError;\n }\n }\n\n public async identityLookup({ identityValue, type }: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse> {\n try {\n const consumerIdentity = {\n identityValue,\n identityType: IdentityTypeMap[type]\n };\n\n const response = await this.schemeSdk.identityLookup({ consumerIdentity });\n return response;\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'identityLookup', this.schemeName);\n throw srciError;\n }\n }\n\n public async completeIdentityValidation(otp: string): Promise<SrciCompleteIdentityValidationResponse> {\n try {\n const response = await this.schemeSdk.completeIdentityValidation({ validationData: otp });\n return response;\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'completeIdentityValidation', this.schemeName);\n throw srciError;\n }\n }\n}\n\nexport default MastercardSdk;\n"],"names":["IdentityTypeMap","email","telephoneNumber","MastercardSdk","AbstractSrcInitiator","
|
|
1
|
+
{"version":3,"file":"MastercardSdk.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/MastercardSdk.ts"],"sourcesContent":["import { getMastercardSettings, MC_SDK_PROD, MC_SDK_TEST } from './config';\nimport AbstractSrcInitiator from './AbstractSrcInitiator';\nimport SrciError, { MastercardError, VisaError } from './SrciError';\nimport {\n CustomSdkConfiguration,\n SrciCompleteIdentityValidationResponse,\n SrcIdentityLookupParams,\n SrciIdentityLookupResponse,\n SrcInitParams\n} from './types';\n\nconst IdentityTypeMap = {\n email: 'EMAIL_ADDRESS',\n telephoneNumber: 'MOBILE_PHONE_NUMBER'\n};\n\nclass MastercardSdk extends AbstractSrcInitiator {\n public readonly schemeName = 'mc';\n\n constructor(environment: string, customSdkConfig: CustomSdkConfiguration) {\n super(environment.toLowerCase().includes('live') ? MC_SDK_PROD : MC_SDK_TEST, customSdkConfig);\n }\n\n protected isSdkIsAvailableOnWindow(): boolean {\n // @ts-ignore SRCSDK_MASTERCARD is created by the MC sdk\n if (window.SRCSDK_MASTERCARD) return true;\n return false;\n }\n\n protected assignSdkReference(): void {\n // @ts-ignore SRCSDK_MASTERCARD is created by the MC sdk\n this.schemeSdk = window.SRCSDK_MASTERCARD;\n }\n\n public async init(params: SrcInitParams, srciTransactionId: string): Promise<void> {\n try {\n const sdkProps = {\n ...params,\n ...getMastercardSettings(this.customSdkConfiguration),\n srciTransactionId\n };\n await this.schemeSdk.init(sdkProps);\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'init', this.schemeName);\n throw srciError;\n }\n }\n\n public async identityLookup({ identityValue, type }: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse> {\n try {\n const consumerIdentity = {\n identityValue,\n identityType: IdentityTypeMap[type]\n };\n\n const response = await this.schemeSdk.identityLookup({ consumerIdentity });\n return response;\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'identityLookup', this.schemeName);\n throw srciError;\n }\n }\n\n public async completeIdentityValidation(otp: string): Promise<SrciCompleteIdentityValidationResponse> {\n try {\n const response = await this.schemeSdk.completeIdentityValidation({ validationData: otp });\n return response;\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'completeIdentityValidation', this.schemeName);\n throw srciError;\n }\n }\n}\n\nexport default MastercardSdk;\n"],"names":["IdentityTypeMap","email","telephoneNumber","MastercardSdk","AbstractSrcInitiator","isSdkIsAvailableOnWindow","window","SRCSDK_MASTERCARD","assignSdkReference","this","schemeSdk","init","params","srciTransactionId","sdkProps","getMastercardSettings","customSdkConfiguration","err","SrciError","schemeName","identityLookup","identityValue","type","consumerIdentity","identityType","completeIdentityValidation","otp","validationData","constructor","environment","customSdkConfig","super","toLowerCase","includes","MC_SDK_PROD","MC_SDK_TEST"],"mappings":"6JAWA,MAAMA,EAAkB,CACpBC,MAAO,gBACPC,gBAAiB,uBAGrB,MAAMC,UAAsBC,EAOdC,wBAAAA,GAEN,QAAIC,OAAOC,iBAEf,CAEUC,kBAAAA,GAENC,KAAKC,UAAYJ,OAAOC,iBAC5B,CAEA,UAAaI,CAAKC,EAAuBC,GACrC,IACI,MAAMC,EAAW,IACVF,KACAG,EAAsBN,KAAKO,wBAC9BH,2BAEEJ,KAAKC,UAAUC,KAAKG,EAC9B,CAAE,MAAOG,GAEL,MADkB,IAAIC,EAAUD,EAAoC,OAAQR,KAAKU,WAErF,CACJ,CAEA,oBAAaC,EAAeC,cAAEA,EAAaC,KAAEA,IACzC,IACI,MAAMC,EAAmB,CACrBF,gBACAG,aAAcxB,EAAgBsB,IAIlC,aADuBb,KAAKC,UAAUU,eAAe,CAAEG,oBAE3D,CAAE,MAAON,GAEL,MADkB,IAAIC,EAAUD,EAAoC,iBAAkBR,KAAKU,WAE/F,CACJ,CAEA,gCAAaM,CAA2BC,GACpC,IAEI,aADuBjB,KAAKC,UAAUe,2BAA2B,CAAEE,eAAgBD,GAEvF,CAAE,MAAOT,GAEL,MADkB,IAAIC,EAAUD,EAAoC,6BAA8BR,KAAKU,WAE3G,CACJ,CApDAS,WAAAA,CAAYC,EAAqBC,aAC7BC,MAAMF,EAAYG,cAAcC,SAAS,QAAUC,EAAcC,EAAaL,KAHrD,QAAbX,kBAAhBV,2FAIA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./VisaSdk.js";import
|
|
1
|
+
import e from"./VisaSdk.js";import t from"./MastercardSdk.js";import o from"../../../../../core/Errors/AdyenCheckoutError.js";import{isRejected as s,isFulfilled as r}from"../../../../../utils/promise-util.js";function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}const a={visa:e,mc:t,default:null};class n{async load(e){if(!this.schemes||0===this.schemes.length)throw new o("ERROR","ClickToPay -> SrcSdkLoader: There are no schemes set to be loaded");return new Promise(((t,i)=>{const n=this.schemes.map((t=>((e,t,o)=>{const s=a[e]||a.default;return s?new s(t,o):null})(t,e,this.customSdkConfiguration))),c=n.map((e=>e.loadSdkScript()));Promise.allSettled(c).then((e=>{e.every(s)&&i(new o("ERROR",`ClickToPay -> SrcSdkLoader # Unable to load network schemes: ${this.schemes.toString()}`));const a=n.filter(((t,o)=>r(e[o])));t(a)}))}))}constructor(e,{dpaLocale:t="en_US",dpaPresentationName:o=""}){i(this,"schemes",void 0),i(this,"customSdkConfiguration",void 0),this.schemes=e,this.customSdkConfiguration={dpaLocale:t,dpaPresentationName:o}}}export{n as default};
|
|
2
2
|
//# sourceMappingURL=SrcSdkLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SrcSdkLoader.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrcSdkLoader.ts"],"sourcesContent":["import { ISrcInitiator } from './AbstractSrcInitiator';\nimport VisaSdk from './VisaSdk';\nimport MastercardSdk from './MastercardSdk';\nimport { CustomSdkConfiguration } from './types';\nimport AdyenCheckoutError from '../../../../../core/Errors/AdyenCheckoutError';\nimport { isFulfilled, isRejected } from '../../../../../utils/promise-util';\n\nconst sdkMap: Record<string, typeof VisaSdk | typeof MastercardSdk | null> = {\n visa: VisaSdk,\n mc: MastercardSdk,\n default: null\n};\n\nconst getSchemeSdk = (scheme: string, environment: string, customConfig: CustomSdkConfiguration): ISrcInitiator | null => {\n const SchemeSdkClass = sdkMap[scheme] || sdkMap.default;\n return SchemeSdkClass ? new SchemeSdkClass(environment, customConfig) : null;\n};\n\nexport interface ISrcSdkLoader {\n load(environment: string): Promise<ISrcInitiator[]>;\n schemes: string[];\n}\n\nclass SrcSdkLoader implements ISrcSdkLoader {\n public readonly schemes: string[];\n private readonly customSdkConfiguration: CustomSdkConfiguration;\n\n constructor(schemes: string[], { dpaLocale = 'en_US', dpaPresentationName = '' }) {\n this.schemes = schemes;\n this.customSdkConfiguration = { dpaLocale, dpaPresentationName };\n }\n\n public async load(environment: string): Promise<ISrcInitiator[]> {\n if (!this.schemes || this.schemes.length === 0) {\n throw new AdyenCheckoutError('ERROR', 'ClickToPay -> SrcSdkLoader: There are no schemes set to be loaded');\n }\n\n return new Promise((resolve, reject) => {\n const sdks: ISrcInitiator[] = this.schemes.map(scheme => getSchemeSdk(scheme, environment, this.customSdkConfiguration));\n const loadScriptPromises = sdks.map(sdk => sdk.loadSdkScript());\n\n void Promise.allSettled(loadScriptPromises).then(loadScriptResponses => {\n if (loadScriptResponses.every(isRejected)) {\n reject(\n new AdyenCheckoutError('ERROR', `ClickToPay -> SrcSdkLoader # Unable to load network schemes: ${this.schemes.toString()}`)\n );\n }\n\n const sdksLoaded = sdks.filter((sdk, index) => isFulfilled(loadScriptResponses[index]));\n\n resolve(sdksLoaded);\n });\n });\n }\n}\n\nexport default SrcSdkLoader;\n"],"names":["sdkMap","visa","VisaSdk","mc","MastercardSdk","default","SrcSdkLoader","
|
|
1
|
+
{"version":3,"file":"SrcSdkLoader.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrcSdkLoader.ts"],"sourcesContent":["import { ISrcInitiator } from './AbstractSrcInitiator';\nimport VisaSdk from './VisaSdk';\nimport MastercardSdk from './MastercardSdk';\nimport { CustomSdkConfiguration } from './types';\nimport AdyenCheckoutError from '../../../../../core/Errors/AdyenCheckoutError';\nimport { isFulfilled, isRejected } from '../../../../../utils/promise-util';\n\nconst sdkMap: Record<string, typeof VisaSdk | typeof MastercardSdk | null> = {\n visa: VisaSdk,\n mc: MastercardSdk,\n default: null\n};\n\nconst getSchemeSdk = (scheme: string, environment: string, customConfig: CustomSdkConfiguration): ISrcInitiator | null => {\n const SchemeSdkClass = sdkMap[scheme] || sdkMap.default;\n return SchemeSdkClass ? new SchemeSdkClass(environment, customConfig) : null;\n};\n\nexport interface ISrcSdkLoader {\n load(environment: string): Promise<ISrcInitiator[]>;\n schemes: string[];\n}\n\nclass SrcSdkLoader implements ISrcSdkLoader {\n public readonly schemes: string[];\n private readonly customSdkConfiguration: CustomSdkConfiguration;\n\n constructor(schemes: string[], { dpaLocale = 'en_US', dpaPresentationName = '' }) {\n this.schemes = schemes;\n this.customSdkConfiguration = { dpaLocale, dpaPresentationName };\n }\n\n public async load(environment: string): Promise<ISrcInitiator[]> {\n if (!this.schemes || this.schemes.length === 0) {\n throw new AdyenCheckoutError('ERROR', 'ClickToPay -> SrcSdkLoader: There are no schemes set to be loaded');\n }\n\n return new Promise((resolve, reject) => {\n const sdks: ISrcInitiator[] = this.schemes.map(scheme => getSchemeSdk(scheme, environment, this.customSdkConfiguration));\n const loadScriptPromises = sdks.map(sdk => sdk.loadSdkScript());\n\n void Promise.allSettled(loadScriptPromises).then(loadScriptResponses => {\n if (loadScriptResponses.every(isRejected)) {\n reject(\n new AdyenCheckoutError('ERROR', `ClickToPay -> SrcSdkLoader # Unable to load network schemes: ${this.schemes.toString()}`)\n );\n }\n\n const sdksLoaded = sdks.filter((sdk, index) => isFulfilled(loadScriptResponses[index]));\n\n resolve(sdksLoaded);\n });\n });\n }\n}\n\nexport default SrcSdkLoader;\n"],"names":["sdkMap","visa","VisaSdk","mc","MastercardSdk","default","SrcSdkLoader","load","environment","this","schemes","length","AdyenCheckoutError","Promise","resolve","reject","sdks","map","scheme","customConfig","SchemeSdkClass","getSchemeSdk","customSdkConfiguration","loadScriptPromises","sdk","loadSdkScript","allSettled","then","loadScriptResponses","every","isRejected","toString","sdksLoaded","filter","index","isFulfilled","constructor","dpaLocale","dpaPresentationName","_define_property"],"mappings":"yUAOA,MAAMA,EAAuE,CACzEC,KAAMC,EACNC,GAAIC,EACJC,QAAS,MAab,MAAMC,EASF,UAAaC,CAAKC,GACd,IAAKC,KAAKC,SAAmC,IAAxBD,KAAKC,QAAQC,OAC9B,MAAM,IAAIC,EAAmB,QAAS,qEAG1C,OAAO,IAAIC,SAAQ,CAACC,EAASC,KACzB,MAAMC,EAAwBP,KAAKC,QAAQO,KAAIC,GAzBtC,EAACA,EAAgBV,EAAqBW,KACvD,MAAMC,EAAiBpB,EAAOkB,IAAWlB,EAAOK,QAChD,OAAOe,EAAiB,IAAIA,EAAeZ,EAAaW,GAAgB,IAAA,EAuBPE,CAAaH,EAAQV,EAAaC,KAAKa,0BAC1FC,EAAqBP,EAAKC,KAAIO,GAAOA,EAAIC,kBAE1CZ,QAAQa,WAAWH,GAAoBI,MAAKC,IACzCA,EAAoBC,MAAMC,IAC1Bf,EACI,IAAIH,EAAmB,QAAS,gEAAgEH,KAAKC,QAAQqB,eAIrH,MAAMC,EAAahB,EAAKiB,QAAO,CAACT,EAAKU,IAAUC,EAAYP,EAAoBM,MAE/EpB,EAAQkB,EAAAA,GACZ,GAER,CA1BAI,WAAAA,CAAY1B,GAAmB2B,UAAEA,EAAY,QAAOC,oBAAEA,EAAsB,KAH5EC,EAAA9B,KAAgBC,eAAhB,GACA6B,EAAA9B,KAAiBa,8BAAjB,GAGIb,KAAKC,QAAUA,EACfD,KAAKa,uBAAyB,CAAEe,YAAWC,sBAC/C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
function e(e,r,s){return r in e?Object.defineProperty(e,r,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[r]=s,e}class r extends Error{toString(){return`Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`}constructor(r,s,o){super(),e(this,"reason",void 0),e(this,"message",void 0),e(this,"source",void 0),e(this,"scheme",void 0),e(this,"errorFromCardSchemeSdk",void 0);const t="error"in r?r?.error?.message:r?.message,i="error"in r?r?.error?.reason:r?.reason;this.message=t,this.reason=i,this.source=s,this.scheme=o,this.errorFromCardSchemeSdk=r}}export{r as default};
|
|
2
2
|
//# sourceMappingURL=SrciError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SrciError.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrciError.ts"],"sourcesContent":["import { ClickToPayScheme } from '../../types';\n\nexport type MastercardError = {\n message: string;\n reason: string;\n};\n\nexport type VisaError = {\n error: {\n message: string;\n reason: string;\n };\n};\n\nclass SrciError extends Error {\n public reason: string;\n public message: string;\n public source: string;\n public scheme: ClickToPayScheme;\n public errorFromCardSchemeSdk: unknown;\n\n constructor(schemeError: VisaError | MastercardError, source: string, scheme: ClickToPayScheme) {\n super();\n\n const message = 'error' in schemeError ? schemeError?.error?.message : schemeError?.message;\n const reason = 'error' in schemeError ? schemeError?.error?.reason : schemeError?.reason;\n\n this.message = message;\n this.reason = reason;\n this.source = source;\n this.scheme = scheme;\n this.errorFromCardSchemeSdk = schemeError;\n }\n\n toString() {\n return `Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`;\n }\n}\n\nexport default SrciError;\n"],"names":["SrciError","Error","
|
|
1
|
+
{"version":3,"file":"SrciError.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrciError.ts"],"sourcesContent":["import { ClickToPayScheme } from '../../types';\n\nexport type MastercardError = {\n message: string;\n reason: string;\n};\n\nexport type VisaError = {\n error: {\n message: string;\n reason: string;\n };\n};\n\nclass SrciError extends Error {\n public reason: string;\n public message: string;\n public source: string;\n public scheme: ClickToPayScheme;\n public errorFromCardSchemeSdk: unknown;\n\n constructor(schemeError: VisaError | MastercardError, source: string, scheme: ClickToPayScheme) {\n super();\n\n const message = 'error' in schemeError ? schemeError?.error?.message : schemeError?.message;\n const reason = 'error' in schemeError ? schemeError?.error?.reason : schemeError?.reason;\n\n this.message = message;\n this.reason = reason;\n this.source = source;\n this.scheme = scheme;\n this.errorFromCardSchemeSdk = schemeError;\n }\n\n toString() {\n return `Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`;\n }\n}\n\nexport default SrciError;\n"],"names":["SrciError","Error","toString","this","reason","source","scheme","message","constructor","schemeError","super","_define_property","errorFromCardSchemeSdk","error"],"mappings":"wHAcA,MAAMA,UAAkBC,MAoBpBC,QAAAA,GACI,MAAO,WAAWC,KAAKC,oBAAoBD,KAAKE,oBAAoBF,KAAKG,qBAAqBH,KAAKI,SACvG,CAfAC,WAAAA,CAAYC,EAA0CJ,EAAgBC,GAClEI,QAPJC,EAAAR,KAAOC,cAAP,GACAO,EAAAR,KAAOI,eAAP,GACAI,EAAAR,KAAOE,cAAP,GACAM,EAAAR,KAAOG,cAAP,GACAK,EAAAR,KAAOS,8BAAP,GAKI,MAAML,EAAU,UAAWE,EAAcA,GAAaI,OAAON,QAAUE,GAAaF,QAC9EH,EAAS,UAAWK,EAAcA,GAAaI,OAAOT,OAASK,GAAaL,OAElFD,KAAKI,QAAUA,EACfJ,KAAKC,OAASA,EACdD,KAAKE,OAASA,EACdF,KAAKG,OAASA,EACdH,KAAKS,uBAAyBH,CAClC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{getVisaSetttings as e,VISA_SDK_PROD as t,VISA_SDK_TEST as i}from"./config.js";import a from"./AbstractSrcInitiator.js";import n from"./SrciError.js";const s={email:"EMAIL",telephoneNumber:"MOBILE_NUMBER"};class r extends a{isSdkIsAvailableOnWindow(){return!!window.vAdapters?.VisaSRCI}assignSdkReference(){this.schemeSdk=new window.vAdapters.VisaSRCI}async init(t,i){try{const a={...t,...e(this.customSdkConfiguration),srciTransactionId:i};await this.schemeSdk.init(a)}catch(e){throw new n(e,"init",this.schemeName)}}async identityLookup({identityValue:e,type:t}){try{const i={identityValue:e,type:s[t]};return await this.schemeSdk.identityLookup(i)}catch(e){throw new n(e,"identityLookup",this.schemeName)}}async completeIdentityValidation(e){try{return await this.schemeSdk.completeIdentityValidation(e)}catch(e){throw new n(e,"completeIdentityValidation",this.schemeName)}}constructor(e,a){var n,s,r;super(e.toLowerCase().includes("live")?t:i,a),r="visa",(s="schemeName")in(n=this)?Object.defineProperty(n,s,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[s]=r}}export{r as default};
|
|
2
2
|
//# sourceMappingURL=VisaSdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisaSdk.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/VisaSdk.ts"],"sourcesContent":["import { getVisaSetttings, VISA_SDK_PROD, VISA_SDK_TEST } from './config';\nimport AbstractSrcInitiator from './AbstractSrcInitiator';\nimport SrciError, { MastercardError, VisaError } from './SrciError';\nimport type {\n CustomSdkConfiguration,\n SrciCompleteIdentityValidationResponse,\n SrcIdentityLookupParams,\n SrciIdentityLookupResponse,\n SrcInitParams\n} from './types';\n\nconst IdentityTypeMap = {\n email: 'EMAIL',\n telephoneNumber: 'MOBILE_NUMBER'\n};\n\nclass VisaSdk extends AbstractSrcInitiator {\n public readonly schemeName = 'visa';\n\n constructor(environment: string, customSdkConfig: CustomSdkConfiguration) {\n super(environment.toLowerCase().includes('live') ? VISA_SDK_PROD : VISA_SDK_TEST, customSdkConfig);\n }\n\n protected isSdkIsAvailableOnWindow(): boolean {\n // @ts-ignore vAdapters is created by the VISA sdk\n if (window.vAdapters?.VisaSRCI) return true;\n return false;\n }\n\n protected assignSdkReference(): void {\n // @ts-ignore vAdapters is created by the VISA sdk\n this.schemeSdk = new window.vAdapters.VisaSRCI();\n }\n\n public async init(params: SrcInitParams, srciTransactionId: string): Promise<void> {\n try {\n const sdkProps = {\n ...params,\n ...getVisaSetttings(this.customSdkConfiguration),\n srciTransactionId\n };\n\n await this.schemeSdk.init(sdkProps);\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'init', this.schemeName);\n throw srciError;\n }\n }\n\n public async identityLookup({ identityValue, type }: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse> {\n try {\n const consumerIdentity = {\n identityValue,\n type: IdentityTypeMap[type]\n };\n\n const response = await this.schemeSdk.identityLookup(consumerIdentity);\n return response;\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'identityLookup', this.schemeName);\n throw srciError;\n }\n }\n\n public async completeIdentityValidation(otp: string): Promise<SrciCompleteIdentityValidationResponse> {\n try {\n const response = await this.schemeSdk.completeIdentityValidation(otp);\n return response;\n } catch (err: unknown) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'completeIdentityValidation', this.schemeName);\n throw srciError;\n }\n }\n}\n\nexport default VisaSdk;\n"],"names":["IdentityTypeMap","email","telephoneNumber","VisaSdk","AbstractSrcInitiator","
|
|
1
|
+
{"version":3,"file":"VisaSdk.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/VisaSdk.ts"],"sourcesContent":["import { getVisaSetttings, VISA_SDK_PROD, VISA_SDK_TEST } from './config';\nimport AbstractSrcInitiator from './AbstractSrcInitiator';\nimport SrciError, { MastercardError, VisaError } from './SrciError';\nimport type {\n CustomSdkConfiguration,\n SrciCompleteIdentityValidationResponse,\n SrcIdentityLookupParams,\n SrciIdentityLookupResponse,\n SrcInitParams\n} from './types';\n\nconst IdentityTypeMap = {\n email: 'EMAIL',\n telephoneNumber: 'MOBILE_NUMBER'\n};\n\nclass VisaSdk extends AbstractSrcInitiator {\n public readonly schemeName = 'visa';\n\n constructor(environment: string, customSdkConfig: CustomSdkConfiguration) {\n super(environment.toLowerCase().includes('live') ? VISA_SDK_PROD : VISA_SDK_TEST, customSdkConfig);\n }\n\n protected isSdkIsAvailableOnWindow(): boolean {\n // @ts-ignore vAdapters is created by the VISA sdk\n if (window.vAdapters?.VisaSRCI) return true;\n return false;\n }\n\n protected assignSdkReference(): void {\n // @ts-ignore vAdapters is created by the VISA sdk\n this.schemeSdk = new window.vAdapters.VisaSRCI();\n }\n\n public async init(params: SrcInitParams, srciTransactionId: string): Promise<void> {\n try {\n const sdkProps = {\n ...params,\n ...getVisaSetttings(this.customSdkConfiguration),\n srciTransactionId\n };\n\n await this.schemeSdk.init(sdkProps);\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'init', this.schemeName);\n throw srciError;\n }\n }\n\n public async identityLookup({ identityValue, type }: SrcIdentityLookupParams): Promise<SrciIdentityLookupResponse> {\n try {\n const consumerIdentity = {\n identityValue,\n type: IdentityTypeMap[type]\n };\n\n const response = await this.schemeSdk.identityLookup(consumerIdentity);\n return response;\n } catch (err) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'identityLookup', this.schemeName);\n throw srciError;\n }\n }\n\n public async completeIdentityValidation(otp: string): Promise<SrciCompleteIdentityValidationResponse> {\n try {\n const response = await this.schemeSdk.completeIdentityValidation(otp);\n return response;\n } catch (err: unknown) {\n const srciError = new SrciError(err as VisaError | MastercardError, 'completeIdentityValidation', this.schemeName);\n throw srciError;\n }\n }\n}\n\nexport default VisaSdk;\n"],"names":["IdentityTypeMap","email","telephoneNumber","VisaSdk","AbstractSrcInitiator","isSdkIsAvailableOnWindow","window","vAdapters","VisaSRCI","assignSdkReference","this","schemeSdk","init","params","srciTransactionId","sdkProps","getVisaSetttings","customSdkConfiguration","err","SrciError","schemeName","identityLookup","identityValue","type","consumerIdentity","completeIdentityValidation","otp","constructor","environment","customSdkConfig","super","toLowerCase","includes","VISA_SDK_PROD","VISA_SDK_TEST"],"mappings":"4JAWA,MAAMA,EAAkB,CACpBC,MAAO,QACPC,gBAAiB,iBAGrB,MAAMC,UAAgBC,EAORC,wBAAAA,GAEN,QAAIC,OAAOC,WAAWC,QAE1B,CAEUC,kBAAAA,GAENC,KAAKC,UAAY,IAAIL,OAAOC,UAAUC,QAC1C,CAEA,UAAaI,CAAKC,EAAuBC,GACrC,IACI,MAAMC,EAAW,IACVF,KACAG,EAAiBN,KAAKO,wBACzBH,2BAGEJ,KAAKC,UAAUC,KAAKG,EAC9B,CAAE,MAAOG,GAEL,MADkB,IAAIC,EAAUD,EAAoC,OAAQR,KAAKU,WAErF,CACJ,CAEA,oBAAaC,EAAeC,cAAEA,EAAaC,KAAEA,IACzC,IACI,MAAMC,EAAmB,CACrBF,gBACAC,KAAMvB,EAAgBuB,IAI1B,aADuBb,KAAKC,UAAUU,eAAeG,EAEzD,CAAE,MAAON,GAEL,MADkB,IAAIC,EAAUD,EAAoC,iBAAkBR,KAAKU,WAE/F,CACJ,CAEA,gCAAaK,CAA2BC,GACpC,IAEI,aADuBhB,KAAKC,UAAUc,2BAA2BC,EAErE,CAAE,MAAOR,GAEL,MADkB,IAAIC,EAAUD,EAAoC,6BAA8BR,KAAKU,WAE3G,CACJ,CArDAO,WAAAA,CAAYC,EAAqBC,aAC7BC,MAAMF,EAAYG,cAAcC,SAAS,QAAUC,EAAgBC,EAAeL,KAHzD,UAAbT,kBAAhBV,2FAIA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{interpolateElement as t}from"../../../language/utils.js";
|
|
1
|
+
import{interpolateElement as t}from"../../../language/utils.js";function s(t,s,e){return s in t?Object.defineProperty(t,s,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[s]=e,t}class e{update(t){const{minutes:s,seconds:e}=t;if("-"===s||"-"===e)return;const i="string"==typeof s?parseInt(s,10):s,r="string"==typeof e?parseInt(e,10):e;this.timeLeft={minutes:i,seconds:r},i>5&&this.timeout!==this.LONG_TIMEOUT&&(this.timeout=this.LONG_TIMEOUT,this.setInterval(this.timeout)),i>=1&&i<=5&&this.timeout!==this.MID_TIMEOUT&&(this.timeout=this.MID_TIMEOUT,this.setInterval(this.timeout)),i<1&&r>0&&this.timeout!==this.SHORT_TIMEOUT&&(this.timeout=this.SHORT_TIMEOUT,this.setInterval(this.timeout))}tearDown(){this.clearInterval(),this.srPanel.setAriaProps({"aria-relevant":this.srPanel.constructor.defaultProps.ariaAttributes["aria-relevant"]}),this.srPanel.setMessages(null)}setInterval(t){this.clearInterval();const s=()=>{this.srPanel.setMessages(null),this.srPanel.setMessages(this.getSrMessages(this.timeLeft))};s(),this.srInterval=setInterval(s,t)}getSrMessages({minutes:s,seconds:e}){const i=this.i18n.get(this.TRANSLATION_KEY),r=[s,e].map((t=>0!==t?s=>`${t} ${s}`:()=>""));return[t(i,r).join("")]}clearInterval(){this.srInterval&&clearInterval(this.srInterval)}constructor(t){s(this,"TRANSLATION_KEY","sr.wechatpay.timetopay"),s(this,"LONG_TIMEOUT",18e4),s(this,"MID_TIMEOUT",6e4),s(this,"SHORT_TIMEOUT",3e4),s(this,"srPanel",void 0),s(this,"i18n",void 0),s(this,"srInterval",void 0),s(this,"timeout",void 0),s(this,"timeLeft",void 0);const{srPanel:e,i18n:i}=t;this.srPanel=e,this.i18n=i,this.srPanel.setAriaProps({"aria-relevant":"additions text"})}}export{e as CountdownA11yReporter};
|
|
2
2
|
//# sourceMappingURL=CountdownA11yReporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CountdownA11yReporter.js","sources":["../../../../../src/components/internal/Countdown/CountdownA11yReporter.ts"],"sourcesContent":["import { interpolateElement } from '../../../language/utils';\nimport { SRPanel } from '../../../core/Errors/SRPanel';\nimport Language from '../../../language';\nimport { CountdownTime } from './types';\n\ninterface ICountdownA11yService {\n srPanel: SRPanel;\n i18n: Language;\n}\n\nexport class CountdownA11yReporter {\n protected TRANSLATION_KEY = 'sr.wechatpay.timetopay';\n protected LONG_TIMEOUT = 180000;\n protected MID_TIMEOUT = 60000;\n protected SHORT_TIMEOUT = 30000;\n\n private readonly srPanel: SRPanel;\n private readonly i18n: Language;\n private srInterval: ReturnType<typeof setInterval>;\n private timeout: number;\n private timeLeft: CountdownTime;\n\n constructor(props: ICountdownA11yService) {\n const { srPanel, i18n } = props;\n\n this.srPanel = srPanel;\n this.i18n = i18n;\n // Force the srPanel to update ariaRelevant\n this.srPanel.setAriaProps({ 'aria-relevant': 'additions text' });\n }\n\n public update(time: CountdownTime): void {\n const { minutes, seconds } = time;\n if (minutes === '-' || seconds === '-') return;\n\n const minutesLeft = typeof minutes === 'string' ? parseInt(minutes, 10) : minutes;\n const secondsLeft = typeof seconds === 'string' ? parseInt(seconds, 10) : seconds;\n this.timeLeft = { minutes: minutesLeft, seconds: secondsLeft };\n\n if (minutesLeft > 5 && this.timeout !== this.LONG_TIMEOUT) {\n this.timeout = this.LONG_TIMEOUT;\n this.setInterval(this.timeout);\n }\n if (minutesLeft >= 1 && minutesLeft <= 5 && this.timeout !== this.MID_TIMEOUT) {\n this.timeout = this.MID_TIMEOUT;\n this.setInterval(this.timeout);\n }\n if (minutesLeft < 1 && secondsLeft > 0 && this.timeout !== this.SHORT_TIMEOUT) {\n this.timeout = this.SHORT_TIMEOUT;\n this.setInterval(this.timeout);\n }\n }\n\n public tearDown(): void {\n this.clearInterval();\n // Reset the srPanel ariaRelevant\n this.srPanel.setAriaProps({ 'aria-relevant': this.srPanel.constructor['defaultProps'].ariaAttributes['aria-relevant'] });\n this.srPanel.setMessages(null);\n }\n\n private setInterval(timeout): void {\n this.clearInterval();\n const setSrMessages = () => {\n this.srPanel.setMessages(null);\n this.srPanel.setMessages(this.getSrMessages(this.timeLeft));\n };\n // To execute immediately\n setSrMessages();\n this.srInterval = setInterval(setSrMessages, timeout);\n }\n\n private getSrMessages({ minutes, seconds }): Array<string> {\n const translation = this.i18n.get(this.TRANSLATION_KEY);\n const getTimeTranslation = time => (time !== 0 ? translation => `${time} ${translation}` : () => '');\n const fns = [minutes, seconds].map(getTimeTranslation);\n return [interpolateElement(translation, fns).join('')];\n }\n\n private clearInterval(): void {\n if (this.srInterval) clearInterval(this.srInterval);\n }\n}\n"],"names":["CountdownA11yReporter","
|
|
1
|
+
{"version":3,"file":"CountdownA11yReporter.js","sources":["../../../../../src/components/internal/Countdown/CountdownA11yReporter.ts"],"sourcesContent":["import { interpolateElement } from '../../../language/utils';\nimport { SRPanel } from '../../../core/Errors/SRPanel';\nimport Language from '../../../language';\nimport { CountdownTime } from './types';\n\ninterface ICountdownA11yService {\n srPanel: SRPanel;\n i18n: Language;\n}\n\nexport class CountdownA11yReporter {\n protected TRANSLATION_KEY = 'sr.wechatpay.timetopay';\n protected LONG_TIMEOUT = 180000;\n protected MID_TIMEOUT = 60000;\n protected SHORT_TIMEOUT = 30000;\n\n private readonly srPanel: SRPanel;\n private readonly i18n: Language;\n private srInterval: ReturnType<typeof setInterval>;\n private timeout: number;\n private timeLeft: CountdownTime;\n\n constructor(props: ICountdownA11yService) {\n const { srPanel, i18n } = props;\n\n this.srPanel = srPanel;\n this.i18n = i18n;\n // Force the srPanel to update ariaRelevant\n this.srPanel.setAriaProps({ 'aria-relevant': 'additions text' });\n }\n\n public update(time: CountdownTime): void {\n const { minutes, seconds } = time;\n if (minutes === '-' || seconds === '-') return;\n\n const minutesLeft = typeof minutes === 'string' ? parseInt(minutes, 10) : minutes;\n const secondsLeft = typeof seconds === 'string' ? parseInt(seconds, 10) : seconds;\n this.timeLeft = { minutes: minutesLeft, seconds: secondsLeft };\n\n if (minutesLeft > 5 && this.timeout !== this.LONG_TIMEOUT) {\n this.timeout = this.LONG_TIMEOUT;\n this.setInterval(this.timeout);\n }\n if (minutesLeft >= 1 && minutesLeft <= 5 && this.timeout !== this.MID_TIMEOUT) {\n this.timeout = this.MID_TIMEOUT;\n this.setInterval(this.timeout);\n }\n if (minutesLeft < 1 && secondsLeft > 0 && this.timeout !== this.SHORT_TIMEOUT) {\n this.timeout = this.SHORT_TIMEOUT;\n this.setInterval(this.timeout);\n }\n }\n\n public tearDown(): void {\n this.clearInterval();\n // Reset the srPanel ariaRelevant\n this.srPanel.setAriaProps({ 'aria-relevant': this.srPanel.constructor['defaultProps'].ariaAttributes['aria-relevant'] });\n this.srPanel.setMessages(null);\n }\n\n private setInterval(timeout): void {\n this.clearInterval();\n const setSrMessages = () => {\n this.srPanel.setMessages(null);\n this.srPanel.setMessages(this.getSrMessages(this.timeLeft));\n };\n // To execute immediately\n setSrMessages();\n this.srInterval = setInterval(setSrMessages, timeout);\n }\n\n private getSrMessages({ minutes, seconds }): Array<string> {\n const translation = this.i18n.get(this.TRANSLATION_KEY);\n const getTimeTranslation = time => (time !== 0 ? translation => `${time} ${translation}` : () => '');\n const fns = [minutes, seconds].map(getTimeTranslation);\n return [interpolateElement(translation, fns).join('')];\n }\n\n private clearInterval(): void {\n if (this.srInterval) clearInterval(this.srInterval);\n }\n}\n"],"names":["CountdownA11yReporter","update","time","minutes","seconds","minutesLeft","parseInt","secondsLeft","this","timeLeft","timeout","LONG_TIMEOUT","setInterval","MID_TIMEOUT","SHORT_TIMEOUT","tearDown","clearInterval","srPanel","setAriaProps","constructor","ariaAttributes","setMessages","setSrMessages","getSrMessages","srInterval","translation","i18n","get","TRANSLATION_KEY","fns","map","interpolateElement","join","props","_define_property"],"mappings":"wLAUO,MAAMA,EAqBFC,MAAAA,CAAOC,GACV,MAAMC,QAAEA,EAAOC,QAAEA,GAAYF,EAC7B,GAAgB,MAAZC,GAA+B,MAAZC,EAAiB,OAExC,MAAMC,EAAiC,iBAAZF,EAAuBG,SAASH,EAAS,IAAMA,EACpEI,EAAiC,iBAAZH,EAAuBE,SAASF,EAAS,IAAMA,EAC1EI,KAAKC,SAAW,CAAEN,QAASE,EAAaD,QAASG,GAE7CF,EAAc,GAAKG,KAAKE,UAAYF,KAAKG,eACzCH,KAAKE,QAAUF,KAAKG,aACpBH,KAAKI,YAAYJ,KAAKE,UAEtBL,GAAe,GAAKA,GAAe,GAAKG,KAAKE,UAAYF,KAAKK,cAC9DL,KAAKE,QAAUF,KAAKK,YACpBL,KAAKI,YAAYJ,KAAKE,UAEtBL,EAAc,GAAKE,EAAc,GAAKC,KAAKE,UAAYF,KAAKM,gBAC5DN,KAAKE,QAAUF,KAAKM,cACpBN,KAAKI,YAAYJ,KAAKE,SAE9B,CAEOK,QAAAA,GACHP,KAAKQ,gBAELR,KAAKS,QAAQC,aAAa,CAAE,gBAAiBV,KAAKS,QAAQE,YAA2B,aAACC,eAAe,mBACrGZ,KAAKS,QAAQI,YAAY,KAC7B,CAEQT,WAAAA,CAAYF,GAChBF,KAAKQ,gBACL,MAAMM,EAAgB,KAClBd,KAAKS,QAAQI,YAAY,MACzBb,KAAKS,QAAQI,YAAYb,KAAKe,cAAcf,KAAKC,UAAQ,EAG7Da,IACAd,KAAKgB,WAAaZ,YAAYU,EAAeZ,EACjD,CAEQa,aAAAA,EAAcpB,QAAEA,EAAOC,QAAEA,IAC7B,MAAMqB,EAAcjB,KAAKkB,KAAKC,IAAInB,KAAKoB,iBAEjCC,EAAM,CAAC1B,EAASC,GAAS0B,KADJ5B,GAAkB,IAATA,EAAauB,GAAe,GAAGvB,KAAQuB,IAAgB,IAAM,KAEjG,MAAO,CAACM,EAAmBN,EAAaI,GAAKG,KAAK,IACtD,CAEQhB,aAAAA,GACAR,KAAKgB,YAAYR,cAAcR,KAAKgB,WAC5C,CA1DAL,WAAAA,CAAYc,GAXZC,EAAA1B,KAAUoB,kBAAkB,0BAC5BM,EAAA1B,KAAUG,eAAe,MACzBuB,EAAA1B,KAAUK,cAAc,KACxBqB,EAAA1B,KAAUM,gBAAgB,KAE1BoB,EAAA1B,KAAiBS,eAAjB,GACAiB,EAAA1B,KAAiBkB,YAAjB,GACAQ,EAAA1B,KAAQgB,kBAAR,GACAU,EAAA1B,KAAQE,eAAR,GACAwB,EAAA1B,KAAQC,gBAAR,GAGI,MAAMQ,QAAEA,EAAOS,KAAEA,GAASO,EAE1BzB,KAAKS,QAAUA,EACfT,KAAKkB,KAAOA,EAEZlB,KAAKS,QAAQC,aAAa,CAAE,gBAAiB,kBACjD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import o from"../Field/Field.js";import s from"../Checkbox/Checkbox.js";function a({errorMessage:a,label:
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import o from"../Field/Field.js";import s from"../Checkbox/Checkbox.js";function a({errorMessage:a,label:c,onChange:n,i18n:r,...t}){var i;return e(o,{classNameModifiers:["consentCheckbox"],errorMessage:a,i18n:r,name:"consentCheckbox",useLabelElement:!1},e(s,{name:"consentCheckbox",classNameModifiers:[...(i=t).classNameModifiers??(i.classNameModifiers=[]),"consentCheckbox"],onInput:n,value:t?.data?.consentCheckbox,label:c,checked:t.checked}))}export{a as default};
|
|
2
2
|
//# sourceMappingURL=ConsentCheckbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsentCheckbox.js","sources":["../../../../../../src/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.tsx"],"sourcesContent":["import { h } from 'preact';\nimport Field from '../Field';\nimport Checkbox from '../Checkbox';\n\nexport default function ConsentCheckbox({ errorMessage, label, onChange, i18n, ...props }) {\n return (\n <Field classNameModifiers={['consentCheckbox']} errorMessage={errorMessage} i18n={i18n} name={'consentCheckbox'} useLabelElement={false}>\n <Checkbox\n name={'consentCheckbox'}\n classNameModifiers={[...(props.classNameModifiers ??= []), 'consentCheckbox']}\n onInput={onChange}\n value={props?.data?.consentCheckbox}\n label={label}\n checked={props.checked}\n />\n </Field>\n );\n}\n"],"names":["ConsentCheckbox","errorMessage","label","onChange","i18n","props","h","Field","classNameModifiers","name","useLabelElement","Checkbox","onInput","value","data","consentCheckbox","checked"],"mappings":"mJAIe,SAASA,GAAgBC,aAAEA,EAAYC,MAAEA,EAAKC,SAAEA,EAAQC,KAAEA,KAASC,
|
|
1
|
+
{"version":3,"file":"ConsentCheckbox.js","sources":["../../../../../../src/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.tsx"],"sourcesContent":["import { h } from 'preact';\nimport Field from '../Field';\nimport Checkbox from '../Checkbox';\n\nexport default function ConsentCheckbox({ errorMessage, label, onChange, i18n, ...props }) {\n return (\n <Field classNameModifiers={['consentCheckbox']} errorMessage={errorMessage} i18n={i18n} name={'consentCheckbox'} useLabelElement={false}>\n <Checkbox\n name={'consentCheckbox'}\n classNameModifiers={[...(props.classNameModifiers ??= []), 'consentCheckbox']}\n onInput={onChange}\n value={props?.data?.consentCheckbox}\n label={label}\n checked={props.checked}\n />\n </Field>\n );\n}\n"],"names":["ConsentCheckbox","errorMessage","label","onChange","i18n","props","h","Field","classNameModifiers","name","useLabelElement","Checkbox","onInput","value","data","consentCheckbox","checked"],"mappings":"mJAIe,SAASA,GAAgBC,aAAEA,EAAYC,MAAEA,EAAKC,SAAEA,EAAQC,KAAEA,KAASC,IAKzCA,IAAAA,EAJrC,OACIC,EAACC,EAAAA,CAAMC,mBAAoB,CAAC,mBAAoBP,aAAcA,EAAcG,KAAMA,EAAMK,KAAM,kBAAmBC,iBAAiB,GAC9HJ,EAACK,EAAAA,CACGF,KAAM,kBACND,mBAAoB,KAAKH,EAAAA,GAAMG,qBAANH,EAAMG,mBAAuB,IAAK,mBAC3DI,QAAST,EACTU,MAAOR,GAAOS,MAAMC,gBACpBb,MAAOA,EACPc,QAASX,EAAMW,UAI/B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as i}from"../../../external/preact/dist/preact.js";import t from"../../../external/classnames/index.js";
|
|
1
|
+
import{Component as e,createElement as i}from"../../../external/preact/dist/preact.js";import t from"../../../external/classnames/index.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 n extends e{iframeOnLoad(){this.props.callback&&"function"==typeof this.props.callback&&this.props.callback(this.iframeEl.contentWindow)}componentDidMount(){this.iframeEl.addEventListener?this.iframeEl.addEventListener("load",this.iframeOnLoad.bind(this),!1):this.iframeEl.attachEvent?this.iframeEl.attachEvent("onload",this.iframeOnLoad.bind(this)):this.iframeEl.onload=this.iframeOnLoad.bind(this)}componentWillUnmount(){this.iframeEl.removeEventListener?this.iframeEl.removeEventListener("load",this.iframeOnLoad.bind(this),!1):this.iframeEl.detachEvent?this.iframeEl.detachEvent("onload",this.iframeOnLoad.bind(this)):this.iframeEl.onload=null}render({name:e,src:a,width:n,height:r,minWidth:s,minHeight:l,allow:o,title:m,classNameModifiers:h}){const d=h.filter((e=>!!e));return i("iframe",{ref:e=>{this.iframeEl=e},allow:o,className:t("adyen-checkout__iframe",`adyen-checkout__iframe--${e}`,d.length&&h.map((i=>`adyen-checkout__iframe--${e}-${i}`))),name:e,src:a,width:n,height:r,frameBorder:"0",title:m,referrerpolicy:"origin","min-width":s,"min-height":l})}constructor(...e){super(...e),a(this,"iframeEl",void 0)}}a(n,"defaultProps",{width:"0",height:"0",minWidth:"0",minHeight:"0",src:null,allow:null,title:"components iframe",classNameModifiers:[]});export{n as default};
|
|
2
2
|
//# sourceMappingURL=Iframe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Iframe.js","sources":["../../../../../src/components/internal/IFrame/Iframe.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport './Iframe.scss';\n\ninterface IframeProps {\n width?: string;\n height?: string;\n minWidth?: string;\n minHeight?: string;\n border?: string;\n src?: string;\n allow?: string;\n name?: string;\n title?: string;\n classNameModifiers?: string[];\n callback?: (contentWindow) => void;\n}\n\nclass Iframe extends Component<IframeProps> {\n public static defaultProps = {\n width: '0',\n height: '0',\n minWidth: '0',\n minHeight: '0',\n src: null,\n allow: null,\n title: 'components iframe',\n classNameModifiers: []\n };\n\n private iframeEl;\n\n iframeOnLoad() {\n if (this.props.callback && typeof this.props.callback === 'function') {\n this.props.callback(this.iframeEl.contentWindow);\n }\n }\n\n componentDidMount() {\n if (this.iframeEl.addEventListener) {\n this.iframeEl.addEventListener('load', this.iframeOnLoad.bind(this), false);\n } else if (this.iframeEl.attachEvent) {\n // IE fallback\n this.iframeEl.attachEvent('onload', this.iframeOnLoad.bind(this));\n } else {\n this.iframeEl.onload = this.iframeOnLoad.bind(this);\n }\n }\n\n componentWillUnmount() {\n if (this.iframeEl.removeEventListener) {\n this.iframeEl.removeEventListener('load', this.iframeOnLoad.bind(this), false);\n } else if (this.iframeEl.detachEvent) {\n // IE fallback\n this.iframeEl.detachEvent('onload', this.iframeOnLoad.bind(this));\n } else {\n this.iframeEl.onload = null;\n }\n }\n\n render({ name, src, width, height, minWidth, minHeight, allow, title, classNameModifiers }: IframeProps) {\n const validClassNameModifiers = classNameModifiers.filter(m => !!m);\n\n return (\n <iframe\n ref={ref => {\n this.iframeEl = ref;\n }}\n allow={allow}\n className={classNames(\n 'adyen-checkout__iframe',\n `adyen-checkout__iframe--${name}`,\n validClassNameModifiers.length && classNameModifiers.map(m => `adyen-checkout__iframe--${name}-${m}`)\n )}\n name={name}\n src={src}\n width={width}\n height={height}\n frameBorder=\"0\"\n title={title}\n /* eslint-disable react/no-unknown-property */\n referrerpolicy=\"origin\"\n min-width={minWidth}\n min-height={minHeight}\n /* eslint-enable react/no-unknown-property */\n />\n );\n }\n}\n\nexport default Iframe;\n"],"names":["Iframe","Component","
|
|
1
|
+
{"version":3,"file":"Iframe.js","sources":["../../../../../src/components/internal/IFrame/Iframe.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport './Iframe.scss';\n\ninterface IframeProps {\n width?: string;\n height?: string;\n minWidth?: string;\n minHeight?: string;\n border?: string;\n src?: string;\n allow?: string;\n name?: string;\n title?: string;\n classNameModifiers?: string[];\n callback?: (contentWindow) => void;\n}\n\nclass Iframe extends Component<IframeProps> {\n public static defaultProps = {\n width: '0',\n height: '0',\n minWidth: '0',\n minHeight: '0',\n src: null,\n allow: null,\n title: 'components iframe',\n classNameModifiers: []\n };\n\n private iframeEl;\n\n iframeOnLoad() {\n if (this.props.callback && typeof this.props.callback === 'function') {\n this.props.callback(this.iframeEl.contentWindow);\n }\n }\n\n componentDidMount() {\n if (this.iframeEl.addEventListener) {\n this.iframeEl.addEventListener('load', this.iframeOnLoad.bind(this), false);\n } else if (this.iframeEl.attachEvent) {\n // IE fallback\n this.iframeEl.attachEvent('onload', this.iframeOnLoad.bind(this));\n } else {\n this.iframeEl.onload = this.iframeOnLoad.bind(this);\n }\n }\n\n componentWillUnmount() {\n if (this.iframeEl.removeEventListener) {\n this.iframeEl.removeEventListener('load', this.iframeOnLoad.bind(this), false);\n } else if (this.iframeEl.detachEvent) {\n // IE fallback\n this.iframeEl.detachEvent('onload', this.iframeOnLoad.bind(this));\n } else {\n this.iframeEl.onload = null;\n }\n }\n\n render({ name, src, width, height, minWidth, minHeight, allow, title, classNameModifiers }: IframeProps) {\n const validClassNameModifiers = classNameModifiers.filter(m => !!m);\n\n return (\n <iframe\n ref={ref => {\n this.iframeEl = ref;\n }}\n allow={allow}\n className={classNames(\n 'adyen-checkout__iframe',\n `adyen-checkout__iframe--${name}`,\n validClassNameModifiers.length && classNameModifiers.map(m => `adyen-checkout__iframe--${name}-${m}`)\n )}\n name={name}\n src={src}\n width={width}\n height={height}\n frameBorder=\"0\"\n title={title}\n /* eslint-disable react/no-unknown-property */\n referrerpolicy=\"origin\"\n min-width={minWidth}\n min-height={minHeight}\n /* eslint-enable react/no-unknown-property */\n />\n );\n }\n}\n\nexport default Iframe;\n"],"names":["Iframe","Component","iframeOnLoad","this","props","callback","iframeEl","contentWindow","componentDidMount","addEventListener","bind","attachEvent","onload","componentWillUnmount","removeEventListener","detachEvent","render","name","src","width","height","minWidth","minHeight","allow","title","classNameModifiers","validClassNameModifiers","filter","m","h","iframe","ref","className","classNames","length","map","frameBorder","referrerpolicy","min-width","min-height","_define_property","defaultProps"],"mappings":"oQAkBA,MAAMA,UAAeC,EAcjBC,YAAAA,GACQC,KAAKC,MAAMC,UAA2C,mBAAxBF,KAAKC,MAAMC,UACzCF,KAAKC,MAAMC,SAASF,KAAKG,SAASC,cAE1C,CAEAC,iBAAAA,GACQL,KAAKG,SAASG,iBACdN,KAAKG,SAASG,iBAAiB,OAAQN,KAAKD,aAAaQ,KAAKP,OAAO,GAC9DA,KAAKG,SAASK,YAErBR,KAAKG,SAASK,YAAY,SAAUR,KAAKD,aAAaQ,KAAKP,OAE3DA,KAAKG,SAASM,OAAST,KAAKD,aAAaQ,KAAKP,KAEtD,CAEAU,oBAAAA,GACQV,KAAKG,SAASQ,oBACdX,KAAKG,SAASQ,oBAAoB,OAAQX,KAAKD,aAAaQ,KAAKP,OAAO,GACjEA,KAAKG,SAASS,YAErBZ,KAAKG,SAASS,YAAY,SAAUZ,KAAKD,aAAaQ,KAAKP,OAE3DA,KAAKG,SAASM,OAAS,IAE/B,CAEAI,MAAAA,EAAOC,KAAEA,EAAIC,IAAEA,EAAGC,MAAEA,EAAKC,OAAEA,EAAMC,SAAEA,EAAQC,UAAEA,EAASC,MAAEA,EAAKC,MAAEA,EAAKC,mBAAEA,IAClE,MAAMC,EAA0BD,EAAmBE,QAAOC,KAAOA,IAEjE,OACIC,EAACC,SAAAA,CACGC,IAAKA,IACD5B,KAAKG,SAAWyB,CAAAA,EAEpBR,MAAOA,EACPS,UAAWC,EACP,yBACA,2BAA2BhB,IAC3BS,EAAwBQ,QAAUT,EAAmBU,KAAIP,GAAK,2BAA2BX,KAAQW,OAErGX,KAAMA,EACNC,IAAKA,EACLC,MAAOA,EACPC,OAAQA,EACRgB,YAAY,IACZZ,MAAOA,EAEPa,eAAe,SACfC,YAAWjB,EACXkB,aAAYjB,GAIxB,+BAzDAkB,EAAArC,KAAQG,gBAAR,IAXAkC,EADExC,EACYyC,eAAe,CACzBtB,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,UAAW,IACXJ,IAAK,KACLK,MAAO,KACPC,MAAO,oBACPC,mBAAoB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as
|
|
1
|
+
import{Component as e,createElement as a}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../FormFields/Field/Field.js";import{isValidHolder as s,checkIbanStatus as i}from"./validate.js";import{electronicFormat as n,formatIban as o,getCountryCode as l,getNextCursorPosition as d}from"./utils.js";import h from"../FormFields/Fieldset/Fieldset.js";import u from"../FormFields/InputText.js";function b(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}const m={isValid:!1,errorMessage:"ach.accountHolderNameField.invalid",error:"ach.accountHolderNameField.invalid"},c={isValid:!1,errorMessage:"sepaDirectDebit.ibanField.invalid",error:"sepaDirectDebit.ibanField.invalid"};class p extends e{setStatus(e){this.setState({status:e})}onChange(){const e=!this.props.holderName||s(this.state.data.ownerName),a="valid"===i(this.state.data.ibanNumber).status&&e,t={data:this.state.data,isValid:a,errors:this.state.errors};this.props.onChange(t)}showValidation(){const e=i(this.state.data.ibanNumber).status,a=s(this.state.data.ownerName);this.setError("iban","valid"!==e?c:null);const t=a?null:m;this.setError("holder",t,this.onChange)}render({placeholders:e},{data:s,errors:i,valid:n}){const{i18n:o}=t();return a(h,{classNameModifiers:["iban-input"],label:this.props.label},this.props.holderName&&a(r,{className:"adyen-checkout__field--owner-name",label:o.get("sepa.ownerName"),filled:s.ownerName&&s.ownerName.length,errorMessage:!!i.holder&&o.get(i.holder.error),dir:"ltr",i18n:o,name:"ownerName"},a(u,{name:"ownerName",className:"adyen-checkout__iban-input__owner-name",placeholder:e?.ownerName,value:s.ownerName,"aria-invalid":!!this.state.errors.holder,"aria-label":o.get("sepa.ownerName"),onInput:e=>this.handleHolderInput(e.target.value),onBlur:e=>this.handleHolderInput(e.target.value)})),a(r,{className:"adyen-checkout__field--iban-number",label:o.get("sepa.ibanNumber"),errorMessage:!!i.iban&&o.get(i.iban.error),filled:s.ibanNumber&&s.ibanNumber.length,isValid:n.iban,onBlur:this.handleIbanBlur,dir:"ltr",i18n:o,name:"ibanNumber"},a(u,{setRef:e=>{this.ibanNumber=e},name:"ibanNumber",className:"adyen-checkout__iban-input__iban-number",classNameModifiers:["large"],placeholder:e?.ibanNumber,value:s.ibanNumber,onInput:this.handleIbanInput,"aria-invalid":!!this.state.errors.iban,"aria-label":o.get("sepa.ibanNumber"),autocorrect:"off",spellcheck:!1})),this.props.showPayButton&&this.props.payButton({status:this.state.status}))}constructor(e){if(super(e),b(this,"ibanNumber",void 0),b(this,"setData",((e,a,t)=>{this.setState((t=>({data:{...t.data,[e]:a}})),t)})),b(this,"setError",((e,a,t)=>{this.setState((t=>({errors:{...t.errors,[e]:a}})),t)})),b(this,"setValid",((e,a,t)=>{this.setState((t=>({valid:{...t.valid,[e]:a}})),t)})),b(this,"handleHolderInput",(e=>{this.setState((a=>({data:{...a.data,ownerName:e}})),(()=>{const e=s(this.state.data.ownerName),a=null==e||e?null:m;this.setError("holder",a,this.onChange)}))})),b(this,"handleIbanInput",(e=>{const a=e.target.value,t=n(a),r=o(t),s=i(r).status,h=l(t),u=e.target.selectionStart,b=this.state.data.ibanNumber,m=d(u,r,b);this.setState((e=>({data:{...e.data,ibanNumber:r,countryCode:h},errors:{...e.errors,iban:"invalid"===s?c:null},valid:{...e.valid,iban:"valid"===s}})),(()=>{e.target.setSelectionRange(m,m),this.onChange()}))})),b(this,"handleIbanBlur",(e=>{const a=e.target.value;if(a.length>0){const e=i(a).status;this.setError("iban","valid"!==e?c:null,this.onChange)}else this.setError("iban",null,this.onChange)})),this.state={status:"ready",data:{ownerName:e?.data?.ownerName||"",ibanNumber:e?.data?.ibanNumber||"",countryCode:e?.data?.countryCode||""},isValid:!1,cursor:0,errors:{},valid:{}},this.state.data.ibanNumber){const e=n(this.state.data.ibanNumber);this.state.data.ibanNumber=o(e)}if(this.state.data.ibanNumber||this.state.data.ownerName){const e=this.props.holderName?s(this.state.data.ownerName):"",a=(this.state.data.ibanNumber?"valid"===i(this.state.data.ibanNumber).status:"")&&e,t={data:this.state.data,isValid:a};this.props.onChange(t)}}}b(p,"defaultProps",{onChange:()=>{},countryCode:null,holderName:!0,placeholders:{},label:null});export{p as default};
|
|
2
2
|
//# sourceMappingURL=IbanInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IbanInput.js","sources":["../../../../../src/components/internal/IbanInput/IbanInput.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../FormFields/Field';\nimport { checkIbanStatus, isValidHolder } from './validate';\nimport { electronicFormat, formatIban, getCountryCode, getNextCursorPosition } from './utils';\nimport Fieldset from '../FormFields/Fieldset';\nimport { GenericError } from '../../../core/Errors/types';\nimport InputText from '../FormFields/InputText';\n\ninterface IbanInputProps {\n holderName?: boolean;\n placeholders?: Omit<IbanData, 'countryCode'>;\n countryCode?: string;\n showPayButton?: boolean;\n payButton?: any;\n onChange: (data) => void;\n label: string;\n data: IbanData;\n}\n\ninterface IbanData {\n ownerName?: string;\n ibanNumber?: string;\n countryCode?: string;\n}\n\ninterface IbanInputState {\n data: any;\n errors: any;\n valid: any;\n status: string;\n isValid: boolean;\n cursor: number;\n}\n\nconst ibanHolderNameErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'ach.accountHolderNameField.invalid', // TODO create bespoke translation key\n error: 'ach.accountHolderNameField.invalid'\n};\n\nconst ibanErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'sepaDirectDebit.ibanField.invalid',\n error: 'sepaDirectDebit.ibanField.invalid'\n};\n\nclass IbanInput extends Component<IbanInputProps, IbanInputState> {\n private ibanNumber: HTMLInputElement;\n\n constructor(props) {\n super(props);\n\n this.state = {\n status: 'ready',\n data: {\n ownerName: props?.data?.ownerName || '',\n ibanNumber: props?.data?.ibanNumber || '',\n countryCode: props?.data?.countryCode || ''\n },\n isValid: false,\n cursor: 0,\n errors: {},\n valid: {}\n };\n\n if (this.state.data['ibanNumber']) {\n const electronicFormatIban = electronicFormat(this.state.data['ibanNumber']); // example: NL13TEST0123456789\n this.state.data['ibanNumber'] = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n }\n\n if (this.state.data['ibanNumber'] || this.state.data['ownerName']) {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : '';\n const ibanValid = this.state.data['ibanNumber'] ? checkIbanStatus(this.state.data['ibanNumber']).status === 'valid' : '';\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid };\n\n this.props.onChange(data);\n }\n }\n\n public static defaultProps = {\n onChange: () => {},\n countryCode: null,\n holderName: true,\n placeholders: {},\n label: null\n };\n\n setStatus(status) {\n this.setState({ status });\n }\n\n onChange() {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : true;\n const ibanValid = checkIbanStatus(this.state.data['ibanNumber']).status === 'valid';\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid, errors: this.state.errors };\n\n this.props.onChange(data);\n }\n\n public setData = (key, value, cb?) => {\n this.setState(prevState => ({ data: { ...prevState.data, [key]: value } }), cb);\n };\n\n public setError = (key, value, cb?) => {\n this.setState(prevState => ({ errors: { ...prevState.errors, [key]: value } }), cb);\n };\n\n public setValid = (key, value, cb?) => {\n this.setState(prevState => ({ valid: { ...prevState.valid, [key]: value } }), cb);\n };\n\n public handleHolderInput = holder => {\n this.setState(\n prevState => ({ data: { ...prevState.data, ownerName: holder } }),\n () => {\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n const holderErr =\n holderStatus != null && !holderStatus // *don't* consider null, i.e. a value that has just been deleted, to be in error\n ? ibanHolderNameErrorObj\n : null;\n\n this.setError('holder', holderErr, this.onChange);\n }\n );\n };\n\n public handleIbanInput = e => {\n const inputValue = e.target.value;\n const electronicFormatIban = electronicFormat(inputValue); // example: NL13TEST0123456789\n const iban = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n const validationStatus = checkIbanStatus(iban).status;\n\n const countryCode = getCountryCode(electronicFormatIban);\n\n // calculate cursor's new position\n const cursor = e.target.selectionStart;\n const previousIban = this.state.data['ibanNumber'];\n const newCursorPosition = getNextCursorPosition(cursor, iban, previousIban);\n\n this.setState(\n prevState => ({\n data: { ...prevState.data, ibanNumber: iban, countryCode: countryCode },\n errors: {\n ...prevState.errors,\n iban: validationStatus === 'invalid' ? ibanErrorObj : null\n },\n valid: { ...prevState.valid, iban: validationStatus === 'valid' }\n }),\n () => {\n e.target.setSelectionRange(newCursorPosition, newCursorPosition);\n this.onChange();\n }\n );\n };\n\n public handleIbanBlur = e => {\n const currentIban = e.target.value;\n\n if (currentIban.length > 0) {\n const validationStatus = checkIbanStatus(currentIban).status;\n this.setError('iban', validationStatus !== 'valid' ? ibanErrorObj : null, this.onChange);\n } else {\n // Empty field is not in error\n this.setError('iban', null, this.onChange);\n }\n };\n\n showValidation() {\n const validationStatus = checkIbanStatus(this.state.data['ibanNumber']).status;\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n this.setError('iban', validationStatus !== 'valid' ? ibanErrorObj : null);\n\n const holderErr = !holderStatus // *do* consider null, i.e. an empty field, to be in error\n ? ibanHolderNameErrorObj\n : null;\n\n this.setError('holder', holderErr, this.onChange); // add callback param to force propagation of state to parent comp\n }\n\n render({ placeholders }: IbanInputProps, { data, errors, valid }) {\n const { i18n } = useCoreContext();\n return (\n <Fieldset classNameModifiers={['iban-input']} label={this.props.label}>\n {this.props.holderName && (\n <Field\n className={'adyen-checkout__field--owner-name'}\n label={i18n.get('sepa.ownerName')}\n filled={data['ownerName'] && data['ownerName'].length}\n errorMessage={errors.holder ? i18n.get(errors.holder.error) : false}\n dir={'ltr'}\n i18n={i18n}\n name={'ownerName'}\n >\n <InputText\n name={'ownerName'}\n className={'adyen-checkout__iban-input__owner-name'}\n placeholder={placeholders?.ownerName}\n value={data['ownerName']}\n aria-invalid={!!this.state.errors.holder}\n aria-label={i18n.get('sepa.ownerName')}\n onInput={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n onBlur={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n />\n </Field>\n )}\n\n <Field\n className={'adyen-checkout__field--iban-number'}\n label={i18n.get('sepa.ibanNumber')}\n errorMessage={errors.iban ? i18n.get(errors.iban.error) : false}\n filled={data['ibanNumber'] && data['ibanNumber'].length}\n isValid={valid.iban}\n onBlur={this.handleIbanBlur}\n dir={'ltr'}\n i18n={i18n}\n name={'ibanNumber'}\n >\n <InputText\n setRef={ref => {\n this.ibanNumber = ref;\n }}\n name={'ibanNumber'}\n className={'adyen-checkout__iban-input__iban-number'}\n classNameModifiers={['large']}\n placeholder={placeholders?.ibanNumber}\n value={data['ibanNumber']}\n onInput={this.handleIbanInput}\n aria-invalid={!!this.state.errors.iban}\n aria-label={i18n.get('sepa.ibanNumber')}\n autocorrect={'off'}\n spellcheck={false}\n />\n </Field>\n\n {this.props.showPayButton && this.props.payButton({ status: this.state.status })}\n </Fieldset>\n );\n }\n}\n\nexport default IbanInput;\n"],"names":["ibanHolderNameErrorObj","isValid","errorMessage","error","ibanErrorObj","IbanInput","Component","ibanNumber","constructor","props","super","this","state","status","data","ownerName","countryCode","cursor","errors","valid","electronicFormatIban","electronicFormat","formatIban","holderNameValid","holderName","isValidHolder","checkIbanStatus","onChange","static","placeholders","label","setStatus","setState","setData","key","value","cb","prevState","setError","setValid","handleHolderInput","holder","holderStatus","holderErr","handleIbanInput","e","inputValue","target","iban","validationStatus","getCountryCode","selectionStart","previousIban","newCursorPosition","getNextCursorPosition","setSelectionRange","handleIbanBlur","currentIban","length","showValidation","render","i18n","useCoreContext","h","Fieldset","classNameModifiers","Field","className","get","filled","dir","name","InputText","placeholder","aria-invalid","aria-label","onInput","onBlur","setRef","ref","autocorrect","spellcheck","showPayButton","payButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IbanInput.js","sources":["../../../../../src/components/internal/IbanInput/IbanInput.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../FormFields/Field';\nimport { checkIbanStatus, isValidHolder } from './validate';\nimport { electronicFormat, formatIban, getCountryCode, getNextCursorPosition } from './utils';\nimport Fieldset from '../FormFields/Fieldset';\nimport { GenericError } from '../../../core/Errors/types';\nimport InputText from '../FormFields/InputText';\n\ninterface IbanInputProps {\n holderName?: boolean;\n placeholders?: Omit<IbanData, 'countryCode'>;\n countryCode?: string;\n showPayButton?: boolean;\n payButton?: any;\n onChange: (data) => void;\n label: string;\n data: IbanData;\n}\n\ninterface IbanData {\n ownerName?: string;\n ibanNumber?: string;\n countryCode?: string;\n}\n\ninterface IbanInputState {\n data: any;\n errors: any;\n valid: any;\n status: string;\n isValid: boolean;\n cursor: number;\n}\n\nconst ibanHolderNameErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'ach.accountHolderNameField.invalid', // TODO create bespoke translation key\n error: 'ach.accountHolderNameField.invalid'\n};\n\nconst ibanErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'sepaDirectDebit.ibanField.invalid',\n error: 'sepaDirectDebit.ibanField.invalid'\n};\n\nclass IbanInput extends Component<IbanInputProps, IbanInputState> {\n private ibanNumber: HTMLInputElement;\n\n constructor(props) {\n super(props);\n\n this.state = {\n status: 'ready',\n data: {\n ownerName: props?.data?.ownerName || '',\n ibanNumber: props?.data?.ibanNumber || '',\n countryCode: props?.data?.countryCode || ''\n },\n isValid: false,\n cursor: 0,\n errors: {},\n valid: {}\n };\n\n if (this.state.data['ibanNumber']) {\n const electronicFormatIban = electronicFormat(this.state.data['ibanNumber']); // example: NL13TEST0123456789\n this.state.data['ibanNumber'] = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n }\n\n if (this.state.data['ibanNumber'] || this.state.data['ownerName']) {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : '';\n const ibanValid = this.state.data['ibanNumber'] ? checkIbanStatus(this.state.data['ibanNumber']).status === 'valid' : '';\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid };\n\n this.props.onChange(data);\n }\n }\n\n public static defaultProps = {\n onChange: () => {},\n countryCode: null,\n holderName: true,\n placeholders: {},\n label: null\n };\n\n setStatus(status) {\n this.setState({ status });\n }\n\n onChange() {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : true;\n const ibanValid = checkIbanStatus(this.state.data['ibanNumber']).status === 'valid';\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid, errors: this.state.errors };\n\n this.props.onChange(data);\n }\n\n public setData = (key, value, cb?) => {\n this.setState(prevState => ({ data: { ...prevState.data, [key]: value } }), cb);\n };\n\n public setError = (key, value, cb?) => {\n this.setState(prevState => ({ errors: { ...prevState.errors, [key]: value } }), cb);\n };\n\n public setValid = (key, value, cb?) => {\n this.setState(prevState => ({ valid: { ...prevState.valid, [key]: value } }), cb);\n };\n\n public handleHolderInput = holder => {\n this.setState(\n prevState => ({ data: { ...prevState.data, ownerName: holder } }),\n () => {\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n const holderErr =\n holderStatus != null && !holderStatus // *don't* consider null, i.e. a value that has just been deleted, to be in error\n ? ibanHolderNameErrorObj\n : null;\n\n this.setError('holder', holderErr, this.onChange);\n }\n );\n };\n\n public handleIbanInput = e => {\n const inputValue = e.target.value;\n const electronicFormatIban = electronicFormat(inputValue); // example: NL13TEST0123456789\n const iban = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n const validationStatus = checkIbanStatus(iban).status;\n\n const countryCode = getCountryCode(electronicFormatIban);\n\n // calculate cursor's new position\n const cursor = e.target.selectionStart;\n const previousIban = this.state.data['ibanNumber'];\n const newCursorPosition = getNextCursorPosition(cursor, iban, previousIban);\n\n this.setState(\n prevState => ({\n data: { ...prevState.data, ibanNumber: iban, countryCode: countryCode },\n errors: {\n ...prevState.errors,\n iban: validationStatus === 'invalid' ? ibanErrorObj : null\n },\n valid: { ...prevState.valid, iban: validationStatus === 'valid' }\n }),\n () => {\n e.target.setSelectionRange(newCursorPosition, newCursorPosition);\n this.onChange();\n }\n );\n };\n\n public handleIbanBlur = e => {\n const currentIban = e.target.value;\n\n if (currentIban.length > 0) {\n const validationStatus = checkIbanStatus(currentIban).status;\n this.setError('iban', validationStatus !== 'valid' ? ibanErrorObj : null, this.onChange);\n } else {\n // Empty field is not in error\n this.setError('iban', null, this.onChange);\n }\n };\n\n showValidation() {\n const validationStatus = checkIbanStatus(this.state.data['ibanNumber']).status;\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n this.setError('iban', validationStatus !== 'valid' ? ibanErrorObj : null);\n\n const holderErr = !holderStatus // *do* consider null, i.e. an empty field, to be in error\n ? ibanHolderNameErrorObj\n : null;\n\n this.setError('holder', holderErr, this.onChange); // add callback param to force propagation of state to parent comp\n }\n\n render({ placeholders }: IbanInputProps, { data, errors, valid }) {\n const { i18n } = useCoreContext();\n return (\n <Fieldset classNameModifiers={['iban-input']} label={this.props.label}>\n {this.props.holderName && (\n <Field\n className={'adyen-checkout__field--owner-name'}\n label={i18n.get('sepa.ownerName')}\n filled={data['ownerName'] && data['ownerName'].length}\n errorMessage={errors.holder ? i18n.get(errors.holder.error) : false}\n dir={'ltr'}\n i18n={i18n}\n name={'ownerName'}\n >\n <InputText\n name={'ownerName'}\n className={'adyen-checkout__iban-input__owner-name'}\n placeholder={placeholders?.ownerName}\n value={data['ownerName']}\n aria-invalid={!!this.state.errors.holder}\n aria-label={i18n.get('sepa.ownerName')}\n onInput={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n onBlur={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n />\n </Field>\n )}\n\n <Field\n className={'adyen-checkout__field--iban-number'}\n label={i18n.get('sepa.ibanNumber')}\n errorMessage={errors.iban ? i18n.get(errors.iban.error) : false}\n filled={data['ibanNumber'] && data['ibanNumber'].length}\n isValid={valid.iban}\n onBlur={this.handleIbanBlur}\n dir={'ltr'}\n i18n={i18n}\n name={'ibanNumber'}\n >\n <InputText\n setRef={ref => {\n this.ibanNumber = ref;\n }}\n name={'ibanNumber'}\n className={'adyen-checkout__iban-input__iban-number'}\n classNameModifiers={['large']}\n placeholder={placeholders?.ibanNumber}\n value={data['ibanNumber']}\n onInput={this.handleIbanInput}\n aria-invalid={!!this.state.errors.iban}\n aria-label={i18n.get('sepa.ibanNumber')}\n autocorrect={'off'}\n spellcheck={false}\n />\n </Field>\n\n {this.props.showPayButton && this.props.payButton({ status: this.state.status })}\n </Fieldset>\n );\n }\n}\n\nexport default IbanInput;\n"],"names":["ibanHolderNameErrorObj","isValid","errorMessage","error","ibanErrorObj","IbanInput","Component","setStatus","status","this","setState","onChange","holderNameValid","props","holderName","isValidHolder","state","data","checkIbanStatus","errors","showValidation","validationStatus","holderStatus","setError","holderErr","render","placeholders","valid","i18n","useCoreContext","h","Fieldset","classNameModifiers","label","Field","className","get","filled","length","holder","dir","name","InputText","placeholder","ownerName","value","aria-invalid","aria-label","onInput","e","handleHolderInput","target","onBlur","iban","handleIbanBlur","setRef","ref","ibanNumber","handleIbanInput","autocorrect","spellcheck","showPayButton","payButton","constructor","super","_define_property","setData","key","cb","prevState","setValid","inputValue","electronicFormatIban","electronicFormat","formatIban","countryCode","getCountryCode","cursor","selectionStart","previousIban","newCursorPosition","getNextCursorPosition","setSelectionRange","currentIban","defaultProps"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import o from"../Countdown/index.js";import r from"../Button/Button.js";import s from"../Spinner/Spinner.js";import a from"../../../core/Services/payment-status.js";import{processResponse as
|
|
1
|
+
import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import o from"../Countdown/index.js";import r from"../Button/Button.js";import s from"../Spinner/Spinner.js";import a from"../../../core/Services/payment-status.js";import{processResponse as i}from"../../../core/ProcessResponse/process-response.js";import{copyToClipboard as n}from"../../../utils/clipboard.js";import c from"../../../core/Errors/AdyenCheckoutError.js";import{useCoreContext as p}from"../../../core/Context/CoreProvider.js";import d from"../ContentSeparator/ContentSeparator.js";import l from"../../../core/Context/useImage.js";import{useA11yReporter as m}from"../../../core/Errors/useA11yReporter.js";import u from"../../../utils/useAutoFocus.js";import{ANALYTICS_DOWNLOAD_STR as h,ANALYTICS_QR_CODE_DOWNLOAD as _}from"../../../core/Analytics/constants.js";import{PREFIX as y}from"../Icon/constants.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class f extends t{componentDidMount(){this.statusInterval()}componentWillUnmount(){clearTimeout(this.timeoutId)}pollStatus(t){clearTimeout(this.timeoutId),this.timeoutId=setTimeout((async()=>{const t=performance.now();await this.checkStatus();const e=performance.now();this.statusInterval(Math.round(e-t))}),t)}render({amount:t,url:a,brandLogo:i,brandName:c,countdownTime:g,type:f,onActionHandled:k},{expired:q,completed:b,loading:v}){const{i18n:C,loadingContext:N}=p(),w=l(),T=this.props.qrCodeData?`${N}barcode.shtml?barcodeType=qrCode&fileType=png&data=${this.props.qrCodeData}`:this.props.qrCodeImage,I=(t,o)=>{const r=C.get(o);return m(r),e("div",{className:"adyen-checkout__qr-loader adyen-checkout__qr-loader--result"},e("img",{className:"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result",src:w({imageFolder:"components/"})(t),alt:r}),e("div",{className:"adyen-checkout__qr-loader__subtitle"},r))};if(q)return I("error","error.subtitle.payment");if(b)return I("success","creditCard.success");if(v)return e("div",{className:"adyen-checkout__qr-loader"},i&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{alt:c,src:i,className:"adyen-checkout__qr-loader__brand-logo"})),e(s,null));const j=C.get(this.props.timeToPay).split("%@"),S=u(),x=this.props.classNameModifiers.map((t=>`adyen-checkout__qr-loader--${t}`));return e("div",{className:`adyen-checkout__qr-loader adyen-checkout__qr-loader--${f} ${x.join(" ")}`},i&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{src:i,alt:c,className:"adyen-checkout__qr-loader__brand-logo"})),t&&t.value&&t.currency&&e("div",{className:"adyen-checkout__qr-loader__payment_amount"},C.amount(t.value,t.currency)),a&&e("div",{className:"adyen-checkout__qr-loader__app-link"},this.props.redirectIntroduction&&e("div",{className:"adyen-checkout__qr-loader__subtitle"},C.get(this.props.redirectIntroduction)),e(r,{classNameModifiers:["qr-loader"],onClick:()=>this.redirectToApp(a),label:C.get(this.props.buttonLabel)}),e(d,null)),e("div",{ref:S,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},"string"==typeof this.props.introduction?C.get(this.props.introduction):this.props.introduction?.()),e("img",{src:T,alt:C.get("wechatpay.scanqrcode"),onLoad:()=>{k?.({componentType:this.props.type,actionDescription:"qr-code-loaded"})}}),e("div",{className:"adyen-checkout__qr-loader__progress"},e("span",{className:"adyen-checkout__qr-loader__percentage",style:{width:`${this.state.percentage}%`}})),e("div",{className:"adyen-checkout__qr-loader__countdown"},j[0]," ",e(o,{minutesFromNow:g,onTick:this.onTick,onCompleted:this.onTimeUp})," ",j[1]),this.props.instructions&&e("div",{className:"adyen-checkout__qr-loader__instructions"},"string"==typeof this.props.instructions?C.get(this.props.instructions):this.props.instructions?.()),this.props.copyBtn&&e("div",{className:"adyen-checkout__qr-loader__actions"},e(r,{inline:!0,variant:"action",onClick:(t,{complete:e})=>{n(this.props.qrCodeData),this.props.onSubmitAnalytics({type:h,target:_}),e()},icon:w({imageFolder:"components/"})(`${y}copy`),label:C.get("button.copy")})))}constructor(t){super(t),g(this,"timeoutId",void 0),g(this,"redirectToApp",(t=>{window.location.assign(t)})),g(this,"statusInterval",((t=0)=>{if(this.state.expired||this.state.completed)return;this.setState((e=>({timePassed:e.timePassed+this.props.delay+t})));const e=this.state.timePassed>=this.props.throttleTime?this.props.throttledInterval:this.state.delay;this.pollStatus(e)})),g(this,"onTick",(t=>{this.setState({percentage:t.percentage})})),g(this,"onTimeUp",(()=>{this.setState({expired:!0}),clearTimeout(this.timeoutId),this.props.onError(new c("ERROR","Payment Expired"))})),g(this,"onComplete",(t=>{clearTimeout(this.timeoutId),this.setState({completed:!0,loading:!1});const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)})),g(this,"onError",(t=>{if(clearTimeout(this.timeoutId),this.setState({expired:!0,loading:!1}),t.props.payload){const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)}const e=new c("ERROR","error result with no payload in response");return this.props.onError(e)})),g(this,"checkStatus",(()=>{const{paymentData:t,clientKey:e,loadingContext:o,throttledInterval:r}=this.props;return a(t,e,o,r).then(i).catch((t=>({type:"network-error",props:t}))).then((t=>{switch(t.type){case"success":this.onComplete(t);break;case"error":this.onError(t);break;default:this.setState({loading:!1})}return t}))})),this.state={buttonStatus:"default",completed:!1,delay:t.delay,expired:!1,loading:!0,percentage:100,timePassed:0}}}g(f,"defaultProps",{delay:2e3,countdownTime:15,onError:()=>{},onComplete:()=>{},throttleTime:6e4,classNameModifiers:[],throttledInterval:1e4,introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp"});export{f as default};
|
|
2
2
|
//# sourceMappingURL=QRLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QRLoader.js","sources":["../../../../../src/components/internal/QRLoader/QRLoader.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Countdown from '../Countdown';\nimport Button from '../Button';\nimport Spinner from '../Spinner';\nimport checkPaymentStatus from '../../../core/Services/payment-status';\nimport processResponse from '../../../core/ProcessResponse';\n\nimport './QRLoader.scss';\nimport { QRLoaderProps, QRLoaderState } from './types';\nimport copyToClipboard from '../../../utils/clipboard';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport ContentSeparator from '../ContentSeparator';\nimport { StatusObject } from '../Await/types';\nimport useImage from '../../../core/Context/useImage';\nimport { useA11yReporter } from '../../../core/Errors/useA11yReporter';\nimport useAutoFocus from '../../../utils/useAutoFocus';\nimport { ANALYTICS_DOWNLOAD_STR, ANALYTICS_QR_CODE_DOWNLOAD } from '../../../core/Analytics/constants';\nimport { PREFIX } from '../Icon/constants';\n\nconst QRCODE_URL = 'barcode.shtml?barcodeType=qrCode&fileType=png&data=';\n\nclass QRLoader extends Component<QRLoaderProps, QRLoaderState> {\n private timeoutId;\n\n constructor(props) {\n super(props);\n\n this.state = {\n buttonStatus: 'default',\n completed: false,\n delay: props.delay,\n expired: false,\n loading: true,\n percentage: 100,\n timePassed: 0\n };\n }\n\n public static defaultProps = {\n delay: 2000,\n countdownTime: 15,\n onError: () => {},\n onComplete: () => {},\n throttleTime: 60000,\n classNameModifiers: [],\n throttledInterval: 10000,\n introduction: 'wechatpay.scanqrcode',\n timeToPay: 'wechatpay.timetopay',\n buttonLabel: 'openApp'\n };\n\n componentDidMount() {\n this.statusInterval();\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeoutId);\n }\n\n public redirectToApp = (url: string | URL) => {\n window.location.assign(url);\n };\n\n // Retry until getting a complete response from the server, or it times out\n public statusInterval = (responseTime = 0) => {\n // If we are already in the final statuses, do not poll!\n if (this.state.expired || this.state.completed) return;\n\n this.setState(previous => ({ timePassed: previous.timePassed + this.props.delay + responseTime }));\n // Changes interval time to 10 seconds after 1 minute (60 seconds)\n const newDelay = this.state.timePassed >= this.props.throttleTime ? this.props.throttledInterval : this.state.delay;\n this.pollStatus(newDelay);\n };\n\n private pollStatus(delay: number) {\n clearTimeout(this.timeoutId);\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n // Wait for previous status call to finish.\n // Also taking the server response time into the consideration to calculate timePassed.\n const start = performance.now();\n await this.checkStatus();\n const end = performance.now();\n this.statusInterval(Math.round(end - start));\n }, delay);\n }\n\n private onTick = (time): void => {\n this.setState({ percentage: time.percentage });\n };\n\n private onTimeUp = (): void => {\n this.setState({ expired: true });\n clearTimeout(this.timeoutId);\n this.props.onError(new AdyenCheckoutError('ERROR', 'Payment Expired'));\n };\n\n private onComplete = (status: StatusObject): void => {\n clearTimeout(this.timeoutId);\n this.setState({ completed: true, loading: false });\n\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: this.props.paymentData\n }\n };\n\n this.props.onComplete(state, this);\n };\n\n private onError = (status: StatusObject): void => {\n clearTimeout(this.timeoutId);\n this.setState({ expired: true, loading: false });\n\n if (status.props.payload) {\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: this.props.paymentData\n }\n };\n this.props.onComplete(state, this);\n }\n\n const error = new AdyenCheckoutError('ERROR', 'error result with no payload in response');\n return this.props.onError(error);\n };\n\n private checkStatus = () => {\n const { paymentData, clientKey, loadingContext, throttledInterval } = this.props;\n\n return checkPaymentStatus(paymentData, clientKey, loadingContext, throttledInterval)\n .then(processResponse)\n .catch(response => ({ type: 'network-error', props: response }))\n .then((status: StatusObject) => {\n switch (status.type) {\n case 'success':\n this.onComplete(status);\n break;\n case 'error':\n this.onError(status);\n break;\n default:\n this.setState({ loading: false });\n }\n return status;\n });\n };\n\n render({ amount, url, brandLogo, brandName, countdownTime, type, onActionHandled }: QRLoaderProps, { expired, completed, loading }) {\n const { i18n, loadingContext } = useCoreContext();\n const getImage = useImage();\n const qrCodeImage = this.props.qrCodeData ? `${loadingContext}${QRCODE_URL}${this.props.qrCodeData}` : this.props.qrCodeImage;\n const finalState = (image, message) => {\n const status = i18n.get(message);\n useA11yReporter(status);\n return (\n <div className=\"adyen-checkout__qr-loader adyen-checkout__qr-loader--result\">\n <img\n className=\"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result\"\n src={getImage({ imageFolder: 'components/' })(image)}\n alt={status}\n />\n <div className=\"adyen-checkout__qr-loader__subtitle adyen-checkout__qr-loader__subtitle--result\">{status}</div>\n </div>\n );\n };\n\n if (expired) {\n return finalState('error', 'error.subtitle.payment');\n }\n\n if (completed) {\n return finalState('success', 'creditCard.success');\n }\n\n if (loading) {\n return (\n <div className=\"adyen-checkout__qr-loader\">\n {brandLogo && <img alt={brandName} src={brandLogo} className=\"adyen-checkout__qr-loader__brand-logo\" />}\n <Spinner />\n </div>\n );\n }\n\n const timeToPayString = i18n.get(this.props.timeToPay).split('%@');\n\n const qrSubtitleRef = useAutoFocus();\n const classnames = this.props.classNameModifiers.map(m => `adyen-checkout__qr-loader--${m}`);\n\n return (\n <div className={`adyen-checkout__qr-loader adyen-checkout__qr-loader--${type} ${classnames.join(' ')}`}>\n {brandLogo && <img src={brandLogo} alt={brandName} className=\"adyen-checkout__qr-loader__brand-logo\" />}\n\n {amount && amount.value && amount.currency && (\n <div className=\"adyen-checkout__qr-loader__payment_amount\">{i18n.amount(amount.value, amount.currency)}</div>\n )}\n\n {url && (\n <div className=\"adyen-checkout__qr-loader__app-link\">\n {this.props.redirectIntroduction && (\n <div className=\"adyen-checkout__qr-loader__subtitle\">{i18n.get(this.props.redirectIntroduction)}</div>\n )}\n <Button classNameModifiers={['qr-loader']} onClick={() => this.redirectToApp(url)} label={i18n.get(this.props.buttonLabel)} />\n <ContentSeparator />\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={qrSubtitleRef} tabIndex={0} className=\"adyen-checkout__qr-loader__subtitle\">\n {i18n.get(this.props.introduction)}\n </div>\n\n <img\n src={qrCodeImage}\n alt={i18n.get('wechatpay.scanqrcode')}\n onLoad={() => {\n onActionHandled?.({\n componentType: this.props.type,\n actionDescription: 'qr-code-loaded'\n });\n }}\n />\n\n <div className=\"adyen-checkout__qr-loader__progress\">\n <span className=\"adyen-checkout__qr-loader__percentage\" style={{ width: `${this.state.percentage}%` }} />\n </div>\n\n <div className=\"adyen-checkout__qr-loader__countdown\">\n {timeToPayString[0]} \n <Countdown minutesFromNow={countdownTime} onTick={this.onTick} onCompleted={this.onTimeUp} />\n {timeToPayString[1]}\n </div>\n\n {typeof this.props.instructions === 'string' ? (\n <div className=\"adyen-checkout__qr-loader__instructions\">{i18n.get(this.props.instructions)}</div>\n ) : (\n this.props.instructions?.()\n )}\n\n {this.props.copyBtn && (\n <div className=\"adyen-checkout__qr-loader__actions\">\n <Button\n inline\n variant=\"action\"\n onClick={(e, { complete }) => {\n copyToClipboard(this.props.qrCodeData);\n this.props.onSubmitAnalytics({\n type: ANALYTICS_DOWNLOAD_STR,\n target: ANALYTICS_QR_CODE_DOWNLOAD\n });\n complete();\n }}\n icon={getImage({ imageFolder: 'components/' })(`${PREFIX}copy`)}\n label={i18n.get('button.copy')}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default QRLoader;\n"],"names":["QRLoader","Component","timeoutId","constructor","props","super","this","state","buttonStatus","completed","delay","expired","loading","percentage","timePassed","static","countdownTime","onError","onComplete","throttleTime","classNameModifiers","throttledInterval","introduction","timeToPay","buttonLabel","componentDidMount","statusInterval","componentWillUnmount","clearTimeout","redirectToApp","url","window","location","assign","responseTime","setState","previous","newDelay","pollStatus","setTimeout","async","start","performance","now","checkStatus","end","Math","round","onTick","time","onTimeUp","AdyenCheckoutError","status","data","details","payload","paymentData","error","clientKey","loadingContext","checkPaymentStatus","then","processResponse","catch","response","type","render","amount","brandLogo","brandName","onActionHandled","i18n","useCoreContext","getImage","useImage","qrCodeImage","qrCodeData","finalState","image","message","get","useA11yReporter","h","div","className","img","src","imageFolder","alt","Spinner","timeToPayString","split","qrSubtitleRef","useAutoFocus","classnames","map","m","join","value","currency","redirectIntroduction","Button","onClick","label","ContentSeparator","ref","tabIndex","onLoad","componentType","actionDescription","span","style","width","Countdown","minutesFromNow","onCompleted","instructions","copyBtn","inline","variant","e","complete","copyToClipboard","onSubmitAnalytics","ANALYTICS_DOWNLOAD_STR","target","ANALYTICS_QR_CODE_DOWNLOAD","icon","PREFIX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QRLoader.js","sources":["../../../../../src/components/internal/QRLoader/QRLoader.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Countdown from '../Countdown';\nimport Button from '../Button';\nimport Spinner from '../Spinner';\nimport checkPaymentStatus from '../../../core/Services/payment-status';\nimport processResponse from '../../../core/ProcessResponse';\n\nimport './QRLoader.scss';\nimport { QRLoaderProps, QRLoaderState } from './types';\nimport copyToClipboard from '../../../utils/clipboard';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport ContentSeparator from '../ContentSeparator';\nimport { StatusObject } from '../Await/types';\nimport useImage from '../../../core/Context/useImage';\nimport { useA11yReporter } from '../../../core/Errors/useA11yReporter';\nimport useAutoFocus from '../../../utils/useAutoFocus';\nimport { ANALYTICS_DOWNLOAD_STR, ANALYTICS_QR_CODE_DOWNLOAD } from '../../../core/Analytics/constants';\nimport { PREFIX } from '../Icon/constants';\n\nconst QRCODE_URL = 'barcode.shtml?barcodeType=qrCode&fileType=png&data=';\n\nclass QRLoader extends Component<QRLoaderProps, QRLoaderState> {\n private timeoutId;\n\n constructor(props) {\n super(props);\n\n this.state = {\n buttonStatus: 'default',\n completed: false,\n delay: props.delay,\n expired: false,\n loading: true,\n percentage: 100,\n timePassed: 0\n };\n }\n\n public static defaultProps = {\n delay: 2000,\n countdownTime: 15,\n onError: () => {},\n onComplete: () => {},\n throttleTime: 60000,\n classNameModifiers: [],\n throttledInterval: 10000,\n introduction: 'wechatpay.scanqrcode',\n timeToPay: 'wechatpay.timetopay',\n buttonLabel: 'openApp'\n };\n\n componentDidMount() {\n this.statusInterval();\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeoutId);\n }\n\n public redirectToApp = (url: string | URL) => {\n window.location.assign(url);\n };\n\n // Retry until getting a complete response from the server, or it times out\n public statusInterval = (responseTime = 0) => {\n // If we are already in the final statuses, do not poll!\n if (this.state.expired || this.state.completed) return;\n\n this.setState(previous => ({ timePassed: previous.timePassed + this.props.delay + responseTime }));\n // Changes interval time to 10 seconds after 1 minute (60 seconds)\n const newDelay = this.state.timePassed >= this.props.throttleTime ? this.props.throttledInterval : this.state.delay;\n this.pollStatus(newDelay);\n };\n\n private pollStatus(delay: number) {\n clearTimeout(this.timeoutId);\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n // Wait for previous status call to finish.\n // Also taking the server response time into the consideration to calculate timePassed.\n const start = performance.now();\n await this.checkStatus();\n const end = performance.now();\n this.statusInterval(Math.round(end - start));\n }, delay);\n }\n\n private onTick = (time): void => {\n this.setState({ percentage: time.percentage });\n };\n\n private onTimeUp = (): void => {\n this.setState({ expired: true });\n clearTimeout(this.timeoutId);\n this.props.onError(new AdyenCheckoutError('ERROR', 'Payment Expired'));\n };\n\n private onComplete = (status: StatusObject): void => {\n clearTimeout(this.timeoutId);\n this.setState({ completed: true, loading: false });\n\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: this.props.paymentData\n }\n };\n\n this.props.onComplete(state, this);\n };\n\n private onError = (status: StatusObject): void => {\n clearTimeout(this.timeoutId);\n this.setState({ expired: true, loading: false });\n\n if (status.props.payload) {\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: this.props.paymentData\n }\n };\n this.props.onComplete(state, this);\n }\n\n const error = new AdyenCheckoutError('ERROR', 'error result with no payload in response');\n return this.props.onError(error);\n };\n\n private checkStatus = () => {\n const { paymentData, clientKey, loadingContext, throttledInterval } = this.props;\n\n return checkPaymentStatus(paymentData, clientKey, loadingContext, throttledInterval)\n .then(processResponse)\n .catch(response => ({ type: 'network-error', props: response }))\n .then((status: StatusObject) => {\n switch (status.type) {\n case 'success':\n this.onComplete(status);\n break;\n case 'error':\n this.onError(status);\n break;\n default:\n this.setState({ loading: false });\n }\n return status;\n });\n };\n\n render({ amount, url, brandLogo, brandName, countdownTime, type, onActionHandled }: QRLoaderProps, { expired, completed, loading }) {\n const { i18n, loadingContext } = useCoreContext();\n const getImage = useImage();\n const qrCodeImage = this.props.qrCodeData ? `${loadingContext}${QRCODE_URL}${this.props.qrCodeData}` : this.props.qrCodeImage;\n const finalState = (image, message) => {\n const status = i18n.get(message);\n useA11yReporter(status);\n return (\n <div className=\"adyen-checkout__qr-loader adyen-checkout__qr-loader--result\">\n <img\n className=\"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result\"\n src={getImage({ imageFolder: 'components/' })(image)}\n alt={status}\n />\n <div className=\"adyen-checkout__qr-loader__subtitle\">{status}</div>\n </div>\n );\n };\n\n if (expired) {\n return finalState('error', 'error.subtitle.payment');\n }\n\n if (completed) {\n return finalState('success', 'creditCard.success');\n }\n\n if (loading) {\n return (\n <div className=\"adyen-checkout__qr-loader\">\n {brandLogo && (\n <div className=\"adyen-checkout__qr-loader__brand-logo-wrapper\">\n <img alt={brandName} src={brandLogo} className=\"adyen-checkout__qr-loader__brand-logo\" />\n </div>\n )}\n <Spinner />\n </div>\n );\n }\n\n const timeToPayString = i18n.get(this.props.timeToPay).split('%@');\n\n const qrSubtitleRef = useAutoFocus();\n const classnames = this.props.classNameModifiers.map(m => `adyen-checkout__qr-loader--${m}`);\n\n return (\n <div className={`adyen-checkout__qr-loader adyen-checkout__qr-loader--${type} ${classnames.join(' ')}`}>\n {brandLogo && (\n <div className=\"adyen-checkout__qr-loader__brand-logo-wrapper\">\n <img src={brandLogo} alt={brandName} className=\"adyen-checkout__qr-loader__brand-logo\" />\n </div>\n )}\n\n {amount && amount.value && amount.currency && (\n <div className=\"adyen-checkout__qr-loader__payment_amount\">{i18n.amount(amount.value, amount.currency)}</div>\n )}\n\n {url && (\n <div className=\"adyen-checkout__qr-loader__app-link\">\n {this.props.redirectIntroduction && (\n <div className=\"adyen-checkout__qr-loader__subtitle\">{i18n.get(this.props.redirectIntroduction)}</div>\n )}\n <Button classNameModifiers={['qr-loader']} onClick={() => this.redirectToApp(url)} label={i18n.get(this.props.buttonLabel)} />\n <ContentSeparator />\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={qrSubtitleRef} tabIndex={0} className=\"adyen-checkout__qr-loader__subtitle\">\n {typeof this.props.introduction === 'string' ? i18n.get(this.props.introduction) : this.props.introduction?.()}\n </div>\n\n <img\n src={qrCodeImage}\n alt={i18n.get('wechatpay.scanqrcode')}\n onLoad={() => {\n onActionHandled?.({\n componentType: this.props.type,\n actionDescription: 'qr-code-loaded'\n });\n }}\n />\n\n <div className=\"adyen-checkout__qr-loader__progress\">\n <span className=\"adyen-checkout__qr-loader__percentage\" style={{ width: `${this.state.percentage}%` }} />\n </div>\n\n <div className=\"adyen-checkout__qr-loader__countdown\">\n {timeToPayString[0]} \n <Countdown minutesFromNow={countdownTime} onTick={this.onTick} onCompleted={this.onTimeUp} />\n {timeToPayString[1]}\n </div>\n\n {this.props.instructions && (\n <div className=\"adyen-checkout__qr-loader__instructions\">\n {typeof this.props.instructions === 'string' ? i18n.get(this.props.instructions) : this.props.instructions?.()}\n </div>\n )}\n\n {this.props.copyBtn && (\n <div className=\"adyen-checkout__qr-loader__actions\">\n <Button\n inline\n variant=\"action\"\n onClick={(e, { complete }) => {\n copyToClipboard(this.props.qrCodeData);\n this.props.onSubmitAnalytics({\n type: ANALYTICS_DOWNLOAD_STR,\n target: ANALYTICS_QR_CODE_DOWNLOAD\n });\n complete();\n }}\n icon={getImage({ imageFolder: 'components/' })(`${PREFIX}copy`)}\n label={i18n.get('button.copy')}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default QRLoader;\n"],"names":["QRLoader","Component","componentDidMount","this","statusInterval","componentWillUnmount","clearTimeout","timeoutId","pollStatus","delay","setTimeout","async","start","performance","now","checkStatus","end","Math","round","render","amount","url","brandLogo","brandName","countdownTime","type","onActionHandled","expired","completed","loading","i18n","loadingContext","useCoreContext","getImage","useImage","qrCodeImage","props","qrCodeData","finalState","image","message","status","get","useA11yReporter","h","div","className","img","src","imageFolder","alt","Spinner","timeToPayString","timeToPay","split","qrSubtitleRef","useAutoFocus","classnames","classNameModifiers","map","m","join","value","currency","redirectIntroduction","Button","onClick","redirectToApp","label","buttonLabel","ContentSeparator","ref","tabIndex","introduction","onLoad","componentType","actionDescription","span","style","width","state","percentage","Countdown","minutesFromNow","onTick","onCompleted","onTimeUp","instructions","copyBtn","inline","variant","e","complete","copyToClipboard","onSubmitAnalytics","ANALYTICS_DOWNLOAD_STR","target","ANALYTICS_QR_CODE_DOWNLOAD","icon","PREFIX","constructor","super","_define_property","window","location","assign","responseTime","setState","previous","timePassed","newDelay","throttleTime","throttledInterval","time","onError","AdyenCheckoutError","onComplete","data","details","payload","paymentData","error","clientKey","checkPaymentStatus","then","processResponse","catch","response","buttonStatus","defaultProps"],"mappings":"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"}
|