@adyen/adyen-web 6.45.1 → 6.46.0-alpha.7c7199d

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 (344) hide show
  1. package/dist/cjs/adyen.css +7 -7
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +136 -71
  6. package/dist/es/adyen.css +7 -7
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/ANCV.js +1 -1
  9. package/dist/es/components/ANCV/ANCV.js.map +1 -1
  10. package/dist/es/components/ANCV/components/ANCVInput.js +1 -1
  11. package/dist/es/components/ANCV/components/ANCVInput.js.map +1 -1
  12. package/dist/es/components/Ach/Ach.js +1 -1
  13. package/dist/es/components/Ach/Ach.js.map +1 -1
  14. package/dist/es/components/Ach/components/AchComponent.js +1 -1
  15. package/dist/es/components/Ach/components/AchComponent.js.map +1 -1
  16. package/dist/es/components/Ach/components/useSRPanelForACHErrors.js.map +1 -1
  17. package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
  18. package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
  19. package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
  20. package/dist/es/components/BacsDD/BacsDD.js +1 -1
  21. package/dist/es/components/BacsDD/BacsDD.js.map +1 -1
  22. package/dist/es/components/BacsDD/components/BacsInput.js +1 -1
  23. package/dist/es/components/BacsDD/components/BacsInput.js.map +1 -1
  24. package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
  25. package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
  26. package/dist/es/components/Blik/Blik.js +1 -1
  27. package/dist/es/components/Blik/Blik.js.map +1 -1
  28. package/dist/es/components/Blik/components/BlikInput.js +1 -1
  29. package/dist/es/components/Blik/components/BlikInput.js.map +1 -1
  30. package/dist/es/components/Boleto/components/BoletoInput/BoletoInput.js +1 -1
  31. package/dist/es/components/Boleto/components/BoletoInput/BoletoInput.js.map +1 -1
  32. package/dist/es/components/Card/Card.js +1 -1
  33. package/dist/es/components/Card/Card.js.map +1 -1
  34. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  35. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  36. package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
  37. package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
  38. package/dist/es/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js +1 -1
  39. package/dist/es/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js.map +1 -1
  40. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  41. package/dist/es/components/Card/components/CardInput/utils.js +1 -1
  42. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  43. package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
  44. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  45. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  46. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  47. package/dist/es/components/Doku/components/DokuInput/DokuInput.js +1 -1
  48. package/dist/es/components/Doku/components/DokuInput/DokuInput.js.map +1 -1
  49. package/dist/es/components/Dragonpay/Dragonpay.js +1 -1
  50. package/dist/es/components/Dragonpay/Dragonpay.js.map +1 -1
  51. package/dist/es/components/Dragonpay/components/DragonpayInput/DragonpayInput.js +1 -1
  52. package/dist/es/components/Dragonpay/components/DragonpayInput/DragonpayInput.js.map +1 -1
  53. package/dist/es/components/Dropin/Dropin.js +1 -1
  54. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  55. package/dist/es/components/Econtext/Econtext.js +1 -1
  56. package/dist/es/components/Econtext/Econtext.js.map +1 -1
  57. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js +1 -1
  58. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  59. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  60. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  61. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  62. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  63. package/dist/es/components/Giftcard/components/GiftcardResult.js +1 -1
  64. package/dist/es/components/Giftcard/components/GiftcardResult.js.map +1 -1
  65. package/dist/es/components/Giropay/Giropay.js +1 -1
  66. package/dist/es/components/Giropay/Giropay.js.map +1 -1
  67. package/dist/es/components/Iris/Iris.js +1 -1
  68. package/dist/es/components/Iris/Iris.js.map +1 -1
  69. package/dist/es/components/Iris/components/IrisComponent.js +1 -1
  70. package/dist/es/components/Iris/components/IrisComponent.js.map +1 -1
  71. package/dist/es/components/Iris/components/IrisGenerateQRCode.js +1 -1
  72. package/dist/es/components/Iris/components/IrisGenerateQRCode.js.map +1 -1
  73. package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
  74. package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
  75. package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
  76. package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  77. package/dist/es/components/MBWay/components/MBWayInput/MBWayInput.js +1 -1
  78. package/dist/es/components/MBWay/components/MBWayInput/MBWayInput.js.map +1 -1
  79. package/dist/es/components/Multibanco/Multibanco.js +1 -1
  80. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  81. package/dist/es/components/Oxxo/Oxxo.js +1 -1
  82. package/dist/es/components/Oxxo/Oxxo.js.map +1 -1
  83. package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
  84. package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
  85. package/dist/es/components/PayByBankPix/components/Enrollment/Enrollment.js +1 -1
  86. package/dist/es/components/PayByBankPix/components/Enrollment/Enrollment.js.map +1 -1
  87. package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
  88. package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
  89. package/dist/es/components/PayPal/Paypal.js +1 -1
  90. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  91. package/dist/es/components/PayPalFastlane/Fastlane.js +1 -1
  92. package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -1
  93. package/dist/es/components/PayPalFastlane/components/FastlaneComponent.js +1 -1
  94. package/dist/es/components/PayPalFastlane/components/FastlaneComponent.js.map +1 -1
  95. package/dist/es/components/PayTo/PayTo.js +1 -1
  96. package/dist/es/components/PayTo/PayTo.js.map +1 -1
  97. package/dist/es/components/PayTo/components/PayToComponent.js +1 -1
  98. package/dist/es/components/PayTo/components/PayToComponent.js.map +1 -1
  99. package/dist/es/components/Pix/Pix.js +1 -1
  100. package/dist/es/components/Pix/Pix.js.map +1 -1
  101. package/dist/es/components/Pix/components/PixInput/PixInput.js +1 -1
  102. package/dist/es/components/Pix/components/PixInput/PixInput.js.map +1 -1
  103. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  104. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  105. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js +1 -1
  106. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  107. package/dist/es/components/Redirect/Redirect.js +1 -1
  108. package/dist/es/components/Redirect/Redirect.js.map +1 -1
  109. package/dist/es/components/Trustly/Trustly.js +1 -1
  110. package/dist/es/components/Trustly/Trustly.js.map +1 -1
  111. package/dist/es/components/UPI/UPI.js +1 -1
  112. package/dist/es/components/UPI/UPI.js.map +1 -1
  113. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  114. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  115. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  116. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  117. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  118. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  119. package/dist/es/components/internal/Address/components/CountryField.js.map +1 -1
  120. package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
  121. package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
  122. package/dist/es/components/internal/Address/components/StateField.js.map +1 -1
  123. package/dist/es/components/internal/Address/constants.js +1 -1
  124. package/dist/es/components/internal/Address/constants.js.map +1 -1
  125. package/dist/es/components/internal/Address/validate.formats.js +1 -1
  126. package/dist/es/components/internal/Address/validate.formats.js.map +1 -1
  127. package/dist/es/components/internal/Address/validate.js +1 -1
  128. package/dist/es/components/internal/Address/validate.js.map +1 -1
  129. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  130. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  131. package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js +1 -1
  132. package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
  133. package/dist/es/components/internal/DisclaimerMessage/utils.js +2 -0
  134. package/dist/es/components/internal/DisclaimerMessage/utils.js.map +1 -0
  135. package/dist/es/components/internal/FormFields/utils.js +1 -1
  136. package/dist/es/components/internal/FormFields/utils.js.map +1 -1
  137. package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
  138. package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
  139. package/dist/es/components/internal/IssuerList/IssuerList.js +1 -1
  140. package/dist/es/components/internal/IssuerList/IssuerList.js.map +1 -1
  141. package/dist/es/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  142. package/dist/es/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  143. package/dist/es/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  144. package/dist/es/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  145. package/dist/es/components/internal/PayButton/PayButton.js +1 -1
  146. package/dist/es/components/internal/PayButton/PayButton.js.map +1 -1
  147. package/dist/es/components/internal/PhoneInput/usePhonePrefixes.js.map +1 -1
  148. package/dist/es/components/internal/RedirectButton/RedirectButton.js +1 -1
  149. package/dist/es/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  150. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  151. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  152. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  153. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  154. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  155. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  156. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  157. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  158. package/dist/es/core/Errors/AdyenCheckoutError.js.map +1 -1
  159. package/dist/es/core/Errors/SRPanelProvider.js.map +1 -1
  160. package/dist/es/core/RiskModule/RiskModule.js +1 -1
  161. package/dist/es/core/RiskModule/RiskModule.js.map +1 -1
  162. package/dist/es/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  163. package/dist/es/core/Services/get-dataset.js.map +1 -1
  164. package/dist/es/core/Services/http.js +1 -1
  165. package/dist/es/core/Services/http.js.map +1 -1
  166. package/dist/es/core/config.js +1 -1
  167. package/dist/es/core/config.js.map +1 -1
  168. package/dist/es/core/core.js.map +1 -1
  169. package/dist/es/core/core.registry.js +1 -1
  170. package/dist/es/core/core.registry.js.map +1 -1
  171. package/dist/es/core/utils.js +1 -1
  172. package/dist/es/core/utils.js.map +1 -1
  173. package/dist/es/index.d.ts +136 -71
  174. package/dist/es/packages/server/translations/en-US.json.js +1 -1
  175. package/dist/es-legacy/adyen.css +7 -7
  176. package/dist/es-legacy/adyen.css.map +1 -1
  177. package/dist/es-legacy/components/ANCV/ANCV.js +1 -1
  178. package/dist/es-legacy/components/ANCV/ANCV.js.map +1 -1
  179. package/dist/es-legacy/components/ANCV/components/ANCVInput.js +1 -1
  180. package/dist/es-legacy/components/ANCV/components/ANCVInput.js.map +1 -1
  181. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  182. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  183. package/dist/es-legacy/components/Ach/components/AchComponent.js +1 -1
  184. package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -1
  185. package/dist/es-legacy/components/Ach/components/useSRPanelForACHErrors.js.map +1 -1
  186. package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
  187. package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
  188. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  189. package/dist/es-legacy/components/BacsDD/BacsDD.js +1 -1
  190. package/dist/es-legacy/components/BacsDD/BacsDD.js.map +1 -1
  191. package/dist/es-legacy/components/BacsDD/components/BacsInput.js +1 -1
  192. package/dist/es-legacy/components/BacsDD/components/BacsInput.js.map +1 -1
  193. package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
  194. package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
  195. package/dist/es-legacy/components/Blik/Blik.js +1 -1
  196. package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
  197. package/dist/es-legacy/components/Blik/components/BlikInput.js +1 -1
  198. package/dist/es-legacy/components/Blik/components/BlikInput.js.map +1 -1
  199. package/dist/es-legacy/components/Boleto/components/BoletoInput/BoletoInput.js +1 -1
  200. package/dist/es-legacy/components/Boleto/components/BoletoInput/BoletoInput.js.map +1 -1
  201. package/dist/es-legacy/components/Card/Card.js +1 -1
  202. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  203. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  204. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  205. package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
  206. package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
  207. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js +1 -1
  208. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js.map +1 -1
  209. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  210. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  211. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  212. package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
  213. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  214. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  215. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  216. package/dist/es-legacy/components/Doku/components/DokuInput/DokuInput.js +1 -1
  217. package/dist/es-legacy/components/Doku/components/DokuInput/DokuInput.js.map +1 -1
  218. package/dist/es-legacy/components/Dragonpay/Dragonpay.js +1 -1
  219. package/dist/es-legacy/components/Dragonpay/Dragonpay.js.map +1 -1
  220. package/dist/es-legacy/components/Dragonpay/components/DragonpayInput/DragonpayInput.js +1 -1
  221. package/dist/es-legacy/components/Dragonpay/components/DragonpayInput/DragonpayInput.js.map +1 -1
  222. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  223. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  224. package/dist/es-legacy/components/Econtext/Econtext.js +1 -1
  225. package/dist/es-legacy/components/Econtext/Econtext.js.map +1 -1
  226. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js +1 -1
  227. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  228. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  229. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  230. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  231. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  232. package/dist/es-legacy/components/Giftcard/components/GiftcardResult.js +1 -1
  233. package/dist/es-legacy/components/Giftcard/components/GiftcardResult.js.map +1 -1
  234. package/dist/es-legacy/components/Giropay/Giropay.js +1 -1
  235. package/dist/es-legacy/components/Giropay/Giropay.js.map +1 -1
  236. package/dist/es-legacy/components/Iris/Iris.js +1 -1
  237. package/dist/es-legacy/components/Iris/Iris.js.map +1 -1
  238. package/dist/es-legacy/components/Iris/components/IrisComponent.js +1 -1
  239. package/dist/es-legacy/components/Iris/components/IrisComponent.js.map +1 -1
  240. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js +1 -1
  241. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js.map +1 -1
  242. package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
  243. package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
  244. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
  245. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  246. package/dist/es-legacy/components/MBWay/components/MBWayInput/MBWayInput.js +1 -1
  247. package/dist/es-legacy/components/MBWay/components/MBWayInput/MBWayInput.js.map +1 -1
  248. package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
  249. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  250. package/dist/es-legacy/components/Oxxo/Oxxo.js +1 -1
  251. package/dist/es-legacy/components/Oxxo/Oxxo.js.map +1 -1
  252. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  253. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  254. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/Enrollment.js +1 -1
  255. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/Enrollment.js.map +1 -1
  256. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
  257. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
  258. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  259. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  260. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js +1 -1
  261. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -1
  262. package/dist/es-legacy/components/PayPalFastlane/components/FastlaneComponent.js +1 -1
  263. package/dist/es-legacy/components/PayPalFastlane/components/FastlaneComponent.js.map +1 -1
  264. package/dist/es-legacy/components/PayTo/PayTo.js +1 -1
  265. package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
  266. package/dist/es-legacy/components/PayTo/components/PayToComponent.js +1 -1
  267. package/dist/es-legacy/components/PayTo/components/PayToComponent.js.map +1 -1
  268. package/dist/es-legacy/components/Pix/Pix.js +1 -1
  269. package/dist/es-legacy/components/Pix/Pix.js.map +1 -1
  270. package/dist/es-legacy/components/Pix/components/PixInput/PixInput.js +1 -1
  271. package/dist/es-legacy/components/Pix/components/PixInput/PixInput.js.map +1 -1
  272. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  273. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  274. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js +1 -1
  275. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  276. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  277. package/dist/es-legacy/components/Redirect/Redirect.js.map +1 -1
  278. package/dist/es-legacy/components/Trustly/Trustly.js +1 -1
  279. package/dist/es-legacy/components/Trustly/Trustly.js.map +1 -1
  280. package/dist/es-legacy/components/UPI/UPI.js +1 -1
  281. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  282. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  283. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  284. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  285. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  286. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  287. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  288. package/dist/es-legacy/components/internal/Address/components/CountryField.js.map +1 -1
  289. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
  290. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
  291. package/dist/es-legacy/components/internal/Address/components/StateField.js.map +1 -1
  292. package/dist/es-legacy/components/internal/Address/constants.js +1 -1
  293. package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
  294. package/dist/es-legacy/components/internal/Address/validate.formats.js +1 -1
  295. package/dist/es-legacy/components/internal/Address/validate.formats.js.map +1 -1
  296. package/dist/es-legacy/components/internal/Address/validate.js +1 -1
  297. package/dist/es-legacy/components/internal/Address/validate.js.map +1 -1
  298. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  299. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  300. package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js +1 -1
  301. package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
  302. package/dist/es-legacy/components/internal/DisclaimerMessage/utils.js +2 -0
  303. package/dist/es-legacy/components/internal/DisclaimerMessage/utils.js.map +1 -0
  304. package/dist/es-legacy/components/internal/FormFields/utils.js +1 -1
  305. package/dist/es-legacy/components/internal/FormFields/utils.js.map +1 -1
  306. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
  307. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
  308. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  309. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  310. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  311. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  312. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  313. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  314. package/dist/es-legacy/components/internal/PayButton/PayButton.js +1 -1
  315. package/dist/es-legacy/components/internal/PayButton/PayButton.js.map +1 -1
  316. package/dist/es-legacy/components/internal/PhoneInput/usePhonePrefixes.js.map +1 -1
  317. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js +1 -1
  318. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  319. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  320. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  321. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  322. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  323. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  324. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  325. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  326. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  327. package/dist/es-legacy/core/Errors/AdyenCheckoutError.js.map +1 -1
  328. package/dist/es-legacy/core/Errors/SRPanelProvider.js.map +1 -1
  329. package/dist/es-legacy/core/RiskModule/RiskModule.js +1 -1
  330. package/dist/es-legacy/core/RiskModule/RiskModule.js.map +1 -1
  331. package/dist/es-legacy/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  332. package/dist/es-legacy/core/Services/get-dataset.js.map +1 -1
  333. package/dist/es-legacy/core/Services/http.js +1 -1
  334. package/dist/es-legacy/core/Services/http.js.map +1 -1
  335. package/dist/es-legacy/core/config.js +1 -1
  336. package/dist/es-legacy/core/config.js.map +1 -1
  337. package/dist/es-legacy/core/core.js.map +1 -1
  338. package/dist/es-legacy/core/core.registry.js +1 -1
  339. package/dist/es-legacy/core/core.registry.js.map +1 -1
  340. package/dist/es-legacy/core/utils.js +1 -1
  341. package/dist/es-legacy/core/utils.js.map +1 -1
  342. package/dist/es-legacy/packages/server/translations/en-US.json.js +1 -1
  343. package/package.json +11 -11
  344. package/styles/adyen.css +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"BacsInput.js","sources":["../../../../../src/components/BacsDD/components/BacsInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../../internal/FormFields/Field';\nimport ConsentCheckbox from '../../internal/FormFields/ConsentCheckbox';\nimport { bacsValidationRules, bacsFormatters } from './validate';\nimport { BacsDataState, BacsInputProps } from './types';\nimport './BacsInput.scss';\n\nimport useForm from '../../../utils/useForm';\nimport useImage from '../../../core/Context/useImage';\nimport InputText from '../../internal/FormFields/InputText';\nimport InputEmail from '../../internal/FormFields/InputEmail';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { getErrorMessage } from '../../../utils/getErrorMessage';\nimport { PREFIX } from '../../internal/Icon/constants';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport { ComponentMethodsRef, UIElementStatus } from '../../types';\n\nconst ENTER_STATE = 'enter-data';\nconst CONFIRM_STATE = 'confirm-data';\n\nfunction BacsInput(props: Readonly<BacsInputProps>) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { amount } = useAmount();\n\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<BacsDataState>({\n schema: ['holderName', 'bankAccountNumber', 'bankLocationId', 'shopperEmail', 'amountConsentCheckbox', 'accountConsentCheckbox'],\n defaultData: props.data,\n formatters: bacsFormatters,\n rules: bacsValidationRules\n });\n\n const [status, setStatus] = useState(ENTER_STATE);\n\n const bacsInputRef = useRef<ComponentMethodsRef>({\n setStatus,\n showValidation: () => {\n triggerValidation();\n }\n });\n\n useEffect(() => {\n props.setComponentRef(bacsInputRef.current);\n }, [props.setComponentRef]);\n\n const handlePayButton = () => {\n if (!isValid) return bacsInputRef.current?.showValidation?.();\n\n if (status === ENTER_STATE) {\n return bacsInputRef.current?.setStatus?.(CONFIRM_STATE as UIElementStatus);\n } else if (status === CONFIRM_STATE) {\n return props.onSubmit();\n }\n };\n\n const handleEdit = () => {\n return bacsInputRef.current?.setStatus?.(ENTER_STATE as UIElementStatus);\n };\n\n useEffect(() => {\n props.onChange({ data, valid, errors, isValid });\n }, [data, valid, errors, isValid]);\n\n return (\n <div\n className={classNames({\n 'adyen-checkout__bacs': true,\n 'adyen-checkout__bacs--confirm': status === CONFIRM_STATE || status === 'loading'\n })}\n >\n <FormInstruction />\n\n {status == CONFIRM_STATE && (\n <div\n className={classNames({\n 'adyen-checkout__bacs--edit': true,\n 'adyen-checkout__bacs--edit-dropin': props.isDropin\n })}\n >\n <InputText\n name={'bacsEdit'}\n className={'adyen-checkout__bacs--edit-button'}\n value={i18n.get('edit')}\n aria-label={i18n.get('edit')}\n readonly={true}\n onClick={handleEdit}\n autocomplete={undefined}\n />\n </div>\n )}\n\n <Field\n className={classNames({\n 'adyen-checkout__bacs--holder-name': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n label={i18n.get('bacs.accountHolderName')}\n errorMessage={errors.holderName ? i18n.get('bacs.accountHolderName.invalid') : false}\n isValid={valid.holderName}\n name={'accountHolderName'}\n i18n={i18n}\n >\n <InputText\n name={'bacs.accountHolderName'}\n className={'adyen-checkout__bacs-input--holder-name'}\n placeholder={props.placeholders?.holderName}\n value={data.holderName}\n aria-invalid={!valid.holderName}\n aria-label={i18n.get('bacs.accountHolderName')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={'name'}\n onBlur={handleChangeFor('holderName', 'blur')}\n onInput={handleChangeFor('holderName', 'input')}\n />\n </Field>\n\n <div className=\"adyen-checkout__bacs__num-id adyen-checkout__field-wrapper\">\n <Field\n errorMessage={Boolean(errors.bankAccountNumber) && i18n.get('bacs.accountNumber.invalid')}\n label={i18n.get('bacs.accountNumber')}\n className={classNames({\n 'adyen-checkout__bacs--bank-account-number': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n classNameModifiers={['col-70']}\n isValid={valid.bankAccountNumber}\n name={'bankAccountNumber'}\n i18n={i18n}\n >\n <InputText\n value={data.bankAccountNumber}\n className={'adyen-checkout__bacs-input--bank-account-number'}\n placeholder={props.placeholders?.bankAccountNumber}\n aria-invalid={!valid.bankAccountNumber}\n aria-label={i18n.get('bacs.accountNumber')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={undefined}\n onBlur={handleChangeFor('bankAccountNumber', 'blur')}\n onInput={handleChangeFor('bankAccountNumber', 'input')}\n />\n </Field>\n\n <Field\n errorMessage={Boolean(errors.bankLocationId) && i18n.get('bacs.bankLocationId.invalid')}\n label={i18n.get('bacs.bankLocationId')}\n className={classNames({\n 'adyen-checkout__bacs--bank-location-id': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n classNameModifiers={['col-30']}\n isValid={valid.bankLocationId}\n name={'bankLocationId'}\n i18n={i18n}\n >\n <InputText\n value={data.bankLocationId}\n className={'adyen-checkout__bacs-input--bank-location-id'}\n placeholder={props.placeholders?.bankLocationId}\n aria-invalid={!valid.bankLocationId}\n aria-label={i18n.get('bacs.bankLocationId')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={undefined}\n onBlur={handleChangeFor('bankLocationId', 'blur')}\n onInput={handleChangeFor('bankLocationId', 'input')}\n />\n </Field>\n </div>\n\n <Field\n errorMessage={getErrorMessage(i18n, errors.shopperEmail ?? undefined, i18n.get('shopperEmail'))}\n label={i18n.get('shopperEmail')}\n className={classNames({\n 'adyen-checkout__bacs--shopper-email': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n isValid={valid.shopperEmail}\n name={'emailAddress'}\n i18n={i18n}\n >\n <InputEmail\n value={data.shopperEmail}\n name={'shopperEmail'}\n className={'adyen-checkout__bacs-input--shopper-email'}\n classNameModifiers={['large']}\n placeholder={props.placeholders?.shopperEmail}\n spellcheck={false}\n aria-invalid={!valid.shopperEmail}\n aria-label={i18n.get('shopperEmail')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={'email'}\n onInput={handleChangeFor('shopperEmail', 'input')}\n onBlur={handleChangeFor('shopperEmail', 'blur')}\n />\n </Field>\n\n {status === ENTER_STATE && (\n <ConsentCheckbox\n classNameModifiers={['amountConsentCheckbox']}\n errorMessage={errors.amountConsentCheckbox}\n label={i18n.get('bacs.consent.amount')}\n onChange={handleChangeFor('amountConsentCheckbox')}\n checked={Boolean(data.amountConsentCheckbox)}\n i18n={i18n}\n />\n )}\n\n {status === ENTER_STATE && (\n <ConsentCheckbox\n classNameModifiers={['accountConsentCheckbox']}\n errorMessage={errors.accountConsentCheckbox}\n label={i18n.get('bacs.consent.account')}\n onChange={handleChangeFor('accountConsentCheckbox')}\n checked={Boolean(data.accountConsentCheckbox)}\n i18n={i18n}\n />\n )}\n\n {props.showPayButton &&\n props.payButton?.({\n status,\n label:\n status === ENTER_STATE\n ? i18n.get('continue')\n : `${i18n.get('bacs.confirm')} ${\n !!amount?.value && !!amount?.currency ? i18n.amount(amount.value, amount.currency) : ''\n }`,\n icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`),\n onClick: handlePayButton\n })}\n </div>\n );\n}\n\nBacsInput.defaultProps = {\n data: {},\n placeholders: {}\n};\n\nexport default BacsInput;\n"],"names":["ENTER_STATE","CONFIRM_STATE","BacsInput","props","i18n","useCoreContext","getImage","useImage","amount","useAmount","handleChangeFor","triggerValidation","data","valid","errors","isValid","useForm","schema","defaultData","formatters","bacsFormatters","rules","bacsValidationRules","status","setStatus","useState","bacsInputRef","useRef","showValidation","useEffect","setComponentRef","current","onChange","h","div","className","classNames","FormInstruction","isDropin","InputText","name","value","get","aria-label","readonly","onClick","autocomplete","undefined","Field","label","errorMessage","holderName","placeholder","placeholders","aria-invalid","aria-required","required","autocorrect","onBlur","onInput","Boolean","bankAccountNumber","classNameModifiers","bankLocationId","getErrorMessage","shopperEmail","InputEmail","spellcheck","ConsentCheckbox","amountConsentCheckbox","checked","accountConsentCheckbox","showPayButton","payButton","currency","icon","imageFolder","PREFIX","onSubmit","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"BacsInput.js","sources":["../../../../../src/components/BacsDD/components/BacsInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../../internal/FormFields/Field';\nimport ConsentCheckbox from '../../internal/FormFields/ConsentCheckbox';\nimport { bacsValidationRules, bacsFormatters } from './validate';\nimport { BacsDataState, BacsInputProps } from './types';\nimport './BacsInput.scss';\n\nimport useForm from '../../../utils/useForm';\nimport useImage from '../../../core/Context/useImage';\nimport InputText from '../../internal/FormFields/InputText';\nimport InputEmail from '../../internal/FormFields/InputEmail';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { getErrorMessage } from '../../../utils/getErrorMessage';\nimport { PREFIX } from '../../internal/Icon/constants';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport { ComponentMethodsRef, UIElementStatus } from '../../types';\n\nconst ENTER_STATE = 'enter-data';\nconst CONFIRM_STATE = 'confirm-data';\n\nfunction BacsInput(props: Readonly<BacsInputProps>) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { amount } = useAmount();\n\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<BacsDataState>({\n schema: ['holderName', 'bankAccountNumber', 'bankLocationId', 'shopperEmail', 'amountConsentCheckbox', 'accountConsentCheckbox'],\n defaultData: props.data,\n formatters: bacsFormatters,\n rules: bacsValidationRules\n });\n\n const [status, setStatus] = useState(ENTER_STATE);\n\n const bacsInputRef = useRef<ComponentMethodsRef>({\n setStatus,\n showValidation: () => {\n triggerValidation();\n }\n });\n\n useEffect(() => {\n props.setComponentRef(bacsInputRef.current);\n }, [props.setComponentRef]);\n\n const handlePayButton = () => {\n if (!isValid) return bacsInputRef.current?.showValidation?.();\n\n if (status === ENTER_STATE) {\n return bacsInputRef.current?.setStatus?.(CONFIRM_STATE as UIElementStatus);\n } else if (status === CONFIRM_STATE) {\n return props.onSubmit();\n }\n };\n\n const handleEdit = () => {\n return bacsInputRef.current?.setStatus?.(ENTER_STATE as UIElementStatus);\n };\n\n useEffect(() => {\n props.onChange({ data, valid, errors, isValid });\n }, [data, valid, errors, isValid]);\n\n return (\n <div\n className={classNames({\n 'adyen-checkout__bacs': true,\n 'adyen-checkout__bacs--confirm': status === CONFIRM_STATE || status === 'loading'\n })}\n >\n <FormInstruction />\n\n {status == CONFIRM_STATE && (\n <div\n className={classNames({\n 'adyen-checkout__bacs--edit': true,\n 'adyen-checkout__bacs--edit-dropin': props.isDropin\n })}\n >\n <InputText\n name={'bacsEdit'}\n className={'adyen-checkout__bacs--edit-button'}\n value={i18n.get('edit')}\n aria-label={i18n.get('edit')}\n readonly={true}\n onClick={handleEdit}\n autocomplete={undefined}\n />\n </div>\n )}\n\n <Field\n className={classNames({\n 'adyen-checkout__bacs--holder-name': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n label={i18n.get('bacs.accountHolderName')}\n errorMessage={errors.holderName ? i18n.get('bacs.accountHolderName.invalid') : false}\n isValid={valid.holderName}\n name={'accountHolderName'}\n i18n={i18n}\n >\n <InputText\n name={'bacs.accountHolderName'}\n className={'adyen-checkout__bacs-input--holder-name'}\n placeholder={props.placeholders?.holderName}\n value={data.holderName}\n aria-invalid={!valid.holderName}\n aria-label={i18n.get('bacs.accountHolderName')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={'name'}\n onBlur={handleChangeFor('holderName', 'blur')}\n onInput={handleChangeFor('holderName', 'input')}\n />\n </Field>\n\n <div className=\"adyen-checkout__bacs__num-id adyen-checkout__field-wrapper\">\n <Field\n errorMessage={Boolean(errors.bankAccountNumber) && i18n.get('bacs.accountNumber.invalid')}\n label={i18n.get('bacs.accountNumber')}\n className={classNames({\n 'adyen-checkout__bacs--bank-account-number': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n classNameModifiers={['col-70']}\n isValid={valid.bankAccountNumber}\n name={'bankAccountNumber'}\n i18n={i18n}\n >\n <InputText\n value={data.bankAccountNumber}\n className={'adyen-checkout__bacs-input--bank-account-number'}\n placeholder={props.placeholders?.bankAccountNumber}\n aria-invalid={!valid.bankAccountNumber}\n aria-label={i18n.get('bacs.accountNumber')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={undefined}\n onBlur={handleChangeFor('bankAccountNumber', 'blur')}\n onInput={handleChangeFor('bankAccountNumber', 'input')}\n />\n </Field>\n\n <Field\n errorMessage={Boolean(errors.bankLocationId) && i18n.get('bacs.bankLocationId.invalid')}\n label={i18n.get('bacs.bankLocationId')}\n className={classNames({\n 'adyen-checkout__bacs--bank-location-id': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n classNameModifiers={['col-30']}\n isValid={valid.bankLocationId}\n name={'bankLocationId'}\n i18n={i18n}\n >\n <InputText\n value={data.bankLocationId}\n className={'adyen-checkout__bacs-input--bank-location-id'}\n placeholder={props.placeholders?.bankLocationId}\n aria-invalid={!valid.bankLocationId}\n aria-label={i18n.get('bacs.bankLocationId')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={undefined}\n onBlur={handleChangeFor('bankLocationId', 'blur')}\n onInput={handleChangeFor('bankLocationId', 'input')}\n />\n </Field>\n </div>\n\n <Field\n errorMessage={getErrorMessage(i18n, errors.shopperEmail ?? undefined, i18n.get('shopperEmail'))}\n label={i18n.get('shopperEmail')}\n className={classNames({\n 'adyen-checkout__bacs--shopper-email': true,\n 'adyen-checkout__field--inactive': status === CONFIRM_STATE || status === 'loading'\n })}\n isValid={valid.shopperEmail}\n name={'emailAddress'}\n i18n={i18n}\n >\n <InputEmail\n value={data.shopperEmail}\n name={'shopperEmail'}\n className={'adyen-checkout__bacs-input--shopper-email'}\n classNameModifiers={['large']}\n placeholder={props.placeholders?.shopperEmail}\n spellcheck={false}\n aria-invalid={!valid.shopperEmail}\n aria-label={i18n.get('shopperEmail')}\n aria-required={'true'}\n required={true}\n readonly={status === CONFIRM_STATE || status === 'loading'}\n autocorrect={'off'}\n autocomplete={'email'}\n onInput={handleChangeFor('shopperEmail', 'input')}\n onBlur={handleChangeFor('shopperEmail', 'blur')}\n />\n </Field>\n\n {status === ENTER_STATE && (\n <ConsentCheckbox\n classNameModifiers={['amountConsentCheckbox']}\n errorMessage={errors.amountConsentCheckbox}\n label={i18n.get('bacs.consent.amount')}\n onChange={handleChangeFor('amountConsentCheckbox')}\n checked={Boolean(data.amountConsentCheckbox)}\n i18n={i18n}\n />\n )}\n\n {status === ENTER_STATE && (\n <ConsentCheckbox\n classNameModifiers={['accountConsentCheckbox']}\n errorMessage={errors.accountConsentCheckbox}\n label={i18n.get('bacs.consent.account')}\n onChange={handleChangeFor('accountConsentCheckbox')}\n checked={Boolean(data.accountConsentCheckbox)}\n i18n={i18n}\n />\n )}\n\n {props.payButton?.({\n status,\n label:\n status === ENTER_STATE\n ? i18n.get('continue')\n : `${i18n.get('bacs.confirm')} ${\n !!amount?.value && !!amount?.currency ? i18n.amount(amount.value, amount.currency) : ''\n }`,\n icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`),\n onClick: handlePayButton\n })}\n </div>\n );\n}\n\nBacsInput.defaultProps = {\n data: {},\n placeholders: {}\n};\n\nexport default BacsInput;\n"],"names":["ENTER_STATE","CONFIRM_STATE","BacsInput","props","i18n","useCoreContext","getImage","useImage","amount","useAmount","handleChangeFor","triggerValidation","data","valid","errors","isValid","useForm","schema","defaultData","formatters","bacsFormatters","rules","bacsValidationRules","status","setStatus","useState","bacsInputRef","useRef","showValidation","useEffect","setComponentRef","current","onChange","h","div","className","classNames","FormInstruction","isDropin","InputText","name","value","get","aria-label","readonly","onClick","autocomplete","undefined","Field","label","errorMessage","holderName","placeholder","placeholders","aria-invalid","aria-required","required","autocorrect","onBlur","onInput","Boolean","bankAccountNumber","classNameModifiers","bankLocationId","getErrorMessage","shopperEmail","InputEmail","spellcheck","ConsentCheckbox","amountConsentCheckbox","checked","accountConsentCheckbox","payButton","currency","icon","imageFolder","PREFIX","onSubmit","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as n,Fragment as e}from"../../external/preact/dist/preact.js";import{UIElement as r}from"../internal/UIElement/UIElement.js";import a from"../internal/RedirectButton/RedirectButton.js";import t from"./components/BankTransferResult/BankTransferResult.js";import s from"./components/BankTransferInput/BankTransferInput.js";import{TxVariants as o}from"../tx-variants.js";function i(n,e,r){return e in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}class f extends r{get isValid(){return!!this.state.isValid}formatData(){const{shopperEmail:n}=this.state.data,e=this.type!==o.bankTransfer_IBAN?{subtype:"embedded"}:{};return{paymentMethod:{type:this.type,...e},...n&&{shopperEmail:n}}}componentToRender(){return this.props.reference?n(t,{...this.props,onActionHandled:this.onActionHandled}):n(e,null,this.props.showEmailAddress&&n(s,{setComponentRef:this.setComponentRef,...this.props,onChange:this.setState}),n(a,{...this.props,setComponentRef:this.setComponentRef,showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton}))}constructor(...n){super(...n),i(this,"state",{isValid:!this.props.showEmailAddress,data:{}})}}i(f,"type",o.bankTransfer_IBAN),i(f,"txVariants",[o.bankTransfer_IBAN,o.bankTransfer_BE,o.bankTransfer_NL,o.bankTransfer_PL,o.bankTransfer_FR,o.bankTransfer_CH,o.bankTransfer_IE,o.bankTransfer_GB,o.bankTransfer_DE,o.bankTransfer_AE,o.bankTransfer_AT,o.bankTransfer_AU,o.bankTransfer_BG,o.bankTransfer_CA,o.bankTransfer_EE,o.bankTransfer_ES,o.bankTransfer_FI,o.bankTransfer_HK,o.bankTransfer_HU,o.bankTransfer_IT,o.bankTransfer_JP,o.bankTransfer_LU,o.bankTransfer_NZ,o.bankTransfer_PT,o.bankTransfer_SG,o.bankTransfer_SK,o.bankTransfer_US]),i(f,"defaultProps",{showEmailAddress:!0,showContextualElement:!0,data:{shopperEmail:""}});export{f as BankTransferElement,f as default};
1
+ import{createElement as n,Fragment as e}from"../../external/preact/dist/preact.js";import{UIElement as r}from"../internal/UIElement/UIElement.js";import a from"../internal/RedirectButton/RedirectButton.js";import t from"./components/BankTransferResult/BankTransferResult.js";import s from"./components/BankTransferInput/BankTransferInput.js";import{TxVariants as o}from"../tx-variants.js";function i(n,e,r){return e in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}class f extends r{get isValid(){return!!this.state.isValid}formatData(){const{shopperEmail:n}=this.state.data,e=this.type!==o.bankTransfer_IBAN?{subtype:"embedded"}:{};return{paymentMethod:{type:this.type,...e},...n&&{shopperEmail:n}}}componentToRender(){return this.props.reference?n(t,{...this.props,onActionHandled:this.onActionHandled}):n(e,null,this.props.showEmailAddress&&n(s,{setComponentRef:this.setComponentRef,...this.props,onChange:this.setState}),n(a,{...this.props,setComponentRef:this.setComponentRef,name:this.displayName,onSubmit:this.submit,payButton:this.payButton}))}constructor(...n){super(...n),i(this,"state",{isValid:!this.props.showEmailAddress,data:{}})}}i(f,"type",o.bankTransfer_IBAN),i(f,"txVariants",[o.bankTransfer_IBAN,o.bankTransfer_BE,o.bankTransfer_NL,o.bankTransfer_PL,o.bankTransfer_FR,o.bankTransfer_CH,o.bankTransfer_IE,o.bankTransfer_GB,o.bankTransfer_DE,o.bankTransfer_AE,o.bankTransfer_AT,o.bankTransfer_AU,o.bankTransfer_BG,o.bankTransfer_CA,o.bankTransfer_EE,o.bankTransfer_ES,o.bankTransfer_FI,o.bankTransfer_HK,o.bankTransfer_HU,o.bankTransfer_IT,o.bankTransfer_JP,o.bankTransfer_LU,o.bankTransfer_NZ,o.bankTransfer_PT,o.bankTransfer_SG,o.bankTransfer_SK,o.bankTransfer_US]),i(f,"defaultProps",{showEmailAddress:!0,showContextualElement:!0,data:{shopperEmail:""}});export{f as BankTransferElement,f as default};
2
2
  //# sourceMappingURL=BankTransfer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BankTransfer.js","sources":["../../../../src/components/BankTransfer/BankTransfer.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport RedirectButton from '../internal/RedirectButton';\nimport { BankTransferConfiguration, BankTransferState } from './types';\nimport BankTransferResult from './components/BankTransferResult';\nimport BankTransferInput from './components/BankTransferInput';\nimport { TxVariants } from '../tx-variants';\n\nexport class BankTransferElement extends UIElement<BankTransferConfiguration> {\n public static readonly type = TxVariants.bankTransfer_IBAN;\n public static readonly txVariants = [\n TxVariants.bankTransfer_IBAN,\n TxVariants.bankTransfer_BE,\n TxVariants.bankTransfer_NL,\n TxVariants.bankTransfer_PL,\n TxVariants.bankTransfer_FR,\n TxVariants.bankTransfer_CH,\n TxVariants.bankTransfer_IE,\n TxVariants.bankTransfer_GB,\n TxVariants.bankTransfer_DE,\n TxVariants.bankTransfer_AE,\n TxVariants.bankTransfer_AT,\n TxVariants.bankTransfer_AU,\n TxVariants.bankTransfer_BG,\n TxVariants.bankTransfer_CA,\n TxVariants.bankTransfer_EE,\n TxVariants.bankTransfer_ES,\n TxVariants.bankTransfer_FI,\n TxVariants.bankTransfer_HK,\n TxVariants.bankTransfer_HU,\n TxVariants.bankTransfer_IT,\n TxVariants.bankTransfer_JP,\n TxVariants.bankTransfer_LU,\n TxVariants.bankTransfer_NZ,\n TxVariants.bankTransfer_PT,\n TxVariants.bankTransfer_SG,\n TxVariants.bankTransfer_SK,\n TxVariants.bankTransfer_US\n ];\n\n public static readonly defaultProps = {\n showEmailAddress: true,\n showContextualElement: true,\n data: { shopperEmail: '' }\n };\n\n // @ts-ignore Double check why state extends all props\n public state: BankTransferState = {\n isValid: !this.props.showEmailAddress,\n data: {}\n };\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n const { shopperEmail } = this.state.data;\n const subtype = this.type !== (TxVariants.bankTransfer_IBAN as string) ? { subtype: 'embedded' } : {};\n\n return {\n paymentMethod: {\n type: this.type,\n ...subtype\n },\n ...(shopperEmail && { shopperEmail })\n };\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (this.props.reference) {\n return <BankTransferResult {...this.props} onActionHandled={this.onActionHandled} />;\n }\n\n return (\n <Fragment>\n {this.props.showEmailAddress && <BankTransferInput setComponentRef={this.setComponentRef} {...this.props} onChange={this.setState} />}\n <RedirectButton\n {...this.props}\n setComponentRef={this.setComponentRef}\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n </Fragment>\n );\n }\n}\n\nexport default BankTransferElement;\n"],"names":["BankTransferElement","UIElement","isValid","this","state","formatData","shopperEmail","data","subtype","type","TxVariants","bankTransfer_IBAN","paymentMethod","componentToRender","props","reference","h","BankTransferResult","onActionHandled","Fragment","showEmailAddress","BankTransferInput","setComponentRef","onChange","setState","RedirectButton","showPayButton","name","displayName","onSubmit","submit","payButton","super","args","_define_property","txVariants","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","bankTransfer_AE","bankTransfer_AT","bankTransfer_AU","bankTransfer_BG","bankTransfer_CA","bankTransfer_EE","bankTransfer_ES","bankTransfer_FI","bankTransfer_HK","bankTransfer_HU","bankTransfer_IT","bankTransfer_JP","bankTransfer_LU","bankTransfer_NZ","bankTransfer_PT","bankTransfer_SG","bankTransfer_SK","bankTransfer_US","defaultProps","showContextualElement"],"mappings":"6fAQO,MAAMA,UAA4BC,EA4CrC,WAAIC,GACA,QAASC,KAAKC,MAAMF,OACxB,CAKAG,UAAAA,GACI,MAAMC,aAAEA,GAAiBH,KAAKC,MAAMG,KAC9BC,EAAUL,KAAKM,OAAUC,EAAWC,kBAA+B,CAAEH,QAAS,YAAe,CAAA,EAEnG,MAAO,CACHI,cAAe,CACXH,KAAMN,KAAKM,QACRD,MAEHF,GAAgB,CAAEA,gBAE9B,CAEmBO,iBAAAA,GACf,OAAIV,KAAKW,MAAMC,UACJC,EAACC,EAAAA,IAAuBd,KAAKW,MAAOI,gBAAiBf,KAAKe,kBAIjEF,EAACG,OACIhB,KAAKW,MAAMM,kBAAoBJ,EAACK,EAAAA,CAAkBC,gBAAiBnB,KAAKmB,mBAAqBnB,KAAKW,MAAOS,SAAUpB,KAAKqB,WACzHR,EAACS,EAAAA,IACOtB,KAAKW,MACTQ,gBAAiBnB,KAAKmB,gBACtBI,cAAevB,KAAKW,MAAMY,cAC1BC,KAAMxB,KAAKyB,YACXC,SAAU1B,KAAK2B,OACfC,UAAW5B,KAAK4B,YAIhC,mBAlFGC,SAAAC,GAuCHC,EAAA/B,KAAOC,QAA2B,CAC9BF,SAAUC,KAAKW,MAAMM,iBACrBb,KAAM,CAAA,KAxCV2B,EADSlC,EACcS,OAAOC,EAAWC,mBACzCuB,EAFSlC,EAEcmC,aAAa,CAChCzB,EAAWC,kBACXD,EAAW0B,gBACX1B,EAAW2B,gBACX3B,EAAW4B,gBACX5B,EAAW6B,gBACX7B,EAAW8B,gBACX9B,EAAW+B,gBACX/B,EAAWgC,gBACXhC,EAAWiC,gBACXjC,EAAWkC,gBACXlC,EAAWmC,gBACXnC,EAAWoC,gBACXpC,EAAWqC,gBACXrC,EAAWsC,gBACXtC,EAAWuC,gBACXvC,EAAWwC,gBACXxC,EAAWyC,gBACXzC,EAAW0C,gBACX1C,EAAW2C,gBACX3C,EAAW4C,gBACX5C,EAAW6C,gBACX7C,EAAW8C,gBACX9C,EAAW+C,gBACX/C,EAAWgD,gBACXhD,EAAWiD,gBACXjD,EAAWkD,gBACXlD,EAAWmD,kBAGf3B,EAhCSlC,EAgCc8D,eAAe,CAClC1C,kBAAkB,EAClB2C,uBAAuB,EACvBxD,KAAM,CAAED,aAAc"}
1
+ {"version":3,"file":"BankTransfer.js","sources":["../../../../src/components/BankTransfer/BankTransfer.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport RedirectButton from '../internal/RedirectButton';\nimport { BankTransferConfiguration, BankTransferState } from './types';\nimport BankTransferResult from './components/BankTransferResult';\nimport BankTransferInput from './components/BankTransferInput';\nimport { TxVariants } from '../tx-variants';\n\nexport class BankTransferElement extends UIElement<BankTransferConfiguration> {\n public static readonly type = TxVariants.bankTransfer_IBAN;\n public static readonly txVariants = [\n TxVariants.bankTransfer_IBAN,\n TxVariants.bankTransfer_BE,\n TxVariants.bankTransfer_NL,\n TxVariants.bankTransfer_PL,\n TxVariants.bankTransfer_FR,\n TxVariants.bankTransfer_CH,\n TxVariants.bankTransfer_IE,\n TxVariants.bankTransfer_GB,\n TxVariants.bankTransfer_DE,\n TxVariants.bankTransfer_AE,\n TxVariants.bankTransfer_AT,\n TxVariants.bankTransfer_AU,\n TxVariants.bankTransfer_BG,\n TxVariants.bankTransfer_CA,\n TxVariants.bankTransfer_EE,\n TxVariants.bankTransfer_ES,\n TxVariants.bankTransfer_FI,\n TxVariants.bankTransfer_HK,\n TxVariants.bankTransfer_HU,\n TxVariants.bankTransfer_IT,\n TxVariants.bankTransfer_JP,\n TxVariants.bankTransfer_LU,\n TxVariants.bankTransfer_NZ,\n TxVariants.bankTransfer_PT,\n TxVariants.bankTransfer_SG,\n TxVariants.bankTransfer_SK,\n TxVariants.bankTransfer_US\n ];\n\n public static readonly defaultProps = {\n showEmailAddress: true,\n showContextualElement: true,\n data: { shopperEmail: '' }\n };\n\n // @ts-ignore Double check why state extends all props\n public state: BankTransferState = {\n isValid: !this.props.showEmailAddress,\n data: {}\n };\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n const { shopperEmail } = this.state.data;\n const subtype = this.type !== (TxVariants.bankTransfer_IBAN as string) ? { subtype: 'embedded' } : {};\n\n return {\n paymentMethod: {\n type: this.type,\n ...subtype\n },\n ...(shopperEmail && { shopperEmail })\n };\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (this.props.reference) {\n return <BankTransferResult {...this.props} onActionHandled={this.onActionHandled} />;\n }\n\n return (\n <Fragment>\n {this.props.showEmailAddress && <BankTransferInput setComponentRef={this.setComponentRef} {...this.props} onChange={this.setState} />}\n <RedirectButton\n {...this.props}\n setComponentRef={this.setComponentRef}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n </Fragment>\n );\n }\n}\n\nexport default BankTransferElement;\n"],"names":["BankTransferElement","UIElement","isValid","this","state","formatData","shopperEmail","data","subtype","type","TxVariants","bankTransfer_IBAN","paymentMethod","componentToRender","props","reference","h","BankTransferResult","onActionHandled","Fragment","showEmailAddress","BankTransferInput","setComponentRef","onChange","setState","RedirectButton","name","displayName","onSubmit","submit","payButton","super","args","_define_property","txVariants","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","bankTransfer_AE","bankTransfer_AT","bankTransfer_AU","bankTransfer_BG","bankTransfer_CA","bankTransfer_EE","bankTransfer_ES","bankTransfer_FI","bankTransfer_HK","bankTransfer_HU","bankTransfer_IT","bankTransfer_JP","bankTransfer_LU","bankTransfer_NZ","bankTransfer_PT","bankTransfer_SG","bankTransfer_SK","bankTransfer_US","defaultProps","showContextualElement"],"mappings":"6fAQO,MAAMA,UAA4BC,EA4CrC,WAAIC,GACA,QAASC,KAAKC,MAAMF,OACxB,CAKAG,UAAAA,GACI,MAAMC,aAAEA,GAAiBH,KAAKC,MAAMG,KAC9BC,EAAUL,KAAKM,OAAUC,EAAWC,kBAA+B,CAAEH,QAAS,YAAe,CAAA,EAEnG,MAAO,CACHI,cAAe,CACXH,KAAMN,KAAKM,QACRD,MAEHF,GAAgB,CAAEA,gBAE9B,CAEmBO,iBAAAA,GACf,OAAIV,KAAKW,MAAMC,UACJC,EAACC,EAAAA,IAAuBd,KAAKW,MAAOI,gBAAiBf,KAAKe,kBAIjEF,EAACG,OACIhB,KAAKW,MAAMM,kBAAoBJ,EAACK,EAAAA,CAAkBC,gBAAiBnB,KAAKmB,mBAAqBnB,KAAKW,MAAOS,SAAUpB,KAAKqB,WACzHR,EAACS,EAAAA,IACOtB,KAAKW,MACTQ,gBAAiBnB,KAAKmB,gBACtBI,KAAMvB,KAAKwB,YACXC,SAAUzB,KAAK0B,OACfC,UAAW3B,KAAK2B,YAIhC,mBAjFGC,SAAAC,GAuCHC,EAAA9B,KAAOC,QAA2B,CAC9BF,SAAUC,KAAKW,MAAMM,iBACrBb,KAAM,CAAA,KAxCV0B,EADSjC,EACcS,OAAOC,EAAWC,mBACzCsB,EAFSjC,EAEckC,aAAa,CAChCxB,EAAWC,kBACXD,EAAWyB,gBACXzB,EAAW0B,gBACX1B,EAAW2B,gBACX3B,EAAW4B,gBACX5B,EAAW6B,gBACX7B,EAAW8B,gBACX9B,EAAW+B,gBACX/B,EAAWgC,gBACXhC,EAAWiC,gBACXjC,EAAWkC,gBACXlC,EAAWmC,gBACXnC,EAAWoC,gBACXpC,EAAWqC,gBACXrC,EAAWsC,gBACXtC,EAAWuC,gBACXvC,EAAWwC,gBACXxC,EAAWyC,gBACXzC,EAAW0C,gBACX1C,EAAW2C,gBACX3C,EAAW4C,gBACX5C,EAAW6C,gBACX7C,EAAW8C,gBACX9C,EAAW+C,gBACX/C,EAAWgD,gBACXhD,EAAWiD,gBACXjD,EAAWkD,kBAGf3B,EAhCSjC,EAgCc6D,eAAe,CAClCzC,kBAAkB,EAClB0C,uBAAuB,EACvBvD,KAAM,CAAED,aAAc"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/BlikInput.js";import{Await as s}from"../internal/Await/Await.js";import n from"./config.js";import i from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as a}from"../tx-variants.js";class r extends e{formatData(){const t=!!this.props.storedPaymentMethodId;return{paymentMethod:{type:r.type,...!t&&{blikCode:this.state?.data?.blikCode},...t&&{storedPaymentMethodId:this.props.storedPaymentMethodId}}}}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.label?this.props.label:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId&&this.props.label?this.props.name:null}componentToRender(){return this.props.paymentData?t(s,{clientKey:this.props.clientKey,paymentData:this.props.paymentData,onError:this.handleError,onComplete:this.onComplete,brandLogo:this.icon,brandName:this.displayName,type:n.type,messageText:this.props.i18n.get(n.messageTextId),awaitText:this.props.i18n.get(n.awaitTextId),showCountdownTimer:n.showCountdownTimer,delay:n.STATUS_INTERVAL,countdownTime:n.COUNTDOWN_MINUTES,throttleTime:n.THROTTLE_TIME,throttleInterval:n.THROTTLE_INTERVAL,onActionHandled:this.onActionHandled}):this.props.storedPaymentMethodId?t(i,{showPayButton:this.props.showPayButton,name:this.displayName,payButton:this.payButton,onSubmit:this.submit,setComponentRef:this.setComponentRef}):t(o,{...this.props,setComponentRef:this.setComponentRef,onChange:this.setState,onSubmit:this.submit,payButton:this.payButton})}}var p,m,d;p=r,m="type",d=a.blik,m in p?Object.defineProperty(p,m,{value:d,enumerable:!0,configurable:!0,writable:!0}):p[m]=d;export{r as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/BlikInput.js";import{Await as s}from"../internal/Await/Await.js";import n from"./config.js";import i from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as a}from"../tx-variants.js";class r extends e{formatData(){const t=!!this.props.storedPaymentMethodId;return{paymentMethod:{type:r.type,...!t&&{blikCode:this.state?.data?.blikCode},...t&&{storedPaymentMethodId:this.props.storedPaymentMethodId}}}}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.label?this.props.label:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId&&this.props.label?this.props.name:null}componentToRender(){return this.props.paymentData?t(s,{clientKey:this.props.clientKey,paymentData:this.props.paymentData,onError:this.handleError,onComplete:this.onComplete,brandLogo:this.icon,brandName:this.displayName,type:n.type,messageText:this.props.i18n.get(n.messageTextId),awaitText:this.props.i18n.get(n.awaitTextId),showCountdownTimer:n.showCountdownTimer,delay:n.STATUS_INTERVAL,countdownTime:n.COUNTDOWN_MINUTES,throttleTime:n.THROTTLE_TIME,throttleInterval:n.THROTTLE_INTERVAL,onActionHandled:this.onActionHandled}):this.props.storedPaymentMethodId?t(i,{name:this.displayName,payButton:this.payButton,onSubmit:this.submit,setComponentRef:this.setComponentRef}):t(o,{...this.props,setComponentRef:this.setComponentRef,onChange:this.setState,onSubmit:this.submit,payButton:this.payButton})}}var p,m,d;p=r,m="type",d=a.blik,m in p?Object.defineProperty(p,m,{value:d,enumerable:!0,configurable:!0,writable:!0}):p[m]=d;export{r as default};
2
2
  //# sourceMappingURL=Blik.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Blik.js","sources":["../../../../src/components/Blik/Blik.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport BlikInput from '../../components/Blik/components/BlikInput';\nimport { Await } from '../internal/Await';\nimport config from './config';\nimport RedirectButton from '../../components/internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport { AwaitConfiguration } from '../internal/Await/types';\n\ninterface BlikElementData {\n paymentMethod: {\n type: string;\n blikCode: string;\n };\n}\n\nclass BlikElement extends UIElement<AwaitConfiguration> {\n public static readonly type = TxVariants.blik;\n\n formatData(): BlikElementData {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n return {\n paymentMethod: {\n type: BlikElement.type,\n ...(!recurringPayment && { blikCode: this.state?.data?.blikCode }),\n ...(recurringPayment && { storedPaymentMethodId: this.props.storedPaymentMethodId })\n }\n };\n }\n\n get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n get displayName() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.label;\n }\n return this.props.name;\n }\n\n get additionalInfo() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.name;\n }\n return null;\n }\n\n /**\n * NOTE: for future reference:\n * this.props.onComplete (which is called from this.onComplete) equates to the merchant defined onAdditionalDetails callback\n * (the initial /payments response defines an \"await\" action, actionTypes.ts translates this to \"onComplete: props.onAdditionalDetails\")\n */\n protected override componentToRender(): h.JSX.Element {\n if (this.props.paymentData) {\n return (\n <Await\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onError={this.handleError}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n brandName={this.displayName}\n type={config.type}\n messageText={this.props.i18n.get(config.messageTextId)}\n awaitText={this.props.i18n.get(config.awaitTextId)}\n showCountdownTimer={config.showCountdownTimer}\n delay={config.STATUS_INTERVAL}\n countdownTime={config.COUNTDOWN_MINUTES}\n throttleTime={config.THROTTLE_TIME}\n throttleInterval={config.THROTTLE_INTERVAL}\n onActionHandled={this.onActionHandled}\n />\n );\n }\n\n return this.props.storedPaymentMethodId ? (\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n payButton={this.payButton}\n onSubmit={this.submit}\n setComponentRef={this.setComponentRef}\n />\n ) : (\n <BlikInput\n {...this.props}\n setComponentRef={this.setComponentRef}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n );\n }\n}\n\nexport default BlikElement;\n"],"names":["BlikElement","UIElement","formatData","recurringPayment","this","props","storedPaymentMethodId","paymentMethod","type","blikCode","state","data","isValid","displayName","label","name","additionalInfo","componentToRender","paymentData","h","Await","clientKey","onError","handleError","onComplete","brandLogo","icon","brandName","config","messageText","i18n","get","messageTextId","awaitText","awaitTextId","showCountdownTimer","delay","STATUS_INTERVAL","countdownTime","COUNTDOWN_MINUTES","throttleTime","THROTTLE_TIME","throttleInterval","THROTTLE_INTERVAL","onActionHandled","RedirectButton","showPayButton","payButton","onSubmit","submit","setComponentRef","BlikInput","onChange","setState","TxVariants","blik"],"mappings":"sWAgBA,MAAMA,UAAoBC,EAGtBC,UAAAA,GACI,MAAMC,IAAqBC,KAAKC,MAAMC,sBAEtC,MAAO,CACHC,cAAe,CACXC,KAAMR,EAAYQ,SACbL,GAAoB,CAAEM,SAAUL,KAAKM,OAAOC,MAAMF,aACnDN,GAAoB,CAAEG,sBAAuBF,KAAKC,MAAMC,wBAGxE,CAEA,WAAIM,GACA,QAAIR,KAAKC,MAAMC,yBAINF,KAAKM,MAAME,OACxB,CAEA,eAAIC,GACA,OAAIT,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMS,MACxCV,KAAKC,MAAMS,MAEfV,KAAKC,MAAMU,IACtB,CAEA,kBAAIC,GACA,OAAIZ,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMS,MACxCV,KAAKC,MAAMU,KAEf,IACX,CAOA,iBAAAE,GACI,OAAIb,KAAKC,MAAMa,YAEPC,EAACC,EAAAA,CACGC,UAAWjB,KAAKC,MAAMgB,UACtBH,YAAad,KAAKC,MAAMa,YACxBI,QAASlB,KAAKmB,YACdC,WAAYpB,KAAKoB,WACjBC,UAAWrB,KAAKsB,KAChBC,UAAWvB,KAAKS,YAChBL,KAAMoB,EAAOpB,KACbqB,YAAazB,KAAKC,MAAMyB,KAAKC,IAAIH,EAAOI,eACxCC,UAAW7B,KAAKC,MAAMyB,KAAKC,IAAIH,EAAOM,aACtCC,mBAAoBP,EAAOO,mBAC3BC,MAAOR,EAAOS,gBACdC,cAAeV,EAAOW,kBACtBC,aAAcZ,EAAOa,cACrBC,iBAAkBd,EAAOe,kBACzBC,gBAAiBxC,KAAKwC,kBAK3BxC,KAAKC,MAAMC,sBACda,EAAC0B,EAAAA,CACGC,cAAe1C,KAAKC,MAAMyC,cAC1B/B,KAAMX,KAAKS,YACXkC,UAAW3C,KAAK2C,UAChBC,SAAU5C,KAAK6C,OACfC,gBAAiB9C,KAAK8C,kBAG1B/B,EAACgC,EAAAA,IACO/C,KAAKC,MACT6C,gBAAiB9C,KAAK8C,gBACtBE,SAAUhD,KAAKiD,SACfL,SAAU5C,KAAK6C,OACfF,UAAW3C,KAAK2C,WAG5B,cAlFE/C,IACqBQ,SAAO8C,EAAWC"}
1
+ {"version":3,"file":"Blik.js","sources":["../../../../src/components/Blik/Blik.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport BlikInput from '../../components/Blik/components/BlikInput';\nimport { Await } from '../internal/Await';\nimport config from './config';\nimport RedirectButton from '../../components/internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport { AwaitConfiguration } from '../internal/Await/types';\n\ninterface BlikElementData {\n paymentMethod: {\n type: string;\n blikCode: string;\n };\n}\n\nclass BlikElement extends UIElement<AwaitConfiguration> {\n public static readonly type = TxVariants.blik;\n\n formatData(): BlikElementData {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n return {\n paymentMethod: {\n type: BlikElement.type,\n ...(!recurringPayment && { blikCode: this.state?.data?.blikCode }),\n ...(recurringPayment && { storedPaymentMethodId: this.props.storedPaymentMethodId })\n }\n };\n }\n\n get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n get displayName() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.label;\n }\n return this.props.name;\n }\n\n get additionalInfo() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.name;\n }\n return null;\n }\n\n /**\n * NOTE: for future reference:\n * this.props.onComplete (which is called from this.onComplete) equates to the merchant defined onAdditionalDetails callback\n * (the initial /payments response defines an \"await\" action, actionTypes.ts translates this to \"onComplete: props.onAdditionalDetails\")\n */\n protected override componentToRender(): h.JSX.Element {\n if (this.props.paymentData) {\n return (\n <Await\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onError={this.handleError}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n brandName={this.displayName}\n type={config.type}\n messageText={this.props.i18n.get(config.messageTextId)}\n awaitText={this.props.i18n.get(config.awaitTextId)}\n showCountdownTimer={config.showCountdownTimer}\n delay={config.STATUS_INTERVAL}\n countdownTime={config.COUNTDOWN_MINUTES}\n throttleTime={config.THROTTLE_TIME}\n throttleInterval={config.THROTTLE_INTERVAL}\n onActionHandled={this.onActionHandled}\n />\n );\n }\n\n return this.props.storedPaymentMethodId ? (\n <RedirectButton\n name={this.displayName}\n payButton={this.payButton}\n onSubmit={this.submit}\n setComponentRef={this.setComponentRef}\n />\n ) : (\n <BlikInput\n {...this.props}\n setComponentRef={this.setComponentRef}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n );\n }\n}\n\nexport default BlikElement;\n"],"names":["BlikElement","UIElement","formatData","recurringPayment","this","props","storedPaymentMethodId","paymentMethod","type","blikCode","state","data","isValid","displayName","label","name","additionalInfo","componentToRender","paymentData","h","Await","clientKey","onError","handleError","onComplete","brandLogo","icon","brandName","config","messageText","i18n","get","messageTextId","awaitText","awaitTextId","showCountdownTimer","delay","STATUS_INTERVAL","countdownTime","COUNTDOWN_MINUTES","throttleTime","THROTTLE_TIME","throttleInterval","THROTTLE_INTERVAL","onActionHandled","RedirectButton","payButton","onSubmit","submit","setComponentRef","BlikInput","onChange","setState","TxVariants","blik"],"mappings":"sWAgBA,MAAMA,UAAoBC,EAGtBC,UAAAA,GACI,MAAMC,IAAqBC,KAAKC,MAAMC,sBAEtC,MAAO,CACHC,cAAe,CACXC,KAAMR,EAAYQ,SACbL,GAAoB,CAAEM,SAAUL,KAAKM,OAAOC,MAAMF,aACnDN,GAAoB,CAAEG,sBAAuBF,KAAKC,MAAMC,wBAGxE,CAEA,WAAIM,GACA,QAAIR,KAAKC,MAAMC,yBAINF,KAAKM,MAAME,OACxB,CAEA,eAAIC,GACA,OAAIT,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMS,MACxCV,KAAKC,MAAMS,MAEfV,KAAKC,MAAMU,IACtB,CAEA,kBAAIC,GACA,OAAIZ,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMS,MACxCV,KAAKC,MAAMU,KAEf,IACX,CAOA,iBAAAE,GACI,OAAIb,KAAKC,MAAMa,YAEPC,EAACC,EAAAA,CACGC,UAAWjB,KAAKC,MAAMgB,UACtBH,YAAad,KAAKC,MAAMa,YACxBI,QAASlB,KAAKmB,YACdC,WAAYpB,KAAKoB,WACjBC,UAAWrB,KAAKsB,KAChBC,UAAWvB,KAAKS,YAChBL,KAAMoB,EAAOpB,KACbqB,YAAazB,KAAKC,MAAMyB,KAAKC,IAAIH,EAAOI,eACxCC,UAAW7B,KAAKC,MAAMyB,KAAKC,IAAIH,EAAOM,aACtCC,mBAAoBP,EAAOO,mBAC3BC,MAAOR,EAAOS,gBACdC,cAAeV,EAAOW,kBACtBC,aAAcZ,EAAOa,cACrBC,iBAAkBd,EAAOe,kBACzBC,gBAAiBxC,KAAKwC,kBAK3BxC,KAAKC,MAAMC,sBACda,EAAC0B,EAAAA,CACG9B,KAAMX,KAAKS,YACXiC,UAAW1C,KAAK0C,UAChBC,SAAU3C,KAAK4C,OACfC,gBAAiB7C,KAAK6C,kBAG1B9B,EAAC+B,EAAAA,IACO9C,KAAKC,MACT4C,gBAAiB7C,KAAK6C,gBACtBE,SAAU/C,KAAKgD,SACfL,SAAU3C,KAAK4C,OACfF,UAAW1C,KAAK0C,WAG5B,cAjFE9C,IACqBQ,SAAO6C,EAAWC"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useEffect as o,useState as r,useRef as t}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as s}from"../../../core/Context/CoreProvider.js";import i from"../../internal/FormFields/Field/Field.js";import a from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{digitsOnlyFormatter as l}from"../../../utils/Formatters/formatters.js";import n from"../../../core/Context/useImage.js";import d from"../../internal/FormFields/InputText.js";import{PREFIX as m}from"../../internal/Icon/constants.js";function u(u){const{i18n:c}=s(),p=n(),{handleChangeFor:f,triggerValidation:k,data:b,valid:C,errors:h,isValid:g}=a({schema:["blikCode"],rules:{blikCode:{validate:e=>6===e?.length,errorMessage:"blik.invalid",modes:["blur"]}},formatters:{blikCode:l}});o(()=>{u.onChange?.({data:b,errors:h,valid:C,isValid:Boolean(g)},this)},[b,C,h,g]);const[F,j]=r("ready"),v=t({setStatus:j,showValidation:()=>{k()}});return o(()=>{u.setComponentRef(v.current)},[u.setComponentRef]),e("div",{className:"adyen-checkout__blik"},e("p",{className:"adyen-checkout__blik__helper"},c.get("blik.help")),e(i,{errorMessage:"string"==typeof h.blikCode?.errorMessage&&c.get(h.blikCode.errorMessage),label:c.get("blik.code"),classNameModifiers:["blikCode","50"],isValid:C.blikCode,dir:"ltr",name:"blikCode"},e(d,{value:b.blikCode,name:"blikCode",spellcheck:!1,required:!0,autocorrect:"off",autocomplete:"off",onInput:f("blikCode","input"),onBlur:f("blikCode","blur"),placeholder:u?.placeholders?.blikCode,inputMode:"numeric",maxLength:6})),u.showPayButton&&u.payButton?.({status:F,icon:p({imageFolder:"components/"})(`${m}lock`)}))}u.defaultProps={data:{blikCode:""}};export{u as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useEffect as o,useState as r,useRef as t}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import s from"../../internal/FormFields/Field/Field.js";import a from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{digitsOnlyFormatter as l}from"../../../utils/Formatters/formatters.js";import n from"../../../core/Context/useImage.js";import d from"../../internal/FormFields/InputText.js";import{PREFIX as m}from"../../internal/Icon/constants.js";function c(c){const{i18n:u}=i(),p=n(),{handleChangeFor:f,triggerValidation:k,data:b,valid:C,errors:g,isValid:h}=a({schema:["blikCode"],rules:{blikCode:{validate:e=>6===e?.length,errorMessage:"blik.invalid",modes:["blur"]}},formatters:{blikCode:l}});o(()=>{c.onChange?.({data:b,errors:g,valid:C,isValid:Boolean(h)},this)},[b,C,g,h]);const[F,j]=r("ready"),v=t({setStatus:j,showValidation:()=>{k()}});return o(()=>{c.setComponentRef(v.current)},[c.setComponentRef]),e("div",{className:"adyen-checkout__blik"},e("p",{className:"adyen-checkout__blik__helper"},u.get("blik.help")),e(s,{errorMessage:"string"==typeof g.blikCode?.errorMessage&&u.get(g.blikCode.errorMessage),label:u.get("blik.code"),classNameModifiers:["blikCode","50"],isValid:C.blikCode,dir:"ltr",name:"blikCode"},e(d,{value:b.blikCode,name:"blikCode",spellcheck:!1,required:!0,autocorrect:"off",autocomplete:"off",onInput:f("blikCode","input"),onBlur:f("blikCode","blur"),placeholder:c?.placeholders?.blikCode,inputMode:"numeric",maxLength:6})),c.payButton?.({status:F,icon:p({imageFolder:"components/"})(`${m}lock`)}))}c.defaultProps={data:{blikCode:""}};export{c as default};
2
2
  //# sourceMappingURL=BlikInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlikInput.js","sources":["../../../../../src/components/Blik/components/BlikInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../../internal/FormFields/Field';\nimport './BlikInput.scss';\nimport useForm from '../../../utils/useForm';\nimport { digitsOnlyFormatter } from '../../../utils/Formatters/formatters';\nimport useImage from '../../../core/Context/useImage';\nimport InputText from '../../internal/FormFields/InputText';\nimport { ComponentMethodsRef, UIElementProps } from '../../internal/UIElement/types';\nimport { PREFIX } from '../../internal/Icon/constants';\nimport { OnChangeDataErrors, PaymentData } from '../../../types';\n\ninterface BlikInputProps extends UIElementProps {\n data?: BlikInputDataState;\n placeholders?: BlikInputDataState;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n}\n\ninterface BlikInputDataState {\n blikCode: string;\n}\n\nfunction BlikInput(props: Readonly<BlikInputProps>) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<BlikInputDataState>({\n schema: ['blikCode'],\n rules: {\n blikCode: {\n validate: code => code?.length === 6,\n errorMessage: 'blik.invalid',\n modes: ['blur']\n }\n },\n formatters: {\n blikCode: digitsOnlyFormatter\n }\n });\n\n useEffect(() => {\n props.onChange?.({ data: data as unknown as PaymentData, errors: errors as OnChangeDataErrors, valid, isValid: Boolean(isValid) }, this);\n }, [data, valid, errors, isValid]);\n\n const [status, setStatus] = useState('ready');\n\n const blikComponentRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n triggerValidation();\n }\n });\n\n useEffect(() => {\n props.setComponentRef(blikComponentRef.current);\n }, [props.setComponentRef]);\n\n return (\n <div className=\"adyen-checkout__blik\">\n <p className=\"adyen-checkout__blik__helper\">{i18n.get('blik.help')}</p>\n <Field\n errorMessage={typeof errors.blikCode?.errorMessage === 'string' ? i18n.get(errors.blikCode.errorMessage) : false}\n label={i18n.get('blik.code')}\n classNameModifiers={['blikCode', '50']}\n isValid={valid.blikCode}\n dir={'ltr'}\n name={'blikCode'}\n >\n <InputText\n value={data.blikCode}\n name={'blikCode'}\n spellcheck={false}\n required={true}\n autocorrect={'off'}\n autocomplete={'off'}\n onInput={handleChangeFor('blikCode', 'input')}\n onBlur={handleChangeFor('blikCode', 'blur')}\n placeholder={props?.placeholders?.blikCode}\n inputMode={'numeric'}\n maxLength={6}\n />\n </Field>\n\n {props.showPayButton &&\n props.payButton?.({\n status,\n icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`)\n })}\n </div>\n );\n}\n\nBlikInput.defaultProps = { data: { blikCode: '' } };\n\nexport default BlikInput;\n"],"names":["BlikInput","props","i18n","useCoreContext","getImage","useImage","handleChangeFor","triggerValidation","data","valid","errors","isValid","useForm","schema","rules","blikCode","validate","code","length","errorMessage","modes","formatters","digitsOnlyFormatter","useEffect","onChange","Boolean","this","status","setStatus","useState","blikComponentRef","useRef","showValidation","setComponentRef","current","h","div","className","p","get","Field","label","classNameModifiers","dir","name","InputText","value","spellcheck","required","autocorrect","autocomplete","onInput","onBlur","placeholder","placeholders","inputMode","maxLength","showPayButton","payButton","icon","imageFolder","PREFIX","defaultProps"],"mappings":"0oBAuBA,SAASA,EAAUC,GACf,MAAMC,KAAEA,GAASC,IACXC,EAAWC,KACXC,gBAAEA,EAAeC,kBAAEA,EAAiBC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GAAYC,EAA4B,CACrGC,OAAQ,CAAC,YACTC,MAAO,CACHC,SAAU,CACNC,SAAUC,GAAyB,IAAjBA,GAAMC,OACxBC,aAAc,eACdC,MAAO,CAAC,UAGhBC,WAAY,CACRN,SAAUO,KAIlBC,EAAU,KACNtB,EAAMuB,WAAW,CAAEhB,KAAMA,EAAgCE,OAAQA,EAA8BD,QAAOE,QAASc,QAAQd,IAAYe,OACpI,CAAClB,EAAMC,EAAOC,EAAQC,IAEzB,MAAOgB,EAAQC,GAAaC,EAAS,SAE/BC,EAAmBC,EAA4B,CACjDH,UAAWA,EACXI,eAAgB,KACZzB,OAQR,OAJAgB,EAAU,KACNtB,EAAMgC,gBAAgBH,EAAiBI,UACxC,CAACjC,EAAMgC,kBAGNE,EAACC,MAAAA,CAAIC,UAAU,wBACXF,EAACG,IAAAA,CAAED,UAAU,gCAAgCnC,EAAKqC,IAAI,cACtDJ,EAACK,EAAAA,CACGrB,aAAuD,iBAAlCT,EAAOK,UAAUI,cAA4BjB,EAAKqC,IAAI7B,EAAOK,SAASI,cAC3FsB,MAAOvC,EAAKqC,IAAI,aAChBG,mBAAoB,CAAC,WAAY,MACjC/B,QAASF,EAAMM,SACf4B,IAAK,MACLC,KAAM,YAENT,EAACU,EAAAA,CACGC,MAAOtC,EAAKO,SACZ6B,KAAM,WACNG,YAAY,EACZC,UAAU,EACVC,YAAa,MACbC,aAAc,MACdC,QAAS7C,EAAgB,WAAY,SACrC8C,OAAQ9C,EAAgB,WAAY,QACpC+C,YAAapD,GAAOqD,cAAcvC,SAClCwC,UAAW,UACXC,UAAW,KAIlBvD,EAAMwD,eACHxD,EAAMyD,YAAY,CACd/B,SACAgC,KAAMvD,EAAS,CAAEwD,YAAa,eAAxBxD,CAAyC,GAAGyD,WAItE,CAEA7D,EAAU8D,aAAe,CAAEtD,KAAM,CAAEO,SAAU"}
1
+ {"version":3,"file":"BlikInput.js","sources":["../../../../../src/components/Blik/components/BlikInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../../internal/FormFields/Field';\nimport './BlikInput.scss';\nimport useForm from '../../../utils/useForm';\nimport { digitsOnlyFormatter } from '../../../utils/Formatters/formatters';\nimport useImage from '../../../core/Context/useImage';\nimport InputText from '../../internal/FormFields/InputText';\nimport { ComponentMethodsRef, UIElementProps } from '../../internal/UIElement/types';\nimport { PREFIX } from '../../internal/Icon/constants';\nimport { OnChangeDataErrors, PaymentData } from '../../../types';\n\ninterface BlikInputProps extends UIElementProps {\n data?: BlikInputDataState;\n placeholders?: BlikInputDataState;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n}\n\ninterface BlikInputDataState {\n blikCode: string;\n}\n\nfunction BlikInput(props: Readonly<BlikInputProps>) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<BlikInputDataState>({\n schema: ['blikCode'],\n rules: {\n blikCode: {\n validate: code => code?.length === 6,\n errorMessage: 'blik.invalid',\n modes: ['blur']\n }\n },\n formatters: {\n blikCode: digitsOnlyFormatter\n }\n });\n\n useEffect(() => {\n props.onChange?.({ data: data as unknown as PaymentData, errors: errors as OnChangeDataErrors, valid, isValid: Boolean(isValid) }, this);\n }, [data, valid, errors, isValid]);\n\n const [status, setStatus] = useState('ready');\n\n const blikComponentRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n triggerValidation();\n }\n });\n\n useEffect(() => {\n props.setComponentRef(blikComponentRef.current);\n }, [props.setComponentRef]);\n\n return (\n <div className=\"adyen-checkout__blik\">\n <p className=\"adyen-checkout__blik__helper\">{i18n.get('blik.help')}</p>\n <Field\n errorMessage={typeof errors.blikCode?.errorMessage === 'string' ? i18n.get(errors.blikCode.errorMessage) : false}\n label={i18n.get('blik.code')}\n classNameModifiers={['blikCode', '50']}\n isValid={valid.blikCode}\n dir={'ltr'}\n name={'blikCode'}\n >\n <InputText\n value={data.blikCode}\n name={'blikCode'}\n spellcheck={false}\n required={true}\n autocorrect={'off'}\n autocomplete={'off'}\n onInput={handleChangeFor('blikCode', 'input')}\n onBlur={handleChangeFor('blikCode', 'blur')}\n placeholder={props?.placeholders?.blikCode}\n inputMode={'numeric'}\n maxLength={6}\n />\n </Field>\n\n {props.payButton?.({\n status,\n icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`)\n })}\n </div>\n );\n}\n\nBlikInput.defaultProps = { data: { blikCode: '' } };\n\nexport default BlikInput;\n"],"names":["BlikInput","props","i18n","useCoreContext","getImage","useImage","handleChangeFor","triggerValidation","data","valid","errors","isValid","useForm","schema","rules","blikCode","validate","code","length","errorMessage","modes","formatters","digitsOnlyFormatter","useEffect","onChange","Boolean","this","status","setStatus","useState","blikComponentRef","useRef","showValidation","setComponentRef","current","h","div","className","p","get","Field","label","classNameModifiers","dir","name","InputText","value","spellcheck","required","autocorrect","autocomplete","onInput","onBlur","placeholder","placeholders","inputMode","maxLength","payButton","icon","imageFolder","PREFIX","defaultProps"],"mappings":"0oBAuBA,SAASA,EAAUC,GACf,MAAMC,KAAEA,GAASC,IACXC,EAAWC,KACXC,gBAAEA,EAAeC,kBAAEA,EAAiBC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GAAYC,EAA4B,CACrGC,OAAQ,CAAC,YACTC,MAAO,CACHC,SAAU,CACNC,SAAUC,GAAyB,IAAjBA,GAAMC,OACxBC,aAAc,eACdC,MAAO,CAAC,UAGhBC,WAAY,CACRN,SAAUO,KAIlBC,EAAU,KACNtB,EAAMuB,WAAW,CAAEhB,KAAMA,EAAgCE,OAAQA,EAA8BD,QAAOE,QAASc,QAAQd,IAAYe,OACpI,CAAClB,EAAMC,EAAOC,EAAQC,IAEzB,MAAOgB,EAAQC,GAAaC,EAAS,SAE/BC,EAAmBC,EAA4B,CACjDH,UAAWA,EACXI,eAAgB,KACZzB,OAQR,OAJAgB,EAAU,KACNtB,EAAMgC,gBAAgBH,EAAiBI,UACxC,CAACjC,EAAMgC,kBAGNE,EAACC,MAAAA,CAAIC,UAAU,wBACXF,EAACG,IAAAA,CAAED,UAAU,gCAAgCnC,EAAKqC,IAAI,cACtDJ,EAACK,EAAAA,CACGrB,aAAuD,iBAAlCT,EAAOK,UAAUI,cAA4BjB,EAAKqC,IAAI7B,EAAOK,SAASI,cAC3FsB,MAAOvC,EAAKqC,IAAI,aAChBG,mBAAoB,CAAC,WAAY,MACjC/B,QAASF,EAAMM,SACf4B,IAAK,MACLC,KAAM,YAENT,EAACU,EAAAA,CACGC,MAAOtC,EAAKO,SACZ6B,KAAM,WACNG,YAAY,EACZC,UAAU,EACVC,YAAa,MACbC,aAAc,MACdC,QAAS7C,EAAgB,WAAY,SACrC8C,OAAQ9C,EAAgB,WAAY,QACpC+C,YAAapD,GAAOqD,cAAcvC,SAClCwC,UAAW,UACXC,UAAW,KAIlBvD,EAAMwD,YAAY,CACf9B,SACA+B,KAAMtD,EAAS,CAAEuD,YAAa,eAAxBvD,CAAyC,GAAGwD,WAIlE,CAEA5D,EAAU6D,aAAe,CAAErD,KAAM,CAAEO,SAAU"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useRef as r,useState as s,useEffect as i}from"../../../../external/preact/hooks/dist/hooks.js";import a from"../../../internal/Address/Address.js";import{boletoValidationRules as t}from"./validate.js";import{boletoFormatters as l}from"./utils.js";import o from"../../../internal/SendCopyToEmail/SendCopyToEmail.js";import{useCoreContext as d}from"../../../../core/Context/CoreProvider.js";import n from"../../../../utils/useForm/useForm.js";import"../../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{BrazilPersonalDetail as u}from"../../../internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js";import m from"../../../internal/FormInstruction/FormInstruction.js";function p(p){const{i18n:c}=d(),b=r(null),{handleChangeFor:g,triggerValidation:h,setSchema:f,setData:A,setValid:R,setErrors:q,data:E,valid:y,errors:C,isValid:j}=n({schema:["firstName","lastName","socialSecurityNumber","billingAddress","shopperEmail"],defaultData:p.data,rules:t,formatters:l}),[N,S]=s(!1);i(()=>{const e=[...p.personalDetailsRequired?["firstName","lastName","socialSecurityNumber"]:[],...p.billingAddressRequired?["billingAddress"]:[],...N?["shopperEmail"]:[]];f(e)},[N,p.personalDetailsRequired,p.billingAddressRequired]);const[D,F]=s("ready"),v=r({});Object.keys(v.current).length||p.setComponentRef?.(v.current),v.current.showValidation=()=>{h(),p.billingAddressRequired&&b.current.showValidation()},v.current.setStatus=F,i(()=>{const e=!p.billingAddressRequired||Boolean(y.billingAddress);p.onChange({data:E,valid:y,errors:C,isValid:j&&e})},[E,y,C]);const B=[...p.personalDetailsRequired||p.billingAddressRequired||p.showEmailAddress?[]:["standalone"]],w=p.personalDetailsRequired||p.billingAddressRequired;return e("div",{className:"adyen-checkout__boleto-input__field"},w&&e(m,null),p.personalDetailsRequired&&e(u,{i18n:c,data:E,handleChangeFor:g,errors:C,valid:y}),p.billingAddressRequired&&e(a,{allowedCountries:["BR"],label:"billingAddress",data:{...p.data.billingAddress,country:"BR"},onChange:e=>{A("billingAddress",e.data),R("billingAddress",e.isValid),q("billingAddress",e.errors)},requiredFields:["country","street","houseNumberOrName","postalCode","city","stateOrProvince"],setComponentRef:e=>{b.current=e}}),p.showEmailAddress&&e(o,{value:E.shopperEmail,errors:C.shopperEmail,onToggle:()=>S(!N),onInput:g("shopperEmail","input"),onBlur:g("shopperEmail","blur")}),p.showPayButton&&p.payButton({status:D,label:c.get("boletobancario.btnLabel"),classNameModifiers:B}))}p.defaultProps={data:{},showEmailAddress:!0,personalDetailsRequired:!0,billingAddressRequired:!0};export{p as default};
1
+ import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useRef as r,useState as s,useEffect as i}from"../../../../external/preact/hooks/dist/hooks.js";import a from"../../../internal/Address/Address.js";import{boletoValidationRules as t}from"./validate.js";import{boletoFormatters as l}from"./utils.js";import o from"../../../internal/SendCopyToEmail/SendCopyToEmail.js";import{useCoreContext as d}from"../../../../core/Context/CoreProvider.js";import n from"../../../../utils/useForm/useForm.js";import"../../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{BrazilPersonalDetail as u}from"../../../internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js";import m from"../../../internal/FormInstruction/FormInstruction.js";function p(p){const{i18n:c}=d(),b=r(null),{handleChangeFor:g,triggerValidation:f,setSchema:h,setData:A,setValid:R,setErrors:q,data:E,valid:C,errors:j,isValid:y}=n({schema:["firstName","lastName","socialSecurityNumber","billingAddress","shopperEmail"],defaultData:p.data,rules:t,formatters:l}),[N,S]=s(!1);i(()=>{const e=[...p.personalDetailsRequired?["firstName","lastName","socialSecurityNumber"]:[],...p.billingAddressRequired?["billingAddress"]:[],...N?["shopperEmail"]:[]];h(e)},[N,p.personalDetailsRequired,p.billingAddressRequired]);const[D,F]=s("ready"),v=r({});Object.keys(v.current).length||p.setComponentRef?.(v.current),v.current.showValidation=()=>{f(),p.billingAddressRequired&&b.current.showValidation()},v.current.setStatus=F,i(()=>{const e=!p.billingAddressRequired||Boolean(C.billingAddress);p.onChange({data:E,valid:C,errors:j,isValid:y&&e})},[E,C,j]);const B=[...p.personalDetailsRequired||p.billingAddressRequired||p.showEmailAddress?[]:["standalone"]],V=p.personalDetailsRequired||p.billingAddressRequired;return e("div",{className:"adyen-checkout__boleto-input__field"},V&&e(m,null),p.personalDetailsRequired&&e(u,{i18n:c,data:E,handleChangeFor:g,errors:j,valid:C}),p.billingAddressRequired&&e(a,{allowedCountries:["BR"],label:"billingAddress",data:{...p.data.billingAddress,country:"BR"},onChange:e=>{A("billingAddress",e.data),R("billingAddress",e.isValid),q("billingAddress",e.errors)},requiredFields:["country","street","houseNumberOrName","postalCode","city","stateOrProvince"],setComponentRef:e=>{b.current=e}}),p.showEmailAddress&&e(o,{value:E.shopperEmail,errors:j.shopperEmail,onToggle:()=>S(!N),onInput:g("shopperEmail","input"),onBlur:g("shopperEmail","blur")}),p.payButton({status:D,label:c.get("boletobancario.btnLabel"),classNameModifiers:B}))}p.defaultProps={data:{},showEmailAddress:!0,personalDetailsRequired:!0,billingAddressRequired:!0};export{p as default};
2
2
  //# sourceMappingURL=BoletoInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BoletoInput.js","sources":["../../../../../../src/components/Boleto/components/BoletoInput/BoletoInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport Address from '../../../internal/Address';\nimport { boletoValidationRules } from './validate';\nimport { boletoFormatters } from './utils';\nimport SendCopyToEmail from '../../../internal/SendCopyToEmail/SendCopyToEmail';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { BoletoInputDataState } from '../../types';\nimport useForm from '../../../../utils/useForm';\nimport { BrazilPersonalDetail } from '../../../internal/SocialSecurityNumberBrazil/BrazilPersonalDetail';\nimport FormInstruction from '../../../internal/FormInstruction';\nimport type { ComponentMethodsRef } from '../../../internal/UIElement/types';\nimport type { PayButtonProps } from '../../../internal/PayButton/PayButton';\nimport type { ValidationRuleResult } from '../../../../utils/Validator/ValidationRuleResult';\n\nexport interface BoletoInputProps {\n setComponentRef: (ref: ComponentMethodsRef) => void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n onChange: (props: {\n data: BoletoInputDataState;\n errors: { [p: string]: ValidationRuleResult };\n valid: { [p: string]: boolean };\n isValid: boolean;\n }) => void;\n personalDetailsRequired?: boolean;\n billingAddressRequired?: boolean;\n showEmailAddress?: boolean;\n data?: BoletoInputDataState;\n showPayButton?: boolean;\n}\n\nfunction BoletoInput(props: Readonly<BoletoInputProps>) {\n const { i18n } = useCoreContext();\n const addressRef = useRef(null);\n const setAddressRef = ref => {\n addressRef.current = ref;\n };\n const { handleChangeFor, triggerValidation, setSchema, setData, setValid, setErrors, data, valid, errors, isValid } =\n useForm<BoletoInputDataState>({\n schema: ['firstName', 'lastName', 'socialSecurityNumber', 'billingAddress', 'shopperEmail'],\n defaultData: props.data,\n rules: boletoValidationRules,\n formatters: boletoFormatters\n });\n\n // Email field toggle\n const [showingEmail, setShowingEmail] = useState<boolean>(false);\n const toggleEmailField = () => setShowingEmail(!showingEmail);\n\n // Handle form schema updates\n useEffect(() => {\n const newSchema = [\n ...(props.personalDetailsRequired ? ['firstName', 'lastName', 'socialSecurityNumber'] : []),\n ...(props.billingAddressRequired ? ['billingAddress'] : []),\n ...(showingEmail ? ['shopperEmail'] : [])\n ];\n setSchema(newSchema);\n }, [showingEmail, props.personalDetailsRequired, props.billingAddressRequired]);\n\n const handleAddress = address => {\n setData('billingAddress', address.data);\n setValid('billingAddress', address.isValid);\n setErrors('billingAddress', address.errors);\n };\n\n const [status, setStatus] = useState('ready');\n\n /** An object by which to expose 'public' members to the parent UIElement */\n const boletoRef = useRef<ComponentMethodsRef>({});\n // Just call once\n if (!Object.keys(boletoRef.current).length) {\n props.setComponentRef?.(boletoRef.current);\n }\n\n boletoRef.current.showValidation = () => {\n triggerValidation();\n if (props.billingAddressRequired) {\n addressRef.current.showValidation();\n }\n };\n\n boletoRef.current.setStatus = setStatus;\n\n useEffect(() => {\n const billingAddressValid = props.billingAddressRequired ? Boolean(valid.billingAddress) : true;\n props.onChange({ data, valid, errors, isValid: isValid && billingAddressValid });\n }, [data, valid, errors]);\n\n const buttonModifiers = [...(!props.personalDetailsRequired && !props.billingAddressRequired && !props.showEmailAddress ? ['standalone'] : [])];\n\n const showFormInstruction = props.personalDetailsRequired || props.billingAddressRequired;\n\n return (\n <div className=\"adyen-checkout__boleto-input__field\">\n {showFormInstruction && <FormInstruction />}\n\n {props.personalDetailsRequired && (\n <BrazilPersonalDetail i18n={i18n} data={data} handleChangeFor={handleChangeFor} errors={errors} valid={valid} />\n )}\n\n {props.billingAddressRequired && (\n <Address\n allowedCountries={['BR']}\n label=\"billingAddress\"\n data={{ ...props.data.billingAddress, country: 'BR' }}\n onChange={handleAddress}\n requiredFields={['country', 'street', 'houseNumberOrName', 'postalCode', 'city', 'stateOrProvince']}\n setComponentRef={setAddressRef}\n />\n )}\n\n {props.showEmailAddress && (\n <SendCopyToEmail\n value={data.shopperEmail}\n errors={errors.shopperEmail}\n onToggle={toggleEmailField}\n onInput={handleChangeFor('shopperEmail', 'input')}\n onBlur={handleChangeFor('shopperEmail', 'blur')}\n />\n )}\n\n {props.showPayButton &&\n props.payButton({\n status,\n label: i18n.get('boletobancario.btnLabel'),\n classNameModifiers: buttonModifiers\n })}\n </div>\n );\n}\n\nBoletoInput.defaultProps = {\n data: {},\n showEmailAddress: true,\n personalDetailsRequired: true,\n billingAddressRequired: true\n};\n\nexport default BoletoInput;\n"],"names":["BoletoInput","props","i18n","useCoreContext","addressRef","useRef","handleChangeFor","triggerValidation","setSchema","setData","setValid","setErrors","data","valid","errors","isValid","useForm","schema","defaultData","rules","boletoValidationRules","formatters","boletoFormatters","showingEmail","setShowingEmail","useState","useEffect","newSchema","personalDetailsRequired","billingAddressRequired","status","setStatus","boletoRef","Object","keys","current","length","setComponentRef","showValidation","billingAddressValid","Boolean","billingAddress","onChange","buttonModifiers","showEmailAddress","showFormInstruction","h","div","className","FormInstruction","BrazilPersonalDetail","Address","allowedCountries","label","country","address","requiredFields","ref","SendCopyToEmail","value","shopperEmail","onToggle","onInput","onBlur","showPayButton","payButton","get","classNameModifiers","defaultProps"],"mappings":"8vBA+BA,SAASA,EAAYC,GACjB,MAAMC,KAAEA,GAASC,IACXC,EAAaC,EAAO,OAIpBC,gBAAEA,EAAeC,kBAAEA,EAAiBC,UAAEA,EAASC,QAAEA,EAAOC,SAAEA,EAAQC,UAAEA,EAASC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GACtGC,EAA8B,CAC1BC,OAAQ,CAAC,YAAa,WAAY,uBAAwB,iBAAkB,gBAC5EC,YAAajB,EAAMW,KACnBO,MAAOC,EACPC,WAAYC,KAIbC,EAAcC,GAAmBC,GAAkB,GAI1DC,EAAU,KACN,MAAMC,EAAY,IACV1B,EAAM2B,wBAA0B,CAAC,YAAa,WAAY,wBAA0B,MACpF3B,EAAM4B,uBAAyB,CAAC,kBAAoB,MACpDN,EAAe,CAAC,gBAAkB,IAE1Cf,EAAUmB,IACX,CAACJ,EAActB,EAAM2B,wBAAyB3B,EAAM4B,yBAEvD,MAMOC,EAAQC,GAAaN,EAAS,SAG/BO,EAAY3B,EAA4B,IAEzC4B,OAAOC,KAAKF,EAAUG,SAASC,QAChCnC,EAAMoC,kBAAkBL,EAAUG,SAGtCH,EAAUG,QAAQG,eAAiB,KAC/B/B,IACIN,EAAM4B,wBACNzB,EAAW+B,QAAQG,kBAI3BN,EAAUG,QAAQJ,UAAYA,EAE9BL,EAAU,KACN,MAAMa,GAAsBtC,EAAM4B,wBAAyBW,QAAQ3B,EAAM4B,gBACzExC,EAAMyC,SAAS,CAAE9B,OAAMC,QAAOC,SAAQC,QAASA,GAAWwB,KAC3D,CAAC3B,EAAMC,EAAOC,IAEjB,MAAM6B,EAAkB,IAAM1C,EAAM2B,yBAA4B3B,EAAM4B,wBAA2B5B,EAAM2C,iBAAoC,GAAjB,CAAC,eAErHC,EAAsB5C,EAAM2B,yBAA2B3B,EAAM4B,uBAEnE,OACIiB,EAACC,MAAAA,CAAIC,UAAU,uCACVH,GAAuBC,EAACG,EAAAA,MAExBhD,EAAM2B,yBACHkB,EAACI,EAAAA,CAAqBhD,KAAMA,EAAMU,KAAMA,EAAMN,gBAAiBA,EAAiBQ,OAAQA,EAAQD,MAAOA,IAG1GZ,EAAM4B,wBACHiB,EAACK,EAAAA,CACGC,iBAAkB,CAAC,MACnBC,MAAM,iBACNzC,KAAM,IAAKX,EAAMW,KAAK6B,eAAgBa,QAAS,MAC/CZ,SA9CMa,IAClB9C,EAAQ,iBAAkB8C,EAAQ3C,MAClCF,EAAS,iBAAkB6C,EAAQxC,SACnCJ,EAAU,iBAAkB4C,EAAQzC,SA4CxB0C,eAAgB,CAAC,UAAW,SAAU,oBAAqB,aAAc,OAAQ,mBACjFnB,gBAzEMoB,IAClBrD,EAAW+B,QAAUsB,KA4EhBxD,EAAM2C,kBACHE,EAACY,EAAAA,CACGC,MAAO/C,EAAKgD,aACZ9C,OAAQA,EAAO8C,aACfC,SApES,IAAMrC,GAAiBD,GAqEhCuC,QAASxD,EAAgB,eAAgB,SACzCyD,OAAQzD,EAAgB,eAAgB,UAI/CL,EAAM+D,eACH/D,EAAMgE,UAAU,CACZnC,SACAuB,MAAOnD,EAAKgE,IAAI,2BAChBC,mBAAoBxB,IAIxC,CAEA3C,EAAYoE,aAAe,CACvBxD,KAAM,CAAA,EACNgC,kBAAkB,EAClBhB,yBAAyB,EACzBC,wBAAwB"}
1
+ {"version":3,"file":"BoletoInput.js","sources":["../../../../../../src/components/Boleto/components/BoletoInput/BoletoInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport Address from '../../../internal/Address';\nimport { boletoValidationRules } from './validate';\nimport { boletoFormatters } from './utils';\nimport SendCopyToEmail from '../../../internal/SendCopyToEmail/SendCopyToEmail';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { BoletoInputDataState } from '../../types';\nimport useForm from '../../../../utils/useForm';\nimport { BrazilPersonalDetail } from '../../../internal/SocialSecurityNumberBrazil/BrazilPersonalDetail';\nimport FormInstruction from '../../../internal/FormInstruction';\nimport type { ComponentMethodsRef } from '../../../internal/UIElement/types';\nimport type { PayButtonProps } from '../../../internal/PayButton/PayButton';\nimport type { ValidationRuleResult } from '../../../../utils/Validator/ValidationRuleResult';\n\nexport interface BoletoInputProps {\n setComponentRef: (ref: ComponentMethodsRef) => void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n onChange: (props: {\n data: BoletoInputDataState;\n errors: { [p: string]: ValidationRuleResult };\n valid: { [p: string]: boolean };\n isValid: boolean;\n }) => void;\n personalDetailsRequired?: boolean;\n billingAddressRequired?: boolean;\n showEmailAddress?: boolean;\n data?: BoletoInputDataState;\n}\n\nfunction BoletoInput(props: Readonly<BoletoInputProps>) {\n const { i18n } = useCoreContext();\n const addressRef = useRef(null);\n const setAddressRef = ref => {\n addressRef.current = ref;\n };\n const { handleChangeFor, triggerValidation, setSchema, setData, setValid, setErrors, data, valid, errors, isValid } =\n useForm<BoletoInputDataState>({\n schema: ['firstName', 'lastName', 'socialSecurityNumber', 'billingAddress', 'shopperEmail'],\n defaultData: props.data,\n rules: boletoValidationRules,\n formatters: boletoFormatters\n });\n\n // Email field toggle\n const [showingEmail, setShowingEmail] = useState<boolean>(false);\n const toggleEmailField = () => setShowingEmail(!showingEmail);\n\n // Handle form schema updates\n useEffect(() => {\n const newSchema = [\n ...(props.personalDetailsRequired ? ['firstName', 'lastName', 'socialSecurityNumber'] : []),\n ...(props.billingAddressRequired ? ['billingAddress'] : []),\n ...(showingEmail ? ['shopperEmail'] : [])\n ];\n setSchema(newSchema);\n }, [showingEmail, props.personalDetailsRequired, props.billingAddressRequired]);\n\n const handleAddress = address => {\n setData('billingAddress', address.data);\n setValid('billingAddress', address.isValid);\n setErrors('billingAddress', address.errors);\n };\n\n const [status, setStatus] = useState('ready');\n\n /** An object by which to expose 'public' members to the parent UIElement */\n const boletoRef = useRef<ComponentMethodsRef>({});\n // Just call once\n if (!Object.keys(boletoRef.current).length) {\n props.setComponentRef?.(boletoRef.current);\n }\n\n boletoRef.current.showValidation = () => {\n triggerValidation();\n if (props.billingAddressRequired) {\n addressRef.current.showValidation();\n }\n };\n\n boletoRef.current.setStatus = setStatus;\n\n useEffect(() => {\n const billingAddressValid = props.billingAddressRequired ? Boolean(valid.billingAddress) : true;\n props.onChange({ data, valid, errors, isValid: isValid && billingAddressValid });\n }, [data, valid, errors]);\n\n const buttonModifiers = [...(!props.personalDetailsRequired && !props.billingAddressRequired && !props.showEmailAddress ? ['standalone'] : [])];\n\n const showFormInstruction = props.personalDetailsRequired || props.billingAddressRequired;\n\n return (\n <div className=\"adyen-checkout__boleto-input__field\">\n {showFormInstruction && <FormInstruction />}\n\n {props.personalDetailsRequired && (\n <BrazilPersonalDetail i18n={i18n} data={data} handleChangeFor={handleChangeFor} errors={errors} valid={valid} />\n )}\n\n {props.billingAddressRequired && (\n <Address\n allowedCountries={['BR']}\n label=\"billingAddress\"\n data={{ ...props.data.billingAddress, country: 'BR' }}\n onChange={handleAddress}\n requiredFields={['country', 'street', 'houseNumberOrName', 'postalCode', 'city', 'stateOrProvince']}\n setComponentRef={setAddressRef}\n />\n )}\n\n {props.showEmailAddress && (\n <SendCopyToEmail\n value={data.shopperEmail}\n errors={errors.shopperEmail}\n onToggle={toggleEmailField}\n onInput={handleChangeFor('shopperEmail', 'input')}\n onBlur={handleChangeFor('shopperEmail', 'blur')}\n />\n )}\n\n {props.payButton({\n status,\n label: i18n.get('boletobancario.btnLabel'),\n classNameModifiers: buttonModifiers\n })}\n </div>\n );\n}\n\nBoletoInput.defaultProps = {\n data: {},\n showEmailAddress: true,\n personalDetailsRequired: true,\n billingAddressRequired: true\n};\n\nexport default BoletoInput;\n"],"names":["BoletoInput","props","i18n","useCoreContext","addressRef","useRef","handleChangeFor","triggerValidation","setSchema","setData","setValid","setErrors","data","valid","errors","isValid","useForm","schema","defaultData","rules","boletoValidationRules","formatters","boletoFormatters","showingEmail","setShowingEmail","useState","useEffect","newSchema","personalDetailsRequired","billingAddressRequired","status","setStatus","boletoRef","Object","keys","current","length","setComponentRef","showValidation","billingAddressValid","Boolean","billingAddress","onChange","buttonModifiers","showEmailAddress","showFormInstruction","h","div","className","FormInstruction","BrazilPersonalDetail","Address","allowedCountries","label","country","address","requiredFields","ref","SendCopyToEmail","value","shopperEmail","onToggle","onInput","onBlur","payButton","get","classNameModifiers","defaultProps"],"mappings":"8vBA8BA,SAASA,EAAYC,GACjB,MAAMC,KAAEA,GAASC,IACXC,EAAaC,EAAO,OAIpBC,gBAAEA,EAAeC,kBAAEA,EAAiBC,UAAEA,EAASC,QAAEA,EAAOC,SAAEA,EAAQC,UAAEA,EAASC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GACtGC,EAA8B,CAC1BC,OAAQ,CAAC,YAAa,WAAY,uBAAwB,iBAAkB,gBAC5EC,YAAajB,EAAMW,KACnBO,MAAOC,EACPC,WAAYC,KAIbC,EAAcC,GAAmBC,GAAkB,GAI1DC,EAAU,KACN,MAAMC,EAAY,IACV1B,EAAM2B,wBAA0B,CAAC,YAAa,WAAY,wBAA0B,MACpF3B,EAAM4B,uBAAyB,CAAC,kBAAoB,MACpDN,EAAe,CAAC,gBAAkB,IAE1Cf,EAAUmB,IACX,CAACJ,EAActB,EAAM2B,wBAAyB3B,EAAM4B,yBAEvD,MAMOC,EAAQC,GAAaN,EAAS,SAG/BO,EAAY3B,EAA4B,IAEzC4B,OAAOC,KAAKF,EAAUG,SAASC,QAChCnC,EAAMoC,kBAAkBL,EAAUG,SAGtCH,EAAUG,QAAQG,eAAiB,KAC/B/B,IACIN,EAAM4B,wBACNzB,EAAW+B,QAAQG,kBAI3BN,EAAUG,QAAQJ,UAAYA,EAE9BL,EAAU,KACN,MAAMa,GAAsBtC,EAAM4B,wBAAyBW,QAAQ3B,EAAM4B,gBACzExC,EAAMyC,SAAS,CAAE9B,OAAMC,QAAOC,SAAQC,QAASA,GAAWwB,KAC3D,CAAC3B,EAAMC,EAAOC,IAEjB,MAAM6B,EAAkB,IAAM1C,EAAM2B,yBAA4B3B,EAAM4B,wBAA2B5B,EAAM2C,iBAAoC,GAAjB,CAAC,eAErHC,EAAsB5C,EAAM2B,yBAA2B3B,EAAM4B,uBAEnE,OACIiB,EAACC,MAAAA,CAAIC,UAAU,uCACVH,GAAuBC,EAACG,EAAAA,MAExBhD,EAAM2B,yBACHkB,EAACI,EAAAA,CAAqBhD,KAAMA,EAAMU,KAAMA,EAAMN,gBAAiBA,EAAiBQ,OAAQA,EAAQD,MAAOA,IAG1GZ,EAAM4B,wBACHiB,EAACK,EAAAA,CACGC,iBAAkB,CAAC,MACnBC,MAAM,iBACNzC,KAAM,IAAKX,EAAMW,KAAK6B,eAAgBa,QAAS,MAC/CZ,SA9CMa,IAClB9C,EAAQ,iBAAkB8C,EAAQ3C,MAClCF,EAAS,iBAAkB6C,EAAQxC,SACnCJ,EAAU,iBAAkB4C,EAAQzC,SA4CxB0C,eAAgB,CAAC,UAAW,SAAU,oBAAqB,aAAc,OAAQ,mBACjFnB,gBAzEMoB,IAClBrD,EAAW+B,QAAUsB,KA4EhBxD,EAAM2C,kBACHE,EAACY,EAAAA,CACGC,MAAO/C,EAAKgD,aACZ9C,OAAQA,EAAO8C,aACfC,SApES,IAAMrC,GAAiBD,GAqEhCuC,QAASxD,EAAgB,eAAgB,SACzCyD,OAAQzD,EAAgB,eAAgB,UAI/CL,EAAM+D,UAAU,CACblC,SACAuB,MAAOnD,EAAK+D,IAAI,2BAChBC,mBAAoBvB,IAIpC,CAEA3C,EAAYmE,aAAe,CACvBvD,KAAM,CAAA,EACNgC,kBAAkB,EAClBhB,yBAAyB,EACzBC,wBAAwB"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import e from"./components/CardInput/CardInput.js";import o from"../../utils/browserInfo.js";import{triggerBinLookUp as s}from"../internal/SecuredFields/binLookup/triggerBinLookUp.js";import{fieldTypeToSnakeCase as n,isSecuredField as i}from"../internal/SecuredFields/utils.js";import{reject as r,notFalsy as a}from"../../utils/commonUtils.js";import{shouldIncludeInstallmentsInPaymentData as p}from"./components/CardInput/utils.js";import c from"../internal/ClickToPay/services/create-clicktopay-service.js";import d from"./components/ClickToPayWrapper.js";import{TxVariants as l}from"../tx-variants.js";import{UIElement as u}from"../internal/UIElement/UIElement.js";import h from"../internal/PayButton/PayButton.js";import m,{IMPLEMENTATION_ERROR as y}from"../../core/Errors/AdyenCheckoutError.js";import f from"./components/CardInput/defaultProps.js";import{AnalyticsInfoEvent as g,InfoEventType as b}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function C(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class P extends u{setStatus(t){return this.componentRef?.setStatus&&this.componentRef.setStatus(t),this.clickToPayRef?.setStatus&&this.clickToPayRef.setStatus(t),this}getPaymentMethodConfigFromResponse(t){return t?.fundingSource?this.core.paymentMethodsResponse?.findByFundingSource(t.type,t.fundingSource):super.getPaymentMethodConfigFromResponse(t)}formatProps(t){const e=t.session?.configuration?.enableStoreDetails??t.enableStoreDetails,o=!(0===t.amount?.value)&&e,s=t.storedPaymentMethodId||t.id,n=s&&t?.supportedShopperInteractions?.includes("Ecommerce");if(s&&!n)throw new m(y,"You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions");const i=t.installmentOptions;t.session&&a(i)&&console.warn("WARNING: You have defined installments configuration on the Card component, but you are using a /sessions integration.\nWith this integration, installments configuration must be defined when you create the session. Any configuration defined elsewhere will be ignored.\n\n");const r=t.session?t.session?.configuration?.installmentOptions??f.installmentOptions:i;return{...t,holderNameRequired:!!t.hasHolderName&&t.holderNameRequired,hasCVC:!(t.brand&&"bcmc"===t.brand||t.hideCVC),billingAddressRequired:!t.storedPaymentMethodId&&t.billingAddressRequired,billingAddressMode:t.onAddressLookup?f.billingAddressMode:t.billingAddressMode,brand:t.brand??l.card,countryCode:t.countryCode?t.countryCode.toLowerCase():null,configuration:{...t.configuration,socialSecurityNumberMode:t.configuration?.socialSecurityNumberMode??"auto"},brandsConfiguration:t.brandsConfiguration||t.configuration?.brandsConfiguration||{},icon:t.icon||t.configuration?.icon,installmentOptions:r,enableStoreDetails:e,showStoreDetailsCheckbox:o,clickToPayConfiguration:{...t.clickToPayConfiguration,disableOtpAutoFocus:t.clickToPayConfiguration?.disableOtpAutoFocus||!1,shopperEmail:t.clickToPayConfiguration?.shopperEmail||this.core.options?.session?.shopperEmail,telephoneNumber:t.clickToPayConfiguration?.telephoneNumber||this.core.options?.session?.telephoneNumber,locale:t.clickToPayConfiguration?.locale||t.i18n?.locale?.replace("-","_")},...s&&{storedPaymentMethodId:s}}}formatData(){const t=this.state.selectedBrandValue;return{paymentMethod:{type:P.type,...this.state.data,...this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId,holderName:this.props.holderName??""},...t&&{brand:t},...this.props.fundingSource&&{fundingSource:this.props.fundingSource},...this.state.fastlaneData&&{fastlaneData:btoa(JSON.stringify(this.state.fastlaneData))}},...this.state.billingAddress&&{billingAddress:this.state.billingAddress},...this.state.socialSecurityNumber&&{socialSecurityNumber:this.state.socialSecurityNumber},...this.storePaymentMethodPayload,...p(this.state.installments)&&{installments:this.state.installments},browserInfo:this.browserInfo,origin:!!window&&window.location.origin}}beforeRender(t){if(t?.originalAction)return;const e=new g({type:b.rendered,component:this.type,configData:{...t,showPayButton:this.props.showPayButton},...t?.oneClick&&{isStoredPaymentMethod:!0,brand:t.brand}});this.analytics.sendAnalytics(e)}updateStyles(t){return this.componentRef?.updateStyles&&this.componentRef.updateStyles(t),this}setFocusOn(t){return this.componentRef?.setFocusOn&&this.componentRef.setFocusOn(t),this}processBinLookupResponse(t,e=!1){return this.componentRef?.processBinLookupResponse&&this.componentRef.processBinLookupResponse(t,e),this}handleUnsupportedCard(t){return this.componentRef?.handleUnsupportedCard&&this.componentRef.handleUnsupportedCard(t),this}onBinLookup(t){if(!t.isReset){const e=r("supportedBrandsRaw").from(t);this.props.onBinLookup?.(e)}}get storePaymentMethodPayload(){if(this.props.storedPaymentMethodId?.length>0)return{};if(0===this.props.amount?.value)return this.props.enableStoreDetails?{storePaymentMethod:!0}:{};return this.props.showStoreDetailsCheckbox&&void 0!==this.state.storePaymentMethod?{storePaymentMethod:Boolean(this.state.storePaymentMethod)}:{}}get isValid(){return!!this.state.isValid}get icon(){return this.props.icon??this.resources.getImage()(this.props.brand)}get brands(){const{brands:t,brandsConfiguration:e}=this.props;return t?t.map(t=>({icon:e?.[t]?.icon??this.props.modules.resources.getImage()(t),name:t})):[]}get displayName(){return this.props.storedPaymentMethodId?`•••• ${this.props.lastFour}`:this.props.name||P.type}get accessibleName(){return(this.props.name||P.type)+(this.props.storedPaymentMethodId?" "+this.props.i18n.get("creditCard.storedCard.description.ariaLabel").replace("%@",this.props.lastFour):"")}get browserInfo(){return o()}renderCardInput(o=!0){return t(e,{setComponentRef:this.setComponentRef,...this.props,...this.state,billingAddressMode:this.props.billingAddressMode,onSubmitAnalytics:this.submitAnalytics,onChange:this.setState,onSubmit:this.submit,handleKeyDown:this.handleKeyDown,payButton:this.payButton,onBrand:this.onBrand,onBinValue:this.onBinValue,brand:this.props.brand,brandsIcons:this.brands,isPayButtonPrimaryVariant:o,resources:this.resources,onFocus:this.onFocus,onBlur:this.onBlur,onConfigSuccess:this.onConfigSuccess})}componentToRender(){return t(d,{configuration:this.props.clickToPayConfiguration,clickToPayService:this.clickToPayService,isStandaloneComponent:!1,setClickToPayRef:this.setClickToPayRef,onSetStatus:this.setElementStatus,onSubmit:this.handleClickToPaySubmit,onError:this.handleError},t=>this.renderCardInput(t))}constructor(e,o){super(e,o),C(this,"clickToPayService",void 0),C(this,"componentRef",void 0),C(this,"clickToPayRef",null),C(this,"setClickToPayRef",t=>{this.clickToPayRef=t}),C(this,"onBrand",t=>{this.props.onBrand?.(t)}),C(this,"handleClickToPaySubmit",t=>{this.setState({data:{...t},valid:{},errors:{},isValid:!0}),this.submit()}),C(this,"onConfigSuccess",t=>{const e=new g({component:this.type,type:b.configured});this.submitAnalytics(e),this.props.onConfigSuccess?.(t)}),C(this,"onFocus",t=>{const e=new g({component:this.type,type:b.focus,target:n(t.fieldType)});this.submitAnalytics(e),i(t.fieldType)?this.props.onFocus?.(t.event):this.props.onFocus?.(t)}),C(this,"onBlur",t=>{const e=new g({component:this.type,type:b.unfocus,target:n(t.fieldType)});this.submitAnalytics(e),i(t.fieldType)?this.props.onBlur?.(t.event):this.props.onBlur?.(t)}),C(this,"onBinValue",s(this)),C(this,"payButton",e=>{const o=0===this.props.amount?.value,s=this.props.storedPaymentMethodId?.length>0;return t(h,{...e,label:o&&!s?this.props.i18n.get("payButton.saveDetails"):"",onClick:this.submit,showReview:!!this.props.onReview})}),o&&!o._disableClickToPay&&"prepaid"!==this.props.fundingSource&&(this.clickToPayService=c(this.props.configuration,this.props.clickToPayConfiguration,this.props.environment,this.analytics),this.clickToPayService?.initialize())}}C(P,"type",l.scheme),C(P,"defaultProps",{showFormInstruction:!0,_disableClickToPay:!1,doBinLookup:!0,...r(["type","setComponentRef"]).from(f)});export{P as CardElement,P as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import e from"./components/CardInput/CardInput.js";import o from"../../utils/browserInfo.js";import{triggerBinLookUp as s}from"../internal/SecuredFields/binLookup/triggerBinLookUp.js";import{fieldTypeToSnakeCase as n,isSecuredField as i}from"../internal/SecuredFields/utils.js";import{reject as r,notFalsy as a}from"../../utils/commonUtils.js";import{shouldIncludeInstallmentsInPaymentData as p}from"./components/CardInput/utils.js";import c from"../internal/ClickToPay/services/create-clicktopay-service.js";import d from"./components/ClickToPayWrapper.js";import{TxVariants as l}from"../tx-variants.js";import{UIElement as u}from"../internal/UIElement/UIElement.js";import h from"../internal/PayButton/PayButton.js";import m,{IMPLEMENTATION_ERROR as y}from"../../core/Errors/AdyenCheckoutError.js";import f from"./components/CardInput/defaultProps.js";import{AnalyticsInfoEvent as g,InfoEventType as b}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function P(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class C extends u{setStatus(t){return this.componentRef?.setStatus&&this.componentRef.setStatus(t),this.clickToPayRef?.setStatus&&this.clickToPayRef.setStatus(t),this}getPaymentMethodConfigFromResponse(t){return t?.fundingSource?this.core.paymentMethodsResponse?.findByFundingSource(t.type,t.fundingSource):super.getPaymentMethodConfigFromResponse(t)}formatProps(t){const e=t.session?.configuration?.enableStoreDetails??t.enableStoreDetails,o=!(0===t.amount?.value)&&e,s=t.storedPaymentMethodId||t.id,n=s&&t?.supportedShopperInteractions?.includes("Ecommerce");if(s&&!n)throw new m(y,"You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions");const i=t.installmentOptions;t.session&&a(i)&&console.warn("WARNING: You have defined installments configuration on the Card component, but you are using a /sessions integration.\nWith this integration, installments configuration must be defined when you create the session. Any configuration defined elsewhere will be ignored.\n\n");const r=t.session?t.session?.configuration?.installmentOptions??f.installmentOptions:i;return{...t,holderNameRequired:!!t.hasHolderName&&t.holderNameRequired,hasCVC:!(t.brand&&"bcmc"===t.brand||t.hideCVC),billingAddressRequired:!t.storedPaymentMethodId&&t.billingAddressRequired,billingAddressMode:t.onAddressLookup?f.billingAddressMode:t.billingAddressMode,brand:t.brand??l.card,countryCode:t.countryCode?t.countryCode.toLowerCase():null,configuration:{...t.configuration,socialSecurityNumberMode:t.configuration?.socialSecurityNumberMode??"auto"},brandsConfiguration:t.brandsConfiguration||t.configuration?.brandsConfiguration||{},icon:t.icon||t.configuration?.icon,installmentOptions:r,enableStoreDetails:e,showStoreDetailsCheckbox:o,clickToPayConfiguration:{...t.clickToPayConfiguration,disableOtpAutoFocus:t.clickToPayConfiguration?.disableOtpAutoFocus||!1,shopperEmail:t.clickToPayConfiguration?.shopperEmail||this.core.options?.session?.shopperEmail,telephoneNumber:t.clickToPayConfiguration?.telephoneNumber||this.core.options?.session?.telephoneNumber,locale:t.clickToPayConfiguration?.locale||t.i18n?.locale?.replace("-","_")},...s&&{storedPaymentMethodId:s}}}formatData(){const t=this.state.selectedBrandValue;return{paymentMethod:{type:C.type,...this.state.data,...this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId,holderName:this.props.holderName??""},...t&&{brand:t},...this.props.fundingSource&&{fundingSource:this.props.fundingSource},...this.state.fastlaneData&&{fastlaneData:btoa(JSON.stringify(this.state.fastlaneData))}},...this.state.billingAddress&&{billingAddress:this.state.billingAddress},...this.state.socialSecurityNumber&&{socialSecurityNumber:this.state.socialSecurityNumber},...this.storePaymentMethodPayload,...p(this.state.installments)&&{installments:this.state.installments},browserInfo:this.browserInfo,origin:!!window&&window.location.origin}}beforeRender(t){if(t?.originalAction)return;const e=new g({type:b.rendered,component:this.type,configData:{...t,showPayButton:this.props.showPayButton},...t?.oneClick&&{isStoredPaymentMethod:!0,brand:t.brand}});this.analytics.sendAnalytics(e)}updateStyles(t){return this.componentRef?.updateStyles&&this.componentRef.updateStyles(t),this}setFocusOn(t){return this.componentRef?.setFocusOn&&this.componentRef.setFocusOn(t),this}processBinLookupResponse(t,e=!1){return this.componentRef?.processBinLookupResponse&&this.componentRef.processBinLookupResponse(t,e),this}handleUnsupportedCard(t){return this.componentRef?.handleUnsupportedCard&&this.componentRef.handleUnsupportedCard(t),this}onBinLookup(t){if(!t.isReset){const e=r("supportedBrandsRaw").from(t);this.props.onBinLookup?.(e)}}get storePaymentMethodPayload(){if(this.props.storedPaymentMethodId?.length>0)return{};if(0===this.props.amount?.value)return this.props.enableStoreDetails?{storePaymentMethod:!0}:{};return this.props.showStoreDetailsCheckbox&&void 0!==this.state.storePaymentMethod?{storePaymentMethod:Boolean(this.state.storePaymentMethod)}:{}}get isValid(){return!!this.state.isValid}get icon(){return this.props.icon??this.resources.getImage()(this.props.brand)}get brands(){const{brands:t,brandsConfiguration:e}=this.props;return t?t.map(t=>({icon:e?.[t]?.icon??this.props.modules.resources.getImage()(t),name:t})):[]}get displayName(){return this.props.storedPaymentMethodId?`•••• ${this.props.lastFour}`:this.props.name||C.type}get accessibleName(){return(this.props.name||C.type)+(this.props.storedPaymentMethodId?" "+this.props.i18n.get("creditCard.storedCard.description.ariaLabel").replace("%@",this.props.lastFour):"")}get browserInfo(){return o()}renderCardInput(o=!0){return t(e,{setComponentRef:this.setComponentRef,...this.props,...this.state,billingAddressMode:this.props.billingAddressMode,onSubmitAnalytics:this.submitAnalytics,onChange:this.setState,onSubmit:this.submit,handleKeyDown:this.handleKeyDown,payButton:this.payButton,onBrand:this.onBrand,onBinValue:this.onBinValue,brand:this.props.brand,brandsIcons:this.brands,isPayButtonPrimaryVariant:o,resources:this.resources,onFocus:this.onFocus,onBlur:this.onBlur,onConfigSuccess:this.onConfigSuccess})}componentToRender(){return t(d,{configuration:this.props.clickToPayConfiguration,clickToPayService:this.clickToPayService,isStandaloneComponent:!1,setClickToPayRef:this.setClickToPayRef,onSetStatus:this.setElementStatus,onSubmit:this.handleClickToPaySubmit,onError:this.handleError},t=>this.renderCardInput(t))}constructor(e,o){super(e,o),P(this,"clickToPayService",void 0),P(this,"clickToPayRef",null),P(this,"setClickToPayRef",t=>{this.clickToPayRef=t}),P(this,"onBrand",t=>{this.props.onBrand?.(t)}),P(this,"handleClickToPaySubmit",t=>{this.setState({data:{...t},valid:{},errors:{},isValid:!0}),this.submit()}),P(this,"onConfigSuccess",t=>{const e=new g({component:this.type,type:b.configured});this.submitAnalytics(e),this.props.onConfigSuccess?.(t)}),P(this,"onFocus",t=>{const e=new g({component:this.type,type:b.focus,target:n(t.fieldType)});this.submitAnalytics(e),i(t.fieldType)?this.props.onFocus?.(t.event):this.props.onFocus?.(t)}),P(this,"onBlur",t=>{const e=new g({component:this.type,type:b.unfocus,target:n(t.fieldType)});this.submitAnalytics(e),i(t.fieldType)?this.props.onBlur?.(t.event):this.props.onBlur?.(t)}),P(this,"onBinValue",s(this)),P(this,"payButton",e=>{const o=0===this.props.amount?.value,s=this.props.storedPaymentMethodId?.length>0;return t(h,{...e,showPayButton:this.props.showPayButton,disclaimerMessage:this.props.disclaimerMessage,label:o&&!s?this.props.i18n.get("payButton.saveDetails"):"",onClick:this.submit,showReview:!!this.props.onReview})}),o&&!o._disableClickToPay&&"prepaid"!==this.props.fundingSource&&(this.clickToPayService=c(this.props.configuration,this.props.clickToPayConfiguration,this.props.environment,this.analytics),this.clickToPayService?.initialize())}}P(C,"type",l.scheme),P(C,"defaultProps",{showFormInstruction:!0,_disableClickToPay:!1,doBinLookup:!0,...r(["type","setComponentRef"]).from(f)});export{C as CardElement,C as default};
2
2
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { h } from 'preact';\nimport CardInput from './components/CardInput';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport { BinLookupResponse, CardElementData, CardConfiguration } from './types';\nimport { triggerBinLookUp } from '../internal/SecuredFields/binLookup/triggerBinLookUp';\nimport {\n CardBinLookupData,\n CardBrandData,\n CardConfigSuccessData,\n CardErrorData,\n CardFocusData,\n StylesObject\n} from '../internal/SecuredFields/lib/types';\nimport { fieldTypeToSnakeCase, isSecuredField } from '../internal/SecuredFields/utils';\nimport { notFalsy, reject } from '../../utils/commonUtils';\nimport { shouldIncludeInstallmentsInPaymentData } from './components/CardInput/utils';\nimport createClickToPayService from '../internal/ClickToPay/services/create-clicktopay-service';\nimport { ClickToPayCheckoutPayload, IClickToPayService } from '../internal/ClickToPay/services/types';\nimport ClickToPayWrapper from './components/ClickToPayWrapper';\nimport { ComponentFocusObject, PaymentMethodBrand } from '../../types/global-types';\nimport { TxVariants } from '../tx-variants';\nimport type { ComponentMethodsRef, UIElementStatus } from '../internal/UIElement/types';\nimport UIElement from '../internal/UIElement';\nimport PayButton from '../internal/PayButton';\nimport type { ICore } from '../../core/types';\nimport AdyenCheckoutError, { IMPLEMENTATION_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport CardInputDefaultProps from './components/CardInput/defaultProps';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\nimport { AnalyticsInfoEvent, InfoEventType, UiTarget } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { InstallmentOptions } from './components/CardInput/components/Installments/Installments';\nimport { AddressModeOptions, CardInputRef } from './components/CardInput/types';\n\nexport class CardElement extends UIElement<CardConfiguration> {\n public static readonly type: TxVariants = TxVariants.scheme;\n\n private readonly clickToPayService: IClickToPayService | null;\n\n protected componentRef: CardInputRef | undefined;\n\n /**\n * Reference to the 'ClickToPayComponent'\n */\n private clickToPayRef: ComponentMethodsRef | null = null;\n\n constructor(checkout: ICore, props?: CardConfiguration) {\n super(checkout, props);\n\n if (props && !props._disableClickToPay && this.props.fundingSource !== 'prepaid') {\n this.clickToPayService = createClickToPayService(\n this.props.configuration,\n this.props.clickToPayConfiguration,\n this.props.environment,\n this.analytics\n );\n\n void this.clickToPayService?.initialize();\n }\n }\n\n protected static readonly defaultProps = {\n showFormInstruction: true,\n _disableClickToPay: false,\n doBinLookup: true,\n // Merge most of CardInput's defaultProps\n ...reject(['type', 'setComponentRef']).from(CardInputDefaultProps)\n };\n\n public setStatus(status: UIElementStatus): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status);\n }\n if (this.clickToPayRef?.setStatus) {\n this.clickToPayRef.setStatus(status);\n }\n return this;\n }\n\n private readonly setClickToPayRef = (ref: ComponentMethodsRef) => {\n this.clickToPayRef = ref;\n };\n\n // This is the most self contained way of handling funding source matching\n // Alternatives would be to override getPaymentMethodConfigFromResponse and change it's signature\n protected override getPaymentMethodConfigFromResponse(componentProps: CardConfiguration) {\n if (componentProps?.fundingSource) {\n return this.core.paymentMethodsResponse?.findByFundingSource(componentProps.type, componentProps.fundingSource);\n }\n\n return super.getPaymentMethodConfigFromResponse(componentProps);\n }\n\n formatProps(props: CardConfiguration): CardConfiguration {\n // The value from a session should be used, before falling back to the merchant configuration\n const enableStoreDetails = props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails;\n\n const isZeroAuth = props.amount?.value === 0;\n const showStoreDetailsCheckbox = isZeroAuth ? false : enableStoreDetails;\n\n const storedCardID = props.storedPaymentMethodId || props.id; // check if we've been passed a (checkout) processed storedCard or one that merchant has pulled from the PMs response\n const isEcommerceStoredCard = storedCardID && props?.supportedShopperInteractions?.includes('Ecommerce'); // If we have a storedCard does it support Ecommerce (it might not if the merchant has pulled it from the PMs response)\n\n // If we have a storedPM but it doesn't support Ecommerce - we can't make a storedCard component from it\n if (storedCardID && !isEcommerceStoredCard) {\n // TODO - Decide if an error is too severe? Would a console.warning suffice?\n throw new AdyenCheckoutError(\n IMPLEMENTATION_ERROR,\n 'You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions'\n );\n }\n\n // Take the configuration set on the card component - which is either merchant defined or default (empty object)\n // @ts-ignore 'installmentOptions' is optional on CardConfiguration (the merchant-facing type), but by this point\n // UIElement.buildElementProps has already merged CardInputDefaultProps.installmentOptions ({}) into props\n // before formatProps() is called, so the value is always defined here.\n const merchantInstallmentOptions: InstallmentOptions = props.installmentOptions;\n\n if (props.session && notFalsy(merchantInstallmentOptions)) {\n console.warn(\n 'WARNING: You have defined installments configuration on the Card component, but you are using a /sessions integration.\\nWith this integration, installments configuration must be defined when you create the session. Any configuration defined elsewhere will be ignored.\\n\\n'\n );\n }\n\n // In a session scenario, only the session's own installments configuration is used; otherwise fall back to the merchant configuration / default\n const shownInstallmentOptions: InstallmentOptions = props.session\n ? (props.session?.configuration?.installmentOptions ?? CardInputDefaultProps.installmentOptions)\n : merchantInstallmentOptions;\n\n return {\n ...props,\n // Mismatch between hasHolderName & holderNameRequired which can mean card can never be valid\n holderNameRequired: !props.hasHolderName ? false : props.holderNameRequired,\n // False for *stored* BCMC cards & if merchant explicitly wants to hide the CVC field\n hasCVC: !((props.brand && props.brand === 'bcmc') || props.hideCVC),\n // billingAddressRequired only available for non-stored cards\n billingAddressRequired: props.storedPaymentMethodId ? false : props.billingAddressRequired,\n // edge case where merchant has defined both an onAddressLookup callback AND set billingAddressMode: 'partial' - which leads to some strange behaviour in the address UI\n billingAddressMode: props.onAddressLookup ? CardInputDefaultProps.billingAddressMode : props.billingAddressMode,\n /** props.brand will be specified in the case of a StoredCard or a Bancontact component, for a regular Card we default it to 'card' */\n brand: props.brand ?? TxVariants.card,\n countryCode: props.countryCode ? props.countryCode.toLowerCase() : null,\n // Required for transition period (until configuration object becomes the norm)\n // - if merchant has defined value directly in props, use this instead\n configuration: {\n ...props.configuration,\n socialSecurityNumberMode: props.configuration?.socialSecurityNumberMode ?? 'auto'\n },\n brandsConfiguration: props.brandsConfiguration || props.configuration?.brandsConfiguration || {},\n icon: props.icon || props.configuration?.icon,\n installmentOptions: shownInstallmentOptions,\n enableStoreDetails,\n showStoreDetailsCheckbox,\n /**\n * Click to Pay configuration\n * - If email is set explicitly in the configuration, then it can override the one used in the session creation\n */\n clickToPayConfiguration: {\n ...props.clickToPayConfiguration,\n disableOtpAutoFocus: props.clickToPayConfiguration?.disableOtpAutoFocus || false,\n shopperEmail: props.clickToPayConfiguration?.shopperEmail || this.core.options?.session?.shopperEmail,\n telephoneNumber: props.clickToPayConfiguration?.telephoneNumber || this.core.options?.session?.telephoneNumber,\n locale: props.clickToPayConfiguration?.locale || props.i18n?.locale?.replace('-', '_')\n },\n ...(storedCardID && { storedPaymentMethodId: storedCardID })\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): CardElementData {\n /**\n * this.state.selectedBrandValue will be set when:\n * - /binLookup detects a single brand,\n * - when /binLookup detects a dual-branded card and the shopper makes a brand selection\n * - or, in the case of a storedCard\n */\n const cardBrand = this.state.selectedBrandValue;\n\n return {\n paymentMethod: {\n type: CardElement.type,\n ...this.state.data,\n ...(this.props.storedPaymentMethodId && {\n storedPaymentMethodId: this.props.storedPaymentMethodId,\n holderName: this.props.holderName ?? ''\n }),\n ...(cardBrand && { brand: cardBrand }),\n ...(this.props.fundingSource && { fundingSource: this.props.fundingSource }),\n ...(this.state.fastlaneData && { fastlaneData: btoa(JSON.stringify(this.state.fastlaneData)) })\n },\n ...(this.state.billingAddress && { billingAddress: this.state.billingAddress }),\n ...(this.state.socialSecurityNumber && { socialSecurityNumber: this.state.socialSecurityNumber }),\n ...this.storePaymentMethodPayload,\n ...(shouldIncludeInstallmentsInPaymentData(this.state.installments) && { installments: this.state.installments }),\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin\n };\n }\n\n protected override beforeRender(configSetByMerchant?: CardConfiguration): void {\n // We don't send 'rendered' events when rendering actions\n if (configSetByMerchant?.originalAction) {\n return;\n }\n\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.oneClick && {\n isStoredPaymentMethod: true,\n brand: configSetByMerchant.brand\n })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n updateStyles(stylesObj: StylesObject) {\n if (this.componentRef?.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName: string) {\n if (this.componentRef?.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n public onBrand = (event: CardBrandData) => {\n this.props.onBrand?.(event);\n };\n\n processBinLookupResponse(binLookupResponse: BinLookupResponse | null, isReset = false) {\n if (this.componentRef?.processBinLookupResponse) this.componentRef.processBinLookupResponse(binLookupResponse, isReset);\n return this;\n }\n\n handleUnsupportedCard(errObj: CardErrorData) {\n if (this.componentRef?.handleUnsupportedCard) this.componentRef.handleUnsupportedCard(errObj);\n return this;\n }\n\n private readonly handleClickToPaySubmit = (payload: ClickToPayCheckoutPayload) => {\n this.setState({ data: { ...payload }, valid: {}, errors: {}, isValid: true });\n this.submit();\n };\n\n onBinLookup(obj: CardBinLookupData) {\n // Handler for regular card comp doesn't need this 'raw' data or to know about 'resets'\n if (!obj.isReset) {\n const nuObj = reject('supportedBrandsRaw').from(obj);\n this.props.onBinLookup?.(nuObj);\n }\n }\n\n private readonly onConfigSuccess = (obj: CardConfigSuccessData) => {\n const event = new AnalyticsInfoEvent({ component: this.type, type: InfoEventType.configured });\n this.submitAnalytics(event);\n\n this.props.onConfigSuccess?.(obj);\n };\n\n private readonly onFocus = (obj: ComponentFocusObject) => {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.focus,\n target: fieldTypeToSnakeCase(obj.fieldType) as UiTarget\n });\n this.submitAnalytics(event);\n\n // Call merchant defined callback\n if (isSecuredField(obj.fieldType)) {\n this.props.onFocus?.(obj.event as CardFocusData);\n } else {\n this.props.onFocus?.(obj);\n }\n };\n\n private readonly onBlur = (obj: ComponentFocusObject) => {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.unfocus,\n target: fieldTypeToSnakeCase(obj.fieldType) as UiTarget\n });\n this.submitAnalytics(event);\n\n // Call merchant defined callback\n if (isSecuredField(obj.fieldType)) {\n this.props.onBlur?.(obj.event as CardFocusData);\n } else {\n this.props.onBlur?.(obj);\n }\n };\n\n public onBinValue = triggerBinLookUp(this);\n\n get storePaymentMethodPayload() {\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n if (isStoredCard) {\n return {};\n }\n\n /**\n * For regular card, zero auth payments, we store the payment method, *if* the configuration says we should:\n * - For sessions, this means if the session has been created with storePaymentMethodMode: 'askForConsent'\n * - For the advanced flow, this means if the merchant has still set enableStoreDetails: true\n *\n * What we are doing is.. if for a normal payment we would show the \"Save for my next payment\" checkbox,\n * for a zero-auth payment we effectively click the checkbox on behalf of the shopper.\n */\n const isZeroAuth = this.props.amount?.value === 0;\n if (isZeroAuth) {\n return this.props.enableStoreDetails ? { storePaymentMethod: true } : {};\n }\n\n // For regular card, non-zero auth payments, we store the payment method based on the checkbox value.\n const includeStorePaymentMethod = this.props.showStoreDetailsCheckbox && typeof this.state.storePaymentMethod !== 'undefined';\n return includeStorePaymentMethod ? { storePaymentMethod: Boolean(this.state.storePaymentMethod) } : {};\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.icon ?? this.resources.getImage()(this.props.brand);\n }\n\n get brands(): PaymentMethodBrand[] {\n const { brands, brandsConfiguration } = this.props;\n if (brands) {\n return brands.map(brand => {\n const brandIcon = brandsConfiguration?.[brand]?.icon ?? this.props.modules.resources.getImage()(brand);\n return { icon: brandIcon, name: brand };\n });\n }\n\n return [];\n }\n\n get displayName(): string {\n if (this.props.storedPaymentMethodId) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name || CardElement.type;\n }\n\n get accessibleName(): string {\n // Use display name, unless it's a stored payment method, there inform user\n return (\n (this.props.name || CardElement.type) +\n (this.props.storedPaymentMethodId\n ? ' ' + this.props.i18n.get('creditCard.storedCard.description.ariaLabel').replace('%@', this.props.lastFour)\n : '')\n );\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n\n protected override payButton = (props: PayButtonProps): h.JSX.Element => {\n const isZeroAuth = this.props.amount?.value === 0;\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n return (\n <PayButton\n {...props}\n label={isZeroAuth && !isStoredCard ? this.props.i18n.get('payButton.saveDetails') : ''}\n onClick={this.submit}\n showReview={!!this.props.onReview}\n />\n );\n };\n\n private renderCardInput(isCardPrimaryInput = true): h.JSX.Element {\n return (\n <CardInput\n setComponentRef={this.setComponentRef}\n {...this.props}\n {...this.state}\n billingAddressMode={this.props.billingAddressMode as AddressModeOptions}\n onSubmitAnalytics={this.submitAnalytics}\n onChange={this.setState}\n onSubmit={this.submit}\n handleKeyDown={this.handleKeyDown}\n payButton={this.payButton}\n onBrand={this.onBrand}\n onBinValue={this.onBinValue}\n brand={this.props.brand}\n brandsIcons={this.brands}\n isPayButtonPrimaryVariant={isCardPrimaryInput}\n resources={this.resources}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onConfigSuccess={this.onConfigSuccess}\n />\n );\n }\n\n protected override componentToRender(): h.JSX.Element {\n return (\n <ClickToPayWrapper\n configuration={this.props.clickToPayConfiguration}\n clickToPayService={this.clickToPayService}\n isStandaloneComponent={false}\n setClickToPayRef={this.setClickToPayRef}\n onSetStatus={this.setElementStatus}\n onSubmit={this.handleClickToPaySubmit}\n onError={this.handleError}\n >\n {isCardPrimaryInput => this.renderCardInput(isCardPrimaryInput)}\n </ClickToPayWrapper>\n );\n }\n}\n\nexport default CardElement;\n"],"names":["CardElement","UIElement","setStatus","status","this","componentRef","clickToPayRef","getPaymentMethodConfigFromResponse","componentProps","fundingSource","core","paymentMethodsResponse","findByFundingSource","type","super","formatProps","props","enableStoreDetails","session","configuration","showStoreDetailsCheckbox","amount","value","storedCardID","storedPaymentMethodId","id","isEcommerceStoredCard","supportedShopperInteractions","includes","AdyenCheckoutError","IMPLEMENTATION_ERROR","merchantInstallmentOptions","installmentOptions","notFalsy","console","warn","shownInstallmentOptions","CardInputDefaultProps","holderNameRequired","hasHolderName","hasCVC","brand","hideCVC","billingAddressRequired","billingAddressMode","onAddressLookup","TxVariants","card","countryCode","toLowerCase","socialSecurityNumberMode","brandsConfiguration","icon","clickToPayConfiguration","disableOtpAutoFocus","shopperEmail","options","telephoneNumber","locale","i18n","replace","formatData","cardBrand","state","selectedBrandValue","paymentMethod","data","holderName","fastlaneData","btoa","JSON","stringify","billingAddress","socialSecurityNumber","storePaymentMethodPayload","shouldIncludeInstallmentsInPaymentData","installments","browserInfo","origin","window","location","beforeRender","configSetByMerchant","originalAction","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","oneClick","isStoredPaymentMethod","analytics","sendAnalytics","updateStyles","stylesObj","setFocusOn","fieldName","processBinLookupResponse","binLookupResponse","isReset","handleUnsupportedCard","errObj","onBinLookup","obj","nuObj","reject","from","length","storePaymentMethod","Boolean","isValid","resources","getImage","brands","map","modules","name","displayName","lastFour","accessibleName","get","collectBrowserInfo","renderCardInput","isCardPrimaryInput","h","CardInput","setComponentRef","onSubmitAnalytics","submitAnalytics","onChange","setState","onSubmit","submit","handleKeyDown","payButton","onBrand","onBinValue","brandsIcons","isPayButtonPrimaryVariant","onFocus","onBlur","onConfigSuccess","componentToRender","ClickToPayWrapper","clickToPayService","isStandaloneComponent","setClickToPayRef","onSetStatus","setElementStatus","handleClickToPaySubmit","onError","handleError","constructor","checkout","_define_property","ref","payload","valid","errors","configured","focus","target","fieldTypeToSnakeCase","fieldType","isSecuredField","unfocus","triggerBinLookUp","isZeroAuth","isStoredCard","PayButton","label","onClick","showReview","onReview","_disableClickToPay","createClickToPayService","environment","initialize","scheme","defaultProps","showFormInstruction","doBinLookup"],"mappings":"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"}
1
+ {"version":3,"file":"Card.js","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { h } from 'preact';\nimport CardInput from './components/CardInput';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport { BinLookupResponse, CardElementData, CardConfiguration } from './types';\nimport { triggerBinLookUp } from '../internal/SecuredFields/binLookup/triggerBinLookUp';\nimport {\n CardBinLookupData,\n CardBrandData,\n CardConfigSuccessData,\n CardErrorData,\n CardFocusData,\n StylesObject\n} from '../internal/SecuredFields/lib/types';\nimport { fieldTypeToSnakeCase, isSecuredField } from '../internal/SecuredFields/utils';\nimport { notFalsy, reject } from '../../utils/commonUtils';\nimport { shouldIncludeInstallmentsInPaymentData } from './components/CardInput/utils';\nimport createClickToPayService from '../internal/ClickToPay/services/create-clicktopay-service';\nimport { ClickToPayCheckoutPayload, IClickToPayService } from '../internal/ClickToPay/services/types';\nimport ClickToPayWrapper from './components/ClickToPayWrapper';\nimport { ComponentFocusObject, PaymentMethodBrand } from '../../types/global-types';\nimport { TxVariants } from '../tx-variants';\nimport type { ComponentMethodsRef, UIElementStatus } from '../internal/UIElement/types';\nimport UIElement from '../internal/UIElement';\nimport PayButton from '../internal/PayButton';\nimport type { ICore } from '../../core/types';\nimport AdyenCheckoutError, { IMPLEMENTATION_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport CardInputDefaultProps from './components/CardInput/defaultProps';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\nimport { AnalyticsInfoEvent, InfoEventType, UiTarget } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { InstallmentOptions } from './components/CardInput/components/Installments/Installments';\nimport { AddressModeOptions, CardInputRef } from './components/CardInput/types';\n\nexport class CardElement extends UIElement<CardConfiguration> {\n public static readonly type: TxVariants = TxVariants.scheme;\n\n private readonly clickToPayService: IClickToPayService | null;\n\n declare protected componentRef: CardInputRef | undefined;\n\n /**\n * Reference to the 'ClickToPayComponent'\n */\n private clickToPayRef: ComponentMethodsRef | null = null;\n\n constructor(checkout: ICore, props?: CardConfiguration) {\n super(checkout, props);\n\n if (props && !props._disableClickToPay && this.props.fundingSource !== 'prepaid') {\n this.clickToPayService = createClickToPayService(\n this.props.configuration,\n this.props.clickToPayConfiguration,\n this.props.environment,\n this.analytics\n );\n\n void this.clickToPayService?.initialize();\n }\n }\n\n protected static readonly defaultProps = {\n showFormInstruction: true,\n _disableClickToPay: false,\n doBinLookup: true,\n // Merge most of CardInput's defaultProps\n ...reject(['type', 'setComponentRef']).from(CardInputDefaultProps)\n };\n\n public setStatus(status: UIElementStatus): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status);\n }\n if (this.clickToPayRef?.setStatus) {\n this.clickToPayRef.setStatus(status);\n }\n return this;\n }\n\n private readonly setClickToPayRef = (ref: ComponentMethodsRef) => {\n this.clickToPayRef = ref;\n };\n\n // This is the most self contained way of handling funding source matching\n // Alternatives would be to override getPaymentMethodConfigFromResponse and change it's signature\n protected override getPaymentMethodConfigFromResponse(componentProps: CardConfiguration) {\n if (componentProps?.fundingSource) {\n return this.core.paymentMethodsResponse?.findByFundingSource(componentProps.type, componentProps.fundingSource);\n }\n\n return super.getPaymentMethodConfigFromResponse(componentProps);\n }\n\n formatProps(props: CardConfiguration): CardConfiguration {\n // The value from a session should be used, before falling back to the merchant configuration\n const enableStoreDetails = props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails;\n\n const isZeroAuth = props.amount?.value === 0;\n const showStoreDetailsCheckbox = isZeroAuth ? false : enableStoreDetails;\n\n const storedCardID = props.storedPaymentMethodId || props.id; // check if we've been passed a (checkout) processed storedCard or one that merchant has pulled from the PMs response\n const isEcommerceStoredCard = storedCardID && props?.supportedShopperInteractions?.includes('Ecommerce'); // If we have a storedCard does it support Ecommerce (it might not if the merchant has pulled it from the PMs response)\n\n // If we have a storedPM but it doesn't support Ecommerce - we can't make a storedCard component from it\n if (storedCardID && !isEcommerceStoredCard) {\n // TODO - Decide if an error is too severe? Would a console.warning suffice?\n throw new AdyenCheckoutError(\n IMPLEMENTATION_ERROR,\n 'You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions'\n );\n }\n\n // Take the configuration set on the card component - which is either merchant defined or default (empty object)\n // @ts-ignore 'installmentOptions' is optional on CardConfiguration (the merchant-facing type), but by this point\n // UIElement.buildElementProps has already merged CardInputDefaultProps.installmentOptions ({}) into props\n // before formatProps() is called, so the value is always defined here.\n const merchantInstallmentOptions: InstallmentOptions = props.installmentOptions;\n\n if (props.session && notFalsy(merchantInstallmentOptions)) {\n console.warn(\n 'WARNING: You have defined installments configuration on the Card component, but you are using a /sessions integration.\\nWith this integration, installments configuration must be defined when you create the session. Any configuration defined elsewhere will be ignored.\\n\\n'\n );\n }\n\n // In a session scenario, only the session's own installments configuration is used; otherwise fall back to the merchant configuration / default\n const shownInstallmentOptions: InstallmentOptions = props.session\n ? (props.session?.configuration?.installmentOptions ?? CardInputDefaultProps.installmentOptions)\n : merchantInstallmentOptions;\n\n return {\n ...props,\n // Mismatch between hasHolderName & holderNameRequired which can mean card can never be valid\n holderNameRequired: !props.hasHolderName ? false : props.holderNameRequired,\n // False for *stored* BCMC cards & if merchant explicitly wants to hide the CVC field\n hasCVC: !((props.brand && props.brand === 'bcmc') || props.hideCVC),\n // billingAddressRequired only available for non-stored cards\n billingAddressRequired: props.storedPaymentMethodId ? false : props.billingAddressRequired,\n // edge case where merchant has defined both an onAddressLookup callback AND set billingAddressMode: 'partial' - which leads to some strange behaviour in the address UI\n billingAddressMode: props.onAddressLookup ? CardInputDefaultProps.billingAddressMode : props.billingAddressMode,\n /** props.brand will be specified in the case of a StoredCard or a Bancontact component, for a regular Card we default it to 'card' */\n brand: props.brand ?? TxVariants.card,\n countryCode: props.countryCode ? props.countryCode.toLowerCase() : null,\n // Required for transition period (until configuration object becomes the norm)\n // - if merchant has defined value directly in props, use this instead\n configuration: {\n ...props.configuration,\n socialSecurityNumberMode: props.configuration?.socialSecurityNumberMode ?? 'auto'\n },\n brandsConfiguration: props.brandsConfiguration || props.configuration?.brandsConfiguration || {},\n icon: props.icon || props.configuration?.icon,\n installmentOptions: shownInstallmentOptions,\n enableStoreDetails,\n showStoreDetailsCheckbox,\n /**\n * Click to Pay configuration\n * - If email is set explicitly in the configuration, then it can override the one used in the session creation\n */\n clickToPayConfiguration: {\n ...props.clickToPayConfiguration,\n disableOtpAutoFocus: props.clickToPayConfiguration?.disableOtpAutoFocus || false,\n shopperEmail: props.clickToPayConfiguration?.shopperEmail || this.core.options?.session?.shopperEmail,\n telephoneNumber: props.clickToPayConfiguration?.telephoneNumber || this.core.options?.session?.telephoneNumber,\n locale: props.clickToPayConfiguration?.locale || props.i18n?.locale?.replace('-', '_')\n },\n ...(storedCardID && { storedPaymentMethodId: storedCardID })\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): CardElementData {\n /**\n * this.state.selectedBrandValue will be set when:\n * - /binLookup detects a single brand,\n * - when /binLookup detects a dual-branded card and the shopper makes a brand selection\n * - or, in the case of a storedCard\n */\n const cardBrand = this.state.selectedBrandValue;\n\n return {\n paymentMethod: {\n type: CardElement.type,\n ...this.state.data,\n ...(this.props.storedPaymentMethodId && {\n storedPaymentMethodId: this.props.storedPaymentMethodId,\n holderName: this.props.holderName ?? ''\n }),\n ...(cardBrand && { brand: cardBrand }),\n ...(this.props.fundingSource && { fundingSource: this.props.fundingSource }),\n ...(this.state.fastlaneData && { fastlaneData: btoa(JSON.stringify(this.state.fastlaneData)) })\n },\n ...(this.state.billingAddress && { billingAddress: this.state.billingAddress }),\n ...(this.state.socialSecurityNumber && { socialSecurityNumber: this.state.socialSecurityNumber }),\n ...this.storePaymentMethodPayload,\n ...(shouldIncludeInstallmentsInPaymentData(this.state.installments) && { installments: this.state.installments }),\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin\n };\n }\n\n protected override beforeRender(configSetByMerchant?: CardConfiguration): void {\n // We don't send 'rendered' events when rendering actions\n if (configSetByMerchant?.originalAction) {\n return;\n }\n\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.oneClick && {\n isStoredPaymentMethod: true,\n brand: configSetByMerchant.brand\n })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n updateStyles(stylesObj: StylesObject) {\n if (this.componentRef?.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName: string) {\n if (this.componentRef?.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n public onBrand = (event: CardBrandData) => {\n this.props.onBrand?.(event);\n };\n\n processBinLookupResponse(binLookupResponse: BinLookupResponse | null, isReset = false) {\n if (this.componentRef?.processBinLookupResponse) this.componentRef.processBinLookupResponse(binLookupResponse, isReset);\n return this;\n }\n\n handleUnsupportedCard(errObj: CardErrorData) {\n if (this.componentRef?.handleUnsupportedCard) this.componentRef.handleUnsupportedCard(errObj);\n return this;\n }\n\n private readonly handleClickToPaySubmit = (payload: ClickToPayCheckoutPayload) => {\n this.setState({ data: { ...payload }, valid: {}, errors: {}, isValid: true });\n this.submit();\n };\n\n onBinLookup(obj: CardBinLookupData) {\n // Handler for regular card comp doesn't need this 'raw' data or to know about 'resets'\n if (!obj.isReset) {\n const nuObj = reject('supportedBrandsRaw').from(obj);\n this.props.onBinLookup?.(nuObj);\n }\n }\n\n private readonly onConfigSuccess = (obj: CardConfigSuccessData) => {\n const event = new AnalyticsInfoEvent({ component: this.type, type: InfoEventType.configured });\n this.submitAnalytics(event);\n\n this.props.onConfigSuccess?.(obj);\n };\n\n private readonly onFocus = (obj: ComponentFocusObject) => {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.focus,\n target: fieldTypeToSnakeCase(obj.fieldType) as UiTarget\n });\n this.submitAnalytics(event);\n\n // Call merchant defined callback\n if (isSecuredField(obj.fieldType)) {\n this.props.onFocus?.(obj.event as CardFocusData);\n } else {\n this.props.onFocus?.(obj);\n }\n };\n\n private readonly onBlur = (obj: ComponentFocusObject) => {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.unfocus,\n target: fieldTypeToSnakeCase(obj.fieldType) as UiTarget\n });\n this.submitAnalytics(event);\n\n // Call merchant defined callback\n if (isSecuredField(obj.fieldType)) {\n this.props.onBlur?.(obj.event as CardFocusData);\n } else {\n this.props.onBlur?.(obj);\n }\n };\n\n public onBinValue = triggerBinLookUp(this);\n\n get storePaymentMethodPayload() {\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n if (isStoredCard) {\n return {};\n }\n\n /**\n * For regular card, zero auth payments, we store the payment method, *if* the configuration says we should:\n * - For sessions, this means if the session has been created with storePaymentMethodMode: 'askForConsent'\n * - For the advanced flow, this means if the merchant has still set enableStoreDetails: true\n *\n * What we are doing is.. if for a normal payment we would show the \"Save for my next payment\" checkbox,\n * for a zero-auth payment we effectively click the checkbox on behalf of the shopper.\n */\n const isZeroAuth = this.props.amount?.value === 0;\n if (isZeroAuth) {\n return this.props.enableStoreDetails ? { storePaymentMethod: true } : {};\n }\n\n // For regular card, non-zero auth payments, we store the payment method based on the checkbox value.\n const includeStorePaymentMethod = this.props.showStoreDetailsCheckbox && typeof this.state.storePaymentMethod !== 'undefined';\n return includeStorePaymentMethod ? { storePaymentMethod: Boolean(this.state.storePaymentMethod) } : {};\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.icon ?? this.resources.getImage()(this.props.brand);\n }\n\n get brands(): PaymentMethodBrand[] {\n const { brands, brandsConfiguration } = this.props;\n if (brands) {\n return brands.map(brand => {\n const brandIcon = brandsConfiguration?.[brand]?.icon ?? this.props.modules.resources.getImage()(brand);\n return { icon: brandIcon, name: brand };\n });\n }\n\n return [];\n }\n\n get displayName(): string {\n if (this.props.storedPaymentMethodId) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name || CardElement.type;\n }\n\n get accessibleName(): string {\n // Use display name, unless it's a stored payment method, there inform user\n return (\n (this.props.name || CardElement.type) +\n (this.props.storedPaymentMethodId\n ? ' ' + this.props.i18n.get('creditCard.storedCard.description.ariaLabel').replace('%@', this.props.lastFour)\n : '')\n );\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n\n protected override payButton = (props: PayButtonProps): h.JSX.Element => {\n const isZeroAuth = this.props.amount?.value === 0;\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n return (\n <PayButton\n {...props}\n showPayButton={this.props.showPayButton}\n disclaimerMessage={this.props.disclaimerMessage}\n label={isZeroAuth && !isStoredCard ? this.props.i18n.get('payButton.saveDetails') : ''}\n onClick={this.submit}\n showReview={!!this.props.onReview}\n />\n );\n };\n\n private renderCardInput(isCardPrimaryInput = true): h.JSX.Element {\n return (\n <CardInput\n setComponentRef={this.setComponentRef}\n {...this.props}\n {...this.state}\n billingAddressMode={this.props.billingAddressMode as AddressModeOptions}\n onSubmitAnalytics={this.submitAnalytics}\n onChange={this.setState}\n onSubmit={this.submit}\n handleKeyDown={this.handleKeyDown}\n payButton={this.payButton}\n onBrand={this.onBrand}\n onBinValue={this.onBinValue}\n brand={this.props.brand}\n brandsIcons={this.brands}\n isPayButtonPrimaryVariant={isCardPrimaryInput}\n resources={this.resources}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onConfigSuccess={this.onConfigSuccess}\n />\n );\n }\n\n protected override componentToRender(): h.JSX.Element {\n return (\n <ClickToPayWrapper\n configuration={this.props.clickToPayConfiguration}\n clickToPayService={this.clickToPayService}\n isStandaloneComponent={false}\n setClickToPayRef={this.setClickToPayRef}\n onSetStatus={this.setElementStatus}\n onSubmit={this.handleClickToPaySubmit}\n onError={this.handleError}\n >\n {isCardPrimaryInput => this.renderCardInput(isCardPrimaryInput)}\n </ClickToPayWrapper>\n );\n }\n}\n\nexport default CardElement;\n"],"names":["CardElement","UIElement","setStatus","status","this","componentRef","clickToPayRef","getPaymentMethodConfigFromResponse","componentProps","fundingSource","core","paymentMethodsResponse","findByFundingSource","type","super","formatProps","props","enableStoreDetails","session","configuration","showStoreDetailsCheckbox","amount","value","storedCardID","storedPaymentMethodId","id","isEcommerceStoredCard","supportedShopperInteractions","includes","AdyenCheckoutError","IMPLEMENTATION_ERROR","merchantInstallmentOptions","installmentOptions","notFalsy","console","warn","shownInstallmentOptions","CardInputDefaultProps","holderNameRequired","hasHolderName","hasCVC","brand","hideCVC","billingAddressRequired","billingAddressMode","onAddressLookup","TxVariants","card","countryCode","toLowerCase","socialSecurityNumberMode","brandsConfiguration","icon","clickToPayConfiguration","disableOtpAutoFocus","shopperEmail","options","telephoneNumber","locale","i18n","replace","formatData","cardBrand","state","selectedBrandValue","paymentMethod","data","holderName","fastlaneData","btoa","JSON","stringify","billingAddress","socialSecurityNumber","storePaymentMethodPayload","shouldIncludeInstallmentsInPaymentData","installments","browserInfo","origin","window","location","beforeRender","configSetByMerchant","originalAction","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","oneClick","isStoredPaymentMethod","analytics","sendAnalytics","updateStyles","stylesObj","setFocusOn","fieldName","processBinLookupResponse","binLookupResponse","isReset","handleUnsupportedCard","errObj","onBinLookup","obj","nuObj","reject","from","length","storePaymentMethod","Boolean","isValid","resources","getImage","brands","map","modules","name","displayName","lastFour","accessibleName","get","collectBrowserInfo","renderCardInput","isCardPrimaryInput","h","CardInput","setComponentRef","onSubmitAnalytics","submitAnalytics","onChange","setState","onSubmit","submit","handleKeyDown","payButton","onBrand","onBinValue","brandsIcons","isPayButtonPrimaryVariant","onFocus","onBlur","onConfigSuccess","componentToRender","ClickToPayWrapper","clickToPayService","isStandaloneComponent","setClickToPayRef","onSetStatus","setElementStatus","handleClickToPaySubmit","onError","handleError","constructor","checkout","_define_property","ref","payload","valid","errors","configured","focus","target","fieldTypeToSnakeCase","fieldType","isSecuredField","unfocus","triggerBinLookUp","isZeroAuth","isStoredCard","PayButton","disclaimerMessage","label","onClick","showReview","onReview","_disableClickToPay","createClickToPayService","environment","initialize","scheme","defaultProps","showFormInstruction","doBinLookup"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as e,Fragment as r}from"../../../../external/preact/dist/preact.js";import{useRef as t,useMemo as o,useState as n,useCallback as s,useEffect as a}from"../../../../external/preact/hooks/dist/hooks.js";import i from"../../../internal/SecuredFields/SFP/SecuredFieldsProvider.js";import l from"./defaultProps.js";import{AddressModeOptions as d}from"./types.js";import{ENCRYPTED_CARD_NUMBER as u,DATE_POLICY_REQUIRED as c,CVC_POLICY_REQUIRED as m}from"../../../internal/SecuredFields/lib/constants.js";import{cardInputValidationRules as p,getRuleByNameAndMode as y,cardInputFormatters as f}from"./validate.js";import h from"../../../internal/SecuredFields/binLookup/extensions.js";import b from"../../../../utils/useForm/useForm.js";import"../../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{handlePartialAddressMode as S,shouldShowInstallmentsComponent as g,extractPropsForCardFields as N,extractPropsForSFP as A,getLayout as C,requiresDualBrandSelection as F}from"./utils.js";import j from"../../../internal/Address/Specifications.js";import{StoredCardFieldsWrapper as v}from"./components/StoredCardFieldsWrapper.js";import{CardFieldsWrapper as w}from"./components/CardFieldsWrapper.js";import{getAutoJumpHandler as x,getFocusHandler as B,getAddressHandler as E}from"./handlers.js";import P from"../../../../_virtual/index.js";import{getPartialAddressValidationRules as k}from"../../../internal/Address/validate.js";import R from"../../../../core/Context/useImage.js";import{getArrayDifferences as I}from"../../../../utils/arrayUtils.js";import V from"../../../internal/FormInstruction/FormInstruction.js";import{PREFIX as D}from"../../../internal/Icon/constants.js";import O from"./useSRPanelForCardInputErrors.js";import q from"../Fastlane/FastlaneSignup.js";import{fieldTypeToSnakeCase as M}from"../../../internal/SecuredFields/utils.js";import{getErrorMessageFromCode as _}from"../../../../core/Errors/utils.js";import{SF_ErrorCodes as L}from"../../../../core/Errors/constants.js";import{usePrevious as T}from"../../../../utils/hookUtils.js";import{AnalyticsInfoEvent as U,InfoEventType as K,UiTarget as H}from"../../../../core/Analytics/events/AnalyticsInfoEvent.js";import{useAmount as z}from"../../../../core/Context/AmountProvider.js";import{DUAL_BRANDS_THAT_NEED_SELECTION_MECHANISM as W}from"../../constants.js";const $=l=>{const $=t(null),G=t(!1),J=R(),Q=t(null),X=e=>{Q.current=e},Y=t({});Object.keys(Y.current).length||l.setComponentRef(Y.current);const Z=t(0),ee=t(!1),re=o(()=>new j(l.specifications),[l.specifications]),{amount:te}=z();Y.current.sfp=$;const[oe,ne]=n("ready"),[se,ae]=n({}),[ie,le]=n({...l.holderNameRequired&&{holderName:!1}}),[de,ue]=n({...l.hasHolderName&&{holderName:l.data?.holderName??""}}),[ce,me]=n(""),[pe,ye]=n(!1),[fe,he]=n(c),[be,Se]=n(m),[ge,Ne]=n(null),[Ae,Ce]=n([]),[Fe,je]=n(l.storedPaymentMethodId?l.brand:""),ve=l.billingAddressMode!==d.none&&l.billingAddressRequired,we=S(l.billingAddressMode),xe=l.data?.billingAddress??null,Be=t(we?xe?.country?.toUpperCase()??null:null),[Ee,Pe]=n(!1),[ke,Re]=n(ve?xe:null),[Ie,Ve]=n(!1),[De,Oe]=n(""),[qe,Me]=n({value:null}),[_e,Le]=n(null),[Te,Ue]=n("card"),[Ke,He]=n(!1),{handleChangeFor:ze,triggerValidation:We,data:$e,valid:Ge,errors:Je,setSchema:Qe,setData:Xe,setValid:Ye,setErrors:Ze}=b({schema:[],defaultData:l.data,formatters:f,rules:p}),er=g({installmentOptions:l.installmentOptions,fundingSource:l.fundingSource,amount:te}),rr=l.showInstallmentAmounts??!0,tr="kr"===(ge??l.countryCode),or=!!l.configuration.koreanAuthenticationRequired&&tr,nr=Ie&&"auto"===l.configuration.socialSecurityNumberMode||"show"===l.configuration.socialSecurityNumberMode,sr=(e,r)=>{l.onFocus({fieldType:e,event:r})},ar=(e,r)=>{l.onBlur({fieldType:e,event:r})},ir=s(e=>{Ue(e.brand),l.onBrand(e)},[]),lr=B(me,sr,ar),dr=()=>C({props:l,showKCP:or,showBrazilianSSN:nr,...l.billingAddressRequired&&{countrySpecificSchemas:re.getAddressSchemaForCountry(ke?.country),billingAddressRequiredFields:l.billingAddressRequiredFields}}),ur=s(e=>{const r="webInternalElement"!==e.fieldType?e.fieldType:e.name;Le(r)},[]),cr=E(Xe,Ye,Ze),mr=x(ee,$,dr()),pr=s(e=>{yr(e)},[Ke,He]),yr=e=>{e.status&&("loading"==e.status?He(!1):He(!0))},fr=o(()=>h(l,{sfp:$},{dualBrandSelectElements:Ae,setDualBrandSelectElements:Ce,setSelectedBrandValue:je,issuingCountryCode:ge,setIssuingCountryCode:Ne},Z),[Ae,ge]);Y.current.showValidation=()=>{G.current=!0,Sr?.(),$.current.showValidation(),We(["holderName","socialSecurityNumber","taxNumber"]),Q?.current&&Q.current.showValidation()},Y.current.processBinLookupResponse=(e,r)=>{fr.processBinLookup(e,r)},Y.current.setStatus=ne,a(()=>(Y.current.setFocusOn=$.current.setFocusOn,Y.current.updateStyles=$.current.updateStyles,Y.current.handleUnsupportedCard=$.current.handleUnsupportedCard,()=>{$.current.destroy()}),[]),a(()=>{const e=[...l.hasHolderName?["holderName"]:[],...nr?["socialSecurityNumber"]:[],...or?["taxNumber"]:[],...ve?["billingAddress"]:[]];Qe(e)},[l.hasHolderName,nr,or]),a(()=>{ue({...de,holderName:$e.holderName??"",taxNumber:$e.taxNumber}),Oe($e.socialSecurityNumber),ve&&Re({...$e.billingAddress}),le({...ie,holderName:!l.holderNameRequired||Ge.holderName,socialSecurityNumber:!!Ge.socialSecurityNumber&&Ge.socialSecurityNumber,taxNumber:!!Ge.taxNumber&&Ge.taxNumber,billingAddress:!!Ge.billingAddress&&Ge.billingAddress});const e=!!Je.billingAddress&&Object.entries(Je.billingAddress).reduce((e,[,r])=>e||null!=r,!1);ae({...se,holderName:l.holderNameRequired&&Je.holderName?Je.holderName:null,socialSecurityNumber:nr&&Je.socialSecurityNumber?Je.socialSecurityNumber:null,taxNumber:or&&Je.taxNumber?Je.taxNumber:null,billingAddress:ve&&e?Je.billingAddress:null})},[$e,Ge,Je]);const{sortedErrorList:hr,previousSortedErrors:br,clearSRPanel:Sr}=O({errors:se,props:l,isValidating:G,retrieveLayout:dr,specifications:re,billingAddress:ke,sfp:$});a(()=>{if(hr){const e=I(hr,br,"field");e?.forEach(e=>{const r=new U({component:l.type,type:K.validationError,target:M(e.field),validationErrorCode:e.errorCode,validationErrorMessage:_(e.errorCode,L)});l.onSubmitAnalytics(r)})}},[hr]),a(()=>{const e=!!ie.holderName,r=pe,t=!ve||!!ie.billingAddress,o=!or||!!ie.taxNumber&&!!ie.encryptedPassword,n=!nr||!!ie.socialSecurityNumber,s=r&&e&&t&&o&&n,a=$.current.mapErrorsToValidationRuleResult(),i={...se,...a};l.onChange({data:de,valid:ie,errors:i,isValid:s,billingAddress:ke,selectedBrandValue:Fe,storePaymentMethod:Ee,socialSecurityNumber:De,installments:qe})},[de,ie,se,Fe,Ee,qe]),a(()=>{if(Ae.length>0&&Ae){const e=Ae.map(e=>e.id),r=e[0],t=e.toString();if(!!Ae&&F(W,Ae,"id")){const e=new U({component:l.type,type:K.displayed,target:H.dualBrandButton,brand:r,configData:{dualBrands:t}});l.onSubmitAnalytics(e)}}},[Ae]);const gr=T(Fe);a(()=>{if(gr?.length&&Fe?.length){const e=new U({component:l.type,type:K.selected,target:H.dualBrandButton,brand:Fe});l.onSubmitAnalytics(e)}},[Fe]);const Nr=l.storedPaymentMethodId?v:w;return e(r,null,e(i,{ref:$,...A(l),styles:{...l.styles},koreanAuthenticationRequired:l.configuration.koreanAuthenticationRequired,hasKoreanFields:!(!l.configuration.koreanAuthenticationRequired||"kr"!==l.countryCode),onSubmitAnalytics:l.onSubmitAnalytics,onChange:(e,r)=>{if(e.autoCompleteName){if(!l.hasHolderName)return;const r=y("holderName","blur"),t=r?.(e.autoCompleteName,null)?e.autoCompleteName:null;return void(t&&(Xe("holderName",t),Ye("holderName",!0),Ze("holderName",null)))}var t;l.autoFocus&&Z.current>0&&"handleOnFieldValid"===r?.event&&r?.fieldType===u&&e.valid.encryptedCardNumber&&mr(),ue({...de,...e.data}),ae({...se,...(t=e.errors,t?{encryptedCardNumber:!!t.encryptedCardNumber,encryptedExpiryDate:!!t.encryptedExpiryDate,encryptedSecurityCode:!!t.encryptedSecurityCode,encryptedPassword:!!t.encryptedPassword}:{})}),le({...ie,...e.valid}),ye(e.isSfpValid),Se(e.cvcPolicy),Ve(e.showSocialSecurityNumber),he(e.expiryDatePolicy)},onBrand:ir,onFocus:lr,onStateUpdate:pr,type:l.brand,componentType:l.type,disableIOSArrowKeys:l.disableIOSArrowKeys?ur:null,render:({setRootNode:r,setFocusOn:t},o)=>e("div",{ref:r,className:P({"adyen-checkout__card-input":!0,"adyen-checkout-card-input__wrapper":!0,[`adyen-checkout__card-input--${l.fundingSource??"credit"}`]:!0,"adyen-checkout__card-input--loading":"loading"===oe}),role:"form"},Ke&&e(V,null),e(Nr,{...N(l),data:de,valid:ie,errors:se,handleChangeFor:ze,focusedElement:ce,setFocusOn:t,sfpState:o,cvcPolicy:be,hasInstallments:er,showAmountsInInstallments:rr,handleInstallments:Me,brandsIcons:l.brandsIcons,formData:$e,formErrors:Je,formValid:Ge,expiryDatePolicy:fe,dualBrandSelectElements:Ae,extensions:fr,selectedBrandValue:Fe,showKCP:or,showBrazilianSSN:nr,socialSecurityNumber:De,handleOnStoreDetails:Pe,setAddressRef:X,billingAddress:ke,billingAddressValidationRules:we&&k(Be.current),partialAddressSchema:we,handleAddress:cr,onAddressLookup:l.onAddressLookup,onAddressSelected:l.onAddressSelected,addressSearchDebounceMs:l.addressSearchDebounceMs,iOSFocusedField:_e,onFieldFocusAnalytics:sr,onFieldBlurAnalytics:ar}))}),l.fastlaneConfiguration&&e(q,{...l.fastlaneConfiguration,currentDetectedBrand:Te,onChange:l.onChange,onSubmitAnalytics:l.onSubmitAnalytics,type:l.type}),Ke&&l.showPayButton&&l.payButton({status:oe,variant:l.isPayButtonPrimaryVariant?"primary":"secondary",icon:J({imageFolder:"components/"})(`${D}lock`)}))};$.defaultProps=l;export{$ as default};
1
+ import{createElement as e,Fragment as r}from"../../../../external/preact/dist/preact.js";import{useRef as t,useMemo as o,useState as n,useCallback as s,useEffect as a}from"../../../../external/preact/hooks/dist/hooks.js";import i from"../../../internal/SecuredFields/SFP/SecuredFieldsProvider.js";import l from"./defaultProps.js";import{AddressModeOptions as d}from"./types.js";import{ENCRYPTED_CARD_NUMBER as u,DATE_POLICY_REQUIRED as c,CVC_POLICY_REQUIRED as m}from"../../../internal/SecuredFields/lib/constants.js";import{cardInputValidationRules as p,getRuleByNameAndMode as y,cardInputFormatters as f}from"./validate.js";import h from"../../../internal/SecuredFields/binLookup/extensions.js";import b from"../../../../utils/useForm/useForm.js";import"../../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{handlePartialAddressMode as S,shouldShowInstallmentsComponent as g,extractPropsForCardFields as N,extractPropsForSFP as A,getLayout as C,requiresDualBrandSelection as F}from"./utils.js";import j from"../../../internal/Address/Specifications.js";import{StoredCardFieldsWrapper as v}from"./components/StoredCardFieldsWrapper.js";import{CardFieldsWrapper as x}from"./components/CardFieldsWrapper.js";import{getAutoJumpHandler as w,getFocusHandler as B,getAddressHandler as E}from"./handlers.js";import k from"../../../../_virtual/index.js";import{getPartialAddressValidationRules as P}from"../../../internal/Address/validate.js";import R from"../../../../core/Context/useImage.js";import{getArrayDifferences as I}from"../../../../utils/arrayUtils.js";import V from"../../../internal/FormInstruction/FormInstruction.js";import{PREFIX as D}from"../../../internal/Icon/constants.js";import O from"./useSRPanelForCardInputErrors.js";import q from"../Fastlane/FastlaneSignup.js";import{fieldTypeToSnakeCase as M}from"../../../internal/SecuredFields/utils.js";import{getErrorMessageFromCode as _}from"../../../../core/Errors/utils.js";import{SF_ErrorCodes as L}from"../../../../core/Errors/constants.js";import{usePrevious as T}from"../../../../utils/hookUtils.js";import{AnalyticsInfoEvent as U,InfoEventType as K,UiTarget as H}from"../../../../core/Analytics/events/AnalyticsInfoEvent.js";import{useAmount as z}from"../../../../core/Context/AmountProvider.js";import{DUAL_BRANDS_THAT_NEED_SELECTION_MECHANISM as W}from"../../constants.js";const $=l=>{const $=t(null),G=t(!1),J=R(),Q=t(null),X=e=>{Q.current=e},Y=t({});Object.keys(Y.current).length||l.setComponentRef(Y.current);const Z=t(0),ee=t(!1),re=o(()=>new j(l.specifications),[l.specifications]),{amount:te}=z();Y.current.sfp=$;const[oe,ne]=n("ready"),[se,ae]=n({}),[ie,le]=n({...l.holderNameRequired&&{holderName:!1}}),[de,ue]=n({...l.hasHolderName&&{holderName:l.data?.holderName??""}}),[ce,me]=n(""),[pe,ye]=n(!1),[fe,he]=n(c),[be,Se]=n(m),[ge,Ne]=n(null),[Ae,Ce]=n([]),[Fe,je]=n(l.storedPaymentMethodId?l.brand:""),ve=l.billingAddressMode!==d.none&&l.billingAddressRequired,xe=S(l.billingAddressMode),we=l.data?.billingAddress??null,Be=t(xe?we?.country?.toUpperCase()??null:null),[Ee,ke]=n(!1),[Pe,Re]=n(ve?we:null),[Ie,Ve]=n(!1),[De,Oe]=n(""),[qe,Me]=n({value:null}),[_e,Le]=n(null),[Te,Ue]=n("card"),[Ke,He]=n(!1),{handleChangeFor:ze,triggerValidation:We,data:$e,valid:Ge,errors:Je,setSchema:Qe,setData:Xe,setValid:Ye,setErrors:Ze}=b({schema:[],defaultData:l.data,formatters:f,rules:p}),er=g({installmentOptions:l.installmentOptions,fundingSource:l.fundingSource,amount:te}),rr=l.showInstallmentAmounts??!0,tr="kr"===(ge??l.countryCode),or=!!l.configuration.koreanAuthenticationRequired&&tr,nr=Ie&&"auto"===l.configuration.socialSecurityNumberMode||"show"===l.configuration.socialSecurityNumberMode,sr=(e,r)=>{l.onFocus({fieldType:e,event:r})},ar=(e,r)=>{l.onBlur({fieldType:e,event:r})},ir=s(e=>{Ue(e.brand),l.onBrand(e)},[]),lr=B(me,sr,ar),dr=()=>C({props:l,showKCP:or,showBrazilianSSN:nr,...l.billingAddressRequired&&{countrySpecificSchemas:re.getAddressSchemaForCountry(Pe?.country),billingAddressRequiredFields:l.billingAddressRequiredFields}}),ur=s(e=>{const r="webInternalElement"!==e.fieldType?e.fieldType:e.name;Le(r)},[]),cr=E(Xe,Ye,Ze),mr=w(ee,$,dr()),pr=s(e=>{yr(e)},[Ke,He]),yr=e=>{e.status&&("loading"==e.status?He(!1):He(!0))},fr=o(()=>h(l,{sfp:$},{dualBrandSelectElements:Ae,setDualBrandSelectElements:Ce,setSelectedBrandValue:je,issuingCountryCode:ge,setIssuingCountryCode:Ne},Z),[Ae,ge]);Y.current.showValidation=()=>{G.current=!0,Sr?.(),$.current.showValidation(),We(["holderName","socialSecurityNumber","taxNumber"]),Q?.current&&Q.current.showValidation()},Y.current.processBinLookupResponse=(e,r)=>{fr.processBinLookup(e,r)},Y.current.setStatus=ne,a(()=>(Y.current.setFocusOn=$.current.setFocusOn,Y.current.updateStyles=$.current.updateStyles,Y.current.handleUnsupportedCard=$.current.handleUnsupportedCard,()=>{$.current.destroy()}),[]),a(()=>{const e=[...l.hasHolderName?["holderName"]:[],...nr?["socialSecurityNumber"]:[],...or?["taxNumber"]:[],...ve?["billingAddress"]:[]];Qe(e)},[l.hasHolderName,nr,or]),a(()=>{ue({...de,holderName:$e.holderName??"",taxNumber:$e.taxNumber}),Oe($e.socialSecurityNumber),ve&&Re({...$e.billingAddress}),le({...ie,holderName:!l.holderNameRequired||Ge.holderName,socialSecurityNumber:!!Ge.socialSecurityNumber&&Ge.socialSecurityNumber,taxNumber:!!Ge.taxNumber&&Ge.taxNumber,billingAddress:!!Ge.billingAddress&&Ge.billingAddress});const e=!!Je.billingAddress&&Object.entries(Je.billingAddress).reduce((e,[,r])=>e||null!=r,!1);ae({...se,holderName:l.holderNameRequired&&Je.holderName?Je.holderName:null,socialSecurityNumber:nr&&Je.socialSecurityNumber?Je.socialSecurityNumber:null,taxNumber:or&&Je.taxNumber?Je.taxNumber:null,billingAddress:ve&&e?Je.billingAddress:null})},[$e,Ge,Je]);const{sortedErrorList:hr,previousSortedErrors:br,clearSRPanel:Sr}=O({errors:se,props:l,isValidating:G,retrieveLayout:dr,specifications:re,billingAddress:Pe,sfp:$});a(()=>{if(hr){const e=I(hr,br,"field");e?.forEach(e=>{const r=new U({component:l.type,type:K.validationError,target:M(e.field),validationErrorCode:e.errorCode,validationErrorMessage:_(e.errorCode,L)});l.onSubmitAnalytics(r)})}},[hr]),a(()=>{const e=!!ie.holderName,r=pe,t=!ve||!!ie.billingAddress,o=!or||!!ie.taxNumber&&!!ie.encryptedPassword,n=!nr||!!ie.socialSecurityNumber,s=r&&e&&t&&o&&n,a=$.current.mapErrorsToValidationRuleResult(),i={...se,...a};l.onChange({data:de,valid:ie,errors:i,isValid:s,billingAddress:Pe,selectedBrandValue:Fe,storePaymentMethod:Ee,socialSecurityNumber:De,installments:qe})},[de,ie,se,Fe,Ee,qe]),a(()=>{if(Ae.length>0&&Ae){const e=Ae.map(e=>e.id),r=e[0],t=e.toString();if(!!Ae&&F(W,Ae,"id")){const e=new U({component:l.type,type:K.displayed,target:H.dualBrandButton,brand:r,configData:{dualBrands:t}});l.onSubmitAnalytics(e)}}},[Ae]);const gr=T(Fe);a(()=>{if(gr?.length&&Fe?.length){const e=new U({component:l.type,type:K.selected,target:H.dualBrandButton,brand:Fe});l.onSubmitAnalytics(e)}},[Fe]);const Nr=l.storedPaymentMethodId?v:x;return e(r,null,e(i,{ref:$,...A(l),styles:{...l.styles},koreanAuthenticationRequired:l.configuration.koreanAuthenticationRequired,hasKoreanFields:!(!l.configuration.koreanAuthenticationRequired||"kr"!==l.countryCode),onSubmitAnalytics:l.onSubmitAnalytics,onChange:(e,r)=>{if(e.autoCompleteName){if(!l.hasHolderName)return;const r=y("holderName","blur"),t=r?.(e.autoCompleteName,null)?e.autoCompleteName:null;return void(t&&(Xe("holderName",t),Ye("holderName",!0),Ze("holderName",null)))}var t;l.autoFocus&&Z.current>0&&"handleOnFieldValid"===r?.event&&r?.fieldType===u&&e.valid.encryptedCardNumber&&mr(),ue({...de,...e.data}),ae({...se,...(t=e.errors,t?{encryptedCardNumber:!!t.encryptedCardNumber,encryptedExpiryDate:!!t.encryptedExpiryDate,encryptedSecurityCode:!!t.encryptedSecurityCode,encryptedPassword:!!t.encryptedPassword}:{})}),le({...ie,...e.valid}),ye(e.isSfpValid),Se(e.cvcPolicy),Ve(e.showSocialSecurityNumber),he(e.expiryDatePolicy)},onBrand:ir,onFocus:lr,onStateUpdate:pr,type:l.brand,componentType:l.type,disableIOSArrowKeys:l.disableIOSArrowKeys?ur:null,render:({setRootNode:r,setFocusOn:t},o)=>e("div",{ref:r,className:k({"adyen-checkout__card-input":!0,"adyen-checkout-card-input__wrapper":!0,[`adyen-checkout__card-input--${l.fundingSource??"credit"}`]:!0,"adyen-checkout__card-input--loading":"loading"===oe}),role:"form"},Ke&&e(V,null),e(Nr,{...N(l),data:de,valid:ie,errors:se,handleChangeFor:ze,focusedElement:ce,setFocusOn:t,sfpState:o,cvcPolicy:be,hasInstallments:er,showAmountsInInstallments:rr,handleInstallments:Me,brandsIcons:l.brandsIcons,formData:$e,formErrors:Je,formValid:Ge,expiryDatePolicy:fe,dualBrandSelectElements:Ae,extensions:fr,selectedBrandValue:Fe,showKCP:or,showBrazilianSSN:nr,socialSecurityNumber:De,handleOnStoreDetails:ke,setAddressRef:X,billingAddress:Pe,billingAddressValidationRules:xe&&P(Be.current),partialAddressSchema:xe,handleAddress:cr,onAddressLookup:l.onAddressLookup,onAddressSelected:l.onAddressSelected,addressSearchDebounceMs:l.addressSearchDebounceMs,iOSFocusedField:_e,onFieldFocusAnalytics:sr,onFieldBlurAnalytics:ar}))}),l.fastlaneConfiguration&&e(q,{...l.fastlaneConfiguration,currentDetectedBrand:Te,onChange:l.onChange,onSubmitAnalytics:l.onSubmitAnalytics,type:l.type}),Ke&&l.payButton({status:oe,variant:l.isPayButtonPrimaryVariant?"primary":"secondary",icon:J({imageFolder:"components/"})(`${D}lock`)}))};$.defaultProps=l;export{$ as default};
2
2
  //# sourceMappingURL=CardInput.js.map