@adyen/adyen-web 6.0.0-alpha.8 → 6.0.0-beta.1

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 (380) hide show
  1. package/README.md +123 -182
  2. package/dist/cjs/adyen.css +65 -65
  3. package/dist/cjs/adyen.css.map +1 -1
  4. package/dist/cjs/index.cjs +2 -2
  5. package/dist/cjs/index.cjs.map +1 -1
  6. package/dist/cjs/index.d.cts +904 -1252
  7. package/dist/es/adyen.css +65 -65
  8. package/dist/es/adyen.css.map +1 -1
  9. package/dist/es/components/Ach/Ach.js +1 -1
  10. package/dist/es/components/Ach/Ach.js.map +1 -1
  11. package/dist/es/components/Ach/components/AchInput/AchInput.js +1 -1
  12. package/dist/es/components/Ach/components/AchInput/AchInput.js.map +1 -1
  13. package/dist/es/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
  14. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  15. package/dist/es/components/AmazonPay/components/SignOutButton.js.map +1 -1
  16. package/dist/es/components/ApplePay/ApplePayService.js.map +1 -1
  17. package/dist/es/components/ApplePay/components/ApplePayButton.js.map +1 -1
  18. package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
  19. package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
  20. package/dist/es/components/Blik/Blik.js +1 -1
  21. package/dist/es/components/Blik/Blik.js.map +1 -1
  22. package/dist/es/components/Card/Card.js +1 -1
  23. package/dist/es/components/Card/Card.js.map +1 -1
  24. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  25. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  26. package/dist/es/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  27. package/dist/es/components/Card/components/CardInput/components/DualBrandingIcon/DualBrandingIcon.js.map +1 -1
  28. package/dist/es/components/Card/components/CardInput/handlers.js +1 -1
  29. package/dist/es/components/Card/components/CardInput/handlers.js.map +1 -1
  30. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  31. package/dist/es/components/Card/components/CardInput/useSRPanelForCardInputErrors.js +2 -0
  32. package/dist/es/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -0
  33. package/dist/es/components/Card/components/CardInput/utils.js +1 -1
  34. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  35. package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
  36. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  37. package/dist/es/components/CashAppPay/components/CashAppComponent.js.map +1 -1
  38. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  39. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  40. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js +1 -1
  41. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  42. package/dist/es/components/Dropin/Dropin.js +1 -1
  43. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  44. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  45. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  46. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  47. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  48. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  49. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  50. package/dist/es/components/Dropin/elements/createElements.js.map +1 -1
  51. package/dist/es/components/Dropin/elements/createInstantPaymentElements.js.map +1 -1
  52. package/dist/es/components/Dropin/elements/createStoredElements.js.map +1 -1
  53. package/dist/es/components/Dropin/elements/filters.js.map +1 -1
  54. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  55. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  56. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  57. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  58. package/dist/es/components/Giropay/Giropay.js +1 -1
  59. package/dist/es/components/Giropay/Giropay.js.map +1 -1
  60. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  61. package/dist/es/components/GooglePay/GooglePayService.js.map +1 -1
  62. package/dist/es/components/GooglePay/components/GooglePayButton.js.map +1 -1
  63. package/dist/es/components/GooglePay/requests.js.map +1 -1
  64. package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
  65. package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
  66. package/dist/es/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
  67. package/dist/es/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  68. package/dist/es/components/Multibanco/Multibanco.js +1 -1
  69. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  70. package/dist/es/components/Oxxo/Oxxo.js.map +1 -1
  71. package/dist/es/components/PayPal/Paypal.js +1 -1
  72. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  73. package/dist/es/components/Redirect/Redirect.js +1 -1
  74. package/dist/es/components/Redirect/Redirect.js.map +1 -1
  75. package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
  76. package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
  77. package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
  78. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
  79. package/dist/es/components/Trustly/Trustly.js +1 -1
  80. package/dist/es/components/Trustly/Trustly.js.map +1 -1
  81. package/dist/es/components/WeChat/config.js +1 -1
  82. package/dist/es/components/WeChat/config.js.map +1 -1
  83. package/dist/es/components/components-name-map.js +1 -1
  84. package/dist/es/components/components-name-map.js.map +1 -1
  85. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  86. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  87. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  88. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  89. package/dist/es/components/index.js +1 -1
  90. package/dist/es/components/internal/Address/components/AddressSearch.js +1 -1
  91. package/dist/es/components/internal/Address/components/AddressSearch.js.map +1 -1
  92. package/dist/es/components/internal/Await/Await.js.map +1 -1
  93. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  94. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  95. package/dist/es/components/internal/ClickToPay/ClickToPayComponent.js.map +1 -1
  96. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  97. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
  98. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  99. package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
  100. package/dist/es/components/internal/ClickToPay/errors/TimeoutError.js +1 -1
  101. package/dist/es/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
  102. package/dist/es/components/internal/ClickToPay/models/ShopperCard.js +1 -1
  103. package/dist/es/components/internal/ClickToPay/models/ShopperCard.js.map +1 -1
  104. package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  105. package/dist/es/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
  106. package/dist/es/components/internal/ClickToPay/services/sdks/SrciError.js +1 -1
  107. package/dist/es/components/internal/ClickToPay/services/sdks/SrciError.js.map +1 -1
  108. package/dist/es/components/internal/ClickToPay/services/utils.js +1 -1
  109. package/dist/es/components/internal/ClickToPay/services/utils.js.map +1 -1
  110. package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
  111. package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
  112. package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
  113. package/dist/es/components/internal/FormFields/Select/components/SelectList.js.map +1 -1
  114. package/dist/es/components/internal/FormFields/Select/components/SelectListItem.js.map +1 -1
  115. package/dist/es/components/internal/Modal/Modal.js.map +1 -1
  116. package/dist/es/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  117. package/dist/es/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  118. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  119. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  120. package/dist/es/components/internal/RedirectButton/RedirectButton.js +1 -1
  121. package/dist/es/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  122. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  123. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  124. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  125. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js.map +1 -1
  126. package/dist/es/components/internal/SecuredFields/SFP/defaultProps.js +1 -1
  127. package/dist/es/components/internal/SecuredFields/SFP/defaultProps.js.map +1 -1
  128. package/dist/es/components/internal/SecuredFields/binLookup/triggerBinLookUp.js.map +1 -1
  129. package/dist/es/components/internal/SecuredFields/lib/CSF/CSF.js +1 -1
  130. package/dist/es/components/internal/SecuredFields/lib/CSF/CSF.js.map +1 -1
  131. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/configureCallbacks.js +1 -1
  132. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/configureCallbacks.js.map +1 -1
  133. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  134. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  135. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js +1 -1
  136. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js.map +1 -1
  137. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  138. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js +1 -1
  139. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js.map +1 -1
  140. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  141. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  142. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
  143. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  144. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  145. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  146. package/dist/es/components/internal/SecuredFields/lib/utilities/commonUtils.js.map +1 -1
  147. package/dist/es/components/internal/SecuredFields/lib/utilities/dom.js +1 -1
  148. package/dist/es/components/internal/SecuredFields/lib/utilities/dom.js.map +1 -1
  149. package/dist/es/components/internal/SecuredFields/lib/utilities/logger.js.map +1 -1
  150. package/dist/es/components/internal/SecuredFields/utils.js.map +1 -1
  151. package/dist/es/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js +1 -1
  152. package/dist/es/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js.map +1 -1
  153. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  154. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  155. package/dist/es/components/tx-variants.js +1 -1
  156. package/dist/es/components/tx-variants.js.map +1 -1
  157. package/dist/es/core/AdyenCheckout.js.map +1 -1
  158. package/dist/es/core/Analytics/Analytics.js +1 -1
  159. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  160. package/dist/es/core/CheckoutSession/CheckoutSession.js.map +1 -1
  161. package/dist/es/core/Environment/Environment.js +1 -1
  162. package/dist/es/core/Environment/Environment.js.map +1 -1
  163. package/dist/es/core/ProcessResponse/PaymentAction/PaymentAction.js.map +1 -1
  164. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  165. package/dist/es/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  166. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  167. package/dist/es/core/Services/analytics/collect-id.js.map +1 -1
  168. package/dist/es/core/Services/http.js +1 -1
  169. package/dist/es/core/Services/http.js.map +1 -1
  170. package/dist/es/core/Services/sessions/setup-session.js +1 -1
  171. package/dist/es/core/Services/sessions/setup-session.js.map +1 -1
  172. package/dist/es/core/config.js +1 -1
  173. package/dist/es/core/config.js.map +1 -1
  174. package/dist/es/core/core.js +1 -1
  175. package/dist/es/core/core.js.map +1 -1
  176. package/dist/es/core/core.registry.js.map +1 -1
  177. package/dist/es/core/utils.js +1 -1
  178. package/dist/es/core/utils.js.map +1 -1
  179. package/dist/es/external/preact/dist/preact.js +1 -1
  180. package/dist/es/external/preact/dist/preact.js.map +1 -1
  181. package/dist/es/index.d.ts +904 -1252
  182. package/dist/es/index.js +1 -1
  183. package/dist/es/language/constants.js +1 -1
  184. package/dist/es/language/constants.js.map +1 -1
  185. package/dist/es/utils/browserInfo.js +1 -1
  186. package/dist/es/utils/browserInfo.js.map +1 -1
  187. package/dist/es/utils/listenerUtils.js +2 -0
  188. package/dist/es/utils/listenerUtils.js.map +1 -0
  189. package/dist/es/utils/regex.js.map +1 -1
  190. package/dist/es-legacy/adyen.css +65 -65
  191. package/dist/es-legacy/adyen.css.map +1 -1
  192. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  193. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  194. package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js +1 -1
  195. package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js.map +1 -1
  196. package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
  197. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  198. package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js.map +1 -1
  199. package/dist/es-legacy/components/ApplePay/ApplePayService.js.map +1 -1
  200. package/dist/es-legacy/components/ApplePay/components/ApplePayButton.js.map +1 -1
  201. package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
  202. package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
  203. package/dist/es-legacy/components/Blik/Blik.js +1 -1
  204. package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
  205. package/dist/es-legacy/components/Card/Card.js +1 -1
  206. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  207. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  208. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  209. package/dist/es-legacy/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  210. package/dist/es-legacy/components/Card/components/CardInput/components/DualBrandingIcon/DualBrandingIcon.js.map +1 -1
  211. package/dist/es-legacy/components/Card/components/CardInput/handlers.js +1 -1
  212. package/dist/es-legacy/components/Card/components/CardInput/handlers.js.map +1 -1
  213. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  214. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js +2 -0
  215. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -0
  216. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  217. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  218. package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
  219. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  220. package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js.map +1 -1
  221. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  222. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  223. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js +1 -1
  224. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  225. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  226. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  227. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  228. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  229. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  230. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  231. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  232. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  233. package/dist/es-legacy/components/Dropin/elements/createElements.js.map +1 -1
  234. package/dist/es-legacy/components/Dropin/elements/createInstantPaymentElements.js.map +1 -1
  235. package/dist/es-legacy/components/Dropin/elements/createStoredElements.js.map +1 -1
  236. package/dist/es-legacy/components/Dropin/elements/filters.js.map +1 -1
  237. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  238. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  239. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  240. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  241. package/dist/es-legacy/components/Giropay/Giropay.js +1 -1
  242. package/dist/es-legacy/components/Giropay/Giropay.js.map +1 -1
  243. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  244. package/dist/es-legacy/components/GooglePay/GooglePayService.js.map +1 -1
  245. package/dist/es-legacy/components/GooglePay/components/GooglePayButton.js.map +1 -1
  246. package/dist/es-legacy/components/GooglePay/requests.js.map +1 -1
  247. package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
  248. package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
  249. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
  250. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  251. package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
  252. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  253. package/dist/es-legacy/components/Oxxo/Oxxo.js.map +1 -1
  254. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  255. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  256. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  257. package/dist/es-legacy/components/Redirect/Redirect.js.map +1 -1
  258. package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
  259. package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
  260. package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
  261. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
  262. package/dist/es-legacy/components/Trustly/Trustly.js +1 -1
  263. package/dist/es-legacy/components/Trustly/Trustly.js.map +1 -1
  264. package/dist/es-legacy/components/WeChat/config.js +1 -1
  265. package/dist/es-legacy/components/WeChat/config.js.map +1 -1
  266. package/dist/es-legacy/components/components-name-map.js +1 -1
  267. package/dist/es-legacy/components/components-name-map.js.map +1 -1
  268. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  269. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  270. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  271. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  272. package/dist/es-legacy/components/index.js +1 -1
  273. package/dist/es-legacy/components/internal/Address/components/AddressSearch.js +1 -1
  274. package/dist/es-legacy/components/internal/Address/components/AddressSearch.js.map +1 -1
  275. package/dist/es-legacy/components/internal/Await/Await.js.map +1 -1
  276. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  277. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  278. package/dist/es-legacy/components/internal/ClickToPay/ClickToPayComponent.js.map +1 -1
  279. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  280. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
  281. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  282. package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
  283. package/dist/es-legacy/components/internal/ClickToPay/errors/TimeoutError.js +1 -1
  284. package/dist/es-legacy/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
  285. package/dist/es-legacy/components/internal/ClickToPay/models/ShopperCard.js +1 -1
  286. package/dist/es-legacy/components/internal/ClickToPay/models/ShopperCard.js.map +1 -1
  287. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  288. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
  289. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrciError.js +1 -1
  290. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrciError.js.map +1 -1
  291. package/dist/es-legacy/components/internal/ClickToPay/services/utils.js +1 -1
  292. package/dist/es-legacy/components/internal/ClickToPay/services/utils.js.map +1 -1
  293. package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
  294. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  295. package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
  296. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js.map +1 -1
  297. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js.map +1 -1
  298. package/dist/es-legacy/components/internal/Modal/Modal.js.map +1 -1
  299. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  300. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  301. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  302. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  303. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js +1 -1
  304. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  305. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  306. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  307. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  308. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js.map +1 -1
  309. package/dist/es-legacy/components/internal/SecuredFields/SFP/defaultProps.js +1 -1
  310. package/dist/es-legacy/components/internal/SecuredFields/SFP/defaultProps.js.map +1 -1
  311. package/dist/es-legacy/components/internal/SecuredFields/binLookup/triggerBinLookUp.js.map +1 -1
  312. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/CSF.js +1 -1
  313. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/CSF.js.map +1 -1
  314. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/configureCallbacks.js +1 -1
  315. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/configureCallbacks.js.map +1 -1
  316. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  317. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  318. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js +1 -1
  319. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js.map +1 -1
  320. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  321. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js +1 -1
  322. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js.map +1 -1
  323. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  324. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  325. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
  326. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  327. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  328. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  329. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/commonUtils.js.map +1 -1
  330. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/dom.js +1 -1
  331. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/dom.js.map +1 -1
  332. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/logger.js.map +1 -1
  333. package/dist/es-legacy/components/internal/SecuredFields/utils.js.map +1 -1
  334. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js +1 -1
  335. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js.map +1 -1
  336. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  337. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  338. package/dist/es-legacy/components/tx-variants.js +1 -1
  339. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  340. package/dist/es-legacy/core/AdyenCheckout.js.map +1 -1
  341. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  342. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  343. package/dist/es-legacy/core/CheckoutSession/CheckoutSession.js.map +1 -1
  344. package/dist/es-legacy/core/Environment/Environment.js +1 -1
  345. package/dist/es-legacy/core/Environment/Environment.js.map +1 -1
  346. package/dist/es-legacy/core/ProcessResponse/PaymentAction/PaymentAction.js.map +1 -1
  347. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  348. package/dist/es-legacy/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  349. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  350. package/dist/es-legacy/core/Services/analytics/collect-id.js.map +1 -1
  351. package/dist/es-legacy/core/Services/http.js +1 -1
  352. package/dist/es-legacy/core/Services/http.js.map +1 -1
  353. package/dist/es-legacy/core/Services/sessions/setup-session.js +1 -1
  354. package/dist/es-legacy/core/Services/sessions/setup-session.js.map +1 -1
  355. package/dist/es-legacy/core/config.js +1 -1
  356. package/dist/es-legacy/core/config.js.map +1 -1
  357. package/dist/es-legacy/core/core.js +1 -1
  358. package/dist/es-legacy/core/core.js.map +1 -1
  359. package/dist/es-legacy/core/core.registry.js.map +1 -1
  360. package/dist/es-legacy/core/utils.js +1 -1
  361. package/dist/es-legacy/core/utils.js.map +1 -1
  362. package/dist/es-legacy/external/preact/dist/preact.js +1 -1
  363. package/dist/es-legacy/external/preact/dist/preact.js.map +1 -1
  364. package/dist/es-legacy/index.js +1 -1
  365. package/dist/es-legacy/language/constants.js +1 -1
  366. package/dist/es-legacy/language/constants.js.map +1 -1
  367. package/dist/es-legacy/utils/browserInfo.js +1 -1
  368. package/dist/es-legacy/utils/browserInfo.js.map +1 -1
  369. package/dist/es-legacy/utils/listenerUtils.js +2 -0
  370. package/dist/es-legacy/utils/listenerUtils.js.map +1 -0
  371. package/dist/es-legacy/utils/regex.js.map +1 -1
  372. package/package.json +36 -32
  373. package/dist/es/components/Ideal/index.js +0 -2
  374. package/dist/es/components/Ideal/index.js.map +0 -1
  375. package/dist/es/core/Services/analytics/log-event.js +0 -2
  376. package/dist/es/core/Services/analytics/log-event.js.map +0 -1
  377. package/dist/es-legacy/components/Ideal/index.js +0 -2
  378. package/dist/es-legacy/components/Ideal/index.js.map +0 -1
  379. package/dist/es-legacy/core/Services/analytics/log-event.js +0 -2
  380. package/dist/es-legacy/core/Services/analytics/log-event.js.map +0 -1
@@ -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';\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\nfunction executeWithTimeout<T>(fn: () => Promise<T>, timer: number, error: Error): Promise<T> {\n const timeout = new Promise<T>((resolve, reject) => setTimeout(() => reject(error), timer));\n return Promise.race<T>([fn(), timeout]);\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\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 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 }\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);\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') {\n const timeoutError = new TimeoutError(`ClickToPayService - Timeout during ${error.source}() of the scheme '${error.scheme}'`);\n this.onTimeout?.(timeoutError);\n } else if (error instanceof TimeoutError) {\n console.warn(error.toString());\n this.onTimeout?.(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 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 }\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 const validationToken = await this.validationSchemeSdk.completeIdentityValidation(otpCode);\n await this.getShopperProfile([validationToken.idToken]);\n this.setState(CtpState.Ready);\n\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 async 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(`ClickToPayService - Timeout during identityLookup() of the scheme '${sdk.schemeName}'`)\n );\n\n 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 return identityLookupPromise;\n });\n\n 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 /**\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 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 async 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(`ClickToPayService - Timeout during isRecognized() of the scheme '${sdk.schemeName}'`)\n );\n isRecognizedPromise.then(response => response.recognized && resolve(response)).catch(error => reject(error));\n return isRecognizedPromise;\n });\n\n // If the 'resolve' didn't happen until this point, then shopper is not recognized\n Promise.allSettled(promises).then(() => resolve({ recognized: false }));\n });\n }\n\n private async 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(`ClickToPayService - Timeout during init() of the scheme '${sdk.schemeName}'`)\n );\n });\n\n await Promise.all(initPromises);\n }\n}\n\nexport default ClickToPayService;\n"],"names":["executeWithTimeout","fn","timer","error","timeout","Promise","resolve","reject","setTimeout","race","CtpState","ClickToPayService","shopperAccountFound","includes","this","state","schemes","sdkLoader","updateStoreCookiesConsent","shouldStore","storeCookies","initialize","setState","sdks","load","environment","initiateSdks","recognized","idTokens","verifyIfShopperIsRecognized","getShopperProfile","shopperIdentity","isEnrolled","verifyIfShopperIsEnrolled","SrciError","reason","_this_onTimeout","timeoutError","TimeoutError","source","scheme","onTimeout","_this_onTimeout1","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","checkoutResponse","_object_spread","srcDigitalCardId","srcCorrelationId","isDcfPopupEmbedded","windowRef","window","frames","CTP_IFRAME_NAME","complianceSettings","complianceResources","complianceType","uri","dcfActionCode","AdyenCheckoutError","createCheckoutPayloadBasedOnScheme","logout","logoutPromises","map","unbindAppInstance","all","shopperCards","shopperEmail","lookupPromises","identityLookupPromise","identityLookup","identityValue","type","then","response","consumerPresent","setSdkForPerformingShopperIdentityValidation","catch","allSettled","_this_stateSubscriber","call","srcProfilesPromises","getSrcProfile","srcProfilesResponses","every","isRejected","profilesWithScheme","promiseResult","index","isFulfilled","_object_spread_props","value","filter","profile","createShopperCardsList","promises","isRecognizedPromise","isRecognized","initPromises","cfg","schemesConfig","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';\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\nfunction executeWithTimeout<T>(fn: () => Promise<T>, timer: number, error: Error): Promise<T> {\n const timeout = new Promise<T>((resolve, reject) => setTimeout(() => reject(error), timer));\n return Promise.race<T>([fn(), timeout]);\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\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 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 }\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);\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') {\n const timeoutError = new TimeoutError(`ClickToPayService - Timeout during ${error.source}() of the scheme '${error.scheme}'`);\n this.onTimeout?.(timeoutError);\n } else if (error instanceof TimeoutError) {\n console.warn(error.toString());\n this.onTimeout?.(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 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 }\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 const validationToken = await this.validationSchemeSdk.completeIdentityValidation(otpCode);\n await this.getShopperProfile([validationToken.idToken]);\n this.setState(CtpState.Ready);\n\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 async 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(`ClickToPayService - Timeout during identityLookup() of the scheme '${sdk.schemeName}'`)\n );\n\n 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 return identityLookupPromise;\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 /**\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 async 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(`ClickToPayService - Timeout during isRecognized() of the scheme '${sdk.schemeName}'`)\n );\n isRecognizedPromise.then(response => response.recognized && resolve(response)).catch(error => reject(error));\n return isRecognizedPromise;\n });\n\n // If the 'resolve' didn't happen until this point, then shopper is not recognized\n void Promise.allSettled(promises).then(() => resolve({ recognized: false }));\n });\n }\n\n private async 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(`ClickToPayService - Timeout during init() of the scheme '${sdk.schemeName}'`)\n );\n });\n\n await Promise.all(initPromises);\n }\n}\n\nexport default ClickToPayService;\n"],"names":["executeWithTimeout","fn","timer","error","timeout","Promise","resolve","reject","setTimeout","race","CtpState","ClickToPayService","shopperAccountFound","includes","this","state","schemes","sdkLoader","updateStoreCookiesConsent","shouldStore","storeCookies","initialize","setState","sdks","load","environment","initiateSdks","recognized","idTokens","verifyIfShopperIsRecognized","getShopperProfile","shopperIdentity","isEnrolled","verifyIfShopperIsEnrolled","SrciError","reason","_this_onTimeout","timeoutError","TimeoutError","source","scheme","onTimeout","_this_onTimeout1","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","checkoutResponse","_object_spread","srcDigitalCardId","srcCorrelationId","isDcfPopupEmbedded","windowRef","window","frames","CTP_IFRAME_NAME","complianceSettings","complianceResources","complianceType","uri","dcfActionCode","AdyenCheckoutError","createCheckoutPayloadBasedOnScheme","logout","logoutPromises","map","unbindAppInstance","all","shopperCards","shopperEmail","lookupPromises","identityLookupPromise","identityLookup","identityValue","type","then","response","consumerPresent","setSdkForPerformingShopperIdentityValidation","catch","allSettled","_this_stateSubscriber","call","srcProfilesPromises","getSrcProfile","srcProfilesResponses","every","isRejected","profilesWithScheme","promiseResult","index","isFulfilled","_object_spread_props","value","filter","profile","createShopperCardsList","promises","isRecognizedPromise","isRecognized","initPromises","cfg","schemesConfig","init","srciTransactionId","constructor","_define_property","uuidv4"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SrcSdkLoader.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrcSdkLoader.ts"],"sourcesContent":["import { ISrcInitiator } from './AbstractSrcInitiator';\nimport VisaSdk from './VisaSdk';\nimport MastercardSdk from './MastercardSdk';\nimport { CustomSdkConfiguration } from './types';\nimport AdyenCheckoutError from '../../../../../core/Errors/AdyenCheckoutError';\nimport { isFulfilled, isRejected } from '../../../../../utils/promise-util';\n\nconst sdkMap: Record<string, typeof VisaSdk | typeof MastercardSdk | null> = {\n visa: VisaSdk,\n mc: MastercardSdk,\n default: null\n};\n\nconst getSchemeSdk = (scheme: string, environment: string, customConfig: CustomSdkConfiguration): ISrcInitiator | null => {\n const SchemeSdkClass = sdkMap[scheme] || sdkMap.default;\n return SchemeSdkClass ? new SchemeSdkClass(environment, customConfig) : null;\n};\n\nexport interface ISrcSdkLoader {\n load(environment: string): Promise<ISrcInitiator[]>;\n schemes: string[];\n}\n\nclass SrcSdkLoader implements ISrcSdkLoader {\n public readonly schemes: string[];\n private readonly customSdkConfiguration: CustomSdkConfiguration;\n\n constructor(schemes: string[], { dpaLocale = 'en_US', dpaPresentationName = '' }) {\n this.schemes = schemes;\n this.customSdkConfiguration = { dpaLocale, dpaPresentationName };\n }\n\n public async load(environment: string): Promise<ISrcInitiator[]> {\n if (!this.schemes || this.schemes.length === 0) {\n throw new AdyenCheckoutError('ERROR', 'ClickToPay -> SrcSdkLoader: There are no schemes set to be loaded');\n }\n\n return new Promise((resolve, reject) => {\n const sdks: ISrcInitiator[] = this.schemes.map(scheme => getSchemeSdk(scheme, environment, this.customSdkConfiguration));\n const loadScriptPromises = sdks.map(sdk => sdk.loadSdkScript());\n\n Promise.allSettled(loadScriptPromises).then(loadScriptResponses => {\n if (loadScriptResponses.every(isRejected)) {\n reject(\n new AdyenCheckoutError('ERROR', `ClickToPay -> SrcSdkLoader # Unable to load network schemes: ${this.schemes.toString()}`)\n );\n }\n\n const sdksLoaded = sdks.filter((sdk, index) => isFulfilled(loadScriptResponses[index]));\n\n resolve(sdksLoaded);\n });\n });\n }\n}\n\nexport default SrcSdkLoader;\n"],"names":["sdkMap","visa","VisaSdk","mc","MastercardSdk","default","SrcSdkLoader","load","environment","this","schemes","length","AdyenCheckoutError","Promise","resolve","reject","sdks","map","scheme","customConfig","SchemeSdkClass","getSchemeSdk","customSdkConfiguration","loadScriptPromises","sdk","loadSdkScript","allSettled","then","loadScriptResponses","every","isRejected","toString","sdksLoaded","filter","index","isFulfilled","constructor","dpaLocale","dpaPresentationName","_define_property"],"mappings":"yUAOA,MAAMA,EAAuE,CACzEC,KAAMC,EACNC,GAAIC,EACJC,QAAS,MAab,MAAMC,EASF,UAAaC,CAAKC,GACd,IAAKC,KAAKC,SAAmC,IAAxBD,KAAKC,QAAQC,OAC9B,MAAM,IAAIC,EAAmB,QAAS,qEAG1C,OAAO,IAAIC,SAAQ,CAACC,EAASC,KACzB,MAAMC,EAAwBP,KAAKC,QAAQO,KAAIC,GAzBtC,EAACA,EAAgBV,EAAqBW,KACvD,MAAMC,EAAiBpB,EAAOkB,IAAWlB,EAAOK,QAChD,OAAOe,EAAiB,IAAIA,EAAeZ,EAAaW,GAAgB,IAAA,EAuBPE,CAAaH,EAAQV,EAAaC,KAAKa,0BAC1FC,EAAqBP,EAAKC,KAAIO,GAAOA,EAAIC,kBAE/CZ,QAAQa,WAAWH,GAAoBI,MAAKC,IACpCA,EAAoBC,MAAMC,IAC1Bf,EACI,IAAIH,EAAmB,QAAS,gEAAgEH,KAAKC,QAAQqB,eAIrH,MAAMC,EAAahB,EAAKiB,QAAO,CAACT,EAAKU,IAAUC,EAAYP,EAAoBM,MAE/EpB,EAAQkB,EAAAA,GACZ,GAER,CA1BAI,WAAAA,CAAY1B,GAAmB2B,UAAEA,EAAY,QAAOC,oBAAEA,EAAsB,KAH5EC,EAAA9B,KAAgBC,eAAhB,GACA6B,EAAA9B,KAAiBa,8BAAjB,GAGIb,KAAKC,QAAUA,EACfD,KAAKa,uBAAyB,CAAEe,YAAWC,sBAC/C"}
1
+ {"version":3,"file":"SrcSdkLoader.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrcSdkLoader.ts"],"sourcesContent":["import { ISrcInitiator } from './AbstractSrcInitiator';\nimport VisaSdk from './VisaSdk';\nimport MastercardSdk from './MastercardSdk';\nimport { CustomSdkConfiguration } from './types';\nimport AdyenCheckoutError from '../../../../../core/Errors/AdyenCheckoutError';\nimport { isFulfilled, isRejected } from '../../../../../utils/promise-util';\n\nconst sdkMap: Record<string, typeof VisaSdk | typeof MastercardSdk | null> = {\n visa: VisaSdk,\n mc: MastercardSdk,\n default: null\n};\n\nconst getSchemeSdk = (scheme: string, environment: string, customConfig: CustomSdkConfiguration): ISrcInitiator | null => {\n const SchemeSdkClass = sdkMap[scheme] || sdkMap.default;\n return SchemeSdkClass ? new SchemeSdkClass(environment, customConfig) : null;\n};\n\nexport interface ISrcSdkLoader {\n load(environment: string): Promise<ISrcInitiator[]>;\n schemes: string[];\n}\n\nclass SrcSdkLoader implements ISrcSdkLoader {\n public readonly schemes: string[];\n private readonly customSdkConfiguration: CustomSdkConfiguration;\n\n constructor(schemes: string[], { dpaLocale = 'en_US', dpaPresentationName = '' }) {\n this.schemes = schemes;\n this.customSdkConfiguration = { dpaLocale, dpaPresentationName };\n }\n\n public async load(environment: string): Promise<ISrcInitiator[]> {\n if (!this.schemes || this.schemes.length === 0) {\n throw new AdyenCheckoutError('ERROR', 'ClickToPay -> SrcSdkLoader: There are no schemes set to be loaded');\n }\n\n return new Promise((resolve, reject) => {\n const sdks: ISrcInitiator[] = this.schemes.map(scheme => getSchemeSdk(scheme, environment, this.customSdkConfiguration));\n const loadScriptPromises = sdks.map(sdk => sdk.loadSdkScript());\n\n void Promise.allSettled(loadScriptPromises).then(loadScriptResponses => {\n if (loadScriptResponses.every(isRejected)) {\n reject(\n new AdyenCheckoutError('ERROR', `ClickToPay -> SrcSdkLoader # Unable to load network schemes: ${this.schemes.toString()}`)\n );\n }\n\n const sdksLoaded = sdks.filter((sdk, index) => isFulfilled(loadScriptResponses[index]));\n\n resolve(sdksLoaded);\n });\n });\n }\n}\n\nexport default SrcSdkLoader;\n"],"names":["sdkMap","visa","VisaSdk","mc","MastercardSdk","default","SrcSdkLoader","load","environment","this","schemes","length","AdyenCheckoutError","Promise","resolve","reject","sdks","map","scheme","customConfig","SchemeSdkClass","getSchemeSdk","customSdkConfiguration","loadScriptPromises","sdk","loadSdkScript","allSettled","then","loadScriptResponses","every","isRejected","toString","sdksLoaded","filter","index","isFulfilled","constructor","dpaLocale","dpaPresentationName","_define_property"],"mappings":"yUAOA,MAAMA,EAAuE,CACzEC,KAAMC,EACNC,GAAIC,EACJC,QAAS,MAab,MAAMC,EASF,UAAaC,CAAKC,GACd,IAAKC,KAAKC,SAAmC,IAAxBD,KAAKC,QAAQC,OAC9B,MAAM,IAAIC,EAAmB,QAAS,qEAG1C,OAAO,IAAIC,SAAQ,CAACC,EAASC,KACzB,MAAMC,EAAwBP,KAAKC,QAAQO,KAAIC,GAzBtC,EAACA,EAAgBV,EAAqBW,KACvD,MAAMC,EAAiBpB,EAAOkB,IAAWlB,EAAOK,QAChD,OAAOe,EAAiB,IAAIA,EAAeZ,EAAaW,GAAgB,IAAA,EAuBPE,CAAaH,EAAQV,EAAaC,KAAKa,0BAC1FC,EAAqBP,EAAKC,KAAIO,GAAOA,EAAIC,kBAE1CZ,QAAQa,WAAWH,GAAoBI,MAAKC,IACzCA,EAAoBC,MAAMC,IAC1Bf,EACI,IAAIH,EAAmB,QAAS,gEAAgEH,KAAKC,QAAQqB,eAIrH,MAAMC,EAAahB,EAAKiB,QAAO,CAACT,EAAKU,IAAUC,EAAYP,EAAoBM,MAE/EpB,EAAQkB,EAAAA,GACZ,GAER,CA1BAI,WAAAA,CAAY1B,GAAmB2B,UAAEA,EAAY,QAAOC,oBAAEA,EAAsB,KAH5EC,EAAA9B,KAAgBC,eAAhB,GACA6B,EAAA9B,KAAiBa,8BAAjB,GAGIb,KAAKC,QAAUA,EACfD,KAAKa,uBAAyB,CAAEe,YAAWC,sBAC/C"}
@@ -1,2 +1,2 @@
1
- function e(e,s,r){return s in e?Object.defineProperty(e,s,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[s]=r,e}class s extends Error{toString(){return`Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`}constructor(s,r,o){var i,n;super(),e(this,"reason",void 0),e(this,"message",void 0),e(this,"source",void 0),e(this,"scheme",void 0);const t="error"in s?null==s||null===(i=s.error)||void 0===i?void 0:i.message:null==s?void 0:s.message,a="error"in s?null==s||null===(n=s.error)||void 0===n?void 0:n.reason:null==s?void 0:s.reason;this.message=t,this.reason=a,this.source=r,this.scheme=o}}export{s as default};
1
+ function e(e,r,s){return r in e?Object.defineProperty(e,r,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[r]=s,e}class r extends Error{toString(){return`Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`}constructor(r,s,o){var i,t;super(),e(this,"reason",void 0),e(this,"message",void 0),e(this,"source",void 0),e(this,"scheme",void 0),e(this,"errorFromCardSchemeSdk",void 0);const n="error"in r?null==r||null===(i=r.error)||void 0===i?void 0:i.message:null==r?void 0:r.message,a="error"in r?null==r||null===(t=r.error)||void 0===t?void 0:t.reason:null==r?void 0:r.reason;this.message=n,this.reason=a,this.source=s,this.scheme=o,this.errorFromCardSchemeSdk=r}}export{r as default};
2
2
  //# sourceMappingURL=SrciError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SrciError.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrciError.ts"],"sourcesContent":["import { ClickToPayScheme } from '../../types';\n\nexport type MastercardError = {\n message: string;\n reason: string;\n};\n\nexport type VisaError = {\n error: {\n message: string;\n reason: string;\n };\n};\n\nclass SrciError extends Error {\n public reason: string;\n public message: string;\n public source: string;\n public scheme: ClickToPayScheme;\n\n constructor(schemeError: VisaError | MastercardError, source: string, scheme: ClickToPayScheme) {\n super();\n\n const message = 'error' in schemeError ? schemeError?.error?.message : schemeError?.message;\n const reason = 'error' in schemeError ? schemeError?.error?.reason : schemeError?.reason;\n\n this.message = message;\n this.reason = reason;\n this.source = source;\n this.scheme = scheme;\n }\n\n toString() {\n return `Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`;\n }\n}\n\nexport default SrciError;\n"],"names":["SrciError","Error","toString","this","reason","source","scheme","message","constructor","schemeError","super","_define_property","error"],"mappings":"wHAcA,MAAMA,UAAkBC,MAkBpBC,QAAAA,GACI,MAAO,WAAWC,KAAKC,oBAAoBD,KAAKE,oBAAoBF,KAAKG,qBAAqBH,KAAKI,SACvG,CAdAC,WAAAA,CAAYC,EAA0CJ,EAAgBC,OAGzBG,EACDA,EAHxCC,QANJC,EAAAR,KAAOC,cAAP,GACAO,EAAAR,KAAOI,eAAP,GACAI,EAAAR,KAAOE,cAAP,GACAM,EAAAR,KAAOG,cAAP,GAKI,MAAMC,EAAU,UAAWE,EAAcA,SAAAA,QAAAA,EAAAA,EAAaG,aAAbH,IAAAA,OAAAA,EAAAA,EAAoBF,QAAUE,aAAAA,EAAAA,EAAaF,QAC9EH,EAAS,UAAWK,EAAcA,SAAAA,QAAAA,EAAAA,EAAaG,aAAbH,IAAAA,OAAAA,EAAAA,EAAoBL,OAASK,aAAAA,EAAAA,EAAaL,OAElFD,KAAKI,QAAUA,EACfJ,KAAKC,OAASA,EACdD,KAAKE,OAASA,EACdF,KAAKG,OAASA,CAClB"}
1
+ {"version":3,"file":"SrciError.js","sources":["../../../../../../../src/components/internal/ClickToPay/services/sdks/SrciError.ts"],"sourcesContent":["import { ClickToPayScheme } from '../../types';\n\nexport type MastercardError = {\n message: string;\n reason: string;\n};\n\nexport type VisaError = {\n error: {\n message: string;\n reason: string;\n };\n};\n\nclass SrciError extends Error {\n public reason: string;\n public message: string;\n public source: string;\n public scheme: ClickToPayScheme;\n public errorFromCardSchemeSdk: unknown;\n\n constructor(schemeError: VisaError | MastercardError, source: string, scheme: ClickToPayScheme) {\n super();\n\n const message = 'error' in schemeError ? schemeError?.error?.message : schemeError?.message;\n const reason = 'error' in schemeError ? schemeError?.error?.reason : schemeError?.reason;\n\n this.message = message;\n this.reason = reason;\n this.source = source;\n this.scheme = scheme;\n this.errorFromCardSchemeSdk = schemeError;\n }\n\n toString() {\n return `Reason: ${this.reason} / Source: ${this.source} / Scheme: ${this.scheme} / Message: ${this.message}`;\n }\n}\n\nexport default SrciError;\n"],"names":["SrciError","Error","toString","this","reason","source","scheme","message","constructor","schemeError","super","_define_property","errorFromCardSchemeSdk","error"],"mappings":"wHAcA,MAAMA,UAAkBC,MAoBpBC,QAAAA,GACI,MAAO,WAAWC,KAAKC,oBAAoBD,KAAKE,oBAAoBF,KAAKG,qBAAqBH,KAAKI,SACvG,CAfAC,WAAAA,CAAYC,EAA0CJ,EAAgBC,OAGzBG,EACDA,EAHxCC,QAPJC,EAAAR,KAAOC,cAAP,GACAO,EAAAR,KAAOI,eAAP,GACAI,EAAAR,KAAOE,cAAP,GACAM,EAAAR,KAAOG,cAAP,GACAK,EAAAR,KAAOS,8BAAP,GAKI,MAAML,EAAU,UAAWE,EAAcA,SAAAA,QAAAA,EAAAA,EAAaI,aAAbJ,IAAAA,OAAAA,EAAAA,EAAoBF,QAAUE,aAAAA,EAAAA,EAAaF,QAC9EH,EAAS,UAAWK,EAAcA,SAAAA,QAAAA,EAAAA,EAAaI,aAAbJ,IAAAA,OAAAA,EAAAA,EAAoBL,OAASK,aAAAA,EAAAA,EAAaL,OAElFD,KAAKI,QAAUA,EACfJ,KAAKC,OAASA,EACdD,KAAKE,OAASA,EACdF,KAAKG,OAASA,EACdH,KAAKS,uBAAyBH,CAClC"}
@@ -1,2 +1,2 @@
1
- import e from"../models/ShopperCard.js";const r="ctpIframe";function s(e,r,s){const{scheme:a,tokenId:t,srcDigitalCardId:o,srcCorrelationId:c}=e;return"visa"===a?t?{srcScheme:a,srcCorrelationId:c,srcTokenReference:s.toLowerCase().includes("live")?t:"987654321"}:{srcScheme:a,srcCheckoutPayload:r.checkoutResponse,srcCorrelationId:c}:{srcScheme:a,srcDigitalCardId:o,srcCorrelationId:c}}function a(r,s){const{profiles:a,srcCorrelationId:t}=s,o=a.reduce(((r,a)=>[...r,...a.maskedCards.map((r=>new e(r,s.scheme,t)))]),[]);return[...r,...o]}function t(e,r){return new Date(r.dateOfCardLastUsed).getTime()-new Date(e.dateOfCardLastUsed).getTime()}function o(e,r){return r.isExpired?e.expiredCards.push(r):e.availableCards.push(r),e}function c(e){const{availableCards:r,expiredCards:s}=e.reduce(a,[]).reduce(o,{availableCards:[],expiredCards:[]});return[...r.sort(t),...s.sort(t)]}function n(e){return!!e.reason}export{r as CTP_IFRAME_NAME,s as createCheckoutPayloadBasedOnScheme,c as createShopperCardsList,n as isSrciError};
1
+ import e from"../models/ShopperCard.js";const r="ctpIframe";function s(e,r,s){const{scheme:a,tokenId:d,srcDigitalCardId:t,srcCorrelationId:n}=e;return"visa"===a?d?{srcScheme:a,srcCorrelationId:n,srcTokenReference:s.toLowerCase().includes("live")?d:"987654321"}:{srcScheme:a,srcCheckoutPayload:r.checkoutResponse,srcCorrelationId:n}:{srcScheme:a,srcDigitalCardId:t,srcCorrelationId:n}}function a(r,s){const{profiles:a,srcCorrelationId:d}=s,t=a.reduce(((r,a)=>[...r,...a.maskedCards.map((r=>new e(r,s.scheme,d)))]),[]);return[...r,...t]}function d(e,r){return new Date(r.dateOfCardLastUsed).getTime()-new Date(e.dateOfCardLastUsed).getTime()}function t(e,r){return new Date(r.dateOfCardCreated).getTime()-new Date(e.dateOfCardCreated).getTime()}function n(e,r){return r.isExpired?e.expiredCards.push(r):e.availableCards.push(r),e}function o(e,r){return r.dateOfCardLastUsed?e.usedCards.push(r):e.unusedCards.push(r),e}function c(e){const r=e.reduce(a,[]),{availableCards:s,expiredCards:c}=r.reduce(n,{availableCards:[],expiredCards:[]}),{unusedCards:u,usedCards:i}=s.reduce(o,{unusedCards:[],usedCards:[]});return[...i.sort(d),...u.sort(t),...c.sort(d)]}function u(e){return!!e.reason}export{r as CTP_IFRAME_NAME,s as createCheckoutPayloadBasedOnScheme,c as createShopperCardsList,u as isSrciError};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/components/internal/ClickToPay/services/utils.ts"],"sourcesContent":["import { CardTypes, ClickToPayCheckoutPayload, SrcProfileWithScheme } from './types';\nimport { SrciCheckoutResponse } from './sdks/types';\nimport ShopperCard from '../models/ShopperCard';\nimport SrciError from './sdks/SrciError';\n\nexport const CTP_IFRAME_NAME = 'ctpIframe';\n\n/**\n * Creates the payload for the /payments call\n */\nfunction createCheckoutPayloadBasedOnScheme(\n card: ShopperCard,\n srciCheckoutResponse: SrciCheckoutResponse,\n environment: string\n): ClickToPayCheckoutPayload {\n const { scheme, tokenId, srcDigitalCardId, srcCorrelationId } = card;\n\n switch (scheme) {\n case 'visa':\n /**\n * For test environment, we are using hardcoded tokenId\n */\n return tokenId\n ? {\n srcScheme: scheme,\n srcCorrelationId,\n srcTokenReference: environment.toLowerCase().includes('live') ? tokenId : '987654321'\n }\n : { srcScheme: scheme, srcCheckoutPayload: srciCheckoutResponse.checkoutResponse, srcCorrelationId };\n case 'mc':\n default:\n return { srcScheme: scheme, srcDigitalCardId, srcCorrelationId };\n }\n}\n\nfunction createShopperMaskedCardsData(memo: ShopperCard[], srcProfile: SrcProfileWithScheme): ShopperCard[] {\n const { profiles, srcCorrelationId } = srcProfile;\n\n const cards: ShopperCard[] = profiles.reduce((memo: ShopperCard[], profile) => {\n const profileCards: ShopperCard[] = profile.maskedCards.map(maskedCard => new ShopperCard(maskedCard, srcProfile.scheme, srcCorrelationId));\n return [...memo, ...profileCards];\n }, []);\n\n return [...memo, ...cards];\n}\n\nfunction sortCardByLastTimeUsed(card1: ShopperCard, card2: ShopperCard) {\n return new Date(card2.dateOfCardLastUsed).getTime() - new Date(card1.dateOfCardLastUsed).getTime();\n}\n\nfunction splitAvailableAndExpiredCards(memo: CardTypes, card: ShopperCard): CardTypes {\n if (card.isExpired) memo.expiredCards.push(card);\n else memo.availableCards.push(card);\n return memo;\n}\n\n/**\n * Creates the Shopper card list. The available cards are placed before the expired cards\n */\nfunction createShopperCardsList(srcProfiles: SrcProfileWithScheme[]): ShopperCard[] {\n const { availableCards, expiredCards } = srcProfiles\n .reduce(createShopperMaskedCardsData, [])\n .reduce(splitAvailableAndExpiredCards, { availableCards: [], expiredCards: [] });\n\n return [...availableCards.sort(sortCardByLastTimeUsed), ...expiredCards.sort(sortCardByLastTimeUsed)];\n}\n\nfunction isSrciError(error: unknown): error is SrciError {\n if ((error as SrciError).reason) return true;\n return false;\n}\n\nexport { createShopperCardsList, createCheckoutPayloadBasedOnScheme, isSrciError };\n"],"names":["CTP_IFRAME_NAME","createCheckoutPayloadBasedOnScheme","card","srciCheckoutResponse","environment","scheme","tokenId","srcDigitalCardId","srcCorrelationId","srcScheme","srcTokenReference","toLowerCase","includes","srcCheckoutPayload","checkoutResponse","createShopperMaskedCardsData","memo","srcProfile","profiles","cards","reduce","profile","maskedCards","map","maskedCard","ShopperCard","sortCardByLastTimeUsed","card1","card2","Date","dateOfCardLastUsed","getTime","splitAvailableAndExpiredCards","isExpired","expiredCards","push","availableCards","createShopperCardsList","srcProfiles","sort","isSrciError","error","reason"],"mappings":"wCAKO,MAAMA,EAAkB,YAK/B,SAASC,EACLC,EACAC,EACAC,GAEA,MAAMC,OAAEA,EAAMC,QAAEA,EAAOC,iBAAEA,EAAgBC,iBAAEA,GAAqBN,EAEhE,MACS,SADDG,EAKOC,EACD,CACIG,UAAWJ,EACXG,mBACAE,kBAAmBN,EAAYO,cAAcC,SAAS,QAAUN,EAAU,aAE9E,CAAEG,UAAWJ,EAAQQ,mBAAoBV,EAAqBW,iBAAkBN,oBAG/E,CAAEC,UAAWJ,EAAQE,mBAAkBC,mBAE1D,CAEA,SAASO,EAA6BC,EAAqBC,GACvD,MAAMC,SAAEA,EAAQV,iBAAEA,GAAqBS,EAEjCE,EAAuBD,EAASE,QAAO,CAACJ,EAAqBK,IAExD,IAAIL,KADyBK,EAAQC,YAAYC,KAAIC,GAAc,IAAIC,EAAYD,EAAYP,EAAWZ,OAAQG,OAE1H,IAEH,MAAO,IAAIQ,KAASG,EACxB,CAEA,SAASO,EAAuBC,EAAoBC,GAChD,OAAO,IAAIC,KAAKD,EAAME,oBAAoBC,UAAY,IAAIF,KAAKF,EAAMG,oBAAoBC,SAC7F,CAEA,SAASC,EAA8BhB,EAAiBd,GAGpD,OAFIA,EAAK+B,UAAWjB,EAAKkB,aAAaC,KAAKjC,GACtCc,EAAKoB,eAAeD,KAAKjC,GACvBc,CACX,CAKA,SAASqB,EAAuBC,GAC5B,MAAMF,eAAEA,EAAcF,aAAEA,GAAiBI,EACpClB,OAAOL,EAA8B,IACrCK,OAAOY,EAA+B,CAAEI,eAAgB,GAAIF,aAAc,KAE/E,MAAO,IAAIE,EAAeG,KAAKb,MAA4BQ,EAAaK,KAAKb,GACjF,CAEA,SAASc,EAAYC,GACjB,QAAIA,EAAqBC,MAE7B"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/components/internal/ClickToPay/services/utils.ts"],"sourcesContent":["import { CardTypes, ClickToPayCheckoutPayload, SrcProfileWithScheme } from './types';\nimport { SrciCheckoutResponse } from './sdks/types';\nimport ShopperCard from '../models/ShopperCard';\nimport SrciError from './sdks/SrciError';\n\nexport const CTP_IFRAME_NAME = 'ctpIframe';\n\n/**\n * Creates the payload for the /payments call\n */\nfunction createCheckoutPayloadBasedOnScheme(\n card: ShopperCard,\n srciCheckoutResponse: SrciCheckoutResponse,\n environment: string\n): ClickToPayCheckoutPayload {\n const { scheme, tokenId, srcDigitalCardId, srcCorrelationId } = card;\n\n switch (scheme) {\n case 'visa':\n /**\n * For test environment, we are using hardcoded tokenId\n */\n return tokenId\n ? {\n srcScheme: scheme,\n srcCorrelationId,\n srcTokenReference: environment.toLowerCase().includes('live') ? tokenId : '987654321'\n }\n : { srcScheme: scheme, srcCheckoutPayload: srciCheckoutResponse.checkoutResponse, srcCorrelationId };\n case 'mc':\n default:\n return { srcScheme: scheme, srcDigitalCardId, srcCorrelationId };\n }\n}\n\nfunction createShopperMaskedCardsData(memo: ShopperCard[], srcProfile: SrcProfileWithScheme): ShopperCard[] {\n const { profiles, srcCorrelationId } = srcProfile;\n\n const cards: ShopperCard[] = profiles.reduce((memo: ShopperCard[], profile) => {\n const profileCards: ShopperCard[] = profile.maskedCards.map(maskedCard => new ShopperCard(maskedCard, srcProfile.scheme, srcCorrelationId));\n return [...memo, ...profileCards];\n }, []);\n\n return [...memo, ...cards];\n}\n\nfunction sortCardByLastTimeUsed(card1: ShopperCard, card2: ShopperCard) {\n return new Date(card2.dateOfCardLastUsed).getTime() - new Date(card1.dateOfCardLastUsed).getTime();\n}\n\nfunction sortCardByLastTimeCreated(card1: ShopperCard, card2: ShopperCard) {\n return new Date(card2.dateOfCardCreated).getTime() - new Date(card1.dateOfCardCreated).getTime();\n}\n\nfunction splitAvailableAndExpiredCards(memo: CardTypes, card: ShopperCard): CardTypes {\n if (card.isExpired) memo.expiredCards.push(card);\n else memo.availableCards.push(card);\n return memo;\n}\n\nfunction splitUnusedAndUsedCards(memo: { unusedCards: ShopperCard[]; usedCards: ShopperCard[] }, card: ShopperCard) {\n if (card.dateOfCardLastUsed) memo.usedCards.push(card);\n else memo.unusedCards.push(card);\n return memo;\n}\n\n/**\n * Creates the Shopper card list. The available cards are placed before the expired cards\n */\nfunction createShopperCardsList(srcProfiles: SrcProfileWithScheme[]): ShopperCard[] {\n const cards: ShopperCard[] = srcProfiles.reduce(createShopperMaskedCardsData, []);\n const { availableCards, expiredCards } = cards.reduce(splitAvailableAndExpiredCards, { availableCards: [], expiredCards: [] });\n const { unusedCards, usedCards } = availableCards.reduce(splitUnusedAndUsedCards, { unusedCards: [], usedCards: [] });\n\n return [...usedCards.sort(sortCardByLastTimeUsed), ...unusedCards.sort(sortCardByLastTimeCreated), ...expiredCards.sort(sortCardByLastTimeUsed)];\n}\n\nfunction isSrciError(error: unknown): error is SrciError {\n if ((error as SrciError).reason) return true;\n return false;\n}\n\nexport { createShopperCardsList, createCheckoutPayloadBasedOnScheme, isSrciError };\n"],"names":["CTP_IFRAME_NAME","createCheckoutPayloadBasedOnScheme","card","srciCheckoutResponse","environment","scheme","tokenId","srcDigitalCardId","srcCorrelationId","srcScheme","srcTokenReference","toLowerCase","includes","srcCheckoutPayload","checkoutResponse","createShopperMaskedCardsData","memo","srcProfile","profiles","cards","reduce","profile","maskedCards","map","maskedCard","ShopperCard","sortCardByLastTimeUsed","card1","card2","Date","dateOfCardLastUsed","getTime","sortCardByLastTimeCreated","dateOfCardCreated","splitAvailableAndExpiredCards","isExpired","expiredCards","push","availableCards","splitUnusedAndUsedCards","usedCards","unusedCards","createShopperCardsList","srcProfiles","sort","isSrciError","error","reason"],"mappings":"wCAKO,MAAMA,EAAkB,YAK/B,SAASC,EACLC,EACAC,EACAC,GAEA,MAAMC,OAAEA,EAAMC,QAAEA,EAAOC,iBAAEA,EAAgBC,iBAAEA,GAAqBN,EAEhE,MACS,SADDG,EAKOC,EACD,CACIG,UAAWJ,EACXG,mBACAE,kBAAmBN,EAAYO,cAAcC,SAAS,QAAUN,EAAU,aAE9E,CAAEG,UAAWJ,EAAQQ,mBAAoBV,EAAqBW,iBAAkBN,oBAG/E,CAAEC,UAAWJ,EAAQE,mBAAkBC,mBAE1D,CAEA,SAASO,EAA6BC,EAAqBC,GACvD,MAAMC,SAAEA,EAAQV,iBAAEA,GAAqBS,EAEjCE,EAAuBD,EAASE,QAAO,CAACJ,EAAqBK,IAExD,IAAIL,KADyBK,EAAQC,YAAYC,KAAIC,GAAc,IAAIC,EAAYD,EAAYP,EAAWZ,OAAQG,OAE1H,IAEH,MAAO,IAAIQ,KAASG,EACxB,CAEA,SAASO,EAAuBC,EAAoBC,GAChD,OAAO,IAAIC,KAAKD,EAAME,oBAAoBC,UAAY,IAAIF,KAAKF,EAAMG,oBAAoBC,SAC7F,CAEA,SAASC,EAA0BL,EAAoBC,GACnD,OAAO,IAAIC,KAAKD,EAAMK,mBAAmBF,UAAY,IAAIF,KAAKF,EAAMM,mBAAmBF,SAC3F,CAEA,SAASG,EAA8BlB,EAAiBd,GAGpD,OAFIA,EAAKiC,UAAWnB,EAAKoB,aAAaC,KAAKnC,GACtCc,EAAKsB,eAAeD,KAAKnC,GACvBc,CACX,CAEA,SAASuB,EAAwBvB,EAAgEd,GAG7F,OAFIA,EAAK4B,mBAAoBd,EAAKwB,UAAUH,KAAKnC,GAC5Cc,EAAKyB,YAAYJ,KAAKnC,GACpBc,CACX,CAKA,SAAS0B,EAAuBC,GAC5B,MAAMxB,EAAuBwB,EAAYvB,OAAOL,EAA8B,KACxEuB,eAAEA,EAAcF,aAAEA,GAAiBjB,EAAMC,OAAOc,EAA+B,CAAEI,eAAgB,GAAIF,aAAc,MACnHK,YAAEA,EAAWD,UAAEA,GAAcF,EAAelB,OAAOmB,EAAyB,CAAEE,YAAa,GAAID,UAAW,KAEhH,MAAO,IAAIA,EAAUI,KAAKlB,MAA4Be,EAAYG,KAAKZ,MAA+BI,EAAaQ,KAAKlB,GAC5H,CAEA,SAASmB,EAAYC,GACjB,QAAIA,EAAqBC,MAE7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"DisclaimerMessage.js","sources":["../../../../../src/components/internal/DisclaimerMessage/DisclaimerMessage.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { isValidHttpUrl } from '../../../utils/isValidURL';\nimport './DisclaimerMessage.scss';\nimport { interpolateElement } from '../../../language/utils';\nexport interface DisclaimerMsgObject {\n message: string;\n linkText: string;\n link: string;\n}\n\ninterface InternalDisclaimerMsgObject {\n message: string;\n urls: Array<string>;\n}\n\nfunction render(message: string, urls: Array<string>) {\n return (\n <span className=\"adyen-checkout-disclaimer__label\">\n {interpolateElement(\n message,\n urls.map(url => translation => (\n <a className=\"adyen-checkout-link\" href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n {translation}\n </a>\n ))\n )}\n </span>\n );\n}\n/* eslint-disable */\n/**\n * props: {\n * message: 'By continuing you agree with the %#terms and conditions%#',\n * urls: ['https://www.adyen.com']\n * }\n * String inside the '%#' token pair will be rendered as an anchor element.\n */\n/* eslint-enable */\nexport default function DisclaimerMessage({ message, urls }: InternalDisclaimerMsgObject) {\n const messageIsStr = typeof message === 'string';\n const validUrls = urls.every(url => typeof url === 'string' && isValidHttpUrl(url));\n if (!messageIsStr || !validUrls) return null;\n\n return render(message, urls);\n}\n"],"names":["DisclaimerMessage","message","urls","messageIsStr","validUrls","every","url","isValidHttpUrl","h","span","className","interpolateElement","map","translation","a","href","target","rel","render"],"mappings":"sMAsCe,SAASA,GAAkBC,QAAEA,EAAOC,KAAEA,IACjD,MAAMC,EAAkC,iBAAZF,EACtBG,EAAYF,EAAKG,OAAMC,GAAsB,iBAARA,GAAoBC,EAAeD,KAC9E,OAAKH,GAAiBC,EA1B1B,SAAgBH,EAAiBC,GAC7B,OACIM,EAACC,OAAAA,CAAKC,UAAU,oCACXC,EACGV,EACAC,EAAKU,KAAIN,GAAOO,GACZL,EAACM,IAAAA,CAAEJ,UAAU,sBAAsBK,KAAMT,EAAKU,OAAO,SAASC,IAAI,uBAC7DJ,MAMzB,CAeWK,CAAOjB,EAASC,GAFiB,IAG5C"}
1
+ {"version":3,"file":"DisclaimerMessage.js","sources":["../../../../../src/components/internal/DisclaimerMessage/DisclaimerMessage.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { isValidHttpUrl } from '../../../utils/isValidURL';\nimport './DisclaimerMessage.scss';\nimport { interpolateElement } from '../../../language/utils';\nexport interface DisclaimerMsgObject {\n message: string;\n linkText: string;\n link: string;\n}\n\ninterface InternalDisclaimerMsgObject {\n message: string;\n urls: Array<string>;\n}\n\nfunction render(message: string, urls: Array<string>) {\n return (\n <span className=\"adyen-checkout-disclaimer__label\">\n {interpolateElement(\n message,\n // eslint-disable-next-line react/display-name\n urls.map(url => translation => (\n <a className=\"adyen-checkout-link\" href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n {translation}\n </a>\n ))\n )}\n </span>\n );\n}\n\n/**\n * props: {\n * message: 'By continuing you agree with the %#terms and conditions%#',\n * urls: ['https://www.adyen.com']\n * }\n * String inside the '%#' token pair will be rendered as an anchor element.\n */\n\nexport default function DisclaimerMessage({ message, urls }: InternalDisclaimerMsgObject) {\n const messageIsStr = typeof message === 'string';\n const validUrls = urls.every(url => typeof url === 'string' && isValidHttpUrl(url));\n if (!messageIsStr || !validUrls) return null;\n\n return render(message, urls);\n}\n"],"names":["DisclaimerMessage","message","urls","messageIsStr","validUrls","every","url","isValidHttpUrl","h","span","className","interpolateElement","map","translation","a","href","target","rel","render"],"mappings":"sMAuCe,SAASA,GAAkBC,QAAEA,EAAOC,KAAEA,IACjD,MAAMC,EAAkC,iBAAZF,EACtBG,EAAYF,EAAKG,OAAMC,GAAsB,iBAARA,GAAoBC,EAAeD,KAC9E,OAAKH,GAAiBC,EA3B1B,SAAgBH,EAAiBC,GAC7B,OACIM,EAACC,OAAAA,CAAKC,UAAU,oCACXC,EACGV,EAEAC,EAAKU,KAAIN,GAAOO,GACZL,EAACM,IAAAA,CAAEJ,UAAU,sBAAsBK,KAAMT,EAAKU,OAAO,SAASC,IAAI,uBAC7DJ,MAMzB,CAeWK,CAAOjB,EAASC,GAFiB,IAG5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputBase.js","sources":["../../../../../src/components/internal/FormFields/InputBase.tsx"],"sourcesContent":["import { h, RefCallback } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../core/Errors/constants';\nimport Language from '../../../language';\nimport './FormFields.scss';\n\nexport interface InputBaseProps extends h.JSX.HTMLAttributes {\n classNameModifiers?: string[];\n isInvalid?: boolean;\n isValid?: boolean;\n readonly?: boolean;\n uniqueId?: string;\n disabled?: boolean;\n className?: string;\n placeholder?: string;\n value?: string;\n name?: string;\n checked?: boolean;\n setRef?: RefCallback<HTMLInputElement>;\n trimOnBlur?: boolean;\n i18n?: Language;\n label?: string;\n onBlurHandler?: h.JSX.GenericEventHandler<HTMLInputElement>;\n onFocusHandler?: h.JSX.GenericEventHandler<HTMLInputElement>;\n maxlength?: number | null;\n addContextualElement?: boolean;\n}\n\nexport default function InputBase({ setRef, ...props }: InputBaseProps) {\n const { autoCorrect, classNameModifiers, isInvalid, isValid, readonly = null, spellCheck, type, uniqueId, disabled } = props;\n const className = props.className as string;\n\n /**\n * To avoid confusion with misplaced/misdirected onChange handlers - InputBase only accepts onInput, onBlur & onFocus handlers.\n * The first 2 being the means by which we expect useForm--handleChangeFor validation functionality to be applied.\n */\n if (Object.prototype.hasOwnProperty.call(props, 'onChange')) {\n console.error('Error: Form fields that rely on InputBase may not have an onChange property');\n }\n\n const handleInput = useCallback(\n (event: h.JSX.TargetedInputEvent<HTMLInputElement>) => {\n props.onInput(event);\n },\n [props.onInput]\n );\n\n const handleKeyPress = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (props?.onKeyPress) props.onKeyPress(event);\n },\n [props?.onKeyPress]\n );\n\n const handleKeyUp = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (props?.onKeyUp) props.onKeyUp(event);\n },\n [props?.onKeyUp]\n );\n\n const handleBlur = useCallback(\n (event: h.JSX.TargetedFocusEvent<HTMLInputElement>) => {\n props?.onBlurHandler?.(event); // From Field component\n\n if (props.trimOnBlur) {\n (event.target as HTMLInputElement).value = (event.target as HTMLInputElement).value.trim(); // needed to trim trailing spaces in field (leading spaces can be done via formatting)\n }\n\n props?.onBlur?.(event);\n },\n [props.onBlur, props.onBlurHandler]\n );\n\n const handleFocus = useCallback(\n (event: h.JSX.TargetedEvent<HTMLInputElement>) => {\n props?.onFocusHandler?.(event); // From Field component\n },\n [props.onFocusHandler]\n );\n\n const inputClassNames = classNames(\n 'adyen-checkout__input',\n [`adyen-checkout__input--${type}`],\n className,\n {\n 'adyen-checkout__input--invalid': isInvalid,\n 'adyen-checkout__input--valid': isValid\n },\n classNameModifiers.map(m => `adyen-checkout__input--${m}`)\n );\n\n // Don't spread classNameModifiers etc to input element (it ends up as an attribute on the element itself)\n const { classNameModifiers: cnm, uniqueId: uid, isInvalid: iiv, isValid: iv, addContextualElement: ace, ...newProps } = props;\n\n return (\n <input\n id={uniqueId}\n {...newProps}\n aria-required={newProps.required}\n type={type}\n className={inputClassNames}\n readOnly={readonly}\n spellCheck={spellCheck}\n autoCorrect={autoCorrect}\n aria-describedby={`${uniqueId}${isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX}`}\n aria-invalid={isInvalid}\n onInput={handleInput}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n onKeyPress={handleKeyPress}\n disabled={disabled}\n ref={setRef}\n />\n );\n}\n\nInputBase.defaultProps = {\n type: 'text',\n classNameModifiers: []\n};\n"],"names":["InputBase","_param","setRef","props","_object_without_properties","autoCorrect","classNameModifiers","isInvalid","isValid","readonly","spellCheck","type","uniqueId","disabled","className","Object","prototype","hasOwnProperty","call","console","error","handleInput","useCallback","event","onInput","handleKeyPress","onKeyPress","handleKeyUp","onKeyUp","handleBlur","onBlurHandler","trimOnBlur","target","value","trim","onBlur","handleFocus","onFocusHandler","inputClassNames","classNames","map","m","newProps","addContextualElement","h","input","id","aria-required","required","readOnly","aria-describedby","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","aria-invalid","onFocus","ref","defaultProps"],"mappings":"ooCA6Be,SAASA,EAAUC,GAAA,IAAAC,OAAEA,GAAFD,EAAaE,EAAbC,EAAAH,EAAA,CAAEC,WAChC,MAAMG,YAAEA,EAAWC,mBAAEA,EAAkBC,UAAEA,EAASC,QAAEA,EAAOC,SAAEA,EAAW,KAAIC,WAAEA,EAAUC,KAAEA,EAAIC,SAAEA,EAAQC,SAAEA,GAAaV,EACjHW,EAAYX,EAAMW,UAMpBC,OAAOC,UAAUC,eAAeC,KAAKf,EAAO,aAC5CgB,QAAQC,MAAM,+EAGlB,MAAMC,EAAcC,GACfC,IACGpB,EAAMqB,QAAQD,EAAAA,GAElB,CAACpB,EAAMqB,UAGLC,EAAiBH,GAClBC,KACOpB,aAAAA,EAAAA,EAAOuB,aAAYvB,EAAMuB,WAAWH,EAAAA,GAE5C,CAACpB,aAAAA,EAAAA,EAAOuB,aAGNC,EAAcL,GACfC,KACOpB,aAAAA,EAAAA,EAAOyB,UAASzB,EAAMyB,QAAQL,EAAAA,GAEtC,CAACpB,aAAAA,EAAAA,EAAOyB,UAGNC,EAAaP,GACdC,QACGpB,EAMAA,EANAA,iBAAAA,EAAAA,EAAO2B,qBAAP3B,IAAAA,GAAAA,EAAAA,KAAAA,EAAuBoB,GAEnBpB,EAAM4B,aACLR,EAAMS,OAA4BC,MAAQV,EAAOS,OAA4BC,MAAMC,QAGxF/B,SAAAA,QAAAA,EAAAA,EAAOgC,cAAPhC,IAAAA,GAAAA,OAAAA,EAAgBoB,EAAAA,GAEpB,CAACpB,EAAMgC,OAAQhC,EAAM2B,gBAGnBM,EAAcd,GACfC,IACGpB,IAAAA,EAAAA,iBAAAA,EAAAA,EAAOkC,sBAAPlC,IAAAA,GAAAA,EAAAA,KAAAA,EAAwBoB,EAAAA,GAE5B,CAACpB,EAAMkC,iBAGLC,EAAkBC,EACpB,wBACA,CAAC,0BAA0B5B,KAC3BG,EACA,CACI,iCAAkCP,EAClC,+BAAgCC,GAEpCF,EAAmBkC,KAAIC,GAAK,0BAA0BA,OAIiDC,EAAavC,EAAAA,EAAAA,CAAhHG,qBAAyBM,WAAeL,YAAgBC,UAAamC,yBAE7E,OACIC,EAACC,QAAAA,wUAAAA,CAAAA,CACGC,GAAIlC,GACA8B,GAAAA,CACJK,gBAAeL,EAASM,SACxBrC,KAAMA,EACNG,UAAWwB,EACXW,SAAUxC,EACVC,WAAYA,EACZL,YAAaA,EACb6C,mBAAkB,GAAGtC,IAAWL,EAAY4C,EAAoBC,IAChEC,eAAc9C,EACdiB,QAASH,EACTc,OAAQN,EACRyB,QAASlB,EACTR,QAASD,EACTD,WAAYD,EACZZ,SAAUA,EACV0C,IAAKrD,IAGjB,CAEAF,EAAUwD,aAAe,CACrB7C,KAAM,OACNL,mBAAoB"}
1
+ {"version":3,"file":"InputBase.js","sources":["../../../../../src/components/internal/FormFields/InputBase.tsx"],"sourcesContent":["import { h, RefCallback } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../core/Errors/constants';\nimport Language from '../../../language';\nimport './FormFields.scss';\n\nexport interface InputBaseProps extends h.JSX.HTMLAttributes {\n classNameModifiers?: string[];\n isInvalid?: boolean;\n isValid?: boolean;\n readonly?: boolean;\n uniqueId?: string;\n disabled?: boolean;\n className?: string;\n placeholder?: string;\n value?: string;\n name?: string;\n checked?: boolean;\n setRef?: RefCallback<HTMLInputElement>;\n trimOnBlur?: boolean;\n i18n?: Language;\n label?: string;\n onBlurHandler?: h.JSX.GenericEventHandler<HTMLInputElement>;\n onFocusHandler?: h.JSX.GenericEventHandler<HTMLInputElement>;\n maxlength?: number | null;\n addContextualElement?: boolean;\n type?: string;\n}\n\nexport default function InputBase({ setRef, ...props }: InputBaseProps) {\n const { autoCorrect, classNameModifiers, isInvalid, isValid, readonly = null, spellCheck, type, uniqueId, disabled } = props;\n const className = props.className;\n\n /**\n * To avoid confusion with misplaced/misdirected onChange handlers - InputBase only accepts onInput, onBlur & onFocus handlers.\n * The first 2 being the means by which we expect useForm--handleChangeFor validation functionality to be applied.\n */\n if (Object.prototype.hasOwnProperty.call(props, 'onChange')) {\n console.error('Error: Form fields that rely on InputBase may not have an onChange property');\n }\n\n const handleInput = useCallback(\n (event: h.JSX.TargetedInputEvent<HTMLInputElement>) => {\n props.onInput(event);\n },\n [props.onInput]\n );\n\n const handleKeyPress = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (props?.onKeyPress) props.onKeyPress(event);\n },\n [props?.onKeyPress]\n );\n\n const handleKeyUp = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (props?.onKeyUp) props.onKeyUp(event);\n },\n [props?.onKeyUp]\n );\n\n const handleBlur = useCallback(\n (event: h.JSX.TargetedFocusEvent<HTMLInputElement>) => {\n props?.onBlurHandler?.(event); // From Field component\n\n if (props.trimOnBlur) {\n (event.target as HTMLInputElement).value = (event.target as HTMLInputElement).value.trim(); // needed to trim trailing spaces in field (leading spaces can be done via formatting)\n }\n\n props?.onBlur?.(event);\n },\n [props.onBlur, props.onBlurHandler]\n );\n\n const handleFocus = useCallback(\n (event: h.JSX.TargetedEvent<HTMLInputElement>) => {\n props?.onFocusHandler?.(event); // From Field component\n },\n [props.onFocusHandler]\n );\n\n const inputClassNames = classNames(\n 'adyen-checkout__input',\n [`adyen-checkout__input--${type}`],\n className,\n {\n 'adyen-checkout__input--invalid': isInvalid,\n 'adyen-checkout__input--valid': isValid\n },\n classNameModifiers.map(m => `adyen-checkout__input--${m}`)\n );\n\n // Don't spread classNameModifiers etc to input element (it ends up as an attribute on the element itself)\n const { classNameModifiers: cnm, uniqueId: uid, isInvalid: iiv, isValid: iv, addContextualElement: ace, ...newProps } = props;\n\n return (\n <input\n id={uniqueId}\n {...newProps}\n aria-required={newProps.required}\n type={type}\n className={inputClassNames}\n readOnly={readonly}\n spellCheck={spellCheck}\n autoCorrect={autoCorrect}\n aria-describedby={`${uniqueId}${isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX}`}\n aria-invalid={isInvalid}\n onInput={handleInput}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n onKeyPress={handleKeyPress}\n disabled={disabled}\n ref={setRef}\n />\n );\n}\n\nInputBase.defaultProps = {\n type: 'text',\n classNameModifiers: []\n};\n"],"names":["InputBase","_param","setRef","props","_object_without_properties","autoCorrect","classNameModifiers","isInvalid","isValid","readonly","spellCheck","type","uniqueId","disabled","className","Object","prototype","hasOwnProperty","call","console","error","handleInput","useCallback","event","onInput","handleKeyPress","onKeyPress","handleKeyUp","onKeyUp","handleBlur","onBlurHandler","trimOnBlur","target","value","trim","onBlur","handleFocus","onFocusHandler","inputClassNames","classNames","map","m","newProps","addContextualElement","h","input","id","aria-required","required","readOnly","aria-describedby","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","aria-invalid","onFocus","ref","defaultProps"],"mappings":"ooCA8Be,SAASA,EAAUC,GAAA,IAAAC,OAAEA,GAAFD,EAAaE,EAAbC,EAAAH,EAAA,CAAEC,WAChC,MAAMG,YAAEA,EAAWC,mBAAEA,EAAkBC,UAAEA,EAASC,QAAEA,EAAOC,SAAEA,EAAW,KAAIC,WAAEA,EAAUC,KAAEA,EAAIC,SAAEA,EAAQC,SAAEA,GAAaV,EACjHW,EAAYX,EAAMW,UAMpBC,OAAOC,UAAUC,eAAeC,KAAKf,EAAO,aAC5CgB,QAAQC,MAAM,+EAGlB,MAAMC,EAAcC,GACfC,IACGpB,EAAMqB,QAAQD,EAAAA,GAElB,CAACpB,EAAMqB,UAGLC,EAAiBH,GAClBC,KACOpB,aAAAA,EAAAA,EAAOuB,aAAYvB,EAAMuB,WAAWH,EAAAA,GAE5C,CAACpB,aAAAA,EAAAA,EAAOuB,aAGNC,EAAcL,GACfC,KACOpB,aAAAA,EAAAA,EAAOyB,UAASzB,EAAMyB,QAAQL,EAAAA,GAEtC,CAACpB,aAAAA,EAAAA,EAAOyB,UAGNC,EAAaP,GACdC,QACGpB,EAMAA,EANAA,iBAAAA,EAAAA,EAAO2B,qBAAP3B,IAAAA,GAAAA,EAAAA,KAAAA,EAAuBoB,GAEnBpB,EAAM4B,aACLR,EAAMS,OAA4BC,MAAQV,EAAOS,OAA4BC,MAAMC,QAGxF/B,SAAAA,QAAAA,EAAAA,EAAOgC,cAAPhC,IAAAA,GAAAA,OAAAA,EAAgBoB,EAAAA,GAEpB,CAACpB,EAAMgC,OAAQhC,EAAM2B,gBAGnBM,EAAcd,GACfC,IACGpB,IAAAA,EAAAA,iBAAAA,EAAAA,EAAOkC,sBAAPlC,IAAAA,GAAAA,EAAAA,KAAAA,EAAwBoB,EAAAA,GAE5B,CAACpB,EAAMkC,iBAGLC,EAAkBC,EACpB,wBACA,CAAC,0BAA0B5B,KAC3BG,EACA,CACI,iCAAkCP,EAClC,+BAAgCC,GAEpCF,EAAmBkC,KAAIC,GAAK,0BAA0BA,OAIiDC,EAAavC,EAAAA,EAAAA,CAAhHG,qBAAyBM,WAAeL,YAAgBC,UAAamC,yBAE7E,OACIC,EAACC,QAAAA,wUAAAA,CAAAA,CACGC,GAAIlC,GACA8B,GAAAA,CACJK,gBAAeL,EAASM,SACxBrC,KAAMA,EACNG,UAAWwB,EACXW,SAAUxC,EACVC,WAAYA,EACZL,YAAaA,EACb6C,mBAAkB,GAAGtC,IAAWL,EAAY4C,EAAoBC,IAChEC,eAAc9C,EACdiB,QAASH,EACTc,OAAQN,EACRyB,QAASlB,EACTR,QAASD,EACTD,WAAYD,EACZZ,SAAUA,EACV0C,IAAKrD,IAGjB,CAEAF,EAAUwD,aAAe,CACrB7C,KAAM,OACNL,mBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../../src/components/internal/FormFields/Select/Select.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport cx from 'classnames';\nimport SelectButton from './components/SelectButton';\nimport SelectList from './components/SelectList';\nimport uuid from '../../../../utils/uuid';\nimport { keys } from './constants';\nimport { SelectItem, SelectProps } from './types';\nimport './Select.scss';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../../core/Errors/constants';\nimport { simulateFocusScroll } from '../utils';\n\nfunction Select({\n items = [],\n className = '',\n classNameModifiers = [],\n filterable = true,\n readonly = false,\n onChange = () => {},\n onInput,\n selectedValue,\n name,\n isInvalid,\n isValid,\n placeholder,\n uniqueId,\n disabled,\n disableTextFilter,\n clearOnSelect,\n blurOnClose,\n onListToggle\n}: SelectProps) {\n const filterInputRef = useRef(null);\n const selectContainerRef = useRef(null);\n const toggleButtonRef = useRef(null);\n const selectListRef = useRef(null);\n const [textFilter, setTextFilter] = useState<string>(null);\n const [showList, setShowList] = useState<boolean>(false);\n const selectListId: string = useMemo(() => `select-${uuid()}`, []);\n\n const active: SelectItem = items.find(i => i.id === selectedValue) || ({} as SelectItem);\n\n const [inputText, setInputText] = useState<string>();\n\n const [activeOption, setActiveOption] = useState<SelectItem>(active);\n\n const selectedOption = active;\n\n const filteredItems = disableTextFilter ? items : items.filter(item => !textFilter || item.name.toLowerCase().includes(textFilter.toLowerCase()));\n\n const suffix = isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX;\n const ariaDescribedBy = uniqueId ? `${uniqueId}${suffix}` : null;\n\n const setNextActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem === activeOption) + 1;\n const nextIndex = possibleNextIndex < filteredItems.length ? possibleNextIndex : 0;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const setPreviousActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem === activeOption) - 1;\n const nextIndex = possibleNextIndex < 0 ? filteredItems.length - 1 : possibleNextIndex;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const scrollToItem = (item: SelectItem) => {\n if (!item) return;\n const nextElement = document.getElementById(`listItem-${item.id}`);\n simulateFocusScroll(nextElement);\n };\n\n /**\n * Closes the selectList, empties the text filter and focuses the button element\n */\n const closeList = () => {\n //blurs the field when the list is closed, makes for a better UX for most users, needs more testing\n blurOnClose && filterInputRef.current.blur();\n setShowList(false);\n };\n\n const openList = () => {\n setShowList(true);\n };\n\n const extractItemFromEvent = (e: Event): SelectItem => {\n const value = (e.currentTarget as HTMLInputElement).getAttribute('data-value') as string;\n return filteredItems.find(listItem => listItem.id == value);\n };\n\n /**\n * Closes the select list and fires an onChange\n * @param e - Event\n */\n const handleSelect = (e: Event) => {\n e.preventDefault();\n\n // We use a local variable here since writing and if statement is cleaner then a long ternary\n let valueToEmit;\n\n if (e.currentTarget instanceof HTMLElement && e.currentTarget.getAttribute('role') === 'option') {\n // This is the main scenario when clicking and item in the list\n // Item comes from the event\n valueToEmit = extractItemFromEvent(e);\n } else if (activeOption.id && filteredItems.some(item => item.id === activeOption.id)) {\n // This is the scenario where a user is using the keyboard to navigate\n // In the case item comes from the visually select item\n valueToEmit = activeOption;\n } else {\n // This is the scenario the user didn't select anything\n if (textFilter) {\n // if we filtering for something then select the first option\n valueToEmit = filteredItems[0];\n } else {\n // This will happen when we want to keep an already chosen option\n // If no active option we should just emit again with the value that was already selected\n valueToEmit = { id: selectedValue };\n }\n }\n\n if (valueToEmit && !valueToEmit.disabled) {\n onChange({ target: { value: valueToEmit.id, name: name } });\n\n if (clearOnSelect) setInputText(null);\n\n closeList();\n }\n };\n\n /**\n * Handles hovering and directions\n * @param e - Event\n */\n const handleHover = (e: Event) => {\n e.preventDefault();\n const item = extractItemFromEvent(e);\n setActiveOption(item);\n };\n\n /**\n * Handle keyDown events on the selectList button\n * Responsible for opening and closing the list\n * @param e - KeyboardEvent\n */\n const handleButtonKeyDown = (e: KeyboardEvent) => {\n if (e.key === keys.enter && filterable && showList && textFilter) {\n handleSelect(e);\n } else if (e.key === keys.escape) {\n // When user has focused Select button but not yet moved into Select list - close list and keep focus on the Select Button re. a11y guidelines\n // https://w3c.github.io/aria-practices/examples/disclosure/disclosure-navigation.html\n closeList();\n } else if ([keys.arrowUp, keys.arrowDown, keys.enter].includes(e.key) || (e.key === keys.space && (!filterable || !showList))) {\n e.preventDefault();\n if (!showList) {\n openList();\n } else {\n handleNavigationKeys(e);\n }\n } else if (e.shiftKey && e.key === keys.tab) {\n // Shift-Tab out of Select - close list re. a11y guidelines (above)\n closeList();\n } else if (e.key === keys.tab) {\n closeList();\n }\n };\n\n /**\n * Handles movement with navigation keys and enter\n * Navigates through the list, or select an element, or focus the filter input, or close the menu.\n * @param e - KeyDownEvent\n */\n const handleNavigationKeys = (e: KeyboardEvent) => {\n switch (e.key) {\n case keys.space:\n case keys.enter:\n handleSelect(e);\n break;\n case keys.arrowDown:\n e.preventDefault();\n setNextActive();\n break;\n case keys.arrowUp:\n e.preventDefault();\n setPreviousActive();\n break;\n default:\n }\n };\n\n /**\n * Updates the state with the current text filter value\n * @param e - KeyboardEvent\n */\n const handleTextFilter = (e: KeyboardEvent) => {\n const value: string = (e.target as HTMLInputElement).value;\n setInputText(value);\n setTextFilter(value);\n if (onInput) {\n onInput(value);\n }\n };\n\n /**\n * Toggles the selectList and focuses in either the filter input or in the selectList button\n * @param e - Event\n */\n const toggleList = (e: Event) => {\n e.preventDefault();\n if (!showList) {\n setInputText(null);\n openList();\n } else {\n setInputText(selectedOption.name);\n closeList();\n }\n };\n\n useEffect(() => {\n if (showList) {\n setInputText(null);\n } else {\n setTextFilter(null);\n }\n }, [showList]);\n\n /**\n * Focus on the input if filterable\n */\n useEffect(() => {\n if (showList && filterable && filterInputRef.current) {\n filterInputRef.current.focus();\n }\n onListToggle?.(showList);\n }, [showList]);\n\n useEffect(() => {\n /**\n * Close the select list when clicking outside the list\n * @param e - MouseEvent\n */\n function handleClickOutside(e: MouseEvent) {\n // use composedPath so it can also check when inside a web component\n // if composedPath is not available fallback to e.target\n const clickIsOutside = e.composedPath\n ? !e.composedPath().includes(selectContainerRef.current)\n : !selectContainerRef.current.contains(e.target);\n if (clickIsOutside) {\n closeList();\n }\n }\n\n document.addEventListener('click', handleClickOutside, false);\n\n return () => {\n document.removeEventListener('click', handleClickOutside, false);\n };\n }, [selectContainerRef]);\n\n return (\n <div\n className={cx(['adyen-checkout__dropdown', className, ...classNameModifiers.map(m => `adyen-checkout__dropdown--${m}`)])}\n ref={selectContainerRef}\n >\n <SelectButton\n inputText={inputText}\n id={uniqueId ?? null}\n active={activeOption}\n selected={selectedOption}\n filterInputRef={filterInputRef}\n filterable={filterable}\n isInvalid={isInvalid}\n isValid={isValid}\n onButtonKeyDown={handleButtonKeyDown}\n onFocus={openList}\n onInput={handleTextFilter}\n placeholder={placeholder}\n readonly={readonly}\n selectListId={selectListId}\n showList={showList}\n toggleButtonRef={toggleButtonRef}\n toggleList={toggleList}\n disabled={disabled}\n ariaDescribedBy={ariaDescribedBy}\n />\n <SelectList\n active={activeOption}\n filteredItems={filteredItems}\n onHover={handleHover}\n onSelect={handleSelect}\n selected={selectedOption}\n selectListId={selectListId}\n selectListRef={selectListRef}\n showList={showList}\n />\n </div>\n );\n}\n\nSelect.defaultProps = {\n className: '',\n classNameModifiers: [],\n filterable: true,\n items: [],\n readonly: false,\n onChange: () => {}\n};\n\nexport default Select;\n"],"names":["Select","items","className","classNameModifiers","filterable","readonly","onChange","onInput","selectedValue","name","isInvalid","isValid","placeholder","uniqueId","disabled","disableTextFilter","clearOnSelect","blurOnClose","onListToggle","filterInputRef","useRef","selectContainerRef","toggleButtonRef","selectListRef","textFilter","setTextFilter","useState","showList","setShowList","selectListId","useMemo","uuid","active","find","i","id","inputText","setInputText","activeOption","setActiveOption","selectedOption","filteredItems","filter","item","toLowerCase","includes","ariaDescribedBy","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","scrollToItem","nextElement","document","getElementById","simulateFocusScroll","closeList","current","blur","openList","extractItemFromEvent","e","value","currentTarget","getAttribute","listItem","handleSelect","valueToEmit","preventDefault","HTMLElement","some","target","handleNavigationKeys","key","keys","space","enter","arrowDown","length","possibleNextIndex","findIndex","nextIndex","nextItem","setNextActive","arrowUp","setPreviousActive","useEffect","focus","handleClickOutside","composedPath","contains","addEventListener","removeEventListener","h","div","cx","map","m","ref","SelectButton","selected","onButtonKeyDown","escape","shiftKey","tab","onFocus","toggleList","SelectList","onHover","onSelect","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../../src/components/internal/FormFields/Select/Select.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport cx from 'classnames';\nimport SelectButton from './components/SelectButton';\nimport SelectList from './components/SelectList';\nimport uuid from '../../../../utils/uuid';\nimport { keys } from './constants';\nimport { SelectItem, SelectProps } from './types';\nimport './Select.scss';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../../core/Errors/constants';\nimport { simulateFocusScroll } from '../utils';\n\nfunction Select({\n items = [],\n className = '',\n classNameModifiers = [],\n filterable = true,\n readonly = false,\n onChange = () => {},\n onInput,\n selectedValue,\n name,\n isInvalid,\n isValid,\n placeholder,\n uniqueId,\n disabled,\n disableTextFilter,\n clearOnSelect,\n blurOnClose,\n onListToggle\n}: SelectProps) {\n const filterInputRef = useRef(null);\n const selectContainerRef = useRef(null);\n const toggleButtonRef = useRef(null);\n const selectListRef = useRef(null);\n const [textFilter, setTextFilter] = useState<string>(null);\n const [showList, setShowList] = useState<boolean>(false);\n const selectListId: string = useMemo(() => `select-${uuid()}`, []);\n\n const active: SelectItem = items.find(i => i.id === selectedValue) || ({} as SelectItem);\n\n const [inputText, setInputText] = useState<string>();\n\n const [activeOption, setActiveOption] = useState<SelectItem>(active);\n\n const selectedOption = active;\n\n const filteredItems = disableTextFilter ? items : items.filter(item => !textFilter || item.name.toLowerCase().includes(textFilter.toLowerCase()));\n\n const suffix = isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX;\n const ariaDescribedBy = uniqueId ? `${uniqueId}${suffix}` : null;\n\n const setNextActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem === activeOption) + 1;\n const nextIndex = possibleNextIndex < filteredItems.length ? possibleNextIndex : 0;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const setPreviousActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem === activeOption) - 1;\n const nextIndex = possibleNextIndex < 0 ? filteredItems.length - 1 : possibleNextIndex;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const scrollToItem = (item: SelectItem) => {\n if (!item) return;\n const nextElement = document.getElementById(`listItem-${item.id}`);\n simulateFocusScroll(nextElement);\n };\n\n /**\n * Closes the selectList, empties the text filter and focuses the button element\n */\n const closeList = () => {\n //blurs the field when the list is closed, makes for a better UX for most users, needs more testing\n blurOnClose && filterInputRef.current.blur();\n setShowList(false);\n };\n\n const openList = () => {\n setShowList(true);\n };\n\n const extractItemFromEvent = (e: Event): SelectItem => {\n const value = (e.currentTarget as HTMLInputElement).getAttribute('data-value');\n return filteredItems.find(listItem => listItem.id == value);\n };\n\n /**\n * Closes the select list and fires an onChange\n * @param e - Event\n */\n const handleSelect = (e: Event) => {\n e.preventDefault();\n\n // We use a local variable here since writing and if statement is cleaner then a long ternary\n let valueToEmit;\n\n if (e.currentTarget instanceof HTMLElement && e.currentTarget.getAttribute('role') === 'option') {\n // This is the main scenario when clicking and item in the list\n // Item comes from the event\n valueToEmit = extractItemFromEvent(e);\n } else if (activeOption.id && filteredItems.some(item => item.id === activeOption.id)) {\n // This is the scenario where a user is using the keyboard to navigate\n // In the case item comes from the visually select item\n valueToEmit = activeOption;\n } else {\n // This is the scenario the user didn't select anything\n if (textFilter) {\n // if we filtering for something then select the first option\n valueToEmit = filteredItems[0];\n } else {\n // This will happen when we want to keep an already chosen option\n // If no active option we should just emit again with the value that was already selected\n valueToEmit = { id: selectedValue };\n }\n }\n\n if (valueToEmit && !valueToEmit.disabled) {\n onChange({ target: { value: valueToEmit.id, name: name } });\n\n if (clearOnSelect) setInputText(null);\n\n closeList();\n }\n };\n\n /**\n * Handles hovering and directions\n * @param e - Event\n */\n const handleHover = (e: Event) => {\n e.preventDefault();\n const item = extractItemFromEvent(e);\n setActiveOption(item);\n };\n\n /**\n * Handle keyDown events on the selectList button\n * Responsible for opening and closing the list\n * @param e - KeyboardEvent\n */\n const handleButtonKeyDown = (e: KeyboardEvent) => {\n if (e.key === keys.enter && filterable && showList && textFilter) {\n handleSelect(e);\n } else if (e.key === keys.escape) {\n // When user has focused Select button but not yet moved into Select list - close list and keep focus on the Select Button re. a11y guidelines\n // https://w3c.github.io/aria-practices/examples/disclosure/disclosure-navigation.html\n closeList();\n } else if ([keys.arrowUp, keys.arrowDown, keys.enter].includes(e.key) || (e.key === keys.space && (!filterable || !showList))) {\n e.preventDefault();\n if (!showList) {\n openList();\n } else {\n handleNavigationKeys(e);\n }\n } else if (e.shiftKey && e.key === keys.tab) {\n // Shift-Tab out of Select - close list re. a11y guidelines (above)\n closeList();\n } else if (e.key === keys.tab) {\n closeList();\n }\n };\n\n /**\n * Handles movement with navigation keys and enter\n * Navigates through the list, or select an element, or focus the filter input, or close the menu.\n * @param e - KeyDownEvent\n */\n const handleNavigationKeys = (e: KeyboardEvent) => {\n switch (e.key) {\n case keys.space:\n case keys.enter:\n handleSelect(e);\n break;\n case keys.arrowDown:\n e.preventDefault();\n setNextActive();\n break;\n case keys.arrowUp:\n e.preventDefault();\n setPreviousActive();\n break;\n default:\n }\n };\n\n /**\n * Updates the state with the current text filter value\n * @param e - KeyboardEvent\n */\n const handleTextFilter = (e: KeyboardEvent) => {\n const value: string = (e.target as HTMLInputElement).value;\n setInputText(value);\n setTextFilter(value);\n if (onInput) {\n onInput(value);\n }\n };\n\n /**\n * Toggles the selectList and focuses in either the filter input or in the selectList button\n * @param e - Event\n */\n const toggleList = (e: Event) => {\n e.preventDefault();\n if (!showList) {\n setInputText(null);\n openList();\n } else {\n setInputText(selectedOption.name);\n closeList();\n }\n };\n\n useEffect(() => {\n if (showList) {\n setInputText(null);\n } else {\n setTextFilter(null);\n }\n }, [showList]);\n\n /**\n * Focus on the input if filterable\n */\n useEffect(() => {\n if (showList && filterable && filterInputRef.current) {\n filterInputRef.current.focus();\n }\n onListToggle?.(showList);\n }, [showList]);\n\n useEffect(() => {\n /**\n * Close the select list when clicking outside the list\n * @param e - MouseEvent\n */\n function handleClickOutside(e: MouseEvent) {\n // use composedPath so it can also check when inside a web component\n // if composedPath is not available fallback to e.target\n const clickIsOutside = e.composedPath\n ? !e.composedPath().includes(selectContainerRef.current)\n : !selectContainerRef.current.contains(e.target);\n if (clickIsOutside) {\n closeList();\n }\n }\n\n document.addEventListener('click', handleClickOutside, false);\n\n return () => {\n document.removeEventListener('click', handleClickOutside, false);\n };\n }, [selectContainerRef]);\n\n return (\n <div\n className={cx(['adyen-checkout__dropdown', className, ...classNameModifiers.map(m => `adyen-checkout__dropdown--${m}`)])}\n ref={selectContainerRef}\n >\n <SelectButton\n inputText={inputText}\n id={uniqueId ?? null}\n active={activeOption}\n selected={selectedOption}\n filterInputRef={filterInputRef}\n filterable={filterable}\n isInvalid={isInvalid}\n isValid={isValid}\n onButtonKeyDown={handleButtonKeyDown}\n onFocus={openList}\n onInput={handleTextFilter}\n placeholder={placeholder}\n readonly={readonly}\n selectListId={selectListId}\n showList={showList}\n toggleButtonRef={toggleButtonRef}\n toggleList={toggleList}\n disabled={disabled}\n ariaDescribedBy={ariaDescribedBy}\n />\n <SelectList\n active={activeOption}\n filteredItems={filteredItems}\n onHover={handleHover}\n onSelect={handleSelect}\n selected={selectedOption}\n selectListId={selectListId}\n selectListRef={selectListRef}\n showList={showList}\n />\n </div>\n );\n}\n\nSelect.defaultProps = {\n className: '',\n classNameModifiers: [],\n filterable: true,\n items: [],\n readonly: false,\n onChange: () => {}\n};\n\nexport default Select;\n"],"names":["Select","items","className","classNameModifiers","filterable","readonly","onChange","onInput","selectedValue","name","isInvalid","isValid","placeholder","uniqueId","disabled","disableTextFilter","clearOnSelect","blurOnClose","onListToggle","filterInputRef","useRef","selectContainerRef","toggleButtonRef","selectListRef","textFilter","setTextFilter","useState","showList","setShowList","selectListId","useMemo","uuid","active","find","i","id","inputText","setInputText","activeOption","setActiveOption","selectedOption","filteredItems","filter","item","toLowerCase","includes","ariaDescribedBy","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","scrollToItem","nextElement","document","getElementById","simulateFocusScroll","closeList","current","blur","openList","extractItemFromEvent","e","value","currentTarget","getAttribute","listItem","handleSelect","valueToEmit","preventDefault","HTMLElement","some","target","handleNavigationKeys","key","keys","space","enter","arrowDown","length","possibleNextIndex","findIndex","nextIndex","nextItem","setNextActive","arrowUp","setPreviousActive","useEffect","focus","handleClickOutside","composedPath","contains","addEventListener","removeEventListener","h","div","cx","map","m","ref","SelectButton","selected","onButtonKeyDown","escape","shiftKey","tab","onFocus","toggleList","SelectList","onHover","onSelect","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectList.js","sources":["../../../../../../../src/components/internal/FormFields/Select/components/SelectList.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport SelectListItem from './SelectListItem';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport { SelectListProps } from '../types';\n\nfunction SelectList({ selected, active, filteredItems, showList, ...props }: SelectListProps) {\n const { i18n } = useCoreContext();\n\n return (\n <ul\n className={cx({\n 'adyen-checkout__dropdown__list': true,\n 'adyen-checkout__dropdown__list--active': showList\n })}\n id={props.selectListId}\n ref={props.selectListRef}\n role=\"listbox\"\n >\n {filteredItems.length ? (\n filteredItems.map(item => (\n <SelectListItem\n active={item.id === active.id}\n item={item}\n key={item.id}\n onSelect={props.onSelect}\n onHover={props.onHover}\n selected={item.id === selected.id}\n />\n ))\n ) : (\n <div className=\"adyen-checkout__dropdown__element adyen-checkout__dropdown__element--no-options\">\n {i18n.get('select.noOptionsFound')}\n </div>\n )}\n </ul>\n );\n}\n\nexport default SelectList;\n"],"names":["SelectList","_param","selected","active","filteredItems","showList","props","_object_without_properties","i18n","useCoreContext","h","ul","className","cx","id","selectListId","ref","selectListRef","role","length","map","item","SelectListItem","key","onSelect","onHover","div","get"],"mappings":"6mBAMA,SAASA,EAAWC,OAAAC,SAAEA,EAAQC,OAAEA,EAAMC,cAAEA,EAAaC,SAAEA,GAAnCJ,EAAgDK,EAAhDC,EAAAN,EAAA,CAAEC,WAAUC,SAAQC,gBAAeC,aACnD,MAAMG,KAAEA,GAASC,IAEjB,OACIC,EAACC,KAAAA,CACGC,UAAWC,EAAG,CACV,kCAAkC,EAClC,yCAA0CR,IAE9CS,GAAIR,EAAMS,aACVC,IAAKV,EAAMW,cACXC,KAAK,WAEJd,EAAce,OACXf,EAAcgB,KAAIC,GACdX,EAACY,EAAAA,CACGnB,OAAQkB,EAAKP,KAAOX,EAAOW,GAC3BO,KAAMA,EACNE,IAAKF,EAAKP,GACVU,SAAUlB,EAAMkB,SAChBC,QAASnB,EAAMmB,QACfvB,SAAUmB,EAAKP,KAAOZ,EAASY,OAIvCJ,EAACgB,MAAAA,CAAId,UAAU,mFACVJ,EAAKmB,IAAI,0BAK9B"}
1
+ {"version":3,"file":"SelectList.js","sources":["../../../../../../../src/components/internal/FormFields/Select/components/SelectList.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport SelectListItem from './SelectListItem';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport { SelectListProps } from '../types';\n\nfunction SelectList({ selected, active, filteredItems, showList, ...props }: SelectListProps) {\n const { i18n } = useCoreContext();\n\n return (\n /* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\n <ul\n className={cx({\n 'adyen-checkout__dropdown__list': true,\n 'adyen-checkout__dropdown__list--active': showList\n })}\n id={props.selectListId}\n ref={props.selectListRef}\n role=\"listbox\"\n >\n {filteredItems.length ? (\n filteredItems.map(item => (\n <SelectListItem\n active={item.id === active.id}\n item={item}\n key={item.id}\n onSelect={props.onSelect}\n onHover={props.onHover}\n selected={item.id === selected.id}\n />\n ))\n ) : (\n <div className=\"adyen-checkout__dropdown__element adyen-checkout__dropdown__element--no-options\">\n {i18n.get('select.noOptionsFound')}\n </div>\n )}\n </ul>\n );\n}\n\nexport default SelectList;\n"],"names":["SelectList","_param","selected","active","filteredItems","showList","props","_object_without_properties","i18n","useCoreContext","h","ul","className","cx","id","selectListId","ref","selectListRef","role","length","map","item","SelectListItem","key","onSelect","onHover","div","get"],"mappings":"6mBAMA,SAASA,EAAWC,OAAAC,SAAEA,EAAQC,OAAEA,EAAMC,cAAEA,EAAaC,SAAEA,GAAnCJ,EAAgDK,EAAhDC,EAAAN,EAAA,CAAEC,WAAUC,SAAQC,gBAAeC,aACnD,MAAMG,KAAEA,GAASC,IAEjB,OAEIC,EAACC,KAAAA,CACGC,UAAWC,EAAG,CACV,kCAAkC,EAClC,yCAA0CR,IAE9CS,GAAIR,EAAMS,aACVC,IAAKV,EAAMW,cACXC,KAAK,WAEJd,EAAce,OACXf,EAAcgB,KAAIC,GACdX,EAACY,EAAAA,CACGnB,OAAQkB,EAAKP,KAAOX,EAAOW,GAC3BO,KAAMA,EACNE,IAAKF,EAAKP,GACVU,SAAUlB,EAAMkB,SAChBC,QAASnB,EAAMmB,QACfvB,SAAUmB,EAAKP,KAAOZ,EAASY,OAIvCJ,EAACgB,MAAAA,CAAId,UAAU,mFACVJ,EAAKmB,IAAI,0BAK9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectListItem.js","sources":["../../../../../../../src/components/internal/FormFields/Select/components/SelectListItem.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport { SelectItemProps } from '../types';\nimport Img from '../../../Img';\nimport Icon from '../../../Icon';\nimport { PREFIX } from '../../../Icon/constants';\n\nconst SelectListItem = ({ item, active, selected, ...props }: SelectItemProps) => {\n return (\n <li\n aria-disabled={!!item.disabled}\n aria-selected={selected}\n className={cx([\n 'adyen-checkout__dropdown__element',\n {\n 'adyen-checkout__dropdown__element--active': active,\n 'adyen-checkout__dropdown__element--disabled': !!item.disabled\n }\n ])}\n // A change in Preact v10.11.1 means that all falsy values are assessed and set on data attributes.\n // In the case of data-disabled we only ever want it set if item.disabled is actually true, since the presence of the data-disabled attr,\n // regardless of its value, will disable the select list item\n data-disabled={item.disabled === true ? true : null}\n data-value={item.id}\n onClick={props.onSelect}\n onMouseEnter={props.onHover}\n role=\"option\"\n //tabIndex={-1}\n id={`listItem-${item.id}`}\n >\n {item.icon && <Img className=\"adyen-checkout__dropdown__element__icon\" alt={item.name} src={item.icon} />}\n <span className=\"adyen-checkout__dropdown__element__text\">{item.name}</span>\n {item.secondaryText && <span className=\"adyen-checkout__dropdown__element__secondary-text\">{item.secondaryText}</span>}\n {selected && <Icon type={`${PREFIX}checkmark`} height={14} width={14} />}\n </li>\n );\n};\n\nexport default SelectListItem;\n"],"names":["SelectListItem","_param","item","active","selected","props","h","li","aria-disabled","disabled","aria-selected","className","cx","data-disabled","data-value","id","onClick","onSelect","onMouseEnter","onHover","role","icon","Img","alt","name","src","span","secondaryText","Icon","type","PREFIX","height","width"],"mappings":"ynBAOA,MAAMA,EAAiBC,IAAC,IAAAC,KAAEA,EAAIC,OAAEA,EAAMC,SAAEA,GAAaC,EAAAA,EAAAA,EAAAA,EAAAA,CAA3BH,OAAMC,SAAQC,aACpC,OACIE,EAACC,KAAAA,CACGC,kBAAiBN,EAAKO,SACtBC,gBAAeN,EACfO,UAAWC,EAAG,CACV,oCACA,CACI,4CAA6CT,EAC7C,gDAAiDD,EAAKO,YAM9DI,iBAAiC,IAAlBX,EAAKO,UAA2B,KAC/CK,aAAYZ,EAAKa,GACjBC,QAASX,EAAMY,SACfC,aAAcb,EAAMc,QACpBC,KAAK,SAELL,GAAI,YAAYb,EAAKa,MAEpBb,EAAKmB,MAAQf,EAACgB,EAAAA,CAAIX,UAAU,0CAA0CY,IAAKrB,EAAKsB,KAAMC,IAAKvB,EAAKmB,OACjGf,EAACoB,OAAAA,CAAKf,UAAU,2CAA2CT,EAAKsB,MAC/DtB,EAAKyB,eAAiBrB,EAACoB,OAAAA,CAAKf,UAAU,qDAAqDT,EAAKyB,eAChGvB,GAAYE,EAACsB,EAAAA,CAAKC,KAAM,GAAGC,aAAmBC,OAAQ,GAAIC,MAAO"}
1
+ {"version":3,"file":"SelectListItem.js","sources":["../../../../../../../src/components/internal/FormFields/Select/components/SelectListItem.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport { SelectItemProps } from '../types';\nimport Img from '../../../Img';\nimport Icon from '../../../Icon';\nimport { PREFIX } from '../../../Icon/constants';\n\nconst SelectListItem = ({ item, active, selected, ...props }: SelectItemProps) => {\n return (\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n <li\n aria-disabled={!!item.disabled}\n aria-selected={selected}\n className={cx([\n 'adyen-checkout__dropdown__element',\n {\n 'adyen-checkout__dropdown__element--active': active,\n 'adyen-checkout__dropdown__element--disabled': !!item.disabled\n }\n ])}\n // A change in Preact v10.11.1 means that all falsy values are assessed and set on data attributes.\n // In the case of data-disabled we only ever want it set if item.disabled is actually true, since the presence of the data-disabled attr,\n // regardless of its value, will disable the select list item\n data-disabled={item.disabled === true ? true : null}\n data-value={item.id}\n onClick={props.onSelect}\n onMouseEnter={props.onHover}\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role */\n role=\"option\"\n //tabIndex={-1}\n id={`listItem-${item.id}`}\n >\n {item.icon && <Img className=\"adyen-checkout__dropdown__element__icon\" alt={item.name} src={item.icon} />}\n <span className=\"adyen-checkout__dropdown__element__text\">{item.name}</span>\n {item.secondaryText && <span className=\"adyen-checkout__dropdown__element__secondary-text\">{item.secondaryText}</span>}\n {selected && <Icon type={`${PREFIX}checkmark`} height={14} width={14} />}\n </li>\n );\n};\n\nexport default SelectListItem;\n"],"names":["SelectListItem","_param","item","active","selected","props","h","li","aria-disabled","disabled","aria-selected","className","cx","data-disabled","data-value","id","onClick","onSelect","onMouseEnter","onHover","role","icon","Img","alt","name","src","span","secondaryText","Icon","type","PREFIX","height","width"],"mappings":"ynBAOA,MAAMA,EAAiBC,IAAC,IAAAC,KAAEA,EAAIC,OAAEA,EAAMC,SAAEA,GAAaC,EAAAA,EAAAA,EAAAA,EAAAA,CAA3BH,OAAMC,SAAQC,aACpC,OAEIE,EAACC,KAAAA,CACGC,kBAAiBN,EAAKO,SACtBC,gBAAeN,EACfO,UAAWC,EAAG,CACV,oCACA,CACI,4CAA6CT,EAC7C,gDAAiDD,EAAKO,YAM9DI,iBAAiC,IAAlBX,EAAKO,UAA2B,KAC/CK,aAAYZ,EAAKa,GACjBC,QAASX,EAAMY,SACfC,aAAcb,EAAMc,QAEpBC,KAAK,SAELL,GAAI,YAAYb,EAAKa,MAEpBb,EAAKmB,MAAQf,EAACgB,EAAAA,CAAIX,UAAU,0CAA0CY,IAAKrB,EAAKsB,KAAMC,IAAKvB,EAAKmB,OACjGf,EAACoB,OAAAA,CAAKf,UAAU,2CAA2CT,EAAKsB,MAC/DtB,EAAKyB,eAAiBrB,EAACoB,OAAAA,CAAKf,UAAU,qDAAqDT,EAAKyB,eAChGvB,GAAYE,EAACsB,EAAAA,CAAKC,KAAM,GAAGC,aAAmBC,OAAQ,GAAIC,MAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../src/components/internal/Modal/Modal.tsx"],"sourcesContent":["import { ComponentChildren, h } from 'preact';\nimport { useRef } from 'preact/hooks';\nimport cx from 'classnames';\nimport './Modal.scss';\nimport { useModal } from './useModal';\n\ntype ModalRenderFnProps = {\n /**\n * Function used to properly trigger the Modal close mechanism. It takes into account the element that the Modal needs\n * to set focus when it is dismissed.\n */\n onCloseModal(): void;\n};\n\ntype ModalProps = {\n children: ({ onCloseModal }: ModalRenderFnProps) => ComponentChildren;\n classNameModifiers?: string[];\n onClose(): void;\n isOpen: boolean;\n isDismissible?: boolean;\n labelledBy: string;\n describedBy: string;\n /**\n * Reference to the element that should be focused when the modal is opened\n */\n focusFirst: HTMLElement;\n /**\n * Reference to the element that should be focused when the modal is closed\n */\n focusAfterClose: HTMLElement;\n};\n\nconst Modal = ({\n children,\n classNameModifiers = [],\n isOpen,\n onClose,\n isDismissible = true,\n labelledBy,\n describedBy,\n focusFirst,\n focusAfterClose,\n ...props\n}: ModalProps) => {\n const modalContainerRef = useRef<HTMLDivElement>();\n const { closeModal, handleClickOutside } = useModal({\n modalElement: modalContainerRef.current,\n isOpen,\n isDismissible,\n focusFirst,\n focusAfterClose,\n onClose\n });\n\n return (\n <div\n className={cx(\n 'adyen-checkout__modal-wrapper',\n classNameModifiers.map(m => `adyen-checkout__modal-wrapper--${m}`),\n { 'adyen-checkout__modal-wrapper--open': isOpen }\n )}\n role=\"dialog\"\n aria-labelledby={labelledBy}\n aria-describedby={describedBy}\n aria-modal=\"true\"\n aria-hidden={!isOpen}\n onClick={handleClickOutside}\n {...props}\n >\n <div className=\"adyen-checkout__modal\" ref={modalContainerRef}>\n {children({ onCloseModal: closeModal })}\n </div>\n </div>\n );\n};\n\nexport { Modal };\n"],"names":["Modal","_param","children","classNameModifiers","isOpen","onClose","isDismissible","labelledBy","describedBy","focusFirst","focusAfterClose","props","modalContainerRef","useRef","closeModal","handleClickOutside","useModal","modalElement","current","h","div","className","cx","map","m","role","aria-labelledby","aria-describedby","aria-modal","aria-hidden","onClick","ref","onCloseModal"],"mappings":"wtBAgCA,MAAMA,EAAQC,QAACC,SACXA,EAAQC,mBACRA,EAAqB,GAAEC,OACvBA,EAAMC,QACNA,EAAOC,cACPA,GAAgB,EAAIC,WACpBA,EAAUC,YACVA,EAAWC,WACXA,EAAUC,gBACVA,GACGC,EAAAA,EAAAA,EAAAA,EAAAA,CATHT,WACAC,qBACAC,SACAC,UACAC,gBACAC,aACAC,cACAC,aACAC,oBAGA,MAAME,EAAoBC,KACpBC,WAAEA,EAAUC,mBAAEA,GAAuBC,EAAS,CAChDC,aAAcL,EAAkBM,QAChCd,SACAE,gBACAG,aACAC,kBACAL,YAGJ,OACIc,EAACC,4UAAAA,CAAAA,CACGC,UAAWC,EACP,gCACAnB,EAAmBoB,KAAIC,GAAK,kCAAkCA,MAC9D,CAAE,sCAAuCpB,IAE7CqB,KAAK,SACLC,kBAAiBnB,EACjBoB,mBAAkBnB,EAClBoB,aAAW,OACXC,eAAczB,EACd0B,QAASf,GACLJ,GAEJQ,EAACC,MAAAA,CAAIC,UAAU,wBAAwBU,IAAKnB,GACvCV,EAAS,CAAE8B,aAAclB,KAAW"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../src/components/internal/Modal/Modal.tsx"],"sourcesContent":["import { ComponentChildren, h } from 'preact';\nimport { useRef } from 'preact/hooks';\nimport cx from 'classnames';\nimport './Modal.scss';\nimport { useModal } from './useModal';\n\ntype ModalRenderFnProps = {\n /**\n * Function used to properly trigger the Modal close mechanism. It takes into account the element that the Modal needs\n * to set focus when it is dismissed.\n */\n onCloseModal(): void;\n};\n\ntype ModalProps = {\n children: ({ onCloseModal }: ModalRenderFnProps) => ComponentChildren;\n classNameModifiers?: string[];\n onClose(): void;\n isOpen: boolean;\n isDismissible?: boolean;\n labelledBy: string;\n describedBy: string;\n /**\n * Reference to the element that should be focused when the modal is opened\n */\n focusFirst: HTMLElement;\n /**\n * Reference to the element that should be focused when the modal is closed\n */\n focusAfterClose: HTMLElement;\n};\n\nconst Modal = ({\n children,\n classNameModifiers = [],\n isOpen,\n onClose,\n isDismissible = true,\n labelledBy,\n describedBy,\n focusFirst,\n focusAfterClose,\n ...props\n}: ModalProps) => {\n const modalContainerRef = useRef<HTMLDivElement>();\n const { closeModal, handleClickOutside } = useModal({\n modalElement: modalContainerRef.current,\n isOpen,\n isDismissible,\n focusFirst,\n focusAfterClose,\n onClose\n });\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions\n <div\n className={cx(\n 'adyen-checkout__modal-wrapper',\n classNameModifiers.map(m => `adyen-checkout__modal-wrapper--${m}`),\n { 'adyen-checkout__modal-wrapper--open': isOpen }\n )}\n role=\"dialog\"\n aria-labelledby={labelledBy}\n aria-describedby={describedBy}\n aria-modal=\"true\"\n aria-hidden={!isOpen}\n onClick={handleClickOutside}\n {...props}\n >\n <div className=\"adyen-checkout__modal\" ref={modalContainerRef}>\n {children({ onCloseModal: closeModal })}\n </div>\n </div>\n );\n};\n\nexport { Modal };\n"],"names":["Modal","_param","children","classNameModifiers","isOpen","onClose","isDismissible","labelledBy","describedBy","focusFirst","focusAfterClose","props","modalContainerRef","useRef","closeModal","handleClickOutside","useModal","modalElement","current","h","div","className","cx","map","m","role","aria-labelledby","aria-describedby","aria-modal","aria-hidden","onClick","ref","onCloseModal"],"mappings":"wtBAgCA,MAAMA,EAAQC,QAACC,SACXA,EAAQC,mBACRA,EAAqB,GAAEC,OACvBA,EAAMC,QACNA,EAAOC,cACPA,GAAgB,EAAIC,WACpBA,EAAUC,YACVA,EAAWC,WACXA,EAAUC,gBACVA,GACGC,EAAAA,EAAAA,EAAAA,EAAAA,CATHT,WACAC,qBACAC,SACAC,UACAC,gBACAC,aACAC,cACAC,aACAC,oBAGA,MAAME,EAAoBC,KACpBC,WAAEA,EAAUC,mBAAEA,GAAuBC,EAAS,CAChDC,aAAcL,EAAkBM,QAChCd,SACAE,gBACAG,aACAC,kBACAL,YAGJ,OAEIc,EAACC,4UAAAA,CAAAA,CACGC,UAAWC,EACP,gCACAnB,EAAmBoB,KAAIC,GAAK,kCAAkCA,MAC9D,CAAE,sCAAuCpB,IAE7CqB,KAAK,SACLC,kBAAiBnB,EACjBoB,mBAAkBnB,EAClBoB,aAAW,OACXC,eAAczB,EACd0B,QAASf,GACLJ,GAEJQ,EAACC,MAAAA,CAAIC,UAAU,wBAAwBU,IAAKnB,GACvCV,EAAS,CAAE8B,aAAclB,KAAW"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as r,useState as s,useEffect as t}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as o}from"../../../core/Context/CoreProvider.js";import n from"../CompanyDetails/CompanyDetails.js";import i from"../PersonalDetails/PersonalDetails.js";import a from"../Address/Address.js";import l from"../FormFields/Checkbox/Checkbox.js";import d from"../FormFields/ConsentCheckbox/ConsentCheckbox.js";import{getInitialActiveFieldsets as c,fieldsetsSchema as u,getActiveFieldsData as b}from"./utils.js";import p from"../IbanInput/IbanInput.js";import m from"../FormFields/Field/Field.js";import y from"../FormInstruction/FormInstruction.js";import f from"./useSRPanelForOpenInvoiceErrors.js";function v(e,r,s){return r in e?Object.defineProperty(e,r,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[r]=s,e}function h(e){for(var r=1;r<arguments.length;r++){var s=null!=arguments[r]?arguments[r]:{},t=Object.keys(s);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(s).filter((function(e){return Object.getOwnPropertyDescriptor(s,e).enumerable})))),t.forEach((function(r){v(e,r,s[r])}))}return e}function C(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):function(e,r){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);s.push.apply(s,t)}return s}(Object(r)).forEach((function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})),e}const g={isValid:!1,errorMessage:"consent.checkbox.invalid",error:"consent.checkbox.invalid"};function A(v){var A,k;const{countryCode:j,visibility:D}=v,{i18n:O}=o(),x=r({});var w;Object.keys(x.current).length||(null===(w=v.setComponentRef)||void 0===w||w.call(v,x.current));const F=r(!1),P=c(D,v.data),[S,R]=s(P),{current:E}=r(u.reduce(((e,r)=>(e[r]=e=>{E[r].current=e},e)),{})),I=!!v.consentCheckboxLabel,q=!I&&Object.keys(S).every((e=>!S[e])),V="editable"===D.deliveryAddress&&"hidden"!==D.billingAddress,[M,N]=s(h({},v.data,I&&{consentCheckbox:!1})),[L,B]=s({}),[_,z]=s({}),[G,H]=s("ready");x.current.showValidation=()=>{F.current=!0,u.forEach((e=>{E[e].current&&E[e].current.showValidation()})),B(h({},I&&{consentCheckbox:M.consentCheckbox?null:g}))},x.current.setStatus=H,f({errors:L,data:M,props:v,isValidating:F}),t((()=>{const e=Object.keys(S).every((e=>!S[e]||!!_[e])),r=!I||!!_.consentCheckbox,s=e&&r,t=b(S,M);v.onChange({data:t,errors:L,valid:_,isValid:s})}),[M,S]);const J=e=>r=>{N((s=>C(h({},s),{[e]:r.data}))),z((s=>C(h({},s),{[e]:r.isValid}))),B((s=>C(h({},s),{[e]:r.errors})))};var K,Q;return e("div",{className:"adyen-checkout__open-invoice"},e(y,null),S.companyDetails&&e(n,{data:v.data.companyDetails,label:"companyDetails",onChange:J("companyDetails"),setComponentRef:E.companyDetails,visibility:D.companyDetails}),S.personalDetails&&e(i,{data:v.data.personalDetails,requiredFields:v.personalDetailsRequiredFields,label:"personalDetails",onChange:J("personalDetails"),setComponentRef:E.personalDetails,visibility:D.personalDetails}),S.bankAccount&&e(p,{holderName:!0,label:"bankAccount",data:M.bankAccount,onChange:J("bankAccount"),ref:E.bankAccount}),S.billingAddress&&e(a,{allowedCountries:null!==(K=null==v||null===(A=v.billingAddressSpecification)||void 0===A?void 0:A.allowedCountries)&&void 0!==K?K:v.allowedCountries,countryCode:j,requiredFields:v.billingAddressRequiredFields,specifications:v.billingAddressSpecification,data:M.billingAddress,label:"billingAddress",onChange:J("billingAddress"),setComponentRef:E.billingAddress,visibility:D.billingAddress}),V&&e(m,{classNameModifiers:["separateDeliveryAddress","consentCheckbox"],name:"separateDeliveryAddress",useLabelElement:!1,showErrorElement:!1},e(l,{label:O.get("separateDeliveryAddress"),checked:S.deliveryAddress,classNameModifiers:["separateDeliveryAddress"],name:"separateDeliveryAddress",onChange:()=>{R((e=>C(h({},e),{deliveryAddress:!S.deliveryAddress})))}})),S.deliveryAddress&&e(a,{allowedCountries:null!==(Q=null==v||null===(k=v.deliveryAddressSpecification)||void 0===k?void 0:k.allowedCountries)&&void 0!==Q?Q:v.allowedCountries,countryCode:j,requiredFields:v.deliveryAddressRequiredFields,specifications:v.deliveryAddressSpecification,data:M.deliveryAddress,label:"deliveryAddress",onChange:J("deliveryAddress"),setComponentRef:E.deliveryAddress,visibility:D.deliveryAddress}),I&&e(d,{data:M,errorMessage:!!L.consentCheckbox,label:v.consentCheckboxLabel,onChange:e=>{const{checked:r}=e.target;N((e=>C(h({},e),{consentCheckbox:r}))),z((e=>C(h({},e),{consentCheckbox:r}))),B((e=>h({},e,{consentCheckbox:r?null:g})))},i18n:O}),v.showPayButton&&v.payButton({status:G,classNameModifiers:[...q?["standalone"]:[]],label:O.get("confirmPurchase")}))}export{A as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as r,useState as s,useEffect as t}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as o}from"../../../core/Context/CoreProvider.js";import n from"../CompanyDetails/CompanyDetails.js";import i from"../PersonalDetails/PersonalDetails.js";import a from"../Address/Address.js";import l from"../FormFields/Checkbox/Checkbox.js";import d from"../FormFields/ConsentCheckbox/ConsentCheckbox.js";import{getInitialActiveFieldsets as c,fieldsetsSchema as u,getActiveFieldsData as b}from"./utils.js";import p from"../IbanInput/IbanInput.js";import m from"../FormFields/Field/Field.js";import y from"../FormInstruction/FormInstruction.js";import f from"./useSRPanelForOpenInvoiceErrors.js";function v(e,r,s){return r in e?Object.defineProperty(e,r,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[r]=s,e}function h(e){for(var r=1;r<arguments.length;r++){var s=null!=arguments[r]?arguments[r]:{},t=Object.keys(s);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(s).filter((function(e){return Object.getOwnPropertyDescriptor(s,e).enumerable})))),t.forEach((function(r){v(e,r,s[r])}))}return e}function C(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):function(e,r){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);s.push.apply(s,t)}return s}(Object(r)).forEach((function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})),e}const g={isValid:!1,errorMessage:"consent.checkbox.invalid",error:"consent.checkbox.invalid"};function A(v){var A,k;const{countryCode:j,visibility:D}=v,{i18n:O}=o(),x=r({});var w;Object.keys(x.current).length||(null===(w=v.setComponentRef)||void 0===w||w.call(v,x.current));const F=r(!1),P=c(D,v.data),[S,R]=s(P),{current:E}=r(u.reduce(((e,r)=>(e[r]=e=>{E[r].current=e},e)),{})),I=!!v.consentCheckboxLabel,q=!I&&Object.keys(S).every((e=>!S[e])),V="editable"===D.deliveryAddress&&"hidden"!==D.billingAddress,[M,N]=s(h({},v.data,I&&{consentCheckbox:!1})),[L,B]=s({}),[_,z]=s({}),[G,H]=s("ready");x.current.showValidation=()=>{F.current=!0,u.forEach((e=>{E[e].current&&E[e].current.showValidation()})),B(h({},I&&{consentCheckbox:M.consentCheckbox?null:g}))},x.current.setStatus=H,f({errors:L,data:M,props:v,isValidating:F}),t((()=>{const e=Object.keys(S).every((e=>!S[e]||!!_[e])),r=!I||!!_.consentCheckbox,s=e&&r,t=b(S,M);v.onChange({data:t,errors:L,valid:_,isValid:s})}),[M,S]);const J=e=>r=>{N((s=>C(h({},s),{[e]:r.data}))),z((s=>C(h({},s),{[e]:r.isValid}))),B((s=>C(h({},s),{[e]:r.errors})))};var K,Q;return e("div",{className:"adyen-checkout__open-invoice"},e(y,null),S.companyDetails&&e(n,{data:v.data.companyDetails,label:"companyDetails",onChange:J("companyDetails"),setComponentRef:E.companyDetails,visibility:D.companyDetails}),S.personalDetails&&e(i,{data:v.data.personalDetails,requiredFields:v.personalDetailsRequiredFields,label:"personalDetails",onChange:J("personalDetails"),setComponentRef:E.personalDetails,visibility:D.personalDetails}),S.bankAccount&&e(p,{holderName:!0,label:"ach.bankAccount",data:M.bankAccount,onChange:J("bankAccount"),ref:E.bankAccount}),S.billingAddress&&e(a,{allowedCountries:null!==(K=null==v||null===(A=v.billingAddressSpecification)||void 0===A?void 0:A.allowedCountries)&&void 0!==K?K:v.allowedCountries,countryCode:j,requiredFields:v.billingAddressRequiredFields,specifications:v.billingAddressSpecification,data:M.billingAddress,label:"billingAddress",onChange:J("billingAddress"),setComponentRef:E.billingAddress,visibility:D.billingAddress}),V&&e(m,{classNameModifiers:["separateDeliveryAddress","consentCheckbox"],name:"separateDeliveryAddress",useLabelElement:!1,showErrorElement:!1},e(l,{label:O.get("separateDeliveryAddress"),checked:S.deliveryAddress,classNameModifiers:["separateDeliveryAddress"],name:"separateDeliveryAddress",onChange:()=>{R((e=>C(h({},e),{deliveryAddress:!S.deliveryAddress})))}})),S.deliveryAddress&&e(a,{allowedCountries:null!==(Q=null==v||null===(k=v.deliveryAddressSpecification)||void 0===k?void 0:k.allowedCountries)&&void 0!==Q?Q:v.allowedCountries,countryCode:j,requiredFields:v.deliveryAddressRequiredFields,specifications:v.deliveryAddressSpecification,data:M.deliveryAddress,label:"deliveryAddress",onChange:J("deliveryAddress"),setComponentRef:E.deliveryAddress,visibility:D.deliveryAddress}),I&&e(d,{data:M,errorMessage:!!L.consentCheckbox,label:v.consentCheckboxLabel,onChange:e=>{const{checked:r}=e.target;N((e=>C(h({},e),{consentCheckbox:r}))),z((e=>C(h({},e),{consentCheckbox:r}))),B((e=>h({},e,{consentCheckbox:r?null:g})))},i18n:O}),v.showPayButton&&v.payButton({status:G,classNameModifiers:[...q?["standalone"]:[]],label:O.get("confirmPurchase")}))}export{A as default};
2
2
  //# sourceMappingURL=OpenInvoice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenInvoice.js","sources":["../../../../../src/components/internal/OpenInvoice/OpenInvoice.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport CompanyDetails from '../CompanyDetails';\nimport PersonalDetails from '../PersonalDetails';\nimport Address from '../Address';\nimport Checkbox from '../FormFields/Checkbox';\nimport ConsentCheckbox from '../FormFields/ConsentCheckbox';\nimport { getActiveFieldsData, getInitialActiveFieldsets, fieldsetsSchema } from './utils';\nimport {\n OpenInvoiceActiveFieldsets,\n OpenInvoiceFieldsetsRefs,\n OpenInvoiceProps,\n OpenInvoiceStateData,\n OpenInvoiceStateError,\n OpenInvoiceStateValid\n} from './types';\nimport './OpenInvoice.scss';\nimport IbanInput from '../IbanInput';\nimport { GenericError } from '../../../core/Errors/types';\nimport Field from '../FormFields/Field';\nimport FormInstruction from '../FormInstruction';\nimport { ComponentMethodsRef } from '../UIElement/types';\nimport useSRPanelForOpenInvoiceErrors from './useSRPanelForOpenInvoiceErrors';\n\nconst consentCBErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'consent.checkbox.invalid',\n error: 'consent.checkbox.invalid'\n};\n\nexport default function OpenInvoice(props: OpenInvoiceProps) {\n const { countryCode, visibility } = props;\n const { i18n } = useCoreContext();\n\n /** An object by which to expose 'public' members to the parent UIElement */\n const openInvoiceRef = useRef<ComponentMethodsRef>({});\n // Just call once\n if (!Object.keys(openInvoiceRef.current).length) {\n props.setComponentRef?.(openInvoiceRef.current);\n }\n\n const isValidating = useRef(false);\n\n const initialActiveFieldsets: OpenInvoiceActiveFieldsets = getInitialActiveFieldsets(visibility, props.data);\n const [activeFieldsets, setActiveFieldsets] = useState<OpenInvoiceActiveFieldsets>(initialActiveFieldsets);\n\n const { current: fieldsetsRefs } = useRef<OpenInvoiceFieldsetsRefs>(\n fieldsetsSchema.reduce((acc, fieldset) => {\n acc[fieldset] = ref => {\n fieldsetsRefs[fieldset].current = ref;\n };\n return acc;\n }, {})\n );\n\n const checkFieldsets = () => Object.keys(activeFieldsets).every(fieldset => !activeFieldsets[fieldset] || !!valid[fieldset]);\n const hasConsentCheckbox = !!props.consentCheckboxLabel;\n const isStandAloneButton = !hasConsentCheckbox && Object.keys(activeFieldsets).every(key => !activeFieldsets[key]);\n const showSeparateDeliveryAddressCheckbox = visibility.deliveryAddress === 'editable' && visibility.billingAddress !== 'hidden';\n\n const [data, setData] = useState<OpenInvoiceStateData>({\n ...props.data,\n ...(hasConsentCheckbox && { consentCheckbox: false })\n });\n const [errors, setErrors] = useState<OpenInvoiceStateError>({});\n const [valid, setValid] = useState<OpenInvoiceStateValid>({});\n const [status, setStatus] = useState('ready');\n\n // Expose methods expected by parent\n openInvoiceRef.current.showValidation = () => {\n isValidating.current = true;\n fieldsetsSchema.forEach(fieldset => {\n if (fieldsetsRefs[fieldset].current) fieldsetsRefs[fieldset].current.showValidation();\n });\n\n setErrors({\n ...(hasConsentCheckbox && { consentCheckbox: data.consentCheckbox ? null : consentCBErrorObj })\n });\n };\n\n openInvoiceRef.current.setStatus = setStatus;\n\n useSRPanelForOpenInvoiceErrors({ errors, data, props, isValidating });\n\n useEffect(() => {\n const fieldsetsAreValid: boolean = checkFieldsets();\n const consentCheckboxValid: boolean = !hasConsentCheckbox || !!valid.consentCheckbox;\n const isValid: boolean = fieldsetsAreValid && consentCheckboxValid;\n const newData: OpenInvoiceStateData = getActiveFieldsData(activeFieldsets, data);\n props.onChange({ data: newData, errors, valid, isValid });\n }, [data, activeFieldsets]);\n\n const handleFieldset = key => state => {\n setData(prevData => ({ ...prevData, [key]: state.data }));\n setValid(prevValid => ({ ...prevValid, [key]: state.isValid }));\n setErrors(prevErrors => ({ ...prevErrors, [key]: state.errors }));\n };\n\n const handleSeparateDeliveryAddress = () => {\n setActiveFieldsets(prevActiveFields => ({\n ...prevActiveFields,\n deliveryAddress: !activeFieldsets.deliveryAddress\n }));\n };\n\n const handleConsentCheckbox = e => {\n const { checked } = e.target;\n setData(prevData => ({ ...prevData, consentCheckbox: checked }));\n setValid(prevValid => ({ ...prevValid, consentCheckbox: checked }));\n setErrors(prevErrors => ({ ...prevErrors, ...{ consentCheckbox: !checked ? consentCBErrorObj : null } }));\n };\n return (\n <div className=\"adyen-checkout__open-invoice\">\n <FormInstruction />\n\n {activeFieldsets.companyDetails && (\n <CompanyDetails\n data={props.data.companyDetails}\n label=\"companyDetails\"\n onChange={handleFieldset('companyDetails')}\n setComponentRef={fieldsetsRefs.companyDetails}\n visibility={visibility.companyDetails}\n />\n )}\n\n {activeFieldsets.personalDetails && (\n <PersonalDetails\n data={props.data.personalDetails}\n requiredFields={props.personalDetailsRequiredFields}\n label=\"personalDetails\"\n onChange={handleFieldset('personalDetails')}\n setComponentRef={fieldsetsRefs.personalDetails}\n visibility={visibility.personalDetails}\n />\n )}\n\n {activeFieldsets.bankAccount && (\n <IbanInput\n holderName={true}\n label=\"bankAccount\"\n data={data.bankAccount}\n onChange={handleFieldset('bankAccount')}\n ref={fieldsetsRefs.bankAccount}\n />\n )}\n\n {activeFieldsets.billingAddress && (\n <Address\n allowedCountries={props?.billingAddressSpecification?.allowedCountries ?? props.allowedCountries}\n countryCode={countryCode}\n requiredFields={props.billingAddressRequiredFields}\n specifications={props.billingAddressSpecification}\n data={data.billingAddress}\n label=\"billingAddress\"\n onChange={handleFieldset('billingAddress')}\n setComponentRef={fieldsetsRefs.billingAddress}\n visibility={visibility.billingAddress}\n />\n )}\n\n {showSeparateDeliveryAddressCheckbox && (\n <Field\n classNameModifiers={['separateDeliveryAddress', 'consentCheckbox']}\n name={'separateDeliveryAddress'}\n useLabelElement={false}\n showErrorElement={false}\n >\n <Checkbox\n label={i18n.get('separateDeliveryAddress')}\n checked={activeFieldsets.deliveryAddress}\n classNameModifiers={['separateDeliveryAddress']}\n name={'separateDeliveryAddress'}\n onChange={handleSeparateDeliveryAddress}\n />\n </Field>\n )}\n\n {activeFieldsets.deliveryAddress && (\n <Address\n allowedCountries={props?.deliveryAddressSpecification?.allowedCountries ?? props.allowedCountries}\n countryCode={countryCode}\n requiredFields={props.deliveryAddressRequiredFields}\n specifications={props.deliveryAddressSpecification}\n data={data.deliveryAddress}\n label=\"deliveryAddress\"\n onChange={handleFieldset('deliveryAddress')}\n setComponentRef={fieldsetsRefs.deliveryAddress}\n visibility={visibility.deliveryAddress}\n />\n )}\n\n {hasConsentCheckbox && (\n <ConsentCheckbox\n data={data}\n errorMessage={!!errors.consentCheckbox}\n label={props.consentCheckboxLabel}\n onChange={handleConsentCheckbox}\n i18n={i18n}\n />\n )}\n\n {props.showPayButton &&\n props.payButton({\n status,\n classNameModifiers: [...(isStandAloneButton ? ['standalone'] : [])],\n label: i18n.get('confirmPurchase')\n })}\n </div>\n );\n}\n"],"names":["consentCBErrorObj","isValid","errorMessage","error","OpenInvoice","props","countryCode","visibility","i18n","useCoreContext","openInvoiceRef","useRef","Object","keys","current","length","setComponentRef","isValidating","initialActiveFieldsets","getInitialActiveFieldsets","data","activeFieldsets","setActiveFieldsets","useState","fieldsetsRefs","fieldsetsSchema","reduce","acc","fieldset","ref","hasConsentCheckbox","consentCheckboxLabel","isStandAloneButton","every","key","showSeparateDeliveryAddressCheckbox","deliveryAddress","billingAddress","setData","_object_spread","consentCheckbox","errors","setErrors","valid","setValid","status","setStatus","showValidation","forEach","useSRPanelForOpenInvoiceErrors","useEffect","fieldsetsAreValid","consentCheckboxValid","newData","getActiveFieldsData","onChange","handleFieldset","state","prevData","_object_spread_props","prevValid","prevErrors","h","div","className","FormInstruction","companyDetails","CompanyDetails","label","personalDetails","PersonalDetails","requiredFields","personalDetailsRequiredFields","bankAccount","IbanInput","holderName","Address","allowedCountries","billingAddressSpecification","billingAddressRequiredFields","specifications","Field","classNameModifiers","name","useLabelElement","showErrorElement","Checkbox","get","checked","prevActiveFields","deliveryAddressSpecification","deliveryAddressRequiredFields","ConsentCheckbox","e","target","showPayButton","payButton"],"mappings":"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"}
1
+ {"version":3,"file":"OpenInvoice.js","sources":["../../../../../src/components/internal/OpenInvoice/OpenInvoice.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport CompanyDetails from '../CompanyDetails';\nimport PersonalDetails from '../PersonalDetails';\nimport Address from '../Address';\nimport Checkbox from '../FormFields/Checkbox';\nimport ConsentCheckbox from '../FormFields/ConsentCheckbox';\nimport { getActiveFieldsData, getInitialActiveFieldsets, fieldsetsSchema } from './utils';\nimport {\n OpenInvoiceActiveFieldsets,\n OpenInvoiceFieldsetsRefs,\n OpenInvoiceProps,\n OpenInvoiceStateData,\n OpenInvoiceStateError,\n OpenInvoiceStateValid\n} from './types';\nimport './OpenInvoice.scss';\nimport IbanInput from '../IbanInput';\nimport { GenericError } from '../../../core/Errors/types';\nimport Field from '../FormFields/Field';\nimport FormInstruction from '../FormInstruction';\nimport { ComponentMethodsRef } from '../UIElement/types';\nimport useSRPanelForOpenInvoiceErrors from './useSRPanelForOpenInvoiceErrors';\n\nconst consentCBErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'consent.checkbox.invalid',\n error: 'consent.checkbox.invalid'\n};\n\nexport default function OpenInvoice(props: OpenInvoiceProps) {\n const { countryCode, visibility } = props;\n const { i18n } = useCoreContext();\n\n /** An object by which to expose 'public' members to the parent UIElement */\n const openInvoiceRef = useRef<ComponentMethodsRef>({});\n // Just call once\n if (!Object.keys(openInvoiceRef.current).length) {\n props.setComponentRef?.(openInvoiceRef.current);\n }\n\n const isValidating = useRef(false);\n\n const initialActiveFieldsets: OpenInvoiceActiveFieldsets = getInitialActiveFieldsets(visibility, props.data);\n const [activeFieldsets, setActiveFieldsets] = useState<OpenInvoiceActiveFieldsets>(initialActiveFieldsets);\n\n const { current: fieldsetsRefs } = useRef<OpenInvoiceFieldsetsRefs>(\n fieldsetsSchema.reduce((acc, fieldset) => {\n acc[fieldset] = ref => {\n fieldsetsRefs[fieldset].current = ref;\n };\n return acc;\n }, {})\n );\n\n const checkFieldsets = () => Object.keys(activeFieldsets).every(fieldset => !activeFieldsets[fieldset] || !!valid[fieldset]);\n const hasConsentCheckbox = !!props.consentCheckboxLabel;\n const isStandAloneButton = !hasConsentCheckbox && Object.keys(activeFieldsets).every(key => !activeFieldsets[key]);\n const showSeparateDeliveryAddressCheckbox = visibility.deliveryAddress === 'editable' && visibility.billingAddress !== 'hidden';\n\n const [data, setData] = useState<OpenInvoiceStateData>({\n ...props.data,\n ...(hasConsentCheckbox && { consentCheckbox: false })\n });\n const [errors, setErrors] = useState<OpenInvoiceStateError>({});\n const [valid, setValid] = useState<OpenInvoiceStateValid>({});\n const [status, setStatus] = useState('ready');\n\n // Expose methods expected by parent\n openInvoiceRef.current.showValidation = () => {\n isValidating.current = true;\n fieldsetsSchema.forEach(fieldset => {\n if (fieldsetsRefs[fieldset].current) fieldsetsRefs[fieldset].current.showValidation();\n });\n\n setErrors({\n ...(hasConsentCheckbox && { consentCheckbox: data.consentCheckbox ? null : consentCBErrorObj })\n });\n };\n\n openInvoiceRef.current.setStatus = setStatus;\n\n useSRPanelForOpenInvoiceErrors({ errors, data, props, isValidating });\n\n useEffect(() => {\n const fieldsetsAreValid: boolean = checkFieldsets();\n const consentCheckboxValid: boolean = !hasConsentCheckbox || !!valid.consentCheckbox;\n const isValid: boolean = fieldsetsAreValid && consentCheckboxValid;\n const newData: OpenInvoiceStateData = getActiveFieldsData(activeFieldsets, data);\n props.onChange({ data: newData, errors, valid, isValid });\n }, [data, activeFieldsets]);\n\n const handleFieldset = key => state => {\n setData(prevData => ({ ...prevData, [key]: state.data }));\n setValid(prevValid => ({ ...prevValid, [key]: state.isValid }));\n setErrors(prevErrors => ({ ...prevErrors, [key]: state.errors }));\n };\n\n const handleSeparateDeliveryAddress = () => {\n setActiveFieldsets(prevActiveFields => ({\n ...prevActiveFields,\n deliveryAddress: !activeFieldsets.deliveryAddress\n }));\n };\n\n const handleConsentCheckbox = e => {\n const { checked } = e.target;\n setData(prevData => ({ ...prevData, consentCheckbox: checked }));\n setValid(prevValid => ({ ...prevValid, consentCheckbox: checked }));\n setErrors(prevErrors => ({ ...prevErrors, ...{ consentCheckbox: !checked ? consentCBErrorObj : null } }));\n };\n return (\n <div className=\"adyen-checkout__open-invoice\">\n <FormInstruction />\n\n {activeFieldsets.companyDetails && (\n <CompanyDetails\n data={props.data.companyDetails}\n label=\"companyDetails\"\n onChange={handleFieldset('companyDetails')}\n setComponentRef={fieldsetsRefs.companyDetails}\n visibility={visibility.companyDetails}\n />\n )}\n\n {activeFieldsets.personalDetails && (\n <PersonalDetails\n data={props.data.personalDetails}\n requiredFields={props.personalDetailsRequiredFields}\n label=\"personalDetails\"\n onChange={handleFieldset('personalDetails')}\n setComponentRef={fieldsetsRefs.personalDetails}\n visibility={visibility.personalDetails}\n />\n )}\n\n {activeFieldsets.bankAccount && (\n <IbanInput\n holderName={true}\n label=\"ach.bankAccount\"\n data={data.bankAccount}\n onChange={handleFieldset('bankAccount')}\n ref={fieldsetsRefs.bankAccount}\n />\n )}\n\n {activeFieldsets.billingAddress && (\n <Address\n allowedCountries={props?.billingAddressSpecification?.allowedCountries ?? props.allowedCountries}\n countryCode={countryCode}\n requiredFields={props.billingAddressRequiredFields}\n specifications={props.billingAddressSpecification}\n data={data.billingAddress}\n label=\"billingAddress\"\n onChange={handleFieldset('billingAddress')}\n setComponentRef={fieldsetsRefs.billingAddress}\n visibility={visibility.billingAddress}\n />\n )}\n\n {showSeparateDeliveryAddressCheckbox && (\n <Field\n classNameModifiers={['separateDeliveryAddress', 'consentCheckbox']}\n name={'separateDeliveryAddress'}\n useLabelElement={false}\n showErrorElement={false}\n >\n <Checkbox\n label={i18n.get('separateDeliveryAddress')}\n checked={activeFieldsets.deliveryAddress}\n classNameModifiers={['separateDeliveryAddress']}\n name={'separateDeliveryAddress'}\n onChange={handleSeparateDeliveryAddress}\n />\n </Field>\n )}\n\n {activeFieldsets.deliveryAddress && (\n <Address\n allowedCountries={props?.deliveryAddressSpecification?.allowedCountries ?? props.allowedCountries}\n countryCode={countryCode}\n requiredFields={props.deliveryAddressRequiredFields}\n specifications={props.deliveryAddressSpecification}\n data={data.deliveryAddress}\n label=\"deliveryAddress\"\n onChange={handleFieldset('deliveryAddress')}\n setComponentRef={fieldsetsRefs.deliveryAddress}\n visibility={visibility.deliveryAddress}\n />\n )}\n\n {hasConsentCheckbox && (\n <ConsentCheckbox\n data={data}\n errorMessage={!!errors.consentCheckbox}\n label={props.consentCheckboxLabel}\n onChange={handleConsentCheckbox}\n i18n={i18n}\n />\n )}\n\n {props.showPayButton &&\n props.payButton({\n status,\n classNameModifiers: [...(isStandAloneButton ? ['standalone'] : [])],\n label: i18n.get('confirmPurchase')\n })}\n </div>\n );\n}\n"],"names":["consentCBErrorObj","isValid","errorMessage","error","OpenInvoice","props","countryCode","visibility","i18n","useCoreContext","openInvoiceRef","useRef","Object","keys","current","length","setComponentRef","isValidating","initialActiveFieldsets","getInitialActiveFieldsets","data","activeFieldsets","setActiveFieldsets","useState","fieldsetsRefs","fieldsetsSchema","reduce","acc","fieldset","ref","hasConsentCheckbox","consentCheckboxLabel","isStandAloneButton","every","key","showSeparateDeliveryAddressCheckbox","deliveryAddress","billingAddress","setData","_object_spread","consentCheckbox","errors","setErrors","valid","setValid","status","setStatus","showValidation","forEach","useSRPanelForOpenInvoiceErrors","useEffect","fieldsetsAreValid","consentCheckboxValid","newData","getActiveFieldsData","onChange","handleFieldset","state","prevData","_object_spread_props","prevValid","prevErrors","h","div","className","FormInstruction","companyDetails","CompanyDetails","label","personalDetails","PersonalDetails","requiredFields","personalDetailsRequiredFields","bankAccount","IbanInput","holderName","Address","allowedCountries","billingAddressSpecification","billingAddressRequiredFields","specifications","Field","classNameModifiers","name","useLabelElement","showErrorElement","Checkbox","get","checked","prevActiveFields","deliveryAddressSpecification","deliveryAddressRequiredFields","ConsentCheckbox","e","target","showPayButton","payButton"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import o from"../Countdown/index.js";import r from"../Button/Button.js";import s from"../Spinner/Spinner.js";import a from"../../../core/Services/payment-status.js";import{processResponse as i}from"../../../core/ProcessResponse/process-response.js";import{copyToClipboard as n}from"../../../utils/clipboard.js";import c from"../../../core/Errors/AdyenCheckoutError.js";import{useCoreContext as p}from"../../../core/Context/CoreProvider.js";import d from"../ContentSeparator/ContentSeparator.js";import l from"../../../core/Context/useImage.js";import{useA11yReporter as m}from"../../../core/Errors/useA11yReporter.js";import u from"../../../utils/useAutoFocus.js";import{ANALYTICS_DOWNLOAD_STR as h,ANALYTICS_QR_CODE_DOWNLOAD as _}from"../../../core/Analytics/constants.js";import{PREFIX as y}from"../Icon/constants.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class f extends t{componentDidMount(){this.statusInterval()}componentWillUnmount(){clearTimeout(this.timeoutId)}pollStatus(t){clearTimeout(this.timeoutId),this.timeoutId=setTimeout((async()=>{const t=performance.now();await this.checkStatus();const e=performance.now();this.statusInterval(Math.round(e-t))}),t)}render({amount:t,url:a,brandLogo:i,brandName:c,countdownTime:g,type:f,onActionHandled:k},{expired:q,completed:b,loading:v}){var C,T;const{i18n:N,loadingContext:w}=p(),I=l(),S=this.props.qrCodeData?`${w}barcode.shtml?barcodeType=qrCode&fileType=png&data=${this.props.qrCodeData}`:this.props.qrCodeImage,j=(t,o)=>{const r=N.get(o);return m(r),e("div",{className:"adyen-checkout__qr-loader adyen-checkout__qr-loader--result"},e("img",{className:"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result",src:I({imageFolder:"components/"})(t),alt:r}),e("div",{className:"adyen-checkout__qr-loader__subtitle adyen-checkout__qr-loader__subtitle--result"},r))};if(q)return j("error","error.subtitle.payment");if(b)return j("success","creditCard.success");if(v)return e("div",{className:"adyen-checkout__qr-loader"},i&&e("img",{alt:c,src:i,className:"adyen-checkout__qr-loader__brand-logo"}),e(s,null));const x=N.get(this.props.timeToPay).split("%@"),E=u();return e("div",{className:`\n adyen-checkout__qr-loader\n adyen-checkout__qr-loader--${f}\n ${this.props.classNameModifiers.map((t=>`adyen-checkout__qr-loader--${t}`))}\n `},i&&e("img",{src:i,alt:c,className:"adyen-checkout__qr-loader__brand-logo"}),t&&t.value&&t.currency&&e("div",{className:"adyen-checkout__qr-loader__payment_amount"},N.amount(t.value,t.currency)),a&&e("div",{className:"adyen-checkout__qr-loader__app-link"},this.props.redirectIntroduction&&e("div",{className:"adyen-checkout__qr-loader__subtitle"},N.get(this.props.redirectIntroduction)),e(r,{classNameModifiers:["qr-loader"],onClick:()=>this.redirectToApp(a),label:N.get(this.props.buttonLabel)}),e(d,null)),e("div",{ref:E,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},N.get(this.props.introduction)),e("img",{src:S,alt:N.get("wechatpay.scanqrcode"),onLoad:()=>{null==k||k({componentType:this.props.type,actionDescription:"qr-code-loaded"})}}),e("div",{className:"adyen-checkout__qr-loader__progress"},e("span",{className:"adyen-checkout__qr-loader__percentage",style:{width:`${this.state.percentage}%`}})),e("div",{className:"adyen-checkout__qr-loader__countdown"},x[0]," ",e(o,{minutesFromNow:g,onTick:this.onTick,onCompleted:this.onTimeUp})," ",x[1]),"string"==typeof this.props.instructions?e("div",{className:"adyen-checkout__qr-loader__instructions"},N.get(this.props.instructions)):null===(C=(T=this.props).instructions)||void 0===C?void 0:C.call(T),this.props.copyBtn&&e("div",{className:"adyen-checkout__qr-loader__actions"},e(r,{inline:!0,variant:"action",onClick:(t,{complete:e})=>{n(this.props.qrCodeData),this.props.onSubmitAnalytics({type:h,target:_}),e()},icon:I({imageFolder:"components/"})(`${y}copy`),label:N.get("button.copy")})))}constructor(t){super(t),g(this,"timeoutId",void 0),g(this,"redirectToApp",(t=>{window.location.assign(t)})),g(this,"statusInterval",((t=0)=>{if(this.state.expired||this.state.completed)return;this.setState((e=>({timePassed:e.timePassed+this.props.delay+t})));const e=this.state.timePassed>=this.props.throttleTime?this.props.throttledInterval:this.state.delay;this.pollStatus(e)})),g(this,"onTick",(t=>{this.setState({percentage:t.percentage})})),g(this,"onTimeUp",(()=>{this.setState({expired:!0}),clearTimeout(this.timeoutId),this.props.onError(new c("ERROR","Payment Expired"))})),g(this,"onComplete",(t=>{clearTimeout(this.timeoutId),this.setState({completed:!0,loading:!1});const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)})),g(this,"onError",(t=>{if(clearTimeout(this.timeoutId),this.setState({expired:!0,loading:!1}),t.props.payload){const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)}const e=new c("ERROR","error result with no payload in response");return this.props.onError(e)})),g(this,"checkStatus",(()=>{const{paymentData:t,clientKey:e,loadingContext:o,throttledInterval:r}=this.props;return a(t,e,o,r).then(i).catch((t=>({type:"network-error",props:t}))).then((t=>{switch(t.type){case"success":this.onComplete(t);break;case"error":this.onError(t);break;default:this.setState({loading:!1})}return t}))})),this.state={buttonStatus:"default",completed:!1,delay:t.delay,expired:!1,loading:!0,percentage:100,timePassed:0}}}g(f,"defaultProps",{delay:2e3,countdownTime:15,onError:()=>{},onComplete:()=>{},throttleTime:6e4,classNameModifiers:[],throttledInterval:1e4,introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp"});export{f as default};
1
+ import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import o from"../Countdown/index.js";import r from"../Button/Button.js";import s from"../Spinner/Spinner.js";import a from"../../../core/Services/payment-status.js";import{processResponse as i}from"../../../core/ProcessResponse/process-response.js";import{copyToClipboard as n}from"../../../utils/clipboard.js";import c from"../../../core/Errors/AdyenCheckoutError.js";import{useCoreContext as p}from"../../../core/Context/CoreProvider.js";import d from"../ContentSeparator/ContentSeparator.js";import l from"../../../core/Context/useImage.js";import{useA11yReporter as m}from"../../../core/Errors/useA11yReporter.js";import u from"../../../utils/useAutoFocus.js";import{ANALYTICS_DOWNLOAD_STR as h,ANALYTICS_QR_CODE_DOWNLOAD as _}from"../../../core/Analytics/constants.js";import{PREFIX as y}from"../Icon/constants.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class f extends t{componentDidMount(){this.statusInterval()}componentWillUnmount(){clearTimeout(this.timeoutId)}pollStatus(t){clearTimeout(this.timeoutId),this.timeoutId=setTimeout((async()=>{const t=performance.now();await this.checkStatus();const e=performance.now();this.statusInterval(Math.round(e-t))}),t)}render({amount:t,url:a,brandLogo:i,brandName:c,countdownTime:g,type:f,onActionHandled:k},{expired:q,completed:b,loading:v}){var C,T;const{i18n:N,loadingContext:w}=p(),I=l(),j=this.props.qrCodeData?`${w}barcode.shtml?barcodeType=qrCode&fileType=png&data=${this.props.qrCodeData}`:this.props.qrCodeImage,S=(t,o)=>{const r=N.get(o);return m(r),e("div",{className:"adyen-checkout__qr-loader adyen-checkout__qr-loader--result"},e("img",{className:"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result",src:I({imageFolder:"components/"})(t),alt:r}),e("div",{className:"adyen-checkout__qr-loader__subtitle adyen-checkout__qr-loader__subtitle--result"},r))};if(q)return S("error","error.subtitle.payment");if(b)return S("success","creditCard.success");if(v)return e("div",{className:"adyen-checkout__qr-loader"},i&&e("img",{alt:c,src:i,className:"adyen-checkout__qr-loader__brand-logo"}),e(s,null));const x=N.get(this.props.timeToPay).split("%@"),E=u(),P=this.props.classNameModifiers.map((t=>`adyen-checkout__qr-loader--${t}`));return e("div",{className:`adyen-checkout__qr-loader adyen-checkout__qr-loader--${f} ${P.join(" ")}`},i&&e("img",{src:i,alt:c,className:"adyen-checkout__qr-loader__brand-logo"}),t&&t.value&&t.currency&&e("div",{className:"adyen-checkout__qr-loader__payment_amount"},N.amount(t.value,t.currency)),a&&e("div",{className:"adyen-checkout__qr-loader__app-link"},this.props.redirectIntroduction&&e("div",{className:"adyen-checkout__qr-loader__subtitle"},N.get(this.props.redirectIntroduction)),e(r,{classNameModifiers:["qr-loader"],onClick:()=>this.redirectToApp(a),label:N.get(this.props.buttonLabel)}),e(d,null)),e("div",{ref:E,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},N.get(this.props.introduction)),e("img",{src:j,alt:N.get("wechatpay.scanqrcode"),onLoad:()=>{null==k||k({componentType:this.props.type,actionDescription:"qr-code-loaded"})}}),e("div",{className:"adyen-checkout__qr-loader__progress"},e("span",{className:"adyen-checkout__qr-loader__percentage",style:{width:`${this.state.percentage}%`}})),e("div",{className:"adyen-checkout__qr-loader__countdown"},x[0]," ",e(o,{minutesFromNow:g,onTick:this.onTick,onCompleted:this.onTimeUp})," ",x[1]),"string"==typeof this.props.instructions?e("div",{className:"adyen-checkout__qr-loader__instructions"},N.get(this.props.instructions)):null===(C=(T=this.props).instructions)||void 0===C?void 0:C.call(T),this.props.copyBtn&&e("div",{className:"adyen-checkout__qr-loader__actions"},e(r,{inline:!0,variant:"action",onClick:(t,{complete:e})=>{n(this.props.qrCodeData),this.props.onSubmitAnalytics({type:h,target:_}),e()},icon:I({imageFolder:"components/"})(`${y}copy`),label:N.get("button.copy")})))}constructor(t){super(t),g(this,"timeoutId",void 0),g(this,"redirectToApp",(t=>{window.location.assign(t)})),g(this,"statusInterval",((t=0)=>{if(this.state.expired||this.state.completed)return;this.setState((e=>({timePassed:e.timePassed+this.props.delay+t})));const e=this.state.timePassed>=this.props.throttleTime?this.props.throttledInterval:this.state.delay;this.pollStatus(e)})),g(this,"onTick",(t=>{this.setState({percentage:t.percentage})})),g(this,"onTimeUp",(()=>{this.setState({expired:!0}),clearTimeout(this.timeoutId),this.props.onError(new c("ERROR","Payment Expired"))})),g(this,"onComplete",(t=>{clearTimeout(this.timeoutId),this.setState({completed:!0,loading:!1});const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)})),g(this,"onError",(t=>{if(clearTimeout(this.timeoutId),this.setState({expired:!0,loading:!1}),t.props.payload){const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)}const e=new c("ERROR","error result with no payload in response");return this.props.onError(e)})),g(this,"checkStatus",(()=>{const{paymentData:t,clientKey:e,loadingContext:o,throttledInterval:r}=this.props;return a(t,e,o,r).then(i).catch((t=>({type:"network-error",props:t}))).then((t=>{switch(t.type){case"success":this.onComplete(t);break;case"error":this.onError(t);break;default:this.setState({loading:!1})}return t}))})),this.state={buttonStatus:"default",completed:!1,delay:t.delay,expired:!1,loading:!0,percentage:100,timePassed:0}}}g(f,"defaultProps",{delay:2e3,countdownTime:15,onError:()=>{},onComplete:()=>{},throttleTime:6e4,classNameModifiers:[],throttledInterval:1e4,introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp"});export{f as default};
2
2
  //# sourceMappingURL=QRLoader.js.map