@adyen/adyen-web 6.25.0 → 6.26.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.
Files changed (600) hide show
  1. package/dist/cjs/adyen.css +16 -13
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +2257 -2222
  6. package/dist/es/adyen.css +16 -13
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/ANCV.js +1 -1
  9. package/dist/es/components/ANCV/ANCV.js.map +1 -1
  10. package/dist/es/components/Ach/Ach.js +1 -1
  11. package/dist/es/components/Ach/Ach.js.map +1 -1
  12. package/dist/es/components/Address/Address.js +1 -1
  13. package/dist/es/components/Address/Address.js.map +1 -1
  14. package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
  15. package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
  16. package/dist/es/components/ApplePay/ApplePay.js +1 -1
  17. package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
  18. package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
  19. package/dist/es/components/ApplePay/utils/resolve-supported-version.js +1 -1
  20. package/dist/es/components/ApplePay/utils/resolve-supported-version.js.map +1 -1
  21. package/dist/es/components/BacsDD/BacsDD.js +1 -1
  22. package/dist/es/components/BacsDD/BacsDD.js.map +1 -1
  23. package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
  24. package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
  25. package/dist/es/components/Blik/Blik.js +1 -1
  26. package/dist/es/components/Blik/Blik.js.map +1 -1
  27. package/dist/es/components/Boleto/Boleto.js +1 -1
  28. package/dist/es/components/Boleto/Boleto.js.map +1 -1
  29. package/dist/es/components/Card/Card.js +1 -1
  30. package/dist/es/components/Card/Card.js.map +1 -1
  31. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  32. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  33. package/dist/es/components/Card/components/CardInput/components/AvailableBrands/AvailableBrands.js +1 -1
  34. package/dist/es/components/Card/components/CardInput/components/AvailableBrands/AvailableBrands.js.map +1 -1
  35. package/dist/es/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  36. package/dist/es/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  37. package/dist/es/components/Card/components/CardInput/components/CVC.js +1 -1
  38. package/dist/es/components/Card/components/CardInput/components/CVC.js.map +1 -1
  39. package/dist/es/components/Card/components/CardInput/components/CVCHint.js +1 -1
  40. package/dist/es/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  41. package/dist/es/components/Card/components/CardInput/components/CardNumber.js +1 -1
  42. package/dist/es/components/Card/components/CardInput/components/CardNumber.js.map +1 -1
  43. package/dist/es/components/Card/components/CardInput/components/ExpirationDate.js +1 -1
  44. package/dist/es/components/Card/components/CardInput/components/ExpirationDate.js.map +1 -1
  45. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  46. package/dist/es/components/Card/components/CardInput/utils.js +1 -1
  47. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  48. package/dist/es/components/Card/components/Fastlane/FastlaneSignup.js +1 -1
  49. package/dist/es/components/Card/components/Fastlane/FastlaneSignup.js.map +1 -1
  50. package/dist/es/components/Card/components/Fastlane/InfoButton.js +1 -1
  51. package/dist/es/components/Card/components/Fastlane/InfoButton.js.map +1 -1
  52. package/dist/es/components/Card/components/Fastlane/InfoModal.js +1 -1
  53. package/dist/es/components/Card/components/Fastlane/InfoModal.js.map +1 -1
  54. package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
  55. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  56. package/dist/es/components/CashAppPay/services/CashAppSdkLoader.js.map +1 -1
  57. package/dist/es/components/ClickToPay/ClickToPay.js +1 -1
  58. package/dist/es/components/ClickToPay/ClickToPay.js.map +1 -1
  59. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  60. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  61. package/dist/es/components/Doku/Doku.js +1 -1
  62. package/dist/es/components/Doku/Doku.js.map +1 -1
  63. package/dist/es/components/Donation/Donation.js +1 -1
  64. package/dist/es/components/Donation/Donation.js.map +1 -1
  65. package/dist/es/components/Dragonpay/Dragonpay.js +1 -1
  66. package/dist/es/components/Dragonpay/Dragonpay.js.map +1 -1
  67. package/dist/es/components/Dropin/Dropin.js +1 -1
  68. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  69. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  70. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  71. package/dist/es/components/Dropin/components/PaymentMethod/InstantPaymentMethods.js +1 -1
  72. package/dist/es/components/Dropin/components/PaymentMethod/InstantPaymentMethods.js.map +1 -1
  73. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js +1 -1
  74. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js.map +1 -1
  75. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodDetails.js +1 -1
  76. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodDetails.js.map +1 -1
  77. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodIcon.js +1 -1
  78. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodIcon.js.map +1 -1
  79. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  80. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  81. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  82. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  83. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js +1 -1
  84. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  85. package/dist/es/components/Dropin/elements/createElements.js +1 -1
  86. package/dist/es/components/Dropin/elements/createElements.js.map +1 -1
  87. package/dist/es/components/Dropin/elements/createInstantPaymentElements.js +1 -1
  88. package/dist/es/components/Dropin/elements/createInstantPaymentElements.js.map +1 -1
  89. package/dist/es/components/Dropin/elements/createStoredElements.js.map +1 -1
  90. package/dist/es/components/Dropin/elements/filters.js.map +1 -1
  91. package/dist/es/components/Dropin/elements/splitPaymentMethods.js.map +1 -1
  92. package/dist/es/components/Econtext/Econtext.js +1 -1
  93. package/dist/es/components/Econtext/Econtext.js.map +1 -1
  94. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  95. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  96. package/dist/es/components/Giropay/Giropay.js +1 -1
  97. package/dist/es/components/Giropay/Giropay.js.map +1 -1
  98. package/dist/es/components/GooglePay/GooglePay.js +1 -1
  99. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  100. package/dist/es/components/GooglePay/GooglePayService.js.map +1 -1
  101. package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
  102. package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
  103. package/dist/es/components/MBWay/MBWay.js +1 -1
  104. package/dist/es/components/MBWay/MBWay.js.map +1 -1
  105. package/dist/es/components/Multibanco/Multibanco.js +1 -1
  106. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  107. package/dist/es/components/Oxxo/Oxxo.js +1 -1
  108. package/dist/es/components/Oxxo/Oxxo.js.map +1 -1
  109. package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
  110. package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
  111. package/dist/es/components/PayByBankPix/components/Enrollment/Enrollment.js +1 -1
  112. package/dist/es/components/PayByBankPix/components/Enrollment/Enrollment.js.map +1 -1
  113. package/dist/es/components/PayByBankPix/components/Enrollment/components/PayByBankPixAwait.js +1 -1
  114. package/dist/es/components/PayByBankPix/components/Enrollment/components/PayByBankPixAwait.js.map +1 -1
  115. package/dist/es/components/PayByBankPix/services/PasskeySdkLoader.js.map +1 -1
  116. package/dist/es/components/PayByBankPix/services/PasskeyService.js.map +1 -1
  117. package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
  118. package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
  119. package/dist/es/components/PayPal/Paypal.js +1 -1
  120. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  121. package/dist/es/components/PayPalFastlane/Fastlane.js +1 -1
  122. package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -1
  123. package/dist/es/components/PayPalFastlane/FastlaneSDK.js +1 -1
  124. package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
  125. package/dist/es/components/PayTo/PayTo.js +1 -1
  126. package/dist/es/components/PayTo/PayTo.js.map +1 -1
  127. package/dist/es/components/PersonalDetails/PersonalDetails.js +1 -1
  128. package/dist/es/components/PersonalDetails/PersonalDetails.js.map +1 -1
  129. package/dist/es/components/Pix/Pix.js +1 -1
  130. package/dist/es/components/Pix/Pix.js.map +1 -1
  131. package/dist/es/components/Pix/components/PixQRDetails.js +1 -1
  132. package/dist/es/components/Pix/components/PixQRDetails.js.map +1 -1
  133. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  134. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  135. package/dist/es/components/Redirect/Redirect.js +1 -1
  136. package/dist/es/components/Redirect/Redirect.js.map +1 -1
  137. package/dist/es/components/Sepa/Sepa.js +1 -1
  138. package/dist/es/components/Sepa/Sepa.js.map +1 -1
  139. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  140. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  141. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  142. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  143. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  144. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  145. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  146. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  147. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  148. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  149. package/dist/es/components/Trustly/Trustly.js +1 -1
  150. package/dist/es/components/Trustly/Trustly.js.map +1 -1
  151. package/dist/es/components/UPI/UPI.js +1 -1
  152. package/dist/es/components/UPI/UPI.js.map +1 -1
  153. package/dist/es/components/UPI/components/VpaInput/VpaInput.js +1 -1
  154. package/dist/es/components/UPI/components/VpaInput/VpaInput.js.map +1 -1
  155. package/dist/es/components/UPI/components/VpaInput/validate.js +1 -1
  156. package/dist/es/components/UPI/components/VpaInput/validate.js.map +1 -1
  157. package/dist/es/components/WeChat/WeChat.js +1 -1
  158. package/dist/es/components/WeChat/WeChat.js.map +1 -1
  159. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  160. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  161. package/dist/es/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.js +1 -1
  162. package/dist/es/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.js.map +1 -1
  163. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  164. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  165. package/dist/es/components/internal/Await/Await.js +1 -1
  166. package/dist/es/components/internal/Await/Await.js.map +1 -1
  167. package/dist/es/components/internal/Await/components/AwaitFinalState.js +2 -0
  168. package/dist/es/components/internal/Await/components/AwaitFinalState.js.map +1 -0
  169. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  170. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  171. package/dist/es/components/internal/Brand/Brand.js +2 -0
  172. package/dist/es/components/internal/Brand/Brand.js.map +1 -0
  173. package/dist/es/components/internal/Button/CopyButton.js +2 -0
  174. package/dist/es/components/internal/Button/CopyButton.js.map +1 -0
  175. package/dist/es/components/internal/Button/CopyIconButton.js +1 -1
  176. package/dist/es/components/internal/Button/CopyIconButton.js.map +1 -1
  177. package/dist/es/components/internal/Button/stopPropagationForActionKeys.js +2 -0
  178. package/dist/es/components/internal/Button/stopPropagationForActionKeys.js.map +1 -0
  179. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js +1 -1
  180. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  181. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js +1 -1
  182. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js.map +1 -1
  183. package/dist/es/components/internal/ClickToPay/components/CtPInfo/CtPInfo.js +1 -1
  184. package/dist/es/components/internal/ClickToPay/components/CtPInfo/CtPInfo.js.map +1 -1
  185. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js +1 -1
  186. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
  187. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
  188. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  189. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/validate.js +1 -1
  190. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/validate.js.map +1 -1
  191. package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  192. package/dist/es/components/internal/ClickToPay/services/create-clicktopay-service.js.map +1 -1
  193. package/dist/es/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js.map +1 -1
  194. package/dist/es/components/internal/ClickToPay/services/sdks/MastercardSdk.js.map +1 -1
  195. package/dist/es/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
  196. package/dist/es/components/internal/ClickToPay/services/sdks/VisaSdk.js.map +1 -1
  197. package/dist/es/components/internal/FormFields/Field/Field.js +1 -1
  198. package/dist/es/components/internal/FormFields/Field/Field.js.map +1 -1
  199. package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
  200. package/dist/es/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js +1 -1
  201. package/dist/es/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js.map +1 -1
  202. package/dist/es/components/internal/FormFields/Select/components/SelectListItem.js +1 -1
  203. package/dist/es/components/internal/FormFields/Select/components/SelectListItem.js.map +1 -1
  204. package/dist/es/components/internal/Icon/Icon.js +1 -1
  205. package/dist/es/components/internal/Icon/Icon.js.map +1 -1
  206. package/dist/es/components/internal/Img/Img.js +1 -1
  207. package/dist/es/components/internal/Img/Img.js.map +1 -1
  208. package/dist/es/components/internal/IssuerList/IssuerList.js +1 -1
  209. package/dist/es/components/internal/IssuerList/IssuerList.js.map +1 -1
  210. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  211. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  212. package/dist/es/components/internal/PersonalDetails/utils.js +1 -1
  213. package/dist/es/components/internal/PersonalDetails/utils.js.map +1 -1
  214. package/dist/es/components/internal/PersonalDetails/validate.js +1 -1
  215. package/dist/es/components/internal/PersonalDetails/validate.js.map +1 -1
  216. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  217. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  218. package/dist/es/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  219. package/dist/es/components/internal/QRLoader/components/QRCodeCopyButton.js +1 -1
  220. package/dist/es/components/internal/QRLoader/components/QRCodeCopyButton.js.map +1 -1
  221. package/dist/es/components/internal/QRLoader/components/QRCountdown.js +1 -1
  222. package/dist/es/components/internal/QRLoader/components/QRCountdown.js.map +1 -1
  223. package/dist/es/components/internal/QRLoader/components/QRDetails.js +1 -1
  224. package/dist/es/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  225. package/dist/es/components/internal/QRLoader/components/QRImage.js +1 -1
  226. package/dist/es/components/internal/QRLoader/components/QRImage.js.map +1 -1
  227. package/dist/es/components/internal/QRLoader/components/QRIntructions.js +1 -1
  228. package/dist/es/components/internal/QRLoader/components/QRIntructions.js.map +1 -1
  229. package/dist/es/components/internal/QRLoader/components/QRProgressbar.js +1 -1
  230. package/dist/es/components/internal/QRLoader/components/QRProgressbar.js.map +1 -1
  231. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  232. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  233. package/dist/es/components/internal/UIElement/utils.js.map +1 -1
  234. package/dist/es/components/internal/Voucher/Voucher.js +1 -1
  235. package/dist/es/components/internal/Voucher/Voucher.js.map +1 -1
  236. package/dist/es/core/Analytics/Analytics.js +1 -1
  237. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  238. package/dist/es/core/Analytics/AnalyticsEventQueue.js +2 -0
  239. package/dist/es/core/Analytics/AnalyticsEventQueue.js.map +1 -0
  240. package/dist/es/core/Analytics/AnalyticsService.js +2 -0
  241. package/dist/es/core/Analytics/AnalyticsService.js.map +1 -0
  242. package/dist/es/core/Analytics/constants.js +1 -1
  243. package/dist/es/core/Analytics/constants.js.map +1 -1
  244. package/dist/es/core/Analytics/events/AbstractAnalyticsEvent.js +2 -0
  245. package/dist/es/core/Analytics/events/AbstractAnalyticsEvent.js.map +1 -0
  246. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js +2 -0
  247. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -0
  248. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js +2 -0
  249. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -0
  250. package/dist/es/core/Analytics/events/AnalyticsLogEvent.js +2 -0
  251. package/dist/es/core/Analytics/events/AnalyticsLogEvent.js.map +1 -0
  252. package/dist/es/core/Analytics/utils.js +1 -1
  253. package/dist/es/core/Analytics/utils.js.map +1 -1
  254. package/dist/es/core/Context/CoreProvider.js +1 -1
  255. package/dist/es/core/Context/CoreProvider.js.map +1 -1
  256. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
  257. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  258. package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
  259. package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
  260. package/dist/es/core/ProcessResponse/PaymentMethods/utils.js +1 -1
  261. package/dist/es/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  262. package/dist/es/core/ProcessResponse/{process-response.js → PaymentStatus/PaymentStatus.js} +2 -2
  263. package/dist/es/core/ProcessResponse/PaymentStatus/PaymentStatus.js.map +1 -0
  264. package/dist/es/core/Services/http.js +1 -1
  265. package/dist/es/core/Services/http.js.map +1 -1
  266. package/dist/es/core/Services/payment-status.js.map +1 -1
  267. package/dist/es/core/config.js +1 -1
  268. package/dist/es/core/core.js +1 -1
  269. package/dist/es/core/core.js.map +1 -1
  270. package/dist/es/external/preact/compat/dist/compat.js +1 -1
  271. package/dist/es/external/preact/compat/dist/compat.js.map +1 -1
  272. package/dist/es/hooks/usePaymentStatusTimer/constants.js +2 -0
  273. package/dist/es/hooks/usePaymentStatusTimer/constants.js.map +1 -0
  274. package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +2 -0
  275. package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -0
  276. package/dist/es/index.d.ts +2257 -2222
  277. package/dist/es/utils/Script.js +1 -1
  278. package/dist/es/utils/Script.js.map +1 -1
  279. package/dist/es/utils/amount-util.js.map +1 -1
  280. package/dist/es/utils/commonUtils.js +1 -1
  281. package/dist/es/utils/commonUtils.js.map +1 -1
  282. package/dist/es/utils/getErrorMessage.js +1 -1
  283. package/dist/es/utils/getErrorMessage.js.map +1 -1
  284. package/dist/es/utils/urls.js +2 -0
  285. package/dist/es/utils/urls.js.map +1 -0
  286. package/dist/es-legacy/adyen.css +16 -13
  287. package/dist/es-legacy/adyen.css.map +1 -1
  288. package/dist/es-legacy/components/ANCV/ANCV.js +1 -1
  289. package/dist/es-legacy/components/ANCV/ANCV.js.map +1 -1
  290. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  291. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  292. package/dist/es-legacy/components/Address/Address.js +1 -1
  293. package/dist/es-legacy/components/Address/Address.js.map +1 -1
  294. package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
  295. package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
  296. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  297. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  298. package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
  299. package/dist/es-legacy/components/ApplePay/utils/resolve-supported-version.js +1 -1
  300. package/dist/es-legacy/components/ApplePay/utils/resolve-supported-version.js.map +1 -1
  301. package/dist/es-legacy/components/BacsDD/BacsDD.js +1 -1
  302. package/dist/es-legacy/components/BacsDD/BacsDD.js.map +1 -1
  303. package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
  304. package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
  305. package/dist/es-legacy/components/Blik/Blik.js +1 -1
  306. package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
  307. package/dist/es-legacy/components/Boleto/Boleto.js +1 -1
  308. package/dist/es-legacy/components/Boleto/Boleto.js.map +1 -1
  309. package/dist/es-legacy/components/Card/Card.js +1 -1
  310. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  311. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  312. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  313. package/dist/es-legacy/components/Card/components/CardInput/components/AvailableBrands/AvailableBrands.js +1 -1
  314. package/dist/es-legacy/components/Card/components/CardInput/components/AvailableBrands/AvailableBrands.js.map +1 -1
  315. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  316. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  317. package/dist/es-legacy/components/Card/components/CardInput/components/CVC.js +1 -1
  318. package/dist/es-legacy/components/Card/components/CardInput/components/CVC.js.map +1 -1
  319. package/dist/es-legacy/components/Card/components/CardInput/components/CVCHint.js +1 -1
  320. package/dist/es-legacy/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  321. package/dist/es-legacy/components/Card/components/CardInput/components/CardNumber.js +1 -1
  322. package/dist/es-legacy/components/Card/components/CardInput/components/CardNumber.js.map +1 -1
  323. package/dist/es-legacy/components/Card/components/CardInput/components/ExpirationDate.js +1 -1
  324. package/dist/es-legacy/components/Card/components/CardInput/components/ExpirationDate.js.map +1 -1
  325. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  326. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  327. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  328. package/dist/es-legacy/components/Card/components/Fastlane/FastlaneSignup.js +1 -1
  329. package/dist/es-legacy/components/Card/components/Fastlane/FastlaneSignup.js.map +1 -1
  330. package/dist/es-legacy/components/Card/components/Fastlane/InfoButton.js +1 -1
  331. package/dist/es-legacy/components/Card/components/Fastlane/InfoButton.js.map +1 -1
  332. package/dist/es-legacy/components/Card/components/Fastlane/InfoModal.js +1 -1
  333. package/dist/es-legacy/components/Card/components/Fastlane/InfoModal.js.map +1 -1
  334. package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
  335. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  336. package/dist/es-legacy/components/CashAppPay/services/CashAppSdkLoader.js.map +1 -1
  337. package/dist/es-legacy/components/ClickToPay/ClickToPay.js +1 -1
  338. package/dist/es-legacy/components/ClickToPay/ClickToPay.js.map +1 -1
  339. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  340. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  341. package/dist/es-legacy/components/Doku/Doku.js +1 -1
  342. package/dist/es-legacy/components/Doku/Doku.js.map +1 -1
  343. package/dist/es-legacy/components/Donation/Donation.js +1 -1
  344. package/dist/es-legacy/components/Donation/Donation.js.map +1 -1
  345. package/dist/es-legacy/components/Dragonpay/Dragonpay.js +1 -1
  346. package/dist/es-legacy/components/Dragonpay/Dragonpay.js.map +1 -1
  347. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  348. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  349. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  350. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  351. package/dist/es-legacy/components/Dropin/components/PaymentMethod/InstantPaymentMethods.js +1 -1
  352. package/dist/es-legacy/components/Dropin/components/PaymentMethod/InstantPaymentMethods.js.map +1 -1
  353. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js +1 -1
  354. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js.map +1 -1
  355. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodDetails.js +1 -1
  356. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodDetails.js.map +1 -1
  357. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodIcon.js +1 -1
  358. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodIcon.js.map +1 -1
  359. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  360. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  361. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  362. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  363. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js +1 -1
  364. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  365. package/dist/es-legacy/components/Dropin/elements/createElements.js +1 -1
  366. package/dist/es-legacy/components/Dropin/elements/createElements.js.map +1 -1
  367. package/dist/es-legacy/components/Dropin/elements/createInstantPaymentElements.js +1 -1
  368. package/dist/es-legacy/components/Dropin/elements/createInstantPaymentElements.js.map +1 -1
  369. package/dist/es-legacy/components/Dropin/elements/createStoredElements.js.map +1 -1
  370. package/dist/es-legacy/components/Dropin/elements/filters.js.map +1 -1
  371. package/dist/es-legacy/components/Dropin/elements/splitPaymentMethods.js.map +1 -1
  372. package/dist/es-legacy/components/Econtext/Econtext.js +1 -1
  373. package/dist/es-legacy/components/Econtext/Econtext.js.map +1 -1
  374. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  375. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  376. package/dist/es-legacy/components/Giropay/Giropay.js +1 -1
  377. package/dist/es-legacy/components/Giropay/Giropay.js.map +1 -1
  378. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  379. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  380. package/dist/es-legacy/components/GooglePay/GooglePayService.js.map +1 -1
  381. package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
  382. package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
  383. package/dist/es-legacy/components/MBWay/MBWay.js +1 -1
  384. package/dist/es-legacy/components/MBWay/MBWay.js.map +1 -1
  385. package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
  386. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  387. package/dist/es-legacy/components/Oxxo/Oxxo.js +1 -1
  388. package/dist/es-legacy/components/Oxxo/Oxxo.js.map +1 -1
  389. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  390. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  391. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/Enrollment.js +1 -1
  392. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/Enrollment.js.map +1 -1
  393. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/components/PayByBankPixAwait.js +1 -1
  394. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/components/PayByBankPixAwait.js.map +1 -1
  395. package/dist/es-legacy/components/PayByBankPix/services/PasskeySdkLoader.js.map +1 -1
  396. package/dist/es-legacy/components/PayByBankPix/services/PasskeyService.js.map +1 -1
  397. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
  398. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
  399. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  400. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  401. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js +1 -1
  402. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -1
  403. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js +1 -1
  404. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
  405. package/dist/es-legacy/components/PayTo/PayTo.js +1 -1
  406. package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
  407. package/dist/es-legacy/components/PersonalDetails/PersonalDetails.js +1 -1
  408. package/dist/es-legacy/components/PersonalDetails/PersonalDetails.js.map +1 -1
  409. package/dist/es-legacy/components/Pix/Pix.js +1 -1
  410. package/dist/es-legacy/components/Pix/Pix.js.map +1 -1
  411. package/dist/es-legacy/components/Pix/components/PixQRDetails.js +1 -1
  412. package/dist/es-legacy/components/Pix/components/PixQRDetails.js.map +1 -1
  413. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  414. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  415. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  416. package/dist/es-legacy/components/Redirect/Redirect.js.map +1 -1
  417. package/dist/es-legacy/components/Sepa/Sepa.js +1 -1
  418. package/dist/es-legacy/components/Sepa/Sepa.js.map +1 -1
  419. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  420. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  421. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  422. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  423. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  424. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  425. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  426. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  427. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  428. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  429. package/dist/es-legacy/components/Trustly/Trustly.js +1 -1
  430. package/dist/es-legacy/components/Trustly/Trustly.js.map +1 -1
  431. package/dist/es-legacy/components/UPI/UPI.js +1 -1
  432. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  433. package/dist/es-legacy/components/UPI/components/VpaInput/VpaInput.js +1 -1
  434. package/dist/es-legacy/components/UPI/components/VpaInput/VpaInput.js.map +1 -1
  435. package/dist/es-legacy/components/UPI/components/VpaInput/validate.js +1 -1
  436. package/dist/es-legacy/components/UPI/components/VpaInput/validate.js.map +1 -1
  437. package/dist/es-legacy/components/WeChat/WeChat.js +1 -1
  438. package/dist/es-legacy/components/WeChat/WeChat.js.map +1 -1
  439. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  440. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  441. package/dist/es-legacy/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.js +1 -1
  442. package/dist/es-legacy/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.js.map +1 -1
  443. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  444. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  445. package/dist/es-legacy/components/internal/Await/Await.js +1 -1
  446. package/dist/es-legacy/components/internal/Await/Await.js.map +1 -1
  447. package/dist/es-legacy/components/internal/Await/components/AwaitFinalState.js +2 -0
  448. package/dist/es-legacy/components/internal/Await/components/AwaitFinalState.js.map +1 -0
  449. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  450. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  451. package/dist/es-legacy/components/internal/Brand/Brand.js +2 -0
  452. package/dist/es-legacy/components/internal/Brand/Brand.js.map +1 -0
  453. package/dist/es-legacy/components/internal/Button/CopyButton.js +2 -0
  454. package/dist/es-legacy/components/internal/Button/CopyButton.js.map +1 -0
  455. package/dist/es-legacy/components/internal/Button/CopyIconButton.js +1 -1
  456. package/dist/es-legacy/components/internal/Button/CopyIconButton.js.map +1 -1
  457. package/dist/es-legacy/components/internal/Button/stopPropagationForActionKeys.js +2 -0
  458. package/dist/es-legacy/components/internal/Button/stopPropagationForActionKeys.js.map +1 -0
  459. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js +1 -1
  460. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  461. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js +1 -1
  462. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js.map +1 -1
  463. package/dist/es-legacy/components/internal/ClickToPay/components/CtPInfo/CtPInfo.js +1 -1
  464. package/dist/es-legacy/components/internal/ClickToPay/components/CtPInfo/CtPInfo.js.map +1 -1
  465. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js +1 -1
  466. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
  467. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
  468. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  469. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/validate.js +1 -1
  470. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/validate.js.map +1 -1
  471. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  472. package/dist/es-legacy/components/internal/ClickToPay/services/create-clicktopay-service.js.map +1 -1
  473. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js.map +1 -1
  474. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/MastercardSdk.js.map +1 -1
  475. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
  476. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/VisaSdk.js.map +1 -1
  477. package/dist/es-legacy/components/internal/FormFields/Field/Field.js +1 -1
  478. package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
  479. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  480. package/dist/es-legacy/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js +1 -1
  481. package/dist/es-legacy/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js.map +1 -1
  482. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js +1 -1
  483. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js.map +1 -1
  484. package/dist/es-legacy/components/internal/Icon/Icon.js +1 -1
  485. package/dist/es-legacy/components/internal/Icon/Icon.js.map +1 -1
  486. package/dist/es-legacy/components/internal/Img/Img.js +1 -1
  487. package/dist/es-legacy/components/internal/Img/Img.js.map +1 -1
  488. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  489. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  490. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  491. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  492. package/dist/es-legacy/components/internal/PersonalDetails/utils.js +1 -1
  493. package/dist/es-legacy/components/internal/PersonalDetails/utils.js.map +1 -1
  494. package/dist/es-legacy/components/internal/PersonalDetails/validate.js +1 -1
  495. package/dist/es-legacy/components/internal/PersonalDetails/validate.js.map +1 -1
  496. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  497. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  498. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  499. package/dist/es-legacy/components/internal/QRLoader/components/QRCodeCopyButton.js +1 -1
  500. package/dist/es-legacy/components/internal/QRLoader/components/QRCodeCopyButton.js.map +1 -1
  501. package/dist/es-legacy/components/internal/QRLoader/components/QRCountdown.js +1 -1
  502. package/dist/es-legacy/components/internal/QRLoader/components/QRCountdown.js.map +1 -1
  503. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js +1 -1
  504. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  505. package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js +1 -1
  506. package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js.map +1 -1
  507. package/dist/es-legacy/components/internal/QRLoader/components/QRIntructions.js +1 -1
  508. package/dist/es-legacy/components/internal/QRLoader/components/QRIntructions.js.map +1 -1
  509. package/dist/es-legacy/components/internal/QRLoader/components/QRProgressbar.js +1 -1
  510. package/dist/es-legacy/components/internal/QRLoader/components/QRProgressbar.js.map +1 -1
  511. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  512. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  513. package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
  514. package/dist/es-legacy/components/internal/Voucher/Voucher.js +1 -1
  515. package/dist/es-legacy/components/internal/Voucher/Voucher.js.map +1 -1
  516. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  517. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  518. package/dist/es-legacy/core/Analytics/AnalyticsEventQueue.js +2 -0
  519. package/dist/es-legacy/core/Analytics/AnalyticsEventQueue.js.map +1 -0
  520. package/dist/es-legacy/core/Analytics/AnalyticsService.js +2 -0
  521. package/dist/es-legacy/core/Analytics/AnalyticsService.js.map +1 -0
  522. package/dist/es-legacy/core/Analytics/constants.js +1 -1
  523. package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
  524. package/dist/es-legacy/core/Analytics/events/AbstractAnalyticsEvent.js +2 -0
  525. package/dist/es-legacy/core/Analytics/events/AbstractAnalyticsEvent.js.map +1 -0
  526. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js +2 -0
  527. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -0
  528. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js +2 -0
  529. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -0
  530. package/dist/es-legacy/core/Analytics/events/AnalyticsLogEvent.js +2 -0
  531. package/dist/es-legacy/core/Analytics/events/AnalyticsLogEvent.js.map +1 -0
  532. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  533. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  534. package/dist/es-legacy/core/Context/CoreProvider.js +1 -1
  535. package/dist/es-legacy/core/Context/CoreProvider.js.map +1 -1
  536. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
  537. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  538. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
  539. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
  540. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js +1 -1
  541. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  542. package/dist/es-legacy/core/ProcessResponse/{process-response.js → PaymentStatus/PaymentStatus.js} +2 -2
  543. package/dist/es-legacy/core/ProcessResponse/PaymentStatus/PaymentStatus.js.map +1 -0
  544. package/dist/es-legacy/core/Services/http.js +1 -1
  545. package/dist/es-legacy/core/Services/http.js.map +1 -1
  546. package/dist/es-legacy/core/Services/payment-status.js.map +1 -1
  547. package/dist/es-legacy/core/config.js +1 -1
  548. package/dist/es-legacy/core/core.js +1 -1
  549. package/dist/es-legacy/core/core.js.map +1 -1
  550. package/dist/es-legacy/external/preact/compat/dist/compat.js +1 -1
  551. package/dist/es-legacy/external/preact/compat/dist/compat.js.map +1 -1
  552. package/dist/es-legacy/hooks/usePaymentStatusTimer/constants.js +2 -0
  553. package/dist/es-legacy/hooks/usePaymentStatusTimer/constants.js.map +1 -0
  554. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +2 -0
  555. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -0
  556. package/dist/es-legacy/utils/Script.js +1 -1
  557. package/dist/es-legacy/utils/Script.js.map +1 -1
  558. package/dist/es-legacy/utils/amount-util.js.map +1 -1
  559. package/dist/es-legacy/utils/commonUtils.js +1 -1
  560. package/dist/es-legacy/utils/commonUtils.js.map +1 -1
  561. package/dist/es-legacy/utils/getErrorMessage.js +1 -1
  562. package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
  563. package/dist/es-legacy/utils/urls.js +2 -0
  564. package/dist/es-legacy/utils/urls.js.map +1 -0
  565. package/package.json +25 -27
  566. package/styles/adyen.css +16 -13
  567. package/dist/es/components/Card/components/CardInput/components/DualBrandingIcon/DualBrandingIcon.js +0 -2
  568. package/dist/es/components/Card/components/CardInput/components/DualBrandingIcon/DualBrandingIcon.js.map +0 -1
  569. package/dist/es/components/Dropin/components/utils.js +0 -2
  570. package/dist/es/components/Dropin/components/utils.js.map +0 -1
  571. package/dist/es/core/Analytics/AnalyticsErrorEvent.js +0 -2
  572. package/dist/es/core/Analytics/AnalyticsErrorEvent.js.map +0 -1
  573. package/dist/es/core/Analytics/AnalyticsEvent.js +0 -2
  574. package/dist/es/core/Analytics/AnalyticsEvent.js.map +0 -1
  575. package/dist/es/core/Analytics/AnalyticsInfoEvent.js +0 -2
  576. package/dist/es/core/Analytics/AnalyticsInfoEvent.js.map +0 -1
  577. package/dist/es/core/Analytics/AnalyticsLogEvent.js +0 -2
  578. package/dist/es/core/Analytics/AnalyticsLogEvent.js.map +0 -1
  579. package/dist/es/core/Analytics/EventsQueue.js +0 -2
  580. package/dist/es/core/Analytics/EventsQueue.js.map +0 -1
  581. package/dist/es/core/ProcessResponse/process-response.js.map +0 -1
  582. package/dist/es/core/Services/analytics/collect-id.js +0 -2
  583. package/dist/es/core/Services/analytics/collect-id.js.map +0 -1
  584. package/dist/es-legacy/components/Card/components/CardInput/components/DualBrandingIcon/DualBrandingIcon.js +0 -2
  585. package/dist/es-legacy/components/Card/components/CardInput/components/DualBrandingIcon/DualBrandingIcon.js.map +0 -1
  586. package/dist/es-legacy/components/Dropin/components/utils.js +0 -2
  587. package/dist/es-legacy/components/Dropin/components/utils.js.map +0 -1
  588. package/dist/es-legacy/core/Analytics/AnalyticsErrorEvent.js +0 -2
  589. package/dist/es-legacy/core/Analytics/AnalyticsErrorEvent.js.map +0 -1
  590. package/dist/es-legacy/core/Analytics/AnalyticsEvent.js +0 -2
  591. package/dist/es-legacy/core/Analytics/AnalyticsEvent.js.map +0 -1
  592. package/dist/es-legacy/core/Analytics/AnalyticsInfoEvent.js +0 -2
  593. package/dist/es-legacy/core/Analytics/AnalyticsInfoEvent.js.map +0 -1
  594. package/dist/es-legacy/core/Analytics/AnalyticsLogEvent.js +0 -2
  595. package/dist/es-legacy/core/Analytics/AnalyticsLogEvent.js.map +0 -1
  596. package/dist/es-legacy/core/Analytics/EventsQueue.js +0 -2
  597. package/dist/es-legacy/core/Analytics/EventsQueue.js.map +0 -1
  598. package/dist/es-legacy/core/ProcessResponse/process-response.js.map +0 -1
  599. package/dist/es-legacy/core/Services/analytics/collect-id.js +0 -2
  600. package/dist/es-legacy/core/Services/analytics/collect-id.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BaseElement.js","sources":["../../../../../src/components/internal/BaseElement/BaseElement.ts"],"sourcesContent":["import { ComponentChild, h, render } from 'preact';\nimport getProp from '../../../utils/getProp';\nimport uuid from '../../../utils/uuid';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { ANALYTICS_RENDERED_STR, NO_CHECKOUT_ATTEMPT_ID } from '../../../core/Analytics/constants';\n\nimport type { ICore } from '../../../core/types';\nimport type { BaseElementProps, IBaseElement } from './types';\nimport type { PaymentData } from '../../../types/global-types';\nimport { AnalyticsInitialEvent } from '../../../core/Analytics/types';\nimport { off, on } from '../../../utils/listenerUtils';\nimport { AnalyticsInfoEvent } from '../../../core/Analytics/AnalyticsInfoEvent';\nimport { AnalyticsEvent } from '../../../core/Analytics/AnalyticsEvent';\n\n/**\n * Verify if the first parameter is instance of Core.\n * We do not use 'instanceof' to avoid importing the Core class directly into this class.\n * @param checkout\n */\nfunction assertIsCoreInstance(checkout: ICore): checkout is ICore {\n if (!checkout) return false;\n const isCoreObject = typeof checkout.initialize === 'function' && typeof checkout.createFromAction === 'function';\n return isCoreObject;\n}\n\nabstract class BaseElement<P extends BaseElementProps> implements IBaseElement {\n public readonly _id = `${this.constructor['type']}-${uuid()}`;\n public readonly core: ICore;\n\n public props: P;\n public state: any = {};\n public _component;\n\n protected _node: HTMLElement = null;\n\n protected static defaultProps = {};\n\n constructor(checkout: ICore, props?: P) {\n const isCoreInstance = assertIsCoreInstance(checkout);\n\n if (!isCoreInstance) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `Trying to initialise the component '${this.constructor['type']}' without a reference to an instance of AdyenCheckout`\n );\n }\n\n this.core = checkout;\n this.buildElementProps(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n }\n\n protected buildElementProps(componentProps?: P) {\n this.props = this.formatProps({ ...this.constructor['defaultProps'], ...componentProps });\n }\n\n /**\n * Executed during creation of any payment element.\n * Gives a chance to any paymentMethod to format the props we're receiving.\n */\n protected formatProps(props: P) {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for the /payments request\n */\n protected formatData(): any {\n return {};\n }\n\n /* eslint-disable-next-line */\n protected setUpAnalytics(setUpAnalyticsObj: AnalyticsInitialEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj?: AnalyticsEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected handleKeyPress(e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) {\n return null;\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component payment data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n public get data(): PaymentData {\n const clientData = getProp(this.props, 'modules.risk.data');\n const checkoutAttemptId = getProp(this.props, 'modules.analytics.getCheckoutAttemptId')?.() ?? NO_CHECKOUT_ATTEMPT_ID; // NOTE: we never expect to see this \"failed\" value, but, just in case...\n const order = this.state.order || this.props.order;\n const componentData = this.formatData();\n\n if (componentData.paymentMethod && checkoutAttemptId) {\n componentData.paymentMethod.checkoutAttemptId = checkoutAttemptId;\n }\n\n return {\n ...(clientData && { riskData: { clientData } }),\n ...(order && { order: { orderData: order.orderData, pspReference: order.pspReference } }),\n ...componentData,\n clientStateDataIndicator: true\n };\n }\n\n /**\n * Method used to make the payment method active\n * (Useful when there are different payment methods available and activating one PM must trigger a specific task)\n */\n public activate(): void {\n return;\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Payment method cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the payment element\n * @returns this - the payment element instance we mounted\n */\n public mount(domNode: HTMLElement | string): this {\n const node = typeof domNode === 'string' ? document.querySelector<HTMLElement>(domNode) : domNode;\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n const setupAnalytics = !this._node;\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n }\n\n this._node = node;\n\n // Add listener for key press events, notably 'Enter' key presses\n on(this._node, 'keypress', this.handleKeyPress, false);\n\n this._component = this.render();\n\n render(this._component, node);\n\n // Set up analytics (once, since this._node is currently undefined) now that we have mounted and rendered\n if (setupAnalytics) {\n if (this.props.modules && this.props.modules.analytics) {\n this.setUpAnalytics({\n containerWidth: node && node.offsetWidth,\n component: !this.props.isDropin ? (this.constructor['analyticsType'] ?? this.constructor['type']) : 'dropin',\n flavor: !this.props.isDropin ? 'components' : 'dropin'\n }).then(() => {\n // Once the initial analytics set up call has been made...\n // ...create an analytics event declaring that the component has been rendered\n // (The dropin will do this itself from DropinComponent once the PM list has rendered)\n if (!this.props.isDropin) {\n const event = new AnalyticsInfoEvent({ type: ANALYTICS_RENDERED_STR });\n this.submitAnalytics(event);\n }\n });\n }\n }\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: Partial<P>): this {\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n }\n\n /**\n * Unmounts a payment element from the DOM\n */\n public unmount(): this {\n // Remove listener\n off(this._node, 'keypress', this.handleKeyPress);\n\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this.core) {\n this.core.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n"],"names":["BaseElement","buildElementProps","componentProps","this","props","formatProps","constructor","formatData","setUpAnalytics","setUpAnalyticsObj","submitAnalytics","analyticsObj","handleKeyPress","e","setState","newState","state","data","clientData","getProp","checkoutAttemptId","NO_CHECKOUT_ATTEMPT_ID","order","componentData","paymentMethod","riskData","orderData","pspReference","clientStateDataIndicator","activate","render","Error","mount","domNode","node","document","querySelector","setupAnalytics","_node","unmount","on","_component","modules","analytics","containerWidth","offsetWidth","component","isDropin","flavor","then","event","AnalyticsInfoEvent","type","ANALYTICS_RENDERED_STR","update","off","remove","core","checkout","_define_property","_id","uuid","isCoreInstance","initialize","createFromAction","assertIsCoreInstance","AdyenCheckoutError","bind","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"BaseElement.js","sources":["../../../../../src/components/internal/BaseElement/BaseElement.ts"],"sourcesContent":["import { ComponentChild, h, render } from 'preact';\nimport getProp from '../../../utils/getProp';\nimport uuid from '../../../utils/uuid';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { NO_CHECKOUT_ATTEMPT_ID } from '../../../core/Analytics/constants';\nimport type { ICore } from '../../../core/types';\nimport type { BaseElementProps, IBaseElement } from './types';\nimport type { PaymentData } from '../../../types/global-types';\nimport { off, on } from '../../../utils/listenerUtils';\nimport { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\n\n/**\n * Verify if the first parameter is instance of Core.\n * We do not use 'instanceof' to avoid importing the Core class directly into this class.\n * @param checkout\n */\nfunction assertIsCoreInstance(checkout: ICore): checkout is ICore {\n if (!checkout) return false;\n const isCoreObject = typeof checkout.initialize === 'function' && typeof checkout.createFromAction === 'function';\n return isCoreObject;\n}\n\nabstract class BaseElement<P extends BaseElementProps> implements IBaseElement {\n public readonly _id = `${this.constructor['type']}-${uuid()}`;\n public readonly core: ICore;\n\n public props: P;\n public state: any = {};\n public _component;\n\n protected _node: HTMLElement = null;\n\n protected static defaultProps = {};\n\n constructor(checkout: ICore, props?: P) {\n const isCoreInstance = assertIsCoreInstance(checkout);\n\n if (!isCoreInstance) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `Trying to initialise the component '${this.constructor['type']}' without a reference to an instance of AdyenCheckout`\n );\n }\n\n this.core = checkout;\n this.buildElementProps(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n }\n\n protected buildElementProps(componentProps?: P) {\n this.props = this.formatProps({ ...this.constructor['defaultProps'], ...componentProps });\n }\n\n /**\n * Executed during creation of any payment element.\n * Gives a chance to any paymentMethod to format the props we're receiving.\n */\n protected formatProps(props: P) {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for the /payments request\n */\n protected formatData(): any {\n return {};\n }\n\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj?: AbstractAnalyticsEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected handleKeyPress(e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) {\n return null;\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component payment data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n public get data(): PaymentData {\n const clientData = getProp(this.props, 'modules.risk.data');\n const checkoutAttemptId = getProp(this.props, 'modules.analytics.getCheckoutAttemptId')?.() ?? NO_CHECKOUT_ATTEMPT_ID; // NOTE: we never expect to see this \"failed\" value, but, just in case...\n const order = this.state.order || this.props.order;\n const componentData = this.formatData();\n\n if (componentData.paymentMethod && checkoutAttemptId) {\n componentData.paymentMethod.checkoutAttemptId = checkoutAttemptId;\n }\n\n return {\n ...(clientData && { riskData: { clientData } }),\n ...(order && { order: { orderData: order.orderData, pspReference: order.pspReference } }),\n ...componentData,\n clientStateDataIndicator: true\n };\n }\n\n /**\n * Method used to make the payment method active\n * (Useful when there are different payment methods available and activating one PM must trigger a specific task)\n */\n public activate(): void {\n return;\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Payment method cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the payment element\n * @returns this - the payment element instance we mounted\n */\n public mount(domNode: HTMLElement | string): this {\n const node = typeof domNode === 'string' ? document.querySelector<HTMLElement>(domNode) : domNode;\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n }\n\n this._node = node;\n\n // Add listener for key press events, notably 'Enter' key presses\n on(this._node, 'keypress', this.handleKeyPress, false);\n\n this._component = this.render();\n\n render(this._component, node);\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: Partial<P>): this {\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n }\n\n /**\n * Unmounts a payment element from the DOM\n */\n public unmount(): this {\n // Remove listener\n off(this._node, 'keypress', this.handleKeyPress);\n\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this.core) {\n this.core.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n"],"names":["BaseElement","buildElementProps","componentProps","this","props","formatProps","constructor","formatData","submitAnalytics","analyticsObj","handleKeyPress","e","setState","newState","state","data","clientData","getProp","checkoutAttemptId","NO_CHECKOUT_ATTEMPT_ID","order","componentData","paymentMethod","riskData","orderData","pspReference","clientStateDataIndicator","activate","render","Error","mount","domNode","node","document","querySelector","_node","unmount","on","_component","update","off","remove","core","checkout","_define_property","_id","uuid","isCoreInstance","initialize","createFromAction","assertIsCoreInstance","AdyenCheckoutError","bind","defaultProps"],"mappings":"8cAsBA,MAAeA,EA4BDC,iBAAAA,CAAkBC,GACxBC,KAAKC,MAAQD,KAAKE,YAAY,IAAKF,KAAKG,YAAY,gBAAoBJ,GAC5E,CAMUG,WAAAA,CAAYD,GAClB,OAAOA,CACX,CAMA,UAAAG,GACI,MAAO,CAAA,CACX,CAGUC,eAAAA,CAAgBC,GACtB,OAAO,IACX,CAGUC,cAAAA,CAAeC,GACrB,OAAO,IACX,CAEUC,QAAAA,CAASC,GACfV,KAAKW,MAAQ,IAAKX,KAAKW,SAAUD,EACrC,CAMA,QAAWE,GACP,MAAMC,EAAaC,EAAQd,KAAKC,MAAO,qBACjCc,EAAoBD,EAAQd,KAAKC,MAAO,yCAApBa,MAAqEE,EACzFC,EAAQjB,KAAKW,MAAMM,OAASjB,KAAKC,MAAMgB,MACvCC,EAAgBlB,KAAKI,aAM3B,OAJIc,EAAcC,eAAiBJ,IAC/BG,EAAcC,cAAcJ,kBAAoBA,GAG7C,IACCF,GAAc,CAAEO,SAAU,CAAEP,kBAC5BI,GAAS,CAAEA,MAAO,CAAEI,UAAWJ,EAAMI,UAAWC,aAAcL,EAAMK,kBACrEJ,EACHK,0BAA0B,EAElC,CAMA,QAAAC,GAEA,CAEOC,MAAAA,GAEH,MAAM,IAAIC,MAAM,qCACpB,CAOOC,KAAAA,CAAMC,GACT,MAAMC,EAA0B,iBAAZD,EAAuBE,SAASC,cAA2BH,GAAWA,EAE1F,IAAKC,EACD,MAAM,IAAIH,MAAM,uDAgBpB,OAbI1B,KAAKgC,OACLhC,KAAKiC,UAGTjC,KAAKgC,MAAQH,EAGbK,EAAGlC,KAAKgC,MAAO,WAAYhC,KAAKO,gBAAgB,GAEhDP,KAAKmC,WAAanC,KAAKyB,SAEvBA,EAAOzB,KAAKmC,WAAYN,GAEjB7B,IACX,CAQOoC,MAAAA,CAAOnC,GAIV,OAHAD,KAAKC,MAAQD,KAAKE,YAAY,IAAKF,KAAKC,SAAUA,IAClDD,KAAKW,MAAQ,CAAA,EAENX,KAAKiC,UAAUN,MAAM3B,KAAKgC,MACrC,CAKA,OAAAC,GAQI,OANAI,EAAIrC,KAAKgC,MAAO,WAAYhC,KAAKO,gBAE7BP,KAAKgC,OACLP,EAAO,KAAMzB,KAAKgC,OAGfhC,IACX,CAMA,MAAAsC,GACItC,KAAKiC,UAEDjC,KAAKuC,MACLvC,KAAKuC,KAAKD,OAAOtC,KAEzB,CAtJA,WAAAG,CAAYqC,EAAiBvC,GAX7BwC,EAAAzC,KAAgB0C,MAAM,GAAG1C,KAAKG,YAAY,QAAWwC,OACrDF,EAAAzC,KAAgBuC,YAAhB,GAEAE,EAAAzC,KAAOC,aAAP,GACAwC,EAAAzC,KAAOW,QAAa,IACpB8B,EAAAzC,KAAOmC,kBAAP,GAEAM,EAAAzC,KAAUgC,QAAqB,MAK3B,MAAMY,EAnBd,SAA8BJ,GAC1B,QAAKA,IAC+C,mBAAxBA,EAASK,YAAkE,mBAA9BL,EAASM,iBAEtF,CAe+BC,CAAqBP,GAE5C,IAAKI,EACD,MAAM,IAAII,EACN,uBACA,uCAAuChD,KAAKG,YAAY,6DAIhEH,KAAKuC,KAAOC,EACZxC,KAAKF,kBAAkBG,GAEvBD,KAAKO,eAAiBP,KAAKO,eAAe0C,KAAKjD,KACnD,EAhBAyC,EAVW5C,EAUMqD,eAAe"}
@@ -0,0 +1,2 @@
1
+ import{createElement as r}from"../../../external/preact/dist/preact.js";import{useState as a}from"../../../external/preact/hooks/dist/hooks.js";import e from"../../../_virtual/index.js";import s from"../Img/Img.js";const t=({url:t,alt:o,wrapperClassName:m="",imgClassName:p="",showOnError:n})=>{const[c,l]=a(!1),i=e("adyen-checkout-brand-wrapper",m,n?{}:{"adyen-checkout-brand-wrapper--error":c});return r("span",{className:i},r(s,{className:p,src:t,alt:o,onError:()=>l(!0)}))};export{t as default};
2
+ //# sourceMappingURL=Brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Brand.js","sources":["../../../../../src/components/internal/Brand/Brand.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState } from 'preact/hooks';\nimport cx from 'classnames';\nimport Img from '../Img';\nimport './Brand.scss';\n\ninterface BrandProps {\n url: string;\n alt: string;\n wrapperClassName?: string;\n imgClassName?: string;\n showOnError?: boolean;\n}\n\nconst Brand = ({ url, alt, wrapperClassName = '', imgClassName = '', showOnError }: BrandProps) => {\n const [hasError, setHasError] = useState(false);\n const classesOnError = showOnError ? {} : { 'adyen-checkout-brand-wrapper--error': hasError };\n const classes = cx('adyen-checkout-brand-wrapper', wrapperClassName, classesOnError);\n\n return (\n <span className={classes}>\n <Img className={imgClassName} src={url} alt={alt} onError={() => setHasError(true)} />\n </span>\n );\n};\n\nexport default Brand;\n"],"names":["Brand","url","alt","wrapperClassName","imgClassName","showOnError","hasError","setHasError","useState","classes","cx","h","span","className","Img","src","onError"],"mappings":"uNAcA,MAAMA,EAAQ,EAAGC,MAAKC,MAAKC,mBAAmB,GAAIC,eAAe,GAAIC,kBACjE,MAAOC,EAAUC,GAAeC,GAAS,GAEnCC,EAAUC,EAAG,+BAAgCP,EAD5BE,EAAc,GAAK,CAAE,sCAAuCC,IAGnF,OACIK,EAACC,OAAAA,CAAKC,UAAWJ,GACbE,EAACG,EAAAA,CAAID,UAAWT,EAAcW,IAAKd,EAAKC,IAAKA,EAAKc,QAAS,IAAMT,GAAY"}
@@ -0,0 +1,2 @@
1
+ import{createElement as o}from"../../../external/preact/dist/preact.js";import{useCallback as t}from"../../../external/preact/hooks/dist/hooks.js";import e from"./Button.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as n}from"../../../utils/clipboard.js";import{PREFIX as i}from"../Icon/constants.js";import c from"../../../core/Context/useImage.js";import{stopPropagationForActionKeys as s}from"./stopPropagationForActionKeys.js";const a=a=>{const{i18n:m}=r(),p=c(),l=t((o,{complete:t})=>{n(a.text),t(),a.onClick?.(o)},[a.text,a.onClick]);return o(e,{...a,variant:"action",onClick:l,onKeyPress:s,onKeyDown:s,icon:a.icon??p({imageFolder:"components/"})(`${i}copy`),label:a.label??m.get("button.copy"),onClickCompletedLabel:a.copiedLabel??m.get("button.copied")})};export{a as CopyButton};
2
+ //# sourceMappingURL=CopyButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.js","sources":["../../../../../src/components/internal/Button/CopyButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { PREFIX } from '../Icon/constants';\nimport useImage from '../../../core/Context/useImage';\nimport { stopPropagationForActionKeys } from './stopPropagationForActionKeys';\n\nexport interface CopyButtonProps extends Omit<ButtonProps, 'variant' | 'onClickCompletedLabel'> {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n copiedLabel?: string;\n onClick?: (e: h.JSX.TargetedMouseEvent<HTMLButtonElement>) => void;\n}\n\nconst CopyButton = (props: CopyButtonProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n const onClick = useCallback(\n (e, { complete }) => {\n void copyToClipboard(props.text);\n complete();\n props.onClick?.(e);\n },\n [props.text, props.onClick]\n );\n\n return (\n <Button\n {...props}\n variant=\"action\"\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter key pressed.\n onKeyPress={stopPropagationForActionKeys}\n onKeyDown={stopPropagationForActionKeys}\n icon={props.icon ?? getImage({ imageFolder: 'components/' })(`${PREFIX}copy`)}\n label={props.label ?? i18n.get('button.copy')}\n onClickCompletedLabel={props.copiedLabel ?? i18n.get('button.copied')}\n />\n );\n};\n\nexport { CopyButton };\n"],"names":["CopyButton","props","i18n","useCoreContext","getImage","useImage","onClick","useCallback","e","complete","copyToClipboard","text","h","Button","variant","onKeyPress","stopPropagationForActionKeys","onKeyDown","icon","imageFolder","PREFIX","label","get","onClickCompletedLabel","copiedLabel"],"mappings":"meAmBA,MAAMA,EAAcC,IAChB,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEXC,EAAUC,EACZ,CAACC,GAAKC,eACGC,EAAgBT,EAAMU,MAC3BF,IACAR,EAAMK,UAAUE,IAEpB,CAACP,EAAMU,KAAMV,EAAMK,UAGvB,OACIM,EAACC,EAAAA,IACOZ,EACJa,QAAQ,SACRR,QAASA,EAETS,WAAYC,EACZC,UAAWD,EACXE,KAAMjB,EAAMiB,MAAQd,EAAS,CAAEe,YAAa,eAAxBf,CAAyC,GAAGgB,SAChEC,MAAOpB,EAAMoB,OAASnB,EAAKoB,IAAI,eAC/BC,sBAAuBtB,EAAMuB,aAAetB,EAAKoB,IAAI"}
@@ -1,2 +1,2 @@
1
- import{createElement as o}from"../../../external/preact/dist/preact.js";import{useRef as t,useCallback as e}from"../../../external/preact/hooks/dist/hooks.js";import n from"./Button.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as a}from"../../../utils/clipboard.js";import{SingletonTooltipProvider as s,useTooltip as i}from"../Tooltip/SingletonTooltipProvider.js";const c=s=>{const{i18n:c}=r(),p=t(null),{showTooltip:l,hideTooltip:C}=i(),u=e(()=>{a(s.text),l({anchorRef:p,text:c.get("button.copied")})},[s.text,c,l]),d=e(o=>{"Enter"!==o.key&&"Enter"!==o.code&&" "!==o.key&&"Space"!==o.code||o.stopPropagation()},[C]),m=e(o=>{"Enter"!==o.key&&"Enter"!==o.code&&" "!==o.key&&"Space"!==o.code||o.stopPropagation(),"Escape"!==o.key&&"Escape"!==o.code||(o.stopPropagation(),C())},[C]),y=e(()=>{l({anchorRef:p,text:c.get("button.copy")})},[p,c,l]);return o(n,{...s,variant:"iconOnly",buttonRef:p,ariaLabel:s.ariaLabel??c.get("button.copy"),onMouseEnter:y,onMouseLeave:C,onFocus:y,onBlur:C,onClick:u,onKeyPress:d,onKeyDown:m},o("svg",{className:"adyen-checkout__button--iconOnly__icon",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},o("path",{d:"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z"})))},p=t=>o(s,null,o(c,t));export{p as CopyIconButton};
1
+ import{createElement as o}from"../../../external/preact/dist/preact.js";import{useRef as t,useCallback as e}from"../../../external/preact/hooks/dist/hooks.js";import n from"./Button.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as s}from"../../../utils/clipboard.js";import{SingletonTooltipProvider as i,useTooltip as a}from"../Tooltip/SingletonTooltipProvider.js";import{stopPropagationForActionKeys as p}from"./stopPropagationForActionKeys.js";const c=i=>{const{i18n:c}=r(),l=t(null),{showTooltip:C,hideTooltip:u}=a(),m=e(()=>{s(i.text),C({anchorRef:l,text:c.get("button.copied")})},[i.text,c,C]),f=e(o=>{p(o),"Escape"!==o.key&&"Escape"!==o.code||(o.stopPropagation(),u())},[u]),h=e(()=>{C({anchorRef:l,text:c.get("button.copy")})},[l,c,C]);return o(n,{...i,variant:"iconOnly",buttonRef:l,ariaLabel:i.ariaLabel??c.get("button.copy"),onMouseEnter:h,onMouseLeave:u,onFocus:h,onBlur:u,onClick:m,onKeyPress:p,onKeyDown:f},o("svg",{className:"adyen-checkout__button--iconOnly__icon",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},o("path",{d:"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z"})))},l=t=>o(i,null,o(c,t));export{l as CopyIconButton};
2
2
  //# sourceMappingURL=CopyIconButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyIconButton.js","sources":["../../../../../src/components/internal/Button/CopyIconButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { SingletonTooltipProvider, useTooltip } from '../Tooltip/SingletonTooltipProvider';\nimport './CopyIconButton.scss';\n\nexport interface CopyIconButtonProps extends ButtonProps {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n}\n\nconst CopyIconButton = (props: CopyIconButtonProps) => {\n const { i18n } = useCoreContext();\n const anchorRef = useRef<HTMLButtonElement>(null);\n const { showTooltip, hideTooltip } = useTooltip();\n\n const onClick = useCallback(() => {\n void copyToClipboard(props.text);\n showTooltip({ anchorRef, text: i18n.get('button.copied') });\n }, [props.text, i18n, showTooltip]);\n\n // todo: remove it: onKeyPress is deprecated\n const onKeyPress = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n },\n [hideTooltip]\n );\n\n // We need it because onKeyPress does not trigger for Esc key\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n\n if (event.key === 'Escape' || event.code === 'Escape') {\n event.stopPropagation();\n hideTooltip();\n }\n },\n [hideTooltip]\n );\n\n const handleShowTooltip = useCallback(() => {\n showTooltip({ anchorRef, text: i18n.get('button.copy') });\n }, [anchorRef, i18n, showTooltip]);\n\n return (\n <Button\n {...props}\n variant=\"iconOnly\"\n buttonRef={anchorRef}\n ariaLabel={props.ariaLabel ?? i18n.get('button.copy')}\n onMouseEnter={handleShowTooltip}\n onMouseLeave={hideTooltip}\n onFocus={handleShowTooltip}\n onBlur={hideTooltip}\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter/space key pressed.\n onKeyPress={onKeyPress}\n onKeyDown={onKeyDown}\n >\n <svg\n className=\"adyen-checkout__button--iconOnly__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z\" />\n </svg>\n </Button>\n );\n};\n\nconst withTooltip = (props: CopyIconButtonProps) => {\n return (\n <SingletonTooltipProvider>\n <CopyIconButton {...props} />\n </SingletonTooltipProvider>\n );\n};\n\nexport { withTooltip as CopyIconButton };\n"],"names":["CopyIconButton","props","i18n","useCoreContext","anchorRef","useRef","showTooltip","hideTooltip","useTooltip","onClick","useCallback","copyToClipboard","text","get","onKeyPress","event","key","code","stopPropagation","onKeyDown","handleShowTooltip","h","Button","variant","buttonRef","ariaLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","svg","className","xmlns","width","height","viewBox","fill","path","d","withTooltip","SingletonTooltipProvider"],"mappings":"iaAgBA,MAAMA,EAAkBC,IACpB,MAAMC,KAAEA,GAASC,IACXC,EAAYC,EAA0B,OACtCC,YAAEA,EAAWC,YAAEA,GAAgBC,IAE/BC,EAAUC,EAAY,KACnBC,EAAgBV,EAAMW,MAC3BN,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,oBACzC,CAACZ,EAAMW,KAAMV,EAAMI,IAGhBQ,EAAaJ,EACdK,IACqB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG,mBAGd,CAACX,IAICY,EAAYT,EACbK,IACqB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG,kBAGQ,WAAdH,EAAMC,KAAmC,WAAfD,EAAME,OAChCF,EAAMG,kBACNX,MAGR,CAACA,IAGCa,EAAoBV,EAAY,KAClCJ,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,kBACzC,CAACT,EAAWF,EAAMI,IAErB,OACIe,EAACC,EAAAA,IACOrB,EACJsB,QAAQ,WACRC,UAAWpB,EACXqB,UAAWxB,EAAMwB,WAAavB,EAAKW,IAAI,eACvCa,aAAcN,EACdO,aAAcpB,EACdqB,QAASR,EACTS,OAAQtB,EACRE,QAASA,EAETK,WAAYA,EACZK,UAAWA,GAEXE,EAACS,MAAAA,CACGC,UAAU,yCACVC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,QAELf,EAACgB,OAAAA,CAAKC,EAAE,snBAMlBC,EAAetC,GAEboB,EAACmB,EAAAA,KACGnB,EAACrB,EAAmBC"}
1
+ {"version":3,"file":"CopyIconButton.js","sources":["../../../../../src/components/internal/Button/CopyIconButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { SingletonTooltipProvider, useTooltip } from '../Tooltip/SingletonTooltipProvider';\nimport './CopyIconButton.scss';\nimport { stopPropagationForActionKeys } from './stopPropagationForActionKeys';\n\nexport interface CopyIconButtonProps extends ButtonProps {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n}\n\nconst CopyIconButton = (props: CopyIconButtonProps) => {\n const { i18n } = useCoreContext();\n const anchorRef = useRef<HTMLButtonElement>(null);\n const { showTooltip, hideTooltip } = useTooltip();\n\n const onClick = useCallback(() => {\n void copyToClipboard(props.text);\n showTooltip({ anchorRef, text: i18n.get('button.copied') });\n }, [props.text, i18n, showTooltip]);\n\n // We need it because onKeyPress does not trigger for Esc key\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n stopPropagationForActionKeys(event);\n\n if (event.key === 'Escape' || event.code === 'Escape') {\n event.stopPropagation();\n hideTooltip();\n }\n },\n [hideTooltip]\n );\n\n const handleShowTooltip = useCallback(() => {\n showTooltip({ anchorRef, text: i18n.get('button.copy') });\n }, [anchorRef, i18n, showTooltip]);\n\n return (\n <Button\n {...props}\n variant=\"iconOnly\"\n buttonRef={anchorRef}\n ariaLabel={props.ariaLabel ?? i18n.get('button.copy')}\n onMouseEnter={handleShowTooltip}\n onMouseLeave={hideTooltip}\n onFocus={handleShowTooltip}\n onBlur={hideTooltip}\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter/space key pressed.\n onKeyPress={stopPropagationForActionKeys}\n onKeyDown={onKeyDown}\n >\n <svg\n className=\"adyen-checkout__button--iconOnly__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z\" />\n </svg>\n </Button>\n );\n};\n\nconst withTooltip = (props: CopyIconButtonProps) => {\n return (\n <SingletonTooltipProvider>\n <CopyIconButton {...props} />\n </SingletonTooltipProvider>\n );\n};\n\nexport { withTooltip as CopyIconButton };\n"],"names":["CopyIconButton","props","i18n","useCoreContext","anchorRef","useRef","showTooltip","hideTooltip","useTooltip","onClick","useCallback","copyToClipboard","text","get","onKeyDown","event","stopPropagationForActionKeys","key","code","stopPropagation","handleShowTooltip","h","Button","variant","buttonRef","ariaLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyPress","svg","className","xmlns","width","height","viewBox","fill","path","d","withTooltip","SingletonTooltipProvider"],"mappings":"kfAiBA,MAAMA,EAAkBC,IACpB,MAAMC,KAAEA,GAASC,IACXC,EAAYC,EAA0B,OACtCC,YAAEA,EAAWC,YAAEA,GAAgBC,IAE/BC,EAAUC,EAAY,KACnBC,EAAgBV,EAAMW,MAC3BN,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,oBACzC,CAACZ,EAAMW,KAAMV,EAAMI,IAGhBQ,EAAYJ,EACbK,IACGC,EAA6BD,GAEX,WAAdA,EAAME,KAAmC,WAAfF,EAAMG,OAChCH,EAAMI,kBACNZ,MAGR,CAACA,IAGCa,EAAoBV,EAAY,KAClCJ,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,kBACzC,CAACT,EAAWF,EAAMI,IAErB,OACIe,EAACC,EAAAA,IACOrB,EACJsB,QAAQ,WACRC,UAAWpB,EACXqB,UAAWxB,EAAMwB,WAAavB,EAAKW,IAAI,eACvCa,aAAcN,EACdO,aAAcpB,EACdqB,QAASR,EACTS,OAAQtB,EACRE,QAASA,EAETqB,WAAYd,EACZF,UAAWA,GAEXO,EAACU,MAAAA,CACGC,UAAU,yCACVC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,QAELhB,EAACiB,OAAAA,CAAKC,EAAE,snBAMlBC,EAAevC,GAEboB,EAACoB,EAAAA,KACGpB,EAACrB,EAAmBC"}
@@ -0,0 +1,2 @@
1
+ const e=e=>{"Enter"!==e.key&&"Enter"!==e.code&&" "!==e.key&&"Space"!==e.code||e.stopPropagation()};export{e as stopPropagationForActionKeys};
2
+ //# sourceMappingURL=stopPropagationForActionKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopPropagationForActionKeys.js","sources":["../../../../../src/components/internal/Button/stopPropagationForActionKeys.ts"],"sourcesContent":["export const stopPropagationForActionKeys = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n};\n"],"names":["stopPropagationForActionKeys","event","key","code","stopPropagation"],"mappings":"AAAO,MAAMA,EAAgCC,IACvB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG"}
@@ -1,2 +1,2 @@
1
- import{createElement as t,Fragment as e}from"../../../../../external/preact/dist/preact.js";import{useState as r,useEffect as o,useCallback as s}from"../../../../../external/preact/hooks/dist/hooks.js";import n from"../../context/useClickToPayContext.js";import a from"./CtPSingleCard/CtPSingleCard.js";import i from"../../../PayButton/PayButton.js";import{amountLabel as c}from"../../../PayButton/utils.js";import l from"./CtPCardsList/CtPCardsList.js";import m from"../../services/sdks/SrciError.js";import u from"../CtPSection/CtPSection.js";import{CTP_IFRAME_NAME as d}from"../../services/utils.js";import p from"../../../IFrame/Iframe.js";import f from"../../../../../core/Context/useImage.js";import{useCoreContext as g}from"../../../../../core/Context/CoreProvider.js";import C from"../../../../../utils/isMobile.js";import h from"../../../../../core/Errors/AdyenCheckoutError.js";import{PREFIX as y}from"../../../Icon/constants.js";function k(t,e){if(!t)return null;const r=e.get(`ctp.errors.${t}`);return r.includes("ctp.errors")?e.get("ctp.errors.UNKNOWN_ERROR"):r}function P(t,e,r){return r?C()?null:t.get("payButton.with",{values:{value:c(t,e),maskedData:`•••• ${r?.panLastFour}`}}):t.get("payButton")}const j=({onDisplayCardComponent:c})=>{const{i18n:C}=g(),j=f(),{amount:E,cards:S,checkout:x,isCtpPrimaryPaymentMethod:b,status:v,onSubmit:R,onSetStatus:$,onError:w}=n(),[B,M]=r(S.find(t=>!t.isExpired)||S[0]),[N,D]=r(null),F=S.every(t=>t.isExpired),[I,T]=r(!1);o(()=>{(0===S.length||F)&&c?.()},[c,F,S]);const _=s(async()=>{if(B)try{T(!0),D(null),$("loading");const t=await x(B);R(t)}catch(t){t instanceof m&&(D(t?.reason),console.warn(`CtP - Checkout: Reason: ${t?.reason} / Source: ${t?.source} / Scheme: ${t?.scheme}`)),T(!1),w(t instanceof h?t:new h("ERROR","Error during ClickToPay checkout",{cause:t}))}},[x,B]),L=s(t=>{M(t)},[]),O=I&&"loading"===v&&B?.isDcfPopupEmbedded,K="loading"!==v||!O,A=s(t=>{"Enter"===t.key&&_()},[_]);return t(e,null,t(p,{name:d,height:"380",width:"100%",classNameModifiers:[O?"":"hidden"]}),K&&t(e,null,t(u.Title,null,C.get("ctp.cards.title")),t(u.Text,null,C.get("ctp.cards.subtitle")),0===S.length&&t("div",{className:"adyen-checkout-ctp__empty-cards"},C.get("ctp.emptyProfile.message")),1===S.length&&t(a,{card:S[0],errorMessage:k(N,C)}),S.length>1&&t(l,{cardSelected:B,cards:S,onChangeCard:L,errorMessage:k(N,C)}),t(i,{disabled:F,amount:E,label:P(C,E,B),status:v,variant:b?"primary":"secondary",icon:0!==S.length&&j({imageFolder:"components/"})(b?`${y}lock`:`${y}lock_black`),onClick:_,onKeyDown:A})))};export{j as default};
1
+ import{createElement as t,Fragment as e}from"../../../../../external/preact/dist/preact.js";import{useState as r,useEffect as o,useCallback as s}from"../../../../../external/preact/hooks/dist/hooks.js";import n from"../../context/useClickToPayContext.js";import a from"./CtPSingleCard/CtPSingleCard.js";import i from"../../../PayButton/PayButton.js";import{amountLabel as c}from"../../../PayButton/utils.js";import m from"./CtPCardsList/CtPCardsList.js";import l from"../../services/sdks/SrciError.js";import u from"../CtPSection/CtPSection.js";import{CTP_IFRAME_NAME as d}from"../../services/utils.js";import p from"../../../IFrame/Iframe.js";import f from"../../../../../core/Context/useImage.js";import{useCoreContext as C}from"../../../../../core/Context/CoreProvider.js";import g from"../../../../../utils/isMobile.js";import h from"../../../../../core/Errors/AdyenCheckoutError.js";import{PREFIX as y}from"../../../Icon/constants.js";function k(t,e){if(!t)return null;const r=e.get(`ctp.errors.${t}`);return r.includes("ctp.errors")?e.get("ctp.errors.UNKNOWN_ERROR"):r}function P(t,e,r){return r?g()?null:t.get("payButton.with",{values:{value:c(t,e),maskedData:`•••• ${r?.panLastFour}`}}):t.get("payButton")}const j=({onDisplayCardComponent:c})=>{const{i18n:g}=C(),j=f(),{amount:E,cards:S,checkout:x,isCtpPrimaryPaymentMethod:v,status:b,onSubmit:R,onSetStatus:$,onError:w}=n(),[B,M]=r(S.find(t=>!t.isExpired)||S[0]),[N,D]=r(null),F=S.every(t=>t.isExpired),[I,_]=r(!1);o(()=>{(0===S.length||F)&&c?.()},[c,F,S]);const L=s(async()=>{if(B)try{_(!0),D(null),$("loading");const t=await x(B);R(t)}catch(t){t instanceof l&&(D(t?.reason),console.warn(`CtP - Checkout: Reason: ${t?.reason} / Source: ${t?.source} / Scheme: ${t?.scheme}`)),_(!1),w(t instanceof h?t:new h("ERROR","Error during ClickToPay checkout",{cause:t}))}},[x,B]),O=s(t=>{M(t)},[]),T=I&&"loading"===b&&B?.isDcfPopupEmbedded,K="loading"!==b||!T,A=s(t=>{"Enter"===t.key&&L()},[L]);return t(e,null,t(p,{name:d,height:"380",width:"100%",classNameModifiers:[T?"":"hidden"]}),K&&t(e,null,t(u.Title,null,g.get("ctp.cards.title")),0===S.length&&t("div",{className:"adyen-checkout-ctp__empty-cards"},g.get("ctp.emptyProfile.message")),1===S.length&&t(a,{card:S[0],errorMessage:k(N,g)}),S.length>1&&t(m,{cardSelected:B,cards:S,onChangeCard:O,errorMessage:k(N,g)}),t(i,{disabled:F,amount:E,label:P(g,E,B),status:b,variant:v?"primary":"secondary",icon:0!==S.length&&j({imageFolder:"components/"})(v?`${y}lock`:`${y}lock_black`),onClick:L,onKeyDown:A})))};export{j as default};
2
2
  //# sourceMappingURL=CtPCards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CtPCards.js","sources":["../../../../../../../src/components/internal/ClickToPay/components/CtPCards/CtPCards.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport useClickToPayContext from '../../context/useClickToPayContext';\nimport CtPSingleCard from './CtPSingleCard/CtPSingleCard';\nimport PayButton from '../../../PayButton';\nimport { amountLabel } from '../../../PayButton/utils';\nimport CtPCardsList from './CtPCardsList';\nimport ShopperCard from '../../models/ShopperCard';\nimport SrciError from '../../services/sdks/SrciError';\nimport CtPSection from '../CtPSection';\nimport { CTP_IFRAME_NAME } from '../../services/utils';\nimport Iframe from '../../../../internal/IFrame';\nimport useImage from '../../../../../core/Context/useImage';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport isMobile from '../../../../../utils/isMobile';\nimport Language from '../../../../../language';\nimport { PaymentAmount } from '../../../../../types/global-types';\nimport './CtPCards.scss';\nimport AdyenCheckoutError from '../../../../../core/Errors/AdyenCheckoutError';\nimport { PREFIX } from '../../../Icon/constants';\n\ntype CtPCardsProps = {\n onDisplayCardComponent?(): void;\n};\n\nfunction getErrorLabel(errorCode: string, i18n: Language): string {\n if (!errorCode) return null;\n\n const errorLabel = i18n.get(`ctp.errors.${errorCode}`);\n if (errorLabel.includes('ctp.errors')) return i18n.get(`ctp.errors.UNKNOWN_ERROR`);\n return errorLabel;\n}\n\nfunction getPayButtonLabel(i18n: Language, amount: PaymentAmount, checkoutCard?: ShopperCard): string | null {\n if (!checkoutCard) return i18n.get('payButton');\n if (!isMobile())\n return i18n.get('payButton.with', {\n values: { value: amountLabel(i18n, amount), maskedData: `•••• ${checkoutCard?.panLastFour}` }\n });\n return null;\n}\n\nconst CtPCards = ({ onDisplayCardComponent }: CtPCardsProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { amount, cards, checkout, isCtpPrimaryPaymentMethod, status, onSubmit, onSetStatus, onError } = useClickToPayContext();\n const [checkoutCard, setCheckoutCard] = useState<ShopperCard | undefined>(cards.find(card => !card.isExpired) || cards[0]);\n const [errorCode, setErrorCode] = useState<string>(null);\n const isEveryCardExpired = cards.every(card => card.isExpired);\n const [isShopperCheckingOutWithCtp, setIsShopperCheckingOutWithCtp] = useState<boolean>(false);\n\n useEffect(() => {\n if (cards.length === 0 || isEveryCardExpired) {\n onDisplayCardComponent?.();\n }\n }, [onDisplayCardComponent, isEveryCardExpired, cards]);\n\n const doCheckout = useCallback(async () => {\n if (!checkoutCard) return;\n\n try {\n setIsShopperCheckingOutWithCtp(true);\n setErrorCode(null);\n onSetStatus('loading');\n const payload = await checkout(checkoutCard);\n onSubmit(payload);\n } catch (error: unknown) {\n if (error instanceof SrciError) {\n setErrorCode(error?.reason);\n console.warn(`CtP - Checkout: Reason: ${error?.reason} / Source: ${error?.source} / Scheme: ${error?.scheme}`);\n }\n setIsShopperCheckingOutWithCtp(false);\n\n if (error instanceof AdyenCheckoutError) onError(error);\n else onError(new AdyenCheckoutError('ERROR', 'Error during ClickToPay checkout', { cause: error }));\n }\n }, [checkout, checkoutCard]);\n\n const handleOnChangeCard = useCallback((card: ShopperCard) => {\n setCheckoutCard(card);\n }, []);\n\n /**\n * If shopper submits the payment using the default Card component while CtP is rendered, the status here will be updated\n * and that can potentially display an iframe.\n *\n * Therefore, we use the flag 'isShopperCheckingOutWithCtp' to flag that the iframe should be displayed only in case the\n * Shopper is checking out with Click to Pay.\n */\n const displayNetworkDcf = isShopperCheckingOutWithCtp && status === 'loading' && checkoutCard?.isDcfPopupEmbedded;\n const displayCardCheckoutView = status !== 'loading' || !displayNetworkDcf;\n\n const handlePayButtonKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n void doCheckout();\n }\n },\n [doCheckout]\n );\n\n return (\n <Fragment>\n <Iframe name={CTP_IFRAME_NAME} height=\"380\" width=\"100%\" classNameModifiers={[displayNetworkDcf ? '' : 'hidden']} />\n\n {displayCardCheckoutView && (\n <Fragment>\n <CtPSection.Title>{i18n.get('ctp.cards.title')}</CtPSection.Title>\n <CtPSection.Text>{i18n.get('ctp.cards.subtitle')}</CtPSection.Text>\n {cards.length === 0 && <div className=\"adyen-checkout-ctp__empty-cards\">{i18n.get('ctp.emptyProfile.message')}</div>}\n {cards.length === 1 && <CtPSingleCard card={cards[0]} errorMessage={getErrorLabel(errorCode, i18n)} />}\n {cards.length > 1 && (\n <CtPCardsList\n cardSelected={checkoutCard}\n cards={cards}\n onChangeCard={handleOnChangeCard}\n errorMessage={getErrorLabel(errorCode, i18n)}\n />\n )}\n\n <PayButton\n disabled={isEveryCardExpired}\n amount={amount}\n label={getPayButtonLabel(i18n, amount, checkoutCard)}\n status={status}\n variant={isCtpPrimaryPaymentMethod ? 'primary' : 'secondary'}\n icon={\n cards.length !== 0 &&\n getImage({ imageFolder: 'components/' })(isCtpPrimaryPaymentMethod ? `${PREFIX}lock` : `${PREFIX}lock_black`)\n }\n onClick={doCheckout}\n onKeyDown={handlePayButtonKeyDown}\n />\n </Fragment>\n )}\n </Fragment>\n );\n};\n\nexport default CtPCards;\n"],"names":["getErrorLabel","errorCode","i18n","errorLabel","get","includes","getPayButtonLabel","amount","checkoutCard","isMobile","values","value","amountLabel","maskedData","panLastFour","CtPCards","onDisplayCardComponent","useCoreContext","getImage","useImage","cards","checkout","isCtpPrimaryPaymentMethod","status","onSubmit","onSetStatus","onError","useClickToPayContext","setCheckoutCard","useState","find","card","isExpired","setErrorCode","isEveryCardExpired","every","isShopperCheckingOutWithCtp","setIsShopperCheckingOutWithCtp","useEffect","length","doCheckout","useCallback","async","payload","error","SrciError","reason","console","warn","source","scheme","AdyenCheckoutError","cause","handleOnChangeCard","displayNetworkDcf","isDcfPopupEmbedded","displayCardCheckoutView","handlePayButtonKeyDown","event","key","h","Fragment","Iframe","name","CTP_IFRAME_NAME","height","width","classNameModifiers","CtPSection","Title","Text","div","className","CtPSingleCard","errorMessage","CtPCardsList","cardSelected","onChangeCard","PayButton","disabled","label","variant","icon","imageFolder","PREFIX","onClick","onKeyDown"],"mappings":"46BAyBA,SAASA,EAAcC,EAAmBC,GACtC,IAAKD,EAAW,OAAO,KAEvB,MAAME,EAAaD,EAAKE,IAAI,cAAcH,KAC1C,OAAIE,EAAWE,SAAS,cAAsBH,EAAKE,IAAI,4BAChDD,CACX,CAEA,SAASG,EAAkBJ,EAAgBK,EAAuBC,GAC9D,OAAKA,EACAC,IAIE,KAHIP,EAAKE,IAAI,iBAAkB,CAC9BM,OAAQ,CAAEC,MAAOC,EAAYV,EAAMK,GAASM,WAAY,QAAQL,GAAcM,iBAH5DZ,EAAKE,IAAI,YAMvC,CAEA,MAAMW,EAAW,EAAGC,6BAChB,MAAMd,KAAEA,GAASe,IACXC,EAAWC,KACXZ,OAAEA,EAAMa,MAAEA,EAAKC,SAAEA,EAAQC,0BAAEA,EAAyBC,OAAEA,EAAMC,SAAEA,EAAQC,YAAEA,EAAWC,QAAEA,GAAYC,KAChGnB,EAAcoB,GAAmBC,EAAkCT,EAAMU,KAAKC,IAASA,EAAKC,YAAcZ,EAAM,KAChHnB,EAAWgC,GAAgBJ,EAAiB,MAC7CK,EAAqBd,EAAMe,MAAMJ,GAAQA,EAAKC,YAC7CI,EAA6BC,GAAkCR,GAAkB,GAExFS,EAAU,MACe,IAAjBlB,EAAMmB,QAAgBL,IACtBlB,OAEL,CAACA,EAAwBkB,EAAoBd,IAEhD,MAAMoB,EAAaC,EAAYC,UAC3B,GAAKlC,EAEL,IACI6B,GAA+B,GAC/BJ,EAAa,MACbR,EAAY,WACZ,MAAMkB,QAAgBtB,EAASb,GAC/BgB,EAASmB,EACb,CAAE,MAAOC,GACDA,aAAiBC,IACjBZ,EAAaW,GAAOE,QACpBC,QAAQC,KAAK,2BAA2BJ,GAAOE,oBAAoBF,GAAOK,oBAAoBL,GAAOM,WAEzGb,GAA+B,GAEUX,EAArCkB,aAAiBO,EAA4BP,EACpC,IAAIO,EAAmB,QAAS,mCAAoC,CAAEC,MAAOR,IAC9F,GACD,CAACvB,EAAUb,IAER6C,EAAqBZ,EAAaV,IACpCH,EAAgBG,IACjB,IASGuB,EAAoBlB,GAA0C,YAAXb,GAAwBf,GAAc+C,mBACzFC,EAAqC,YAAXjC,IAAyB+B,EAEnDG,EAAyBhB,EAC1BiB,IACqB,UAAdA,EAAMC,KACDnB,KAGb,CAACA,IAGL,OACIoB,EAACC,OACGD,EAACE,EAAAA,CAAOC,KAAMC,EAAiBC,OAAO,MAAMC,MAAM,OAAOC,mBAAoB,CAACb,EAAoB,GAAK,YAEtGE,GACGI,EAACC,OACGD,EAACQ,EAAWC,MAAK,KAAEnE,EAAKE,IAAI,oBAC5BwD,EAACQ,EAAWE,KAAI,KAAEpE,EAAKE,IAAI,uBACT,IAAjBgB,EAAMmB,QAAgBqB,EAACW,MAAAA,CAAIC,UAAU,mCAAmCtE,EAAKE,IAAI,6BAChE,IAAjBgB,EAAMmB,QAAgBqB,EAACa,EAAAA,CAAc1C,KAAMX,EAAM,GAAIsD,aAAc1E,EAAcC,EAAWC,KAC5FkB,EAAMmB,OAAS,GACZqB,EAACe,EAAAA,CACGC,aAAcpE,EACdY,MAAOA,EACPyD,aAAcxB,EACdqB,aAAc1E,EAAcC,EAAWC,KAI/C0D,EAACkB,EAAAA,CACGC,SAAU7C,EACV3B,OAAQA,EACRyE,MAAO1E,EAAkBJ,EAAMK,EAAQC,GACvCe,OAAQA,EACR0D,QAAS3D,EAA4B,UAAY,YACjD4D,KACqB,IAAjB9D,EAAMmB,QACNrB,EAAS,CAAEiE,YAAa,eAAxBjE,CAAyCI,EAA4B,GAAG8D,QAAe,GAAGA,eAE9FC,QAAS7C,EACT8C,UAAW7B"}
1
+ {"version":3,"file":"CtPCards.js","sources":["../../../../../../../src/components/internal/ClickToPay/components/CtPCards/CtPCards.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport useClickToPayContext from '../../context/useClickToPayContext';\nimport CtPSingleCard from './CtPSingleCard/CtPSingleCard';\nimport PayButton from '../../../PayButton';\nimport { amountLabel } from '../../../PayButton/utils';\nimport CtPCardsList from './CtPCardsList';\nimport ShopperCard from '../../models/ShopperCard';\nimport SrciError from '../../services/sdks/SrciError';\nimport CtPSection from '../CtPSection';\nimport { CTP_IFRAME_NAME } from '../../services/utils';\nimport Iframe from '../../../../internal/IFrame';\nimport useImage from '../../../../../core/Context/useImage';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport isMobile from '../../../../../utils/isMobile';\nimport Language from '../../../../../language';\nimport { PaymentAmount } from '../../../../../types/global-types';\nimport './CtPCards.scss';\nimport AdyenCheckoutError from '../../../../../core/Errors/AdyenCheckoutError';\nimport { PREFIX } from '../../../Icon/constants';\n\ntype CtPCardsProps = {\n onDisplayCardComponent?(): void;\n};\n\nfunction getErrorLabel(errorCode: string, i18n: Language): string {\n if (!errorCode) return null;\n\n const errorLabel = i18n.get(`ctp.errors.${errorCode}`);\n if (errorLabel.includes('ctp.errors')) return i18n.get(`ctp.errors.UNKNOWN_ERROR`);\n return errorLabel;\n}\n\nfunction getPayButtonLabel(i18n: Language, amount: PaymentAmount, checkoutCard?: ShopperCard): string | null {\n if (!checkoutCard) return i18n.get('payButton');\n if (!isMobile())\n return i18n.get('payButton.with', {\n values: { value: amountLabel(i18n, amount), maskedData: `•••• ${checkoutCard?.panLastFour}` }\n });\n return null;\n}\n\nconst CtPCards = ({ onDisplayCardComponent }: CtPCardsProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { amount, cards, checkout, isCtpPrimaryPaymentMethod, status, onSubmit, onSetStatus, onError } = useClickToPayContext();\n const [checkoutCard, setCheckoutCard] = useState<ShopperCard | undefined>(cards.find(card => !card.isExpired) || cards[0]);\n const [errorCode, setErrorCode] = useState<string>(null);\n const isEveryCardExpired = cards.every(card => card.isExpired);\n const [isShopperCheckingOutWithCtp, setIsShopperCheckingOutWithCtp] = useState<boolean>(false);\n\n useEffect(() => {\n if (cards.length === 0 || isEveryCardExpired) {\n onDisplayCardComponent?.();\n }\n }, [onDisplayCardComponent, isEveryCardExpired, cards]);\n\n const doCheckout = useCallback(async () => {\n if (!checkoutCard) return;\n\n try {\n setIsShopperCheckingOutWithCtp(true);\n setErrorCode(null);\n onSetStatus('loading');\n const payload = await checkout(checkoutCard);\n onSubmit(payload);\n } catch (error: unknown) {\n if (error instanceof SrciError) {\n setErrorCode(error?.reason);\n console.warn(`CtP - Checkout: Reason: ${error?.reason} / Source: ${error?.source} / Scheme: ${error?.scheme}`);\n }\n setIsShopperCheckingOutWithCtp(false);\n\n if (error instanceof AdyenCheckoutError) onError(error);\n else onError(new AdyenCheckoutError('ERROR', 'Error during ClickToPay checkout', { cause: error }));\n }\n }, [checkout, checkoutCard]);\n\n const handleOnChangeCard = useCallback((card: ShopperCard) => {\n setCheckoutCard(card);\n }, []);\n\n /**\n * If shopper submits the payment using the default Card component while CtP is rendered, the status here will be updated\n * and that can potentially display an iframe.\n *\n * Therefore, we use the flag 'isShopperCheckingOutWithCtp' to flag that the iframe should be displayed only in case the\n * Shopper is checking out with Click to Pay.\n */\n const displayNetworkDcf = isShopperCheckingOutWithCtp && status === 'loading' && checkoutCard?.isDcfPopupEmbedded;\n const displayCardCheckoutView = status !== 'loading' || !displayNetworkDcf;\n\n const handlePayButtonKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n void doCheckout();\n }\n },\n [doCheckout]\n );\n\n return (\n <Fragment>\n <Iframe name={CTP_IFRAME_NAME} height=\"380\" width=\"100%\" classNameModifiers={[displayNetworkDcf ? '' : 'hidden']} />\n\n {displayCardCheckoutView && (\n <Fragment>\n <CtPSection.Title>{i18n.get('ctp.cards.title')}</CtPSection.Title>\n {cards.length === 0 && <div className=\"adyen-checkout-ctp__empty-cards\">{i18n.get('ctp.emptyProfile.message')}</div>}\n {cards.length === 1 && <CtPSingleCard card={cards[0]} errorMessage={getErrorLabel(errorCode, i18n)} />}\n {cards.length > 1 && (\n <CtPCardsList\n cardSelected={checkoutCard}\n cards={cards}\n onChangeCard={handleOnChangeCard}\n errorMessage={getErrorLabel(errorCode, i18n)}\n />\n )}\n\n <PayButton\n disabled={isEveryCardExpired}\n amount={amount}\n label={getPayButtonLabel(i18n, amount, checkoutCard)}\n status={status}\n variant={isCtpPrimaryPaymentMethod ? 'primary' : 'secondary'}\n icon={\n cards.length !== 0 &&\n getImage({ imageFolder: 'components/' })(isCtpPrimaryPaymentMethod ? `${PREFIX}lock` : `${PREFIX}lock_black`)\n }\n onClick={doCheckout}\n onKeyDown={handlePayButtonKeyDown}\n />\n </Fragment>\n )}\n </Fragment>\n );\n};\n\nexport default CtPCards;\n"],"names":["getErrorLabel","errorCode","i18n","errorLabel","get","includes","getPayButtonLabel","amount","checkoutCard","isMobile","values","value","amountLabel","maskedData","panLastFour","CtPCards","onDisplayCardComponent","useCoreContext","getImage","useImage","cards","checkout","isCtpPrimaryPaymentMethod","status","onSubmit","onSetStatus","onError","useClickToPayContext","setCheckoutCard","useState","find","card","isExpired","setErrorCode","isEveryCardExpired","every","isShopperCheckingOutWithCtp","setIsShopperCheckingOutWithCtp","useEffect","length","doCheckout","useCallback","async","payload","error","SrciError","reason","console","warn","source","scheme","AdyenCheckoutError","cause","handleOnChangeCard","displayNetworkDcf","isDcfPopupEmbedded","displayCardCheckoutView","handlePayButtonKeyDown","event","key","h","Fragment","Iframe","name","CTP_IFRAME_NAME","height","width","classNameModifiers","CtPSection","Title","div","className","CtPSingleCard","errorMessage","CtPCardsList","cardSelected","onChangeCard","PayButton","disabled","label","variant","icon","imageFolder","PREFIX","onClick","onKeyDown"],"mappings":"46BAyBA,SAASA,EAAcC,EAAmBC,GACtC,IAAKD,EAAW,OAAO,KAEvB,MAAME,EAAaD,EAAKE,IAAI,cAAcH,KAC1C,OAAIE,EAAWE,SAAS,cAAsBH,EAAKE,IAAI,4BAChDD,CACX,CAEA,SAASG,EAAkBJ,EAAgBK,EAAuBC,GAC9D,OAAKA,EACAC,IAIE,KAHIP,EAAKE,IAAI,iBAAkB,CAC9BM,OAAQ,CAAEC,MAAOC,EAAYV,EAAMK,GAASM,WAAY,QAAQL,GAAcM,iBAH5DZ,EAAKE,IAAI,YAMvC,CAEA,MAAMW,EAAW,EAAGC,6BAChB,MAAMd,KAAEA,GAASe,IACXC,EAAWC,KACXZ,OAAEA,EAAMa,MAAEA,EAAKC,SAAEA,EAAQC,0BAAEA,EAAyBC,OAAEA,EAAMC,SAAEA,EAAQC,YAAEA,EAAWC,QAAEA,GAAYC,KAChGnB,EAAcoB,GAAmBC,EAAkCT,EAAMU,KAAKC,IAASA,EAAKC,YAAcZ,EAAM,KAChHnB,EAAWgC,GAAgBJ,EAAiB,MAC7CK,EAAqBd,EAAMe,MAAMJ,GAAQA,EAAKC,YAC7CI,EAA6BC,GAAkCR,GAAkB,GAExFS,EAAU,MACe,IAAjBlB,EAAMmB,QAAgBL,IACtBlB,OAEL,CAACA,EAAwBkB,EAAoBd,IAEhD,MAAMoB,EAAaC,EAAYC,UAC3B,GAAKlC,EAEL,IACI6B,GAA+B,GAC/BJ,EAAa,MACbR,EAAY,WACZ,MAAMkB,QAAgBtB,EAASb,GAC/BgB,EAASmB,EACb,CAAE,MAAOC,GACDA,aAAiBC,IACjBZ,EAAaW,GAAOE,QACpBC,QAAQC,KAAK,2BAA2BJ,GAAOE,oBAAoBF,GAAOK,oBAAoBL,GAAOM,WAEzGb,GAA+B,GAEUX,EAArCkB,aAAiBO,EAA4BP,EACpC,IAAIO,EAAmB,QAAS,mCAAoC,CAAEC,MAAOR,IAC9F,GACD,CAACvB,EAAUb,IAER6C,EAAqBZ,EAAaV,IACpCH,EAAgBG,IACjB,IASGuB,EAAoBlB,GAA0C,YAAXb,GAAwBf,GAAc+C,mBACzFC,EAAqC,YAAXjC,IAAyB+B,EAEnDG,EAAyBhB,EAC1BiB,IACqB,UAAdA,EAAMC,KACDnB,KAGb,CAACA,IAGL,OACIoB,EAACC,OACGD,EAACE,EAAAA,CAAOC,KAAMC,EAAiBC,OAAO,MAAMC,MAAM,OAAOC,mBAAoB,CAACb,EAAoB,GAAK,YAEtGE,GACGI,EAACC,EAAAA,KACGD,EAACQ,EAAWC,MAAK,KAAEnE,EAAKE,IAAI,oBACV,IAAjBgB,EAAMmB,QAAgBqB,EAACU,MAAAA,CAAIC,UAAU,mCAAmCrE,EAAKE,IAAI,6BAChE,IAAjBgB,EAAMmB,QAAgBqB,EAACY,EAAAA,CAAczC,KAAMX,EAAM,GAAIqD,aAAczE,EAAcC,EAAWC,KAC5FkB,EAAMmB,OAAS,GACZqB,EAACc,EAAAA,CACGC,aAAcnE,EACdY,MAAOA,EACPwD,aAAcvB,EACdoB,aAAczE,EAAcC,EAAWC,KAI/C0D,EAACiB,EAAAA,CACGC,SAAU5C,EACV3B,OAAQA,EACRwE,MAAOzE,EAAkBJ,EAAMK,EAAQC,GACvCe,OAAQA,EACRyD,QAAS1D,EAA4B,UAAY,YACjD2D,KACqB,IAAjB7D,EAAMmB,QACNrB,EAAS,CAAEgE,YAAa,eAAxBhE,CAAyCI,EAA4B,GAAG6D,QAAe,GAAGA,eAE9FC,QAAS5C,EACT6C,UAAW5B"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../../../../external/preact/dist/preact.js";import{useMemo as r,useEffect as a}from"../../../../../../external/preact/hooks/dist/hooks.js";import t from"../../../context/useClickToPayContext.js";import{useCoreContext as s}from"../../../../../../core/Context/CoreProvider.js";import o from"../../../../../../core/Context/useImage.js";import i from"../../../../../../utils/useForm/useForm.js";import d from"../../../../../../utils/isMobile.js";import c from"../../../../FormFields/Field/Field.js";import l from"../../../../FormFields/Select/Select.js";const m=["srcDigitalCardId"],n=({cardSelected:n,cards:p,errorMessage:C,onChangeCard:g})=>{const{i18n:f}=s(),u=o(),{status:x}=t(),{handleChangeFor:F,data:h}=i({schema:m,defaultData:{srcDigitalCardId:n.srcDigitalCardId}}),j=r(()=>p.map(e=>({icon:e.artUri||u()(e.scheme),name:`${d()?"":e.title} •••• ${e.panLastFour} `,secondaryText:e.isExpired&&f.get("ctp.cards.expiredCard"),id:e.srcDigitalCardId,disabled:e.isExpired})),[p]);return a(()=>{const{srcDigitalCardId:e}=h,r=p.find(r=>r.srcDigitalCardId===e);g(r)},[h,g]),e(c,{name:"clickToPayCards",errorMessage:C,readOnly:"loading"===x},e(l,{items:j,selectedValue:h.srcDigitalCardId,name:"cards",filterable:!1,className:"adyen-checkout-ctp__cards-list-dropdown",readonly:"loading"===x,onChange:F("srcDigitalCardId")}))};export{n as default};
1
+ import{createElement as e}from"../../../../../../external/preact/dist/preact.js";import{useMemo as r,useEffect as a}from"../../../../../../external/preact/hooks/dist/hooks.js";import t from"../../../context/useClickToPayContext.js";import{useCoreContext as s}from"../../../../../../core/Context/CoreProvider.js";import o from"../../../../../../core/Context/useImage.js";import i from"../../../../../../utils/useForm/useForm.js";import d from"../../../../../../utils/isMobile.js";import c from"../../../../FormFields/Field/Field.js";import l from"../../../../FormFields/Select/Select.js";const m=["srcDigitalCardId"],n=({cardSelected:n,cards:p,errorMessage:C,onChangeCard:g})=>{const{i18n:u}=s(),f=o(),{status:x}=t(),{handleChangeFor:h,data:F}=i({schema:m,defaultData:{srcDigitalCardId:n.srcDigitalCardId}}),I=r(()=>p.map(e=>({icon:e.artUri||f()(e.scheme),name:`${d()?"":e.title} •••• ${e.panLastFour} `,secondaryText:e.isExpired&&u.get("ctp.cards.expiredCard"),id:e.srcDigitalCardId,disabled:e.isExpired})),[p]);return a(()=>{const{srcDigitalCardId:e}=F,r=p.find(r=>r.srcDigitalCardId===e);g(r)},[F,g]),e(c,{name:"clickToPayCards",className:"adyen-checkout-ctp__cards-list-field",errorMessage:C,readOnly:"loading"===x,label:u.get("ctp.cards.subtitle")},e(l,{items:I,selectedValue:F.srcDigitalCardId,name:"clickToPayCards",filterable:!1,className:"adyen-checkout-ctp__cards-list-dropdown",allowIdOnButton:!0,readonly:"loading"===x,onChange:h("srcDigitalCardId")}))};export{n as default};
2
2
  //# sourceMappingURL=CtPCardsList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CtPCardsList.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo } from 'preact/hooks';\nimport ShopperCard from '../../../models/ShopperCard';\nimport useClickToPayContext from '../../../context/useClickToPayContext';\nimport { useCoreContext } from '../../../../../../core/Context/CoreProvider';\nimport useImage from '../../../../../../core/Context/useImage';\nimport useForm from '../../../../../../utils/useForm';\nimport isMobile from '../../../../../../utils/isMobile';\nimport Field from '../../../../FormFields/Field';\nimport './CtPCardsList.scss';\nimport Select from '../../../../FormFields/Select';\n\ntype CtPCardsListProps = {\n cards: ShopperCard[];\n cardSelected: ShopperCard;\n errorMessage?: string;\n onChangeCard(card: ShopperCard): void;\n};\n\ntype CardsSelectorDataState = {\n srcDigitalCardId: string;\n};\n\nconst schema = ['srcDigitalCardId'];\n\nconst CtPCardsList = ({ cardSelected, cards, errorMessage, onChangeCard }: CtPCardsListProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { status } = useClickToPayContext();\n const { handleChangeFor, data } = useForm<CardsSelectorDataState>({\n schema,\n defaultData: { srcDigitalCardId: cardSelected.srcDigitalCardId }\n });\n\n const items = useMemo(() => {\n return cards.map(card => ({\n icon: card.artUri || getImage()(card.scheme),\n name: `${isMobile() ? '' : card.title} •••• ${card.panLastFour} `,\n secondaryText: card.isExpired && i18n.get('ctp.cards.expiredCard'),\n id: card.srcDigitalCardId,\n disabled: card.isExpired\n }));\n }, [cards]);\n\n useEffect(() => {\n const { srcDigitalCardId } = data;\n const card = cards.find(card => card.srcDigitalCardId === srcDigitalCardId);\n onChangeCard(card);\n }, [data, onChangeCard]);\n\n return (\n <Field name=\"clickToPayCards\" errorMessage={errorMessage} readOnly={status === 'loading'}>\n <Select\n items={items}\n selectedValue={data['srcDigitalCardId']}\n name={'cards'}\n filterable={false}\n className={'adyen-checkout-ctp__cards-list-dropdown'}\n readonly={status === 'loading'}\n onChange={handleChangeFor('srcDigitalCardId')}\n />\n </Field>\n );\n};\n\nexport default CtPCardsList;\n"],"names":["schema","CtPCardsList","cardSelected","cards","errorMessage","onChangeCard","i18n","useCoreContext","getImage","useImage","status","useClickToPayContext","handleChangeFor","data","useForm","defaultData","srcDigitalCardId","items","useMemo","map","card","icon","artUri","scheme","name","isMobile","title","panLastFour","secondaryText","isExpired","get","id","disabled","useEffect","find","h","Field","readOnly","Select","selectedValue","filterable","className","readonly","onChange"],"mappings":"2kBAuBA,MAAMA,EAAS,CAAC,oBAEVC,EAAe,EAAGC,eAAcC,QAAOC,eAAcC,mBACvD,MAAMC,KAAEA,GAASC,IACXC,EAAWC,KACXC,OAAEA,GAAWC,KACbC,gBAAEA,EAAeC,KAAEA,GAASC,EAAgC,CAC9Dd,SACAe,YAAa,CAAEC,iBAAkBd,EAAac,oBAG5CC,EAAQC,EAAQ,IACXf,EAAMgB,IAAIC,KACbC,KAAMD,EAAKE,QAAUd,IAAWY,EAAKG,QACrCC,KAAM,GAAGC,IAAa,GAAKL,EAAKM,cAAcN,EAAKO,eACnDC,cAAeR,EAAKS,WAAavB,EAAKwB,IAAI,yBAC1CC,GAAIX,EAAKJ,iBACTgB,SAAUZ,EAAKS,aAEpB,CAAC1B,IAQJ,OANA8B,EAAU,KACN,MAAMjB,iBAAEA,GAAqBH,EACvBO,EAAOjB,EAAM+B,KAAKd,GAAQA,EAAKJ,mBAAqBA,GAC1DX,EAAae,IACd,CAACP,EAAMR,IAGN8B,EAACC,EAAAA,CAAMZ,KAAK,kBAAkBpB,aAAcA,EAAciC,SAAqB,YAAX3B,GAChEyB,EAACG,EAAAA,CACGrB,MAAOA,EACPsB,cAAe1B,EAAK,iBACpBW,KAAM,QACNgB,YAAY,EACZC,UAAW,0CACXC,SAAqB,YAAXhC,EACViC,SAAU/B,EAAgB"}
1
+ {"version":3,"file":"CtPCardsList.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo } from 'preact/hooks';\nimport ShopperCard from '../../../models/ShopperCard';\nimport useClickToPayContext from '../../../context/useClickToPayContext';\nimport { useCoreContext } from '../../../../../../core/Context/CoreProvider';\nimport useImage from '../../../../../../core/Context/useImage';\nimport useForm from '../../../../../../utils/useForm';\nimport isMobile from '../../../../../../utils/isMobile';\nimport Field from '../../../../FormFields/Field';\nimport './CtPCardsList.scss';\nimport Select from '../../../../FormFields/Select';\n\ntype CtPCardsListProps = {\n cards: ShopperCard[];\n cardSelected: ShopperCard;\n errorMessage?: string;\n onChangeCard(card: ShopperCard): void;\n};\n\ntype CardsSelectorDataState = {\n srcDigitalCardId: string;\n};\n\nconst schema = ['srcDigitalCardId'];\n\nconst CtPCardsList = ({ cardSelected, cards, errorMessage, onChangeCard }: CtPCardsListProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { status } = useClickToPayContext();\n const { handleChangeFor, data } = useForm<CardsSelectorDataState>({\n schema,\n defaultData: { srcDigitalCardId: cardSelected.srcDigitalCardId }\n });\n\n const items = useMemo(() => {\n return cards.map(card => ({\n icon: card.artUri || getImage()(card.scheme),\n name: `${isMobile() ? '' : card.title} •••• ${card.panLastFour} `,\n secondaryText: card.isExpired && i18n.get('ctp.cards.expiredCard'),\n id: card.srcDigitalCardId,\n disabled: card.isExpired\n }));\n }, [cards]);\n\n useEffect(() => {\n const { srcDigitalCardId } = data;\n const card = cards.find(card => card.srcDigitalCardId === srcDigitalCardId);\n onChangeCard(card);\n }, [data, onChangeCard]);\n\n return (\n <Field\n name=\"clickToPayCards\"\n className=\"adyen-checkout-ctp__cards-list-field\"\n errorMessage={errorMessage}\n readOnly={status === 'loading'}\n label={i18n.get('ctp.cards.subtitle')}\n >\n <Select\n items={items}\n selectedValue={data['srcDigitalCardId']}\n name={'clickToPayCards'}\n filterable={false}\n className={'adyen-checkout-ctp__cards-list-dropdown'}\n allowIdOnButton={true}\n readonly={status === 'loading'}\n onChange={handleChangeFor('srcDigitalCardId')}\n />\n </Field>\n );\n};\n\nexport default CtPCardsList;\n"],"names":["schema","CtPCardsList","cardSelected","cards","errorMessage","onChangeCard","i18n","useCoreContext","getImage","useImage","status","useClickToPayContext","handleChangeFor","data","useForm","defaultData","srcDigitalCardId","items","useMemo","map","card","icon","artUri","scheme","name","isMobile","title","panLastFour","secondaryText","isExpired","get","id","disabled","useEffect","find","h","Field","className","readOnly","label","Select","selectedValue","filterable","allowIdOnButton","readonly","onChange"],"mappings":"2kBAuBA,MAAMA,EAAS,CAAC,oBAEVC,EAAe,EAAGC,eAAcC,QAAOC,eAAcC,mBACvD,MAAMC,KAAEA,GAASC,IACXC,EAAWC,KACXC,OAAEA,GAAWC,KACbC,gBAAEA,EAAeC,KAAEA,GAASC,EAAgC,CAC9Dd,SACAe,YAAa,CAAEC,iBAAkBd,EAAac,oBAG5CC,EAAQC,EAAQ,IACXf,EAAMgB,IAAIC,KACbC,KAAMD,EAAKE,QAAUd,IAAWY,EAAKG,QACrCC,KAAM,GAAGC,IAAa,GAAKL,EAAKM,cAAcN,EAAKO,eACnDC,cAAeR,EAAKS,WAAavB,EAAKwB,IAAI,yBAC1CC,GAAIX,EAAKJ,iBACTgB,SAAUZ,EAAKS,aAEpB,CAAC1B,IAQJ,OANA8B,EAAU,KACN,MAAMjB,iBAAEA,GAAqBH,EACvBO,EAAOjB,EAAM+B,KAAKd,GAAQA,EAAKJ,mBAAqBA,GAC1DX,EAAae,IACd,CAACP,EAAMR,IAGN8B,EAACC,EAAAA,CACGZ,KAAK,kBACLa,UAAU,uCACVjC,aAAcA,EACdkC,SAAqB,YAAX5B,EACV6B,MAAOjC,EAAKwB,IAAI,uBAEhBK,EAACK,EAAAA,CACGvB,MAAOA,EACPwB,cAAe5B,EAAK,iBACpBW,KAAM,kBACNkB,YAAY,EACZL,UAAW,0CACXM,iBAAiB,EACjBC,SAAqB,YAAXlC,EACVmC,SAAUjC,EAAgB"}
@@ -1,2 +1,2 @@
1
- import{createElement as o,Fragment as e}from"../../../../../external/preact/dist/preact.js";import{useState as t,useRef as r,useCallback as a}from"../../../../../external/preact/hooks/dist/hooks.js";import{CtPInfoModal as s}from"./CtPInfoModal/CtPInfoModal.js";import n from"../../../../../core/Context/useImage.js";import{useCoreContext as i}from"../../../../../core/Context/CoreProvider.js";import m from"../../../Img/Img.js";const c=()=>{const[c,l]=t(!1),f=r(),{i18n:p}=i(),u=n()({imageFolder:"components/"})("info"),d=a(()=>{l(!1)},[]),C=a(()=>{l(!0)},[]);return o(e,null,o("button",{ref:f,onClick:C,className:"adyen-web__ctp-info-button","aria-label":p.get("ctp.aria.infoModalButton"),type:"button"},o(m,{height:"15",src:u,ariaHidden:!0})),o(s,{isOpen:c,onClose:d,focusAfterClose:f.current}))};export{c as CtPInfo};
1
+ import{createElement as o,Fragment as e}from"../../../../../external/preact/dist/preact.js";import{useState as t,useRef as r,useCallback as a}from"../../../../../external/preact/hooks/dist/hooks.js";import{CtPInfoModal as s}from"./CtPInfoModal/CtPInfoModal.js";import n from"../../../../../core/Context/useImage.js";import{useCoreContext as i}from"../../../../../core/Context/CoreProvider.js";import m from"../../../Img/Img.js";const c=()=>{const[c,l]=t(!1),f=r(),{i18n:p}=i(),u=n()({imageFolder:"components/"})("info"),d=a(()=>{l(!1)},[]),C=a(()=>{l(!0)},[]);return o(e,null,o("button",{ref:f,onClick:C,className:"adyen-web__ctp-info-button","aria-label":p.get("ctp.aria.infoModalButton"),type:"button"},o(m,{height:"15",src:u,"aria-hidden":!0})),o(s,{isOpen:c,onClose:d,focusAfterClose:f.current}))};export{c as CtPInfo};
2
2
  //# sourceMappingURL=CtPInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CtPInfo.js","sources":["../../../../../../../src/components/internal/ClickToPay/components/CtPInfo/CtPInfo.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { CtPInfoModal } from './CtPInfoModal';\nimport useImage from '../../../../../core/Context/useImage';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport Img from '../../../Img';\nimport './CtPInfo.scss';\n\nconst CtPInfo = () => {\n const [isInfoModalOpen, setIsInfoModalOpen] = useState<boolean>(false);\n const buttonRef = useRef<HTMLButtonElement>();\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const url = getImage({ imageFolder: 'components/' })('info');\n\n const handleOnClose = useCallback(() => {\n setIsInfoModalOpen(false);\n }, []);\n\n const handleOnIconClick = useCallback(() => {\n setIsInfoModalOpen(true);\n }, []);\n\n return (\n <Fragment>\n <button\n ref={buttonRef}\n onClick={handleOnIconClick}\n className=\"adyen-web__ctp-info-button\"\n aria-label={i18n.get('ctp.aria.infoModalButton')}\n type=\"button\"\n >\n <Img height=\"15\" src={url} ariaHidden={true} />\n </button>\n\n <CtPInfoModal isOpen={isInfoModalOpen} onClose={handleOnClose} focusAfterClose={buttonRef.current} />\n </Fragment>\n );\n};\n\nexport { CtPInfo };\n"],"names":["CtPInfo","isInfoModalOpen","setIsInfoModalOpen","useState","buttonRef","useRef","i18n","useCoreContext","url","useImage","getImage","imageFolder","handleOnClose","useCallback","handleOnIconClick","h","Fragment","button","ref","onClick","className","aria-label","get","type","Img","height","src","ariaHidden","CtPInfoModal","isOpen","onClose","focusAfterClose","current"],"mappings":"4aAQA,MAAMA,EAAU,KACZ,MAAOC,EAAiBC,GAAsBC,GAAkB,GAC1DC,EAAYC,KACZC,KAAEA,GAASC,IAEXC,EADWC,GACLC,CAAS,CAAEC,YAAa,eAAxBD,CAAyC,QAE/CE,EAAgBC,EAAY,KAC9BX,GAAmB,IACpB,IAEGY,EAAoBD,EAAY,KAClCX,GAAmB,IACpB,IAEH,OACIa,EAACC,OACGD,EAACE,SAAAA,CACGC,IAAKd,EACLe,QAASL,EACTM,UAAU,6BACVC,aAAYf,EAAKgB,IAAI,4BACrBC,KAAK,UAELR,EAACS,EAAAA,CAAIC,OAAO,KAAKC,IAAKlB,EAAKmB,YAAY,KAG3CZ,EAACa,EAAAA,CAAaC,OAAQ5B,EAAiB6B,QAASlB,EAAemB,gBAAiB3B,EAAU4B"}
1
+ {"version":3,"file":"CtPInfo.js","sources":["../../../../../../../src/components/internal/ClickToPay/components/CtPInfo/CtPInfo.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { CtPInfoModal } from './CtPInfoModal';\nimport useImage from '../../../../../core/Context/useImage';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport Img from '../../../Img';\nimport './CtPInfo.scss';\n\nconst CtPInfo = () => {\n const [isInfoModalOpen, setIsInfoModalOpen] = useState<boolean>(false);\n const buttonRef = useRef<HTMLButtonElement>();\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const url = getImage({ imageFolder: 'components/' })('info');\n\n const handleOnClose = useCallback(() => {\n setIsInfoModalOpen(false);\n }, []);\n\n const handleOnIconClick = useCallback(() => {\n setIsInfoModalOpen(true);\n }, []);\n\n return (\n <Fragment>\n <button\n ref={buttonRef}\n onClick={handleOnIconClick}\n className=\"adyen-web__ctp-info-button\"\n aria-label={i18n.get('ctp.aria.infoModalButton')}\n type=\"button\"\n >\n <Img height=\"15\" src={url} aria-hidden={true} />\n </button>\n\n <CtPInfoModal isOpen={isInfoModalOpen} onClose={handleOnClose} focusAfterClose={buttonRef.current} />\n </Fragment>\n );\n};\n\nexport { CtPInfo };\n"],"names":["CtPInfo","isInfoModalOpen","setIsInfoModalOpen","useState","buttonRef","useRef","i18n","useCoreContext","url","useImage","getImage","imageFolder","handleOnClose","useCallback","handleOnIconClick","h","Fragment","button","ref","onClick","className","aria-label","get","type","Img","height","src","aria-hidden","CtPInfoModal","isOpen","onClose","focusAfterClose","current"],"mappings":"4aAQA,MAAMA,EAAU,KACZ,MAAOC,EAAiBC,GAAsBC,GAAkB,GAC1DC,EAAYC,KACZC,KAAEA,GAASC,IAEXC,EADWC,GACLC,CAAS,CAAEC,YAAa,eAAxBD,CAAyC,QAE/CE,EAAgBC,EAAY,KAC9BX,GAAmB,IACpB,IAEGY,EAAoBD,EAAY,KAClCX,GAAmB,IACpB,IAEH,OACIa,EAACC,OACGD,EAACE,SAAAA,CACGC,IAAKd,EACLe,QAASL,EACTM,UAAU,6BACVC,aAAYf,EAAKgB,IAAI,4BACrBC,KAAK,UAELR,EAACS,EAAAA,CAAIC,OAAO,KAAKC,IAAKlB,EAAKmB,eAAa,KAG5CZ,EAACa,EAAAA,CAAaC,OAAQ5B,EAAiB6B,QAASlB,EAAemB,gBAAiB3B,EAAU4B"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../../../../external/preact/dist/preact.js";import{useState as t,useRef as r,useCallback as o,useEffect as s}from"../../../../../../external/preact/hooks/dist/hooks.js";import{otpValidationRules as a}from"./validate.js";import n from"./CtPResendOtpLink.js";import l from"../../../context/useClickToPayContext.js";import{useCoreContext as i}from"../../../../../../core/Context/CoreProvider.js";import d from"../../../../../../utils/useForm/useForm.js";import p from"../../../../FormFields/Field/Field.js";import c from"../../../../FormFields/InputText.js";const u=u=>{const{i18n:m}=i(),{configuration:{disableOtpAutoFocus:f}}=l(),[C,g]=t(null),{handleChangeFor:F,data:h,triggerValidation:j,valid:k,errors:v,isValid:b,setData:x}=d({schema:["otp"],rules:a}),P=r({validateInput:null}),E=r(null),[I,R]=t(!1),y=o(()=>{R(!0),j()},[j]);s(()=>{h.otp&&R(!0)},[h.otp]),s(()=>{!f&&E.current&&E.current.focus()},[E.current,f]),s(()=>{P.current.validateInput=y,u.onSetInputHandlers(P.current)},[y,u.onSetInputHandlers]);const V=o(()=>{x("otp",""),g(null),f||E.current.focus(),u.onResendCode()},[u.onResendCode,E.current,f]),_=o(e=>{const t=m.get(`ctp.errors.${e}`);t&&g(t)},[m]),w=o(e=>{"Enter"===e.key&&u.onPressEnter()},[u.onPressEnter]);return s(()=>{u.onChange({data:h,valid:k,errors:v,isValid:b})},[h,k,v]),e("div",{className:"adyen-checkout-ctp__otp-field-wrapper"},e(p,{name:"oneTimePassword",label:m.get("ctp.otp.fieldLabel"),errorMessage:I?C||u.errorMessage||!!v.otp:null,classNameModifiers:["otp"]},e(c,{name:"otp",autocorrect:"off",spellcheck:!1,value:h.otp,disabled:u.disabled,onInput:F("otp","input"),onBlur:F("otp","blur"),onKeyPress:w,setRef:e=>{E.current=e}})),e("div",{className:"adyen-checkout-ctp__otp-resend-code-wrapper"},e(n,{disabled:u.isValidatingOtp,onError:_,onResendCode:V})))};export{u as default};
1
+ import{createElement as e}from"../../../../../../external/preact/dist/preact.js";import{useState as t,useRef as r,useCallback as o,useEffect as s}from"../../../../../../external/preact/hooks/dist/hooks.js";import{otpValidationRules as a}from"./validate.js";import n from"./CtPResendOtpLink.js";import l from"../../../context/useClickToPayContext.js";import{useCoreContext as i}from"../../../../../../core/Context/CoreProvider.js";import p from"../../../../../../utils/useForm/useForm.js";import d from"../../../../FormFields/Field/Field.js";import c from"../../../../FormFields/InputText.js";import{getErrorMessage as u}from"../../../../../../utils/getErrorMessage.js";const m=m=>{const{i18n:f}=i(),{configuration:{disableOtpAutoFocus:g}}=l(),[C,j]=t(null),{handleChangeFor:F,data:b,triggerValidation:h,valid:k,errors:v,isValid:x,setData:E}=p({schema:["otp"],rules:a}),P=r({validateInput:null}),I=r(null),[R,y]=t(!1),M=o(()=>{y(!0),h()},[h]);s(()=>{b.otp&&y(!0)},[b.otp]),s(()=>{!g&&I.current&&I.current.focus()},[I.current,g]),s(()=>{P.current.validateInput=M,m.onSetInputHandlers(P.current)},[M,m.onSetInputHandlers]);const V=o(()=>{E("otp",""),j(null),g||I.current.focus(),m.onResendCode()},[m.onResendCode,I.current,g]),_=o(e=>{const t=f.get(`ctp.errors.${e}`);t&&j(t)},[f]),w=o(e=>{"Enter"===e.key&&m.onPressEnter()},[m.onPressEnter]);s(()=>{m.onChange({data:b,valid:k,errors:v,isValid:x})},[b,k,v]);const L=o(()=>R?C||m.errorMessage||u(f,v.otp,f.get("ctp.otp.fieldLabel")):null,[R,C,m.errorMessage,v.otp,f]);return e("div",{className:"adyen-checkout-ctp__otp-field-wrapper"},e(d,{name:"oneTimePassword",label:f.get("ctp.otp.fieldLabel"),errorMessage:L(),classNameModifiers:["otp"]},e(c,{name:"otp",autocorrect:"off",spellcheck:!1,value:b.otp,disabled:m.disabled,onInput:F("otp","input"),onBlur:F("otp","blur"),onKeyPress:w,setRef:e=>{I.current=e}})),e("div",{className:"adyen-checkout-ctp__otp-resend-code-wrapper"},e(n,{disabled:m.isValidatingOtp,onError:_,onResendCode:V})))};export{m as default};
2
2
  //# sourceMappingURL=CtPOneTimePasswordInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CtPOneTimePasswordInput.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport { otpValidationRules } from './validate';\nimport CtPResendOtpLink from './CtPResendOtpLink';\nimport useClickToPayContext from '../../../context/useClickToPayContext';\nimport { useCoreContext } from '../../../../../../core/Context/CoreProvider';\nimport useForm from '../../../../../../utils/useForm';\nimport Field from '../../../../FormFields/Field';\nimport './CtPOneTimePasswordInput.scss';\nimport InputText from '../../../../FormFields/InputText';\n\ntype OnChangeProps = { data: CtPOneTimePasswordInputDataState; valid; errors; isValid: boolean };\n\ninterface CtPOneTimePasswordInputProps {\n hideResendOtpButton: boolean;\n disabled: boolean;\n isValidatingOtp: boolean;\n errorMessage?: string;\n onSetInputHandlers(handlers: CtPOneTimePasswordInputHandlers): void;\n onPressEnter(): Promise<void>;\n onChange({ data, valid, errors, isValid }: OnChangeProps): void;\n onResendCode(): void;\n}\n\ninterface CtPOneTimePasswordInputDataState {\n otp?: string;\n}\n\nexport type CtPOneTimePasswordInputHandlers = {\n validateInput(): void;\n};\n\nconst CtPOneTimePasswordInput = (props: CtPOneTimePasswordInputProps): h.JSX.Element => {\n const { i18n } = useCoreContext();\n const {\n configuration: { disableOtpAutoFocus }\n } = useClickToPayContext();\n\n const formSchema = ['otp'];\n const [resendOtpError, setResendOtpError] = useState<string>(null);\n const { handleChangeFor, data, triggerValidation, valid, errors, isValid, setData } = useForm<CtPOneTimePasswordInputDataState>({\n schema: formSchema,\n rules: otpValidationRules\n });\n const otpInputHandlersRef = useRef<CtPOneTimePasswordInputHandlers>({ validateInput: null });\n const inputRef = useRef<HTMLInputElement>(null);\n const [isOtpFielDirty, setIsOtpFieldDirty] = useState<boolean>(false);\n\n const validateInput = useCallback(() => {\n setIsOtpFieldDirty(true);\n triggerValidation();\n }, [triggerValidation]);\n\n /**\n * If shopper changes the value of the OTP fields, input becomes dirty\n */\n useEffect(() => {\n if (data.otp) setIsOtpFieldDirty(true);\n }, [data.otp]);\n\n useEffect(() => {\n if (!disableOtpAutoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n }, [inputRef.current, disableOtpAutoFocus]);\n\n useEffect(() => {\n otpInputHandlersRef.current.validateInput = validateInput;\n props.onSetInputHandlers(otpInputHandlersRef.current);\n }, [validateInput, props.onSetInputHandlers]);\n\n const handleOnResendOtp = useCallback(() => {\n setData('otp', '');\n setResendOtpError(null);\n if (!disableOtpAutoFocus) {\n inputRef.current.focus();\n }\n props.onResendCode();\n }, [props.onResendCode, inputRef.current, disableOtpAutoFocus]);\n\n const handleOnResendOtpError = useCallback(\n (errorCode: string) => {\n const message = i18n.get(`ctp.errors.${errorCode}`);\n if (message) setResendOtpError(message);\n },\n [i18n]\n );\n\n const handleOnKeyPress = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n void props.onPressEnter();\n }\n },\n [props.onPressEnter]\n );\n\n useEffect(() => {\n props.onChange({ data, valid, errors, isValid });\n }, [data, valid, errors]);\n\n return (\n <div className={'adyen-checkout-ctp__otp-field-wrapper'}>\n <Field\n name=\"oneTimePassword\"\n label={i18n.get('ctp.otp.fieldLabel')}\n errorMessage={isOtpFielDirty ? resendOtpError || props.errorMessage || !!errors.otp : null}\n classNameModifiers={['otp']}\n >\n <InputText\n name={'otp'}\n autocorrect={'off'}\n spellcheck={false}\n value={data.otp}\n disabled={props.disabled}\n onInput={handleChangeFor('otp', 'input')}\n onBlur={handleChangeFor('otp', 'blur')}\n onKeyPress={handleOnKeyPress}\n setRef={(ref: HTMLInputElement) => {\n inputRef.current = ref;\n }}\n />\n </Field>\n <div className={'adyen-checkout-ctp__otp-resend-code-wrapper'}>\n <CtPResendOtpLink disabled={props.isValidatingOtp} onError={handleOnResendOtpError} onResendCode={handleOnResendOtp} />\n </div>\n </div>\n );\n};\n\nexport default CtPOneTimePasswordInput;\n"],"names":["CtPOneTimePasswordInput","props","i18n","useCoreContext","configuration","disableOtpAutoFocus","useClickToPayContext","resendOtpError","setResendOtpError","useState","handleChangeFor","data","triggerValidation","valid","errors","isValid","setData","useForm","schema","rules","otpValidationRules","otpInputHandlersRef","useRef","validateInput","inputRef","isOtpFielDirty","setIsOtpFieldDirty","useCallback","useEffect","otp","current","focus","onSetInputHandlers","handleOnResendOtp","onResendCode","handleOnResendOtpError","errorCode","message","get","handleOnKeyPress","event","key","onPressEnter","onChange","h","div","className","Field","name","label","errorMessage","classNameModifiers","InputText","autocorrect","spellcheck","value","disabled","onInput","onBlur","onKeyPress","setRef","ref","CtPResendOtpLink","isValidatingOtp","onError"],"mappings":"glBAgCA,MAAMA,EAA2BC,IAC7B,MAAMC,KAAEA,GAASC,KAEbC,eAAeC,oBAAEA,IACjBC,KAGGC,EAAgBC,GAAqBC,EAAiB,OACvDC,gBAAEA,EAAeC,KAAEA,EAAIC,kBAAEA,EAAiBC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,EAAOC,QAAEA,GAAYC,EAA0C,CAC5HC,OAHe,CAAC,OAIhBC,MAAOC,IAELC,EAAsBC,EAAwC,CAAEC,cAAe,OAC/EC,EAAWF,EAAyB,OACnCG,EAAgBC,GAAsBjB,GAAkB,GAEzDc,EAAgBI,EAAY,KAC9BD,GAAmB,GACnBd,KACD,CAACA,IAKJgB,EAAU,KACFjB,EAAKkB,KAAKH,GAAmB,IAClC,CAACf,EAAKkB,MAETD,EAAU,MACDvB,GAAuBmB,EAASM,SACjCN,EAASM,QAAQC,SAEtB,CAACP,EAASM,QAASzB,IAEtBuB,EAAU,KACNP,EAAoBS,QAAQP,cAAgBA,EAC5CtB,EAAM+B,mBAAmBX,EAAoBS,UAC9C,CAACP,EAAetB,EAAM+B,qBAEzB,MAAMC,EAAoBN,EAAY,KAClCX,EAAQ,MAAO,IACfR,EAAkB,MACbH,GACDmB,EAASM,QAAQC,QAErB9B,EAAMiC,gBACP,CAACjC,EAAMiC,aAAcV,EAASM,QAASzB,IAEpC8B,EAAyBR,EAC1BS,IACG,MAAMC,EAAUnC,EAAKoC,IAAI,cAAcF,KACnCC,GAAS7B,EAAkB6B,IAEnC,CAACnC,IAGCqC,EAAmBZ,EACpBa,IACqB,UAAdA,EAAMC,KACDxC,EAAMyC,gBAGnB,CAACzC,EAAMyC,eAOX,OAJAd,EAAU,KACN3B,EAAM0C,SAAS,CAAEhC,OAAME,QAAOC,SAAQC,aACvC,CAACJ,EAAME,EAAOC,IAGb8B,EAACC,MAAAA,CAAIC,UAAW,yCACZF,EAACG,EAAAA,CACGC,KAAK,kBACLC,MAAO/C,EAAKoC,IAAI,sBAChBY,aAAczB,EAAiBlB,GAAkBN,EAAMiD,gBAAkBpC,EAAOe,IAAM,KACtFsB,mBAAoB,CAAC,QAErBP,EAACQ,EAAAA,CACGJ,KAAM,MACNK,YAAa,MACbC,YAAY,EACZC,MAAO5C,EAAKkB,IACZ2B,SAAUvD,EAAMuD,SAChBC,QAAS/C,EAAgB,MAAO,SAChCgD,OAAQhD,EAAgB,MAAO,QAC/BiD,WAAYpB,EACZqB,OAASC,IACLrC,EAASM,QAAU+B,MAI/BjB,EAACC,MAAAA,CAAIC,UAAW,+CACZF,EAACkB,EAAAA,CAAiBN,SAAUvD,EAAM8D,gBAAiBC,QAAS7B,EAAwBD,aAAcD"}
1
+ {"version":3,"file":"CtPOneTimePasswordInput.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport { otpValidationRules } from './validate';\nimport CtPResendOtpLink from './CtPResendOtpLink';\nimport useClickToPayContext from '../../../context/useClickToPayContext';\nimport { useCoreContext } from '../../../../../../core/Context/CoreProvider';\nimport useForm from '../../../../../../utils/useForm';\nimport Field from '../../../../FormFields/Field';\nimport './CtPOneTimePasswordInput.scss';\nimport InputText from '../../../../FormFields/InputText';\nimport { getErrorMessage } from '../../../../../../utils/getErrorMessage';\n\ntype OnChangeProps = { data: CtPOneTimePasswordInputDataState; valid; errors; isValid: boolean };\n\ninterface CtPOneTimePasswordInputProps {\n hideResendOtpButton: boolean;\n disabled: boolean;\n isValidatingOtp: boolean;\n errorMessage?: string;\n onSetInputHandlers(handlers: CtPOneTimePasswordInputHandlers): void;\n onPressEnter(): Promise<void>;\n onChange({ data, valid, errors, isValid }: OnChangeProps): void;\n onResendCode(): void;\n}\n\ninterface CtPOneTimePasswordInputDataState {\n otp?: string;\n}\n\nexport type CtPOneTimePasswordInputHandlers = {\n validateInput(): void;\n};\n\nconst CtPOneTimePasswordInput = (props: CtPOneTimePasswordInputProps): h.JSX.Element => {\n const { i18n } = useCoreContext();\n const {\n configuration: { disableOtpAutoFocus }\n } = useClickToPayContext();\n\n const formSchema = ['otp'];\n const [resendOtpError, setResendOtpError] = useState<string>(null);\n const { handleChangeFor, data, triggerValidation, valid, errors, isValid, setData } = useForm<CtPOneTimePasswordInputDataState>({\n schema: formSchema,\n rules: otpValidationRules\n });\n const otpInputHandlersRef = useRef<CtPOneTimePasswordInputHandlers>({ validateInput: null });\n const inputRef = useRef<HTMLInputElement>(null);\n const [isOtpFielDirty, setIsOtpFieldDirty] = useState<boolean>(false);\n\n const validateInput = useCallback(() => {\n setIsOtpFieldDirty(true);\n triggerValidation();\n }, [triggerValidation]);\n\n /**\n * If shopper changes the value of the OTP fields, input becomes dirty\n */\n useEffect(() => {\n if (data.otp) setIsOtpFieldDirty(true);\n }, [data.otp]);\n\n useEffect(() => {\n if (!disableOtpAutoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n }, [inputRef.current, disableOtpAutoFocus]);\n\n useEffect(() => {\n otpInputHandlersRef.current.validateInput = validateInput;\n props.onSetInputHandlers(otpInputHandlersRef.current);\n }, [validateInput, props.onSetInputHandlers]);\n\n const handleOnResendOtp = useCallback(() => {\n setData('otp', '');\n setResendOtpError(null);\n if (!disableOtpAutoFocus) {\n inputRef.current.focus();\n }\n props.onResendCode();\n }, [props.onResendCode, inputRef.current, disableOtpAutoFocus]);\n\n const handleOnResendOtpError = useCallback(\n (errorCode: string) => {\n const message = i18n.get(`ctp.errors.${errorCode}`);\n if (message) setResendOtpError(message);\n },\n [i18n]\n );\n\n const handleOnKeyPress = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n void props.onPressEnter();\n }\n },\n [props.onPressEnter]\n );\n\n useEffect(() => {\n props.onChange({ data, valid, errors, isValid });\n }, [data, valid, errors]);\n\n\n const getOtpErrorMessage = useCallback(() => {\n if (!isOtpFielDirty) return null;\n\n return resendOtpError || props.errorMessage || getErrorMessage(i18n, errors.otp, i18n.get('ctp.otp.fieldLabel'));\n }, [isOtpFielDirty, resendOtpError, props.errorMessage, errors.otp, i18n]);\n\n return (\n <div className={'adyen-checkout-ctp__otp-field-wrapper'}>\n <Field\n name=\"oneTimePassword\"\n label={i18n.get('ctp.otp.fieldLabel')}\n errorMessage={getOtpErrorMessage()}\n classNameModifiers={['otp']}\n >\n <InputText\n name={'otp'}\n autocorrect={'off'}\n spellcheck={false}\n value={data.otp}\n disabled={props.disabled}\n onInput={handleChangeFor('otp', 'input')}\n onBlur={handleChangeFor('otp', 'blur')}\n onKeyPress={handleOnKeyPress}\n setRef={(ref: HTMLInputElement) => {\n inputRef.current = ref;\n }}\n />\n </Field>\n <div className={'adyen-checkout-ctp__otp-resend-code-wrapper'}>\n <CtPResendOtpLink disabled={props.isValidatingOtp} onError={handleOnResendOtpError} onResendCode={handleOnResendOtp} />\n </div>\n </div>\n );\n};\n\nexport default CtPOneTimePasswordInput;\n"],"names":["CtPOneTimePasswordInput","props","i18n","useCoreContext","configuration","disableOtpAutoFocus","useClickToPayContext","resendOtpError","setResendOtpError","useState","handleChangeFor","data","triggerValidation","valid","errors","isValid","setData","useForm","schema","rules","otpValidationRules","otpInputHandlersRef","useRef","validateInput","inputRef","isOtpFielDirty","setIsOtpFieldDirty","useCallback","useEffect","otp","current","focus","onSetInputHandlers","handleOnResendOtp","onResendCode","handleOnResendOtpError","errorCode","message","get","handleOnKeyPress","event","key","onPressEnter","onChange","getOtpErrorMessage","errorMessage","getErrorMessage","h","div","className","Field","name","label","classNameModifiers","InputText","autocorrect","spellcheck","value","disabled","onInput","onBlur","onKeyPress","setRef","ref","CtPResendOtpLink","isValidatingOtp","onError"],"mappings":"6pBAiCA,MAAMA,EAA2BC,IAC7B,MAAMC,KAAEA,GAASC,KAEbC,eAAeC,oBAAEA,IACjBC,KAGGC,EAAgBC,GAAqBC,EAAiB,OACvDC,gBAAEA,EAAeC,KAAEA,EAAIC,kBAAEA,EAAiBC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,EAAOC,QAAEA,GAAYC,EAA0C,CAC5HC,OAHe,CAAC,OAIhBC,MAAOC,IAELC,EAAsBC,EAAwC,CAAEC,cAAe,OAC/EC,EAAWF,EAAyB,OACnCG,EAAgBC,GAAsBjB,GAAkB,GAEzDc,EAAgBI,EAAY,KAC9BD,GAAmB,GACnBd,KACD,CAACA,IAKJgB,EAAU,KACFjB,EAAKkB,KAAKH,GAAmB,IAClC,CAACf,EAAKkB,MAETD,EAAU,MACDvB,GAAuBmB,EAASM,SACjCN,EAASM,QAAQC,SAEtB,CAACP,EAASM,QAASzB,IAEtBuB,EAAU,KACNP,EAAoBS,QAAQP,cAAgBA,EAC5CtB,EAAM+B,mBAAmBX,EAAoBS,UAC9C,CAACP,EAAetB,EAAM+B,qBAEzB,MAAMC,EAAoBN,EAAY,KAClCX,EAAQ,MAAO,IACfR,EAAkB,MACbH,GACDmB,EAASM,QAAQC,QAErB9B,EAAMiC,gBACP,CAACjC,EAAMiC,aAAcV,EAASM,QAASzB,IAEpC8B,EAAyBR,EAC1BS,IACG,MAAMC,EAAUnC,EAAKoC,IAAI,cAAcF,KACnCC,GAAS7B,EAAkB6B,IAEnC,CAACnC,IAGCqC,EAAmBZ,EACpBa,IACqB,UAAdA,EAAMC,KACDxC,EAAMyC,gBAGnB,CAACzC,EAAMyC,eAGXd,EAAU,KACN3B,EAAM0C,SAAS,CAAEhC,OAAME,QAAOC,SAAQC,aACvC,CAACJ,EAAME,EAAOC,IAGjB,MAAM8B,EAAqBjB,EAAY,IAC9BF,EAEElB,GAAkBN,EAAM4C,cAAgBC,EAAgB5C,EAAMY,EAAOe,IAAK3B,EAAKoC,IAAI,uBAF9D,KAG7B,CAACb,EAAgBlB,EAAgBN,EAAM4C,aAAc/B,EAAOe,IAAK3B,IAEpE,OACI6C,EAACC,MAAAA,CAAIC,UAAW,yCACZF,EAACG,EAAAA,CACGC,KAAK,kBACLC,MAAOlD,EAAKoC,IAAI,sBAChBO,aAAcD,IACdS,mBAAoB,CAAC,QAErBN,EAACO,EAAAA,CACGH,KAAM,MACNI,YAAa,MACbC,YAAY,EACZC,MAAO9C,EAAKkB,IACZ6B,SAAUzD,EAAMyD,SAChBC,QAASjD,EAAgB,MAAO,SAChCkD,OAAQlD,EAAgB,MAAO,QAC/BmD,WAAYtB,EACZuB,OAASC,IACLvC,EAASM,QAAUiC,MAI/BhB,EAACC,MAAAA,CAAIC,UAAW,+CACZF,EAACiB,EAAAA,CAAiBN,SAAUzD,EAAMgE,gBAAiBC,QAAS/B,EAAwBD,aAAcD"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../../../../external/preact/dist/preact.js";import{useState as t,useEffect as o,useCallback as r}from"../../../../../../external/preact/hooks/dist/hooks.js";import s from"../../../context/useClickToPayContext.js";import n from"../../../../../../_virtual/index.js";import{useCoreContext as c}from"../../../../../../core/Context/CoreProvider.js";import a from"../../../../Icon/Icon.js";import{isSrciError as i}from"../../../services/utils.js";import{PREFIX as d}from"../../../../Icon/constants.js";import l from"../../../../Button/Button.js";const p=({onError:p,onResendCode:m,disabled:u})=>{const[f,k]=t(null),[h,j]=t(!1),{i18n:C}=c(),{startIdentityValidation:v}=s();o(()=>{let e=null;return f>0&&(e=setTimeout(()=>k(f-1),1e3)),()=>clearTimeout(e)},[f]),o(()=>{let e=null;return h&&(e=setTimeout(()=>{j(!1),k(60)},2e3)),()=>clearTimeout(e)},[h]);const y=r(async e=>{e.preventDefault();try{m(),j(!0),await v()}catch(e){if(k(0),j(!1),!i(e))return void console.error(e);p(e.reason)}},[v,p,m]);return h?e("div",{className:"adyen-checkout-ctp__otp-resend-code--confirmation"},C.get("ctp.otp.codeResent"),e(a,{type:`${d}checkmark`,height:14,width:14})):f>0?e("div",{className:"adyen-checkout-ctp__otp-resend-code--disabled"},C.get("ctp.otp.resendCode")," -"," ",e("span",{className:"adyen-checkout-ctp__otp-resend-code-counter"}," ",f>0&&`${f}s`," ")):e(l,{classNameModifiers:[n("otp-resend-code",{"otp-resend-code--disabled":u})],onClick:y,variant:"link",inline:!0,disabled:u},C.get("ctp.otp.resendCode"))};export{p as default};
1
+ import{createElement as e}from"../../../../../../external/preact/dist/preact.js";import{useState as t,useEffect as o,useCallback as r}from"../../../../../../external/preact/hooks/dist/hooks.js";import s from"../../../context/useClickToPayContext.js";import n from"../../../../../../_virtual/index.js";import{useCoreContext as a}from"../../../../../../core/Context/CoreProvider.js";import c from"../../../../Icon/Icon.js";import{isSrciError as i}from"../../../services/utils.js";import{PREFIX as d}from"../../../../Icon/constants.js";import l from"../../../../Button/Button.js";const m=({onError:m,onResendCode:p,disabled:u})=>{const[f,k]=t(null),[h,j]=t(!1),{i18n:C}=a(),{startIdentityValidation:v}=s();o(()=>{let e=null;return f>0&&(e=setTimeout(()=>k(f-1),1e3)),()=>clearTimeout(e)},[f]),o(()=>{let e=null;return h&&(e=setTimeout(()=>{j(!1),k(60)},2e3)),()=>clearTimeout(e)},[h]);const y=r(async e=>{e.preventDefault();try{p(),j(!0),await v()}catch(e){if(k(0),j(!1),!i(e))return void console.error(e);m(e.reason)}},[v,m,p]);return h?e("div",{role:"alert",className:"adyen-checkout-ctp__otp-resend-code--confirmation"},C.get("ctp.otp.codeResent"),e(c,{type:`${d}checkmark_black`,height:14,width:14})):f>0?e("div",{role:"timer",className:"adyen-checkout-ctp__otp-resend-code--disabled"},C.get("ctp.otp.resendCode")," -"," ",e("span",{className:"adyen-checkout-ctp__otp-resend-code-counter"}," ",f>0&&`${f}s`," ")):e(l,{classNameModifiers:[n("otp-resend-code",{"otp-resend-code--disabled":u})],onClick:y,variant:"link",inline:!0,disabled:u},C.get("ctp.otp.resendCode"))};export{m as default};
2
2
  //# sourceMappingURL=CtPResendOtpLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CtPResendOtpLink.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport useClickToPayContext from '../../../context/useClickToPayContext';\nimport classnames from 'classnames';\nimport { useCoreContext } from '../../../../../../core/Context/CoreProvider';\nimport Icon from '../../../../Icon';\nimport { isSrciError } from '../../../services/utils';\nimport { PREFIX } from '../../../../Icon/constants';\nimport Button from '../../../../Button';\n\nconst CONFIRMATION_SHOWING_TIME = 2000;\n\ninterface CtPResendOtpLinkProps {\n onError(errorCode: string): void;\n onResendCode(): void;\n disabled: boolean;\n}\n\nconst CtPResendOtpLink = ({ onError, onResendCode, disabled }: CtPResendOtpLinkProps): h.JSX.Element => {\n const [counter, setCounter] = useState<number>(null);\n const [showConfirmation, setShowConfirmation] = useState<boolean>(false);\n const { i18n } = useCoreContext();\n const { startIdentityValidation } = useClickToPayContext();\n\n useEffect(() => {\n let timeout = null;\n if (counter > 0) {\n timeout = setTimeout(() => setCounter(counter - 1), 1000);\n }\n return () => clearTimeout(timeout);\n }, [counter]);\n\n useEffect(() => {\n let timeout = null;\n\n if (showConfirmation) {\n timeout = setTimeout(() => {\n setShowConfirmation(false);\n setCounter(60);\n }, CONFIRMATION_SHOWING_TIME);\n }\n return () => clearTimeout(timeout);\n }, [showConfirmation]);\n\n const handleResendCodeClick = useCallback(\n async event => {\n event.preventDefault();\n\n try {\n onResendCode();\n setShowConfirmation(true);\n await startIdentityValidation();\n } catch (error: unknown) {\n setCounter(0);\n setShowConfirmation(false);\n\n if (!isSrciError(error)) {\n console.error(error);\n return;\n }\n\n onError(error.reason);\n }\n },\n [startIdentityValidation, onError, onResendCode]\n );\n\n if (showConfirmation) {\n return (\n <div className=\"adyen-checkout-ctp__otp-resend-code--confirmation\">\n {i18n.get('ctp.otp.codeResent')}\n <Icon type={`${PREFIX}checkmark`} height={14} width={14} />\n </div>\n );\n }\n\n if (counter > 0) {\n return (\n <div className=\"adyen-checkout-ctp__otp-resend-code--disabled\">\n {i18n.get('ctp.otp.resendCode')} -{' '}\n <span className=\"adyen-checkout-ctp__otp-resend-code-counter\"> {counter > 0 && `${counter}s`} </span>\n </div>\n );\n }\n\n return (\n <Button\n classNameModifiers={[classnames('otp-resend-code', { 'otp-resend-code--disabled': disabled })]}\n onClick={handleResendCodeClick}\n variant=\"link\"\n inline={true}\n disabled={disabled}\n >\n {i18n.get('ctp.otp.resendCode')}\n </Button>\n );\n};\n\nexport default CtPResendOtpLink;\n"],"names":["CtPResendOtpLink","onError","onResendCode","disabled","counter","setCounter","useState","showConfirmation","setShowConfirmation","i18n","useCoreContext","startIdentityValidation","useClickToPayContext","useEffect","timeout","setTimeout","clearTimeout","handleResendCodeClick","useCallback","async","event","preventDefault","error","isSrciError","console","reason","h","div","className","get","Icon","type","PREFIX","height","width","span","Button","classNameModifiers","classnames","onClick","variant","inline"],"mappings":"ikBAUA,MAQMA,EAAmB,EAAGC,UAASC,eAAcC,eAC/C,MAAOC,EAASC,GAAcC,EAAiB,OACxCC,EAAkBC,GAAuBF,GAAkB,IAC5DG,KAAEA,GAASC,KACXC,wBAAEA,GAA4BC,IAEpCC,EAAU,KACN,IAAIC,EAAU,KAId,OAHIV,EAAU,IACVU,EAAUC,WAAW,IAAMV,EAAWD,EAAU,GAAI,MAEjD,IAAMY,aAAaF,IAC3B,CAACV,IAEJS,EAAU,KACN,IAAIC,EAAU,KAQd,OANIP,IACAO,EAAUC,WAAW,KACjBP,GAAoB,GACpBH,EAAW,KA5BO,MA+BnB,IAAMW,aAAaF,IAC3B,CAACP,IAEJ,MAAMU,EAAwBC,EAC1BC,MAAMC,IACFA,EAAMC,iBAEN,IACInB,IACAM,GAAoB,SACdG,GACV,CAAE,MAAOW,GAIL,GAHAjB,EAAW,GACXG,GAAoB,IAEfe,EAAYD,GAEb,YADAE,QAAQF,MAAMA,GAIlBrB,EAAQqB,EAAMG,OAClB,GAEJ,CAACd,EAAyBV,EAASC,IAGvC,OAAIK,EAEImB,EAACC,MAAAA,CAAIC,UAAU,qDACVnB,EAAKoB,IAAI,sBACVH,EAACI,EAAAA,CAAKC,KAAM,GAAGC,aAAmBC,OAAQ,GAAIC,MAAO,MAK7D9B,EAAU,EAENsB,EAACC,MAAAA,CAAIC,UAAU,iDACVnB,EAAKoB,IAAI,sBAAsB,KAAG,IACnCH,EAACS,OAAAA,CAAKP,UAAU,+CAA8C,IAAExB,EAAU,GAAK,GAAGA,KAAW,MAMrGsB,EAACU,EAAAA,CACGC,mBAAoB,CAACC,EAAW,kBAAmB,CAAE,4BAA6BnC,KAClFoC,QAAStB,EACTuB,QAAQ,OACRC,QAAQ,EACRtC,SAAUA,GAETM,EAAKoB,IAAI"}
1
+ {"version":3,"file":"CtPResendOtpLink.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport useClickToPayContext from '../../../context/useClickToPayContext';\nimport classnames from 'classnames';\nimport { useCoreContext } from '../../../../../../core/Context/CoreProvider';\nimport Icon from '../../../../Icon';\nimport { isSrciError } from '../../../services/utils';\nimport { PREFIX } from '../../../../Icon/constants';\nimport Button from '../../../../Button';\n\nconst CONFIRMATION_SHOWING_TIME = 2000;\n\ninterface CtPResendOtpLinkProps {\n onError(errorCode: string): void;\n onResendCode(): void;\n disabled: boolean;\n}\n\nconst CtPResendOtpLink = ({ onError, onResendCode, disabled }: CtPResendOtpLinkProps): h.JSX.Element => {\n const [counter, setCounter] = useState<number>(null);\n const [showConfirmation, setShowConfirmation] = useState<boolean>(false);\n const { i18n } = useCoreContext();\n const { startIdentityValidation } = useClickToPayContext();\n\n useEffect(() => {\n let timeout = null;\n if (counter > 0) {\n timeout = setTimeout(() => setCounter(counter - 1), 1000);\n }\n return () => clearTimeout(timeout);\n }, [counter]);\n\n useEffect(() => {\n let timeout = null;\n\n if (showConfirmation) {\n timeout = setTimeout(() => {\n setShowConfirmation(false);\n setCounter(60);\n }, CONFIRMATION_SHOWING_TIME);\n }\n return () => clearTimeout(timeout);\n }, [showConfirmation]);\n\n const handleResendCodeClick = useCallback(\n async event => {\n event.preventDefault();\n\n try {\n onResendCode();\n setShowConfirmation(true);\n await startIdentityValidation();\n } catch (error: unknown) {\n setCounter(0);\n setShowConfirmation(false);\n\n if (!isSrciError(error)) {\n console.error(error);\n return;\n }\n\n onError(error.reason);\n }\n },\n [startIdentityValidation, onError, onResendCode]\n );\n\n if (showConfirmation) {\n return (\n <div role=\"alert\" className=\"adyen-checkout-ctp__otp-resend-code--confirmation\">\n {i18n.get('ctp.otp.codeResent')}\n <Icon type={`${PREFIX}checkmark_black`} height={14} width={14} />\n </div>\n );\n }\n\n if (counter > 0) {\n return (\n <div role=\"timer\" className=\"adyen-checkout-ctp__otp-resend-code--disabled\">\n {i18n.get('ctp.otp.resendCode')} -{' '}\n <span className=\"adyen-checkout-ctp__otp-resend-code-counter\"> {counter > 0 && `${counter}s`} </span>\n </div>\n );\n }\n\n return (\n <Button\n classNameModifiers={[classnames('otp-resend-code', { 'otp-resend-code--disabled': disabled })]}\n onClick={handleResendCodeClick}\n variant=\"link\"\n inline={true}\n disabled={disabled}\n >\n {i18n.get('ctp.otp.resendCode')}\n </Button>\n );\n};\n\nexport default CtPResendOtpLink;\n"],"names":["CtPResendOtpLink","onError","onResendCode","disabled","counter","setCounter","useState","showConfirmation","setShowConfirmation","i18n","useCoreContext","startIdentityValidation","useClickToPayContext","useEffect","timeout","setTimeout","clearTimeout","handleResendCodeClick","useCallback","async","event","preventDefault","error","isSrciError","console","reason","h","div","role","className","get","Icon","type","PREFIX","height","width","span","Button","classNameModifiers","classnames","onClick","variant","inline"],"mappings":"ikBAUA,MAQMA,EAAmB,EAAGC,UAASC,eAAcC,eAC/C,MAAOC,EAASC,GAAcC,EAAiB,OACxCC,EAAkBC,GAAuBF,GAAkB,IAC5DG,KAAEA,GAASC,KACXC,wBAAEA,GAA4BC,IAEpCC,EAAU,KACN,IAAIC,EAAU,KAId,OAHIV,EAAU,IACVU,EAAUC,WAAW,IAAMV,EAAWD,EAAU,GAAI,MAEjD,IAAMY,aAAaF,IAC3B,CAACV,IAEJS,EAAU,KACN,IAAIC,EAAU,KAQd,OANIP,IACAO,EAAUC,WAAW,KACjBP,GAAoB,GACpBH,EAAW,KA5BO,MA+BnB,IAAMW,aAAaF,IAC3B,CAACP,IAEJ,MAAMU,EAAwBC,EAC1BC,MAAMC,IACFA,EAAMC,iBAEN,IACInB,IACAM,GAAoB,SACdG,GACV,CAAE,MAAOW,GAIL,GAHAjB,EAAW,GACXG,GAAoB,IAEfe,EAAYD,GAEb,YADAE,QAAQF,MAAMA,GAIlBrB,EAAQqB,EAAMG,OAClB,GAEJ,CAACd,EAAyBV,EAASC,IAGvC,OAAIK,EAEImB,EAACC,MAAAA,CAAIC,KAAK,QAAQC,UAAU,qDACvBpB,EAAKqB,IAAI,sBACVJ,EAACK,EAAAA,CAAKC,KAAM,GAAGC,mBAAyBC,OAAQ,GAAIC,MAAO,MAKnE/B,EAAU,EAENsB,EAACC,MAAAA,CAAIC,KAAK,QAAQC,UAAU,iDACvBpB,EAAKqB,IAAI,sBAAsB,KAAG,IACnCJ,EAACU,OAAAA,CAAKP,UAAU,+CAA8C,IAAEzB,EAAU,GAAK,GAAGA,KAAW,MAMrGsB,EAACW,EAAAA,CACGC,mBAAoB,CAACC,EAAW,kBAAmB,CAAE,4BAA6BpC,KAClFqC,QAASvB,EACTwB,QAAQ,OACRC,QAAQ,EACRvC,SAAUA,GAETM,EAAKqB,IAAI"}
@@ -1,2 +1,2 @@
1
- const e={otp:{validate:e=>!!e&&e.length>0,errorMessage:"",modes:["blur"]},default:{validate:e=>!!e&&e.length>0,errorMessage:"",modes:["blur"]}};export{e as otpValidationRules};
1
+ const e={otp:{validate:e=>!!e&&e.length>0,errorMessage:"field.error.required",modes:["blur"]},default:{validate:e=>!!e&&e.length>0,errorMessage:"field.error.required",modes:["blur"]}};export{e as otpValidationRules};
2
2
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/validate.ts"],"sourcesContent":["import { ValidatorRules } from '../../../../../../utils/Validator/types';\n\nexport const otpValidationRules: ValidatorRules = {\n otp: {\n validate: value => !!value && value.length > 0,\n errorMessage: '',\n modes: ['blur']\n },\n default: {\n validate: value => !!value && value.length > 0,\n errorMessage: '',\n modes: ['blur']\n }\n};\n"],"names":["otpValidationRules","otp","validate","value","length","errorMessage","modes","default"],"mappings":"MAEaA,EAAqC,CAC9CC,IAAK,CACDC,SAAUC,KAAWA,GAASA,EAAMC,OAAS,EAC7CC,aAAc,GACdC,MAAO,CAAC,SAEZC,QAAS,CACLL,SAAUC,KAAWA,GAASA,EAAMC,OAAS,EAC7CC,aAAc,GACdC,MAAO,CAAC"}
1
+ {"version":3,"file":"validate.js","sources":["../../../../../../../../src/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/validate.ts"],"sourcesContent":["import { ValidatorRules } from '../../../../../../utils/Validator/types';\n\nexport const otpValidationRules: ValidatorRules = {\n otp: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'field.error.required',\n modes: ['blur']\n },\n default: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'field.error.required',\n modes: ['blur']\n }\n};\n"],"names":["otpValidationRules","otp","validate","value","length","errorMessage","modes","default"],"mappings":"MAEaA,EAAqC,CAC9CC,IAAK,CACDC,SAAUC,KAAWA,GAASA,EAAMC,OAAS,EAC7CC,aAAc,uBACdC,MAAO,CAAC,SAEZC,QAAS,CACLL,SAAUC,KAAWA,GAASA,EAAMC,OAAS,EAC7CC,aAAc,uBACdC,MAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClickToPayService.js","sources":["../../../../../../src/components/internal/ClickToPay/services/ClickToPayService.ts"],"sourcesContent":["import { ISrcInitiator } from './sdks/AbstractSrcInitiator';\nimport {\n CallbackStateSubscriber,\n IClickToPayService,\n IdentityLookupParams,\n ClickToPayCheckoutPayload,\n SrcProfileWithScheme,\n SchemesConfiguration,\n IdentityValidationData\n} from './types';\nimport { ISrcSdkLoader } from './sdks/SrcSdkLoader';\nimport { createCheckoutPayloadBasedOnScheme, createShopperCardsList, CTP_IFRAME_NAME } from './utils';\nimport { SrciIdentityLookupResponse, SrciIsRecognizedResponse, SrcProfile } from './sdks/types';\nimport SrciError from './sdks/SrciError';\nimport { SchemeNames } from './sdks/utils';\nimport ShopperCard from '../models/ShopperCard';\nimport uuidv4 from '../../../../utils/uuid';\nimport AdyenCheckoutError from '../../../../core/Errors/AdyenCheckoutError';\nimport { isFulfilled, isRejected } from '../../../../utils/promise-util';\nimport TimeoutError from '../errors/TimeoutError';\nimport { executeWithTimeout } from './execute-with-timeout';\nimport type { AnalyticsModule } from '../../../../types/global-types';\n\nexport enum CtpState {\n Idle = 'Idle',\n Loading = 'Loading',\n ShopperIdentified = 'ShopperIdentified',\n OneTimePassword = 'OneTimePassword',\n Ready = 'Ready',\n Login = 'Login',\n NotAvailable = 'NotAvailable'\n}\n\nclass ClickToPayService implements IClickToPayService {\n private readonly sdkLoader: ISrcSdkLoader;\n private readonly schemesConfig: SchemesConfiguration;\n private readonly shopperIdentity?: IdentityLookupParams;\n private readonly environment: string;\n private readonly analytics: AnalyticsModule;\n\n private readonly onTimeout?: (error: TimeoutError) => void;\n\n /**\n * Mandatory unique ID passed to all the networks (Click to Pay systems), used to track user journey\n */\n private readonly srciTransactionId: string = uuidv4();\n\n private sdks: ISrcInitiator[];\n private validationSchemeSdk: ISrcInitiator = null;\n private stateSubscriber: CallbackStateSubscriber;\n\n public state: CtpState = CtpState.Idle;\n public shopperCards: ShopperCard[] = null;\n public identityValidationData: IdentityValidationData = null;\n\n /**\n * Indicates if the shopper opted for saving cookies during the transaction\n */\n public storeCookies = false;\n\n constructor(\n schemesConfig: SchemesConfiguration,\n sdkLoader: ISrcSdkLoader,\n environment: string,\n analytics: AnalyticsModule,\n shopperIdentity?: IdentityLookupParams,\n onTimeout?: (error: TimeoutError) => void\n ) {\n this.sdkLoader = sdkLoader;\n this.schemesConfig = schemesConfig;\n this.shopperIdentity = shopperIdentity;\n this.environment = environment;\n this.onTimeout = onTimeout;\n this.analytics = analytics;\n }\n\n public get shopperAccountFound(): boolean {\n return [CtpState.Ready, CtpState.ShopperIdentified].includes(this.state);\n }\n\n public get schemes(): string[] {\n return this.sdkLoader.schemes;\n }\n\n public updateStoreCookiesConsent(shouldStore: boolean) {\n this.storeCookies = shouldStore;\n }\n\n public async initialize(): Promise<void> {\n this.setState(CtpState.Loading);\n\n try {\n this.sdks = await this.sdkLoader.load(this.environment, this.analytics);\n await this.initiateSdks();\n\n const { recognized = false, idTokens = null } = await this.verifyIfShopperIsRecognized();\n\n if (recognized) {\n await this.getShopperProfile(idTokens);\n this.setState(CtpState.Ready);\n return;\n }\n\n if (!this.shopperIdentity) {\n this.setState(CtpState.NotAvailable);\n return;\n }\n\n const { isEnrolled } = await this.verifyIfShopperIsEnrolled(this.shopperIdentity);\n if (isEnrolled) {\n this.setState(CtpState.ShopperIdentified);\n return;\n }\n\n this.setState(CtpState.NotAvailable);\n } catch (error) {\n if ((error instanceof SrciError && error?.reason === 'REQUEST_TIMEOUT') || error instanceof TimeoutError) {\n this.handleTimeout(error);\n } else if (error instanceof SrciError) {\n console.warn(`Error at ClickToPayService # init: ${error.toString()}`);\n } else {\n console.warn(error);\n }\n\n this.setState(CtpState.NotAvailable);\n }\n }\n\n /**\n * Set the callback for notifying when the CtPState changes\n */\n public subscribeOnStateChange(callback: CallbackStateSubscriber): void {\n this.stateSubscriber = callback;\n }\n\n /**\n * Initiates Consumer Identity validation with one Click to Pay System.\n * The Click to Pay System sends a one-time-password (OTP) to the registered email address or mobile number.\n **/\n public async startIdentityValidation(): Promise<void> {\n if (!this.validationSchemeSdk) {\n throw Error('startIdentityValidation: No ValidationSDK set for the validation process');\n }\n try {\n const { maskedValidationChannel } = await this.validationSchemeSdk.initiateIdentityValidation();\n\n this.identityValidationData = {\n maskedShopperContact: maskedValidationChannel.replace(/\\*/g, '•'),\n selectedNetwork: SchemeNames[this.validationSchemeSdk.schemeName]\n };\n\n this.setState(CtpState.OneTimePassword);\n } catch (error: unknown) {\n // If there is an error when 'startIdentityValidation' (Ex: account is blocked), we reset the scheme chosen to perform this step\n this.validationSchemeSdk = null;\n throw error;\n }\n }\n\n /**\n * Completes the validation of the Shopper by evaluating the supplied OTP.\n */\n public async finishIdentityValidation(otpCode: string): Promise<void> {\n if (!this.validationSchemeSdk) {\n throw Error('finishIdentityValidation: No ValidationSDK set for the validation process');\n }\n\n const validationToken = await this.validationSchemeSdk.completeIdentityValidation(otpCode);\n await this.getShopperProfile([validationToken.idToken]);\n this.setState(CtpState.Ready);\n this.validationSchemeSdk = null;\n }\n\n /**\n * This method performs checkout using the selected card\n */\n public async checkout(card: ShopperCard): Promise<ClickToPayCheckoutPayload> {\n if (!card) {\n throw Error('ClickToPayService # checkout: Missing card data');\n }\n\n const checkoutSdk = this.sdks.find(sdk => sdk.schemeName === card.scheme);\n\n const checkoutResponse = await checkoutSdk.checkout({\n srcDigitalCardId: card.srcDigitalCardId,\n srcCorrelationId: card.srcCorrelationId,\n ...(card.isDcfPopupEmbedded && { windowRef: window.frames[CTP_IFRAME_NAME] }),\n ...(this.storeCookies && { complianceSettings: { complianceResources: [{ complianceType: 'REMEMBER_ME', uri: '' }] } })\n });\n\n if (checkoutResponse.dcfActionCode !== 'COMPLETE') {\n throw new AdyenCheckoutError(\n 'ERROR',\n `Checkout through Scheme DCF did not complete. DCF Action code received: ${checkoutResponse.dcfActionCode}`\n );\n }\n\n return createCheckoutPayloadBasedOnScheme(card, checkoutResponse, this.environment);\n }\n\n /**\n * Call the 'unbindAppInstance()' method of each SRC SDK in order to remove the shopper cookies.\n * Besides, it deletes all information stored about the shopper.\n */\n public async logout(): Promise<void> {\n if (!this.sdks) {\n throw new AdyenCheckoutError('ERROR', 'ClickToPayService is not initialized');\n }\n\n try {\n const logoutPromises = this.sdks.map(sdk => sdk.unbindAppInstance());\n await Promise.all(logoutPromises);\n } catch (error) {\n if (error instanceof SrciError) console.warn(`Error at ClickToPayService # logout: ${error.toString()}`);\n else console.warn(error);\n }\n\n this.shopperCards = null;\n this.identityValidationData = null;\n this.validationSchemeSdk = null;\n\n this.setState(CtpState.Login);\n }\n\n /**\n * Call the 'identityLookup()' method of each SRC SDK in order to verify if the shopper has an account.\n *\n * Based on the responses from the Click to Pay Systems, we should do the validation process using the SDK that\n * that responds faster with 'consumerPresent=true'\n */\n public verifyIfShopperIsEnrolled(shopperIdentity: IdentityLookupParams): Promise<{ isEnrolled: boolean }> {\n const { shopperEmail } = shopperIdentity;\n\n return new Promise((resolve, reject) => {\n const lookupPromises = this.sdks.map(sdk => {\n const identityLookupPromise = executeWithTimeout<SrciIdentityLookupResponse>(\n () => sdk.identityLookup({ identityValue: shopperEmail, type: 'email' }),\n 5000,\n new TimeoutError({\n source: 'identityLookup',\n scheme: sdk.schemeName,\n isTimeoutTriggeredBySchemeSdk: false\n })\n );\n\n return identityLookupPromise\n .then(response => {\n if (response.consumerPresent && !this.validationSchemeSdk) {\n this.setSdkForPerformingShopperIdentityValidation(sdk);\n resolve({ isEnrolled: true });\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n void Promise.allSettled(lookupPromises).then(() => {\n resolve({ isEnrolled: false });\n });\n });\n }\n\n private setState(state: CtpState): void {\n this.state = state;\n this.stateSubscriber?.(this.state);\n }\n\n private setSdkForPerformingShopperIdentityValidation(sdk: ISrcInitiator) {\n this.validationSchemeSdk = sdk;\n }\n\n private handleTimeout(error: SrciError | TimeoutError) {\n // If the timeout error was thrown directly by the scheme SDK, we convert it to TimeoutError\n // If the timeout error was thrown by our internal timeout mechanism, we don't do anything\n const timeoutError =\n error instanceof SrciError\n ? new TimeoutError({ source: error.source, scheme: error.scheme, isTimeoutTriggeredBySchemeSdk: true })\n : error;\n\n if (timeoutError.scheme === 'visa') {\n timeoutError.setCorrelationId(window.VISA_SDK?.correlationId);\n\n // Visa srciDpaId must be passed when there is no correlation ID available\n if (window.VISA_SDK?.correlationId) window.VISA_SDK?.buildClientProfile?.();\n else window.VISA_SDK?.buildClientProfile?.(this.schemesConfig.visa.srciDpaId);\n }\n this.onTimeout?.(timeoutError);\n }\n\n /**\n * Based on the given 'idToken', this method goes through each SRCi SDK and fetches the shopper\n * profile with his cards.\n */\n private async getShopperProfile(idTokens: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const srcProfilesPromises = this.sdks.map(sdk => sdk.getSrcProfile(idTokens));\n\n void Promise.allSettled(srcProfilesPromises).then(srcProfilesResponses => {\n if (srcProfilesResponses.every(isRejected)) {\n reject(srcProfilesResponses[0].reason);\n }\n\n const createProfileWithScheme = (promiseResult: PromiseSettledResult<SrcProfile>, index) =>\n isFulfilled(promiseResult) && { ...promiseResult.value, scheme: this.sdks[index].schemeName };\n\n const profilesWithScheme: SrcProfileWithScheme[] = srcProfilesResponses.map(createProfileWithScheme).filter(profile => !!profile);\n\n this.shopperCards = createShopperCardsList(profilesWithScheme);\n resolve();\n });\n });\n }\n\n /**\n * Calls the 'isRecognized()' method of each SRC SDK in order to verify if the shopper is\n * recognized on the device. The shopper is recognized if he/she has the Cookies stored\n * on their browser\n */\n private verifyIfShopperIsRecognized(): Promise<SrciIsRecognizedResponse> {\n return new Promise((resolve, reject) => {\n const promises = this.sdks.map(sdk => {\n const isRecognizedPromise = executeWithTimeout<SrciIsRecognizedResponse>(\n () => sdk.isRecognized(),\n 5000,\n new TimeoutError({\n source: 'isRecognized',\n scheme: sdk.schemeName,\n isTimeoutTriggeredBySchemeSdk: false\n })\n );\n\n return isRecognizedPromise\n .then(response => {\n if (response.recognized) resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n\n // If the 'resolve' didn't happen until this point, then shopper is not recognized\n void Promise.allSettled(promises).then(() => {\n resolve({ recognized: false });\n });\n });\n }\n\n private initiateSdks(): Promise<void[]> {\n const initPromises = this.sdks.map(sdk => {\n const cfg = this.schemesConfig[sdk.schemeName];\n\n return executeWithTimeout<void>(\n () => sdk.init(cfg, this.srciTransactionId),\n 5000,\n new TimeoutError({\n source: 'init',\n scheme: sdk.schemeName,\n isTimeoutTriggeredBySchemeSdk: false\n })\n );\n });\n\n return Promise.all(initPromises);\n }\n}\n\nexport default ClickToPayService;\n"],"names":["CtpState","ClickToPayService","shopperAccountFound","includes","this","state","schemes","sdkLoader","updateStoreCookiesConsent","shouldStore","storeCookies","initialize","setState","sdks","load","environment","analytics","initiateSdks","recognized","idTokens","verifyIfShopperIsRecognized","getShopperProfile","shopperIdentity","isEnrolled","verifyIfShopperIsEnrolled","error","SrciError","reason","TimeoutError","handleTimeout","console","warn","toString","subscribeOnStateChange","callback","stateSubscriber","startIdentityValidation","validationSchemeSdk","Error","maskedValidationChannel","initiateIdentityValidation","identityValidationData","maskedShopperContact","replace","selectedNetwork","SchemeNames","schemeName","finishIdentityValidation","otpCode","validationToken","completeIdentityValidation","idToken","checkout","card","checkoutSdk","find","sdk","scheme","checkoutResponse","srcDigitalCardId","srcCorrelationId","isDcfPopupEmbedded","windowRef","window","frames","CTP_IFRAME_NAME","complianceSettings","complianceResources","complianceType","uri","dcfActionCode","AdyenCheckoutError","createCheckoutPayloadBasedOnScheme","logout","logoutPromises","map","unbindAppInstance","Promise","all","shopperCards","shopperEmail","resolve","reject","lookupPromises","executeWithTimeout","identityLookup","identityValue","type","source","isTimeoutTriggeredBySchemeSdk","then","response","consumerPresent","setSdkForPerformingShopperIdentityValidation","catch","allSettled","timeoutError","setCorrelationId","VISA_SDK","correlationId","buildClientProfile","schemesConfig","visa","srciDpaId","onTimeout","srcProfilesPromises","getSrcProfile","srcProfilesResponses","every","isRejected","profilesWithScheme","promiseResult","index","isFulfilled","value","filter","profile","createShopperCardsList","promises","isRecognized","initPromises","cfg","init","srciTransactionId","constructor","_define_property","uuidv4"],"mappings":"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"}
1
+ {"version":3,"file":"ClickToPayService.js","sources":["../../../../../../src/components/internal/ClickToPay/services/ClickToPayService.ts"],"sourcesContent":["import { ISrcInitiator } from './sdks/AbstractSrcInitiator';\nimport {\n CallbackStateSubscriber,\n IClickToPayService,\n IdentityLookupParams,\n ClickToPayCheckoutPayload,\n SrcProfileWithScheme,\n SchemesConfiguration,\n IdentityValidationData\n} from './types';\nimport { ISrcSdkLoader } from './sdks/SrcSdkLoader';\nimport { createCheckoutPayloadBasedOnScheme, createShopperCardsList, CTP_IFRAME_NAME } from './utils';\nimport { SrciIdentityLookupResponse, SrciIsRecognizedResponse, SrcProfile } from './sdks/types';\nimport SrciError from './sdks/SrciError';\nimport { SchemeNames } from './sdks/utils';\nimport ShopperCard from '../models/ShopperCard';\nimport uuidv4 from '../../../../utils/uuid';\nimport AdyenCheckoutError from '../../../../core/Errors/AdyenCheckoutError';\nimport { isFulfilled, isRejected } from '../../../../utils/promise-util';\nimport TimeoutError from '../errors/TimeoutError';\nimport { executeWithTimeout } from './execute-with-timeout';\nimport type { IAnalytics } from '../../../../core/Analytics/Analytics';\n\nexport enum CtpState {\n Idle = 'Idle',\n Loading = 'Loading',\n ShopperIdentified = 'ShopperIdentified',\n OneTimePassword = 'OneTimePassword',\n Ready = 'Ready',\n Login = 'Login',\n NotAvailable = 'NotAvailable'\n}\n\nclass ClickToPayService implements IClickToPayService {\n private readonly sdkLoader: ISrcSdkLoader;\n private readonly schemesConfig: SchemesConfiguration;\n private readonly shopperIdentity?: IdentityLookupParams;\n private readonly environment: string;\n private readonly analytics: IAnalytics;\n\n private readonly onTimeout?: (error: TimeoutError) => void;\n\n /**\n * Mandatory unique ID passed to all the networks (Click to Pay systems), used to track user journey\n */\n private readonly srciTransactionId: string = uuidv4();\n\n private sdks: ISrcInitiator[];\n private validationSchemeSdk: ISrcInitiator = null;\n private stateSubscriber: CallbackStateSubscriber;\n\n public state: CtpState = CtpState.Idle;\n public shopperCards: ShopperCard[] = null;\n public identityValidationData: IdentityValidationData = null;\n\n /**\n * Indicates if the shopper opted for saving cookies during the transaction\n */\n public storeCookies = false;\n\n constructor(\n schemesConfig: SchemesConfiguration,\n sdkLoader: ISrcSdkLoader,\n environment: string,\n analytics: IAnalytics,\n shopperIdentity?: IdentityLookupParams,\n onTimeout?: (error: TimeoutError) => void\n ) {\n this.sdkLoader = sdkLoader;\n this.schemesConfig = schemesConfig;\n this.shopperIdentity = shopperIdentity;\n this.environment = environment;\n this.onTimeout = onTimeout;\n this.analytics = analytics;\n }\n\n public get shopperAccountFound(): boolean {\n return [CtpState.Ready, CtpState.ShopperIdentified].includes(this.state);\n }\n\n public get schemes(): string[] {\n return this.sdkLoader.schemes;\n }\n\n public updateStoreCookiesConsent(shouldStore: boolean) {\n this.storeCookies = shouldStore;\n }\n\n public async initialize(): Promise<void> {\n this.setState(CtpState.Loading);\n\n try {\n this.sdks = await this.sdkLoader.load(this.environment, this.analytics);\n await this.initiateSdks();\n\n const { recognized = false, idTokens = null } = await this.verifyIfShopperIsRecognized();\n\n if (recognized) {\n await this.getShopperProfile(idTokens);\n this.setState(CtpState.Ready);\n return;\n }\n\n if (!this.shopperIdentity) {\n this.setState(CtpState.NotAvailable);\n return;\n }\n\n const { isEnrolled } = await this.verifyIfShopperIsEnrolled(this.shopperIdentity);\n if (isEnrolled) {\n this.setState(CtpState.ShopperIdentified);\n return;\n }\n\n this.setState(CtpState.NotAvailable);\n } catch (error) {\n if ((error instanceof SrciError && error?.reason === 'REQUEST_TIMEOUT') || error instanceof TimeoutError) {\n this.handleTimeout(error);\n } else if (error instanceof SrciError) {\n console.warn(`Error at ClickToPayService # init: ${error.toString()}`);\n } else {\n console.warn(error);\n }\n\n this.setState(CtpState.NotAvailable);\n }\n }\n\n /**\n * Set the callback for notifying when the CtPState changes\n */\n public subscribeOnStateChange(callback: CallbackStateSubscriber): void {\n this.stateSubscriber = callback;\n }\n\n /**\n * Initiates Consumer Identity validation with one Click to Pay System.\n * The Click to Pay System sends a one-time-password (OTP) to the registered email address or mobile number.\n **/\n public async startIdentityValidation(): Promise<void> {\n if (!this.validationSchemeSdk) {\n throw Error('startIdentityValidation: No ValidationSDK set for the validation process');\n }\n try {\n const { maskedValidationChannel } = await this.validationSchemeSdk.initiateIdentityValidation();\n\n this.identityValidationData = {\n maskedShopperContact: maskedValidationChannel.replace(/\\*/g, '•'),\n selectedNetwork: SchemeNames[this.validationSchemeSdk.schemeName]\n };\n\n this.setState(CtpState.OneTimePassword);\n } catch (error: unknown) {\n // If there is an error when 'startIdentityValidation' (Ex: account is blocked), we reset the scheme chosen to perform this step\n this.validationSchemeSdk = null;\n throw error;\n }\n }\n\n /**\n * Completes the validation of the Shopper by evaluating the supplied OTP.\n */\n public async finishIdentityValidation(otpCode: string): Promise<void> {\n if (!this.validationSchemeSdk) {\n throw Error('finishIdentityValidation: No ValidationSDK set for the validation process');\n }\n\n const validationToken = await this.validationSchemeSdk.completeIdentityValidation(otpCode);\n await this.getShopperProfile([validationToken.idToken]);\n this.setState(CtpState.Ready);\n this.validationSchemeSdk = null;\n }\n\n /**\n * This method performs checkout using the selected card\n */\n public async checkout(card: ShopperCard): Promise<ClickToPayCheckoutPayload> {\n if (!card) {\n throw Error('ClickToPayService # checkout: Missing card data');\n }\n\n const checkoutSdk = this.sdks.find(sdk => sdk.schemeName === card.scheme);\n\n const checkoutResponse = await checkoutSdk.checkout({\n srcDigitalCardId: card.srcDigitalCardId,\n srcCorrelationId: card.srcCorrelationId,\n ...(card.isDcfPopupEmbedded && { windowRef: window.frames[CTP_IFRAME_NAME] }),\n ...(this.storeCookies && { complianceSettings: { complianceResources: [{ complianceType: 'REMEMBER_ME', uri: '' }] } })\n });\n\n if (checkoutResponse.dcfActionCode !== 'COMPLETE') {\n throw new AdyenCheckoutError(\n 'ERROR',\n `Checkout through Scheme DCF did not complete. DCF Action code received: ${checkoutResponse.dcfActionCode}`\n );\n }\n\n return createCheckoutPayloadBasedOnScheme(card, checkoutResponse, this.environment);\n }\n\n /**\n * Call the 'unbindAppInstance()' method of each SRC SDK in order to remove the shopper cookies.\n * Besides, it deletes all information stored about the shopper.\n */\n public async logout(): Promise<void> {\n if (!this.sdks) {\n throw new AdyenCheckoutError('ERROR', 'ClickToPayService is not initialized');\n }\n\n try {\n const logoutPromises = this.sdks.map(sdk => sdk.unbindAppInstance());\n await Promise.all(logoutPromises);\n } catch (error) {\n if (error instanceof SrciError) console.warn(`Error at ClickToPayService # logout: ${error.toString()}`);\n else console.warn(error);\n }\n\n this.shopperCards = null;\n this.identityValidationData = null;\n this.validationSchemeSdk = null;\n\n this.setState(CtpState.Login);\n }\n\n /**\n * Call the 'identityLookup()' method of each SRC SDK in order to verify if the shopper has an account.\n *\n * Based on the responses from the Click to Pay Systems, we should do the validation process using the SDK that\n * that responds faster with 'consumerPresent=true'\n */\n public verifyIfShopperIsEnrolled(shopperIdentity: IdentityLookupParams): Promise<{ isEnrolled: boolean }> {\n const { shopperEmail } = shopperIdentity;\n\n return new Promise((resolve, reject) => {\n const lookupPromises = this.sdks.map(sdk => {\n const identityLookupPromise = executeWithTimeout<SrciIdentityLookupResponse>(\n () => sdk.identityLookup({ identityValue: shopperEmail, type: 'email' }),\n 5000,\n new TimeoutError({\n source: 'identityLookup',\n scheme: sdk.schemeName,\n isTimeoutTriggeredBySchemeSdk: false\n })\n );\n\n return identityLookupPromise\n .then(response => {\n if (response.consumerPresent && !this.validationSchemeSdk) {\n this.setSdkForPerformingShopperIdentityValidation(sdk);\n resolve({ isEnrolled: true });\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n void Promise.allSettled(lookupPromises).then(() => {\n resolve({ isEnrolled: false });\n });\n });\n }\n\n private setState(state: CtpState): void {\n this.state = state;\n this.stateSubscriber?.(this.state);\n }\n\n private setSdkForPerformingShopperIdentityValidation(sdk: ISrcInitiator) {\n this.validationSchemeSdk = sdk;\n }\n\n private handleTimeout(error: SrciError | TimeoutError) {\n // If the timeout error was thrown directly by the scheme SDK, we convert it to TimeoutError\n // If the timeout error was thrown by our internal timeout mechanism, we don't do anything\n const timeoutError =\n error instanceof SrciError\n ? new TimeoutError({ source: error.source, scheme: error.scheme, isTimeoutTriggeredBySchemeSdk: true })\n : error;\n\n if (timeoutError.scheme === 'visa') {\n timeoutError.setCorrelationId(window.VISA_SDK?.correlationId);\n\n // Visa srciDpaId must be passed when there is no correlation ID available\n if (window.VISA_SDK?.correlationId) window.VISA_SDK?.buildClientProfile?.();\n else window.VISA_SDK?.buildClientProfile?.(this.schemesConfig.visa.srciDpaId);\n }\n this.onTimeout?.(timeoutError);\n }\n\n /**\n * Based on the given 'idToken', this method goes through each SRCi SDK and fetches the shopper\n * profile with his cards.\n */\n private async getShopperProfile(idTokens: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const srcProfilesPromises = this.sdks.map(sdk => sdk.getSrcProfile(idTokens));\n\n void Promise.allSettled(srcProfilesPromises).then(srcProfilesResponses => {\n if (srcProfilesResponses.every(isRejected)) {\n reject(srcProfilesResponses[0].reason);\n }\n\n const createProfileWithScheme = (promiseResult: PromiseSettledResult<SrcProfile>, index) =>\n isFulfilled(promiseResult) && { ...promiseResult.value, scheme: this.sdks[index].schemeName };\n\n const profilesWithScheme: SrcProfileWithScheme[] = srcProfilesResponses.map(createProfileWithScheme).filter(profile => !!profile);\n\n this.shopperCards = createShopperCardsList(profilesWithScheme);\n resolve();\n });\n });\n }\n\n /**\n * Calls the 'isRecognized()' method of each SRC SDK in order to verify if the shopper is\n * recognized on the device. The shopper is recognized if he/she has the Cookies stored\n * on their browser\n */\n private verifyIfShopperIsRecognized(): Promise<SrciIsRecognizedResponse> {\n return new Promise((resolve, reject) => {\n const promises = this.sdks.map(sdk => {\n const isRecognizedPromise = executeWithTimeout<SrciIsRecognizedResponse>(\n () => sdk.isRecognized(),\n 5000,\n new TimeoutError({\n source: 'isRecognized',\n scheme: sdk.schemeName,\n isTimeoutTriggeredBySchemeSdk: false\n })\n );\n\n return isRecognizedPromise\n .then(response => {\n if (response.recognized) resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n\n // If the 'resolve' didn't happen until this point, then shopper is not recognized\n void Promise.allSettled(promises).then(() => {\n resolve({ recognized: false });\n });\n });\n }\n\n private initiateSdks(): Promise<void[]> {\n const initPromises = this.sdks.map(sdk => {\n const cfg = this.schemesConfig[sdk.schemeName];\n\n return executeWithTimeout<void>(\n () => sdk.init(cfg, this.srciTransactionId),\n 5000,\n new TimeoutError({\n source: 'init',\n scheme: sdk.schemeName,\n isTimeoutTriggeredBySchemeSdk: false\n })\n );\n });\n\n return Promise.all(initPromises);\n }\n}\n\nexport default ClickToPayService;\n"],"names":["CtpState","ClickToPayService","shopperAccountFound","includes","this","state","schemes","sdkLoader","updateStoreCookiesConsent","shouldStore","storeCookies","initialize","setState","sdks","load","environment","analytics","initiateSdks","recognized","idTokens","verifyIfShopperIsRecognized","getShopperProfile","shopperIdentity","isEnrolled","verifyIfShopperIsEnrolled","error","SrciError","reason","TimeoutError","handleTimeout","console","warn","toString","subscribeOnStateChange","callback","stateSubscriber","startIdentityValidation","validationSchemeSdk","Error","maskedValidationChannel","initiateIdentityValidation","identityValidationData","maskedShopperContact","replace","selectedNetwork","SchemeNames","schemeName","finishIdentityValidation","otpCode","validationToken","completeIdentityValidation","idToken","checkout","card","checkoutSdk","find","sdk","scheme","checkoutResponse","srcDigitalCardId","srcCorrelationId","isDcfPopupEmbedded","windowRef","window","frames","CTP_IFRAME_NAME","complianceSettings","complianceResources","complianceType","uri","dcfActionCode","AdyenCheckoutError","createCheckoutPayloadBasedOnScheme","logout","logoutPromises","map","unbindAppInstance","Promise","all","shopperCards","shopperEmail","resolve","reject","lookupPromises","executeWithTimeout","identityLookup","identityValue","type","source","isTimeoutTriggeredBySchemeSdk","then","response","consumerPresent","setSdkForPerformingShopperIdentityValidation","catch","allSettled","timeoutError","setCorrelationId","VISA_SDK","correlationId","buildClientProfile","schemesConfig","visa","srciDpaId","onTimeout","srcProfilesPromises","getSrcProfile","srcProfilesResponses","every","isRejected","profilesWithScheme","promiseResult","index","isFulfilled","value","filter","profile","createShopperCardsList","promises","isRecognized","initPromises","cfg","init","srciTransactionId","constructor","_define_property","uuidv4"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-clicktopay-service.js","sources":["../../../../../../src/components/internal/ClickToPay/services/create-clicktopay-service.ts"],"sourcesContent":["import SrcSdkLoader from './sdks/SrcSdkLoader';\nimport ClickToPayService from './ClickToPayService';\nimport { IClickToPayService, IdentityLookupParams } from './types';\nimport { SrcInitParams } from './sdks/types';\nimport { CardBackendConfiguration } from '../../../Card/types';\nimport { ClickToPayProps, ClickToPayScheme } from '../types';\nimport type { AnalyticsModule } from '../../../../types/global-types';\n\n/**\n * Creates the Click to Pay service in case the required configuration is provided\n */\nexport default function createClickToPayService(\n configuration: CardBackendConfiguration,\n clickToPayConfiguration: ClickToPayProps | undefined,\n environment: string,\n analytics: AnalyticsModule\n): IClickToPayService | null {\n const schemesConfig = createSchemesInitConfiguration(configuration);\n\n if (!schemesConfig) {\n return null;\n }\n\n const shopperIdentity = createShopperIdentityObject(clickToPayConfiguration?.shopperEmail, clickToPayConfiguration?.telephoneNumber);\n\n const schemeNames = Object.keys(schemesConfig);\n const srcSdkLoader = new SrcSdkLoader(schemeNames, {\n dpaLocale: clickToPayConfiguration?.locale,\n dpaPresentationName: clickToPayConfiguration?.merchantDisplayName\n });\n\n return new ClickToPayService(schemesConfig, srcSdkLoader, environment, analytics, shopperIdentity, clickToPayConfiguration?.onTimeout);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst createShopperIdentityObject = (shopperEmail: string, telephoneNumber: string): IdentityLookupParams | null => {\n const identityLookup = {\n ...(shopperEmail && { shopperEmail })\n // ...(telephoneNumber && { telephoneNumber }) telephoneNumber not supported yet\n };\n\n return Object.keys(identityLookup).length > 0 ? identityLookup : null;\n};\n\n/**\n * Parses 'configuration' object that comes from the Card payment method config, and try to create the Click to Pay\n * initialization object in case the values are provided.\n */\nconst createSchemesInitConfiguration = (configuration: CardBackendConfiguration): Record<ClickToPayScheme, SrcInitParams> => {\n if (!configuration) {\n return null;\n }\n\n const { visaSrciDpaId, visaSrcInitiatorId, mcDpaId, mcSrcClientId } = configuration;\n\n const schemesConfig: Record<ClickToPayScheme, SrcInitParams> = {\n ...(mcDpaId && mcSrcClientId && { mc: { srciDpaId: mcDpaId, srcInitiatorId: mcSrcClientId } }),\n ...(visaSrciDpaId &&\n visaSrcInitiatorId && {\n visa: {\n srciDpaId: visaSrciDpaId,\n srcInitiatorId: visaSrcInitiatorId\n }\n })\n };\n return Object.keys(schemesConfig).length === 0 ? null : schemesConfig;\n};\n"],"names":["createClickToPayService","configuration","clickToPayConfiguration","environment","analytics","schemesConfig","createSchemesInitConfiguration","shopperIdentity","createShopperIdentityObject","shopperEmail","telephoneNumber","schemeNames","Object","keys","srcSdkLoader","SrcSdkLoader","dpaLocale","locale","dpaPresentationName","merchantDisplayName","ClickToPayService","onTimeout","identityLookup","length","visaSrciDpaId","visaSrcInitiatorId","mcDpaId","mcSrcClientId","mc","srciDpaId","srcInitiatorId","visa"],"mappings":"4EAWe,SAASA,EACpBC,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAgBC,EAA+BL,GAErD,IAAKI,EACD,OAAO,KAGX,MAAME,EAAkBC,EAA4BN,GAAyBO,aAAcP,GAAyBQ,iBAE9GC,EAAcC,OAAOC,KAAKR,GAC1BS,EAAe,IAAIC,EAAaJ,EAAa,CAC/CK,UAAWd,GAAyBe,OACpCC,oBAAqBhB,GAAyBiB,sBAGlD,OAAO,IAAIC,EAAkBf,EAAeS,EAAcX,EAAaC,EAAWG,EAAiBL,GAAyBmB,UAChI,CAGA,MAAMb,EAA8B,CAACC,EAAsBC,KACvD,MAAMY,EAAiB,IACfb,GAAgB,CAAEA,iBAI1B,OAAOG,OAAOC,KAAKS,GAAgBC,OAAS,EAAID,EAAiB,MAO/DhB,EAAkCL,IACpC,IAAKA,EACD,OAAO,KAGX,MAAMuB,cAAEA,EAAaC,mBAAEA,EAAkBC,QAAEA,EAAOC,cAAEA,GAAkB1B,EAEhEI,EAAyD,IACvDqB,GAAWC,GAAiB,CAAEC,GAAI,CAAEC,UAAWH,EAASI,eAAgBH,OACxEH,GACAC,GAAsB,CAClBM,KAAM,CACFF,UAAWL,EACXM,eAAgBL,KAIhC,OAA6C,IAAtCb,OAAOC,KAAKR,GAAekB,OAAe,KAAOlB"}
1
+ {"version":3,"file":"create-clicktopay-service.js","sources":["../../../../../../src/components/internal/ClickToPay/services/create-clicktopay-service.ts"],"sourcesContent":["import SrcSdkLoader from './sdks/SrcSdkLoader';\nimport ClickToPayService from './ClickToPayService';\nimport { IClickToPayService, IdentityLookupParams } from './types';\nimport { SrcInitParams } from './sdks/types';\nimport { CardBackendConfiguration } from '../../../Card/types';\nimport { ClickToPayProps, ClickToPayScheme } from '../types';\nimport type { IAnalytics } from '../../../../core/Analytics/Analytics';\n\n/**\n * Creates the Click to Pay service in case the required configuration is provided\n */\nexport default function createClickToPayService(\n configuration: CardBackendConfiguration,\n clickToPayConfiguration: ClickToPayProps | undefined,\n environment: string,\n analytics: IAnalytics\n): IClickToPayService | null {\n const schemesConfig = createSchemesInitConfiguration(configuration);\n\n if (!schemesConfig) {\n return null;\n }\n\n const shopperIdentity = createShopperIdentityObject(clickToPayConfiguration?.shopperEmail, clickToPayConfiguration?.telephoneNumber);\n\n const schemeNames = Object.keys(schemesConfig);\n const srcSdkLoader = new SrcSdkLoader(schemeNames, {\n dpaLocale: clickToPayConfiguration?.locale,\n dpaPresentationName: clickToPayConfiguration?.merchantDisplayName\n });\n\n return new ClickToPayService(schemesConfig, srcSdkLoader, environment, analytics, shopperIdentity, clickToPayConfiguration?.onTimeout);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst createShopperIdentityObject = (shopperEmail: string, telephoneNumber: string): IdentityLookupParams | null => {\n const identityLookup = {\n ...(shopperEmail && { shopperEmail })\n // ...(telephoneNumber && { telephoneNumber }) telephoneNumber not supported yet\n };\n\n return Object.keys(identityLookup).length > 0 ? identityLookup : null;\n};\n\n/**\n * Parses 'configuration' object that comes from the Card payment method config, and try to create the Click to Pay\n * initialization object in case the values are provided.\n */\nconst createSchemesInitConfiguration = (configuration: CardBackendConfiguration): Record<ClickToPayScheme, SrcInitParams> => {\n if (!configuration) {\n return null;\n }\n\n const { visaSrciDpaId, visaSrcInitiatorId, mcDpaId, mcSrcClientId } = configuration;\n\n const schemesConfig: Record<ClickToPayScheme, SrcInitParams> = {\n ...(mcDpaId && mcSrcClientId && { mc: { srciDpaId: mcDpaId, srcInitiatorId: mcSrcClientId } }),\n ...(visaSrciDpaId &&\n visaSrcInitiatorId && {\n visa: {\n srciDpaId: visaSrciDpaId,\n srcInitiatorId: visaSrcInitiatorId\n }\n })\n };\n return Object.keys(schemesConfig).length === 0 ? null : schemesConfig;\n};\n"],"names":["createClickToPayService","configuration","clickToPayConfiguration","environment","analytics","schemesConfig","createSchemesInitConfiguration","shopperIdentity","createShopperIdentityObject","shopperEmail","telephoneNumber","schemeNames","Object","keys","srcSdkLoader","SrcSdkLoader","dpaLocale","locale","dpaPresentationName","merchantDisplayName","ClickToPayService","onTimeout","identityLookup","length","visaSrciDpaId","visaSrcInitiatorId","mcDpaId","mcSrcClientId","mc","srciDpaId","srcInitiatorId","visa"],"mappings":"4EAWe,SAASA,EACpBC,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAgBC,EAA+BL,GAErD,IAAKI,EACD,OAAO,KAGX,MAAME,EAAkBC,EAA4BN,GAAyBO,aAAcP,GAAyBQ,iBAE9GC,EAAcC,OAAOC,KAAKR,GAC1BS,EAAe,IAAIC,EAAaJ,EAAa,CAC/CK,UAAWd,GAAyBe,OACpCC,oBAAqBhB,GAAyBiB,sBAGlD,OAAO,IAAIC,EAAkBf,EAAeS,EAAcX,EAAaC,EAAWG,EAAiBL,GAAyBmB,UAChI,CAGA,MAAMb,EAA8B,CAACC,EAAsBC,KACvD,MAAMY,EAAiB,IACfb,GAAgB,CAAEA,iBAI1B,OAAOG,OAAOC,KAAKS,GAAgBC,OAAS,EAAID,EAAiB,MAO/DhB,EAAkCL,IACpC,IAAKA,EACD,OAAO,KAGX,MAAMuB,cAAEA,EAAaC,mBAAEA,EAAkBC,QAAEA,EAAOC,cAAEA,GAAkB1B,EAEhEI,EAAyD,IACvDqB,GAAWC,GAAiB,CAAEC,GAAI,CAAEC,UAAWH,EAASI,eAAgBH,OACxEH,GACAC,GAAsB,CAClBM,KAAM,CACFF,UAAWL,EACXM,eAAgBL,KAIhC,OAA6C,IAAtCb,OAAOC,KAAKR,GAAekB,OAAe,KAAOlB"}