@adyen/adyen-web 6.47.0-alpha.eada81f → 6.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/adyen.css +20 -22
- package/dist/cjs/adyen.css.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +122 -581
- package/dist/es/adyen.css +20 -22
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
- package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayButton.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es/components/AmazonPay/components/OrderButton.js +1 -1
- package/dist/es/components/AmazonPay/components/OrderButton.js.map +1 -1
- package/dist/es/components/AmazonPay/components/SignOutButton.js +1 -1
- package/dist/es/components/AmazonPay/components/SignOutButton.js.map +1 -1
- package/dist/es/components/AmazonPay/utils.js +1 -1
- package/dist/es/components/AmazonPay/utils.js.map +1 -1
- package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
- package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es/components/CashAppPay/components/CashAppComponent.js +1 -1
- package/dist/es/components/CashAppPay/components/CashAppComponent.js.map +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es/components/CashAppPay/services/types.js.map +1 -1
- package/dist/es/components/CustomCard/CustomCard.js +1 -1
- package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
- package/dist/es/components/Donation/components/DonationComponent.js.map +1 -1
- package/dist/es/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es/components/Giftcard/Giftcard.js +1 -1
- package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es/components/Giftcard/types.js +2 -0
- package/dist/es/components/Giftcard/types.js.map +1 -0
- package/dist/es/components/Giftcard/utils.js +2 -0
- package/dist/es/components/Giftcard/utils.js.map +1 -0
- package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
- package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
- package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
- package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
- package/dist/es/components/PayPal/Paypal.js +1 -1
- package/dist/es/components/PayPal/Paypal.js.map +1 -1
- package/dist/es/components/PayPal/components/PaypalButtons.js +1 -1
- package/dist/es/components/PayPal/components/PaypalButtons.js.map +1 -1
- package/dist/es/components/PayPal/components/PaypalComponent.js +1 -1
- package/dist/es/components/PayPal/components/PaypalComponent.js.map +1 -1
- package/dist/es/components/PayPal/config.js +1 -1
- package/dist/es/components/PayPal/config.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-locale.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-locale.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-settings.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-settings.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-url.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-url.js.map +1 -1
- package/dist/es/components/PayPalFastlane/Fastlane.js +1 -1
- package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/utils.js +1 -1
- package/dist/es/components/ThreeDS2/components/utils.js.map +1 -1
- package/dist/es/components/components-name-map.js +1 -1
- package/dist/es/components/components-name-map.js.map +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es/components/index.js +1 -1
- package/dist/es/components/internal/Address/Address.js +1 -1
- package/dist/es/components/internal/Address/Address.js.map +1 -1
- package/dist/es/components/internal/Address/Specifications.js +1 -1
- package/dist/es/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es/components/internal/Address/components/AddressSearch.js +1 -1
- package/dist/es/components/internal/Address/components/AddressSearch.js.map +1 -1
- package/dist/es/components/internal/Address/components/CountryField.js +1 -1
- package/dist/es/components/internal/Address/components/CountryField.js.map +1 -1
- package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
- package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
- package/dist/es/components/internal/Address/components/StateField.js +1 -1
- package/dist/es/components/internal/Address/components/StateField.js.map +1 -1
- package/dist/es/components/internal/Address/constants.js.map +1 -1
- package/dist/es/components/internal/Address/utils.js.map +1 -1
- package/dist/es/components/internal/Address/validate.formats.js +1 -1
- package/dist/es/components/internal/Address/validate.formats.js.map +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
- package/dist/es/components/internal/CompanyDetails/CompanyDetails.js +1 -1
- package/dist/es/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
- package/dist/es/components/internal/CompanyDetails/validate.js +1 -1
- package/dist/es/components/internal/CompanyDetails/validate.js.map +1 -1
- package/dist/es/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
- package/dist/es/components/internal/FormFields/Field/Field.js +1 -1
- package/dist/es/components/internal/FormFields/Field/Field.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputBase.js +1 -1
- package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputDate/InputDate.js +1 -1
- package/dist/es/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputDate/utils.js.map +1 -1
- package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
- package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es/components/internal/IbanInput/specifications.js.map +1 -1
- package/dist/es/components/internal/IbanInput/utils.js +1 -1
- package/dist/es/components/internal/IbanInput/utils.js.map +1 -1
- package/dist/es/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
- package/dist/es/components/internal/PersonalDetails/validate.js +1 -1
- package/dist/es/components/internal/PersonalDetails/validate.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es/components/internal/UIElement/utils.js.map +1 -1
- package/dist/es/components/tx-variants.js +1 -1
- package/dist/es/components/tx-variants.js.map +1 -1
- package/dist/es/core/Services/http.js.map +1 -1
- package/dist/es/core/config.js +1 -1
- package/dist/es/core/config.js.map +1 -1
- package/dist/es/core/core.js +1 -1
- package/dist/es/core/core.js.map +1 -1
- package/dist/es/core/utils.js +1 -1
- package/dist/es/core/utils.js.map +1 -1
- package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
- package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
- package/dist/es/index.d.ts +122 -581
- package/dist/es/index.js +1 -1
- package/dist/es/language/Language.js +1 -1
- package/dist/es/language/Language.js.map +1 -1
- package/dist/es/language/utils.js +1 -1
- package/dist/es/language/utils.js.map +1 -1
- package/dist/es/utils/Script.js.map +1 -1
- package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es/utils/Validator/Validator.js +1 -1
- package/dist/es/utils/Validator/Validator.js.map +1 -1
- package/dist/es/utils/Validator/defaultRules.js +1 -1
- package/dist/es/utils/Validator/defaultRules.js.map +1 -1
- package/dist/es/utils/amount-util.js +1 -1
- package/dist/es/utils/amount-util.js.map +1 -1
- package/dist/es/utils/browserInfo.js.map +1 -1
- package/dist/es/utils/createSdkData.js +1 -1
- package/dist/es/utils/createSdkData.js.map +1 -1
- package/dist/es/utils/get-issuer-image.js +1 -1
- package/dist/es/utils/get-issuer-image.js.map +1 -1
- package/dist/es/utils/get-process-message-handler.js.map +1 -1
- package/dist/es/utils/getConsentUrl.js +1 -1
- package/dist/es/utils/getConsentUrl.js.map +1 -1
- package/dist/es/utils/getErrorMessage.js.map +1 -1
- package/dist/es/utils/getOrigin.js.map +1 -1
- package/dist/es/utils/isValidURL.js +1 -1
- package/dist/es/utils/isValidURL.js.map +1 -1
- package/dist/es/utils/promiseTimeout.js.map +1 -1
- package/dist/es/utils/useAutoFocus.js.map +1 -1
- package/dist/es/utils/validator-utils.js +1 -1
- package/dist/es/utils/validator-utils.js.map +1 -1
- package/dist/es-legacy/adyen.css +20 -22
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
- package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/OrderButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/OrderButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
- package/dist/es-legacy/components/AmazonPay/utils.js.map +1 -1
- package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js +1 -1
- package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/services/types.js.map +1 -1
- package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
- package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/DonationComponent.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
- package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/types.js +2 -0
- package/dist/es-legacy/components/Giftcard/types.js.map +1 -0
- package/dist/es-legacy/components/Giftcard/utils.js +2 -0
- package/dist/es-legacy/components/Giftcard/utils.js.map +1 -0
- package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
- package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
- package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
- package/dist/es-legacy/components/PayPal/config.js +1 -1
- package/dist/es-legacy/components/PayPal/config.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js.map +1 -1
- package/dist/es-legacy/components/PayPalFastlane/Fastlane.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/utils.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/utils.js.map +1 -1
- package/dist/es-legacy/components/components-name-map.js +1 -1
- package/dist/es-legacy/components/components-name-map.js.map +1 -1
- package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es-legacy/components/index.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/Specifications.js +1 -1
- package/dist/es-legacy/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/AddressSearch.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/AddressSearch.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/CountryField.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/CountryField.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/StateField.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/StateField.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/validate.formats.js +1 -1
- package/dist/es-legacy/components/internal/Address/validate.formats.js.map +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/validate.js +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/validate.js.map +1 -1
- package/dist/es-legacy/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Field/Field.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/specifications.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/utils.js +1 -1
- package/dist/es-legacy/components/internal/IbanInput/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/validate.js +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/validate.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
- package/dist/es-legacy/components/tx-variants.js +1 -1
- package/dist/es-legacy/components/tx-variants.js.map +1 -1
- package/dist/es-legacy/core/Services/http.js.map +1 -1
- package/dist/es-legacy/core/config.js +1 -1
- package/dist/es-legacy/core/config.js.map +1 -1
- package/dist/es-legacy/core/core.js +1 -1
- package/dist/es-legacy/core/core.js.map +1 -1
- package/dist/es-legacy/core/utils.js +1 -1
- package/dist/es-legacy/core/utils.js.map +1 -1
- package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
- package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
- package/dist/es-legacy/index.js +1 -1
- package/dist/es-legacy/language/Language.js +1 -1
- package/dist/es-legacy/language/Language.js.map +1 -1
- package/dist/es-legacy/language/utils.js +1 -1
- package/dist/es-legacy/language/utils.js.map +1 -1
- package/dist/es-legacy/utils/Script.js.map +1 -1
- package/dist/es-legacy/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es-legacy/utils/Validator/Validator.js +1 -1
- package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
- package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
- package/dist/es-legacy/utils/Validator/defaultRules.js.map +1 -1
- package/dist/es-legacy/utils/amount-util.js +1 -1
- package/dist/es-legacy/utils/amount-util.js.map +1 -1
- package/dist/es-legacy/utils/browserInfo.js.map +1 -1
- package/dist/es-legacy/utils/createSdkData.js +1 -1
- package/dist/es-legacy/utils/createSdkData.js.map +1 -1
- package/dist/es-legacy/utils/get-issuer-image.js +1 -1
- package/dist/es-legacy/utils/get-issuer-image.js.map +1 -1
- package/dist/es-legacy/utils/get-process-message-handler.js.map +1 -1
- package/dist/es-legacy/utils/getConsentUrl.js +1 -1
- package/dist/es-legacy/utils/getConsentUrl.js.map +1 -1
- package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
- package/dist/es-legacy/utils/getOrigin.js.map +1 -1
- package/dist/es-legacy/utils/isValidURL.js +1 -1
- package/dist/es-legacy/utils/isValidURL.js.map +1 -1
- package/dist/es-legacy/utils/promiseTimeout.js.map +1 -1
- package/dist/es-legacy/utils/useAutoFocus.js.map +1 -1
- package/dist/es-legacy/utils/validator-utils.js +1 -1
- package/dist/es-legacy/utils/validator-utils.js.map +1 -1
- package/package.json +25 -24
- package/styles/adyen.css +20 -22
- package/dist/es/components/PayPal/PayPalCredit.js +0 -2
- package/dist/es/components/PayPal/PayPalCredit.js.map +0 -1
- package/dist/es/components/PayPal/PayPalPaylater.js +0 -2
- package/dist/es/components/PayPal/PayPalPaylater.js.map +0 -1
- package/dist/es/components/PayPal/Venmo.js +0 -2
- package/dist/es/components/PayPal/Venmo.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalComponentV6.js +0 -2
- package/dist/es/components/PayPal/components/PayPalComponentV6.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalCreditButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalCreditButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js +0 -2
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalMessaging.js +0 -2
- package/dist/es/components/PayPal/components/PayPalMessaging.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalSpinner.js +0 -2
- package/dist/es/components/PayPal/components/PayPalSpinner.js.map +0 -1
- package/dist/es/components/PayPal/components/VenmoButton.js +0 -2
- package/dist/es/components/PayPal/components/VenmoButton.js.map +0 -1
- package/dist/es/components/PayPal/components/VenmoComponent.js +0 -2
- package/dist/es/components/PayPal/components/VenmoComponent.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js +0 -2
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
- package/dist/es/components/PayPal/models/BasePayPalElement.js +0 -2
- package/dist/es/components/PayPal/models/BasePayPalElement.js.map +0 -1
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js +0 -2
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
- package/dist/es/components/PayPal/services/PayPalService.js +0 -2
- package/dist/es/components/PayPal/services/PayPalService.js.map +0 -1
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js +0 -2
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
- package/dist/es/components/PayPal/services/request-paypal-order-details.js +0 -2
- package/dist/es/components/PayPal/services/request-paypal-order-details.js.map +0 -1
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
- package/dist/es/utils/is-live-environment.js +0 -2
- package/dist/es/utils/is-live-environment.js.map +0 -1
- package/dist/es-legacy/components/PayPal/PayPalCredit.js +0 -2
- package/dist/es-legacy/components/PayPal/PayPalCredit.js.map +0 -1
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js +0 -2
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js.map +0 -1
- package/dist/es-legacy/components/PayPal/Venmo.js +0 -2
- package/dist/es-legacy/components/PayPal/Venmo.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js +0 -2
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js +0 -2
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/PayPalService.js +0 -2
- package/dist/es-legacy/components/PayPal/services/PayPalService.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js +0 -2
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js +0 -2
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js.map +0 -1
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
- package/dist/es-legacy/utils/is-live-environment.js +0 -2
- package/dist/es-legacy/utils/is-live-environment.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Iframe from '../../../internal/IFrame';\nimport Spinner from '../../../internal/Spinner';\nimport ThreeDS2Form from '../Form';\nimport promiseTimeout from '../../../../utils/promiseTimeout';\nimport getProcessMessageHandler from '../../../../utils/get-process-message-handler';\nimport { THREEDS_METHOD_TIMEOUT, FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT, THREEDS2_NUM } from '../../constants';\nimport { encodeBase64URL } from '../utils';\nimport { DoFingerprint3DS2Props, DoFingerprint3DS2State } from './types';\nimport { ThreeDS2FlowObject } from '../../types';\n\nconst iframeName = 'threeDSMethodIframe';\n\n/**\n * Create and Base64URL encode a JSON object containing the serverTransactionID & threeDSMethodNotificationURL.\n * This Base64URL string will be added to the <form> in the ThreeDS2Form component.\n * The ThreeDS2Form component will submit the <form> when it mounts, using the ThreeDS2Iframe as the <form> target.\n * getProcessMessageHandler will listen for the postMessage response from the notificationURL and will settle the\n * promise accordingly causing this component to call the appropriate callback.\n * The callbacks exist in the parent component: ThreeDS2DeviceFingerprint where they ultimately call the onComplete\n * function passed as a prop when checkout.create('threeDS2DeviceFingerprint') is called.\n */\nclass DoFingerprint3DS2 extends Component<DoFingerprint3DS2Props, DoFingerprint3DS2State> {\n private processMessageHandler;\n private fingerPrintPromise: { cancel: () => void; promise: Promise<ThreeDS2FlowObject> };\n public static readonly defaultProps = {\n showSpinner: true\n };\n\n constructor(props) {\n super(props);\n\n /**\n * Create and Base64URL encode a JSON object\n */\n const { threeDSServerTransID, threeDSMethodNotificationURL } = this.props;\n\n const jsonStr = JSON.stringify({\n threeDSServerTransID,\n threeDSMethodNotificationURL\n });\n const base64URLencodedData = encodeBase64URL(jsonStr);\n this.state = { base64URLencodedData };\n }\n\n get3DS2MethodPromise(): Promise<ThreeDS2FlowObject> {\n return new Promise((resolve, reject) => {\n /**\n * Listen for postMessage responses from the notification url\n */\n this.processMessageHandler = getProcessMessageHandler(this.props.postMessageDomain, resolve, reject, 'fingerPrintResult');\n\n window.addEventListener('message', this.processMessageHandler);\n });\n }\n\n componentDidMount() {\n // Check 3DS2 Device fingerprint\n this.fingerPrintPromise = promiseTimeout(THREEDS_METHOD_TIMEOUT, this.get3DS2MethodPromise(), FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT);\n this.fingerPrintPromise.promise\n .then((resolveObject: ThreeDS2FlowObject) => {\n window.removeEventListener('message', this.processMessageHandler);\n this.props.onCompleteFingerprint(resolveObject);\n })\n .catch((rejectObject: ThreeDS2FlowObject) => {\n window.removeEventListener('message', this.processMessageHandler);\n this.props.onErrorFingerprint(rejectObject);\n });\n }\n\n componentWillUnmount() {\n if (this.fingerPrintPromise) this.fingerPrintPromise.cancel();\n window.removeEventListener('message', this.processMessageHandler);\n }\n\n render({ threeDSMethodURL, onActionHandled, onFormSubmit }, { base64URLencodedData }) {\n return (\n <div className=\"adyen-checkout__3ds2-device-fingerprint\">\n {this.props.showSpinner && <Spinner />}\n <div style={{ display: 'none' }}>\n <Iframe\n name={iframeName}\n callback={() => {\n onActionHandled?.({ componentType: '3DS2Fingerprint', actionDescription: `${THREEDS2_NUM} fingerprint iframe loaded` });\n }}\n />\n <ThreeDS2Form\n name={'threeDSMethodForm'}\n action={threeDSMethodURL}\n target={iframeName}\n inputName={'threeDSMethodData'}\n inputValue={base64URLencodedData}\n onFormSubmit={onFormSubmit}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default DoFingerprint3DS2;\n"],"names":["iframeName","DoFingerprint3DS2","Component","get3DS2MethodPromise","Promise","resolve","reject","this","processMessageHandler","getProcessMessageHandler","props","postMessageDomain","window","addEventListener","componentDidMount","fingerPrintPromise","promiseTimeout","THREEDS_METHOD_TIMEOUT","FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT","promise","then","resolveObject","removeEventListener","onCompleteFingerprint","catch","rejectObject","onErrorFingerprint","componentWillUnmount","cancel","render","threeDSMethodURL","onActionHandled","onFormSubmit","base64URLencodedData","h","div","className","showSpinner","Spinner","style","display","Iframe","name","callback","componentType","actionDescription","THREEDS2_NUM","ThreeDS2Form","action","target","inputName","inputValue","constructor","super","_define_property","threeDSServerTransID","threeDSMethodNotificationURL","jsonStr","JSON","stringify","encodeBase64URL","state","defaultProps"],"mappings":"+nBAWA,MAAMA,EAAa,sBAWnB,MAAMC,UAA0BC,EAuB5BC,oBAAAA,GACI,OAAO,IAAIC,QAAQ,CAACC,EAASC,KAIzBC,KAAKC,sBAAwBC,EAAyBF,KAAKG,MAAMC,kBAAmBN,EAASC,EAAQ,qBAErGM,OAAOC,iBAAiB,UAAWN,KAAKC,wBAEhD,CAEAM,iBAAAA,GAEIP,KAAKQ,mBAAqBC,EAAeC,EAAwBV,KAAKJ,uBAAwBe,GAC9FX,KAAKQ,mBAAmBI,QACnBC,KAAMC,IACHT,OAAOU,oBAAoB,UAAWf,KAAKC,uBAC3CD,KAAKG,MAAMa,sBAAsBF,KAEpCG,MAAOC,IACJb,OAAOU,oBAAoB,UAAWf,KAAKC,uBAC3CD,KAAKG,MAAMgB,mBAAmBD,IAE1C,CAEAE,oBAAAA,GACQpB,KAAKQ,oBAAoBR,KAAKQ,mBAAmBa,SACrDhB,OAAOU,oBAAoB,UAAWf,KAAKC,sBAC/C,CAEAqB,MAAAA,EAAOC,iBAAEA,EAAgBC,gBAAEA,EAAeC,aAAEA,
|
|
1
|
+
{"version":3,"file":"DoFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Iframe from '../../../internal/IFrame';\nimport Spinner from '../../../internal/Spinner';\nimport ThreeDS2Form from '../Form';\nimport promiseTimeout from '../../../../utils/promiseTimeout';\nimport getProcessMessageHandler from '../../../../utils/get-process-message-handler';\nimport { THREEDS_METHOD_TIMEOUT, FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT, THREEDS2_NUM } from '../../constants';\nimport { encodeBase64URL } from '../utils';\nimport { DoFingerprint3DS2Props, DoFingerprint3DS2State } from './types';\nimport { ThreeDS2FlowObject } from '../../types';\n\nconst iframeName = 'threeDSMethodIframe';\n\n/**\n * Create and Base64URL encode a JSON object containing the serverTransactionID & threeDSMethodNotificationURL.\n * This Base64URL string will be added to the <form> in the ThreeDS2Form component.\n * The ThreeDS2Form component will submit the <form> when it mounts, using the ThreeDS2Iframe as the <form> target.\n * getProcessMessageHandler will listen for the postMessage response from the notificationURL and will settle the\n * promise accordingly causing this component to call the appropriate callback.\n * The callbacks exist in the parent component: ThreeDS2DeviceFingerprint where they ultimately call the onComplete\n * function passed as a prop when checkout.create('threeDS2DeviceFingerprint') is called.\n */\nclass DoFingerprint3DS2 extends Component<DoFingerprint3DS2Props, DoFingerprint3DS2State> {\n private processMessageHandler;\n private fingerPrintPromise: { cancel: () => void; promise: Promise<ThreeDS2FlowObject> };\n public static readonly defaultProps = {\n showSpinner: true\n };\n\n constructor(props) {\n super(props);\n\n /**\n * Create and Base64URL encode a JSON object\n */\n const { threeDSServerTransID, threeDSMethodNotificationURL } = this.props;\n\n const jsonStr = JSON.stringify({\n threeDSServerTransID,\n threeDSMethodNotificationURL\n });\n const base64URLencodedData = encodeBase64URL(jsonStr);\n this.state = { base64URLencodedData };\n }\n\n get3DS2MethodPromise(): Promise<ThreeDS2FlowObject> {\n return new Promise((resolve, reject) => {\n /**\n * Listen for postMessage responses from the notification url\n */\n this.processMessageHandler = getProcessMessageHandler(this.props.postMessageDomain, resolve, reject, 'fingerPrintResult');\n\n window.addEventListener('message', this.processMessageHandler);\n });\n }\n\n componentDidMount() {\n // Check 3DS2 Device fingerprint\n this.fingerPrintPromise = promiseTimeout(THREEDS_METHOD_TIMEOUT, this.get3DS2MethodPromise(), FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT);\n this.fingerPrintPromise.promise\n .then((resolveObject: ThreeDS2FlowObject) => {\n window.removeEventListener('message', this.processMessageHandler);\n this.props.onCompleteFingerprint(resolveObject);\n })\n .catch((rejectObject: ThreeDS2FlowObject) => {\n window.removeEventListener('message', this.processMessageHandler);\n this.props.onErrorFingerprint(rejectObject);\n });\n }\n\n componentWillUnmount() {\n if (this.fingerPrintPromise) this.fingerPrintPromise.cancel();\n window.removeEventListener('message', this.processMessageHandler);\n }\n\n render({ threeDSMethodURL, onActionHandled, onFormSubmit }: DoFingerprint3DS2Props, { base64URLencodedData }: DoFingerprint3DS2State) {\n return (\n <div className=\"adyen-checkout__3ds2-device-fingerprint\">\n {this.props.showSpinner && <Spinner />}\n <div style={{ display: 'none' }}>\n <Iframe\n name={iframeName}\n callback={() => {\n onActionHandled?.({ componentType: '3DS2Fingerprint', actionDescription: `${THREEDS2_NUM} fingerprint iframe loaded` });\n }}\n />\n <ThreeDS2Form\n name={'threeDSMethodForm'}\n action={threeDSMethodURL}\n target={iframeName}\n inputName={'threeDSMethodData'}\n inputValue={base64URLencodedData}\n onFormSubmit={onFormSubmit}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default DoFingerprint3DS2;\n"],"names":["iframeName","DoFingerprint3DS2","Component","get3DS2MethodPromise","Promise","resolve","reject","this","processMessageHandler","getProcessMessageHandler","props","postMessageDomain","window","addEventListener","componentDidMount","fingerPrintPromise","promiseTimeout","THREEDS_METHOD_TIMEOUT","FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT","promise","then","resolveObject","removeEventListener","onCompleteFingerprint","catch","rejectObject","onErrorFingerprint","componentWillUnmount","cancel","render","threeDSMethodURL","onActionHandled","onFormSubmit","base64URLencodedData","h","div","className","showSpinner","Spinner","style","display","Iframe","name","callback","componentType","actionDescription","THREEDS2_NUM","ThreeDS2Form","action","target","inputName","inputValue","constructor","super","_define_property","threeDSServerTransID","threeDSMethodNotificationURL","jsonStr","JSON","stringify","encodeBase64URL","state","defaultProps"],"mappings":"+nBAWA,MAAMA,EAAa,sBAWnB,MAAMC,UAA0BC,EAuB5BC,oBAAAA,GACI,OAAO,IAAIC,QAAQ,CAACC,EAASC,KAIzBC,KAAKC,sBAAwBC,EAAyBF,KAAKG,MAAMC,kBAAmBN,EAASC,EAAQ,qBAErGM,OAAOC,iBAAiB,UAAWN,KAAKC,wBAEhD,CAEAM,iBAAAA,GAEIP,KAAKQ,mBAAqBC,EAAeC,EAAwBV,KAAKJ,uBAAwBe,GAC9FX,KAAKQ,mBAAmBI,QACnBC,KAAMC,IACHT,OAAOU,oBAAoB,UAAWf,KAAKC,uBAC3CD,KAAKG,MAAMa,sBAAsBF,KAEpCG,MAAOC,IACJb,OAAOU,oBAAoB,UAAWf,KAAKC,uBAC3CD,KAAKG,MAAMgB,mBAAmBD,IAE1C,CAEAE,oBAAAA,GACQpB,KAAKQ,oBAAoBR,KAAKQ,mBAAmBa,SACrDhB,OAAOU,oBAAoB,UAAWf,KAAKC,sBAC/C,CAEAqB,MAAAA,EAAOC,iBAAEA,EAAgBC,gBAAEA,EAAeC,aAAEA,IAAwCC,qBAAEA,IAClF,OACIC,EAACC,MAAAA,CAAIC,UAAU,2CACV7B,KAAKG,MAAM2B,aAAeH,EAACI,QAC5BJ,EAACC,MAAAA,CAAII,MAAO,CAAEC,QAAS,SACnBN,EAACO,EAAAA,CACGC,KAAM1C,EACN2C,SAAU,KACNZ,IAAkB,CAAEa,cAAe,kBAAmBC,kBAAmB,GAAGC,mCAGpFZ,EAACa,EAAAA,CACGL,KAAM,oBACNM,OAAQlB,EACRmB,OAAQjD,EACRkD,UAAW,oBACXC,WAAYlB,EACZD,aAAcA,KAKlC,CApEA,WAAAoB,CAAY1C,GACR2C,MAAM3C,GAPV4C,EAAA/C,KAAQC,6BAAR,GACA8C,EAAA/C,KAAQQ,0BAAR,GAWI,MAAMwC,qBAAEA,EAAoBC,6BAAEA,GAAiCjD,KAAKG,MAE9D+C,EAAUC,KAAKC,UAAU,CAC3BJ,uBACAC,iCAEEvB,EAAuB2B,EAAgBH,GAC7ClD,KAAKsD,MAAQ,CAAE5B,uBACnB,EAlBAqB,EAHErD,EAGqB6D,eAAe,CAClCzB,aAAa"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import
|
|
1
|
+
import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import o from"./DoFingerprint3DS2.js";import{isFingerPrintData as r,createFingerprintResolveData as s,prepareFingerPrintData as n}from"../utils.js";import{isValidHttpUrl as i}from"../../../../utils/isValidURL.js";import{THREEDS2_FINGERPRINT as a,THREEDS2_FINGERPRINT_ERROR as p,MISSING_TOKEN_IN_ACTION_MSG as m,TIMEOUT as c,THREEDS2_NUM as l}from"../../constants.js";import{AnalyticsLogEvent as d,LogEventSubtype as h,LogEventType as S}from"../../../../core/Analytics/events/AnalyticsLogEvent.js";import{ErrorEventCode as D,ErrorEventType as u,AnalyticsErrorEvent as g}from"../../../../core/Analytics/events/AnalyticsErrorEvent.js";function f(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}class E extends e{get component(){return this.props.type??a}componentDidMount(){const{fingerPrintData:e}=this.state;if(r(e)){const t="test"===this.props.environment&&this.props._environmentUrls?.api?.includes("http://localhost:8080"),{threeDSMethodURL:o,threeDSMethodNotificationURL:r,postMessageDomain:s,threeDSServerTransID:n}=e;if(!i(o,t))return this.setStatusComplete({threeDSCompInd:"U"},{errorCode:D.THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL,message:`${p}: Decoded token is missing a valid threeDSMethodURL property`}),void console.debug("### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL");const a=i(r,t),m=i(s,t),c=n?.length;if(!a||!m||!c)return this.setStatusComplete({threeDSCompInd:"N"},{errorCode:D.THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS,message:`${p}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`}),void console.debug("### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)");this.setState({status:"retrievingFingerPrint"})}else{const t=e?.error??m,o=t.includes(m)?D.THREEDS2_ACTION_IS_MISSING_TOKEN:D.THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED;this.setStatusComplete({threeDSCompInd:"N"},{errorCode:o,message:`${p}: ${t}`}),console.debug("### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed")}}setStatusComplete(e,t){this.setState({status:"complete"},()=>{const o=s(this.props.dataKey??"fingerprintResult",e,this.props.paymentData??"");let r;const n=t||e;if(n.errorCode){const e={code:n.errorCode===c?D.THREEDS2_TIMEOUT:n.errorCode,errorType:u.threeDS2};r=new g({component:this.component,message:n.message,...e}),this.props.onSubmitAnalytics(r)}let i="unknown";switch(e.threeDSCompInd){case"Y":i="success";break;case"N":i=t?t.errorCode===c?c:"failedInternal":"failed";break;case"U":i="noThreeDSMethodURL"}r=new d({component:this.component,type:S.threeDS2,subType:h.fingerprintCompleted,message:`${l} fingerprinting has completed`,result:i}),this.props.onSubmitAnalytics(r),this.props.onComplete(o)})}render({showSpinner:e},{status:s,fingerPrintData:n}){return"retrievingFingerPrint"===s&&r(n)?t(o,{onCompleteFingerprint:e=>{this.setStatusComplete(e.result)},onErrorFingerprint:e=>{const t={errorCode:e.errorCode??"",message:`${a}: ${e.errorCode}`};this.setStatusComplete(e.result,t)},showSpinner:e,...n,onActionHandled:this.props.onActionHandled,onFormSubmit:this.onFormSubmit}):null}constructor(e){super(e),f(this,"onFormSubmit",e=>{const t=new d({component:this.component,type:S.threeDS2,subType:h.fingerprintDataSentWeb,message:e});this.props.onSubmitAnalytics(t)});const{token:t,notificationURL:o}=this.props;if(t){const e=n({token:t,notificationURL:o});this.state={status:"init",fingerPrintData:e}}else this.state={fingerPrintData:{success:!1,error:m}},console.debug(`${p}: ${m}`)}}f(E,"type","scheme"),f(E,"defaultProps",{onComplete:()=>{},onError:()=>{},paymentData:"",showSpinner:!0,isMDFlow:!1});export{E as default};
|
|
2
2
|
//# sourceMappingURL=PrepareFingerprint3DS2.js.map
|
package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrepareFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoFingerprint3DS2 from './DoFingerprint3DS2';\nimport { createFingerprintResolveData, isErrorObject, prepareFingerPrintData } from '../utils';\nimport { PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State } from './types';\nimport { FingerPrintData, ResultObject, ErrorCodeObject, FingerprintResolveData } from '../../types';\nimport { ErrorObject } from '../../../../core/Errors/types';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport { THREEDS2_FINGERPRINT, THREEDS2_FINGERPRINT_ERROR, THREEDS2_NUM, MISSING_TOKEN_IN_ACTION_MSG, TIMEOUT } from '../../constants';\nimport { AnalyticsLogEvent, LogEventSubtype, LogEventType } from '../../../../core/Analytics/events/AnalyticsLogEvent';\nimport { AbstractAnalyticsEvent } from '../../../../core/Analytics/events/AbstractAnalyticsEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../../../core/Analytics/events/AnalyticsErrorEvent';\n\nclass PrepareFingerprint3DS2 extends Component<PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State> {\n public static readonly type = 'scheme';\n\n public static readonly defaultProps = {\n onComplete: () => {},\n onError: () => {},\n paymentData: '',\n showSpinner: true,\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n const { token, notificationURL } = this.props; // See comments on prepareFingerPrintData regarding notificationURL\n\n if (token) {\n const fingerPrintData: FingerPrintData | ErrorObject = prepareFingerPrintData({ token, notificationURL });\n\n this.state = {\n status: 'init',\n fingerPrintData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { fingerPrintData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_FINGERPRINT_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onFormSubmit = (msg: string) => {\n const event = new AnalyticsLogEvent({\n component: this.props.type,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.fingerprintDataSentWeb,\n message: msg\n });\n\n this.props.onSubmitAnalytics(event);\n };\n\n componentDidMount() {\n const hasFingerPrintData = !isErrorObject(this.state.fingerPrintData);\n\n if (hasFingerPrintData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.includes('localhost:8080')) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created fingerPrintData\n */\n const { threeDSMethodURL, threeDSMethodNotificationURL, postMessageDomain, threeDSServerTransID } = this.state\n .fingerPrintData as FingerPrintData;\n\n const hasValid3DSMethodURL = isValidHttpUrl(threeDSMethodURL, shouldAllowHttpDomains);\n\n // Only render component if we have a threeDSMethodURL. Otherwise, exit with threeDSCompInd: 'U'\n if (!hasValid3DSMethodURL) {\n this.setStatusComplete(\n { threeDSCompInd: 'U' },\n {\n errorCode: ErrorEventCode.THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing a valid threeDSMethodURL property`\n }\n );\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n // if (this.props.isMDFlow) {}\n\n console.debug('### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL');\n return;\n }\n\n const hasValid3DSMethodNotificationURL = isValidHttpUrl(threeDSMethodNotificationURL, shouldAllowHttpDomains);\n const hasValidPostMessageDomain = isValidHttpUrl(postMessageDomain, shouldAllowHttpDomains);\n const hasTransServerID = threeDSServerTransID?.length;\n\n if (!hasValid3DSMethodNotificationURL || !hasValidPostMessageDomain || !hasTransServerID) {\n /**\n * NOTE: EMVCo_3DS_CoreSpec_v2.3.1_20220831.pdf states that we should return: threeDSCompInd: 'N'\n * when the fingerprinting process \"Did not run or did not successfully complete\"\n */\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode: ErrorEventCode.THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`\n }\n );\n\n console.debug(\n '### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)'\n );\n\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'retrievingFingerPrint' });\n //\n } else {\n // Only render component if we have fingerPrintData. Otherwise, complete with threeDSCompInd: 'N'\n\n const errorMsg: string = (this.state.fingerPrintData as ErrorObject).error;\n\n const errorCode = errorMsg.includes(MISSING_TOKEN_IN_ACTION_MSG)\n ? ErrorEventCode.THREEDS2_ACTION_IS_MISSING_TOKEN\n : ErrorEventCode.THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED;\n\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode,\n message: `${THREEDS2_FINGERPRINT_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n }\n );\n\n console.debug('### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n const data: FingerprintResolveData = createFingerprintResolveData(this.props.dataKey, resultObj, this.props.paymentData);\n\n let event: AbstractAnalyticsEvent;\n\n /** Are we in an error scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === TIMEOUT ? ErrorEventCode.THREEDS2_TIMEOUT : finalResObject.errorCode,\n errorType: ErrorEventType.threeDS2\n };\n\n /**\n * Timeout or data parsing problems:\n *\n * (threeDSCompInd:\"U\"):\n * - Decoded token is missing a valid threeDSMethodURL property,\n * or, (threeDSCompInd:\"N\"):\n * - Fingerprint process has timed out,\n * also, (threeDSCompInd:\"N\"):\n * - Missing \"token\" property from threeDS2 action\n * - or, decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)\n * - or, token could not be base64 decoded &/or JSON.parsed\n */\n\n event = new AnalyticsErrorEvent({\n component: this.props.type,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n });\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(event);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.threeDSCompInd) {\n case 'Y':\n result = 'success';\n break;\n case 'N': {\n if (!errorCodeObject) {\n result = 'failed'; // 'failed' is the result returned from the threeDSMethodURL\n } else {\n result = errorCodeObject.errorCode === TIMEOUT ? TIMEOUT : 'failedInternal'; // timed-out; or, 'failed' as a result of internal checks\n }\n break;\n }\n case 'U':\n result = 'noThreeDSMethodURL';\n break;\n default:\n }\n\n /**\n * The fingerprint process is completed, one way or another.\n * The resultObj will be {threeDSCompInd:\"Y\"} in the case of success,\n * else {threeDSCompInd:\"U\"} or {threeDSCompInd:\"N\"} - if we've had some kind of timeout or data parsing problem (as described above)\n */\n\n event = new AnalyticsLogEvent({\n component: this.props.type,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.fingerprintCompleted,\n message: `${THREEDS2_NUM} fingerprinting has completed`,\n result\n });\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(event);\n\n /**\n * Equals call to callSubmit3DS2Fingerprint (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n render({ showSpinner }, { status, fingerPrintData }) {\n if (status === 'retrievingFingerPrint') {\n return (\n <DoFingerprint3DS2\n onCompleteFingerprint={fingerprint => {\n this.setStatusComplete(fingerprint.result);\n }}\n onErrorFingerprint={fingerprint => {\n /**\n * Called when fingerprint times-out (which is still a valid scenario)...\n */\n const timeoutObject: ErrorCodeObject = {\n errorCode: fingerprint.errorCode, // 'timeout'\n message: `${THREEDS2_FINGERPRINT}: ${fingerprint.errorCode}`\n };\n\n this.setStatusComplete(fingerprint.result, timeoutObject); // fingerprint.result = threeDSCompInd: 'N'\n }}\n showSpinner={showSpinner}\n {...fingerPrintData}\n onActionHandled={this.props.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareFingerprint3DS2;\n"],"names":["PrepareFingerprint3DS2","Component","componentDidMount","isErrorObject","this","state","fingerPrintData","shouldAllowHttpDomains","props","environment","_environmentUrls","api","includes","threeDSMethodURL","threeDSMethodNotificationURL","postMessageDomain","threeDSServerTransID","isValidHttpUrl","setStatusComplete","threeDSCompInd","errorCode","ErrorEventCode","THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL","message","THREEDS2_FINGERPRINT_ERROR","console","debug","hasValid3DSMethodNotificationURL","hasValidPostMessageDomain","hasTransServerID","length","THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS","setState","status","errorMsg","error","MISSING_TOKEN_IN_ACTION_MSG","THREEDS2_ACTION_IS_MISSING_TOKEN","THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED","resultObj","errorCodeObject","data","createFingerprintResolveData","dataKey","paymentData","event","finalResObject","errorTypeAndCode","code","TIMEOUT","THREEDS2_TIMEOUT","errorType","ErrorEventType","threeDS2","AnalyticsErrorEvent","component","type","onSubmitAnalytics","result","AnalyticsLogEvent","LogEventType","subType","LogEventSubtype","fingerprintCompleted","THREEDS2_NUM","onComplete","render","showSpinner","h","DoFingerprint3DS2","onCompleteFingerprint","fingerprint","onErrorFingerprint","timeoutObject","THREEDS2_FINGERPRINT","onActionHandled","onFormSubmit","constructor","super","_define_property","msg","fingerprintDataSentWeb","token","notificationURL","prepareFingerPrintData","success","defaultProps","onError","isMDFlow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PrepareFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoFingerprint3DS2 from './DoFingerprint3DS2';\nimport { createFingerprintResolveData, isFingerPrintData, prepareFingerPrintData } from '../utils';\nimport { PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State } from './types';\nimport { FingerPrintData, ResultObject, ErrorCodeObject, FingerprintResolveData } from '../../types';\nimport { ErrorObject } from '../../../../core/Errors/types';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport { THREEDS2_FINGERPRINT, THREEDS2_FINGERPRINT_ERROR, THREEDS2_NUM, MISSING_TOKEN_IN_ACTION_MSG, TIMEOUT } from '../../constants';\nimport { AnalyticsLogEvent, LogEventSubtype, LogEventType } from '../../../../core/Analytics/events/AnalyticsLogEvent';\nimport { AbstractAnalyticsEvent } from '../../../../core/Analytics/events/AbstractAnalyticsEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../../../core/Analytics/events/AnalyticsErrorEvent';\n\nclass PrepareFingerprint3DS2 extends Component<PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State> {\n public static readonly type = 'scheme';\n\n public static readonly defaultProps = {\n onComplete: () => {},\n onError: () => {},\n paymentData: '',\n showSpinner: true,\n isMDFlow: false\n };\n\n private get component(): string {\n return this.props.type ?? THREEDS2_FINGERPRINT;\n }\n\n constructor(props: PrepareFingerprint3DS2Props) {\n super(props);\n const { token, notificationURL } = this.props; // See comments on prepareFingerPrintData regarding notificationURL\n\n if (token) {\n const fingerPrintData: FingerPrintData | ErrorObject = prepareFingerPrintData({ token, notificationURL });\n\n this.state = {\n status: 'init',\n fingerPrintData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { fingerPrintData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_FINGERPRINT_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onFormSubmit = (msg: string) => {\n const event = new AnalyticsLogEvent({\n component: this.component,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.fingerprintDataSentWeb,\n message: msg\n });\n\n this.props.onSubmitAnalytics(event);\n };\n\n componentDidMount() {\n const { fingerPrintData } = this.state;\n const hasFingerPrintData = isFingerPrintData(fingerPrintData);\n\n if (hasFingerPrintData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.includes('localhost:8080')) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created fingerPrintData\n */\n const { threeDSMethodURL, threeDSMethodNotificationURL, postMessageDomain, threeDSServerTransID } = fingerPrintData;\n\n const hasValid3DSMethodURL = isValidHttpUrl(threeDSMethodURL, shouldAllowHttpDomains);\n\n // Only render component if we have a threeDSMethodURL. Otherwise, exit with threeDSCompInd: 'U'\n if (!hasValid3DSMethodURL) {\n this.setStatusComplete(\n { threeDSCompInd: 'U' },\n {\n errorCode: ErrorEventCode.THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing a valid threeDSMethodURL property`\n }\n );\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n // if (this.props.isMDFlow) {}\n\n console.debug('### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL');\n return;\n }\n\n const hasValid3DSMethodNotificationURL = isValidHttpUrl(threeDSMethodNotificationURL, shouldAllowHttpDomains);\n const hasValidPostMessageDomain = isValidHttpUrl(postMessageDomain, shouldAllowHttpDomains);\n const hasTransServerID = threeDSServerTransID?.length;\n\n if (!hasValid3DSMethodNotificationURL || !hasValidPostMessageDomain || !hasTransServerID) {\n /**\n * NOTE: EMVCo_3DS_CoreSpec_v2.3.1_20220831.pdf states that we should return: threeDSCompInd: 'N'\n * when the fingerprinting process \"Did not run or did not successfully complete\"\n */\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode: ErrorEventCode.THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`\n }\n );\n\n console.debug(\n '### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)'\n );\n\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'retrievingFingerPrint' });\n //\n } else {\n // Only render component if we have fingerPrintData. Otherwise, complete with threeDSCompInd: 'N'\n\n const errorMsg: string = fingerPrintData?.error ?? MISSING_TOKEN_IN_ACTION_MSG;\n\n const errorCode = errorMsg.includes(MISSING_TOKEN_IN_ACTION_MSG)\n ? ErrorEventCode.THREEDS2_ACTION_IS_MISSING_TOKEN\n : ErrorEventCode.THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED;\n\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode,\n message: `${THREEDS2_FINGERPRINT_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n }\n );\n\n console.debug('### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject?: ErrorCodeObject) {\n this.setState({ status: 'complete' }, () => {\n const data: FingerprintResolveData = createFingerprintResolveData(\n this.props.dataKey ?? 'fingerprintResult',\n resultObj,\n this.props.paymentData ?? ''\n );\n\n let event: AbstractAnalyticsEvent;\n\n /** Are we in an error scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === TIMEOUT ? ErrorEventCode.THREEDS2_TIMEOUT : finalResObject.errorCode,\n errorType: ErrorEventType.threeDS2\n };\n\n /**\n * Timeout or data parsing problems:\n *\n * (threeDSCompInd:\"U\"):\n * - Decoded token is missing a valid threeDSMethodURL property,\n * or, (threeDSCompInd:\"N\"):\n * - Fingerprint process has timed out,\n * also, (threeDSCompInd:\"N\"):\n * - Missing \"token\" property from threeDS2 action\n * - or, decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)\n * - or, token could not be base64 decoded &/or JSON.parsed\n */\n\n event = new AnalyticsErrorEvent({\n component: this.component,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n });\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(event);\n }\n\n /** Calculate \"result\" for analytics */\n let result = 'unknown';\n\n switch (resultObj.threeDSCompInd) {\n case 'Y':\n result = 'success';\n break;\n case 'N': {\n if (!errorCodeObject) {\n result = 'failed'; // 'failed' is the result returned from the threeDSMethodURL\n } else {\n result = errorCodeObject.errorCode === TIMEOUT ? TIMEOUT : 'failedInternal'; // timed-out; or, 'failed' as a result of internal checks\n }\n break;\n }\n case 'U':\n result = 'noThreeDSMethodURL';\n break;\n default:\n }\n\n /**\n * The fingerprint process is completed, one way or another.\n * The resultObj will be {threeDSCompInd:\"Y\"} in the case of success,\n * else {threeDSCompInd:\"U\"} or {threeDSCompInd:\"N\"} - if we've had some kind of timeout or data parsing problem (as described above)\n */\n\n event = new AnalyticsLogEvent({\n component: this.component,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.fingerprintCompleted,\n message: `${THREEDS2_NUM} fingerprinting has completed`,\n result\n });\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(event);\n\n /**\n * Equals call to callSubmit3DS2Fingerprint (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n render({ showSpinner }: PrepareFingerprint3DS2Props, { status, fingerPrintData }: PrepareFingerprint3DS2State) {\n if (status === 'retrievingFingerPrint' && isFingerPrintData(fingerPrintData)) {\n return (\n <DoFingerprint3DS2\n onCompleteFingerprint={fingerprint => {\n this.setStatusComplete(fingerprint.result);\n }}\n onErrorFingerprint={fingerprint => {\n /**\n * Called when fingerprint times-out (which is still a valid scenario)...\n */\n const timeoutObject: ErrorCodeObject = {\n errorCode: fingerprint.errorCode ?? '', // 'timeout'\n message: `${THREEDS2_FINGERPRINT}: ${fingerprint.errorCode}`\n };\n\n this.setStatusComplete(fingerprint.result, timeoutObject); // fingerprint.result = threeDSCompInd: 'N'\n }}\n showSpinner={showSpinner}\n {...fingerPrintData}\n onActionHandled={this.props.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareFingerprint3DS2;\n"],"names":["PrepareFingerprint3DS2","Component","component","this","props","type","THREEDS2_FINGERPRINT","componentDidMount","fingerPrintData","state","isFingerPrintData","shouldAllowHttpDomains","environment","_environmentUrls","api","includes","threeDSMethodURL","threeDSMethodNotificationURL","postMessageDomain","threeDSServerTransID","isValidHttpUrl","setStatusComplete","threeDSCompInd","errorCode","ErrorEventCode","THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL","message","THREEDS2_FINGERPRINT_ERROR","console","debug","hasValid3DSMethodNotificationURL","hasValidPostMessageDomain","hasTransServerID","length","THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS","setState","status","errorMsg","error","MISSING_TOKEN_IN_ACTION_MSG","THREEDS2_ACTION_IS_MISSING_TOKEN","THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED","resultObj","errorCodeObject","data","createFingerprintResolveData","dataKey","paymentData","event","finalResObject","errorTypeAndCode","code","TIMEOUT","THREEDS2_TIMEOUT","errorType","ErrorEventType","threeDS2","AnalyticsErrorEvent","onSubmitAnalytics","result","AnalyticsLogEvent","LogEventType","subType","LogEventSubtype","fingerprintCompleted","THREEDS2_NUM","onComplete","render","showSpinner","h","DoFingerprint3DS2","onCompleteFingerprint","fingerprint","onErrorFingerprint","timeoutObject","onActionHandled","onFormSubmit","constructor","super","_define_property","msg","fingerprintDataSentWeb","token","notificationURL","prepareFingerPrintData","success","defaultProps","onError","isMDFlow"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import r from"../../../../_virtual/index.js";class
|
|
1
|
+
import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import r from"../../../../_virtual/index.js";class n extends e{componentDidMount(){this.formEl?.submit(),this.formEl&&this.props.onFormSubmit(`${this.props.inputName} sent`)}render(){const{name:e,action:n,target:o,inputName:a,inputValue:s}=this.props;return t("form",{ref:e=>{this.formEl=e},method:"POST",className:r(["adyen-checkout__threeds2__form",`adyen-checkout__threeds2__form--${e}`]),name:e,action:n,target:o,style:{display:"none"}},t("input",{name:a,value:s}))}constructor(...e){var t,r,n;super(...e),n=null,(r="formEl")in(t=this)?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n}}export{n as default};
|
|
2
2
|
//# sourceMappingURL=ThreeDS2Form.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreeDS2Form.js","sources":["../../../../../../src/components/ThreeDS2/components/Form/ThreeDS2Form.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\n\ninterface ThreeDS2FormProps {\n name: string;\n action: string;\n target: string;\n inputName: string;\n inputValue: string;\n onFormSubmit: (msg: string) => void;\n}\n\nexport default class ThreeDS2Form extends Component<Readonly<ThreeDS2FormProps>> {\n protected formEl;\n\n componentDidMount() {\n this.formEl
|
|
1
|
+
{"version":3,"file":"ThreeDS2Form.js","sources":["../../../../../../src/components/ThreeDS2/components/Form/ThreeDS2Form.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\n\ninterface ThreeDS2FormProps {\n name: string;\n action: string;\n target: string;\n inputName: string;\n inputValue: string;\n onFormSubmit: (msg: string) => void;\n}\n\nexport default class ThreeDS2Form extends Component<Readonly<ThreeDS2FormProps>> {\n protected formEl: HTMLFormElement | null = null;\n\n componentDidMount() {\n this.formEl?.submit();\n if (this.formEl) {\n this.props.onFormSubmit(`${this.props.inputName} sent`);\n }\n }\n\n render() {\n const { name, action, target, inputName, inputValue } = this.props;\n return (\n <form\n ref={ref => {\n this.formEl = ref;\n }}\n method=\"POST\"\n className={classNames(['adyen-checkout__threeds2__form', `adyen-checkout__threeds2__form--${name}`])}\n name={name}\n action={action}\n target={target}\n style={{ display: 'none' }}\n >\n <input name={inputName} value={inputValue} />\n </form>\n );\n }\n}\n"],"names":["ThreeDS2Form","Component","componentDidMount","this","formEl","submit","props","onFormSubmit","inputName","render","name","action","target","inputValue","h","form","ref","method","className","classNames","style","display","input","value","super","args"],"mappings":"uIAYe,MAAMA,UAAqBC,EAGtCC,iBAAAA,GACIC,KAAKC,QAAQC,SACTF,KAAKC,QACLD,KAAKG,MAAMC,aAAa,GAAGJ,KAAKG,MAAME,iBAE9C,CAEAC,MAAAA,GACI,MAAMC,KAAEA,EAAIC,OAAEA,EAAMC,OAAEA,EAAMJ,UAAEA,EAASK,WAAEA,GAAeV,KAAKG,MAC7D,OACIQ,EAACC,OAAAA,CACGC,IAAKA,IACDb,KAAKC,OAASY,GAElBC,OAAO,OACPC,UAAWC,EAAW,CAAC,iCAAkC,mCAAmCT,MAC5FA,KAAMA,EACNC,OAAQA,EACRC,OAAQA,EACRQ,MAAO,CAAEC,QAAS,SAElBP,EAACQ,QAAAA,CAAMZ,KAAMF,EAAWe,MAAOV,IAG3C,6BA3BWW,SAAAC,KACgC,QAAjCrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CHALLENGE_WINDOW_SIZES as e,DEFAULT_CHALLENGE_WINDOW_SIZE as t}from"../constants.js";import{getOrigin as r}from"../../../utils/getOrigin.js";import n from"../../../utils/base64.js";const s=e
|
|
1
|
+
import{CHALLENGE_WINDOW_SIZES as e,DEFAULT_CHALLENGE_WINDOW_SIZE as t}from"../constants.js";import{getOrigin as r}from"../../../utils/getOrigin.js";import n from"../../../utils/base64.js";const s=e=>!!e&&"success"in e&&!e.success,o=e=>!!e&&!s(e),a=e=>!!e&&!s(e),i=e=>{const t=n.decode(e);if(t.success&&t.data)try{return JSON.parse(t.data)}catch(e){return{success:!1,error:"Could not JSON parse token"}}return t},c=e=>{if(!e||!Object.keys(e).length)throw new Error("No (populated) data object to encode");return n.encode(JSON.stringify(e))},p=r=>{const n=1===r.length?`0${r}`:r;return Object.prototype.hasOwnProperty.call(e,n)?n:t},h=t=>e[p(t)],u=({token:e,size:t})=>{const n=i(e);if(s(n))return n;const{acsTransID:o,acsURL:a,messageVersion:c,threeDSNotificationURL:u,threeDSServerTransID:l}=n,D=r(u??"");return{acsURL:a??"",cReqData:{acsTransID:o??"",messageVersion:c??"",threeDSServerTransID:l??"",messageType:"CReq",challengeWindowSize:p(t)},iframeSizeArr:h(t),postMessageDomain:D}},l=({token:e,notificationURL:t})=>{const n=i(e);if(s(n))return n;const{threeDSMethodNotificationURL:o,threeDSMethodUrl:a,threeDSServerTransID:c}=n,p=t??o??"";return{threeDSServerTransID:c??"",threeDSMethodURL:a??"",threeDSMethodNotificationURL:p,postMessageDomain:r(p)}},D=(e,t,r)=>({data:{[e]:c({threeDSCompInd:t.threeDSCompInd}),paymentData:r}}),S=(e,t,r)=>({data:{details:{[e]:c({transStatus:t,authorisationToken:r})}}}),d=e=>{let t=window.btoa(e).split("=")[0];return t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t},m=(e,t)=>"fingerprint"===e?{showSpinner:!t.isDropin,statusType:"loading",...t.elementRef&&{elementRef:t.elementRef}}:{statusType:"custom",i18n:t.i18n,elementRef:t.elementRef};export{S as createChallengeResolveData,D as createFingerprintResolveData,i as decodeAndParseToken,d as encodeBase64URL,c as encodeObject,m as get3DS2FlowProps,h as getChallengeWindowSize,a as isChallengeData,s as isErrorObject,o as isFingerPrintData,u as prepareChallengeData,l as prepareFingerPrintData,p as validateChallengeWindowSize};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../src/components/ThreeDS2/components/utils.ts"],"sourcesContent":["import { CHALLENGE_WINDOW_SIZES, DEFAULT_CHALLENGE_WINDOW_SIZE } from '../constants';\nimport { getOrigin } from '../../../utils/getOrigin';\nimport base64 from '../../../utils/base64';\nimport type {\n ChallengeData,\n ThreeDS2Token,\n FingerPrintData,\n ResultObject,\n FingerprintResolveData,\n ChallengeResolveData,\n ThreeDS2FlowProps,\n ThreeDS2ActionProps\n} from '../types';\nimport type { DecodeObject } from '../../../types/global-types';\nimport type { ErrorObject } from '../../../core/Errors/types';\n\n/**\n * Check if we have been passed an ErrorObject because either base64 decoding or JSON.parse failed\n * @param obj -\n */\nexport const isErrorObject = (obj: ErrorObject | ThreeDS2Token): boolean => {\n return 'success' in obj && !obj.success;\n};\n\nexport const decodeAndParseToken = (token: string): ThreeDS2Token | ErrorObject => {\n const decodedToken: DecodeObject = base64.decode(token);\n if (decodedToken.success && decodedToken.data) {\n try {\n return JSON.parse(decodedToken.data) as ThreeDS2Token;\n } catch (e) {\n return {\n success: false,\n error: 'Could not JSON parse token'\n };\n }\n }\n\n // base64.decode failed - object will contain error msg: 'not base64' or 'malformed URI sequence'\n return decodedToken as ErrorObject;\n};\n\n/**\n * Performs JSON.stringify on passed object & and base64 encodes result\n * @param obj -\n * @returns encoded result\n */\nexport const encodeObject = obj => {\n if (!obj || !Object.keys(obj).length) {\n throw new Error('No (populated) data object to encode');\n }\n return base64.encode(JSON.stringify(obj));\n};\n\n/**\n * Accepts a size string for the challenge window & returns it if it is valid else returns a default value\n * @param sizeStr - the size string to check the validity of\n * @returns a valid size string\n */\nexport const validateChallengeWindowSize = (sizeStr: string): string => {\n const sizeString = sizeStr.length === 1 ? `0${sizeStr}` : sizeStr;\n const hasSize = Object.prototype.hasOwnProperty.call(CHALLENGE_WINDOW_SIZES, sizeString);\n return hasSize ? sizeString : DEFAULT_CHALLENGE_WINDOW_SIZE;\n};\n\n/**\n * Accepts a size string for the challenge window & returns the corresponding array of w/h values\n * @param sizeStr -\n */\nexport const getChallengeWindowSize = (sizeStr: string): string[] => CHALLENGE_WINDOW_SIZES[validateChallengeWindowSize(sizeStr)];\n\n/**\n * prepareChallengeData\n *\n * Requires an object containing the challenge parameters:\n * @param token - challengeToken string received from /submitThreeDS2Fingerprint, /details or /payments call: contains acsTransID, acsURL, messageVersion,\n * threeDSNotificationURL and threeDSServerTransID\n * @param size - one of five possible challenge window sizes\n */\nexport const prepareChallengeData = ({ token, size }: { token: string; size: string }): ChallengeData | ErrorObject => {\n const decodedChallengeToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedChallengeToken)) {\n return decodedChallengeToken as ErrorObject;\n }\n\n const { acsTransID, acsURL, messageVersion, threeDSNotificationURL, threeDSServerTransID } = decodedChallengeToken as ThreeDS2Token;\n const notificationURLOrigin = getOrigin(threeDSNotificationURL ?? '');\n\n return {\n acsURL: acsURL ?? '',\n cReqData: {\n acsTransID: acsTransID ?? '',\n messageVersion: messageVersion ?? '',\n threeDSServerTransID: threeDSServerTransID ?? '',\n messageType: 'CReq',\n challengeWindowSize: validateChallengeWindowSize(size)\n },\n iframeSizeArr: getChallengeWindowSize(size),\n postMessageDomain: notificationURLOrigin\n };\n};\n\n/**\n * prepareFingerPrintData\n *\n * Requires an object containing the fingerprint parameters:\n * @param token - fingerprintToken string received from /payments call: contains threeDSMethodNotificationURL, threeDSMethodUrl and\n * threeDSServerTransID\n * @param notificationURL - the URL that the final notification is expected to be postMessaged from.\n *\n * NOTE: we don't expect merchants to alter the default by passing in a notificationURL of their own via props;\n * and if 3DS2 is being done via createFromAction or handleAction we won't accept it.\n * But if the merchant is using checkout.create('threeDS2DeviceFingerprint') we still support the fact that they might want to set their own\n * notificationURL (aka threeDSMethodNotificationURL)\n */\nexport const prepareFingerPrintData = ({ token, notificationURL }: { token: string; notificationURL?: string }): FingerPrintData | ErrorObject => {\n const decodedFingerPrintToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedFingerPrintToken)) {\n return decodedFingerPrintToken as ErrorObject;\n }\n\n const { threeDSMethodNotificationURL, threeDSMethodUrl: threeDSMethodURL, threeDSServerTransID } = decodedFingerPrintToken as ThreeDS2Token;\n const receivedNotificationURL = notificationURL ?? threeDSMethodNotificationURL ?? '';\n const notificationURLOrigin = getOrigin(receivedNotificationURL);\n\n return {\n threeDSServerTransID: threeDSServerTransID ?? '',\n threeDSMethodURL: threeDSMethodURL ?? '',\n threeDSMethodNotificationURL: receivedNotificationURL,\n postMessageDomain: notificationURLOrigin\n };\n};\n\nexport const createFingerprintResolveData = (dataKey: string, resultObj: ResultObject, paymentData: string): FingerprintResolveData => ({\n data: {\n [dataKey]: encodeObject({ threeDSCompInd: resultObj.threeDSCompInd }),\n paymentData\n }\n});\n\nexport const createChallengeResolveData = (dataKey: string, transStatus: string, authorisationToken: string): ChallengeResolveData => ({\n data: {\n details: { [dataKey]: encodeObject({ transStatus, authorisationToken }) }\n }\n});\n\n/**\n *\n * Takes a string and encodes it as a base64url string\n * (https://en.wikipedia.org/wiki/Base64#URL_applications)\n * (See also https://tools.ietf.org/html/rfc7515)\n *\n * @example\n * ```\n * const jsonStr = JSON.stringify( {name:'john', surname:'smith'} );\n * const base64url = encodeBase64URL(jsonStr);\n * ```\n *\n * @param dataStr - data, as a string, to be encoded\n *\n * @returns base64URL - a base64url encoded string\n */\nexport const encodeBase64URL = (dataStr: string): string => {\n const base64Data = window.btoa(dataStr);\n let base64url = base64Data.split('=')[0]; // Remove any trailing '='s\n\n base64url = base64url.replace(/\\+/g, '-'); // 62nd char of encoding\n base64url = base64url.replace(/\\//g, '_'); // 63rd char of encoding\n\n return base64url;\n};\n\n/**\n * Add props specifically needed for the type of 3DS2 flow: fingerprint or challenge\n *\n * @param actionSubtype - 3DS2 flow type: fingerprint or challenge\n * @param props - object from which to extract particular properties\n */\nexport const get3DS2FlowProps = (actionSubtype: string, props: ThreeDS2ActionProps): ThreeDS2FlowProps => {\n if (actionSubtype === 'fingerprint') {\n return {\n showSpinner: !props.isDropin,\n statusType: 'loading',\n // elementRef exists when the fingerprint component is created from the Dropin\n ...(props.elementRef && { elementRef: props.elementRef })\n };\n }\n\n // Challenge\n return {\n statusType: 'custom',\n i18n: props.i18n,\n elementRef: props.elementRef\n };\n};\n"],"names":["isErrorObject","obj","success","decodeAndParseToken","token","decodedToken","base64","decode","data","JSON","parse","e","error","encodeObject","Object","keys","length","Error","encode","stringify","validateChallengeWindowSize","sizeStr","sizeString","prototype","hasOwnProperty","call","CHALLENGE_WINDOW_SIZES","DEFAULT_CHALLENGE_WINDOW_SIZE","getChallengeWindowSize","prepareChallengeData","size","decodedChallengeToken","acsTransID","acsURL","messageVersion","threeDSNotificationURL","threeDSServerTransID","notificationURLOrigin","getOrigin","cReqData","messageType","challengeWindowSize","iframeSizeArr","postMessageDomain","prepareFingerPrintData","notificationURL","decodedFingerPrintToken","threeDSMethodNotificationURL","threeDSMethodUrl","threeDSMethodURL","receivedNotificationURL","createFingerprintResolveData","dataKey","resultObj","paymentData","threeDSCompInd","createChallengeResolveData","transStatus","authorisationToken","details","encodeBase64URL","dataStr","base64url","window","btoa","split","replace","get3DS2FlowProps","actionSubtype","props","showSpinner","isDropin","statusType","elementRef","i18n"],"mappings":"4LAoBO,MAAMA,EAAiBC,GACnB,YAAaA,IAAQA,EAAIC,QAGvBC,EAAuBC,IAChC,MAAMC,EAA6BC,EAAOC,OAAOH,GACjD,GAAIC,EAAaH,SAAWG,EAAaG,KACrC,IACI,OAAOC,KAAKC,MAAML,EAAaG,KACnC,CAAE,MAAOG,GACL,MAAO,CACHT,SAAS,EACTU,MAAO,6BAEf,CAIJ,OAAOP,GAQEQ,EAAeZ,IACxB,IAAKA,IAAQa,OAAOC,KAAKd,GAAKe,OAC1B,MAAM,IAAIC,MAAM,wCAEpB,OAAOX,EAAOY,OAAOT,KAAKU,UAAUlB,KAQ3BmB,EAA+BC,IACxC,MAAMC,EAAgC,IAAnBD,EAAQL,OAAe,IAAIK,IAAYA,EAE1D,OADgBP,OAAOS,UAAUC,eAAeC,KAAKC,EAAwBJ,GAC5DA,EAAaK,GAOrBC,EAA0BP,GAA8BK,EAAuBN,EAA4BC,IAU3GQ,EAAuB,EAAGzB,QAAO0B,WAC1C,MAAMC,EAAwB5B,EAAoBC,GAElD,GAAIJ,EAAc+B,GACd,OAAOA,EAGX,MAAMC,WAAEA,EAAUC,OAAEA,EAAMC,eAAEA,EAAcC,uBAAEA,EAAsBC,qBAAEA,GAAyBL,EACvFM,EAAwBC,EAAUH,GAA0B,IAElE,MAAO,CACHF,OAAQA,GAAU,GAClBM,SAAU,CACNP,WAAYA,GAAc,GAC1BE,eAAgBA,GAAkB,GAClCE,qBAAsBA,GAAwB,GAC9CI,YAAa,OACbC,oBAAqBrB,EAA4BU,IAErDY,cAAed,EAAuBE,GACtCa,kBAAmBN,IAiBdO,EAAyB,EAAGxC,QAAOyC,sBAC5C,MAAMC,EAA0B3C,EAAoBC,GAEpD,GAAIJ,EAAc8C,GACd,OAAOA,EAGX,MAAMC,6BAAEA,EAA8BC,iBAAkBC,EAAgBb,qBAAEA,GAAyBU,EAC7FI,EAA0BL,GAAmBE,GAAgC,GAGnF,MAAO,CACHX,qBAAsBA,GAAwB,GAC9Ca,iBAAkBA,GAAoB,GACtCF,6BAA8BG,EAC9BP,kBAN0BL,EAAUY,KAU/BC,EAA+B,CAACC,EAAiBC,EAAyBC,MACnF9C,KAAM,CACF4C,CAACA,GAAUvC,EAAa,CAAE0C,eAAgBF,EAAUE,iBACpDD,iBAIKE,EAA6B,CAACJ,EAAiBK,EAAqBC,MAC7ElD,KAAM,CACFmD,QAAS,CAAEP,CAACA,GAAUvC,EAAa,CAAE4C,cAAaC,2BAoB7CE,EAAmBC,IAE5B,IAAIC,EADeC,OAAOC,KAAKH,GACJI,MAAM,KAAK,GAKtC,OAHAH,EAAYA,EAAUI,QAAQ,MAAO,KACrCJ,EAAYA,EAAUI,QAAQ,MAAO,KAE9BJ,GASEK,EAAmB,CAACC,EAAuBC,IAC9B,gBAAlBD,EACO,CACHE,aAAcD,EAAME,SACpBC,WAAY,aAERH,EAAMI,YAAc,CAAEA,WAAYJ,EAAMI,aAK7C,CACHD,WAAY,SACZE,KAAML,EAAMK,KACZD,WAAYJ,EAAMI"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../src/components/ThreeDS2/components/utils.ts"],"sourcesContent":["import { CHALLENGE_WINDOW_SIZES, DEFAULT_CHALLENGE_WINDOW_SIZE } from '../constants';\nimport { getOrigin } from '../../../utils/getOrigin';\nimport base64 from '../../../utils/base64';\nimport type {\n ChallengeData,\n ThreeDS2Token,\n FingerPrintData,\n ResultObject,\n FingerprintResolveData,\n ChallengeResolveData,\n ThreeDS2FlowProps,\n ThreeDS2ActionProps\n} from '../types';\nimport type { DecodeObject } from '../../../types/global-types';\nimport type { ErrorObject } from '../../../core/Errors/types';\n\n/**\n * Check if we have been passed an ErrorObject because either base64 decoding or JSON.parse failed\n * @param obj -\n */\nexport const isErrorObject = (obj: ErrorObject | ThreeDS2Token | ChallengeData | FingerPrintData | undefined): obj is ErrorObject => {\n return !!obj && 'success' in obj && !obj.success;\n};\n\nexport const isFingerPrintData = (obj: FingerPrintData | ErrorObject | undefined): obj is FingerPrintData => {\n return !!obj && !isErrorObject(obj);\n};\n\nexport const isChallengeData = (obj: ChallengeData | ErrorObject | undefined): obj is ChallengeData => {\n return !!obj && !isErrorObject(obj);\n};\n\nexport const decodeAndParseToken = (token: string): ThreeDS2Token | ErrorObject => {\n const decodedToken: DecodeObject = base64.decode(token);\n if (decodedToken.success && decodedToken.data) {\n try {\n return JSON.parse(decodedToken.data) as ThreeDS2Token;\n } catch (e) {\n return {\n success: false,\n error: 'Could not JSON parse token'\n };\n }\n }\n\n // base64.decode failed - object will contain error msg: 'not base64' or 'malformed URI sequence'\n return decodedToken as ErrorObject;\n};\n\n/**\n * Performs JSON.stringify on passed object & and base64 encodes result\n * @param obj -\n * @returns encoded result\n */\nexport const encodeObject = obj => {\n if (!obj || !Object.keys(obj).length) {\n throw new Error('No (populated) data object to encode');\n }\n return base64.encode(JSON.stringify(obj));\n};\n\n/**\n * Accepts a size string for the challenge window & returns it if it is valid else returns a default value\n * @param sizeStr - the size string to check the validity of\n * @returns a valid size string\n */\nexport const validateChallengeWindowSize = (sizeStr: string): string => {\n const sizeString = sizeStr.length === 1 ? `0${sizeStr}` : sizeStr;\n const hasSize = Object.prototype.hasOwnProperty.call(CHALLENGE_WINDOW_SIZES, sizeString);\n return hasSize ? sizeString : DEFAULT_CHALLENGE_WINDOW_SIZE;\n};\n\n/**\n * Accepts a size string for the challenge window & returns the corresponding array of w/h values\n * @param sizeStr -\n */\nexport const getChallengeWindowSize = (sizeStr: string): string[] => CHALLENGE_WINDOW_SIZES[validateChallengeWindowSize(sizeStr)];\n\n/**\n * prepareChallengeData\n *\n * Requires an object containing the challenge parameters:\n * @param token - challengeToken string received from /submitThreeDS2Fingerprint, /details or /payments call: contains acsTransID, acsURL, messageVersion,\n * threeDSNotificationURL and threeDSServerTransID\n * @param size - one of five possible challenge window sizes\n */\nexport const prepareChallengeData = ({ token, size }: { token: string; size: string }): ChallengeData | ErrorObject => {\n const decodedChallengeToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedChallengeToken)) {\n return decodedChallengeToken;\n }\n\n const { acsTransID, acsURL, messageVersion, threeDSNotificationURL, threeDSServerTransID } = decodedChallengeToken;\n const notificationURLOrigin = getOrigin(threeDSNotificationURL ?? '');\n\n return {\n acsURL: acsURL ?? '',\n cReqData: {\n acsTransID: acsTransID ?? '',\n messageVersion: messageVersion ?? '',\n threeDSServerTransID: threeDSServerTransID ?? '',\n messageType: 'CReq',\n challengeWindowSize: validateChallengeWindowSize(size)\n },\n iframeSizeArr: getChallengeWindowSize(size),\n postMessageDomain: notificationURLOrigin\n };\n};\n\n/**\n * prepareFingerPrintData\n *\n * Requires an object containing the fingerprint parameters:\n * @param token - fingerprintToken string received from /payments call: contains threeDSMethodNotificationURL, threeDSMethodUrl and\n * threeDSServerTransID\n * @param notificationURL - the URL that the final notification is expected to be postMessaged from.\n *\n * NOTE: we don't expect merchants to alter the default by passing in a notificationURL of their own via props;\n * and if 3DS2 is being done via createFromAction or handleAction we won't accept it.\n * But if the merchant is using checkout.create('threeDS2DeviceFingerprint') we still support the fact that they might want to set their own\n * notificationURL (aka threeDSMethodNotificationURL)\n */\nexport const prepareFingerPrintData = ({ token, notificationURL }: { token: string; notificationURL?: string }): FingerPrintData | ErrorObject => {\n const decodedFingerPrintToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedFingerPrintToken)) {\n return decodedFingerPrintToken;\n }\n\n const { threeDSMethodNotificationURL, threeDSMethodUrl: threeDSMethodURL, threeDSServerTransID } = decodedFingerPrintToken;\n const receivedNotificationURL = notificationURL ?? threeDSMethodNotificationURL ?? '';\n const notificationURLOrigin = getOrigin(receivedNotificationURL);\n\n return {\n threeDSServerTransID: threeDSServerTransID ?? '',\n threeDSMethodURL: threeDSMethodURL ?? '',\n threeDSMethodNotificationURL: receivedNotificationURL,\n postMessageDomain: notificationURLOrigin\n };\n};\n\nexport const createFingerprintResolveData = (dataKey: string, resultObj: ResultObject, paymentData: string): FingerprintResolveData => ({\n data: {\n [dataKey]: encodeObject({ threeDSCompInd: resultObj.threeDSCompInd }),\n paymentData\n }\n});\n\nexport const createChallengeResolveData = (dataKey: string, transStatus: string, authorisationToken: string): ChallengeResolveData => ({\n data: {\n details: { [dataKey]: encodeObject({ transStatus, authorisationToken }) }\n }\n});\n\n/**\n *\n * Takes a string and encodes it as a base64url string\n * (https://en.wikipedia.org/wiki/Base64#URL_applications)\n * (See also https://tools.ietf.org/html/rfc7515)\n *\n * @example\n * ```\n * const jsonStr = JSON.stringify( {name:'john', surname:'smith'} );\n * const base64url = encodeBase64URL(jsonStr);\n * ```\n *\n * @param dataStr - data, as a string, to be encoded\n *\n * @returns base64URL - a base64url encoded string\n */\nexport const encodeBase64URL = (dataStr: string): string => {\n const base64Data = window.btoa(dataStr);\n let base64url = base64Data.split('=')[0]; // Remove any trailing '='s\n\n base64url = base64url.replace(/\\+/g, '-'); // 62nd char of encoding\n base64url = base64url.replace(/\\//g, '_'); // 63rd char of encoding\n\n return base64url;\n};\n\n/**\n * Add props specifically needed for the type of 3DS2 flow: fingerprint or challenge\n *\n * @param actionSubtype - 3DS2 flow type: fingerprint or challenge\n * @param props - object from which to extract particular properties\n */\nexport const get3DS2FlowProps = (actionSubtype: string, props: ThreeDS2ActionProps): ThreeDS2FlowProps => {\n if (actionSubtype === 'fingerprint') {\n return {\n showSpinner: !props.isDropin,\n statusType: 'loading',\n // elementRef exists when the fingerprint component is created from the Dropin\n ...(props.elementRef && { elementRef: props.elementRef })\n };\n }\n\n // Challenge\n return {\n statusType: 'custom',\n i18n: props.i18n,\n elementRef: props.elementRef\n };\n};\n"],"names":["isErrorObject","obj","success","isFingerPrintData","isChallengeData","decodeAndParseToken","token","decodedToken","base64","decode","data","JSON","parse","e","error","encodeObject","Object","keys","length","Error","encode","stringify","validateChallengeWindowSize","sizeStr","sizeString","prototype","hasOwnProperty","call","CHALLENGE_WINDOW_SIZES","DEFAULT_CHALLENGE_WINDOW_SIZE","getChallengeWindowSize","prepareChallengeData","size","decodedChallengeToken","acsTransID","acsURL","messageVersion","threeDSNotificationURL","threeDSServerTransID","notificationURLOrigin","getOrigin","cReqData","messageType","challengeWindowSize","iframeSizeArr","postMessageDomain","prepareFingerPrintData","notificationURL","decodedFingerPrintToken","threeDSMethodNotificationURL","threeDSMethodUrl","threeDSMethodURL","receivedNotificationURL","createFingerprintResolveData","dataKey","resultObj","paymentData","threeDSCompInd","createChallengeResolveData","transStatus","authorisationToken","details","encodeBase64URL","dataStr","base64url","window","btoa","split","replace","get3DS2FlowProps","actionSubtype","props","showSpinner","isDropin","statusType","elementRef","i18n"],"mappings":"4LAoBO,MAAMA,EAAiBC,KACjBA,GAAO,YAAaA,IAAQA,EAAIC,QAGhCC,EAAqBF,KACrBA,IAAQD,EAAcC,GAGtBG,EAAmBH,KACnBA,IAAQD,EAAcC,GAGtBI,EAAuBC,IAChC,MAAMC,EAA6BC,EAAOC,OAAOH,GACjD,GAAIC,EAAaL,SAAWK,EAAaG,KACrC,IACI,OAAOC,KAAKC,MAAML,EAAaG,KACnC,CAAE,MAAOG,GACL,MAAO,CACHX,SAAS,EACTY,MAAO,6BAEf,CAIJ,OAAOP,GAQEQ,EAAed,IACxB,IAAKA,IAAQe,OAAOC,KAAKhB,GAAKiB,OAC1B,MAAM,IAAIC,MAAM,wCAEpB,OAAOX,EAAOY,OAAOT,KAAKU,UAAUpB,KAQ3BqB,EAA+BC,IACxC,MAAMC,EAAgC,IAAnBD,EAAQL,OAAe,IAAIK,IAAYA,EAE1D,OADgBP,OAAOS,UAAUC,eAAeC,KAAKC,EAAwBJ,GAC5DA,EAAaK,GAOrBC,EAA0BP,GAA8BK,EAAuBN,EAA4BC,IAU3GQ,EAAuB,EAAGzB,QAAO0B,WAC1C,MAAMC,EAAwB5B,EAAoBC,GAElD,GAAIN,EAAciC,GACd,OAAOA,EAGX,MAAMC,WAAEA,EAAUC,OAAEA,EAAMC,eAAEA,EAAcC,uBAAEA,EAAsBC,qBAAEA,GAAyBL,EACvFM,EAAwBC,EAAUH,GAA0B,IAElE,MAAO,CACHF,OAAQA,GAAU,GAClBM,SAAU,CACNP,WAAYA,GAAc,GAC1BE,eAAgBA,GAAkB,GAClCE,qBAAsBA,GAAwB,GAC9CI,YAAa,OACbC,oBAAqBrB,EAA4BU,IAErDY,cAAed,EAAuBE,GACtCa,kBAAmBN,IAiBdO,EAAyB,EAAGxC,QAAOyC,sBAC5C,MAAMC,EAA0B3C,EAAoBC,GAEpD,GAAIN,EAAcgD,GACd,OAAOA,EAGX,MAAMC,6BAAEA,EAA8BC,iBAAkBC,EAAgBb,qBAAEA,GAAyBU,EAC7FI,EAA0BL,GAAmBE,GAAgC,GAGnF,MAAO,CACHX,qBAAsBA,GAAwB,GAC9Ca,iBAAkBA,GAAoB,GACtCF,6BAA8BG,EAC9BP,kBAN0BL,EAAUY,KAU/BC,EAA+B,CAACC,EAAiBC,EAAyBC,MACnF9C,KAAM,CACF4C,CAACA,GAAUvC,EAAa,CAAE0C,eAAgBF,EAAUE,iBACpDD,iBAIKE,EAA6B,CAACJ,EAAiBK,EAAqBC,MAC7ElD,KAAM,CACFmD,QAAS,CAAEP,CAACA,GAAUvC,EAAa,CAAE4C,cAAaC,2BAoB7CE,EAAmBC,IAE5B,IAAIC,EADeC,OAAOC,KAAKH,GACJI,MAAM,KAAK,GAKtC,OAHAH,EAAYA,EAAUI,QAAQ,MAAO,KACrCJ,EAAYA,EAAUI,QAAQ,MAAO,KAE9BJ,GASEK,EAAmB,CAACC,EAAuBC,IAC9B,gBAAlBD,EACO,CACHE,aAAcD,EAAME,SACpBC,WAAY,aAERH,EAAMI,YAAc,CAAEA,WAAYJ,EAAMI,aAK7C,CACHD,WAAY,SACZE,KAAML,EAAMK,KACZD,WAAYJ,EAAMI"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TxVariants as a}from"./tx-variants.js";const n={[a.address]:"Address",[a.donation]:"Donation",[a.personal_details]:"PersonalDetails",[a.bankTransfer_IBAN]:"BankTransfer",[a.bankTransfer_BE]:"BankTransfer",[a.bankTransfer_NL]:"BankTransfer",[a.bankTransfer_PL]:"BankTransfer",[a.bankTransfer_FR]:"BankTransfer",[a.bankTransfer_CH]:"BankTransfer",[a.bankTransfer_IE]:"BankTransfer",[a.bankTransfer_GB]:"BankTransfer",[a.bankTransfer_DE]:"BankTransfer",[a.bcmc]:"Bancontact",[a.card]:"Card",[a.scheme]:"Card",[a.storedCard]:"Card",[a.customCard]:"CustomCard",[a.ach]:"Ach",[a.directdebit_GB]:"BacsDirectDebit",[a.sepadirectdebit]:"SepaDirectDebit",[a.eft_directdebit_CA]:"PreAuthorizedDebitCanada",[a.affirm]:"Affirm",[a.afterpay]:"AfterPay",[a.afterpay_default]:"AfterPay",[a.afterpay_b2b]:"AfterPayB2B",[a.atome]:"Atome",[a.facilypay_3x]:"FacilyPay3x",[a.facilypay_4x]:"FacilyPay4x",[a.facilypay_6x]:"FacilyPay6x",[a.facilypay_10x]:"FacilyPay10x",[a.facilypay_12x]:"FacilyPay12x",[a.ratepay]:"RatePay",[a.ratepay_directdebit]:"RatePayDirectDebit",[a.amazonpay]:"AmazonPay",[a.applepay]:"ApplePay",[a.cashapp]:"CashAppPay",[a.clicktopay]:"ClickToPay",[a.googlepay]:"GooglePay",[a.paypal]:"PayPal",[a.
|
|
1
|
+
import{TxVariants as a}from"./tx-variants.js";const n={[a.address]:"Address",[a.donation]:"Donation",[a.personal_details]:"PersonalDetails",[a.bankTransfer_IBAN]:"BankTransfer",[a.bankTransfer_BE]:"BankTransfer",[a.bankTransfer_NL]:"BankTransfer",[a.bankTransfer_PL]:"BankTransfer",[a.bankTransfer_FR]:"BankTransfer",[a.bankTransfer_CH]:"BankTransfer",[a.bankTransfer_IE]:"BankTransfer",[a.bankTransfer_GB]:"BankTransfer",[a.bankTransfer_DE]:"BankTransfer",[a.bcmc]:"Bancontact",[a.card]:"Card",[a.scheme]:"Card",[a.storedCard]:"Card",[a.customCard]:"CustomCard",[a.ach]:"Ach",[a.directdebit_GB]:"BacsDirectDebit",[a.sepadirectdebit]:"SepaDirectDebit",[a.eft_directdebit_CA]:"PreAuthorizedDebitCanada",[a.affirm]:"Affirm",[a.afterpay]:"AfterPay",[a.afterpay_default]:"AfterPay",[a.afterpay_b2b]:"AfterPayB2B",[a.atome]:"Atome",[a.facilypay_3x]:"FacilyPay3x",[a.facilypay_4x]:"FacilyPay4x",[a.facilypay_6x]:"FacilyPay6x",[a.facilypay_10x]:"FacilyPay10x",[a.facilypay_12x]:"FacilyPay12x",[a.ratepay]:"RatePay",[a.ratepay_directdebit]:"RatePayDirectDebit",[a.amazonpay]:"AmazonPay",[a.applepay]:"ApplePay",[a.cashapp]:"CashAppPay",[a.clicktopay]:"ClickToPay",[a.googlepay]:"GooglePay",[a.paypal]:"PayPal",[a.fastlane]:"Fastlane",[a.paywithgoogle]:"GooglePay",[a.boletobancario]:"Boleto",[a.boletobancario_itau]:"Boleto",[a.boletobancario_santander]:"Boleto",[a.doku]:"Doku",[a.doku_alfamart]:"Doku",[a.doku_permata_lite_atm]:"Doku",[a.doku_indomaret]:"Doku",[a.doku_atm_mandiri_va]:"Doku",[a.doku_sinarmas_va]:"Doku",[a.doku_mandiri_va]:"Doku",[a.doku_cimb_va]:"Doku",[a.doku_danamon_va]:"Doku",[a.doku_bri_va]:"Doku",[a.doku_bni_va]:"Doku",[a.doku_bca_va]:"Doku",[a.doku_wallet]:"Doku",[a.oxxo]:"Oxxo",[a.primeiropay_boleto]:"Boleto",[a.billdesk_online]:"BillDeskOnline",[a.billdesk_wallet]:"BillDeskWallet",[a.dotpay]:"Dotpay",[a.eps]:"Eps",[a.iris]:"Iris",[a.molpay_ebanking_fpx_MY]:"MolPayEBankingMY",[a.molpay_ebanking_TH]:"MolPayEBankingTH",[a.molpay_ebanking_VN]:"MolPayEBankingVN",[a.onlineBanking_CZ]:"OnlineBankingCZ",[a.onlinebanking_IN]:"OnlineBankingIN",[a.onlineBanking_PL]:"OnlineBankingPL",[a.onlineBanking_SK]:"OnlineBankingSK",[a.paybybank]:"PayByBank",[a.payu_IN_cashcard]:"PayuCashcard",[a.payu_IN_nb]:"PayuNetBanking",[a.wallet_IN]:"WalletINElement",[a.dragonpay_ebanking]:"Dragonpay",[a.dragonpay_otc_banking]:"Dragonpay",[a.dragonpay_otc_non_banking]:"Dragonpay",[a.dragonpay_otc_philippines]:"Dragonpay",[a.econtext_atm]:"Econtext",[a.econtext_online]:"Econtext",[a.econtext_seven_eleven]:"Econtext",[a.econtext_stores]:"Econtext",[a.giropay]:"Giropay",[a.multibanco]:"Multibanco",[a.redirect]:"Redirect",[a.twint]:"Twint",[a.vipps]:"Vipps",[a.trustly]:"Trustly",[a.paybybank_AIS_DD]:"PayByBankUS",[a.riverty]:"Riverty",[a.paybybank_pix]:"PayByBankPix",[a.klarna]:"Klarna",[a.klarna_account]:"Klarna",[a.klarna_paynow]:"Klarna",[a.klarna_b2b]:"Klarna",[a.bcmc_mobile]:"BcmcMobile",[a.bcmc_mobile_QR]:"BcmcMobile",[a.pix]:"Pix",[a.swish]:"Swish",[a.wechatpay]:"WeChat",[a.wechatpayQR]:"WeChat",[a.promptpay]:"PromptPay",[a.paynow]:"PayNow",[a.duitnow]:"DuitNow",[a.blik]:"Blik",[a.mbway]:"MBWay",[a.ancv]:"ANCV",[a.payto]:"PayTo",[a.upi]:"UPI",[a.upi_qr]:"UPI",[a.upi_intent]:"UPI",[a.giftcard]:"Giftcard",[a.mealVoucher_FR_natixis]:"MealVoucherFR",[a.mealVoucher_FR_sodexo]:"MealVoucherFR",[a.mealVoucher_FR_groupeup]:"MealVoucherFR"};function e(a){return n[a]}export{e as default};
|
|
2
2
|
//# sourceMappingURL=components-name-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-name-map.js","sources":["../../../src/components/components-name-map.ts"],"sourcesContent":["import { TxVariants } from './tx-variants';\n\n/**\n * Maps each payment type with the string name of its Component element.\n *\n * It is used to give nicer error messages when creating components using Drop-in.\n * Example: paymentMethods response contains blik, but Blik component is not configured. So it warns that 'Blik' must be imported and added to the Drop-in configuration.\n */\nconst ComponentsNameMap = {\n /** internal */\n [TxVariants.address]: 'Address',\n [TxVariants.donation]: 'Donation',\n [TxVariants.personal_details]: 'PersonalDetails',\n /** internal */\n\n /** Bank Transfer */\n [TxVariants.bankTransfer_IBAN]: 'BankTransfer',\n [TxVariants.bankTransfer_BE]: 'BankTransfer',\n [TxVariants.bankTransfer_NL]: 'BankTransfer',\n [TxVariants.bankTransfer_PL]: 'BankTransfer',\n [TxVariants.bankTransfer_FR]: 'BankTransfer',\n [TxVariants.bankTransfer_CH]: 'BankTransfer',\n [TxVariants.bankTransfer_IE]: 'BankTransfer',\n [TxVariants.bankTransfer_GB]: 'BankTransfer',\n [TxVariants.bankTransfer_DE]: 'BankTransfer',\n /** Bank Transfer */\n\n /** Card */\n [TxVariants.bcmc]: 'Bancontact',\n [TxVariants.card]: 'Card',\n [TxVariants.scheme]: 'Card',\n [TxVariants.storedCard]: 'Card',\n [TxVariants.customCard]: 'CustomCard',\n /** Card */\n\n /** Direct debit */\n [TxVariants.ach]: 'Ach',\n [TxVariants.directdebit_GB]: 'BacsDirectDebit',\n [TxVariants.sepadirectdebit]: 'SepaDirectDebit',\n [TxVariants.eft_directdebit_CA]: 'PreAuthorizedDebitCanada',\n /** Direct debit */\n\n /** Open Invoice */\n [TxVariants.affirm]: 'Affirm',\n [TxVariants.afterpay]: 'AfterPay',\n [TxVariants.afterpay_default]: 'AfterPay',\n [TxVariants.afterpay_b2b]: 'AfterPayB2B',\n [TxVariants.atome]: 'Atome',\n [TxVariants.facilypay_3x]: 'FacilyPay3x',\n [TxVariants.facilypay_4x]: 'FacilyPay4x',\n [TxVariants.facilypay_6x]: 'FacilyPay6x',\n [TxVariants.facilypay_10x]: 'FacilyPay10x',\n [TxVariants.facilypay_12x]: 'FacilyPay12x',\n [TxVariants.ratepay]: 'RatePay',\n [TxVariants.ratepay_directdebit]: 'RatePayDirectDebit',\n /** Open Invoice */\n\n /** Wallets */\n [TxVariants.amazonpay]: 'AmazonPay',\n [TxVariants.applepay]: 'ApplePay',\n [TxVariants.cashapp]: 'CashAppPay',\n [TxVariants.clicktopay]: 'ClickToPay',\n [TxVariants.googlepay]: 'GooglePay',\n [TxVariants.paypal]: 'PayPal',\n [TxVariants.paypal_paylater]: 'PayPalPayLater',\n [TxVariants.paypal_credit]: 'PayPalCredit',\n [TxVariants.venmo]: 'Venmo',\n [TxVariants.fastlane]: 'Fastlane',\n [TxVariants.paywithgoogle]: 'GooglePay',\n /** Wallets */\n\n /** Voucher */\n [TxVariants.boletobancario]: 'Boleto',\n [TxVariants.boletobancario_itau]: 'Boleto',\n [TxVariants.boletobancario_santander]: 'Boleto',\n [TxVariants.doku]: 'Doku',\n [TxVariants.doku_alfamart]: 'Doku',\n [TxVariants.doku_permata_lite_atm]: 'Doku',\n [TxVariants.doku_indomaret]: 'Doku',\n [TxVariants.doku_atm_mandiri_va]: 'Doku',\n [TxVariants.doku_sinarmas_va]: 'Doku',\n [TxVariants.doku_mandiri_va]: 'Doku',\n [TxVariants.doku_cimb_va]: 'Doku',\n [TxVariants.doku_danamon_va]: 'Doku',\n [TxVariants.doku_bri_va]: 'Doku',\n [TxVariants.doku_bni_va]: 'Doku',\n [TxVariants.doku_bca_va]: 'Doku',\n [TxVariants.doku_wallet]: 'Doku',\n [TxVariants.oxxo]: 'Oxxo',\n [TxVariants.primeiropay_boleto]: 'Boleto',\n /** Voucher */\n\n /** issuerList */\n [TxVariants.billdesk_online]: 'BillDeskOnline',\n [TxVariants.billdesk_wallet]: 'BillDeskWallet',\n [TxVariants.dotpay]: 'Dotpay',\n [TxVariants.eps]: 'Eps',\n [TxVariants.iris]: 'Iris',\n [TxVariants.molpay_ebanking_fpx_MY]: 'MolPayEBankingMY',\n [TxVariants.molpay_ebanking_TH]: 'MolPayEBankingTH',\n [TxVariants.molpay_ebanking_VN]: 'MolPayEBankingVN',\n [TxVariants.onlineBanking_CZ]: 'OnlineBankingCZ',\n [TxVariants.onlinebanking_IN]: 'OnlineBankingIN', // NOTE: the txVariant does have a lowercase \"b\"\n [TxVariants.onlineBanking_PL]: 'OnlineBankingPL',\n [TxVariants.onlineBanking_SK]: 'OnlineBankingSK',\n [TxVariants.paybybank]: 'PayByBank',\n [TxVariants.payu_IN_cashcard]: 'PayuCashcard',\n [TxVariants.payu_IN_nb]: 'PayuNetBanking',\n [TxVariants.wallet_IN]: 'WalletINElement',\n /** issuerList */\n\n /** Dragonpay */\n [TxVariants.dragonpay_ebanking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_non_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_philippines]: 'Dragonpay',\n /** Dragonpay */\n\n /** Econtext */\n [TxVariants.econtext_atm]: 'Econtext',\n [TxVariants.econtext_online]: 'Econtext',\n [TxVariants.econtext_seven_eleven]: 'Econtext',\n [TxVariants.econtext_stores]: 'Econtext',\n /** Econtext */\n\n /** Redirect */\n [TxVariants.giropay]: 'Giropay',\n [TxVariants.multibanco]: 'Multibanco',\n [TxVariants.redirect]: 'Redirect',\n [TxVariants.twint]: 'Twint',\n [TxVariants.vipps]: 'Vipps',\n [TxVariants.trustly]: 'Trustly',\n [TxVariants.paybybank_AIS_DD]: 'PayByBankUS',\n [TxVariants.riverty]: 'Riverty',\n [TxVariants.paybybank_pix]: 'PayByBankPix',\n /** Redirect */\n\n /** Klarna */\n [TxVariants.klarna]: 'Klarna',\n [TxVariants.klarna_account]: 'Klarna',\n [TxVariants.klarna_paynow]: 'Klarna',\n [TxVariants.klarna_b2b]: 'Klarna',\n /** Klarna */\n\n /** QRLoader */\n [TxVariants.bcmc_mobile]: 'BcmcMobile',\n [TxVariants.bcmc_mobile_QR]: 'BcmcMobile',\n [TxVariants.pix]: 'Pix',\n [TxVariants.swish]: 'Swish',\n [TxVariants.wechatpay]: 'WeChat',\n [TxVariants.wechatpayQR]: 'WeChat',\n [TxVariants.promptpay]: 'PromptPay',\n [TxVariants.paynow]: 'PayNow',\n [TxVariants.duitnow]: 'DuitNow',\n /** QRLoader */\n\n /** Await */\n [TxVariants.blik]: 'Blik',\n [TxVariants.mbway]: 'MBWay',\n [TxVariants.ancv]: 'ANCV',\n [TxVariants.payto]: 'PayTo',\n [TxVariants.upi]: 'UPI', // also QR\n [TxVariants.upi_qr]: 'UPI', // also QR\n [TxVariants.upi_intent]: 'UPI',\n /** Await */\n\n /** Giftcard */\n [TxVariants.giftcard]: 'Giftcard',\n [TxVariants.mealVoucher_FR_natixis]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_sodexo]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_groupeup]: 'MealVoucherFR'\n /** Giftcard */\n};\n\n/**\n * Returns the Component name based on the payment type\n * @param paymentType\n */\nfunction getComponentNameOfPaymentType(paymentType: string): string {\n return ComponentsNameMap[paymentType];\n}\n\nexport default getComponentNameOfPaymentType;\n"],"names":["ComponentsNameMap","TxVariants","address","donation","personal_details","bankTransfer_IBAN","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","bcmc","card","scheme","storedCard","customCard","ach","directdebit_GB","sepadirectdebit","eft_directdebit_CA","affirm","afterpay","afterpay_default","afterpay_b2b","atome","facilypay_3x","facilypay_4x","facilypay_6x","facilypay_10x","facilypay_12x","ratepay","ratepay_directdebit","amazonpay","applepay","cashapp","clicktopay","googlepay","paypal","paypal_paylater","paypal_credit","venmo","fastlane","paywithgoogle","boletobancario","boletobancario_itau","boletobancario_santander","doku","doku_alfamart","doku_permata_lite_atm","doku_indomaret","doku_atm_mandiri_va","doku_sinarmas_va","doku_mandiri_va","doku_cimb_va","doku_danamon_va","doku_bri_va","doku_bni_va","doku_bca_va","doku_wallet","oxxo","primeiropay_boleto","billdesk_online","billdesk_wallet","dotpay","eps","iris","molpay_ebanking_fpx_MY","molpay_ebanking_TH","molpay_ebanking_VN","onlineBanking_CZ","onlinebanking_IN","onlineBanking_PL","onlineBanking_SK","paybybank","payu_IN_cashcard","payu_IN_nb","wallet_IN","dragonpay_ebanking","dragonpay_otc_banking","dragonpay_otc_non_banking","dragonpay_otc_philippines","econtext_atm","econtext_online","econtext_seven_eleven","econtext_stores","giropay","multibanco","redirect","twint","vipps","trustly","paybybank_AIS_DD","riverty","paybybank_pix","klarna","klarna_account","klarna_paynow","klarna_b2b","bcmc_mobile","bcmc_mobile_QR","pix","swish","wechatpay","wechatpayQR","promptpay","paynow","duitnow","blik","mbway","ancv","payto","upi","upi_qr","upi_intent","giftcard","mealVoucher_FR_natixis","mealVoucher_FR_sodexo","mealVoucher_FR_groupeup","getComponentNameOfPaymentType","paymentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-name-map.js","sources":["../../../src/components/components-name-map.ts"],"sourcesContent":["import { TxVariants } from './tx-variants';\n\n/**\n * Maps each payment type with the string name of its Component element.\n *\n * It is used to give nicer error messages when creating components using Drop-in.\n * Example: paymentMethods response contains blik, but Blik component is not configured. So it warns that 'Blik' must be imported and added to the Drop-in configuration.\n */\nconst ComponentsNameMap = {\n /** internal */\n [TxVariants.address]: 'Address',\n [TxVariants.donation]: 'Donation',\n [TxVariants.personal_details]: 'PersonalDetails',\n /** internal */\n\n /** Bank Transfer */\n [TxVariants.bankTransfer_IBAN]: 'BankTransfer',\n [TxVariants.bankTransfer_BE]: 'BankTransfer',\n [TxVariants.bankTransfer_NL]: 'BankTransfer',\n [TxVariants.bankTransfer_PL]: 'BankTransfer',\n [TxVariants.bankTransfer_FR]: 'BankTransfer',\n [TxVariants.bankTransfer_CH]: 'BankTransfer',\n [TxVariants.bankTransfer_IE]: 'BankTransfer',\n [TxVariants.bankTransfer_GB]: 'BankTransfer',\n [TxVariants.bankTransfer_DE]: 'BankTransfer',\n /** Bank Transfer */\n\n /** Card */\n [TxVariants.bcmc]: 'Bancontact',\n [TxVariants.card]: 'Card',\n [TxVariants.scheme]: 'Card',\n [TxVariants.storedCard]: 'Card',\n [TxVariants.customCard]: 'CustomCard',\n /** Card */\n\n /** Direct debit */\n [TxVariants.ach]: 'Ach',\n [TxVariants.directdebit_GB]: 'BacsDirectDebit',\n [TxVariants.sepadirectdebit]: 'SepaDirectDebit',\n [TxVariants.eft_directdebit_CA]: 'PreAuthorizedDebitCanada',\n /** Direct debit */\n\n /** Open Invoice */\n [TxVariants.affirm]: 'Affirm',\n [TxVariants.afterpay]: 'AfterPay',\n [TxVariants.afterpay_default]: 'AfterPay',\n [TxVariants.afterpay_b2b]: 'AfterPayB2B',\n [TxVariants.atome]: 'Atome',\n [TxVariants.facilypay_3x]: 'FacilyPay3x',\n [TxVariants.facilypay_4x]: 'FacilyPay4x',\n [TxVariants.facilypay_6x]: 'FacilyPay6x',\n [TxVariants.facilypay_10x]: 'FacilyPay10x',\n [TxVariants.facilypay_12x]: 'FacilyPay12x',\n [TxVariants.ratepay]: 'RatePay',\n [TxVariants.ratepay_directdebit]: 'RatePayDirectDebit',\n /** Open Invoice */\n\n /** Wallets */\n [TxVariants.amazonpay]: 'AmazonPay',\n [TxVariants.applepay]: 'ApplePay',\n [TxVariants.cashapp]: 'CashAppPay',\n [TxVariants.clicktopay]: 'ClickToPay',\n [TxVariants.googlepay]: 'GooglePay',\n [TxVariants.paypal]: 'PayPal',\n [TxVariants.fastlane]: 'Fastlane',\n [TxVariants.paywithgoogle]: 'GooglePay',\n /** Wallets */\n\n /** Voucher */\n [TxVariants.boletobancario]: 'Boleto',\n [TxVariants.boletobancario_itau]: 'Boleto',\n [TxVariants.boletobancario_santander]: 'Boleto',\n [TxVariants.doku]: 'Doku',\n [TxVariants.doku_alfamart]: 'Doku',\n [TxVariants.doku_permata_lite_atm]: 'Doku',\n [TxVariants.doku_indomaret]: 'Doku',\n [TxVariants.doku_atm_mandiri_va]: 'Doku',\n [TxVariants.doku_sinarmas_va]: 'Doku',\n [TxVariants.doku_mandiri_va]: 'Doku',\n [TxVariants.doku_cimb_va]: 'Doku',\n [TxVariants.doku_danamon_va]: 'Doku',\n [TxVariants.doku_bri_va]: 'Doku',\n [TxVariants.doku_bni_va]: 'Doku',\n [TxVariants.doku_bca_va]: 'Doku',\n [TxVariants.doku_wallet]: 'Doku',\n [TxVariants.oxxo]: 'Oxxo',\n [TxVariants.primeiropay_boleto]: 'Boleto',\n /** Voucher */\n\n /** issuerList */\n [TxVariants.billdesk_online]: 'BillDeskOnline',\n [TxVariants.billdesk_wallet]: 'BillDeskWallet',\n [TxVariants.dotpay]: 'Dotpay',\n [TxVariants.eps]: 'Eps',\n [TxVariants.iris]: 'Iris',\n [TxVariants.molpay_ebanking_fpx_MY]: 'MolPayEBankingMY',\n [TxVariants.molpay_ebanking_TH]: 'MolPayEBankingTH',\n [TxVariants.molpay_ebanking_VN]: 'MolPayEBankingVN',\n [TxVariants.onlineBanking_CZ]: 'OnlineBankingCZ',\n [TxVariants.onlinebanking_IN]: 'OnlineBankingIN', // NOTE: the txVariant does have a lowercase \"b\"\n [TxVariants.onlineBanking_PL]: 'OnlineBankingPL',\n [TxVariants.onlineBanking_SK]: 'OnlineBankingSK',\n [TxVariants.paybybank]: 'PayByBank',\n [TxVariants.payu_IN_cashcard]: 'PayuCashcard',\n [TxVariants.payu_IN_nb]: 'PayuNetBanking',\n [TxVariants.wallet_IN]: 'WalletINElement',\n /** issuerList */\n\n /** Dragonpay */\n [TxVariants.dragonpay_ebanking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_non_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_philippines]: 'Dragonpay',\n /** Dragonpay */\n\n /** Econtext */\n [TxVariants.econtext_atm]: 'Econtext',\n [TxVariants.econtext_online]: 'Econtext',\n [TxVariants.econtext_seven_eleven]: 'Econtext',\n [TxVariants.econtext_stores]: 'Econtext',\n /** Econtext */\n\n /** Redirect */\n [TxVariants.giropay]: 'Giropay',\n [TxVariants.multibanco]: 'Multibanco',\n [TxVariants.redirect]: 'Redirect',\n [TxVariants.twint]: 'Twint',\n [TxVariants.vipps]: 'Vipps',\n [TxVariants.trustly]: 'Trustly',\n [TxVariants.paybybank_AIS_DD]: 'PayByBankUS',\n [TxVariants.riverty]: 'Riverty',\n [TxVariants.paybybank_pix]: 'PayByBankPix',\n /** Redirect */\n\n /** Klarna */\n [TxVariants.klarna]: 'Klarna',\n [TxVariants.klarna_account]: 'Klarna',\n [TxVariants.klarna_paynow]: 'Klarna',\n [TxVariants.klarna_b2b]: 'Klarna',\n /** Klarna */\n\n /** QRLoader */\n [TxVariants.bcmc_mobile]: 'BcmcMobile',\n [TxVariants.bcmc_mobile_QR]: 'BcmcMobile',\n [TxVariants.pix]: 'Pix',\n [TxVariants.swish]: 'Swish',\n [TxVariants.wechatpay]: 'WeChat',\n [TxVariants.wechatpayQR]: 'WeChat',\n [TxVariants.promptpay]: 'PromptPay',\n [TxVariants.paynow]: 'PayNow',\n [TxVariants.duitnow]: 'DuitNow',\n /** QRLoader */\n\n /** Await */\n [TxVariants.blik]: 'Blik',\n [TxVariants.mbway]: 'MBWay',\n [TxVariants.ancv]: 'ANCV',\n [TxVariants.payto]: 'PayTo',\n [TxVariants.upi]: 'UPI', // also QR\n [TxVariants.upi_qr]: 'UPI', // also QR\n [TxVariants.upi_intent]: 'UPI',\n /** Await */\n\n /** Giftcard */\n [TxVariants.giftcard]: 'Giftcard',\n [TxVariants.mealVoucher_FR_natixis]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_sodexo]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_groupeup]: 'MealVoucherFR'\n /** Giftcard */\n};\n\n/**\n * Returns the Component name based on the payment type\n * @param paymentType\n */\nfunction getComponentNameOfPaymentType(paymentType: string): string {\n return ComponentsNameMap[paymentType];\n}\n\nexport default getComponentNameOfPaymentType;\n"],"names":["ComponentsNameMap","TxVariants","address","donation","personal_details","bankTransfer_IBAN","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","bcmc","card","scheme","storedCard","customCard","ach","directdebit_GB","sepadirectdebit","eft_directdebit_CA","affirm","afterpay","afterpay_default","afterpay_b2b","atome","facilypay_3x","facilypay_4x","facilypay_6x","facilypay_10x","facilypay_12x","ratepay","ratepay_directdebit","amazonpay","applepay","cashapp","clicktopay","googlepay","paypal","fastlane","paywithgoogle","boletobancario","boletobancario_itau","boletobancario_santander","doku","doku_alfamart","doku_permata_lite_atm","doku_indomaret","doku_atm_mandiri_va","doku_sinarmas_va","doku_mandiri_va","doku_cimb_va","doku_danamon_va","doku_bri_va","doku_bni_va","doku_bca_va","doku_wallet","oxxo","primeiropay_boleto","billdesk_online","billdesk_wallet","dotpay","eps","iris","molpay_ebanking_fpx_MY","molpay_ebanking_TH","molpay_ebanking_VN","onlineBanking_CZ","onlinebanking_IN","onlineBanking_PL","onlineBanking_SK","paybybank","payu_IN_cashcard","payu_IN_nb","wallet_IN","dragonpay_ebanking","dragonpay_otc_banking","dragonpay_otc_non_banking","dragonpay_otc_philippines","econtext_atm","econtext_online","econtext_seven_eleven","econtext_stores","giropay","multibanco","redirect","twint","vipps","trustly","paybybank_AIS_DD","riverty","paybybank_pix","klarna","klarna_account","klarna_paynow","klarna_b2b","bcmc_mobile","bcmc_mobile_QR","pix","swish","wechatpay","wechatpayQR","promptpay","paynow","duitnow","blik","mbway","ancv","payto","upi","upi_qr","upi_intent","giftcard","mealVoucher_FR_natixis","mealVoucher_FR_sodexo","mealVoucher_FR_groupeup","getComponentNameOfPaymentType","paymentType"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../../external/preact/dist/preact.js";import{UIElement as s}from"../../internal/UIElement/UIElement.js";import e from"../../internal/IssuerList/IssuerList.js";import i from"../../../utils/get-issuer-image.js";import{FALLBACK_CONTEXT as
|
|
1
|
+
import{createElement as t}from"../../../external/preact/dist/preact.js";import{UIElement as s}from"../../internal/UIElement/UIElement.js";import e from"../../internal/IssuerList/IssuerList.js";import i from"../../../utils/get-issuer-image.js";import{FALLBACK_CONTEXT as r}from"../../../core/config.js";import o from"../../internal/RedirectButton/RedirectButton.js";class n extends s{formatProps(t){const s=t?.details?.length&&t.details.find(t=>"issuer"===t.key)?.items||t.issuers||[];return{...t,issuers:s}}formatData(){return{paymentMethod:{type:this.type,issuer:this.state?.data?.issuer}}}get isValid(){return 0===this.props.issuers.length||Boolean(this.state?.isValid)}get brands(){return this.props.showPaymentMethodItemImages?this.props.issuers.map(t=>({icon:t.icon,name:t.id})):[]}componentToRender(){return this.props.issuers.length>0?t(e,{items:this.props.issuers,highlightedIds:this.props.highlightedIssuers,...this.props,...this.state,setComponentRef:this.setComponentRef,showImage:this.props.showImage,type:this.constructor.type,onChange:this.setState,onSubmit:this.submit,payButton:this.payButton,contextualText:this.props.i18n.get("issuerList.selectField.contextualText"),onSubmitAnalytics:this.submitAnalytics}):t(o,{name:this.props.name,...this.props,onSubmit:this.submit,payButton:this.payButton,setComponentRef:this.setComponentRef})}constructor(t,s){super(t,s);const e=t=>this.resources.getImage(t);if(this.props.showImage){const t=i({},this.constructor.type,e);this.props.issuers=this.props.issuers.map(s=>({...s,icon:t(s.id)}))}}}var a,p,h;h={showImage:!0,issuers:[],highlightedIssuers:[],loadingContext:r,showPaymentMethodItemImages:!1},(p="defaultProps")in(a=n)?Object.defineProperty(a,p,{value:h,enumerable:!0,configurable:!0,writable:!0}):a[p]=h;export{n as default};
|
|
2
2
|
//# sourceMappingURL=IssuerListContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IssuerListContainer.js","sources":["../../../../../src/components/helpers/IssuerListContainer/IssuerListContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport IssuerList from '../../internal/IssuerList';\nimport getIssuerImageUrl from '../../../utils/get-issuer-image';\nimport { FALLBACK_CONTEXT } from '../../../core/config';\nimport RedirectButton from '../../internal/RedirectButton';\nimport { IssuerListConfiguration, IssuerListData } from './types';\nimport type { ICore } from '../../../core/types';\nimport { PaymentData, PaymentMethodBrand } from '../../../types/global-types';\nimport { ImageOptions } from '../../../core/Context/Resources';\n\nclass IssuerListContainer<\n TProps extends IssuerListConfiguration = IssuerListConfiguration,\n TData extends PaymentData = IssuerListData\n> extends UIElement<TProps> {\n protected static readonly defaultProps = {\n showImage: true,\n issuers: [],\n highlightedIssuers: [],\n loadingContext: FALLBACK_CONTEXT,\n showPaymentMethodItemImages: false\n };\n\n constructor(checkout: ICore, props?: TProps) {\n super(checkout, props);\n\n const getImage = (props: ImageOptions) => this.resources.getImage(props);\n\n if (this.props.showImage) {\n const getIssuerIcon = getIssuerImageUrl({
|
|
1
|
+
{"version":3,"file":"IssuerListContainer.js","sources":["../../../../../src/components/helpers/IssuerListContainer/IssuerListContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport IssuerList from '../../internal/IssuerList';\nimport getIssuerImageUrl from '../../../utils/get-issuer-image';\nimport { FALLBACK_CONTEXT } from '../../../core/config';\nimport RedirectButton from '../../internal/RedirectButton';\nimport { IssuerListConfiguration, IssuerListData } from './types';\nimport type { ICore } from '../../../core/types';\nimport { PaymentData, PaymentMethodBrand } from '../../../types/global-types';\nimport { ImageOptions } from '../../../core/Context/Resources';\n\nclass IssuerListContainer<\n TProps extends IssuerListConfiguration = IssuerListConfiguration,\n TData extends PaymentData = IssuerListData\n> extends UIElement<TProps> {\n protected static readonly defaultProps = {\n showImage: true,\n issuers: [],\n highlightedIssuers: [],\n loadingContext: FALLBACK_CONTEXT,\n showPaymentMethodItemImages: false\n };\n\n constructor(checkout: ICore, props?: TProps) {\n super(checkout, props);\n\n const getImage = (props: ImageOptions) => this.resources.getImage(props);\n\n if (this.props.showImage) {\n const getIssuerIcon = getIssuerImageUrl({}, this.constructor['type'], getImage);\n\n this.props.issuers = this.props.issuers.map(item => ({\n ...item,\n icon: getIssuerIcon(item.id)\n }));\n }\n }\n\n formatProps(props: TProps): TProps {\n const issuers =\n // @ts-expect-error - details is not in the props type but we need it for backward compatibility\n (props?.details?.length && props.details.find((d: Record<string, unknown>) => d.key === 'issuer')?.items) || props.issuers || [];\n return { ...props, issuers };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): TData {\n return {\n paymentMethod: {\n type: this.type,\n issuer: this.state?.data?.issuer\n }\n } as unknown as TData;\n }\n\n /**\n * Returns whether the component state is valid or not\n */\n get isValid() {\n if (this.props.issuers.length === 0) {\n return true;\n }\n return Boolean(this.state?.isValid);\n }\n\n /**\n * Returns brands array (similar to card) depending on showPaymentMethodItemImages\n * This is used to show the brands in the PaymentMethodItem\n * Requires brands icons to be loaded in the payment method\n */\n get brands(): PaymentMethodBrand[] {\n if (this.props.showPaymentMethodItemImages) {\n return this.props.issuers.map(brand => {\n const brandIcon = brand.icon;\n return { icon: brandIcon, name: brand.id };\n });\n }\n\n return [];\n }\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.issuers.length > 0 ? (\n <IssuerList\n items={this.props.issuers}\n highlightedIds={this.props.highlightedIssuers}\n {...this.props}\n {...this.state}\n setComponentRef={this.setComponentRef}\n showImage={this.props.showImage}\n type={this.constructor['type']}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n contextualText={this.props.i18n.get('issuerList.selectField.contextualText')}\n onSubmitAnalytics={this.submitAnalytics}\n />\n ) : (\n <RedirectButton\n name={this.props.name}\n {...this.props}\n onSubmit={this.submit}\n payButton={this.payButton}\n setComponentRef={this.setComponentRef}\n />\n );\n }\n}\n\nexport default IssuerListContainer;\n"],"names":["IssuerListContainer","UIElement","formatProps","props","issuers","details","length","find","d","key","items","formatData","paymentMethod","type","this","issuer","state","data","isValid","Boolean","brands","showPaymentMethodItemImages","map","brand","icon","name","id","componentToRender","h","IssuerList","highlightedIds","highlightedIssuers","setComponentRef","showImage","constructor","onChange","setState","onSubmit","submit","payButton","contextualText","i18n","get","onSubmitAnalytics","submitAnalytics","RedirectButton","checkout","super","getImage","resources","getIssuerIcon","getIssuerImageUrl","item","loadingContext","FALLBACK_CONTEXT","defaultProps"],"mappings":"6WAWA,MAAMA,UAGIC,EAwBNC,WAAAA,CAAYC,GACR,MAAMC,EAEDD,GAAOE,SAASC,QAAUH,EAAME,QAAQE,KAAMC,GAAyC,WAAVA,EAAEC,MAAmBC,OAAUP,EAAMC,SAAW,GAClI,MAAO,IAAKD,EAAOC,UACvB,CAKAO,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKD,KACXE,OAAQD,KAAKE,OAAOC,MAAMF,QAGtC,CAKA,WAAIG,GACA,OAAkC,IAA9BJ,KAAKX,MAAMC,QAAQE,QAGhBa,QAAQL,KAAKE,OAAOE,QAC/B,CAOA,UAAIE,GACA,OAAIN,KAAKX,MAAMkB,4BACJP,KAAKX,MAAMC,QAAQkB,IAAIC,IAEnB,CAAEC,KADSD,EAAMC,KACEC,KAAMF,EAAMG,MAIvC,EACX,CAEmBC,iBAAAA,GACf,OAAOb,KAAKX,MAAMC,QAAQE,OAAS,EAC/BsB,EAACC,EAAAA,CACGnB,MAAOI,KAAKX,MAAMC,QAClB0B,eAAgBhB,KAAKX,MAAM4B,sBACvBjB,KAAKX,SACLW,KAAKE,MACTgB,gBAAiBlB,KAAKkB,gBACtBC,UAAWnB,KAAKX,MAAM8B,UACtBpB,KAAMC,KAAKoB,YAAY,KACvBC,SAAUrB,KAAKsB,SACfC,SAAUvB,KAAKwB,OACfC,UAAWzB,KAAKyB,UAChBC,eAAgB1B,KAAKX,MAAMsC,KAAKC,IAAI,yCACpCC,kBAAmB7B,KAAK8B,kBAG5BhB,EAACiB,EAAAA,CACGpB,KAAMX,KAAKX,MAAMsB,QACbX,KAAKX,MACTkC,SAAUvB,KAAKwB,OACfC,UAAWzB,KAAKyB,UAChBP,gBAAiBlB,KAAKkB,iBAGlC,CArFA,WAAAE,CAAYY,EAAiB3C,GACzB4C,MAAMD,EAAU3C,GAEhB,MAAM6C,EAAY7C,GAAwBW,KAAKmC,UAAUD,SAAS7C,GAElE,GAAIW,KAAKX,MAAM8B,UAAW,CACtB,MAAMiB,EAAgBC,EAAkB,CAAA,EAAIrC,KAAKoB,YAAY,KAASc,GAEtElC,KAAKX,MAAMC,QAAUU,KAAKX,MAAMC,QAAQkB,IAAI8B,QACrCA,EACH5B,KAAM0B,EAAcE,EAAK1B,MAEjC,CACJ,cArByC,CACrCO,WAAW,EACX7B,QAAS,GACT2B,mBAAoB,GACpBsB,eAAgBC,EAChBjC,6BAA6B,MALPkC,oBAJxBvD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{CardElement as Card}from"./Card/Card.js";export{default as Bancontact}from"./Card/Bancontact.js";export{CustomCard}from"./CustomCard/CustomCard.js";export{default as ThreeDS2Challenge}from"./ThreeDS2/ThreeDS2Challenge.js";export{default as ThreeDS2DeviceFingerprint}from"./ThreeDS2/ThreeDS2DeviceFingerprint.js";export{AchElement as Ach}from"./Ach/Ach.js";export{default as BacsDirectDebit}from"./BacsDD/BacsDD.js";export{default as SepaDirectDebit}from"./Sepa/Sepa.js";export{PreAuthorizedDebitCanada}from"./PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js";export{default as Affirm}from"./Affirm/Affirm.js";export{default as AfterPay}from"./AfterPay/AfterPay.js";export{default as AfterPayB2B}from"./AfterPay/AfterPayB2B.js";export{default as Atome}from"./Atome/Atome.js";export{default as FacilPay3x}from"./FacilyPay/FacilyPay3x.js";export{default as FacilPay4x}from"./FacilyPay/FacilyPay4x.js";export{default as FacilPay6x}from"./FacilyPay/FacilyPay6x.js";export{default as FacilPay10x}from"./FacilyPay/FacilyPay10x.js";export{default as FacilPay12x}from"./FacilyPay/FacilyPay12x.js";export{default as RatePay}from"./RatePay/RatePay.js";export{default as RatePayDirectDebit}from"./RatePay/RatePayDirectDebit.js";export{AmazonPayElement as AmazonPay}from"./AmazonPay/AmazonPay.js";export{default as ApplePay}from"./ApplePay/ApplePay.js";export{CashAppPay}from"./CashAppPay/CashAppPay.js";export{ClickToPayElement as ClickToPay}from"./ClickToPay/ClickToPay.js";export{default as GooglePay}from"./GooglePay/GooglePay.js";export{default as PayPal}from"./PayPal/Paypal.js";export{default as
|
|
1
|
+
export{CardElement as Card}from"./Card/Card.js";export{default as Bancontact}from"./Card/Bancontact.js";export{CustomCard}from"./CustomCard/CustomCard.js";export{default as ThreeDS2Challenge}from"./ThreeDS2/ThreeDS2Challenge.js";export{default as ThreeDS2DeviceFingerprint}from"./ThreeDS2/ThreeDS2DeviceFingerprint.js";export{AchElement as Ach}from"./Ach/Ach.js";export{default as BacsDirectDebit}from"./BacsDD/BacsDD.js";export{default as SepaDirectDebit}from"./Sepa/Sepa.js";export{PreAuthorizedDebitCanada}from"./PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js";export{default as Affirm}from"./Affirm/Affirm.js";export{default as AfterPay}from"./AfterPay/AfterPay.js";export{default as AfterPayB2B}from"./AfterPay/AfterPayB2B.js";export{default as Atome}from"./Atome/Atome.js";export{default as FacilPay3x}from"./FacilyPay/FacilyPay3x.js";export{default as FacilPay4x}from"./FacilyPay/FacilyPay4x.js";export{default as FacilPay6x}from"./FacilyPay/FacilyPay6x.js";export{default as FacilPay10x}from"./FacilyPay/FacilyPay10x.js";export{default as FacilPay12x}from"./FacilyPay/FacilyPay12x.js";export{default as RatePay}from"./RatePay/RatePay.js";export{default as RatePayDirectDebit}from"./RatePay/RatePayDirectDebit.js";export{AmazonPayElement as AmazonPay}from"./AmazonPay/AmazonPay.js";export{default as ApplePay}from"./ApplePay/ApplePay.js";export{CashAppPay}from"./CashAppPay/CashAppPay.js";export{ClickToPayElement as ClickToPay}from"./ClickToPay/ClickToPay.js";export{default as GooglePay}from"./GooglePay/GooglePay.js";export{default as PayPal}from"./PayPal/Paypal.js";export{default as Fastlane}from"./PayPalFastlane/Fastlane.js";export{BoletoElement as Boleto}from"./Boleto/Boleto.js";export{DokuElement as Doku}from"./Doku/Doku.js";export{OxxoElement as Oxxo}from"./Oxxo/Oxxo.js";export{default as BillDeskOnline}from"./BillDesk/BillDeskOnline.js";export{default as BillDeskWallet}from"./BillDesk/BillDeskWallet.js";export{default as Dotpay}from"./Dotpay/index.js";export{default as EPS}from"./EPS/index.js";export{Iris}from"./Iris/Iris.js";export{default as MolPayEBankingMY}from"./MolPayEBanking/MolPayEBankingMY.js";export{default as MolPayEBankingTH}from"./MolPayEBanking/MolPayEBankingTH.js";export{default as MolPayEBankingVN}from"./MolPayEBanking/MolPayEBankingVN.js";export{default as OnlineBankingCZ}from"./OnlineBankingCZ/index.js";export{default as OnlineBankingIN}from"./OnlineBankingIN/index.js";export{default as OnlineBankingPL}from"./OnlineBankingPL/OnlineBankingPL.js";export{default as OnlineBankingSK}from"./OnlineBankingSK/index.js";export{default as OnlineBankingFI}from"./OnlineBankingFI/OnlineBankingFI.js";export{default as PayByBank}from"./PayByBank/PayByBank.js";export{default as PayuCashcard}from"./PayU/PayuCashcard.js";export{default as PayuNetBanking}from"./PayU/PayuNetBanking.js";export{default as WalletIN}from"./WalletIN/index.js";export{DragonpayElement as Dragonpay}from"./Dragonpay/Dragonpay.js";export{EcontextElement as Econtext}from"./Econtext/Econtext.js";export{default as Giropay}from"./Giropay/Giropay.js";export{MultibancoElement as Multibanco}from"./Multibanco/Multibanco.js";export{default as Redirect}from"./Redirect/Redirect.js";export{default as Twint}from"./Twint/Twint.js";export{default as Vipps}from"./Vipps/Vipps.js";export{default as Trustly}from"./Trustly/Trustly.js";export{default as PayByBankUS}from"./PayByBankUS/PayByBankUS.js";export{default as Riverty}from"./Riverty/Riverty.js";export{default as PayByBankPix}from"./PayByBankPix/PayByBankPix.js";export{default as Klarna}from"./Klarna/KlarnaPayments.js";export{default as BcmcMobile}from"./BcmcMobile/BcmcMobile.js";export{default as Pix}from"./Pix/Pix.js";export{default as Swish}from"./Swish/Swish.js";export{default as WeChat}from"./WeChat/WeChat.js";export{default as PromptPay}from"./PromptPay/PromptPay.js";export{default as PayNow}from"./PayNow/PayNow.js";export{default as DuitNow}from"./DuitNow/DuitNow.js";export{default as PayMe}from"./PayMe/PayMe.js";export{default as Blik}from"./Blik/Blik.js";export{MBWayElement as MBWay}from"./MBWay/MBWay.js";export{default as UPI}from"./UPI/UPI.js";export{ANCVElement as ANCV}from"./ANCV/ANCV.js";export{PayToElement as PayTo}from"./PayTo/PayTo.js";export{GiftcardElement as Giftcard}from"./Giftcard/Giftcard.js";export{MealVoucherFRElement as MealVoucherFR}from"./MealVoucherFR/MealVoucherFR.js";export{AddressElement as Address}from"./Address/Address.js";export{BankTransferElement as BankTransfer}from"./BankTransfer/BankTransfer.js";export{default as Donation}from"./Donation/Donation.js";export{default as Dropin}from"./Dropin/Dropin.js";export{PersonalDetailsElement as PersonalDetails}from"./PersonalDetails/PersonalDetails.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e,Fragment as
|
|
1
|
+
import{createElement as e,Fragment as t}from"../../../external/preact/dist/preact.js";import{useRef as s,useMemo as r,useState as o,useCallback as n,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import i from"../FormFields/Fieldset/Fieldset.js";import l from"./components/ReadOnlyAddress.js";import{getAddressValidationRules as d}from"./validate.js";import{countrySpecificFormatters as c,addressFormatters as u}from"./validate.formats.js";import m from"./components/FieldContainer.js";import p from"../../../utils/useForm/useForm.js";import"../SecuredFields/lib/CSF/utils/userAgent.js";import f from"./Specifications.js";import{ADDRESS_SCHEMA as y,COUNTRY as F,FALLBACK_VALUE as h}from"./constants.js";import{getMaxLengthByFieldAndCountry as C}from"../../../utils/validator-utils.js";import{useCoreContext as g}from"../../../core/Context/CoreProvider.js";import A from"./components/AddressSearch.js";import{getAddressTypeFromLabel as j}from"./utils.js";const b={};function v(v){const{i18n:S}=g(),{allowedCountries:x=[],label:k="",requiredFields:M=y,visibility:O="editable",iOSFocusedField:D=null,showContextualElement:w,onChange:E=()=>{},onFieldFocusAnalytics:L=()=>{},onFieldBlurAnalytics:N=()=>{}}=v,B=j(v.addressType,k),P=s({});Object.keys(P.current).length||v.setComponentRef?.(P.current);const R=r(()=>new f(v.specifications),[v.specifications]),T=R.getAddressSchemaForCountryFlat(v.countryCode).filter(e=>M.includes(e)),[V,H]=o(!1),[_,q]=o(!1),[I,U]=o(""),$=!!v.onAddressLookup,[z,G]=o(!1),J=!v.onAddressLookup||(V||_),K=v.data??b,Q=K.country,W=Q&&!T.includes(F)?[...T,F]:T,X=r(()=>Q?{...K,country:Q.toUpperCase()}:K,[K,Q]),{data:Y,errors:Z,valid:ee,isValid:te,handleChangeFor:se,triggerValidation:re,setData:oe,mergeData:ne}=p({schema:W,defaultData:X,rules:{...d(R),...v.validationRules},formatters:u}),ae=n(e=>{const t=y.reduce((t,s)=>{const r=e[s];return null!=r&&(t[s]=String(r)),t},{});ne(t),G(!0),re(),H(!0)},[H,re,oe]),ie=n(()=>{q(!0)},[]);P.current.showValidation=()=>{re(),U(!$||J||te?"":S.get("address.errors.incomplete"))};const le=T.filter(e=>!D||e===D);if(a(()=>{if(z)return void G(!1);const e=Y.country&&R.countryHasDataset(Y.country)?"":h,t={...Y,stateOrProvince:e};M.forEach(e=>{se(e,"input")(t[e]??"")}),t.postalCode&&se("postalCode","blur")(Y.postalCode)},[Y.country]),a(()=>{const e=M.includes("stateOrProvince"),t=Y.country&&R.countryHasDataset(Y.country),s=e&&t,r=Y.stateOrProvince||(s?"":h);se("stateOrProvince","input")(r)},[]),a(()=>{const e=R.getOptionalFieldsForCountry(Y.country),t=y.reduce((t,s)=>{const r=e.includes(s),o=M.includes(s),n=Y[s],a=X[s],i=r&&!n||!o?!o&&a?a:h:n;return i?.length&&(t[s]=i),t},{});E({data:t,valid:ee,errors:Z,isValid:te})},[Y,ee,Z,te]),"hidden"===O)return null;if("readOnly"===O)return e(l,{data:Y,label:k});const de=(t,{classNameModifiers:s=[]})=>M.includes(t)?e(m,{key:t,allowedCountries:x,classNameModifiers:[...s,t],data:Y,errors:Z,valid:ee,fieldName:t,onInput:se(t,"input"),onBlur:se(t,"blur"),onDropdownChange:se(t,"blur"),specifications:R,maxLength:C(c,t,Y.country),trimOnBlur:!0,disabled:!le.includes(t),addressType:B,onFieldFocusAnalytics:L,onFieldBlurAnalytics:N}):null,ce=R.getAddressSchemaForCountry(Y.country);return e(t,null,e(i,{classNameModifiers:[k,"address"],label:k,renderLabelAsSectionHeading:!0},$&&e(A,{onAddressLookup:v.onAddressLookup,onAddressSelected:v.onAddressSelected,onSelect:ae,onManualAddress:ie,externalErrorMessage:I,hideManualButton:J,showContextualElement:w,contextualText:S.get("address.search.contextualText"),addressSearchDebounceMs:v.addressSearchDebounceMs}),J&&e(t,null,ce.map(t=>t instanceof Array?e("div",{className:"adyen-checkout__field-group"},t.map(([e,t])=>de(e,{classNameModifiers:[`col-${t}`]}))):de(t,{})))))}export{v as default};
|
|
2
2
|
//# sourceMappingURL=Address.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Address.js","sources":["../../../../../src/components/internal/Address/Address.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport Fieldset from '../FormFields/Fieldset';\nimport ReadOnlyAddress from './components/ReadOnlyAddress';\nimport { getAddressValidationRules } from './validate';\nimport { addressFormatters, countrySpecificFormatters } from './validate.formats';\nimport { AddressProps, AddressType } from './types';\nimport { AddressData } from '../../../types/global-types';\nimport FieldContainer from './components/FieldContainer';\nimport useForm from '../../../utils/useForm';\nimport Specifications from './Specifications';\nimport { ADDRESS_SCHEMA, COUNTRY, FALLBACK_VALUE } from './constants';\nimport { getMaxLengthByFieldAndCountry } from '../../../utils/validator-utils';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport AddressSearch from './components/AddressSearch';\nimport { ComponentMethodsRef } from '../UIElement/types';\nimport './Address.scss';\nimport { getAddressTypeFromLabel } from './utils';\n\nconst EMPTY_ADDRESS_DATA: Readonly<AddressData> = {};\n\nexport default function Address(props: Readonly<AddressProps>) {\n const { i18n } = useCoreContext();\n\n const { label = '', requiredFields, visibility, iOSFocusedField = null, showContextualElement } = props;\n const addressType: AddressType = getAddressTypeFromLabel(props.addressType, label);\n\n /** An object by which to expose 'public' members to the parent UIElement */\n const addressRef = useRef<ComponentMethodsRef>({});\n // Just call once\n if (!Object.keys(addressRef.current).length) {\n props.setComponentRef?.(addressRef.current);\n }\n\n const specifications = useMemo(() => new Specifications(props.specifications), [props.specifications]);\n\n const requiredFieldsSchema = specifications.getAddressSchemaForCountryFlat(props.countryCode).filter(field => requiredFields.includes(field));\n\n const [hasSelectedAddress, setHasSelectedAddress] = useState(false);\n\n const [useManualAddress, setUseManualAddress] = useState(false);\n\n const [searchErrorMessage, setSearchErrorMessage] = useState('');\n\n const showAddressSearch = !!props.onAddressLookup;\n\n const [ignoreCountryChange, setIgnoreCountryChange] = useState(false);\n\n const showAddressFields = props.onAddressLookup ? hasSelectedAddress || useManualAddress : true;\n\n // In partial address mode the country field is not rendered, so it is absent from the address schema.\n // The country the merchant configured must still be part of the form data for country dependent rules to be applied.\n const addressData = props.data ?? EMPTY_ADDRESS_DATA;\n const merchantCountry = addressData.country;\n const formSchema = merchantCountry && !requiredFieldsSchema.includes(COUNTRY) ? [...requiredFieldsSchema, COUNTRY] : requiredFieldsSchema;\n const defaultData = useMemo<AddressData>(\n () => (merchantCountry ? { ...addressData, country: merchantCountry.toUpperCase() } : addressData),\n [addressData, merchantCountry]\n );\n\n const { data, errors, valid, isValid, handleChangeFor, triggerValidation, setData, mergeData } = useForm<AddressData>({\n schema: formSchema,\n defaultData,\n // Ensure any passed validation rules are merged with the default ones\n rules: { ...getAddressValidationRules(specifications), ...props.validationRules },\n formatters: addressFormatters\n });\n\n const setSearchData = useCallback(\n (selectedAddress: AddressData) => {\n const propsKeysToProcess = ADDRESS_SCHEMA;\n const newStateData = propsKeysToProcess.reduce((acc: AddressData, propKey) => {\n // Make sure the data provided by the merchant is always strings\n const providedValue = selectedAddress[propKey];\n if (providedValue !== null && providedValue !== undefined) {\n // Cast everything to string\n acc[propKey] = String(providedValue);\n }\n return acc;\n }, {});\n mergeData(newStateData);\n setIgnoreCountryChange(true);\n triggerValidation();\n setHasSelectedAddress(true);\n },\n [setHasSelectedAddress, triggerValidation, setData]\n );\n\n const onManualAddress = useCallback(() => {\n setUseManualAddress(true);\n }, []);\n\n // Expose method expected by (parent) Address.tsx\n addressRef.current.showValidation = () => {\n triggerValidation();\n if (showAddressSearch && !showAddressFields && !isValid) {\n setSearchErrorMessage(i18n.get('address.errors.incomplete'));\n } else {\n setSearchErrorMessage('');\n }\n };\n\n /**\n * For iOS: iOSFocusedField is the name of the element calling for other elements to be disabled\n * - so if it is set (meaning we are in iOS *and* an input has been focussed) only enable the field that corresponds to this element\n */\n const enabledFields: string[] = requiredFieldsSchema.filter(item => {\n return !iOSFocusedField ? true : item === iOSFocusedField;\n });\n\n /**\n * Effect that:\n * - Resets validation for all fields by triggering handleChangeFor(fieldName, 'input')\n * - Applies validation on postalCode field in case it has any value\n */\n useEffect((): void => {\n // if the country was set via setSearchData we don't want to trigger this\n if (ignoreCountryChange) {\n setIgnoreCountryChange(false);\n return;\n }\n\n const stateOrProvince = specifications.countryHasDataset(data.country) ? '' : FALLBACK_VALUE;\n const newData = { ...data, stateOrProvince };\n\n requiredFields.forEach(fieldName => {\n handleChangeFor(fieldName, 'input')(newData[fieldName] ?? '');\n });\n\n if (newData.postalCode) {\n handleChangeFor('postalCode', 'blur')(data.postalCode);\n }\n }, [data.country]);\n\n /**\n * Set the value of 'stateOrProvince' during the initial render if\n * property is provided during the creation of the payment method\n */\n useEffect((): void => {\n const stateFieldIsRequired = requiredFields.includes('stateOrProvince');\n const countryHasStatesDataset = data.country && specifications.countryHasDataset(data.country);\n const addressShouldHaveState = stateFieldIsRequired && countryHasStatesDataset;\n const stateOrProvince = data.stateOrProvince || (addressShouldHaveState ? '' : FALLBACK_VALUE);\n\n handleChangeFor('stateOrProvince', 'input')(stateOrProvince);\n }, []);\n\n useEffect((): void => {\n const optionalFields = specifications.getOptionalFieldsForCountry(data.country);\n const processedData = ADDRESS_SCHEMA.reduce((acc, cur) => {\n const isOptional = optionalFields.includes(cur);\n const isRequired = requiredFields.includes(cur);\n const newValue = data[cur];\n const initialValue = defaultData[cur];\n // recover default data values which are not requiredFields, or prefill with 'N/A'\n const fallbackValue = !isRequired && initialValue ? initialValue : FALLBACK_VALUE;\n const value = (isOptional && !newValue) || !isRequired ? fallbackValue : newValue;\n if (value?.length) acc[cur] = value;\n return acc;\n }, {});\n\n props.onChange({ data: processedData, valid, errors, isValid });\n }, [data, valid, errors, isValid]);\n\n if (visibility === 'hidden') return null;\n if (visibility === 'readOnly') return <ReadOnlyAddress data={data} label={label} />;\n\n const getComponent = (fieldName: string, { classNameModifiers = [] }) => {\n if (!requiredFields.includes(fieldName)) return null;\n\n return (\n <FieldContainer\n key={fieldName}\n allowedCountries={props.allowedCountries}\n classNameModifiers={[...classNameModifiers, fieldName]}\n data={data}\n errors={errors}\n valid={valid}\n fieldName={fieldName}\n onInput={handleChangeFor(fieldName, 'input')}\n onBlur={handleChangeFor(fieldName, 'blur')}\n onDropdownChange={handleChangeFor(fieldName, 'blur')}\n specifications={specifications}\n maxLength={getMaxLengthByFieldAndCountry(countrySpecificFormatters, fieldName, data.country, true)}\n trimOnBlur={true}\n disabled={!enabledFields.includes(fieldName)}\n addressType={addressType}\n onFieldFocusAnalytics={props.onFieldFocusAnalytics}\n onFieldBlurAnalytics={props.onFieldBlurAnalytics}\n />\n );\n };\n\n const getWrapper = group => (\n <div className=\"adyen-checkout__field-group\">\n {group.map(([field, size]) => getComponent(field, { classNameModifiers: [`col-${size}`] }))}\n </div>\n );\n\n const addressSchema = specifications.getAddressSchemaForCountry(data.country);\n\n return (\n <Fragment>\n <Fieldset classNameModifiers={[label, 'address']} label={label} renderLabelAsSectionHeading>\n {showAddressSearch && (\n <AddressSearch\n onAddressLookup={props.onAddressLookup}\n onAddressSelected={props.onAddressSelected}\n onSelect={setSearchData}\n onManualAddress={onManualAddress}\n externalErrorMessage={searchErrorMessage}\n hideManualButton={showAddressFields}\n showContextualElement={showContextualElement}\n contextualText={i18n.get('address.search.contextualText')}\n addressSearchDebounceMs={props.addressSearchDebounceMs}\n />\n )}\n {showAddressFields && (\n <Fragment>{addressSchema.map(field => (field instanceof Array ? getWrapper(field) : getComponent(field, {})))}</Fragment>\n )}\n </Fieldset>\n </Fragment>\n );\n}\n\nAddress.defaultProps = {\n countryCode: null,\n validationRules: null,\n data: {},\n onChange: () => {},\n visibility: 'editable',\n requiredFields: ADDRESS_SCHEMA,\n specifications: {},\n onFieldFocusAnalytics: () => {},\n onFieldBlurAnalytics: () => {}\n};\n"],"names":["EMPTY_ADDRESS_DATA","Address","props","i18n","useCoreContext","label","requiredFields","visibility","iOSFocusedField","showContextualElement","addressType","getAddressTypeFromLabel","addressRef","useRef","Object","keys","current","length","setComponentRef","specifications","useMemo","Specifications","requiredFieldsSchema","getAddressSchemaForCountryFlat","countryCode","filter","field","includes","hasSelectedAddress","setHasSelectedAddress","useState","useManualAddress","setUseManualAddress","searchErrorMessage","setSearchErrorMessage","showAddressSearch","onAddressLookup","ignoreCountryChange","setIgnoreCountryChange","showAddressFields","addressData","data","merchantCountry","country","formSchema","COUNTRY","defaultData","toUpperCase","errors","valid","isValid","handleChangeFor","triggerValidation","setData","mergeData","useForm","schema","rules","getAddressValidationRules","validationRules","formatters","addressFormatters","setSearchData","useCallback","selectedAddress","newStateData","ADDRESS_SCHEMA","reduce","acc","propKey","providedValue","String","onManualAddress","showValidation","get","enabledFields","item","useEffect","stateOrProvince","countryHasDataset","FALLBACK_VALUE","newData","forEach","fieldName","postalCode","stateFieldIsRequired","countryHasStatesDataset","addressShouldHaveState","optionalFields","getOptionalFieldsForCountry","processedData","cur","isOptional","isRequired","newValue","initialValue","value","onChange","h","ReadOnlyAddress","getComponent","classNameModifiers","FieldContainer","key","allowedCountries","onInput","onBlur","onDropdownChange","maxLength","getMaxLengthByFieldAndCountry","countrySpecificFormatters","trimOnBlur","disabled","onFieldFocusAnalytics","onFieldBlurAnalytics","addressSchema","getAddressSchemaForCountry","Fragment","Fieldset","renderLabelAsSectionHeading","AddressSearch","onAddressSelected","onSelect","externalErrorMessage","hideManualButton","contextualText","addressSearchDebounceMs","map","Array","div","className","size","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Address.js","sources":["../../../../../src/components/internal/Address/Address.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport Fieldset from '../FormFields/Fieldset';\nimport ReadOnlyAddress from './components/ReadOnlyAddress';\nimport { getAddressValidationRules } from './validate';\nimport { addressFormatters, countrySpecificFormatters } from './validate.formats';\nimport { AddressProps, AddressType } from './types';\nimport { AddressData } from '../../../types/global-types';\nimport FieldContainer from './components/FieldContainer';\nimport useForm from '../../../utils/useForm';\nimport Specifications from './Specifications';\nimport { ADDRESS_SCHEMA, COUNTRY, FALLBACK_VALUE } from './constants';\nimport { getMaxLengthByFieldAndCountry } from '../../../utils/validator-utils';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport AddressSearch from './components/AddressSearch';\nimport { ComponentMethodsRef } from '../UIElement/types';\nimport './Address.scss';\nimport { getAddressTypeFromLabel } from './utils';\n\nconst EMPTY_ADDRESS_DATA: Readonly<AddressData> = {};\n\nexport default function Address(props: Readonly<AddressProps>) {\n const { i18n } = useCoreContext();\n\n // default some props, this is preferred over \"defaultProps\"\n const {\n allowedCountries = [],\n label = '',\n requiredFields = ADDRESS_SCHEMA,\n visibility = 'editable',\n iOSFocusedField = null,\n showContextualElement,\n onChange = () => {},\n onFieldFocusAnalytics = () => {},\n onFieldBlurAnalytics = () => {}\n } = props;\n const addressType: AddressType = getAddressTypeFromLabel(props.addressType, label);\n\n /** An object by which to expose 'public' members to the parent UIElement */\n const addressRef = useRef<ComponentMethodsRef>({});\n // Just call once\n if (!Object.keys(addressRef.current).length) {\n props.setComponentRef?.(addressRef.current);\n }\n\n const specifications = useMemo(() => new Specifications(props.specifications), [props.specifications]);\n\n const requiredFieldsSchema = specifications.getAddressSchemaForCountryFlat(props.countryCode).filter(field => requiredFields.includes(field));\n\n const [hasSelectedAddress, setHasSelectedAddress] = useState(false);\n\n const [useManualAddress, setUseManualAddress] = useState(false);\n\n const [searchErrorMessage, setSearchErrorMessage] = useState('');\n\n const showAddressSearch = !!props.onAddressLookup;\n\n const [ignoreCountryChange, setIgnoreCountryChange] = useState(false);\n\n const showAddressFields = props.onAddressLookup ? hasSelectedAddress || useManualAddress : true;\n\n // In partial address mode the country field is not rendered, so it is absent from the address schema.\n // The country the merchant configured must still be part of the form data for country dependent rules to be applied.\n const addressData = props.data ?? EMPTY_ADDRESS_DATA;\n const merchantCountry = addressData.country;\n const formSchema = merchantCountry && !requiredFieldsSchema.includes(COUNTRY) ? [...requiredFieldsSchema, COUNTRY] : requiredFieldsSchema;\n const defaultData = useMemo<AddressData>(\n () => (merchantCountry ? { ...addressData, country: merchantCountry.toUpperCase() } : addressData),\n [addressData, merchantCountry]\n );\n\n const { data, errors, valid, isValid, handleChangeFor, triggerValidation, setData, mergeData } = useForm<AddressData>({\n schema: formSchema,\n defaultData,\n // Ensure any passed validation rules are merged with the default ones\n rules: { ...getAddressValidationRules(specifications), ...props.validationRules },\n formatters: addressFormatters\n });\n\n const setSearchData = useCallback(\n (selectedAddress: AddressData) => {\n const propsKeysToProcess = ADDRESS_SCHEMA;\n const newStateData = propsKeysToProcess.reduce((acc: AddressData, propKey) => {\n // Make sure the data provided by the merchant is always strings\n const providedValue = selectedAddress[propKey];\n if (providedValue !== null && providedValue !== undefined) {\n // Cast everything to string\n acc[propKey] = String(providedValue);\n }\n return acc;\n }, {});\n mergeData(newStateData);\n setIgnoreCountryChange(true);\n triggerValidation();\n setHasSelectedAddress(true);\n },\n [setHasSelectedAddress, triggerValidation, setData]\n );\n\n const onManualAddress = useCallback(() => {\n setUseManualAddress(true);\n }, []);\n\n // Expose method expected by (parent) Address.tsx\n addressRef.current.showValidation = () => {\n triggerValidation();\n if (showAddressSearch && !showAddressFields && !isValid) {\n setSearchErrorMessage(i18n.get('address.errors.incomplete'));\n } else {\n setSearchErrorMessage('');\n }\n };\n\n /**\n * For iOS: iOSFocusedField is the name of the element calling for other elements to be disabled\n * - so if it is set (meaning we are in iOS *and* an input has been focussed) only enable the field that corresponds to this element\n */\n const enabledFields: string[] = requiredFieldsSchema.filter(item => {\n return !iOSFocusedField ? true : item === iOSFocusedField;\n });\n\n /**\n * Effect that:\n * - Resets validation for all fields by triggering handleChangeFor(fieldName, 'input')\n * - Applies validation on postalCode field in case it has any value\n */\n useEffect((): void => {\n // if the country was set via setSearchData we don't want to trigger this\n if (ignoreCountryChange) {\n setIgnoreCountryChange(false);\n return;\n }\n\n const stateOrProvince = data.country && specifications.countryHasDataset(data.country) ? '' : FALLBACK_VALUE;\n const newData = { ...data, stateOrProvince };\n\n requiredFields.forEach(fieldName => {\n handleChangeFor(fieldName, 'input')(newData[fieldName] ?? '');\n });\n\n if (newData.postalCode) {\n handleChangeFor('postalCode', 'blur')(data.postalCode);\n }\n }, [data.country]);\n\n /**\n * Set the value of 'stateOrProvince' during the initial render if\n * property is provided during the creation of the payment method\n */\n useEffect((): void => {\n const stateFieldIsRequired = requiredFields.includes('stateOrProvince');\n const countryHasStatesDataset = data.country && specifications.countryHasDataset(data.country);\n const addressShouldHaveState = stateFieldIsRequired && countryHasStatesDataset;\n const stateOrProvince = data.stateOrProvince || (addressShouldHaveState ? '' : FALLBACK_VALUE);\n\n handleChangeFor('stateOrProvince', 'input')(stateOrProvince);\n }, []);\n\n useEffect((): void => {\n const optionalFields = specifications.getOptionalFieldsForCountry(data.country);\n const processedData = ADDRESS_SCHEMA.reduce((acc, cur) => {\n const isOptional = optionalFields.includes(cur);\n const isRequired = requiredFields.includes(cur);\n const newValue = data[cur];\n const initialValue = defaultData[cur];\n // recover default data values which are not requiredFields, or prefill with 'N/A'\n const fallbackValue = !isRequired && initialValue ? initialValue : FALLBACK_VALUE;\n const value = (isOptional && !newValue) || !isRequired ? fallbackValue : newValue;\n if (value?.length) acc[cur] = value;\n return acc;\n }, {});\n\n onChange({ data: processedData, valid, errors, isValid });\n }, [data, valid, errors, isValid]);\n\n if (visibility === 'hidden') return null;\n if (visibility === 'readOnly') return <ReadOnlyAddress data={data} label={label} />;\n\n const getComponent = (fieldName: string, { classNameModifiers = [] }: { classNameModifiers?: string[] }) => {\n if (!requiredFields.includes(fieldName)) return null;\n\n return (\n <FieldContainer\n key={fieldName}\n allowedCountries={allowedCountries}\n classNameModifiers={[...classNameModifiers, fieldName]}\n data={data}\n errors={errors}\n valid={valid}\n fieldName={fieldName}\n onInput={handleChangeFor(fieldName, 'input')}\n onBlur={handleChangeFor(fieldName, 'blur')}\n onDropdownChange={handleChangeFor(fieldName, 'blur')}\n specifications={specifications}\n maxLength={getMaxLengthByFieldAndCountry(countrySpecificFormatters, fieldName, data.country, true)}\n trimOnBlur={true}\n disabled={!enabledFields.includes(fieldName)}\n addressType={addressType}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n );\n };\n\n const getWrapper = group => (\n <div className=\"adyen-checkout__field-group\">\n {group.map(([field, size]) => getComponent(field, { classNameModifiers: [`col-${size}`] }))}\n </div>\n );\n\n const addressSchema = specifications.getAddressSchemaForCountry(data.country);\n\n return (\n <Fragment>\n <Fieldset classNameModifiers={[label, 'address']} label={label} renderLabelAsSectionHeading>\n {showAddressSearch && (\n <AddressSearch\n onAddressLookup={props.onAddressLookup}\n onAddressSelected={props.onAddressSelected}\n onSelect={setSearchData}\n onManualAddress={onManualAddress}\n externalErrorMessage={searchErrorMessage}\n hideManualButton={showAddressFields}\n showContextualElement={showContextualElement}\n contextualText={i18n.get('address.search.contextualText')}\n addressSearchDebounceMs={props.addressSearchDebounceMs}\n />\n )}\n {showAddressFields && (\n <Fragment>{addressSchema.map(field => (field instanceof Array ? getWrapper(field) : getComponent(field, {})))}</Fragment>\n )}\n </Fieldset>\n </Fragment>\n );\n}\n"],"names":["EMPTY_ADDRESS_DATA","Address","props","i18n","useCoreContext","allowedCountries","label","requiredFields","ADDRESS_SCHEMA","visibility","iOSFocusedField","showContextualElement","onChange","onFieldFocusAnalytics","onFieldBlurAnalytics","addressType","getAddressTypeFromLabel","addressRef","useRef","Object","keys","current","length","setComponentRef","specifications","useMemo","Specifications","requiredFieldsSchema","getAddressSchemaForCountryFlat","countryCode","filter","field","includes","hasSelectedAddress","setHasSelectedAddress","useState","useManualAddress","setUseManualAddress","searchErrorMessage","setSearchErrorMessage","showAddressSearch","onAddressLookup","ignoreCountryChange","setIgnoreCountryChange","showAddressFields","addressData","data","merchantCountry","country","formSchema","COUNTRY","defaultData","toUpperCase","errors","valid","isValid","handleChangeFor","triggerValidation","setData","mergeData","useForm","schema","rules","getAddressValidationRules","validationRules","formatters","addressFormatters","setSearchData","useCallback","selectedAddress","newStateData","reduce","acc","propKey","providedValue","String","onManualAddress","showValidation","get","enabledFields","item","useEffect","stateOrProvince","countryHasDataset","FALLBACK_VALUE","newData","forEach","fieldName","postalCode","stateFieldIsRequired","countryHasStatesDataset","addressShouldHaveState","optionalFields","getOptionalFieldsForCountry","processedData","cur","isOptional","isRequired","newValue","initialValue","value","h","ReadOnlyAddress","getComponent","classNameModifiers","FieldContainer","key","onInput","onBlur","onDropdownChange","maxLength","getMaxLengthByFieldAndCountry","countrySpecificFormatters","trimOnBlur","disabled","addressSchema","getAddressSchemaForCountry","Fragment","Fieldset","renderLabelAsSectionHeading","AddressSearch","onAddressSelected","onSelect","externalErrorMessage","hideManualButton","contextualText","addressSearchDebounceMs","map","Array","div","className","size"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ADDRESS_SPECIFICATIONS as e}from"./constants.js";class t{countryHasDataset(e){return!!this.specifications?.[e]?.hasDataset}countryHasOptionalField(e,t){return!!this.specifications?.[e]?.optionalFields?.includes(t)}getAddressSchemaForCountry(
|
|
1
|
+
import{ADDRESS_SPECIFICATIONS as e}from"./constants.js";class t{countryHasDataset(e){return!!this.specifications?.[e]?.hasDataset}countryHasOptionalField(e,t){return!!this.specifications?.[e]?.optionalFields?.includes(t)}getAddressSchemaForCountry(t){return t&&this.specifications?.[t]?.schema||this.specifications?.default?.schema||e.default.schema}getAddressLabelsForCountry(e){return e&&this.specifications?.[e]?.labels||this.specifications?.default?.labels}getOptionalFieldsForCountry(e){return e&&this.specifications?.[e]?.optionalFields||this.specifications?.default?.optionalFields||[]}getKeyForField(e,t){return t&&this.specifications?.[t]?.labels?.[e]||this.specifications?.default?.labels?.[e]||e}getPlaceholderKeyForField(e,t){return this.specifications?.[t]?.placeholders?.[e]||this.specifications?.default?.placeholders?.[e]}getAddressSchemaForCountryFlat(e){return this.getAddressSchemaForCountry(e).flat(2).filter(e=>"string"==typeof e)}constructor(t){var s,i,a;a=void 0,(i="specifications")in(s=this)?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a,this.specifications={...e,...t}}}export{t as default};
|
|
2
2
|
//# sourceMappingURL=Specifications.js.map
|