@adyen/adyen-web 6.10.0 → 6.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/dist/cjs/adyen.css +3 -3
  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 +89 -99
  6. package/dist/es/adyen.css +3 -3
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/components/ANCVAwait/config.js +1 -1
  9. package/dist/es/components/ANCV/components/ANCVAwait/config.js.map +1 -1
  10. package/dist/es/components/Ach/Ach.js +1 -1
  11. package/dist/es/components/Ach/Ach.js.map +1 -1
  12. package/dist/es/components/Ach/components/AccountTypeSelector.js +2 -0
  13. package/dist/es/components/Ach/components/AccountTypeSelector.js.map +1 -0
  14. package/dist/es/components/Ach/components/AchComponent.js +2 -0
  15. package/dist/es/components/Ach/components/AchComponent.js.map +1 -0
  16. package/dist/es/components/Ach/components/useSRPanelForACHErrors.js +2 -0
  17. package/dist/es/components/Ach/components/useSRPanelForACHErrors.js.map +1 -0
  18. package/dist/es/components/Ach/components/validate.js +2 -0
  19. package/dist/es/components/Ach/components/validate.js.map +1 -0
  20. package/dist/es/components/Ach/defaultProps.js +2 -0
  21. package/dist/es/components/Ach/defaultProps.js.map +1 -0
  22. package/dist/es/components/AmazonPay/utils.js +1 -1
  23. package/dist/es/components/ApplePay/ApplePay.js +1 -1
  24. package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
  25. package/dist/es/components/ApplePay/defaultProps.js +1 -1
  26. package/dist/es/components/ApplePay/defaultProps.js.map +1 -1
  27. package/dist/es/components/Atome/Atome.js +1 -1
  28. package/dist/es/components/BacsDD/components/BacsInput.js +1 -1
  29. package/dist/es/components/BcmcMobile/BcmcMobile.js +1 -1
  30. package/dist/es/components/Boleto/components/BoletoInput/validate.js +1 -1
  31. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  32. package/dist/es/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  33. package/dist/es/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  34. package/dist/es/components/Card/components/CardInput/components/CVC.js +1 -1
  35. package/dist/es/components/Card/components/CardInput/components/CVC.js.map +1 -1
  36. package/dist/es/components/Card/components/CardInput/components/CVCHint.js +1 -1
  37. package/dist/es/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  38. package/dist/es/components/Card/components/CardInput/components/CardFields.js +1 -1
  39. package/dist/es/components/Card/components/CardInput/components/CardNumber.js +1 -1
  40. package/dist/es/components/Card/components/CardInput/components/CardNumber.js.map +1 -1
  41. package/dist/es/components/Card/components/CardInput/components/DataSfSpan.js +1 -1
  42. package/dist/es/components/Card/components/CardInput/components/ExpirationDate.js +1 -1
  43. package/dist/es/components/Card/components/CardInput/components/ExpirationDate.js.map +1 -1
  44. package/dist/es/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  45. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  46. package/dist/es/components/Card/components/CardInput/validate.js +1 -1
  47. package/dist/es/components/Donation/components/DonationComponent.js +1 -1
  48. package/dist/es/components/DuitNow/DuitNow.js +1 -1
  49. package/dist/es/components/GooglePay/GooglePay.js +1 -1
  50. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  51. package/dist/es/components/PayNow/PayNow.js +1 -1
  52. package/dist/es/components/PayPal/constants.js +1 -1
  53. package/dist/es/components/PayPal/constants.js.map +1 -1
  54. package/dist/es/components/PayTo/PayTo.js.map +1 -1
  55. package/dist/es/components/Pix/PixInput/PixInput.js.map +1 -1
  56. package/dist/es/components/PromptPay/PromptPay.js +1 -1
  57. package/dist/es/components/Redirect/Redirect.js +1 -1
  58. package/dist/es/components/Riverty/Riverty.js +1 -1
  59. package/dist/es/components/Riverty/config.js +1 -1
  60. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  61. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  62. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  63. package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
  64. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  65. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  66. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
  67. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  68. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  69. package/dist/es/components/WeChat/WeChat.js +1 -1
  70. package/dist/es/components/internal/Address/Address.js +1 -1
  71. package/dist/es/components/internal/Address/validate.formats.js.map +1 -1
  72. package/dist/es/components/internal/Countdown/utils.js.map +1 -1
  73. package/dist/es/components/internal/FormFields/Checkbox/Checkbox.js +1 -1
  74. package/dist/es/components/internal/FormFields/Checkbox/Checkbox.js.map +1 -1
  75. package/dist/es/components/internal/FormFields/InputDate/utils.js.map +1 -1
  76. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  77. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  78. package/dist/es/components/internal/IbanInput/validate.js +1 -1
  79. package/dist/es/components/internal/IssuerList/IssuerList.js +1 -1
  80. package/dist/es/components/internal/IssuerList/IssuerList.js.map +1 -1
  81. package/dist/es/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  82. package/dist/es/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  83. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  84. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  85. package/dist/es/components/internal/PhoneInput/validate.js +1 -1
  86. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  87. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  88. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  89. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  90. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
  91. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
  92. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js +1 -1
  93. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js.map +1 -1
  94. package/dist/es/components/internal/SecuredFields/lib/CSF/partials/processAutoComplete.js.map +1 -1
  95. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js.map +1 -1
  96. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/tabbing/utils.js.map +1 -1
  97. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/userAgent.js +1 -1
  98. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/userAgent.js.map +1 -1
  99. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  100. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  101. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js +1 -1
  102. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  103. package/dist/es/components/internal/SecuredFields/lib/utilities/addContextTranslations.js +1 -1
  104. package/dist/es/components/internal/StoreDetails/StoreDetails.js +1 -1
  105. package/dist/es/components/internal/StoreDetails/StoreDetails.js.map +1 -1
  106. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  107. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  108. package/dist/es/core/Analytics/Analytics.js +1 -1
  109. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  110. package/dist/es/core/Analytics/constants.js +1 -1
  111. package/dist/es/core/Analytics/constants.js.map +1 -1
  112. package/dist/es/core/Analytics/utils.js +1 -1
  113. package/dist/es/core/Errors/constants.js +1 -1
  114. package/dist/es/core/Errors/constants.js.map +1 -1
  115. package/dist/es/core/Errors/utils.js +1 -1
  116. package/dist/es/core/Errors/utils.js.map +1 -1
  117. package/dist/es/core/RiskModule/components/DeviceFingerprint/utils.js +1 -1
  118. package/dist/es/core/RiskModule/constants.js +1 -1
  119. package/dist/es/core/RiskModule/constants.js.map +1 -1
  120. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  121. package/dist/es/core/Services/http.js +1 -1
  122. package/dist/es/core/core.js +1 -1
  123. package/dist/es/external/preact/dist/preact.js +1 -1
  124. package/dist/es/external/preact/dist/preact.js.map +1 -1
  125. package/dist/es/external/preact/hooks/dist/hooks.js.map +1 -1
  126. package/dist/es/index.d.ts +89 -99
  127. package/dist/es/index.js +1 -1
  128. package/dist/es/utils/Validator/defaultRules.js +1 -1
  129. package/dist/es/utils/base64.js.map +1 -1
  130. package/dist/es/utils/browserInfo.js +1 -1
  131. package/dist/es/utils/browserInfo.js.map +1 -1
  132. package/dist/es/utils/detectInIframe.js +2 -0
  133. package/dist/es/utils/detectInIframe.js.map +1 -0
  134. package/dist/es/utils/setFocus.js +1 -1
  135. package/dist/es/utils/setFocus.js.map +1 -1
  136. package/dist/es/utils/textUtils.js +1 -1
  137. package/dist/es/utils/textUtils.js.map +1 -1
  138. package/dist/es/utils/useForm/useForm.js +1 -1
  139. package/dist/es-legacy/adyen.css +3 -3
  140. package/dist/es-legacy/adyen.css.map +1 -1
  141. package/dist/es-legacy/components/ANCV/components/ANCVAwait/config.js +1 -1
  142. package/dist/es-legacy/components/ANCV/components/ANCVAwait/config.js.map +1 -1
  143. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  144. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  145. package/dist/es-legacy/components/Ach/components/AccountTypeSelector.js +2 -0
  146. package/dist/es-legacy/components/Ach/components/AccountTypeSelector.js.map +1 -0
  147. package/dist/es-legacy/components/Ach/components/AchComponent.js +2 -0
  148. package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -0
  149. package/dist/es-legacy/components/Ach/components/useSRPanelForACHErrors.js +2 -0
  150. package/dist/es-legacy/components/Ach/components/useSRPanelForACHErrors.js.map +1 -0
  151. package/dist/es-legacy/components/Ach/components/validate.js +2 -0
  152. package/dist/es-legacy/components/Ach/components/validate.js.map +1 -0
  153. package/dist/es-legacy/components/Ach/defaultProps.js +2 -0
  154. package/dist/es-legacy/components/Ach/defaultProps.js.map +1 -0
  155. package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
  156. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  157. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  158. package/dist/es-legacy/components/ApplePay/defaultProps.js +1 -1
  159. package/dist/es-legacy/components/ApplePay/defaultProps.js.map +1 -1
  160. package/dist/es-legacy/components/Atome/Atome.js +1 -1
  161. package/dist/es-legacy/components/BacsDD/components/BacsInput.js +1 -1
  162. package/dist/es-legacy/components/BcmcMobile/BcmcMobile.js +1 -1
  163. package/dist/es-legacy/components/Boleto/components/BoletoInput/validate.js +1 -1
  164. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  165. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  166. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  167. package/dist/es-legacy/components/Card/components/CardInput/components/CVC.js +1 -1
  168. package/dist/es-legacy/components/Card/components/CardInput/components/CVC.js.map +1 -1
  169. package/dist/es-legacy/components/Card/components/CardInput/components/CVCHint.js +1 -1
  170. package/dist/es-legacy/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  171. package/dist/es-legacy/components/Card/components/CardInput/components/CardFields.js +1 -1
  172. package/dist/es-legacy/components/Card/components/CardInput/components/CardNumber.js +1 -1
  173. package/dist/es-legacy/components/Card/components/CardInput/components/CardNumber.js.map +1 -1
  174. package/dist/es-legacy/components/Card/components/CardInput/components/DataSfSpan.js +1 -1
  175. package/dist/es-legacy/components/Card/components/CardInput/components/ExpirationDate.js +1 -1
  176. package/dist/es-legacy/components/Card/components/CardInput/components/ExpirationDate.js.map +1 -1
  177. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  178. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  179. package/dist/es-legacy/components/Card/components/CardInput/validate.js +1 -1
  180. package/dist/es-legacy/components/Donation/components/DonationComponent.js +1 -1
  181. package/dist/es-legacy/components/DuitNow/DuitNow.js +1 -1
  182. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  183. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  184. package/dist/es-legacy/components/PayNow/PayNow.js +1 -1
  185. package/dist/es-legacy/components/PayPal/constants.js +1 -1
  186. package/dist/es-legacy/components/PayPal/constants.js.map +1 -1
  187. package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
  188. package/dist/es-legacy/components/Pix/PixInput/PixInput.js.map +1 -1
  189. package/dist/es-legacy/components/PromptPay/PromptPay.js +1 -1
  190. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  191. package/dist/es-legacy/components/Riverty/Riverty.js +1 -1
  192. package/dist/es-legacy/components/Riverty/config.js +1 -1
  193. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  194. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  195. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  196. package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
  197. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  198. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  199. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
  200. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  201. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  202. package/dist/es-legacy/components/WeChat/WeChat.js +1 -1
  203. package/dist/es-legacy/components/internal/Address/Address.js +1 -1
  204. package/dist/es-legacy/components/internal/Address/validate.formats.js.map +1 -1
  205. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  206. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  207. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
  208. package/dist/es-legacy/components/internal/Countdown/utils.js.map +1 -1
  209. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js +1 -1
  210. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js.map +1 -1
  211. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  212. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  213. package/dist/es-legacy/components/internal/FormFields/InputDate/utils.js.map +1 -1
  214. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  215. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  216. package/dist/es-legacy/components/internal/IbanInput/validate.js +1 -1
  217. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  218. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  219. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  220. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  221. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  222. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  223. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  224. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  225. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  226. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  227. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
  228. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
  229. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js +1 -1
  230. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js.map +1 -1
  231. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/partials/processAutoComplete.js.map +1 -1
  232. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js.map +1 -1
  233. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/tabbing/utils.js.map +1 -1
  234. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/userAgent.js +1 -1
  235. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/userAgent.js.map +1 -1
  236. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  237. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  238. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js +1 -1
  239. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  240. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/addContextTranslations.js +1 -1
  241. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js +1 -1
  242. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js.map +1 -1
  243. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  244. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  245. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  246. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  247. package/dist/es-legacy/core/Analytics/constants.js +1 -1
  248. package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
  249. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  250. package/dist/es-legacy/core/Errors/constants.js +1 -1
  251. package/dist/es-legacy/core/Errors/constants.js.map +1 -1
  252. package/dist/es-legacy/core/Errors/utils.js +1 -1
  253. package/dist/es-legacy/core/Errors/utils.js.map +1 -1
  254. package/dist/es-legacy/core/RiskModule/RiskModule.js +1 -1
  255. package/dist/es-legacy/core/RiskModule/components/DeviceFingerprint/utils.js +1 -1
  256. package/dist/es-legacy/core/RiskModule/constants.js +1 -1
  257. package/dist/es-legacy/core/RiskModule/constants.js.map +1 -1
  258. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  259. package/dist/es-legacy/core/core.js +1 -1
  260. package/dist/es-legacy/external/preact/dist/preact.js +1 -1
  261. package/dist/es-legacy/external/preact/dist/preact.js.map +1 -1
  262. package/dist/es-legacy/external/preact/hooks/dist/hooks.js.map +1 -1
  263. package/dist/es-legacy/index.js +1 -1
  264. package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
  265. package/dist/es-legacy/utils/base64.js.map +1 -1
  266. package/dist/es-legacy/utils/browserInfo.js +1 -1
  267. package/dist/es-legacy/utils/browserInfo.js.map +1 -1
  268. package/dist/es-legacy/utils/detectInIframe.js +2 -0
  269. package/dist/es-legacy/utils/detectInIframe.js.map +1 -0
  270. package/dist/es-legacy/utils/setFocus.js +1 -1
  271. package/dist/es-legacy/utils/setFocus.js.map +1 -1
  272. package/dist/es-legacy/utils/textUtils.js +1 -1
  273. package/dist/es-legacy/utils/textUtils.js.map +1 -1
  274. package/dist/es-legacy/utils/useForm/useForm.js +1 -1
  275. package/package.json +22 -21
  276. package/styles/adyen.css +3 -3
  277. package/dist/es/components/Ach/components/AchInput/AchInput.js +0 -2
  278. package/dist/es/components/Ach/components/AchInput/AchInput.js.map +0 -1
  279. package/dist/es/components/Ach/components/AchInput/components/AchSFInput.js +0 -2
  280. package/dist/es/components/Ach/components/AchInput/components/AchSFInput.js.map +0 -1
  281. package/dist/es/components/Ach/components/AchInput/components/AchSecuredFields.js +0 -2
  282. package/dist/es/components/Ach/components/AchInput/components/AchSecuredFields.js.map +0 -1
  283. package/dist/es/components/Ach/components/AchInput/defaultProps.js +0 -2
  284. package/dist/es/components/Ach/components/AchInput/defaultProps.js.map +0 -1
  285. package/dist/es/components/Ach/components/AchInput/defaultStyles.js +0 -2
  286. package/dist/es/components/Ach/components/AchInput/defaultStyles.js.map +0 -1
  287. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js +0 -2
  288. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js.map +0 -1
  289. package/dist/es/utils/inIframe.js +0 -2
  290. package/dist/es/utils/inIframe.js.map +0 -1
  291. package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js +0 -2
  292. package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js.map +0 -1
  293. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSFInput.js +0 -2
  294. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSFInput.js.map +0 -1
  295. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSecuredFields.js +0 -2
  296. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSecuredFields.js.map +0 -1
  297. package/dist/es-legacy/components/Ach/components/AchInput/defaultProps.js +0 -2
  298. package/dist/es-legacy/components/Ach/components/AchInput/defaultProps.js.map +0 -1
  299. package/dist/es-legacy/components/Ach/components/AchInput/defaultStyles.js +0 -2
  300. package/dist/es-legacy/components/Ach/components/AchInput/defaultStyles.js.map +0 -1
  301. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js +0 -2
  302. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js.map +0 -1
  303. package/dist/es-legacy/utils/inIframe.js +0 -2
  304. package/dist/es-legacy/utils/inIframe.js.map +0 -1
@@ -1,2 +1,2 @@
1
- const T=15,e=6e4,o=1e4;var E={COUNTDOWN_MINUTES:15,THROTTLE_TIME:6e4,THROTTLE_INTERVAL:1e4,showCountdownTimer:!1};export{T as COUNTDOWN_MINUTES,o as THROTTLE_INTERVAL,e as THROTTLE_TIME,E as default};
1
+ const T=6e4,e=1e4;var o={THROTTLE_TIME:6e4,THROTTLE_INTERVAL:1e4,showCountdownTimer:!1};export{e as THROTTLE_INTERVAL,T as THROTTLE_TIME,o as default};
2
2
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../../../../../src/components/ANCV/components/ANCVAwait/config.ts"],"sourcesContent":["export const COUNTDOWN_MINUTES = 15; // min\nexport const THROTTLE_TIME = 60000; // ms\nexport const THROTTLE_INTERVAL = 10000; // ms\n\nexport default {\n COUNTDOWN_MINUTES,\n THROTTLE_TIME,\n THROTTLE_INTERVAL,\n showCountdownTimer: false\n};\n"],"names":["COUNTDOWN_MINUTES","THROTTLE_TIME","THROTTLE_INTERVAL","config","showCountdownTimer"],"mappings":"AAAaA,MAAAA,EAAoB,GACpBC,EAAgB,IAChBC,EAAoB,IAEjC,IAAeC,EAAA,CACXH,kBAL6B,GAM7BC,cALyB,IAMzBC,kBAL6B,IAM7BE,oBAAoB"}
1
+ {"version":3,"file":"config.js","sources":["../../../../../../src/components/ANCV/components/ANCVAwait/config.ts"],"sourcesContent":["export const COUNTDOWN_MINUTES = 15; // min\nexport const THROTTLE_TIME = 60000; // ms\nexport const THROTTLE_INTERVAL = 10000; // ms\n\nexport default {\n COUNTDOWN_MINUTES,\n THROTTLE_TIME,\n THROTTLE_INTERVAL,\n showCountdownTimer: false\n};\n"],"names":["THROTTLE_TIME","THROTTLE_INTERVAL","config","showCountdownTimer"],"mappings":"AACaA,MAAAA,EAAgB,IAChBC,EAAoB,IAEjC,IAAeC,EAAA,CAEXF,cALyB,IAMzBC,kBAL6B,IAM7BE,oBAAoB"}
@@ -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 s from"./components/AchInput/AchInput.js";import{CoreProvider as o}from"../../core/Context/CoreProvider.js";import r from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as n}from"../tx-variants.js";class a extends e{formatProps(t){return{...t,holderNameRequired:t.hasHolderName??t.holderNameRequired}}formatData(){const t=!!this.props.storedPaymentMethodId,e={type:a.type,...this.state.data,ownerName:this.state.data?.holderName,...t&&{storedPaymentMethodId:this.props.storedPaymentMethodId}};return delete e.holderName,{paymentMethod:e,...this.state.storePaymentMethod&&{storePaymentMethod:this.state.storePaymentMethod}}}updateStyles(t){return this.componentRef&&this.componentRef.updateStyles&&this.componentRef.updateStyles(t),this}setFocusOn(t){return this.componentRef&&this.componentRef.setFocusOn&&this.componentRef.setFocusOn(t),this}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.bankAccountNumber?`•••• ${this.props.bankAccountNumber.slice(-4)}`:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.i18n.get("ach.savedBankAccount"):""}render(){return t(o,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},this.props.storedPaymentMethodId?t(r,{showPayButton:this.props.showPayButton,name:this.displayName,amount:this.props.amount,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}}):t(s,{setComponentRef:this.setComponentRef,handleKeyPress:this.handleKeyPress,...this.props,onChange:this.setState,onSubmit:this.submit,payButton:this.payButton,resources:this.resources}))}}var i,p,h;i=a,p="type",h=n.ach,p in i?Object.defineProperty(i,p,{value:h,enumerable:!0,configurable:!0,writable:!0}):i[p]=h;export{a as AchElement,a as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import{CoreProvider as o}from"../../core/Context/CoreProvider.js";import s from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as r}from"../tx-variants.js";import a from"./components/AchComponent.js";import n from"./defaultProps.js";import i from"../../core/Errors/SRPanelProvider.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 d extends e{formatData(){return!!this.props.storedPaymentMethodId?{paymentMethod:{type:d.type,storedPaymentMethodId:this.props.storedPaymentMethodId}}:{paymentMethod:{type:d.type,ownerName:this.state.data.ownerName,accountHolderType:this.state.data.selectedAccountType?.split(".")[0],bankAccountType:this.state.data.selectedAccountType?.split(".")[1],bankLocationId:this.state.data.routingNumber,bankAccountNumber:this.state.data.accountNumber},...this.state.storePaymentMethod&&{storePaymentMethod:this.state.storePaymentMethod}}}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.bankAccountNumber?`•••• ${this.props.bankAccountNumber.slice(-4)}`:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.i18n.get("ach.savedBankAccount"):""}render(){return t(o,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},this.props.storedPaymentMethodId?t(s,{showPayButton:this.props.showPayButton,name:this.displayName,amount:this.props.amount,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}}):t(i,{srPanel:this.props.modules.srPanel},t(a,{onChange:this.setState,payButton:this.payButton,showPayButton:this.props.showPayButton,hasHolderName:this.props.hasHolderName,placeholders:this.props.placeholders,setComponentRef:this.setComponentRef,enableStoreDetails:this.props.enableStoreDetails})))}}p(d,"type",r.ach),p(d,"defaultProps",n);export{d as AchElement,d as default};
2
2
  //# sourceMappingURL=Ach.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ach.js","sources":["../../../../src/components/Ach/Ach.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport AchInput from './components/AchInput';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport RedirectButton from '../internal/RedirectButton';\nimport { AchConfiguration } from './types';\nimport { TxVariants } from '../tx-variants';\n\nexport class AchElement extends UIElement<AchConfiguration> {\n public static type = TxVariants.ach;\n\n formatProps(props: AchConfiguration) {\n return {\n ...props,\n // Fix mismatch between passed hasHolderName & holderNameRequired props\n // (when holderNameRequired = true, but hasHolderName = false - which means component will never be valid)\n holderNameRequired: props.hasHolderName ?? props.holderNameRequired\n // TODO - if it turns out that hasHolderName & holderNameRequired are not configurable by the merchant\n // then we will need to force these properties to true\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n // Map holderName to ownerName\n const paymentMethod = {\n type: AchElement.type,\n ...this.state.data,\n ownerName: this.state.data?.holderName,\n ...(recurringPayment && { storedPaymentMethodId: this.props.storedPaymentMethodId })\n };\n\n delete paymentMethod.holderName;\n\n return {\n paymentMethod,\n ...(this.state.storePaymentMethod && { storePaymentMethod: this.state.storePaymentMethod })\n };\n }\n\n updateStyles(stylesObj) {\n if (this.componentRef && this.componentRef.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName) {\n if (this.componentRef && this.componentRef.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n get isValid() {\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.bankAccountNumber) {\n // get lastFour from bankAccountNumber, value comes from storedPaymentMethods\n return `•••• ${this.props.bankAccountNumber.slice(-4)}`;\n }\n return this.props.name;\n }\n\n get additionalInfo() {\n return this.props.storedPaymentMethodId ? this.props.i18n.get('ach.savedBankAccount') : '';\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.storedPaymentMethodId ? (\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n ) : (\n <AchInput\n setComponentRef={this.setComponentRef}\n handleKeyPress={this.handleKeyPress}\n {...this.props}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n resources={this.resources}\n />\n )}\n </CoreProvider>\n );\n }\n}\n\nexport default AchElement;\n"],"names":["AchElement","UIElement","formatProps","props","holderNameRequired","hasHolderName","formatData","recurringPayment","this","storedPaymentMethodId","paymentMethod","type","state","data","ownerName","holderName","storePaymentMethod","updateStyles","stylesObj","componentRef","setFocusOn","fieldName","isValid","displayName","bankAccountNumber","slice","name","additionalInfo","i18n","get","render","h","CoreProvider","loadingContext","resources","RedirectButton","showPayButton","amount","payButton","onSubmit","submit","ref","AchInput","setComponentRef","handleKeyPress","onChange","setState","TxVariants","ach"],"mappings":"kWAQO,MAAMA,UAAmBC,EAG5BC,WAAAA,CAAYC,GACR,MAAO,IACAA,EAGHC,mBAAoBD,EAAME,eAAiBF,EAAMC,mBAIzD,CAKAE,UAAAA,GACI,MAAMC,IAAqBC,KAAKL,MAAMM,sBAGhCC,EAAgB,CAClBC,KAAMX,EAAWW,QACdH,KAAKI,MAAMC,KACdC,UAAWN,KAAKI,MAAMC,MAAME,cACxBR,GAAoB,CAAEE,sBAAuBD,KAAKL,MAAMM,wBAKhE,cAFOC,EAAcK,WAEd,CACHL,mBACIF,KAAKI,MAAMI,oBAAsB,CAAEA,mBAAoBR,KAAKI,MAAMI,oBAE9E,CAEAC,YAAAA,CAAaC,GAET,OADIV,KAAKW,cAAgBX,KAAKW,aAAaF,cAAcT,KAAKW,aAAaF,aAAaC,GACjFV,IACX,CAEAY,UAAAA,CAAWC,GAEP,OADIb,KAAKW,cAAgBX,KAAKW,aAAaC,YAAYZ,KAAKW,aAAaC,WAAWC,GAC7Eb,IACX,CAEA,WAAIc,GACA,QAAId,KAAKL,MAAMM,yBAIND,KAAKI,MAAMU,OACxB,CAEA,eAAIC,GACA,OAAIf,KAAKL,MAAMM,uBAAyBD,KAAKL,MAAMqB,kBAExC,QAAQhB,KAAKL,MAAMqB,kBAAkBC,OAAO,KAEhDjB,KAAKL,MAAMuB,IACtB,CAEA,kBAAIC,GACA,OAAOnB,KAAKL,MAAMM,sBAAwBD,KAAKL,MAAMyB,KAAKC,IAAI,wBAA0B,EAC5F,CAEAC,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaJ,KAAMpB,KAAKL,MAAMyB,KAAMK,eAAgBzB,KAAKL,MAAM8B,eAAgBC,UAAW1B,KAAK0B,WAC3F1B,KAAKL,MAAMM,sBACRsB,EAACI,EAAAA,CACGC,cAAe5B,KAAKL,MAAMiC,cAC1BV,KAAMlB,KAAKe,YACXc,OAAQ7B,KAAKL,MAAMkC,OACnBC,UAAW9B,KAAK8B,UAChBC,SAAU/B,KAAKgC,OACfC,IAAKA,IACDjC,KAAKW,aAAesB,CAAAA,IAI5BV,EAACW,EAAAA,CACGC,gBAAiBnC,KAAKmC,gBACtBC,eAAgBpC,KAAKoC,kBACjBpC,KAAKL,MACT0C,SAAUrC,KAAKsC,SACfP,SAAU/B,KAAKgC,OACfF,UAAW9B,KAAK8B,UAChBJ,UAAW1B,KAAK0B,YAKpC,cA7FSlC,IACKW,SAAOoC,EAAWC"}
1
+ {"version":3,"file":"Ach.js","sources":["../../../../src/components/Ach/Ach.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport AchComponent from './components/AchComponent';\nimport defaultProps from './defaultProps';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\n\nimport type { AchConfiguration } from './types';\n\nexport class AchElement extends UIElement<AchConfiguration> {\n public static type = TxVariants.ach;\n\n protected static defaultProps = defaultProps;\n\n public override formatData() {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n if (recurringPayment) {\n return {\n paymentMethod: {\n type: AchElement.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: AchElement.type,\n ownerName: this.state.data.ownerName,\n accountHolderType: this.state.data.selectedAccountType?.split('.')[0],\n bankAccountType: this.state.data.selectedAccountType?.split('.')[1],\n bankLocationId: this.state.data.routingNumber,\n bankAccountNumber: this.state.data.accountNumber\n },\n ...(this.state.storePaymentMethod && { storePaymentMethod: this.state.storePaymentMethod })\n };\n }\n\n public override get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n public override get displayName(): string {\n if (this.props.storedPaymentMethodId && this.props.bankAccountNumber) {\n return `•••• ${this.props.bankAccountNumber.slice(-4)}`;\n }\n return this.props.name;\n }\n\n public override get additionalInfo(): string {\n return this.props.storedPaymentMethodId ? this.props.i18n.get('ach.savedBankAccount') : '';\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.storedPaymentMethodId ? (\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n ) : (\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <AchComponent\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n hasHolderName={this.props.hasHolderName}\n placeholders={this.props.placeholders}\n setComponentRef={this.setComponentRef}\n enableStoreDetails={this.props.enableStoreDetails}\n />\n </SRPanelProvider>\n )}\n </CoreProvider>\n );\n }\n}\n\nexport default AchElement;\n"],"names":["AchElement","UIElement","formatData","this","props","storedPaymentMethodId","paymentMethod","type","ownerName","state","data","accountHolderType","selectedAccountType","split","bankAccountType","bankLocationId","routingNumber","bankAccountNumber","accountNumber","storePaymentMethod","isValid","displayName","slice","name","additionalInfo","i18n","get","render","h","CoreProvider","loadingContext","resources","RedirectButton","showPayButton","amount","payButton","onSubmit","submit","ref","componentRef","SRPanelProvider","srPanel","modules","AchComponent","onChange","setState","hasHolderName","placeholders","setComponentRef","enableStoreDetails","_define_property","TxVariants","ach","defaultProps"],"mappings":"0iBAWO,MAAMA,UAAmBC,EAKZC,UAAAA,GAGZ,QAF2BC,KAAKC,MAAMC,sBAG3B,CACHC,cAAe,CACXC,KAAMP,EAAWO,KACjBF,sBAAuBF,KAAKC,MAAMC,wBAKvC,CACHC,cAAe,CACXC,KAAMP,EAAWO,KACjBC,UAAWL,KAAKM,MAAMC,KAAKF,UAC3BG,kBAAmBR,KAAKM,MAAMC,KAAKE,qBAAqBC,MAAM,KAAK,GACnEC,gBAAiBX,KAAKM,MAAMC,KAAKE,qBAAqBC,MAAM,KAAK,GACjEE,eAAgBZ,KAAKM,MAAMC,KAAKM,cAChCC,kBAAmBd,KAAKM,MAAMC,KAAKQ,kBAEnCf,KAAKM,MAAMU,oBAAsB,CAAEA,mBAAoBhB,KAAKM,MAAMU,oBAE9E,CAEA,WAAoBC,GAChB,QAAIjB,KAAKC,MAAMC,yBAINF,KAAKM,MAAMW,OACxB,CAEA,eAAoBC,GAChB,OAAIlB,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMa,kBACxC,QAAQd,KAAKC,MAAMa,kBAAkBK,OAAW,KAEpDnB,KAAKC,MAAMmB,IACtB,CAEA,kBAAoBC,GAChB,OAAOrB,KAAKC,MAAMC,sBAAwBF,KAAKC,MAAMqB,KAAKC,IAAI,wBAA0B,EAC5F,CAEAC,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaJ,KAAMtB,KAAKC,MAAMqB,KAAMK,eAAgB3B,KAAKC,MAAM0B,eAAgBC,UAAW5B,KAAK4B,WAC3F5B,KAAKC,MAAMC,sBACRuB,EAACI,EAAAA,CACGC,cAAe9B,KAAKC,MAAM6B,cAC1BV,KAAMpB,KAAKkB,YACXa,OAAQ/B,KAAKC,MAAM8B,OACnBC,UAAWhC,KAAKgC,UAChBC,SAAUjC,KAAKkC,OACfC,IAAKA,IACDnC,KAAKoC,aAAeD,CAAAA,IAI5BV,EAACY,EAAAA,CAAgBC,QAAStC,KAAKC,MAAMsC,QAAQD,SACzCb,EAACe,EAAAA,CACGC,SAAUzC,KAAK0C,SACfV,UAAWhC,KAAKgC,UAChBF,cAAe9B,KAAKC,MAAM6B,cAC1Ba,cAAe3C,KAAKC,MAAM0C,cAC1BC,aAAc5C,KAAKC,MAAM2C,aACzBC,gBAAiB7C,KAAK6C,gBACtBC,mBAAoB9C,KAAKC,MAAM6C,sBAMvD,EA7EAC,EADSlD,EACKO,OAAO4C,EAAWC,KAEhCF,EAHSlD,EAGQqD,eAAeA"}
@@ -0,0 +1,2 @@
1
+ import e from"../../internal/FormFields/Select/Select.js";import a from"../../internal/FormFields/Field/Field.js";import{createElement as n}from"../../../external/preact/dist/preact.js";import{useMemo as s,useCallback as o}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";const c=[{id:"personal.checking",nameKey:"ach.bankAccount.option.personal-checking"},{id:"personal.savings",nameKey:"ach.bankAccount.option.personal-savings"},{id:"business.checking",nameKey:"ach.bankAccount.option.business-checking"},{id:"business.savings",nameKey:"ach.bankAccount.option.business-savings"}],i=({onSelect:i,selectedAccountType:r,errorMessage:l,placeholder:m,disabled:p})=>{const{i18n:d}=t(),u=s((()=>c.map((e=>({id:e.id,name:d.get(e.nameKey)})))),[d,c]),b=o((e=>{const a=e.target.value;i(a)}),[i]);return n(a,{name:"ach-bankaccount-type",useLabelElement:!0,showContextualElement:!1,label:d.get("ach.bankAccount.label"),errorMessage:l,classNameModifiers:["selectedAccountType"]},n(e,{placeholder:m||d.get("ach.bankAccount.placeholder"),filterable:!1,items:u,selectedValue:r,onChange:b,name:"ach-bankaccount-type",disabled:p}))};export{i as AccountTypeSelector};
2
+ //# sourceMappingURL=AccountTypeSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountTypeSelector.js","sources":["../../../../../src/components/Ach/components/AccountTypeSelector.tsx"],"sourcesContent":["import Select from '../../internal/FormFields/Select';\nimport Field from '../../internal/FormFields/Field';\nimport { h } from 'preact';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { SelectItem } from '../../internal/FormFields/Select/types';\n\nconst SELECTOR_OPTIONS = [\n { id: 'personal.checking', nameKey: 'ach.bankAccount.option.personal-checking' },\n { id: 'personal.savings', nameKey: 'ach.bankAccount.option.personal-savings' },\n { id: 'business.checking', nameKey: 'ach.bankAccount.option.business-checking' },\n { id: 'business.savings', nameKey: 'ach.bankAccount.option.business-savings' }\n];\n\ninterface AccountTypeSelectorProps {\n selectedAccountType?: string;\n onSelect(value: string): void;\n disabled: boolean;\n errorMessage?: string;\n placeholder?: string;\n}\n\nconst AccountTypeSelector = ({ onSelect, selectedAccountType, errorMessage, placeholder, disabled }: AccountTypeSelectorProps) => {\n const { i18n } = useCoreContext();\n const options: SelectItem[] = useMemo(\n () =>\n SELECTOR_OPTIONS.map(option => ({\n id: option.id,\n name: i18n.get(option.nameKey)\n })),\n [i18n, SELECTOR_OPTIONS]\n );\n\n const onChange = useCallback(\n event => {\n const value = event.target.value;\n onSelect(value);\n },\n [onSelect]\n );\n\n return (\n <Field\n name={'ach-bankaccount-type'}\n useLabelElement={true}\n showContextualElement={false}\n label={i18n.get('ach.bankAccount.label')}\n errorMessage={errorMessage}\n classNameModifiers={['selectedAccountType']}\n >\n <Select\n placeholder={placeholder || i18n.get('ach.bankAccount.placeholder')}\n filterable={false}\n items={options}\n selectedValue={selectedAccountType}\n onChange={onChange}\n name={'ach-bankaccount-type'}\n disabled={disabled}\n />\n </Field>\n );\n};\n\nexport { AccountTypeSelector };\n"],"names":["SELECTOR_OPTIONS","id","nameKey","AccountTypeSelector","onSelect","selectedAccountType","errorMessage","placeholder","disabled","i18n","useCoreContext","options","useMemo","map","option","name","get","onChange","useCallback","event","value","target","h","Field","useLabelElement","showContextualElement","label","classNameModifiers","Select","filterable","items","selectedValue"],"mappings":"yVAOA,MAAMA,EAAmB,CACrB,CAAEC,GAAI,oBAAqBC,QAAS,4CACpC,CAAED,GAAI,mBAAoBC,QAAS,2CACnC,CAAED,GAAI,oBAAqBC,QAAS,4CACpC,CAAED,GAAI,mBAAoBC,QAAS,4CAWjCC,EAAsB,EAAGC,WAAUC,sBAAqBC,eAAcC,cAAaC,eACrF,MAAMC,KAAEA,GAASC,IACXC,EAAwBC,GAC1B,IACIZ,EAAiBa,KAAIC,IAAW,CAC5Bb,GAAIa,EAAOb,GACXc,KAAMN,EAAKO,IAAIF,EAAOZ,cAE9B,CAACO,EAAMT,IAGLiB,EAAWC,GACbC,IACI,MAAMC,EAAQD,EAAME,OAAOD,MAC3BhB,EAASgB,EAAAA,GAEb,CAAChB,IAGL,OACIkB,EAACC,EAAAA,CACGR,KAAM,uBACNS,iBAAiB,EACjBC,uBAAuB,EACvBC,MAAOjB,EAAKO,IAAI,yBAChBV,aAAcA,EACdqB,mBAAoB,CAAC,wBAErBL,EAACM,EAAAA,CACGrB,YAAaA,GAAeE,EAAKO,IAAI,+BACrCa,YAAY,EACZC,MAAOnB,EACPoB,cAAe1B,EACfY,SAAUA,EACVF,KAAM,uBACNP,SAAUA"}
@@ -0,0 +1,2 @@
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useMemo as r,useState as a,useRef as o,useEffect as t,useCallback as n}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import c from"../../internal/FormInstruction/FormInstruction.js";import{AccountTypeSelector as u}from"./AccountTypeSelector.js";import l from"../../internal/FormFields/Fieldset/Fieldset.js";import s from"../../../utils/useForm/useForm.js";import m from"../../internal/FormFields/Field/Field.js";import d from"../../internal/FormFields/InputText.js";import{achValidationRules as b,achFormatters as N}from"./validate.js";import g from"../../internal/StoreDetails/StoreDetails.js";import p from"./useSRPanelForACHErrors.js";function f({onChange:f,payButton:h,showPayButton:V,placeholders:F,hasHolderName:M,setComponentRef:y,enableStoreDetails:j}){const w=r((()=>["selectedAccountType","routingNumber","accountNumber","accountNumberVerification",...M?["ownerName"]:[]]),[M]),{i18n:A}=i(),[v,S]=a("ready"),{handleChangeFor:T,triggerValidation:x,data:C,errors:k,valid:I,isValid:B}=s({schema:w,rules:b,formatters:N}),[P,q]=a(!1),D="loading"===v,E=o(!1),H=o({setStatus:S,showValidation:()=>{E.current=!0,x()}});t((()=>{y(H.current)}),[y,H.current]),p({errors:k,data:C,isValidating:E}),t((()=>{f({data:C,valid:I,errors:k,isValid:B,storePaymentMethod:P})}),[f,C,I,k,B,P]);const R=n((e=>{T("accountNumber","input")(e);!!k.accountNumberVerification&&x(["accountNumberVerification"])}),[T,x,C.accountNumberVerification,k.accountNumberVerification]);return e("div",{className:"adyen-checkout__ach"},e(c,null),e(l,{classNameModifiers:[],label:A.get("ach.bankAccount.title")},e(u,{placeholder:F?.accountTypeSelector,onSelect:T("selectedAccountType"),selectedAccountType:C.selectedAccountType,disabled:D,errorMessage:!!k.selectedAccountType&&A.get(k.selectedAccountType.errorMessage)}),M&&e(m,{label:A.get("ach.accountHolderNameField.title"),errorMessage:!!k.ownerName&&A.get(k.ownerName.errorMessage),isValid:!!I.ownerName,name:"ownerName"},e(d,{disabled:D,name:"ownerName",placeholder:F?.ownerName,value:C.ownerName,onInput:T("ownerName","input"),onBlur:T("ownerName","blur"),required:!0})),e(m,{label:A.get("ach.routingNumber.label"),classNameModifiers:["col-60"],errorMessage:!!k.routingNumber&&A.get(k.routingNumber.errorMessage),name:"routingNumber",isValid:!!I.routingNumber},e(d,{disabled:D,name:"routingNumber",placeholder:F?.routingNumber,value:C.routingNumber,onInput:T("routingNumber","input"),onBlur:T("routingNumber","blur"),required:!0,maxlength:9})),e(m,{label:A.get("ach.bankAccountNumber.label"),classNameModifiers:["col-40"],errorMessage:!!k.accountNumber&&A.get(k.accountNumber.errorMessage),isValid:!!I.accountNumber,name:"accountNumber"},e(d,{disabled:D,name:"accountNumber",placeholder:F?.accountNumber,value:C.accountNumber,onInput:R,onBlur:T("accountNumber","blur"),required:!0,maxlength:17})),e(m,{label:A.get("ach.bankAccountNumberVerification.label"),errorMessage:!!k.accountNumberVerification&&A.get(k.accountNumberVerification.errorMessage),name:"accountNumberVerification",isValid:!!I.accountNumberVerification},e(d,{disabled:D,name:"accountNumberVerification",placeholder:F?.accountNumberVerification,value:C.accountNumberVerification,onInput:T("accountNumberVerification","input"),onBlur:T("accountNumberVerification","blur"),required:!0,maxlength:17}))),j&&e(g,{disabled:D,onChange:q}),V&&h({status:v,label:A.get("confirmPurchase")}))}export{f as default};
2
+ //# sourceMappingURL=AchComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AchComponent.js","sources":["../../../../../src/components/Ach/components/AchComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { AccountTypeSelector } from './AccountTypeSelector';\nimport Fieldset from '../../internal/FormFields/Fieldset';\nimport useForm from '../../../utils/useForm';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\nimport { achValidationRules, achFormatters } from './validate';\nimport StoreDetails from '../../internal/StoreDetails';\n\nimport type { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport type { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport type { AchPlaceholders } from '../types';\nimport type { AchStateErrors } from './useSRPanelForACHErrors';\nimport useSRPanelForAchErrors from './useSRPanelForACHErrors';\n\ntype AchForm = {\n selectedAccountType: string;\n ownerName: string;\n routingNumber: string;\n accountNumber: string;\n accountNumberVerification: string;\n};\n\ninterface AchComponentProps {\n onChange({\n data,\n valid,\n errors,\n isValid,\n storePaymentMethod\n }: {\n data: AchForm;\n valid: { [key: string]: boolean };\n errors: { [key: string]: any };\n isValid: boolean;\n storePaymentMethod: boolean;\n }): void;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n hasHolderName: boolean;\n showPayButton: boolean;\n enableStoreDetails: boolean;\n placeholders?: AchPlaceholders;\n}\n\nfunction AchComponent({ onChange, payButton, showPayButton, placeholders, hasHolderName, setComponentRef, enableStoreDetails }: AchComponentProps) {\n const schema = useMemo(\n () => ['selectedAccountType', 'routingNumber', 'accountNumber', 'accountNumberVerification', ...(hasHolderName ? ['ownerName'] : [])],\n [hasHolderName]\n );\n const { i18n } = useCoreContext();\n const [status, setStatus] = useState('ready');\n const { handleChangeFor, triggerValidation, data, errors, valid, isValid } = useForm<AchForm>({\n schema,\n rules: achValidationRules,\n formatters: achFormatters\n });\n const [storePaymentMethod, setStorePaymentMethod] = useState(false);\n const isFormDisabled = status === 'loading';\n\n const isValidating = useRef(false);\n\n const achRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n isValidating.current = true;\n triggerValidation();\n }\n });\n\n useEffect(() => {\n setComponentRef(achRef.current);\n }, [setComponentRef, achRef.current]);\n\n useSRPanelForAchErrors({ errors: errors as AchStateErrors, data, isValidating });\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid, storePaymentMethod });\n }, [onChange, data, valid, errors, isValid, storePaymentMethod]);\n\n /**\n * If the \"Verify account number\" field has errors, we want to trigger\n * its validation when there is any change done to the \"Account number\" field\n */\n const onAccountNumberInput = useCallback(\n (event: h.JSX.TargetedInputEvent<HTMLInputElement>) => {\n handleChangeFor('accountNumber', 'input')(event);\n\n const hasAccountVerificationError = !!errors.accountNumberVerification;\n if (hasAccountVerificationError) {\n triggerValidation(['accountNumberVerification']);\n }\n },\n [handleChangeFor, triggerValidation, data.accountNumberVerification, errors.accountNumberVerification]\n );\n\n return (\n <div className=\"adyen-checkout__ach\">\n <FormInstruction />\n\n <Fieldset classNameModifiers={[]} label={i18n.get('ach.bankAccount.title')}>\n <AccountTypeSelector\n placeholder={placeholders?.accountTypeSelector}\n onSelect={handleChangeFor('selectedAccountType')}\n selectedAccountType={data.selectedAccountType}\n disabled={isFormDisabled}\n errorMessage={!!errors.selectedAccountType && i18n.get(errors.selectedAccountType.errorMessage)}\n />\n\n {hasHolderName && (\n <Field\n label={i18n.get('ach.accountHolderNameField.title')}\n errorMessage={!!errors.ownerName && i18n.get(errors.ownerName.errorMessage)}\n isValid={!!valid.ownerName}\n name={'ownerName'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'ownerName'}\n placeholder={placeholders?.ownerName}\n value={data.ownerName}\n onInput={handleChangeFor('ownerName', 'input')}\n onBlur={handleChangeFor('ownerName', 'blur')}\n required={true}\n />\n </Field>\n )}\n\n <Field\n label={i18n.get('ach.routingNumber.label')}\n classNameModifiers={['col-60']}\n errorMessage={!!errors.routingNumber && i18n.get(errors.routingNumber.errorMessage)}\n name={'routingNumber'}\n isValid={!!valid.routingNumber}\n >\n <InputText\n disabled={isFormDisabled}\n name={'routingNumber'}\n placeholder={placeholders?.routingNumber}\n value={data.routingNumber}\n onInput={handleChangeFor('routingNumber', 'input')}\n onBlur={handleChangeFor('routingNumber', 'blur')}\n required={true}\n maxlength={9}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumber.label')}\n classNameModifiers={['col-40']}\n errorMessage={!!errors.accountNumber && i18n.get(errors.accountNumber.errorMessage)}\n isValid={!!valid.accountNumber}\n name={'accountNumber'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumber'}\n placeholder={placeholders?.accountNumber}\n value={data.accountNumber}\n onInput={onAccountNumberInput}\n onBlur={handleChangeFor('accountNumber', 'blur')}\n required={true}\n maxlength={17}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumberVerification.label')}\n errorMessage={!!errors.accountNumberVerification && i18n.get(errors.accountNumberVerification.errorMessage)}\n name={'accountNumberVerification'}\n isValid={!!valid.accountNumberVerification}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumberVerification'}\n placeholder={placeholders?.accountNumberVerification}\n value={data.accountNumberVerification}\n onInput={handleChangeFor('accountNumberVerification', 'input')}\n onBlur={handleChangeFor('accountNumberVerification', 'blur')}\n required={true}\n maxlength={17}\n />\n </Field>\n </Fieldset>\n\n {enableStoreDetails && <StoreDetails disabled={isFormDisabled} onChange={setStorePaymentMethod} />}\n\n {showPayButton && payButton({ status, label: i18n.get('confirmPurchase') })}\n </div>\n );\n}\n\nexport default AchComponent;\n"],"names":["AchComponent","onChange","payButton","showPayButton","placeholders","hasHolderName","setComponentRef","enableStoreDetails","schema","useMemo","i18n","useCoreContext","status","setStatus","useState","handleChangeFor","triggerValidation","data","errors","valid","isValid","useForm","rules","achValidationRules","formatters","achFormatters","storePaymentMethod","setStorePaymentMethod","isFormDisabled","isValidating","useRef","achRef","showValidation","current","useEffect","useSRPanelForAchErrors","onAccountNumberInput","useCallback","event","accountNumberVerification","h","div","className","FormInstruction","Fieldset","classNameModifiers","label","get","AccountTypeSelector","placeholder","accountTypeSelector","onSelect","selectedAccountType","disabled","errorMessage","Field","ownerName","name","InputText","value","onInput","onBlur","required","routingNumber","maxlength","accountNumber","StoreDetails"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{useState as r,useEffect as s}from"../../../external/preact/hooks/dist/hooks.js";import e from"../../../core/Errors/useSRPanelContext.js";import{usePrevious as t}from"../../../utils/hookUtils.js";import{ERROR_ACTION_BLUR_SCENARIO as o,ERROR_ACTION_FOCUS_FIELD as a}from"../../../core/Errors/constants.js";import{setFocusOnField as c}from"../../../utils/setFocus.js";import{getArrayDifferences as i}from"../../../utils/arrayUtils.js";const n=({errors:n,data:u,isValidating:l})=>{const[m,f]=r(null),d=t(m),{setSRMessagesFromObjects:p,setSRMessagesFromStrings:h,clearSRPanel:S,shouldMoveFocusSR:g}=e(),j=p?.({}),y=["selectedAccountType","ownerName","routingNumber","accountNumber","accountNumberVerification"];s((()=>{try{const r=j?.({errors:n,isValidating:l.current,layout:y}),s=r?.currentErrorsSortedByLayout;switch(f(s),r?.action){case a:g&&c(".adyen-checkout__ach",r.fieldToFocus),setTimeout((()=>{l.current=!1}),300);break;case o:{const r=i(s,d,"field"),e=r?.[0];if(e){const r=!0?e.errorMessage:null;h(r)}else S();break}}}catch(r){}}),[n,u])};export{n as default};
2
+ //# sourceMappingURL=useSRPanelForACHErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSRPanelForACHErrors.js","sources":["../../../../../src/components/Ach/components/useSRPanelForACHErrors.ts"],"sourcesContent":["import { useEffect, useState, MutableRef } from 'preact/hooks';\nimport { SetSRMessagesReturnObject } from '../../../core/Errors/types';\nimport useSRPanelContext from '../../../core/Errors/useSRPanelContext';\nimport { SetSRMessagesReturnFn } from '../../../core/Errors/SRPanelProvider';\nimport { usePrevious } from '../../../utils/hookUtils';\nimport { ERROR_ACTION_BLUR_SCENARIO, ERROR_ACTION_FOCUS_FIELD } from '../../../core/Errors/constants';\nimport { setFocusOnField } from '../../../utils/setFocus';\nimport { getArrayDifferences } from '../../../utils/arrayUtils';\nimport { ValidationRuleResult } from '../../../utils/Validator/ValidationRuleResult';\n\nexport interface AchStateErrors {\n selectedAccountType: ValidationRuleResult;\n ownerName: ValidationRuleResult;\n routingNumber: ValidationRuleResult;\n accountNumber: ValidationRuleResult;\n accountNumberVerification: ValidationRuleResult;\n}\n\ninterface UseSRPanelForErrorsProps {\n errors: AchStateErrors;\n data: AchStateData;\n isValidating: MutableRef<boolean>;\n}\n\ninterface AchStateData {\n selectedAccountType: string;\n ownerName: string;\n routingNumber: string;\n accountNumber: string;\n accountNumberVerification: string;\n}\n\nconst useSRPanelForACHErrors = ({ errors, data, isValidating }: UseSRPanelForErrorsProps) => {\n // Relates to onBlur errors\n const [sortedErrorList, setSortedErrorList] = useState(null);\n // Get the previous value (Relates to onBlur errors)\n const previousSortedErrors = usePrevious(sortedErrorList);\n const { setSRMessagesFromObjects, setSRMessagesFromStrings, clearSRPanel, shouldMoveFocusSR } = useSRPanelContext();\n const setSRMessages: SetSRMessagesReturnFn = setSRMessagesFromObjects?.({});\n\n // Fixed layout for the ACH comp\n const layout = ['selectedAccountType', 'ownerName', 'routingNumber', 'accountNumber', 'accountNumberVerification'];\n\n useEffect(() => {\n try {\n const srPanelResp: SetSRMessagesReturnObject = setSRMessages?.({ errors, isValidating: isValidating.current, layout });\n\n // Relates to onBlur errors\n const currentErrorsSortedByLayout = srPanelResp?.currentErrorsSortedByLayout;\n // Store the array of sorted error objects separately so that we can use it to make comparisons between the old and new arrays\n setSortedErrorList(currentErrorsSortedByLayout);\n\n /**\n * Need extra actions after setting SRPanel messages in order to focus field (if required) and because we have some errors that are fired onBlur\n */\n switch (srPanelResp?.action) {\n // A call to focus the first field in error will always follow the call to validate the whole form\n case ERROR_ACTION_FOCUS_FIELD:\n // Focus field in error, if required\n if (shouldMoveFocusSR) setFocusOnField('.adyen-checkout__ach', srPanelResp.fieldToFocus);\n // Remove 'showValidation' mode - allowing time for collation of all the fields in error whilst it is 'showValidation' mode (some errors come in a second render pass)\n setTimeout(() => {\n isValidating.current = false;\n }, 300);\n break;\n\n /**\n * Relates to errors triggered by a field blurring (some pm forms have this, some don't) - check if there is an error to either set or to clear\n */\n case ERROR_ACTION_BLUR_SCENARIO: {\n const difference = getArrayDifferences(currentErrorsSortedByLayout, previousSortedErrors, 'field');\n\n const latestErrorMsg = difference?.[0];\n\n if (latestErrorMsg) {\n // Is error actually a blur based one - depends on the specific fields in a component as to whether they validate on blur\n // In the case of the ACH form currently all the fields validate on blur\n const isBlurBasedError = true;\n\n // Only add blur based errors to the error panel - doing this step prevents the non-blur based errors from being read out twice\n const latestSRError = isBlurBasedError ? latestErrorMsg.errorMessage : null;\n setSRMessagesFromStrings(latestSRError);\n } else {\n // called when previousSortedErrors.length >= currentErrorsSortedByLayout.length\n clearSRPanel();\n }\n break;\n }\n default:\n break;\n }\n } catch (_) {\n // We don't handle the error related to the sr panel, let it fail silently.\n }\n }, [errors, data]);\n};\n\nexport default useSRPanelForACHErrors;\n"],"names":["useSRPanelForACHErrors","errors","data","isValidating","sortedErrorList","setSortedErrorList","useState","previousSortedErrors","usePrevious","setSRMessagesFromObjects","setSRMessagesFromStrings","clearSRPanel","shouldMoveFocusSR","useSRPanelContext","setSRMessages","layout","useEffect","srPanelResp","current","currentErrorsSortedByLayout","action","ERROR_ACTION_FOCUS_FIELD","setFocusOnField","fieldToFocus","setTimeout","ERROR_ACTION_BLUR_SCENARIO","difference","getArrayDifferences","latestErrorMsg","latestSRError","errorMessage","_"],"mappings":"ubAgCMA,MAAAA,EAAyB,EAAGC,SAAQC,OAAMC,mBAE5C,MAAOC,EAAiBC,GAAsBC,EAAS,MAEjDC,EAAuBC,EAAYJ,IACnCK,yBAAEA,EAAwBC,yBAAEA,EAAwBC,aAAEA,EAAYC,kBAAEA,GAAsBC,IAC1FC,EAAuCL,IAA2B,IAGlEM,EAAS,CAAC,sBAAuB,YAAa,gBAAiB,gBAAiB,6BAEtFC,GAAU,KACN,IACI,MAAMC,EAAyCH,IAAgB,CAAEb,SAAQE,aAAcA,EAAae,QAASH,WAGvGI,EAA8BF,GAAaE,4BAOjD,OALAd,EAAmBc,GAKXF,GAAaG,QAEjB,KAAKC,EAEGT,GAAmBU,EAAgB,uBAAwBL,EAAYM,cAE3EC,YAAW,KACPrB,EAAae,SAAU,CAAA,GACxB,KACH,MAKJ,KAAKO,EAA4B,CAC7B,MAAMC,EAAaC,EAAoBR,EAA6BZ,EAAsB,SAEpFqB,EAAiBF,IAAa,GAEpC,GAAIE,EAAgB,CAGhB,MAGMC,GAHmB,EAGgBD,EAAeE,aAAe,KACvEpB,EAAyBmB,QAGzBlB,IAEJ,KACJ,EAIR,CAAE,MAAOoB,GAET,IACD,CAAC9B,EAAQC,GAAK"}
@@ -0,0 +1,2 @@
1
+ import{digitsOnlyFormatter as e}from"../../../utils/Formatters/formatters.js";import{isEmpty as r}from"../../../utils/validator-utils.js";const a=/^\d{4,17}$/,t=/^\d{9}$/,o={selectedAccountType:{validate:e=>!r(e)||null,errorMessage:"ach.bankAccount.nothing-selected-error",modes:["blur"]},ownerName:{validate:e=>!r(e)||null,errorMessage:"ach.accountHolderNameField.invalid",modes:["blur"]},routingNumber:[{validate:e=>!r(e)||null,errorMessage:"ach.loc.947",modes:["blur"]},{validate:e=>r(e)?null:t.test(e),errorMessage:"ach.loc.948",modes:["blur"]}],accountNumber:[{validate:e=>!r(e)||null,errorMessage:"ach.num.945",modes:["blur"]},{validate:e=>r(e)?null:a.test(e),errorMessage:"ach.num.946",modes:["blur"]}],accountNumberVerification:[{validate:(e,a)=>{const{accountNumber:t}=a.state.data;return!(!t&&r(e))||null},errorMessage:"ach.bankAccountNumberVerification.error.empty",modes:["blur"]},{validate:(e,a)=>{if(r(e))return null;const{accountNumber:t}=a.state.data;return t===e},errorMessage:"ach.bankAccountNumberVerification.error.not-match",modes:["blur"]}]},u={routingNumber:e,accountNumber:e,accountNumberVerification:e};export{u as achFormatters,o as achValidationRules};
2
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sources":["../../../../../src/components/Ach/components/validate.ts"],"sourcesContent":["import { ValidatorRules } from '../../../utils/Validator/types';\nimport { digitsOnlyFormatter } from '../../../utils/Formatters/formatters';\nimport { isEmpty } from '../../../utils/validator-utils';\n\nconst accountNumberRegex = /^\\d{4,17}$/;\nconst routingNumberRegex = /^\\d{9}$/;\n\nexport const achValidationRules: ValidatorRules = {\n selectedAccountType: {\n validate: value => (isEmpty(value) ? null : true),\n errorMessage: 'ach.bankAccount.nothing-selected-error',\n modes: ['blur']\n },\n ownerName: {\n validate: value => (isEmpty(value) ? null : true),\n errorMessage: 'ach.accountHolderNameField.invalid',\n modes: ['blur']\n },\n routingNumber: [\n // Empty field\n {\n validate: value => (isEmpty(value) ? null : true),\n errorMessage: 'ach.loc.947',\n modes: ['blur']\n },\n // Incomplete field\n {\n validate: value => {\n if (isEmpty(value)) return null;\n return routingNumberRegex.test(value);\n },\n errorMessage: 'ach.loc.948',\n modes: ['blur']\n }\n ],\n accountNumber: [\n // Empty field\n {\n validate: value => (isEmpty(value) ? null : true),\n errorMessage: 'ach.num.945',\n modes: ['blur']\n },\n // Incomplete field: value is not between 4 and 17 chars\n {\n validate: value => {\n if (isEmpty(value)) return null;\n return accountNumberRegex.test(value);\n },\n errorMessage: 'ach.num.946',\n modes: ['blur']\n }\n ],\n accountNumberVerification: [\n {\n /**\n * If the account number is empty, then validate that the field has an empty error state.\n * Otherwise, the other validator will validate if the fields match\n */\n validate: (value, context) => {\n const { accountNumber } = context.state.data;\n return !accountNumber && isEmpty(value) ? null : true;\n },\n errorMessage: 'ach.bankAccountNumberVerification.error.empty',\n modes: ['blur']\n },\n {\n validate: (value, context) => {\n if (isEmpty(value)) return null;\n const { accountNumber } = context.state.data;\n return accountNumber === value;\n },\n errorMessage: 'ach.bankAccountNumberVerification.error.not-match',\n modes: ['blur']\n }\n ]\n};\n\nexport const achFormatters = {\n routingNumber: digitsOnlyFormatter,\n accountNumber: digitsOnlyFormatter,\n accountNumberVerification: digitsOnlyFormatter\n};\n"],"names":["accountNumberRegex","routingNumberRegex","achValidationRules","selectedAccountType","validate","value","isEmpty","errorMessage","modes","ownerName","routingNumber","test","accountNumber","accountNumberVerification","context","state","data","achFormatters","digitsOnlyFormatter"],"mappings":"0IAIA,MAAMA,EAAqB,aACrBC,EAAqB,UAEdC,EAAqC,CAC9CC,oBAAqB,CACjBC,SAAUC,IAAUC,EAAQD,IAAS,KACrCE,aAAc,yCACdC,MAAO,CAAC,SAEZC,UAAW,CACPL,SAAUC,IAAUC,EAAQD,IAAS,KACrCE,aAAc,qCACdC,MAAO,CAAC,SAEZE,cAAe,CAEX,CACIN,SAAUC,IAAUC,EAAQD,IAAS,KACrCE,aAAc,cACdC,MAAO,CAAC,SAGZ,CACIJ,SAAUC,GACFC,EAAQD,GAAe,KACpBJ,EAAmBU,KAAKN,GAEnCE,aAAc,cACdC,MAAO,CAAC,UAGhBI,cAAe,CAEX,CACIR,SAAUC,IAAUC,EAAQD,IAAS,KACrCE,aAAc,cACdC,MAAO,CAAC,SAGZ,CACIJ,SAAUC,GACFC,EAAQD,GAAe,KACpBL,EAAmBW,KAAKN,GAEnCE,aAAc,cACdC,MAAO,CAAC,UAGhBK,0BAA2B,CACvB,CAKIT,SAAU,CAACC,EAAOS,KACd,MAAMF,cAAEA,GAAkBE,EAAQC,MAAMC,KACxC,SAAQJ,GAAiBN,EAAQD,KAAS,IAAO,EAErDE,aAAc,gDACdC,MAAO,CAAC,SAEZ,CACIJ,SAAU,CAACC,EAAOS,KACd,GAAIR,EAAQD,GAAQ,OAAO,KAC3B,MAAMO,cAAEA,GAAkBE,EAAQC,MAAMC,KACxC,OAAOJ,IAAkBP,CAAAA,EAE7BE,aAAc,oDACdC,MAAO,CAAC,WAKPS,EAAgB,CACzBP,cAAeQ,EACfN,cAAeM,EACfL,0BAA2BK"}
@@ -0,0 +1,2 @@
1
+ const a={hasHolderName:!0};export{a as default};
2
+ //# sourceMappingURL=defaultProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultProps.js","sources":["../../../../src/components/Ach/defaultProps.ts"],"sourcesContent":["import { AchConfiguration } from './types';\n\nconst defaultProps: AchConfiguration = {\n hasHolderName: true\n};\n\nexport default defaultProps;\n"],"names":["defaultProps","hasHolderName"],"mappings":"AAEA,MAAMA,EAAiC,CACnCC,eAAe"}
@@ -1,2 +1,2 @@
1
- import{LEDGER_CURRENCIES_PER_REGION as e,AMAZONPAY_URL_US as n,AMAZONPAY_URL_EU as r,FALLBACK_LOCALE_US as t,FALLBACK_LOCALE_EU as o,SUPPORTED_LOCALES_US as c,SUPPORTED_LOCALES_EU as u}from"./config.js";import{getDecimalAmount as i}from"../../utils/amount-util.js";function a(e){return"US"===e?n:r}function l(n){return{...n.buttonColor&&{buttonColor:n.buttonColor},...n.design&&{design:g(n.design)},checkoutLanguage:m(n.locale,n.configuration.region),ledgerCurrency:e[n.configuration.region]||n.currency||n.amount?.currency,merchantId:n.configuration.merchantId,productType:n.productType,placement:n.placement,sandbox:"TEST"===n.environment}}function s(e){return"US"===e?t:o}function d(e){return"US"===e?c:u}function m(e,n){return d(n).includes(e)?e:s(n)}function g(e){return"noTagline"===e?"C0001":null}function f(e){return{amount:String(i(e.value,e.currency)),currencyCode:e.currency}}function p(e){const{addressDetails:n,cancelUrl:r,checkoutMode:t,deliverySpecifications:o,returnUrl:c,merchantMetadata:u,chargePermissionType:i,recurringMetadata:a}=e,{storeId:l}=e.configuration,s="ProcessOrder"===t,d=s?f(e.amount):null;return{storeId:l,chargePermissionType:i,webCheckoutDetails:{...s?{checkoutResultReturnUrl:c}:{checkoutReviewReturnUrl:c},...r&&{checkoutCancelUrl:r},...s&&{checkoutMode:t}},...s&&{paymentDetails:{chargeAmount:d,paymentIntent:"Confirm",presentmentCurrency:d.currencyCode,totalOrderAmount:d}},...a&&{recurringMetadata:a},...u&&{merchantMetadata:u},...o&&{deliverySpecifications:o},...n&&{addressDetails:n}}}export{l as getAmazonPaySettings,a as getAmazonPayUrl,f as getChargeAmount,m as getCheckoutLocale,g as getDesignCode,s as getFallbackLocale,p as getPayloadJSON,d as getSupportedLocales};
1
+ import{AMAZONPAY_URL_US as e,AMAZONPAY_URL_EU as n,LEDGER_CURRENCIES_PER_REGION as r,FALLBACK_LOCALE_US as t,FALLBACK_LOCALE_EU as o,SUPPORTED_LOCALES_US as c,SUPPORTED_LOCALES_EU as u}from"./config.js";import{getDecimalAmount as i}from"../../utils/amount-util.js";function a(r){return"US"===r?e:n}function l(e){return{...e.buttonColor&&{buttonColor:e.buttonColor},...e.design&&{design:g(e.design)},checkoutLanguage:m(e.locale,e.configuration.region),ledgerCurrency:r[e.configuration.region]||e.currency||e.amount?.currency,merchantId:e.configuration.merchantId,productType:e.productType,placement:e.placement,sandbox:"TEST"===e.environment}}function s(e){return"US"===e?t:o}function d(e){return"US"===e?c:u}function m(e,n){return d(n).includes(e)?e:s(n)}function g(e){return"noTagline"===e?"C0001":null}function f(e){return{amount:String(i(e.value,e.currency)),currencyCode:e.currency}}function p(e){const{addressDetails:n,cancelUrl:r,checkoutMode:t,deliverySpecifications:o,returnUrl:c,merchantMetadata:u,chargePermissionType:i,recurringMetadata:a}=e,{storeId:l}=e.configuration,s="ProcessOrder"===t,d=s?f(e.amount):null;return{storeId:l,chargePermissionType:i,webCheckoutDetails:{...s?{checkoutResultReturnUrl:c}:{checkoutReviewReturnUrl:c},...r&&{checkoutCancelUrl:r},...s&&{checkoutMode:t}},...s&&{paymentDetails:{chargeAmount:d,paymentIntent:"Confirm",presentmentCurrency:d.currencyCode,totalOrderAmount:d}},...a&&{recurringMetadata:a},...u&&{merchantMetadata:u},...o&&{deliverySpecifications:o},...n&&{addressDetails:n}}}export{l as getAmazonPaySettings,a as getAmazonPayUrl,f as getChargeAmount,m as getCheckoutLocale,g as getDesignCode,s as getFallbackLocale,p as getPayloadJSON,d as getSupportedLocales};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import s from"./components/ApplePayButton.js";import i from"./services/ApplePayService.js";import o from"../../utils/base64.js";import r from"./defaultProps.js";import{httpPost as n}from"../../core/Services/http.js";import{preparePaymentRequest as a}from"./utils/payment-request.js";import p from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as l}from"../tx-variants.js";import{sanitizeResponse as d,verifyPaymentDidNotFail as c}from"../internal/UIElement/utils.js";import{ANALYTICS_SELECTED_STR as h,ANALYTICS_INSTANT_PAYMENT_BUTTON as u}from"../../core/Analytics/constants.js";import{resolveSupportedVersion as y}from"./utils/resolve-supported-version.js";import{formatApplePayContactToAdyenAddressFormat as m}from"./utils/format-applepay-contact-to-adyen-format.js";import{mapBrands as P}from"./utils/map-adyen-brands-to-applepay-brands.js";import A from"./services/ApplePaySdkLoader.js";function b(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}class f extends t{formatProps(e){const t=e.brands?.length?P(e.brands):e.supportedNetworks;return{...e,configuration:e.configuration,supportedNetworks:t,buttonLocale:e.buttonLocale??e.i18n?.locale,totalPriceLabel:e.totalPriceLabel||e.configuration?.merchantName}}formatData(){const{applePayToken:e,billingAddress:t,deliveryAddress:s}=this.state,{isExpress:i}=this.props;return{paymentMethod:{type:f.type,applePayToken:e,...i&&{subtype:"express"}},...t&&{billingAddress:t},...s&&{deliveryAddress:s}}}submitAnalytics(e){super.submitAnalytics({...e},this.props)}get isValid(){return!0}async applePayCapabilities(e){const t=e||this.props.configuration.merchantId;try{return await this.sdkLoader.isSdkLoaded(),await(ApplePaySession?.applePayCapabilities(t))}catch(e){throw new p("ERROR","Apple Pay: Error when requesting applePayCapabilities()",{cause:e})}}async isAvailable(){if("https:"!==window.location.protocol)return Promise.reject(new p("IMPLEMENTATION_ERROR","Trying to start an Apple Pay session from an insecure document"));try{return await this.sdkLoader.isSdkLoaded(),ApplePaySession?.canMakePayments()?Promise.resolve():Promise.reject(new p("ERROR","Apple Pay is not available on this device"))}catch(e){return Promise.reject(new p("ERROR","Apple Pay SDK failed to load",{cause:e}))}}defineApplePayVersionNumber(){"https:"===window.location.protocol&&(this.applePayVersionNumber=this.props.version||y(14))}configureApplePayWebOptions(){if(window.ApplePayWebOptions){const{renderApplePayCodeAs:e,onApplePayCodeClose:t}=this.props;window.ApplePayWebOptions.set({renderApplePayCodeAs:e,...t&&{onApplePayCodeClose:t}})}}startSession(){const{onValidateMerchant:e,onPaymentMethodSelected:t,onShippingMethodSelected:s,onShippingContactSelected:o}=this.props,r=a({companyName:this.props.configuration.merchantName,countryCode:this.core.options.countryCode,...this.props}),n=new i(r,{version:this.applePayVersionNumber,onError:e=>{this.handleError(new p("ERROR","ApplePay - Something went wrong on ApplePayService",{cause:e}))},onCancel:e=>{this.handleError(new p("CANCEL","ApplePay UI dismissed",{cause:e}))},onPaymentMethodSelected:t,onShippingMethodSelected:s,onShippingContactSelected:o,onValidateMerchant:e||this.validateMerchant,onPaymentAuthorized:(e,t,s)=>{const i=m(s.payment.billingContact),o=m(s.payment.shippingContact,!0);this.setState({applePayToken:btoa(JSON.stringify(s.payment.token.paymentData)),authorizedEvent:s,...i&&{billingAddress:i},...o&&{deliveryAddress:o}}),this.handleAuthorization().then(this.makePaymentsCall).then(d).then(c).then(this.collectOrderTrackingDetailsIfNeeded).then((({paymentResponse:t,orderDetails:s})=>(e({status:ApplePaySession.STATUS_SUCCESS,...s&&{orderDetails:s}}),t))).then((e=>{this.handleResponse(e)})).catch((e=>{const s=e?.error?.applePayError;t({status:ApplePaySession.STATUS_FAILURE,errors:s?Array.isArray(s)?s:[s]:void 0});const i={...e,error:{applePayError:s}};this.handleFailedResult(i)}))}});return new Promise(((e,t)=>this.props.onClick(e,t))).then((()=>{n.begin()})).catch((()=>({})))}async handleAuthorization(){return new Promise(((e,t)=>{this.props.onAuthorized||e();const{authorizedEvent:s,billingAddress:i,deliveryAddress:o}=this.state;this.props.onAuthorized({authorizedEvent:s,...i&&{billingAddress:i},...o&&{deliveryAddress:o}},{resolve:e,reject:t})})).catch((e=>{const t={error:{applePayError:e}};return Promise.reject(t)}))}async collectOrderTrackingDetailsIfNeeded(e){return new Promise(((e,t)=>{if(!this.props.onOrderTrackingRequest)return e();this.props.onOrderTrackingRequest(e,t)})).then((t=>({paymentResponse:e,...t&&{orderDetails:t}}))).catch((()=>({paymentResponse:e})))}async validateMerchant(e,t){const{hostname:s}=window.location,{clientKey:i,configuration:r,loadingContext:a,initiative:p}=this.props,{merchantName:l,merchantId:d}=r,c={loadingContext:a,path:`v1/applePay/sessions?clientKey=${i}`},h={displayName:l,domainName:s,initiative:p,merchantIdentifier:d};try{const s=await n(c,h),i=o.decode(s.data);if(i.success){e(JSON.parse(i.data))}else t("Could not decode Apple Pay session")}catch(e){t("Could not get Apple Pay session")}}render(){return this.props.showPayButton?e(s,{buttonStyle:this.props.buttonColor,buttonType:this.props.buttonType,buttonLocale:this.props.buttonLocale,onClick:this.submit}):null}constructor(e,t){super(e,t),b(this,"sdkLoader",void 0),b(this,"applePayVersionNumber",void 0),b(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:h,target:u}),this.startSession()}));const{isExpress:s,onShippingContactSelected:i,onShippingMethodSelected:o}=this.props;if(!1===s&&(i||o))throw new p("IMPLEMENTATION_ERROR",'ApplePay - You must set "isExpress" flag to "true" in order to use "onShippingContactSelected" and/or "onShippingMethodSelected" callbacks');this.startSession=this.startSession.bind(this),this.submit=this.submit.bind(this),this.validateMerchant=this.validateMerchant.bind(this),this.collectOrderTrackingDetailsIfNeeded=this.collectOrderTrackingDetailsIfNeeded.bind(this),this.handleAuthorization=this.handleAuthorization.bind(this),this.defineApplePayVersionNumber=this.defineApplePayVersionNumber.bind(this),this.configureApplePayWebOptions=this.configureApplePayWebOptions.bind(this),this.sdkLoader=new A,this.sdkLoader.load().then(this.defineApplePayVersionNumber).then(this.configureApplePayWebOptions).catch((e=>{this.handleError(e)}))}}b(f,"type",l.applepay),b(f,"defaultProps",r);export{f as default};
1
+ import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import s from"./components/ApplePayButton.js";import i from"./services/ApplePayService.js";import o from"../../utils/base64.js";import r from"./defaultProps.js";import{httpPost as n}from"../../core/Services/http.js";import{preparePaymentRequest as a}from"./utils/payment-request.js";import p from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as l}from"../tx-variants.js";import{sanitizeResponse as d,verifyPaymentDidNotFail as c}from"../internal/UIElement/utils.js";import{ANALYTICS_INSTANT_PAYMENT_BUTTON as h,ANALYTICS_SELECTED_STR as m}from"../../core/Analytics/constants.js";import{resolveSupportedVersion as y}from"./utils/resolve-supported-version.js";import{formatApplePayContactToAdyenAddressFormat as u}from"./utils/format-applepay-contact-to-adyen-format.js";import{mapBrands as P}from"./utils/map-adyen-brands-to-applepay-brands.js";import A from"./services/ApplePaySdkLoader.js";import{detectInIframe as b}from"../../utils/detectInIframe.js";function f(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}class g extends t{formatProps(e){const t=e.brands?.length?P(e.brands):e.supportedNetworks;return{...e,configuration:e.configuration,supportedNetworks:t,buttonLocale:e.buttonLocale??e.i18n?.locale,totalPriceLabel:e.totalPriceLabel||e.configuration?.merchantName,renderApplePayCodeAs:e.renderApplePayCodeAs??(b()?"window":"modal")}}formatData(){const{applePayToken:e,billingAddress:t,deliveryAddress:s}=this.state,{isExpress:i}=this.props;return{paymentMethod:{type:g.type,applePayToken:e,...i&&{subtype:"express"}},...t&&{billingAddress:t},...s&&{deliveryAddress:s}}}submitAnalytics(e){super.submitAnalytics({...e},this.props)}get isValid(){return!0}async applePayCapabilities(e){const t=e||this.props.configuration.merchantId;try{return await this.sdkLoader.isSdkLoaded(),await(ApplePaySession?.applePayCapabilities(t))}catch(e){throw new p("ERROR","Apple Pay: Error when requesting applePayCapabilities()",{cause:e})}}async isAvailable(){if("https:"!==window.location.protocol)return Promise.reject(new p("IMPLEMENTATION_ERROR","Trying to start an Apple Pay session from an insecure document"));try{return await this.sdkLoader.isSdkLoaded(),ApplePaySession?.canMakePayments()?Promise.resolve():Promise.reject(new p("ERROR","Apple Pay is not available on this device"))}catch(e){return Promise.reject(new p("ERROR","Apple Pay SDK failed to load",{cause:e}))}}defineApplePayVersionNumber(){"https:"===window.location.protocol&&(this.applePayVersionNumber=this.props.version||y(14))}configureApplePayWebOptions(){if(window.ApplePayWebOptions){const{renderApplePayCodeAs:e,onApplePayCodeClose:t}=this.props;window.ApplePayWebOptions.set({renderApplePayCodeAs:e,...t&&{onApplePayCodeClose:t}})}}startSession(){const{onValidateMerchant:e,onPaymentMethodSelected:t,onShippingMethodSelected:s,onShippingContactSelected:o}=this.props,r=a({companyName:this.props.configuration.merchantName,countryCode:this.core.options.countryCode,...this.props}),n=new i(r,{version:this.applePayVersionNumber,onError:e=>{this.handleError(new p("ERROR","ApplePay - Something went wrong on ApplePayService",{cause:e}))},onCancel:e=>{this.handleError(new p("CANCEL","ApplePay UI dismissed",{cause:e}))},onPaymentMethodSelected:t,onShippingMethodSelected:s,onShippingContactSelected:o,onValidateMerchant:e||this.validateMerchant,onPaymentAuthorized:(e,t,s)=>{const i=u(s.payment.billingContact),o=u(s.payment.shippingContact,!0);this.setState({applePayToken:btoa(JSON.stringify(s.payment.token.paymentData)),authorizedEvent:s,...i&&{billingAddress:i},...o&&{deliveryAddress:o}}),this.handleAuthorization().then(this.makePaymentsCall).then(d).then(c).then(this.collectOrderTrackingDetailsIfNeeded).then((({paymentResponse:t,orderDetails:s})=>(e({status:ApplePaySession.STATUS_SUCCESS,...s&&{orderDetails:s}}),t))).then((e=>{this.handleResponse(e)})).catch((e=>{const s=e?.error?.applePayError;t({status:ApplePaySession.STATUS_FAILURE,errors:s?Array.isArray(s)?s:[s]:void 0});const i={...e,error:{applePayError:s}};this.handleFailedResult(i)}))}});return new Promise(((e,t)=>this.props.onClick(e,t))).then((()=>{n.begin()})).catch((()=>({})))}async handleAuthorization(){return new Promise(((e,t)=>{this.props.onAuthorized||e();const{authorizedEvent:s,billingAddress:i,deliveryAddress:o}=this.state;this.props.onAuthorized({authorizedEvent:s,...i&&{billingAddress:i},...o&&{deliveryAddress:o}},{resolve:e,reject:t})})).catch((e=>{const t={error:{applePayError:e}};return Promise.reject(t)}))}async collectOrderTrackingDetailsIfNeeded(e){return new Promise(((e,t)=>{if(!this.props.onOrderTrackingRequest)return e();this.props.onOrderTrackingRequest(e,t)})).then((t=>({paymentResponse:e,...t&&{orderDetails:t}}))).catch((()=>({paymentResponse:e})))}async validateMerchant(e,t){const{hostname:s}=window.location,{clientKey:i,configuration:r,loadingContext:a,initiative:p}=this.props,{merchantName:l,merchantId:d}=r,c={loadingContext:a,path:`v1/applePay/sessions?clientKey=${i}`},h={displayName:l,domainName:s,initiative:p,merchantIdentifier:d};try{const s=await n(c,h),i=o.decode(s.data);if(i.success){e(JSON.parse(i.data))}else t("Could not decode Apple Pay session")}catch(e){t("Could not get Apple Pay session")}}render(){return this.props.showPayButton?e(s,{buttonStyle:this.props.buttonColor,buttonType:this.props.buttonType,buttonLocale:this.props.buttonLocale,onClick:this.submit}):null}constructor(e,t){super(e,t),f(this,"sdkLoader",void 0),f(this,"applePayVersionNumber",void 0),f(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:m,target:h}),this.startSession()}));const{isExpress:s,onShippingContactSelected:i,onShippingMethodSelected:o}=this.props;if(!1===s&&(i||o))throw new p("IMPLEMENTATION_ERROR",'ApplePay - You must set "isExpress" flag to "true" in order to use "onShippingContactSelected" and/or "onShippingMethodSelected" callbacks');this.startSession=this.startSession.bind(this),this.submit=this.submit.bind(this),this.validateMerchant=this.validateMerchant.bind(this),this.collectOrderTrackingDetailsIfNeeded=this.collectOrderTrackingDetailsIfNeeded.bind(this),this.handleAuthorization=this.handleAuthorization.bind(this),this.defineApplePayVersionNumber=this.defineApplePayVersionNumber.bind(this),this.configureApplePayWebOptions=this.configureApplePayWebOptions.bind(this),this.sdkLoader=new A,this.sdkLoader.load().then(this.defineApplePayVersionNumber).then(this.configureApplePayWebOptions).catch((e=>{this.handleError(e)}))}}f(g,"type",l.applepay),f(g,"defaultProps",r);export{g as default};
2
2
  //# sourceMappingURL=ApplePay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApplePay.js","sources":["../../../../src/components/ApplePay/ApplePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport ApplePayButton from './components/ApplePayButton';\nimport ApplePayService from './services/ApplePayService';\nimport base64 from '../../utils/base64';\nimport defaultProps from './defaultProps';\nimport { httpPost } from '../../core/Services/http';\nimport { preparePaymentRequest } from './utils/payment-request';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { DecodeObject } from '../../types/global-types';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { resolveSupportedVersion } from './utils/resolve-supported-version';\nimport { formatApplePayContactToAdyenAddressFormat } from './utils/format-applepay-contact-to-adyen-format';\nimport { mapBrands } from './utils/map-adyen-brands-to-applepay-brands';\nimport ApplePaySdkLoader from './services/ApplePaySdkLoader';\n\nimport type { SendAnalyticsObject } from '../../core/Analytics/types';\nimport type { ApplePayConfiguration, ApplePayElementData, ApplePayPaymentOrderDetails, ApplePaySessionRequest } from './types';\nimport type { ICore } from '../../core/types';\nimport type { PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\n\nconst LATEST_APPLE_PAY_VERSION = 14;\n\nclass ApplePayElement extends UIElement<ApplePayConfiguration> {\n public static type = TxVariants.applepay;\n\n protected static defaultProps = defaultProps;\n\n private sdkLoader: ApplePaySdkLoader;\n private applePayVersionNumber: number = undefined;\n\n constructor(checkout: ICore, props?: ApplePayConfiguration) {\n super(checkout, props);\n\n const { isExpress, onShippingContactSelected, onShippingMethodSelected } = this.props;\n\n if (isExpress === false && (onShippingContactSelected || onShippingMethodSelected)) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'ApplePay - You must set \"isExpress\" flag to \"true\" in order to use \"onShippingContactSelected\" and/or \"onShippingMethodSelected\" callbacks'\n );\n }\n\n this.startSession = this.startSession.bind(this);\n this.submit = this.submit.bind(this);\n this.validateMerchant = this.validateMerchant.bind(this);\n this.collectOrderTrackingDetailsIfNeeded = this.collectOrderTrackingDetailsIfNeeded.bind(this);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.defineApplePayVersionNumber = this.defineApplePayVersionNumber.bind(this);\n this.configureApplePayWebOptions = this.configureApplePayWebOptions.bind(this);\n\n this.sdkLoader = new ApplePaySdkLoader();\n\n void this.sdkLoader\n .load()\n .then(this.defineApplePayVersionNumber)\n .then(this.configureApplePayWebOptions)\n .catch(error => {\n this.handleError(error);\n });\n }\n\n /**\n * Formats the component props\n */\n protected override formatProps(props): ApplePayConfiguration {\n const supportedNetworks = props.brands?.length ? mapBrands(props.brands) : props.supportedNetworks;\n\n return {\n ...props,\n configuration: props.configuration,\n supportedNetworks,\n buttonLocale: props.buttonLocale ?? props.i18n?.locale,\n totalPriceLabel: props.totalPriceLabel || props.configuration?.merchantName\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData(): ApplePayElementData {\n const { applePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: ApplePayElement.type,\n applePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n public override submit = (): void => {\n // Analytics\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n void this.startSession();\n };\n\n public get isValid(): boolean {\n return true;\n }\n\n /**\n * This API is only intended for upstreaming or defaulting to Apple Pay, all other scenarios should continue to\n * use canMakePayments(). For Safari browsers, this API will indicate whether there is a card available to make\n * payments. For third-party browsers a new status of paymentCredentialStatusUnknown will be returned. This does\n * not mean there are no cards available, it means the status cannot be determined and as such defaulting\n * and upstreaming should still be considered.\n *\n * {@link https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/4440085-applepaycapabilities}\n * @param merchantIdentifier\n */\n public async applePayCapabilities(merchantIdentifier?: string): Promise<ApplePayJS.PaymentCredentialStatusResponse> {\n const identifier = merchantIdentifier || this.props.configuration.merchantId;\n\n try {\n await this.sdkLoader.isSdkLoaded();\n return await ApplePaySession?.applePayCapabilities(identifier);\n } catch (error) {\n throw new AdyenCheckoutError('ERROR', 'Apple Pay: Error when requesting applePayCapabilities()', { cause: error });\n }\n }\n\n /**\n * Determines if Apple Pay component can be displayed or not\n */\n public override async isAvailable(): Promise<void> {\n if (window.location.protocol !== 'https:') {\n return Promise.reject(new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'Trying to start an Apple Pay session from an insecure document'));\n }\n\n try {\n await this.sdkLoader.isSdkLoaded();\n\n if (ApplePaySession?.canMakePayments()) {\n return Promise.resolve();\n }\n\n return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay is not available on this device'));\n } catch (error) {\n return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay SDK failed to load', { cause: error }));\n }\n }\n\n /**\n * Sets the Apple Pay version available for the shopper.\n * This code needs to be executed once the Apple Pay SDK is fully loaded\n * @private\n */\n private defineApplePayVersionNumber() {\n if (window.location.protocol !== 'https:') return;\n this.applePayVersionNumber = this.props.version || resolveSupportedVersion(LATEST_APPLE_PAY_VERSION);\n }\n\n /**\n * Sets the configuration/callbacks that pertain to the Apple Pay code overlay/modal.\n * @private\n */\n private configureApplePayWebOptions() {\n if (window.ApplePayWebOptions) {\n const { renderApplePayCodeAs, onApplePayCodeClose } = this.props;\n\n window.ApplePayWebOptions.set({\n renderApplePayCodeAs,\n ...(onApplePayCodeClose && { onApplePayCodeClose })\n });\n }\n }\n\n private startSession() {\n const { onValidateMerchant, onPaymentMethodSelected, onShippingMethodSelected, onShippingContactSelected } = this.props;\n\n const paymentRequest = preparePaymentRequest({\n companyName: this.props.configuration.merchantName,\n countryCode: this.core.options.countryCode,\n ...this.props\n });\n\n const session = new ApplePayService(paymentRequest, {\n version: this.applePayVersionNumber,\n onError: (error: unknown) => {\n this.handleError(\n new AdyenCheckoutError('ERROR', 'ApplePay - Something went wrong on ApplePayService', {\n cause: error\n })\n );\n },\n onCancel: event => {\n this.handleError(new AdyenCheckoutError('CANCEL', 'ApplePay UI dismissed', { cause: event }));\n },\n onPaymentMethodSelected,\n onShippingMethodSelected,\n onShippingContactSelected,\n onValidateMerchant: onValidateMerchant || this.validateMerchant,\n onPaymentAuthorized: (resolve, reject, event) => {\n const billingAddress = formatApplePayContactToAdyenAddressFormat(event.payment.billingContact);\n const deliveryAddress = formatApplePayContactToAdyenAddressFormat(event.payment.shippingContact, true);\n\n this.setState({\n applePayToken: btoa(JSON.stringify(event.payment.token.paymentData)),\n authorizedEvent: event,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then(this.collectOrderTrackingDetailsIfNeeded)\n .then(({ paymentResponse, orderDetails }) => {\n resolve({\n status: ApplePaySession.STATUS_SUCCESS,\n ...(orderDetails && { orderDetails })\n });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n const errors = paymentResponse?.error?.applePayError;\n\n reject({\n status: ApplePaySession.STATUS_FAILURE,\n errors: errors ? (Array.isArray(errors) ? errors : [errors]) : undefined\n });\n\n const responseWithError: RawPaymentResponse = {\n ...paymentResponse,\n error: {\n applePayError: errors\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n }\n });\n\n return new Promise((resolve, reject) => this.props.onClick(resolve, reject))\n .then(() => {\n session.begin();\n })\n .catch(() => ({\n // Swallow exception triggered by onClick reject\n }));\n }\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n *\n * @private\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: ApplePayJS.ApplePayError) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { applePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Verify if the 'onOrderTrackingRequest' is provided. If so, triggers the callback expecting an\n * Apple Pay order details back\n *\n * @private\n */\n private async collectOrderTrackingDetailsIfNeeded(\n paymentResponse: PaymentResponseData\n ): Promise<{ orderDetails?: ApplePayPaymentOrderDetails; paymentResponse: PaymentResponseData }> {\n return new Promise<ApplePayPaymentOrderDetails | void>((resolve, reject) => {\n if (!this.props.onOrderTrackingRequest) {\n return resolve();\n }\n\n this.props.onOrderTrackingRequest(resolve, reject);\n })\n .then(orderDetails => {\n return {\n paymentResponse,\n ...(orderDetails && { orderDetails })\n };\n })\n .catch(() => {\n return { paymentResponse };\n });\n }\n\n private async validateMerchant(resolve, reject) {\n const { hostname: domainName } = window.location;\n const { clientKey, configuration, loadingContext, initiative } = this.props;\n const { merchantName, merchantId } = configuration;\n const path = `v1/applePay/sessions?clientKey=${clientKey}`;\n const options = { loadingContext, path };\n const request: ApplePaySessionRequest = {\n displayName: merchantName,\n domainName,\n initiative,\n merchantIdentifier: merchantId\n };\n\n try {\n const response = await httpPost(options, request);\n const decodedData: DecodeObject = base64.decode(response.data);\n if (!decodedData.success) {\n reject('Could not decode Apple Pay session');\n } else {\n const session = JSON.parse(decodedData.data);\n resolve(session);\n }\n } catch (e) {\n reject('Could not get Apple Pay session');\n }\n }\n\n render() {\n if (!this.props.showPayButton) {\n return null;\n }\n\n return (\n <ApplePayButton\n buttonStyle={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonLocale={this.props.buttonLocale}\n onClick={this.submit}\n />\n );\n }\n}\n\nexport default ApplePayElement;\n"],"names":["ApplePayElement","UIElement","formatProps","props","supportedNetworks","brands","length","mapBrands","configuration","buttonLocale","i18n","locale","totalPriceLabel","merchantName","formatData","applePayToken","billingAddress","deliveryAddress","this","state","isExpress","paymentMethod","type","subtype","submitAnalytics","analyticsObj","super","isValid","applePayCapabilities","merchantIdentifier","identifier","merchantId","sdkLoader","isSdkLoaded","ApplePaySession","error","AdyenCheckoutError","cause","isAvailable","window","location","protocol","Promise","reject","canMakePayments","resolve","defineApplePayVersionNumber","applePayVersionNumber","version","resolveSupportedVersion","configureApplePayWebOptions","ApplePayWebOptions","renderApplePayCodeAs","onApplePayCodeClose","set","startSession","onValidateMerchant","onPaymentMethodSelected","onShippingMethodSelected","onShippingContactSelected","paymentRequest","preparePaymentRequest","companyName","countryCode","core","options","session","ApplePayService","onError","handleError","onCancel","event","validateMerchant","onPaymentAuthorized","formatApplePayContactToAdyenAddressFormat","payment","billingContact","shippingContact","setState","btoa","JSON","stringify","token","paymentData","authorizedEvent","handleAuthorization","then","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","collectOrderTrackingDetailsIfNeeded","paymentResponse","orderDetails","status","STATUS_SUCCESS","handleResponse","catch","errors","applePayError","STATUS_FAILURE","Array","isArray","undefined","responseWithError","handleFailedResult","onClick","begin","onAuthorized","data","onOrderTrackingRequest","hostname","domainName","clientKey","loadingContext","initiative","path","request","displayName","response","httpPost","decodedData","base64","decode","success","parse","e","render","showPayButton","h","ApplePayButton","buttonStyle","buttonColor","buttonType","submit","constructor","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","bind","ApplePaySdkLoader","load","TxVariants","applepay","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"ApplePay.js","sources":["../../../../src/components/ApplePay/ApplePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport ApplePayButton from './components/ApplePayButton';\nimport ApplePayService from './services/ApplePayService';\nimport base64 from '../../utils/base64';\nimport defaultProps from './defaultProps';\nimport { httpPost } from '../../core/Services/http';\nimport { preparePaymentRequest } from './utils/payment-request';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { DecodeObject } from '../../types/global-types';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { resolveSupportedVersion } from './utils/resolve-supported-version';\nimport { formatApplePayContactToAdyenAddressFormat } from './utils/format-applepay-contact-to-adyen-format';\nimport { mapBrands } from './utils/map-adyen-brands-to-applepay-brands';\nimport ApplePaySdkLoader from './services/ApplePaySdkLoader';\nimport { detectInIframe } from '../../utils/detectInIframe';\n\nimport type { SendAnalyticsObject } from '../../core/Analytics/types';\nimport type { ApplePayConfiguration, ApplePayElementData, ApplePayPaymentOrderDetails, ApplePaySessionRequest } from './types';\nimport type { ICore } from '../../core/types';\nimport type { PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\n\nconst LATEST_APPLE_PAY_VERSION = 14;\n\nclass ApplePayElement extends UIElement<ApplePayConfiguration> {\n public static type = TxVariants.applepay;\n\n protected static defaultProps = defaultProps;\n\n private sdkLoader: ApplePaySdkLoader;\n private applePayVersionNumber: number = undefined;\n\n constructor(checkout: ICore, props?: ApplePayConfiguration) {\n super(checkout, props);\n\n const { isExpress, onShippingContactSelected, onShippingMethodSelected } = this.props;\n\n if (isExpress === false && (onShippingContactSelected || onShippingMethodSelected)) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'ApplePay - You must set \"isExpress\" flag to \"true\" in order to use \"onShippingContactSelected\" and/or \"onShippingMethodSelected\" callbacks'\n );\n }\n\n this.startSession = this.startSession.bind(this);\n this.submit = this.submit.bind(this);\n this.validateMerchant = this.validateMerchant.bind(this);\n this.collectOrderTrackingDetailsIfNeeded = this.collectOrderTrackingDetailsIfNeeded.bind(this);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.defineApplePayVersionNumber = this.defineApplePayVersionNumber.bind(this);\n this.configureApplePayWebOptions = this.configureApplePayWebOptions.bind(this);\n\n this.sdkLoader = new ApplePaySdkLoader();\n\n void this.sdkLoader\n .load()\n .then(this.defineApplePayVersionNumber)\n .then(this.configureApplePayWebOptions)\n .catch(error => {\n this.handleError(error);\n });\n }\n\n /**\n * Formats the component props\n */\n protected override formatProps(props: ApplePayConfiguration): ApplePayConfiguration {\n // @ts-ignore TODO: Fix brands prop\n const supportedNetworks = props.brands?.length ? mapBrands(props.brands) : props.supportedNetworks;\n\n return {\n ...props,\n configuration: props.configuration,\n supportedNetworks,\n buttonLocale: props.buttonLocale ?? props.i18n?.locale,\n totalPriceLabel: props.totalPriceLabel || props.configuration?.merchantName,\n renderApplePayCodeAs: props.renderApplePayCodeAs ?? (detectInIframe() ? 'window' : 'modal')\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData(): ApplePayElementData {\n const { applePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: ApplePayElement.type,\n applePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n public override submit = (): void => {\n // Analytics\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n void this.startSession();\n };\n\n public get isValid(): boolean {\n return true;\n }\n\n /**\n * This API is only intended for upstreaming or defaulting to Apple Pay, all other scenarios should continue to\n * use canMakePayments(). For Safari browsers, this API will indicate whether there is a card available to make\n * payments. For third-party browsers a new status of paymentCredentialStatusUnknown will be returned. This does\n * not mean there are no cards available, it means the status cannot be determined and as such defaulting\n * and upstreaming should still be considered.\n *\n * {@link https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/4440085-applepaycapabilities}\n * @param merchantIdentifier\n */\n public async applePayCapabilities(merchantIdentifier?: string): Promise<ApplePayJS.PaymentCredentialStatusResponse> {\n const identifier = merchantIdentifier || this.props.configuration.merchantId;\n\n try {\n await this.sdkLoader.isSdkLoaded();\n return await ApplePaySession?.applePayCapabilities(identifier);\n } catch (error) {\n throw new AdyenCheckoutError('ERROR', 'Apple Pay: Error when requesting applePayCapabilities()', { cause: error });\n }\n }\n\n /**\n * Determines if Apple Pay component can be displayed or not\n */\n public override async isAvailable(): Promise<void> {\n if (window.location.protocol !== 'https:') {\n return Promise.reject(new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'Trying to start an Apple Pay session from an insecure document'));\n }\n\n try {\n await this.sdkLoader.isSdkLoaded();\n\n if (ApplePaySession?.canMakePayments()) {\n return Promise.resolve();\n }\n\n return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay is not available on this device'));\n } catch (error) {\n return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay SDK failed to load', { cause: error }));\n }\n }\n\n /**\n * Sets the Apple Pay version available for the shopper.\n * This code needs to be executed once the Apple Pay SDK is fully loaded\n * @private\n */\n private defineApplePayVersionNumber() {\n if (window.location.protocol !== 'https:') return;\n this.applePayVersionNumber = this.props.version || resolveSupportedVersion(LATEST_APPLE_PAY_VERSION);\n }\n\n /**\n * Sets the configuration/callbacks that pertain to the Apple Pay code overlay/modal.\n * @private\n */\n private configureApplePayWebOptions() {\n if (window.ApplePayWebOptions) {\n const { renderApplePayCodeAs, onApplePayCodeClose } = this.props;\n\n window.ApplePayWebOptions.set({\n renderApplePayCodeAs,\n ...(onApplePayCodeClose && { onApplePayCodeClose })\n });\n }\n }\n\n private startSession() {\n const { onValidateMerchant, onPaymentMethodSelected, onShippingMethodSelected, onShippingContactSelected } = this.props;\n\n const paymentRequest = preparePaymentRequest({\n companyName: this.props.configuration.merchantName,\n countryCode: this.core.options.countryCode,\n ...this.props\n });\n\n const session = new ApplePayService(paymentRequest, {\n version: this.applePayVersionNumber,\n onError: (error: unknown) => {\n this.handleError(\n new AdyenCheckoutError('ERROR', 'ApplePay - Something went wrong on ApplePayService', {\n cause: error\n })\n );\n },\n onCancel: event => {\n this.handleError(new AdyenCheckoutError('CANCEL', 'ApplePay UI dismissed', { cause: event }));\n },\n onPaymentMethodSelected,\n onShippingMethodSelected,\n onShippingContactSelected,\n onValidateMerchant: onValidateMerchant || this.validateMerchant,\n onPaymentAuthorized: (resolve, reject, event) => {\n const billingAddress = formatApplePayContactToAdyenAddressFormat(event.payment.billingContact);\n const deliveryAddress = formatApplePayContactToAdyenAddressFormat(event.payment.shippingContact, true);\n\n this.setState({\n applePayToken: btoa(JSON.stringify(event.payment.token.paymentData)),\n authorizedEvent: event,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then(this.collectOrderTrackingDetailsIfNeeded)\n .then(({ paymentResponse, orderDetails }) => {\n resolve({\n status: ApplePaySession.STATUS_SUCCESS,\n ...(orderDetails && { orderDetails })\n });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n const errors = paymentResponse?.error?.applePayError;\n\n reject({\n status: ApplePaySession.STATUS_FAILURE,\n errors: errors ? (Array.isArray(errors) ? errors : [errors]) : undefined\n });\n\n const responseWithError: RawPaymentResponse = {\n ...paymentResponse,\n error: {\n applePayError: errors\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n }\n });\n\n return new Promise((resolve, reject) => this.props.onClick(resolve, reject))\n .then(() => {\n session.begin();\n })\n .catch(() => ({\n // Swallow exception triggered by onClick reject\n }));\n }\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n *\n * @private\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: ApplePayJS.ApplePayError) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { applePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Verify if the 'onOrderTrackingRequest' is provided. If so, triggers the callback expecting an\n * Apple Pay order details back\n *\n * @private\n */\n private async collectOrderTrackingDetailsIfNeeded(\n paymentResponse: PaymentResponseData\n ): Promise<{ orderDetails?: ApplePayPaymentOrderDetails; paymentResponse: PaymentResponseData }> {\n return new Promise<ApplePayPaymentOrderDetails | void>((resolve, reject) => {\n if (!this.props.onOrderTrackingRequest) {\n return resolve();\n }\n\n this.props.onOrderTrackingRequest(resolve, reject);\n })\n .then(orderDetails => {\n return {\n paymentResponse,\n ...(orderDetails && { orderDetails })\n };\n })\n .catch(() => {\n return { paymentResponse };\n });\n }\n\n private async validateMerchant(resolve, reject) {\n const { hostname: domainName } = window.location;\n const { clientKey, configuration, loadingContext, initiative } = this.props;\n const { merchantName, merchantId } = configuration;\n const path = `v1/applePay/sessions?clientKey=${clientKey}`;\n const options = { loadingContext, path };\n const request: ApplePaySessionRequest = {\n displayName: merchantName,\n domainName,\n initiative,\n merchantIdentifier: merchantId\n };\n\n try {\n const response = await httpPost(options, request);\n const decodedData: DecodeObject = base64.decode(response.data);\n if (!decodedData.success) {\n reject('Could not decode Apple Pay session');\n } else {\n const session = JSON.parse(decodedData.data);\n resolve(session);\n }\n } catch (e) {\n reject('Could not get Apple Pay session');\n }\n }\n\n render() {\n if (!this.props.showPayButton) {\n return null;\n }\n\n return (\n <ApplePayButton\n buttonStyle={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonLocale={this.props.buttonLocale}\n onClick={this.submit}\n />\n );\n }\n}\n\nexport default ApplePayElement;\n"],"names":["ApplePayElement","UIElement","formatProps","props","supportedNetworks","brands","length","mapBrands","configuration","buttonLocale","i18n","locale","totalPriceLabel","merchantName","renderApplePayCodeAs","detectInIframe","formatData","applePayToken","billingAddress","deliveryAddress","this","state","isExpress","paymentMethod","type","subtype","submitAnalytics","analyticsObj","super","isValid","applePayCapabilities","merchantIdentifier","identifier","merchantId","sdkLoader","isSdkLoaded","ApplePaySession","error","AdyenCheckoutError","cause","isAvailable","window","location","protocol","Promise","reject","canMakePayments","resolve","defineApplePayVersionNumber","applePayVersionNumber","version","resolveSupportedVersion","configureApplePayWebOptions","ApplePayWebOptions","onApplePayCodeClose","set","startSession","onValidateMerchant","onPaymentMethodSelected","onShippingMethodSelected","onShippingContactSelected","paymentRequest","preparePaymentRequest","companyName","countryCode","core","options","session","ApplePayService","onError","handleError","onCancel","event","validateMerchant","onPaymentAuthorized","formatApplePayContactToAdyenAddressFormat","payment","billingContact","shippingContact","setState","btoa","JSON","stringify","token","paymentData","authorizedEvent","handleAuthorization","then","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","collectOrderTrackingDetailsIfNeeded","paymentResponse","orderDetails","status","STATUS_SUCCESS","handleResponse","catch","errors","applePayError","STATUS_FAILURE","Array","isArray","undefined","responseWithError","handleFailedResult","onClick","begin","onAuthorized","data","onOrderTrackingRequest","hostname","domainName","clientKey","loadingContext","initiative","path","request","displayName","response","httpPost","decodedData","base64","decode","success","parse","e","render","showPayButton","h","ApplePayButton","buttonStyle","buttonColor","buttonType","submit","constructor","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","bind","ApplePaySdkLoader","load","TxVariants","applepay","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inIframe as t}from"../../utils/inIframe.js";const e={isExpress:!1,amount:{currency:"USD",value:0},totalPriceStatus:"final",initiative:"web",merchantCapabilities:["supports3DS"],supportedNetworks:["amex","discover","masterCard","visa"],buttonType:"plain",buttonColor:"black",renderApplePayCodeAs:t()?"window":"modal",onClick:t=>t()};export{e as default};
1
+ const t={isExpress:!1,amount:{currency:"USD",value:0},totalPriceStatus:"final",initiative:"web",merchantCapabilities:["supports3DS"],supportedNetworks:["amex","discover","masterCard","visa"],buttonType:"plain",buttonColor:"black",onClick:t=>t()};export{t as default};
2
2
  //# sourceMappingURL=defaultProps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultProps.js","sources":["../../../../src/components/ApplePay/defaultProps.ts"],"sourcesContent":["import { ApplePayConfiguration } from './types';\nimport { inIframe } from '../../utils/inIframe';\n\nconst defaultProps: ApplePayConfiguration = {\n isExpress: false,\n amount: { currency: 'USD', value: 0 },\n totalPriceStatus: 'final',\n initiative: 'web',\n merchantCapabilities: ['supports3DS'],\n supportedNetworks: ['amex', 'discover', 'masterCard', 'visa'],\n buttonType: 'plain',\n buttonColor: 'black',\n renderApplePayCodeAs: inIframe() ? 'window' : 'modal',\n onClick: resolve => resolve()\n};\n\nexport default defaultProps;\n"],"names":["defaultProps","isExpress","amount","currency","value","totalPriceStatus","initiative","merchantCapabilities","supportedNetworks","buttonType","buttonColor","renderApplePayCodeAs","inIframe","onClick","resolve"],"mappings":"mDAGA,MAAMA,EAAsC,CACxCC,WAAW,EACXC,OAAQ,CAAEC,SAAU,MAAOC,MAAO,GAClCC,iBAAkB,QAClBC,WAAY,MACZC,qBAAsB,CAAC,eACvBC,kBAAmB,CAAC,OAAQ,WAAY,aAAc,QACtDC,WAAY,QACZC,YAAa,QACbC,qBAAsBC,IAAa,SAAW,QAC9CC,QAASC,GAAWA"}
1
+ {"version":3,"file":"defaultProps.js","sources":["../../../../src/components/ApplePay/defaultProps.ts"],"sourcesContent":["import { ApplePayConfiguration } from './types';\n\nconst defaultProps: ApplePayConfiguration = {\n isExpress: false,\n amount: { currency: 'USD', value: 0 },\n totalPriceStatus: 'final',\n initiative: 'web',\n merchantCapabilities: ['supports3DS'],\n supportedNetworks: ['amex', 'discover', 'masterCard', 'visa'],\n buttonType: 'plain',\n buttonColor: 'black',\n onClick: resolve => resolve()\n};\n\nexport default defaultProps;\n"],"names":["defaultProps","isExpress","amount","currency","value","totalPriceStatus","initiative","merchantCapabilities","supportedNetworks","buttonType","buttonColor","onClick","resolve"],"mappings":"AAEA,MAAMA,EAAsC,CACxCC,WAAW,EACXC,OAAQ,CAAEC,SAAU,MAAOC,MAAO,GAClCC,iBAAkB,QAClBC,WAAY,MACZC,qBAAsB,CAAC,eACvBC,kBAAmB,CAAC,OAAQ,WAAY,aAAc,QACtDC,WAAY,QACZC,YAAa,QACbC,QAASC,GAAWA"}
@@ -1,2 +1,2 @@
1
- import e from"../helpers/OpenInvoiceContainer/OpenInvoiceContainer.js";import{ATOME_SUPPORTED_COUNTRIES as r,BILLING_ADDRESS_SPECIFICATION as i}from"./config.js";import{TxVariants as t}from"../tx-variants.js";class s extends e{formatProps(e){return{...super.formatProps({...e,visibility:{deliveryAddress:"hidden",companyDetails:"hidden"}}),allowedCountries:r,personalDetailsRequiredFields:["firstName","lastName","telephoneNumber"],billingAddressRequiredFields:["country","street","postalCode"],billingAddressSpecification:i}}}var o,n,a;o=s,n="type",a=t.atome,n in o?Object.defineProperty(o,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):o[n]=a;export{s as default};
1
+ import e from"../helpers/OpenInvoiceContainer/OpenInvoiceContainer.js";import{BILLING_ADDRESS_SPECIFICATION as r,ATOME_SUPPORTED_COUNTRIES as i}from"./config.js";import{TxVariants as t}from"../tx-variants.js";class s extends e{formatProps(e){return{...super.formatProps({...e,visibility:{deliveryAddress:"hidden",companyDetails:"hidden"}}),allowedCountries:i,personalDetailsRequiredFields:["firstName","lastName","telephoneNumber"],billingAddressRequiredFields:["country","street","postalCode"],billingAddressSpecification:r}}}var o,n,a;o=s,n="type",a=t.atome,n in o?Object.defineProperty(o,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):o[n]=a;export{s as default};
2
2
  //# sourceMappingURL=Atome.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as a,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import n from"../../../_virtual/index.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../../internal/FormFields/Field/Field.js";import c from"../../internal/FormFields/ConsentCheckbox/ConsentCheckbox.js";import{bacsFormatters as i,bacsValidationRules as s}from"./validate.js";import l from"../../../utils/useForm/useForm.js";import d from"../../../core/Context/useImage.js";import u from"../../internal/FormFields/InputText.js";import m from"../../internal/FormFields/InputEmail.js";import b from"../../internal/FormInstruction/FormInstruction.js";import{getErrorMessage as h}from"../../../utils/getErrorMessage.js";import{PREFIX as p}from"../../internal/Icon/constants.js";const k="enter-data",g="confirm-data";function f(f){const{i18n:N}=t(),_=d(),{handleChangeFor:C,triggerValidation:y,data:v,valid:I,errors:x,isValid:E}=l({schema:["holderName","bankAccountNumber","bankLocationId","shopperEmail","amountConsentCheckbox","accountConsentCheckbox"],defaultData:f.data,formatters:i,rules:s}),[F,j]=a(k);this.setStatus=j,this.showValidation=y;return o((()=>{f.onChange({data:v,valid:I,errors:x,isValid:E})}),[v,I,x,E]),e("div",{className:n({"adyen-checkout__bacs":!0,"adyen-checkout__bacs--confirm":F===g||"loading"===F})},e(b,null),F==g&&e("div",{className:n({"adyen-checkout__bacs--edit":!0,"adyen-checkout__bacs--edit-dropin":f.isDropin})},e(u,{name:"bacsEdit",className:"adyen-checkout__bacs--edit-button",value:N.get("edit"),"aria-label":N.get("edit"),readonly:!0,onClick:()=>this.setStatus(k)})),e(r,{className:n({"adyen-checkout__bacs--holder-name":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),label:N.get("bacs.accountHolderName"),errorMessage:!!x.holderName&&N.get("bacs.accountHolderName.invalid"),isValid:I.holderName,name:"accountHolderName",i18n:N},e(u,{name:"bacs.accountHolderName",className:"adyen-checkout__bacs-input--holder-name",placeholder:f.placeholders.holderName,value:v.holderName,"aria-invalid":!I.holderName,"aria-label":N.get("bacs.accountHolderName"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onBlur:C("holderName","blur"),onInput:C("holderName","input")})),e("div",{className:"adyen-checkout__bacs__num-id adyen-checkout__field-wrapper"},e(r,{errorMessage:!!x.bankAccountNumber&&N.get("bacs.accountNumber.invalid"),label:N.get("bacs.accountNumber"),className:n({"adyen-checkout__bacs--bank-account-number":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),classNameModifiers:["col-70"],isValid:I.bankAccountNumber,name:"bankAccountNumber",i18n:N},e(u,{value:v.bankAccountNumber,className:"adyen-checkout__bacs-input--bank-account-number",placeholder:f.placeholders.bankAccountNumber,"aria-invalid":!I.bankAccountNumber,"aria-label":N.get("bacs.accountNumber"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onBlur:C("bankAccountNumber","blur"),onInput:C("bankAccountNumber","input")})),e(r,{errorMessage:!!x.bankLocationId&&N.get("bacs.bankLocationId.invalid"),label:N.get("bacs.bankLocationId"),className:n({"adyen-checkout__bacs--bank-location-id":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),classNameModifiers:["col-30"],isValid:I.bankLocationId,name:"bankLocationId",i18n:N},e(u,{value:v.bankLocationId,className:"adyen-checkout__bacs-input--bank-location-id",placeholder:f.placeholders.bankLocationId,"aria-invalid":!I.bankLocationId,"aria-label":N.get("bacs.bankLocationId"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onBlur:C("bankLocationId","blur"),onInput:C("bankLocationId","input")}))),e(r,{errorMessage:h(N,x.shopperEmail,N.get("shopperEmail")),label:N.get("shopperEmail"),className:n({"adyen-checkout__bacs--shopper-email":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),isValid:I.shopperEmail,name:"emailAddress",i18n:N},e(m,{value:v.shopperEmail,name:"shopperEmail",className:"adyen-checkout__bacs-input--shopper-email",classNameModifiers:["large"],placeholder:f.placeholders.shopperEmail,spellcheck:!1,"aria-invalid":!I.shopperEmail,"aria-label":N.get("shopperEmail"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onInput:C("shopperEmail","input"),onBlur:C("shopperEmail","blur")})),F===k&&e(c,{classNameModifiers:["amountConsentCheckbox"],errorMessage:!!x.amountConsentCheckbox,label:N.get("bacs.consent.amount"),onChange:C("amountConsentCheckbox"),checked:!!v.amountConsentCheckbox,i18n:N}),F===k&&e(c,{classNameModifiers:["accountConsentCheckbox"],errorMessage:!!x.accountConsentCheckbox,label:N.get("bacs.consent.account"),onChange:C("accountConsentCheckbox"),checked:!!v.accountConsentCheckbox,i18n:N}),f.showPayButton&&f.payButton({status:F,label:F===k?N.get("continue"):`${N.get("bacs.confirm")} ${f.amount?.value&&f.amount?.currency?N.amount(f.amount.value,f.amount.currency):""}`,icon:_({imageFolder:"components/"})(`${p}lock`),onClick:()=>E?F===k?this.setStatus(g):F===g?f.onSubmit():void 0:this.showValidation()}))}f.defaultProps={data:{},placeholders:{}};export{f as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as a,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import n from"../../../_virtual/index.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../../internal/FormFields/Field/Field.js";import c from"../../internal/FormFields/ConsentCheckbox/ConsentCheckbox.js";import{bacsValidationRules as i,bacsFormatters as s}from"./validate.js";import l from"../../../utils/useForm/useForm.js";import d from"../../../core/Context/useImage.js";import u from"../../internal/FormFields/InputText.js";import m from"../../internal/FormFields/InputEmail.js";import b from"../../internal/FormInstruction/FormInstruction.js";import{getErrorMessage as h}from"../../../utils/getErrorMessage.js";import{PREFIX as p}from"../../internal/Icon/constants.js";const k="enter-data",g="confirm-data";function f(f){const{i18n:N}=t(),_=d(),{handleChangeFor:C,triggerValidation:y,data:v,valid:I,errors:x,isValid:E}=l({schema:["holderName","bankAccountNumber","bankLocationId","shopperEmail","amountConsentCheckbox","accountConsentCheckbox"],defaultData:f.data,formatters:s,rules:i}),[F,j]=a(k);this.setStatus=j,this.showValidation=y;return o((()=>{f.onChange({data:v,valid:I,errors:x,isValid:E})}),[v,I,x,E]),e("div",{className:n({"adyen-checkout__bacs":!0,"adyen-checkout__bacs--confirm":F===g||"loading"===F})},e(b,null),F==g&&e("div",{className:n({"adyen-checkout__bacs--edit":!0,"adyen-checkout__bacs--edit-dropin":f.isDropin})},e(u,{name:"bacsEdit",className:"adyen-checkout__bacs--edit-button",value:N.get("edit"),"aria-label":N.get("edit"),readonly:!0,onClick:()=>this.setStatus(k)})),e(r,{className:n({"adyen-checkout__bacs--holder-name":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),label:N.get("bacs.accountHolderName"),errorMessage:!!x.holderName&&N.get("bacs.accountHolderName.invalid"),isValid:I.holderName,name:"accountHolderName",i18n:N},e(u,{name:"bacs.accountHolderName",className:"adyen-checkout__bacs-input--holder-name",placeholder:f.placeholders.holderName,value:v.holderName,"aria-invalid":!I.holderName,"aria-label":N.get("bacs.accountHolderName"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onBlur:C("holderName","blur"),onInput:C("holderName","input")})),e("div",{className:"adyen-checkout__bacs__num-id adyen-checkout__field-wrapper"},e(r,{errorMessage:!!x.bankAccountNumber&&N.get("bacs.accountNumber.invalid"),label:N.get("bacs.accountNumber"),className:n({"adyen-checkout__bacs--bank-account-number":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),classNameModifiers:["col-70"],isValid:I.bankAccountNumber,name:"bankAccountNumber",i18n:N},e(u,{value:v.bankAccountNumber,className:"adyen-checkout__bacs-input--bank-account-number",placeholder:f.placeholders.bankAccountNumber,"aria-invalid":!I.bankAccountNumber,"aria-label":N.get("bacs.accountNumber"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onBlur:C("bankAccountNumber","blur"),onInput:C("bankAccountNumber","input")})),e(r,{errorMessage:!!x.bankLocationId&&N.get("bacs.bankLocationId.invalid"),label:N.get("bacs.bankLocationId"),className:n({"adyen-checkout__bacs--bank-location-id":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),classNameModifiers:["col-30"],isValid:I.bankLocationId,name:"bankLocationId",i18n:N},e(u,{value:v.bankLocationId,className:"adyen-checkout__bacs-input--bank-location-id",placeholder:f.placeholders.bankLocationId,"aria-invalid":!I.bankLocationId,"aria-label":N.get("bacs.bankLocationId"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onBlur:C("bankLocationId","blur"),onInput:C("bankLocationId","input")}))),e(r,{errorMessage:h(N,x.shopperEmail,N.get("shopperEmail")),label:N.get("shopperEmail"),className:n({"adyen-checkout__bacs--shopper-email":!0,"adyen-checkout__field--inactive":F===g||"loading"===F}),isValid:I.shopperEmail,name:"emailAddress",i18n:N},e(m,{value:v.shopperEmail,name:"shopperEmail",className:"adyen-checkout__bacs-input--shopper-email",classNameModifiers:["large"],placeholder:f.placeholders.shopperEmail,spellcheck:!1,"aria-invalid":!I.shopperEmail,"aria-label":N.get("shopperEmail"),"aria-required":"true",required:!0,readonly:F===g||"loading"===F,autocorrect:"off",onInput:C("shopperEmail","input"),onBlur:C("shopperEmail","blur")})),F===k&&e(c,{classNameModifiers:["amountConsentCheckbox"],errorMessage:!!x.amountConsentCheckbox,label:N.get("bacs.consent.amount"),onChange:C("amountConsentCheckbox"),checked:!!v.amountConsentCheckbox,i18n:N}),F===k&&e(c,{classNameModifiers:["accountConsentCheckbox"],errorMessage:!!x.accountConsentCheckbox,label:N.get("bacs.consent.account"),onChange:C("accountConsentCheckbox"),checked:!!v.accountConsentCheckbox,i18n:N}),f.showPayButton&&f.payButton({status:F,label:F===k?N.get("continue"):`${N.get("bacs.confirm")} ${f.amount?.value&&f.amount?.currency?N.amount(f.amount.value,f.amount.currency):""}`,icon:_({imageFolder:"components/"})(`${p}lock`),onClick:()=>E?F===k?this.setStatus(g):F===g?f.onSubmit():void 0:this.showValidation()}))}f.defaultProps={data:{},placeholders:{}};export{f as default};
2
2
  //# sourceMappingURL=BacsInput.js.map
@@ -1,2 +1,2 @@
1
- import e from"../helpers/QRLoaderContainer/QRLoaderContainer.js";import{STATUS_INTERVAL as r,COUNTDOWN_MINUTES as o}from"./config.js";import{TxVariants as t}from"../tx-variants.js";function a(e,r,o){return r in e?Object.defineProperty(e,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[r]=o,e}class i extends e{formatProps(e){return{delay:r,countdownTime:o,timeToPay:"payme.timeToPay",...super.formatProps(e)}}}a(i,"type",t.bcmc_mobile),a(i,"txVariants",[t.bcmc_mobile,t.bcmc_mobile_QR]);export{i as default};
1
+ import e from"../helpers/QRLoaderContainer/QRLoaderContainer.js";import{COUNTDOWN_MINUTES as r,STATUS_INTERVAL as o}from"./config.js";import{TxVariants as t}from"../tx-variants.js";function a(e,r,o){return r in e?Object.defineProperty(e,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[r]=o,e}class i extends e{formatProps(e){return{delay:o,countdownTime:r,timeToPay:"payme.timeToPay",...super.formatProps(e)}}}a(i,"type",t.bcmc_mobile),a(i,"txVariants",[t.bcmc_mobile,t.bcmc_mobile_QR]);export{i as default};
2
2
  //# sourceMappingURL=BcmcMobile.js.map
@@ -1,2 +1,2 @@
1
- import e from"../../../internal/SocialSecurityNumberBrazil/validate.js";import{validationRules as r}from"../../../../utils/Validator/defaultRules.js";import{BOLETO_SOCIAL_SECURITY_NUMBER_INVALID as a,SF_ErrorCodes as l}from"../../../../core/Errors/constants.js";const s={socialSecurityNumber:{validate:e,errorMessage:a,modes:["blur"]},shopperEmail:r.emailRule,default:{validate:e=>!!e&&e.length>0,errorMessage:l.ERROR_MSG_INVALID_FIELD,modes:["blur"]},firstName:{validate:e=>!!e&&e.length>0,errorMessage:"firstName.invalid",modes:["blur"]},lastName:{validate:e=>!!e&&e.length>0,errorMessage:"lastName.invalid",modes:["blur"]}};export{s as boletoValidationRules};
1
+ import e from"../../../internal/SocialSecurityNumberBrazil/validate.js";import{validationRules as r}from"../../../../utils/Validator/defaultRules.js";import{SF_ErrorCodes as a,BOLETO_SOCIAL_SECURITY_NUMBER_INVALID as l}from"../../../../core/Errors/constants.js";const s={socialSecurityNumber:{validate:e,errorMessage:l,modes:["blur"]},shopperEmail:r.emailRule,default:{validate:e=>!!e&&e.length>0,errorMessage:a.ERROR_MSG_INVALID_FIELD,modes:["blur"]},firstName:{validate:e=>!!e&&e.length>0,errorMessage:"firstName.invalid",modes:["blur"]},lastName:{validate:e=>!!e&&e.length>0,errorMessage:"lastName.invalid",modes:["blur"]}};export{s as boletoValidationRules};
2
2
  //# sourceMappingURL=validate.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as e,Fragment as r}from"../../../../external/preact/dist/preact.js";import{useRef as s,useMemo as t,useState as o,useCallback as n,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{cardInputFormatters as p,cardInputValidationRules as h,getRuleByNameAndMode as b}from"./validate.js";import f from"../../../internal/SecuredFields/binLookup/extensions.js";import y from"../../../../utils/useForm/useForm.js";import{handlePartialAddressMode as N,extractPropsForSFP as S,extractPropsForCardFields as g,getLayout as A}from"./utils.js";import F from"../../../internal/Address/Specifications.js";import{StoredCardFieldsWrapper as C}from"./components/StoredCardFieldsWrapper.js";import{CardFieldsWrapper as j}from"./components/CardFieldsWrapper.js";import{getAutoJumpHandler as k,getFocusHandler as R,getAddressHandler as x}from"./handlers.js";import v from"../../../../_virtual/index.js";import{getPartialAddressValidationRules as P}from"../../../internal/Address/validate.js";import w from"../../../../core/Context/useImage.js";import{getArrayDifferences as I}from"../../../../utils/arrayUtils.js";import B from"../../../internal/FormInstruction/FormInstruction.js";import{PREFIX as V}from"../../../internal/Icon/constants.js";import E from"./useSRPanelForCardInputErrors.js";const O=l=>{const O=s(null),q=s(!1),M=w(),D=s(null),_=e=>{D.current=e},L=s({});Object.keys(L.current).length||l.setComponentRef(L.current);const T=s(0),K=s(!1),H=t((()=>new F(l.specifications)),[l.specifications]);L.current.sfp=O;const[U,z]=o("ready"),[W,$]=o({}),[G,J]=o({...l.holderNameRequired&&{holderName:!1}}),[Q,X]=o({...l.hasHolderName&&{holderName:l.data.holderName??""}}),[Y,Z]=o(""),[ee,re]=o(!1),[se,te]=o(c),[oe,ne]=o(m),[ae,ie]=o(null),[le,de]=o([]),[ue,ce]=o(l.storedPaymentMethodId?l.brand:""),me=l.billingAddressMode!==d.none&&l.billingAddressRequired,pe=N(l.billingAddressMode),he=s(pe&&l.data?.billingAddress?.country),[be,fe]=o(!1),[ye,Ne]=o(me?l.data.billingAddress:null),[Se,ge]=o(!1),[Ae,Fe]=o(""),[Ce,je]=o({value:null}),[ke,Re]=o(null),[xe,ve]=o("card"),{handleChangeFor:Pe,triggerValidation:we,data:Ie,valid:Be,errors:Ve,setSchema:Ee,setData:Oe,setValid:qe,setErrors:Me}=y({schema:[],defaultData:l.data,formatters:p,rules:h}),De=!!Object.keys(l.installmentOptions).length&&"debit"!==l.fundingSource,_e=l.showInstallmentAmounts??!0,Le="kr"===(ae??l.countryCode),Te=l.configuration.koreanAuthenticationRequired&&Le,Ke=Se&&"auto"===l.configuration.socialSecurityNumberMode||"show"===l.configuration.socialSecurityNumberMode,He=(e,r)=>{l.onFocus({fieldType:e,event:r})},Ue=(e,r)=>{l.onBlur({fieldType:e,event:r})},ze=n((e=>{ve(e.brand),l.onBrand(e)}),[]),We=R(Z,He,Ue),$e=()=>A({props:l,showKCP:Te,showBrazilianSSN:Ke,...l.billingAddressRequired&&{countrySpecificSchemas:H.getAddressSchemaForCountry(ye?.country),billingAddressRequiredFields:l.billingAddressRequiredFields}}),Ge=n((e=>{const r="webInternalElement"!==e.fieldType?e.fieldType:e.name;Re(r)}),[]),Je=x(Oe,qe,Me),Qe=k(K,O,$e()),Xe=t((()=>f(l,{sfp:O},{dualBrandSelectElements:le,setDualBrandSelectElements:de,setSelectedBrandValue:ce,issuingCountryCode:ae,setIssuingCountryCode:ie},T)),[le,ae]);L.current.showValidation=()=>{q.current=!0,er?.(),O.current.showValidation(),we(["holderName","socialSecurityNumber","taxNumber"]),D?.current&&D.current.showValidation()},L.current.processBinLookupResponse=(e,r)=>{Xe.processBinLookup(e,r)},L.current.setStatus=z,a((()=>(L.current.setFocusOn=O.current.setFocusOn,L.current.updateStyles=O.current.updateStyles,L.current.handleUnsupportedCard=O.current.handleUnsupportedCard,()=>{O.current.destroy()})),[]),a((()=>{const e=[...l.hasHolderName?["holderName"]:[],...Ke?["socialSecurityNumber"]:[],...Te?["taxNumber"]:[],...me?["billingAddress"]:[]];Ee(e)}),[l.hasHolderName,Ke,Te]),a((()=>{X({...Q,holderName:Ie.holderName??"",taxNumber:Ie.taxNumber}),Fe(Ie.socialSecurityNumber),me&&Ne({...Ie.billingAddress}),J({...G,holderName:!l.holderNameRequired||Be.holderName,socialSecurityNumber:!!Be.socialSecurityNumber&&Be.socialSecurityNumber,taxNumber:!!Be.taxNumber&&Be.taxNumber,billingAddress:!!Be.billingAddress&&Be.billingAddress});const e=!!Ve.billingAddress&&Object.entries(Ve.billingAddress).reduce(((e,[,r])=>e||null!=r),!1);$({...W,holderName:l.holderNameRequired&&Ve.holderName?Ve.holderName:null,socialSecurityNumber:Ke&&Ve.socialSecurityNumber?Ve.socialSecurityNumber:null,taxNumber:Te&&Ve.taxNumber?Ve.taxNumber:null,billingAddress:me&&e?Ve.billingAddress:null})}),[Ie,Be,Ve]);const{sortedErrorList:Ye,previousSortedErrors:Ze,clearSRPanel:er}=E({errors:W,props:l,isValidating:q,retrieveLayout:$e,specifications:H,billingAddress:ye,sfp:O});if(Ye){const e=I(Ye,Ze,"field");e?.forEach((e=>{const r={fieldType:e.field,errorCode:e.errorCode};l.onValidationErrorAnalytics(r)}))}a((()=>{const e=G.holderName,r=ee,s=!me||G.billingAddress,t=!Te||!!G.taxNumber&&!!G.encryptedPassword,o=!Ke||!!G.socialSecurityNumber,n=r&&e&&s&&t&&o,a=O.current.mapErrorsToValidationRuleResult(),i={...W,...a};l.onChange({data:Q,valid:G,errors:i,isValid:n,billingAddress:ye,selectedBrandValue:ue,storePaymentMethod:be,socialSecurityNumber:Ae,installments:Ce})}),[Q,G,W,ue,be,Ce]);const rr=l.storedPaymentMethodId?C:j;return e(r,null,e(i,{ref:O,...S(l),styles:{...l.styles},koreanAuthenticationRequired:l.configuration.koreanAuthenticationRequired,hasKoreanFields:!(!l.configuration.koreanAuthenticationRequired||"kr"!==l.countryCode),onChange:(e,r)=>{if(e.autoCompleteName){if(!l.hasHolderName)return;const r=b("holderName","blur")(e.autoCompleteName)?e.autoCompleteName:null;r&&(Oe("holderName",r),qe("holderName",!0),Me("holderName",null))}else l.autoFocus&&T.current>0&&"handleOnFieldValid"===r?.event&&r?.fieldType===u&&e.valid.encryptedCardNumber&&Qe(),X({...Q,...e.data}),$({...W,...e.errors}),J({...G,...e.valid}),re(e.isSfpValid),ne(e.cvcPolicy),ge(e.showSocialSecurityNumber),te(e.expiryDatePolicy)},onBrand:ze,onFocus:We,type:l.brand,disableIOSArrowKeys:l.disableIOSArrowKeys?Ge:null,render:({setRootNode:r,setFocusOn:s},t)=>e("div",{ref:r,className:v({"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"===U}),role:"form"},e(B,null),e(rr,{...g(l),data:Q,valid:G,errors:W,handleChangeFor:Pe,focusedElement:Y,setFocusOn:s,sfpState:t,cvcPolicy:oe,hasInstallments:De,showAmountsInInstallments:_e,handleInstallments:je,brandsIcons:l.brandsIcons,formData:Ie,formErrors:Ve,formValid:Be,expiryDatePolicy:se,dualBrandSelectElements:le,extensions:Xe,selectedBrandValue:ue,showKCP:Te,showBrazilianSSN:Ke,socialSecurityNumber:Ae,handleOnStoreDetails:fe,setAddressRef:_,billingAddress:ye,billingAddressValidationRules:pe&&P(he.current),partialAddressSchema:pe,handleAddress:Je,onAddressLookup:l.onAddressLookup,onAddressSelected:l.onAddressSelected,addressSearchDebounceMs:l.addressSearchDebounceMs,iOSFocusedField:ke,onFieldFocusAnalytics:He,onFieldBlurAnalytics:Ue}))}),l.showPayButton&&l.payButton({status:U,variant:l.isPayButtonPrimaryVariant?"primary":"secondary",icon:M({imageFolder:"components/"})(`${V}lock`)}))};O.defaultProps=l;export{O as default};
1
+ import{createElement as e,Fragment as r}from"../../../../external/preact/dist/preact.js";import{useRef as s,useMemo as t,useState as o,useCallback as n,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 h,cardInputFormatters as b}from"./validate.js";import f from"../../../internal/SecuredFields/binLookup/extensions.js";import y from"../../../../utils/useForm/useForm.js";import{handlePartialAddressMode as N,extractPropsForSFP as S,extractPropsForCardFields as g,getLayout as A}from"./utils.js";import F from"../../../internal/Address/Specifications.js";import{StoredCardFieldsWrapper as C}from"./components/StoredCardFieldsWrapper.js";import{CardFieldsWrapper as j}from"./components/CardFieldsWrapper.js";import{getAutoJumpHandler as k,getFocusHandler as R,getAddressHandler as x}from"./handlers.js";import v from"../../../../_virtual/index.js";import{getPartialAddressValidationRules as P}from"../../../internal/Address/validate.js";import w from"../../../../core/Context/useImage.js";import{getArrayDifferences as I}from"../../../../utils/arrayUtils.js";import B from"../../../internal/FormInstruction/FormInstruction.js";import{PREFIX as V}from"../../../internal/Icon/constants.js";import E from"./useSRPanelForCardInputErrors.js";const O=l=>{const O=s(null),q=s(!1),M=w(),D=s(null),_=e=>{D.current=e},L=s({});Object.keys(L.current).length||l.setComponentRef(L.current);const T=s(0),K=s(!1),H=t((()=>new F(l.specifications)),[l.specifications]);L.current.sfp=O;const[U,z]=o("ready"),[W,$]=o({}),[G,J]=o({...l.holderNameRequired&&{holderName:!1}}),[Q,X]=o({...l.hasHolderName&&{holderName:l.data.holderName??""}}),[Y,Z]=o(""),[ee,re]=o(!1),[se,te]=o(c),[oe,ne]=o(m),[ae,ie]=o(null),[le,de]=o([]),[ue,ce]=o(l.storedPaymentMethodId?l.brand:""),me=l.billingAddressMode!==d.none&&l.billingAddressRequired,pe=N(l.billingAddressMode),he=s(pe&&l.data?.billingAddress?.country),[be,fe]=o(!1),[ye,Ne]=o(me?l.data.billingAddress:null),[Se,ge]=o(!1),[Ae,Fe]=o(""),[Ce,je]=o({value:null}),[ke,Re]=o(null),[xe,ve]=o("card"),{handleChangeFor:Pe,triggerValidation:we,data:Ie,valid:Be,errors:Ve,setSchema:Ee,setData:Oe,setValid:qe,setErrors:Me}=y({schema:[],defaultData:l.data,formatters:b,rules:p}),De=!!Object.keys(l.installmentOptions).length&&"debit"!==l.fundingSource,_e=l.showInstallmentAmounts??!0,Le="kr"===(ae??l.countryCode),Te=l.configuration.koreanAuthenticationRequired&&Le,Ke=Se&&"auto"===l.configuration.socialSecurityNumberMode||"show"===l.configuration.socialSecurityNumberMode,He=(e,r)=>{l.onFocus({fieldType:e,event:r})},Ue=(e,r)=>{l.onBlur({fieldType:e,event:r})},ze=n((e=>{ve(e.brand),l.onBrand(e)}),[]),We=R(Z,He,Ue),$e=()=>A({props:l,showKCP:Te,showBrazilianSSN:Ke,...l.billingAddressRequired&&{countrySpecificSchemas:H.getAddressSchemaForCountry(ye?.country),billingAddressRequiredFields:l.billingAddressRequiredFields}}),Ge=n((e=>{const r="webInternalElement"!==e.fieldType?e.fieldType:e.name;Re(r)}),[]),Je=x(Oe,qe,Me),Qe=k(K,O,$e()),Xe=t((()=>f(l,{sfp:O},{dualBrandSelectElements:le,setDualBrandSelectElements:de,setSelectedBrandValue:ce,issuingCountryCode:ae,setIssuingCountryCode:ie},T)),[le,ae]);L.current.showValidation=()=>{q.current=!0,er?.(),O.current.showValidation(),we(["holderName","socialSecurityNumber","taxNumber"]),D?.current&&D.current.showValidation()},L.current.processBinLookupResponse=(e,r)=>{Xe.processBinLookup(e,r)},L.current.setStatus=z,a((()=>(L.current.setFocusOn=O.current.setFocusOn,L.current.updateStyles=O.current.updateStyles,L.current.handleUnsupportedCard=O.current.handleUnsupportedCard,()=>{O.current.destroy()})),[]),a((()=>{const e=[...l.hasHolderName?["holderName"]:[],...Ke?["socialSecurityNumber"]:[],...Te?["taxNumber"]:[],...me?["billingAddress"]:[]];Ee(e)}),[l.hasHolderName,Ke,Te]),a((()=>{X({...Q,holderName:Ie.holderName??"",taxNumber:Ie.taxNumber}),Fe(Ie.socialSecurityNumber),me&&Ne({...Ie.billingAddress}),J({...G,holderName:!l.holderNameRequired||Be.holderName,socialSecurityNumber:!!Be.socialSecurityNumber&&Be.socialSecurityNumber,taxNumber:!!Be.taxNumber&&Be.taxNumber,billingAddress:!!Be.billingAddress&&Be.billingAddress});const e=!!Ve.billingAddress&&Object.entries(Ve.billingAddress).reduce(((e,[,r])=>e||null!=r),!1);$({...W,holderName:l.holderNameRequired&&Ve.holderName?Ve.holderName:null,socialSecurityNumber:Ke&&Ve.socialSecurityNumber?Ve.socialSecurityNumber:null,taxNumber:Te&&Ve.taxNumber?Ve.taxNumber:null,billingAddress:me&&e?Ve.billingAddress:null})}),[Ie,Be,Ve]);const{sortedErrorList:Ye,previousSortedErrors:Ze,clearSRPanel:er}=E({errors:W,props:l,isValidating:q,retrieveLayout:$e,specifications:H,billingAddress:ye,sfp:O});if(Ye){const e=I(Ye,Ze,"field");e?.forEach((e=>{const r={fieldType:e.field,errorCode:e.errorCode};l.onValidationErrorAnalytics(r)}))}a((()=>{const e=G.holderName,r=ee,s=!me||G.billingAddress,t=!Te||!!G.taxNumber&&!!G.encryptedPassword,o=!Ke||!!G.socialSecurityNumber,n=r&&e&&s&&t&&o,a=O.current.mapErrorsToValidationRuleResult(),i={...W,...a};l.onChange({data:Q,valid:G,errors:i,isValid:n,billingAddress:ye,selectedBrandValue:ue,storePaymentMethod:be,socialSecurityNumber:Ae,installments:Ce})}),[Q,G,W,ue,be,Ce]);const rr=l.storedPaymentMethodId?C:j;return e(r,null,e(i,{ref:O,...S(l),styles:{...l.styles},koreanAuthenticationRequired:l.configuration.koreanAuthenticationRequired,hasKoreanFields:!(!l.configuration.koreanAuthenticationRequired||"kr"!==l.countryCode),onChange:(e,r)=>{if(e.autoCompleteName){if(!l.hasHolderName)return;const r=h("holderName","blur")(e.autoCompleteName)?e.autoCompleteName:null;r&&(Oe("holderName",r),qe("holderName",!0),Me("holderName",null))}else l.autoFocus&&T.current>0&&"handleOnFieldValid"===r?.event&&r?.fieldType===u&&e.valid.encryptedCardNumber&&Qe(),X({...Q,...e.data}),$({...W,...e.errors}),J({...G,...e.valid}),re(e.isSfpValid),ne(e.cvcPolicy),ge(e.showSocialSecurityNumber),te(e.expiryDatePolicy)},onBrand:ze,onFocus:We,type:l.brand,disableIOSArrowKeys:l.disableIOSArrowKeys?Ge:null,render:({setRootNode:r,setFocusOn:s},t)=>e("div",{ref:r,className:v({"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"===U}),role:"form"},e(B,null),e(rr,{...g(l),data:Q,valid:G,errors:W,handleChangeFor:Pe,focusedElement:Y,setFocusOn:s,sfpState:t,cvcPolicy:oe,hasInstallments:De,showAmountsInInstallments:_e,handleInstallments:je,brandsIcons:l.brandsIcons,formData:Ie,formErrors:Ve,formValid:Be,expiryDatePolicy:se,dualBrandSelectElements:le,extensions:Xe,selectedBrandValue:ue,showKCP:Te,showBrazilianSSN:Ke,socialSecurityNumber:Ae,handleOnStoreDetails:fe,setAddressRef:_,billingAddress:ye,billingAddressValidationRules:pe&&P(he.current),partialAddressSchema:pe,handleAddress:Je,onAddressLookup:l.onAddressLookup,onAddressSelected:l.onAddressSelected,addressSearchDebounceMs:l.addressSearchDebounceMs,iOSFocusedField:ke,onFieldFocusAnalytics:He,onFieldBlurAnalytics:Ue}))}),l.showPayButton&&l.payButton({status:U,variant:l.isPayButtonPrimaryVariant?"primary":"secondary",icon:M({imageFolder:"components/"})(`${V}lock`)}))};O.defaultProps=l;export{O as default};
2
2
  //# sourceMappingURL=CardInput.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as r}from"../../../../../external/preact/dist/preact.js";import{getCardImageUrl as o,getFullBrandName as t}from"../utils.js";import a from"../../../../../core/Context/useImage.js";import{useState as e}from"../../../../../external/preact/hooks/dist/hooks.js";import n from"../../../../../_virtual/index.js";function c({brand:c,brandsConfiguration:i={}}){const s=a(),d="card"===c?"nocard":c,m=i[c]?.icon??o(d,s),[u,p]=e(!1),_=n({"adyen-checkout-card-input__icon":!0,"adyen-checkout__card__cardNumber__brandIcon":!0,"adyen-checkout-card-input__icon--hidden":!u});return r("img",{className:_,onLoad:()=>{p(!0)},onError:()=>{p(!1)},alt:t(c),src:m})}export{c as default};
1
+ import{createElement as r}from"../../../../../external/preact/dist/preact.js";import{getCardImageUrl as o,getFullBrandName as t}from"../utils.js";import a from"../../../../../core/Context/useImage.js";import{useState as e}from"../../../../../external/preact/hooks/dist/hooks.js";import n from"../../../../../_virtual/index.js";function c({brand:c,brandsConfiguration:i={},onClick:s}){const d=a(),m="card"===c?"nocard":c,u=i[c]?.icon??o(m,d),[p,_]=e(!1),l=n({"adyen-checkout-card-input__icon":!0,"adyen-checkout__card__cardNumber__brandIcon":!0,"adyen-checkout-card-input__icon--hidden":!p});return r("img",{className:l,onLoad:()=>{_(!0)},onError:()=>{_(!1)},alt:t(c),src:u,onClick:s})}export{c as default};
2
2
  //# sourceMappingURL=BrandIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrandIcon.js","sources":["../../../../../../../src/components/Card/components/CardInput/components/BrandIcon.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { getCardImageUrl, getFullBrandName } from '../utils';\nimport { BrandIconProps } from './types';\nimport useImage from '../../../../../core/Context/useImage';\nimport { useState } from 'preact/hooks';\nimport classNames from 'classnames';\n\nexport default function BrandIcon({ brand, brandsConfiguration = {} }: BrandIconProps) {\n const getImage = useImage();\n const imageName = brand === 'card' ? 'nocard' : brand;\n const imageUrl = brandsConfiguration[brand]?.icon ?? getCardImageUrl(imageName, getImage);\n\n const [hasLoaded, setHasLoaded] = useState(false);\n\n const handleError = () => {\n setHasLoaded(false);\n };\n\n const handleLoad = () => {\n setHasLoaded(true);\n };\n\n const fieldClassnames = classNames({\n 'adyen-checkout-card-input__icon': true,\n 'adyen-checkout__card__cardNumber__brandIcon': true,\n 'adyen-checkout-card-input__icon--hidden': !hasLoaded\n });\n\n return <img className={fieldClassnames} onLoad={handleLoad} onError={handleError} alt={getFullBrandName(brand)} src={imageUrl} />;\n}\n"],"names":["BrandIcon","brand","brandsConfiguration","getImage","useImage","imageName","imageUrl","icon","getCardImageUrl","hasLoaded","setHasLoaded","useState","fieldClassnames","classNames","h","img","className","onLoad","onError","alt","getFullBrandName","src"],"mappings":"uUAOe,SAASA,GAAUC,MAAEA,EAAKC,oBAAEA,EAAsB,CAAE,IAC/D,MAAMC,EAAWC,IACXC,EAAsB,SAAVJ,EAAmB,SAAWA,EAC1CK,EAAWJ,EAAoBD,IAAQM,MAAQC,EAAgBH,EAAWF,IAEzEM,EAAWC,GAAgBC,GAAS,GAUrCC,EAAkBC,EAAW,CAC/B,mCAAmC,EACnC,+CAA+C,EAC/C,2CAA4CJ,IAGhD,OAAOK,EAACC,MAAAA,CAAIC,UAAWJ,EAAiBK,OAVrB,KACfP,GAAa,EAAA,EAS2CQ,QAdxC,KAChBR,GAAa,EAAA,EAaiES,IAAKC,EAAiBnB,GAAQoB,IAAKf,GACzH"}
1
+ {"version":3,"file":"BrandIcon.js","sources":["../../../../../../../src/components/Card/components/CardInput/components/BrandIcon.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { getCardImageUrl, getFullBrandName } from '../utils';\nimport { BrandIconProps } from './types';\nimport useImage from '../../../../../core/Context/useImage';\nimport { useState } from 'preact/hooks';\nimport classNames from 'classnames';\n\nexport default function BrandIcon({ brand, brandsConfiguration = {}, onClick }: BrandIconProps) {\n const getImage = useImage();\n const imageName = brand === 'card' ? 'nocard' : brand;\n const imageUrl = brandsConfiguration[brand]?.icon ?? getCardImageUrl(imageName, getImage);\n\n const [hasLoaded, setHasLoaded] = useState(false);\n\n const handleError = () => {\n setHasLoaded(false);\n };\n\n const handleLoad = () => {\n setHasLoaded(true);\n };\n\n const fieldClassnames = classNames({\n 'adyen-checkout-card-input__icon': true,\n 'adyen-checkout__card__cardNumber__brandIcon': true,\n 'adyen-checkout-card-input__icon--hidden': !hasLoaded\n });\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions\n <img className={fieldClassnames} onLoad={handleLoad} onError={handleError} alt={getFullBrandName(brand)} src={imageUrl} onClick={onClick} />\n );\n}\n"],"names":["BrandIcon","brand","brandsConfiguration","onClick","getImage","useImage","imageName","imageUrl","icon","getCardImageUrl","hasLoaded","setHasLoaded","useState","fieldClassnames","classNames","h","img","className","onLoad","onError","alt","getFullBrandName","src"],"mappings":"uUAOe,SAASA,GAAUC,MAAEA,EAAKC,oBAAEA,EAAsB,CAAE,EAAAC,QAAEA,IACjE,MAAMC,EAAWC,IACXC,EAAsB,SAAVL,EAAmB,SAAWA,EAC1CM,EAAWL,EAAoBD,IAAQO,MAAQC,EAAgBH,EAAWF,IAEzEM,EAAWC,GAAgBC,GAAS,GAUrCC,EAAkBC,EAAW,CAC/B,mCAAmC,EACnC,+CAA+C,EAC/C,2CAA4CJ,IAGhD,OAEIK,EAACC,MAAAA,CAAIC,UAAWJ,EAAiBK,OAZlB,KACfP,GAAa,EAAA,EAWwCQ,QAhBrC,KAChBR,GAAa,EAAA,EAe8DS,IAAKC,EAAiBpB,GAAQqB,IAAKf,EAAUJ,QAASA,GAEzI"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../../../external/preact/dist/preact.js";import t from"../../../../../_virtual/index.js";import o from"./CVCHint.js";import i from"../../../../internal/FormFields/Field/Field.js";import{useCoreContext as r}from"../../../../../core/Context/CoreProvider.js";import{CVC_POLICY_HIDDEN as a,CVC_POLICY_OPTIONAL as c,ENCRYPTED_SECURITY_CODE as l,CVC_POLICY_REQUIRED as n}from"../../../../internal/SecuredFields/lib/constants.js";import d from"./DataSfSpan.js";import{alternativeLabelContent as s}from"./FieldLabelAlternative.js";function u(u){const{label:_,onFocusField:m=()=>{},error:f="",className:p="",classNameModifiers:y=[],focused:C,filled:h,isValid:x,frontCVC:F=!1,cvcPolicy:v=n,showContextualElement:b,contextualText:k}=u,{i18n:j}=r(),V=t(p,{"adyen-checkout__field__cvc":!0,"adyen-checkout__card__cvc__input--hidden":v===a,"adyen-checkout__field__cvc--optional":v===c}),N=t({"adyen-checkout__input":!0,"adyen-checkout__input--small":!0,"adyen-checkout__card__cvc__input":!0,"adyen-checkout__input--error":f,"adyen-checkout__input--focus":C,"adyen-checkout__input--valid":x}),T=v!==c?_:j.get("creditCard.securityCode.label.optional"),E=`${T} ${k}`;return e(i,{label:T,focused:C,filled:h,classNameModifiers:[...y,"securityCode"],onFocusField:()=>m(l),className:V,errorMessage:f,isValid:x,dir:"ltr",name:l,i18n:j,contextVisibleToScreenReader:!1,useLabelElement:!1,renderAlternativeToLabel:s,showContextualElement:b,contextualText:k},e(d,{encryptedFieldType:l,className:N}),e(o,{frontCVC:F,fieldLabel:E}))}export{u as default};
1
+ import{createElement as e}from"../../../../../external/preact/dist/preact.js";import t from"../../../../../_virtual/index.js";import o from"./CVCHint.js";import i from"../../../../internal/FormFields/Field/Field.js";import{useCoreContext as r}from"../../../../../core/Context/CoreProvider.js";import{CVC_POLICY_REQUIRED as a,CVC_POLICY_OPTIONAL as c,CVC_POLICY_HIDDEN as l,ENCRYPTED_SECURITY_CODE as n}from"../../../../internal/SecuredFields/lib/constants.js";import d from"./DataSfSpan.js";import{alternativeLabelContent as s}from"./FieldLabelAlternative.js";function u(u){const{label:_,onFocusField:m=()=>{},error:f="",className:p="",classNameModifiers:y=[],focused:C,filled:h,isValid:x,frontCVC:F=!1,cvcPolicy:k=a,showContextualElement:v,contextualText:b}=u,{i18n:j}=r(),V=t(p,{"adyen-checkout__field__cvc":!0,"adyen-checkout__card__cvc__input--hidden":k===l,"adyen-checkout__field__cvc--optional":k===c}),N=t({"adyen-checkout__input":!0,"adyen-checkout__input--small":!0,"adyen-checkout__card__cvc__input":!0,"adyen-checkout__input--error":f,"adyen-checkout__input--focus":C,"adyen-checkout__input--valid":x}),T=k!==c?_:j.get("creditCard.securityCode.label.optional"),E=`${T} ${b}`;return e(i,{label:T,focused:C,filled:h,classNameModifiers:[...y,"securityCode"],onFocusField:()=>m(n),className:V,errorMessage:f,isValid:x,dir:"ltr",name:n,i18n:j,contextVisibleToScreenReader:!1,useLabelElement:!1,renderAlternativeToLabel:s,showContextualElement:v,contextualText:b},e(d,{encryptedFieldType:n,className:N}),e(o,{frontCVC:F,fieldLabel:E,onClick:()=>{m(n)}}))}export{u as default};
2
2
  //# sourceMappingURL=CVC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CVC.js","sources":["../../../../../../../src/components/Card/components/CardInput/components/CVC.tsx"],"sourcesContent":["import { h } from 'preact';\nimport classNames from 'classnames';\nimport CVCHint from './CVCHint';\nimport Field from '../../../../internal/FormFields/Field';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport { CVCProps } from './types';\nimport {\n CVC_POLICY_HIDDEN,\n CVC_POLICY_OPTIONAL,\n CVC_POLICY_REQUIRED,\n ENCRYPTED_SECURITY_CODE\n} from '../../../../internal/SecuredFields/lib/constants';\nimport DataSfSpan from './DataSfSpan';\nimport { alternativeLabelContent } from './FieldLabelAlternative';\n\nexport default function CVC(props: CVCProps) {\n const {\n label,\n onFocusField = () => {},\n error = '',\n className = '',\n classNameModifiers = [],\n focused,\n filled,\n isValid,\n frontCVC = false,\n cvcPolicy = CVC_POLICY_REQUIRED,\n showContextualElement,\n contextualText\n } = props;\n const { i18n } = useCoreContext();\n\n const fieldClassnames = classNames(className, {\n 'adyen-checkout__field__cvc': true,\n 'adyen-checkout__card__cvc__input--hidden': cvcPolicy === CVC_POLICY_HIDDEN,\n 'adyen-checkout__field__cvc--optional': cvcPolicy === CVC_POLICY_OPTIONAL\n });\n\n const cvcClassnames = classNames({\n 'adyen-checkout__input': true,\n 'adyen-checkout__input--small': true,\n 'adyen-checkout__card__cvc__input': true,\n 'adyen-checkout__input--error': error,\n 'adyen-checkout__input--focus': focused,\n 'adyen-checkout__input--valid': isValid\n });\n\n const fieldLabel = cvcPolicy !== CVC_POLICY_OPTIONAL ? label : i18n.get('creditCard.securityCode.label.optional');\n\n const imageDescription = `${fieldLabel} ${contextualText}`;\n\n return (\n <Field\n label={fieldLabel}\n focused={focused}\n filled={filled}\n classNameModifiers={[...classNameModifiers, 'securityCode']}\n onFocusField={() => onFocusField(ENCRYPTED_SECURITY_CODE)}\n className={fieldClassnames}\n errorMessage={error}\n isValid={isValid}\n dir={'ltr'}\n name={ENCRYPTED_SECURITY_CODE}\n i18n={i18n}\n contextVisibleToScreenReader={false}\n useLabelElement={false}\n renderAlternativeToLabel={alternativeLabelContent}\n showContextualElement={showContextualElement}\n contextualText={contextualText}\n >\n <DataSfSpan encryptedFieldType={ENCRYPTED_SECURITY_CODE} className={cvcClassnames} />\n\n <CVCHint frontCVC={frontCVC} fieldLabel={imageDescription} />\n </Field>\n );\n}\n"],"names":["CVC","props","label","onFocusField","error","className","classNameModifiers","focused","filled","isValid","frontCVC","cvcPolicy","CVC_POLICY_REQUIRED","showContextualElement","contextualText","i18n","useCoreContext","fieldClassnames","classNames","CVC_POLICY_HIDDEN","CVC_POLICY_OPTIONAL","cvcClassnames","fieldLabel","get","imageDescription","h","Field","ENCRYPTED_SECURITY_CODE","errorMessage","dir","name","contextVisibleToScreenReader","useLabelElement","renderAlternativeToLabel","alternativeLabelContent","DataSfSpan","encryptedFieldType","CVCHint"],"mappings":"gjBAee,SAASA,EAAIC,GACxB,MAAMC,MACFA,EAAKC,aACLA,EAAe,OAAQC,MACvBA,EAAQ,GAAEC,UACVA,EAAY,GAAEC,mBACdA,EAAqB,GAAEC,QACvBA,EAAOC,OACPA,EAAMC,QACNA,EAAOC,SACPA,GAAW,EAAKC,UAChBA,EAAYC,EAAmBC,sBAC/BA,EAAqBC,eACrBA,GACAb,GACEc,KAAEA,GAASC,IAEXC,EAAkBC,EAAWb,EAAW,CAC1C,8BAA8B,EAC9B,2CAA4CM,IAAcQ,EAC1D,uCAAwCR,IAAcS,IAGpDC,EAAgBH,EAAW,CAC7B,yBAAyB,EACzB,gCAAgC,EAChC,oCAAoC,EACpC,+BAAgCd,EAChC,+BAAgCG,EAChC,+BAAgCE,IAG9Ba,EAAaX,IAAcS,EAAsBlB,EAAQa,EAAKQ,IAAI,0CAElEC,EAAmB,GAAGF,KAAcR,IAE1C,OACIW,EAACC,EAAAA,CACGxB,MAAOoB,EACPf,QAASA,EACTC,OAAQA,EACRF,mBAAoB,IAAIA,EAAoB,gBAC5CH,aAAc,IAAMA,EAAawB,GACjCtB,UAAWY,EACXW,aAAcxB,EACdK,QAASA,EACToB,IAAK,MACLC,KAAMH,EACNZ,KAAMA,EACNgB,8BAA8B,EAC9BC,iBAAiB,EACjBC,yBAA0BC,EAC1BrB,sBAAuBA,EACvBC,eAAgBA,GAEhBW,EAACU,EAAAA,CAAWC,mBAAoBT,EAAyBtB,UAAWgB,IAEpEI,EAACY,EAAAA,CAAQ3B,SAAUA,EAAUY,WAAYE,IAGrD"}
1
+ {"version":3,"file":"CVC.js","sources":["../../../../../../../src/components/Card/components/CardInput/components/CVC.tsx"],"sourcesContent":["import { h } from 'preact';\nimport classNames from 'classnames';\nimport CVCHint from './CVCHint';\nimport Field from '../../../../internal/FormFields/Field';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport { CVCProps } from './types';\nimport {\n CVC_POLICY_HIDDEN,\n CVC_POLICY_OPTIONAL,\n CVC_POLICY_REQUIRED,\n ENCRYPTED_SECURITY_CODE\n} from '../../../../internal/SecuredFields/lib/constants';\nimport DataSfSpan from './DataSfSpan';\nimport { alternativeLabelContent } from './FieldLabelAlternative';\n\nexport default function CVC(props: CVCProps) {\n const {\n label,\n onFocusField = () => {},\n error = '',\n className = '',\n classNameModifiers = [],\n focused,\n filled,\n isValid,\n frontCVC = false,\n cvcPolicy = CVC_POLICY_REQUIRED,\n showContextualElement,\n contextualText\n } = props;\n const { i18n } = useCoreContext();\n\n const fieldClassnames = classNames(className, {\n 'adyen-checkout__field__cvc': true,\n 'adyen-checkout__card__cvc__input--hidden': cvcPolicy === CVC_POLICY_HIDDEN,\n 'adyen-checkout__field__cvc--optional': cvcPolicy === CVC_POLICY_OPTIONAL\n });\n\n const cvcClassnames = classNames({\n 'adyen-checkout__input': true,\n 'adyen-checkout__input--small': true,\n 'adyen-checkout__card__cvc__input': true,\n 'adyen-checkout__input--error': error,\n 'adyen-checkout__input--focus': focused,\n 'adyen-checkout__input--valid': isValid\n });\n\n const fieldLabel = cvcPolicy !== CVC_POLICY_OPTIONAL ? label : i18n.get('creditCard.securityCode.label.optional');\n\n const handleIconClick = () => {\n onFocusField(ENCRYPTED_SECURITY_CODE);\n };\n\n const imageDescription = `${fieldLabel} ${contextualText}`;\n\n return (\n <Field\n label={fieldLabel}\n focused={focused}\n filled={filled}\n classNameModifiers={[...classNameModifiers, 'securityCode']}\n onFocusField={() => onFocusField(ENCRYPTED_SECURITY_CODE)}\n className={fieldClassnames}\n errorMessage={error}\n isValid={isValid}\n dir={'ltr'}\n name={ENCRYPTED_SECURITY_CODE}\n i18n={i18n}\n contextVisibleToScreenReader={false}\n useLabelElement={false}\n renderAlternativeToLabel={alternativeLabelContent}\n showContextualElement={showContextualElement}\n contextualText={contextualText}\n >\n <DataSfSpan encryptedFieldType={ENCRYPTED_SECURITY_CODE} className={cvcClassnames} />\n\n <CVCHint frontCVC={frontCVC} fieldLabel={imageDescription} onClick={handleIconClick} />\n </Field>\n );\n}\n"],"names":["CVC","props","label","onFocusField","error","className","classNameModifiers","focused","filled","isValid","frontCVC","cvcPolicy","CVC_POLICY_REQUIRED","showContextualElement","contextualText","i18n","useCoreContext","fieldClassnames","classNames","CVC_POLICY_HIDDEN","CVC_POLICY_OPTIONAL","cvcClassnames","fieldLabel","get","imageDescription","h","Field","ENCRYPTED_SECURITY_CODE","errorMessage","dir","name","contextVisibleToScreenReader","useLabelElement","renderAlternativeToLabel","alternativeLabelContent","DataSfSpan","encryptedFieldType","CVCHint","onClick"],"mappings":"gjBAee,SAASA,EAAIC,GACxB,MAAMC,MACFA,EAAKC,aACLA,EAAe,OAAQC,MACvBA,EAAQ,GAAEC,UACVA,EAAY,GAAEC,mBACdA,EAAqB,GAAEC,QACvBA,EAAOC,OACPA,EAAMC,QACNA,EAAOC,SACPA,GAAW,EAAKC,UAChBA,EAAYC,EAAmBC,sBAC/BA,EAAqBC,eACrBA,GACAb,GACEc,KAAEA,GAASC,IAEXC,EAAkBC,EAAWb,EAAW,CAC1C,8BAA8B,EAC9B,2CAA4CM,IAAcQ,EAC1D,uCAAwCR,IAAcS,IAGpDC,EAAgBH,EAAW,CAC7B,yBAAyB,EACzB,gCAAgC,EAChC,oCAAoC,EACpC,+BAAgCd,EAChC,+BAAgCG,EAChC,+BAAgCE,IAG9Ba,EAAaX,IAAcS,EAAsBlB,EAAQa,EAAKQ,IAAI,0CAMlEC,EAAmB,GAAGF,KAAcR,IAE1C,OACIW,EAACC,EAAAA,CACGxB,MAAOoB,EACPf,QAASA,EACTC,OAAQA,EACRF,mBAAoB,IAAIA,EAAoB,gBAC5CH,aAAc,IAAMA,EAAawB,GACjCtB,UAAWY,EACXW,aAAcxB,EACdK,QAASA,EACToB,IAAK,MACLC,KAAMH,EACNZ,KAAMA,EACNgB,8BAA8B,EAC9BC,iBAAiB,EACjBC,yBAA0BC,EAC1BrB,sBAAuBA,EACvBC,eAAgBA,GAEhBW,EAACU,EAAAA,CAAWC,mBAAoBT,EAAyBtB,UAAWgB,IAEpEI,EAACY,EAAAA,CAAQ3B,SAAUA,EAAUY,WAAYE,EAAkBc,QA3B3C,KACpBnC,EAAawB,EAAAA,IA6BrB"}