@adyen/adyen-web 6.0.0-alpha.2 → 6.0.0-alpha.3

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 (322) hide show
  1. package/README.md +166 -0
  2. package/dist/cjs/adyen.css +2 -2
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +1932 -1968
  6. package/dist/es/adyen.css +2 -2
  7. package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
  8. package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
  9. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js +1 -1
  10. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  11. package/dist/es/components/ApplePay/ApplePay.js +1 -1
  12. package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
  13. package/dist/es/components/ApplePay/defaultProps.js +1 -1
  14. package/dist/es/components/ApplePay/defaultProps.js.map +1 -1
  15. package/dist/es/components/ApplePay/payment-request.js.map +1 -1
  16. package/dist/es/components/Boleto/components/BoletoInput/validate.js +1 -1
  17. package/dist/es/components/Boleto/components/BoletoInput/validate.js.map +1 -1
  18. package/dist/es/components/Card/Card.js +1 -1
  19. package/dist/es/components/Card/Card.js.map +1 -1
  20. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  21. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  22. package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
  23. package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
  24. package/dist/es/components/Card/components/CardInput/components/CardHolderName.js +1 -1
  25. package/dist/es/components/Card/components/CardInput/components/CardHolderName.js.map +1 -1
  26. package/dist/es/components/Card/components/CardInput/components/KCPAuthentication.js +1 -1
  27. package/dist/es/components/Card/components/CardInput/components/KCPAuthentication.js.map +1 -1
  28. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  29. package/dist/es/components/Card/components/CardInput/utils.js +1 -1
  30. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  31. package/dist/es/components/Card/components/CardInput/validate.js +1 -1
  32. package/dist/es/components/Card/components/CardInput/validate.js.map +1 -1
  33. package/dist/es/components/CashAppPay/defaultProps.js +1 -1
  34. package/dist/es/components/CashAppPay/defaultProps.js.map +1 -1
  35. package/dist/es/components/Donation/Donation.js.map +1 -1
  36. package/dist/es/components/Dragonpay/Dragonpay.js +1 -1
  37. package/dist/es/components/Dragonpay/Dragonpay.js.map +1 -1
  38. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  39. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  40. package/dist/es/components/Econtext/Econtext.js +1 -1
  41. package/dist/es/components/Econtext/Econtext.js.map +1 -1
  42. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  43. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  44. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  45. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  46. package/dist/es/components/Giropay/Giropay.js +1 -1
  47. package/dist/es/components/Giropay/Giropay.js.map +1 -1
  48. package/dist/es/components/GooglePay/GooglePay.js +1 -1
  49. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  50. package/dist/es/components/GooglePay/GooglePayService.js +1 -1
  51. package/dist/es/components/GooglePay/GooglePayService.js.map +1 -1
  52. package/dist/es/components/GooglePay/defaultProps.js +1 -1
  53. package/dist/es/components/GooglePay/defaultProps.js.map +1 -1
  54. package/dist/es/components/GooglePay/requests.js.map +1 -1
  55. package/dist/es/components/Multibanco/Multibanco.js +1 -1
  56. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  57. package/dist/es/components/Pix/Pix.js +1 -1
  58. package/dist/es/components/Pix/Pix.js.map +1 -1
  59. package/dist/es/components/Pix/PixInput/PixInput.js +1 -1
  60. package/dist/es/components/Pix/PixInput/PixInput.js.map +1 -1
  61. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  62. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  63. package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
  64. package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
  65. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  66. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  67. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  68. package/dist/es/components/ThreeDS2/components/utils.js +1 -1
  69. package/dist/es/components/ThreeDS2/components/utils.js.map +1 -1
  70. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  71. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  72. package/dist/es/components/internal/Address/Address.js +1 -1
  73. package/dist/es/components/internal/Address/Address.js.map +1 -1
  74. package/dist/es/components/internal/Address/validate.js +1 -1
  75. package/dist/es/components/internal/Address/validate.js.map +1 -1
  76. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  77. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  78. package/dist/es/components/internal/CompanyDetails/validate.js +1 -1
  79. package/dist/es/components/internal/CompanyDetails/validate.js.map +1 -1
  80. package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
  81. package/dist/es/components/internal/Img/Img.js +1 -1
  82. package/dist/es/components/internal/Img/Img.js.map +1 -1
  83. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  84. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  85. package/dist/es/components/internal/PersonalDetails/validate.js +1 -1
  86. package/dist/es/components/internal/PersonalDetails/validate.js.map +1 -1
  87. package/dist/es/components/internal/SecuredFields/SFP/SFPUtils.js +1 -1
  88. package/dist/es/components/internal/SecuredFields/SFP/SFPUtils.js.map +1 -1
  89. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  90. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  91. package/dist/es/components/internal/SecuredFields/binLookup/triggerBinLookUp.js +1 -1
  92. package/dist/es/components/internal/SecuredFields/binLookup/triggerBinLookUp.js.map +1 -1
  93. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  94. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/cardType.js +1 -1
  95. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  96. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/processErrors.js +1 -1
  97. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/processErrors.js.map +1 -1
  98. package/dist/es/components/internal/SecuredFields/lib/configuration/constants.js +1 -1
  99. package/dist/es/components/internal/SecuredFields/lib/configuration/constants.js.map +1 -1
  100. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  101. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  102. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
  103. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  104. package/dist/es/components/internal/SecuredFields/lib/utilities/addContextTranslations.js.map +1 -1
  105. package/dist/es/components/internal/SegmentedControl/SegmentedControl.js +1 -1
  106. package/dist/es/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
  107. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  108. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  109. package/dist/es/components/internal/UIElement/utils.js +1 -1
  110. package/dist/es/components/internal/UIElement/utils.js.map +1 -1
  111. package/dist/es/core/Analytics/Analytics.js +1 -1
  112. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  113. package/dist/es/core/Analytics/constants.js +1 -1
  114. package/dist/es/core/Analytics/constants.js.map +1 -1
  115. package/dist/es/core/Analytics/utils.js +1 -1
  116. package/dist/es/core/Analytics/utils.js.map +1 -1
  117. package/dist/es/core/Errors/constants.js +1 -1
  118. package/dist/es/core/Errors/constants.js.map +1 -1
  119. package/dist/es/core/Errors/utils.js +1 -1
  120. package/dist/es/core/Errors/utils.js.map +1 -1
  121. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
  122. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  123. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  124. package/dist/es/core/Services/analytics/log-event.js +1 -1
  125. package/dist/es/core/core.js +1 -1
  126. package/dist/es/core/core.js.map +1 -1
  127. package/dist/es/core/utils.js +1 -1
  128. package/dist/es/core/utils.js.map +1 -1
  129. package/dist/es/index.d.ts +1932 -1968
  130. package/dist/es/language/locales/ar.json.js +1 -1
  131. package/dist/es/language/locales/cs-CZ.json.js +1 -1
  132. package/dist/es/language/locales/da-DK.json.js +1 -1
  133. package/dist/es/language/locales/de-DE.json.js +1 -1
  134. package/dist/es/language/locales/el-GR.json.js +1 -1
  135. package/dist/es/language/locales/en-US.json.js +1 -1
  136. package/dist/es/language/locales/es-ES.json.js +1 -1
  137. package/dist/es/language/locales/fi-FI.json.js +1 -1
  138. package/dist/es/language/locales/fr-FR.json.js +1 -1
  139. package/dist/es/language/locales/hr-HR.json.js +1 -1
  140. package/dist/es/language/locales/hu-HU.json.js +1 -1
  141. package/dist/es/language/locales/it-IT.json.js +1 -1
  142. package/dist/es/language/locales/ja-JP.json.js +1 -1
  143. package/dist/es/language/locales/ko-KR.json.js +1 -1
  144. package/dist/es/language/locales/nl-NL.json.js +1 -1
  145. package/dist/es/language/locales/no-NO.json.js +1 -1
  146. package/dist/es/language/locales/pl-PL.json.js +1 -1
  147. package/dist/es/language/locales/pt-BR.json.js +1 -1
  148. package/dist/es/language/locales/pt-PT.json.js +1 -1
  149. package/dist/es/language/locales/ro-RO.json.js +1 -1
  150. package/dist/es/language/locales/ru-RU.json.js +1 -1
  151. package/dist/es/language/locales/sk-SK.json.js +1 -1
  152. package/dist/es/language/locales/sl-SI.json.js +1 -1
  153. package/dist/es/language/locales/sv-SE.json.js +1 -1
  154. package/dist/es/language/locales/zh-CN.json.js +1 -1
  155. package/dist/es/language/locales/zh-TW.json.js +1 -1
  156. package/dist/es/utils/Formatters/formatters.js.map +1 -1
  157. package/dist/es/utils/Validator/defaultRules.js +1 -1
  158. package/dist/es/utils/Validator/defaultRules.js.map +1 -1
  159. package/dist/es/utils/base64.js +1 -1
  160. package/dist/es/utils/base64.js.map +1 -1
  161. package/dist/es/utils/getErrorMessage.js +1 -1
  162. package/dist/es/utils/getErrorMessage.js.map +1 -1
  163. package/dist/es-legacy/adyen.css +2 -2
  164. package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
  165. package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
  166. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js +1 -1
  167. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  168. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  169. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  170. package/dist/es-legacy/components/ApplePay/defaultProps.js +1 -1
  171. package/dist/es-legacy/components/ApplePay/defaultProps.js.map +1 -1
  172. package/dist/es-legacy/components/ApplePay/payment-request.js.map +1 -1
  173. package/dist/es-legacy/components/Boleto/components/BoletoInput/validate.js +1 -1
  174. package/dist/es-legacy/components/Boleto/components/BoletoInput/validate.js.map +1 -1
  175. package/dist/es-legacy/components/Card/Card.js +1 -1
  176. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  177. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  178. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  179. package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
  180. package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
  181. package/dist/es-legacy/components/Card/components/CardInput/components/CardHolderName.js +1 -1
  182. package/dist/es-legacy/components/Card/components/CardInput/components/CardHolderName.js.map +1 -1
  183. package/dist/es-legacy/components/Card/components/CardInput/components/KCPAuthentication.js +1 -1
  184. package/dist/es-legacy/components/Card/components/CardInput/components/KCPAuthentication.js.map +1 -1
  185. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  186. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  187. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  188. package/dist/es-legacy/components/Card/components/CardInput/validate.js +1 -1
  189. package/dist/es-legacy/components/Card/components/CardInput/validate.js.map +1 -1
  190. package/dist/es-legacy/components/CashAppPay/defaultProps.js +1 -1
  191. package/dist/es-legacy/components/CashAppPay/defaultProps.js.map +1 -1
  192. package/dist/es-legacy/components/Donation/Donation.js.map +1 -1
  193. package/dist/es-legacy/components/Dragonpay/Dragonpay.js +1 -1
  194. package/dist/es-legacy/components/Dragonpay/Dragonpay.js.map +1 -1
  195. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  196. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  197. package/dist/es-legacy/components/Econtext/Econtext.js +1 -1
  198. package/dist/es-legacy/components/Econtext/Econtext.js.map +1 -1
  199. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  200. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  201. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  202. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  203. package/dist/es-legacy/components/Giropay/Giropay.js +1 -1
  204. package/dist/es-legacy/components/Giropay/Giropay.js.map +1 -1
  205. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  206. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  207. package/dist/es-legacy/components/GooglePay/GooglePayService.js +1 -1
  208. package/dist/es-legacy/components/GooglePay/GooglePayService.js.map +1 -1
  209. package/dist/es-legacy/components/GooglePay/defaultProps.js +1 -1
  210. package/dist/es-legacy/components/GooglePay/defaultProps.js.map +1 -1
  211. package/dist/es-legacy/components/GooglePay/requests.js.map +1 -1
  212. package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
  213. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  214. package/dist/es-legacy/components/Pix/Pix.js +1 -1
  215. package/dist/es-legacy/components/Pix/Pix.js.map +1 -1
  216. package/dist/es-legacy/components/Pix/PixInput/PixInput.js +1 -1
  217. package/dist/es-legacy/components/Pix/PixInput/PixInput.js.map +1 -1
  218. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  219. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  220. package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
  221. package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
  222. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  223. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  224. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  225. package/dist/es-legacy/components/ThreeDS2/components/utils.js +1 -1
  226. package/dist/es-legacy/components/ThreeDS2/components/utils.js.map +1 -1
  227. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  228. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  229. package/dist/es-legacy/components/internal/Address/Address.js +1 -1
  230. package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
  231. package/dist/es-legacy/components/internal/Address/validate.js +1 -1
  232. package/dist/es-legacy/components/internal/Address/validate.js.map +1 -1
  233. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  234. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  235. package/dist/es-legacy/components/internal/CompanyDetails/validate.js +1 -1
  236. package/dist/es-legacy/components/internal/CompanyDetails/validate.js.map +1 -1
  237. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
  238. package/dist/es-legacy/components/internal/Img/Img.js +1 -1
  239. package/dist/es-legacy/components/internal/Img/Img.js.map +1 -1
  240. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  241. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  242. package/dist/es-legacy/components/internal/PersonalDetails/validate.js +1 -1
  243. package/dist/es-legacy/components/internal/PersonalDetails/validate.js.map +1 -1
  244. package/dist/es-legacy/components/internal/SecuredFields/SFP/SFPUtils.js +1 -1
  245. package/dist/es-legacy/components/internal/SecuredFields/SFP/SFPUtils.js.map +1 -1
  246. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  247. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  248. package/dist/es-legacy/components/internal/SecuredFields/binLookup/triggerBinLookUp.js +1 -1
  249. package/dist/es-legacy/components/internal/SecuredFields/binLookup/triggerBinLookUp.js.map +1 -1
  250. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  251. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/cardType.js +1 -1
  252. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  253. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/processErrors.js +1 -1
  254. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/processErrors.js.map +1 -1
  255. package/dist/es-legacy/components/internal/SecuredFields/lib/configuration/constants.js +1 -1
  256. package/dist/es-legacy/components/internal/SecuredFields/lib/configuration/constants.js.map +1 -1
  257. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  258. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  259. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
  260. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  261. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/addContextTranslations.js.map +1 -1
  262. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js +1 -1
  263. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
  264. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  265. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  266. package/dist/es-legacy/components/internal/UIElement/utils.js +1 -1
  267. package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
  268. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  269. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  270. package/dist/es-legacy/core/Analytics/constants.js +1 -1
  271. package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
  272. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  273. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  274. package/dist/es-legacy/core/Errors/constants.js +1 -1
  275. package/dist/es-legacy/core/Errors/constants.js.map +1 -1
  276. package/dist/es-legacy/core/Errors/utils.js +1 -1
  277. package/dist/es-legacy/core/Errors/utils.js.map +1 -1
  278. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
  279. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  280. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  281. package/dist/es-legacy/core/Services/analytics/log-event.js +1 -1
  282. package/dist/es-legacy/core/core.js +1 -1
  283. package/dist/es-legacy/core/core.js.map +1 -1
  284. package/dist/es-legacy/core/utils.js +1 -1
  285. package/dist/es-legacy/core/utils.js.map +1 -1
  286. package/dist/es-legacy/language/locales/ar.json.js +1 -1
  287. package/dist/es-legacy/language/locales/cs-CZ.json.js +1 -1
  288. package/dist/es-legacy/language/locales/da-DK.json.js +1 -1
  289. package/dist/es-legacy/language/locales/de-DE.json.js +1 -1
  290. package/dist/es-legacy/language/locales/el-GR.json.js +1 -1
  291. package/dist/es-legacy/language/locales/en-US.json.js +1 -1
  292. package/dist/es-legacy/language/locales/es-ES.json.js +1 -1
  293. package/dist/es-legacy/language/locales/fi-FI.json.js +1 -1
  294. package/dist/es-legacy/language/locales/fr-FR.json.js +1 -1
  295. package/dist/es-legacy/language/locales/hr-HR.json.js +1 -1
  296. package/dist/es-legacy/language/locales/hu-HU.json.js +1 -1
  297. package/dist/es-legacy/language/locales/it-IT.json.js +1 -1
  298. package/dist/es-legacy/language/locales/ja-JP.json.js +1 -1
  299. package/dist/es-legacy/language/locales/ko-KR.json.js +1 -1
  300. package/dist/es-legacy/language/locales/nl-NL.json.js +1 -1
  301. package/dist/es-legacy/language/locales/no-NO.json.js +1 -1
  302. package/dist/es-legacy/language/locales/pl-PL.json.js +1 -1
  303. package/dist/es-legacy/language/locales/pt-BR.json.js +1 -1
  304. package/dist/es-legacy/language/locales/pt-PT.json.js +1 -1
  305. package/dist/es-legacy/language/locales/ro-RO.json.js +1 -1
  306. package/dist/es-legacy/language/locales/ru-RU.json.js +1 -1
  307. package/dist/es-legacy/language/locales/sk-SK.json.js +1 -1
  308. package/dist/es-legacy/language/locales/sl-SI.json.js +1 -1
  309. package/dist/es-legacy/language/locales/sv-SE.json.js +1 -1
  310. package/dist/es-legacy/language/locales/zh-CN.json.js +1 -1
  311. package/dist/es-legacy/language/locales/zh-TW.json.js +1 -1
  312. package/dist/es-legacy/utils/Formatters/formatters.js.map +1 -1
  313. package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
  314. package/dist/es-legacy/utils/Validator/defaultRules.js.map +1 -1
  315. package/dist/es-legacy/utils/base64.js +1 -1
  316. package/dist/es-legacy/utils/base64.js.map +1 -1
  317. package/dist/es-legacy/utils/getErrorMessage.js +1 -1
  318. package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
  319. package/dist/umd/adyen.css +2 -2
  320. package/dist/umd/adyen.js +2 -2
  321. package/dist/umd/adyen.js.map +1 -1
  322. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AmazonPayComponent.js","sources":["../../../../../src/components/AmazonPay/components/AmazonPayComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport Spinner from '../../internal/Spinner';\nimport { getAmazonPayUrl } from '../utils';\nimport { AmazonPayComponentProps } from '../types';\nimport AmazonPayButton from './AmazonPayButton';\nimport ChangePaymentDetailsButton from './ChangePaymentDetailsButton';\nimport OrderButton from './OrderButton';\nimport SignOutButton from './SignOutButton';\nimport Script from '../../../utils/Script';\n\nexport default function AmazonPayComponent(props: AmazonPayComponentProps) {\n const [status, setStatus] = useState('pending');\n const amazonPayButtonRef = useRef(null);\n const orderButtonRef = useRef(null);\n\n const handleLoad = () => {\n setStatus('ready');\n };\n\n this.submit = () => {\n if (amazonPayButtonRef.current && amazonPayButtonRef.current.initCheckout) return amazonPayButtonRef.current.initCheckout();\n if (orderButtonRef.current && orderButtonRef.current.createOrder) return orderButtonRef.current.createOrder();\n };\n\n useEffect(() => {\n const src = getAmazonPayUrl(props.configuration.region);\n const script = new Script(src);\n if (window.amazon) {\n handleLoad();\n } else {\n script.load().then(handleLoad);\n }\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__amazonpay\">\n <div className=\"adyen-checkout__amazonpay__status adyen-checkout__amazonpay__status--pending\">\n <Spinner />\n </div>\n </div>\n );\n }\n\n if (props.showSignOutButton) {\n return (\n <div className=\"adyen-checkout__amazonpay\">\n <SignOutButton amazonRef={window.amazon} onSignOut={props.onSignOut} />\n </div>\n );\n }\n\n if (props.amazonCheckoutSessionId) {\n return (\n <div className=\"adyen-checkout__amazonpay\">\n {props.showOrderButton && (\n <OrderButton\n amazonCheckoutSessionId={props.amazonCheckoutSessionId}\n amount={props.amount}\n chargePermissionType={props.chargePermissionType}\n recurringMetadata={props.recurringMetadata}\n clientKey={props.clientKey}\n onError={props.onError}\n publicKeyId={props.configuration?.publicKeyId}\n region={props.configuration?.region}\n returnUrl={props.returnUrl}\n ref={orderButtonRef}\n />\n )}\n\n {props.showChangePaymentDetailsButton && (\n <ChangePaymentDetailsButton amazonCheckoutSessionId={props.amazonCheckoutSessionId} amazonRef={window.amazon} />\n )}\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__amazonpay\">\n <AmazonPayButton {...props} amazonRef={window.amazon} ref={amazonPayButtonRef} />\n </div>\n );\n}\n"],"names":["AmazonPayComponent","props","status","setStatus","useState","amazonPayButtonRef","useRef","orderButtonRef","handleLoad","this","submit","current","initCheckout","createOrder","useEffect","src","getAmazonPayUrl","configuration","region","script","Script","window","amazon","load","then","remove","h","div","className","Spinner","showSignOutButton","SignOutButton","amazonRef","onSignOut","amazonCheckoutSessionId","showOrderButton","OrderButton","amount","chargePermissionType","recurringMetadata","clientKey","onError","publicKeyId","returnUrl","ref","showChangePaymentDetailsButton","ChangePaymentDetailsButton","AmazonPayButton"],"mappings":"ugCAWe,SAASA,EAAmBC,GACvC,MAAOC,EAAQC,GAAaC,EAAS,WAC/BC,EAAqBC,EAAO,MAC5BC,EAAiBD,EAAO,MAExBE,EAAa,KACfL,EAAU,QAAA,EAsBd,OAnBAM,KAAKC,OAAS,IACNL,EAAmBM,SAAWN,EAAmBM,QAAQC,aAAqBP,EAAmBM,QAAQC,eACzGL,EAAeI,SAAWJ,EAAeI,QAAQE,YAAoBN,EAAeI,QAAQE,mBAAhG,EAGJC,GAAU,KACN,MAAMC,EAAMC,EAAgBf,EAAMgB,cAAcC,QAC1CC,EAAS,IAAIC,EAAOL,GAO1B,OANIM,OAAOC,OACPd,IAEAW,EAAOI,OAAOC,KAAKhB,GAGhB,KACHW,EAAOM,QAAM,CACjB,GACD,IAEY,YAAXvB,EAEIwB,EAACC,MAAAA,CAAIC,UAAU,6BACXF,EAACC,MAAAA,CAAIC,UAAU,gFACXF,EAACG,EAAAA,QAMb5B,EAAM6B,kBAEFJ,EAACC,MAAAA,CAAIC,UAAU,6BACXF,EAACK,EAAAA,CAAcC,UAAWX,OAAOC,OAAQW,UAAWhC,EAAMgC,aAKlEhC,EAAMiC,wBAEFR,EAACC,MAAAA,CAAIC,UAAU,6BACV3B,EAAMkC,iBACHT,EAACU,EAAAA,CACGF,wBAAyBjC,EAAMiC,wBAC/BG,OAAQpC,EAAMoC,OACdC,qBAAsBrC,EAAMqC,qBAC5BC,kBAAmBtC,EAAMsC,kBACzBC,UAAWvC,EAAMuC,UACjBC,QAASxC,EAAMwC,QACfC,YAAazC,QAAAA,EAAAA,EAAMgB,qBAANhB,IAAAA,OAAAA,EAAAA,EAAqByC,YAClCxB,OAAQjB,QAAAA,EAAAA,EAAMgB,qBAANhB,IAAAA,OAAAA,EAAAA,EAAqBiB,OAC7ByB,UAAW1C,EAAM0C,UACjBC,IAAKrC,IAIZN,EAAM4C,gCACHnB,EAACoB,EAAAA,CAA2BZ,wBAAyBjC,EAAMiC,wBAAyBF,UAAWX,OAAOC,UAOlHI,EAACC,MAAAA,CAAIC,UAAU,6BACXF,EAACqB,EAAoB9C,wUAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAO+B,UAAWX,OAAOC,OAAQsB,IAAKvC,UAhBlCJ,EACLA,CAkBhC"}
1
+ {"version":3,"file":"AmazonPayComponent.js","sources":["../../../../../src/components/AmazonPay/components/AmazonPayComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport Spinner from '../../internal/Spinner';\nimport { getAmazonPayUrl } from '../utils';\nimport { AmazonPayComponentProps } from '../types';\nimport AmazonPayButton from './AmazonPayButton';\nimport ChangePaymentDetailsButton from './ChangePaymentDetailsButton';\nimport OrderButton from './OrderButton';\nimport SignOutButton from './SignOutButton';\nimport Script from '../../../utils/Script';\n\nexport default function AmazonPayComponent(props: AmazonPayComponentProps) {\n const [status, setStatus] = useState('pending');\n const amazonPayButtonRef = useRef(null);\n const orderButtonRef = useRef(null);\n\n const handleLoad = () => {\n setStatus('ready');\n };\n\n this.getSubmitFunction = () => {\n if (amazonPayButtonRef.current && amazonPayButtonRef.current.initCheckout) return () => amazonPayButtonRef.current.initCheckout();\n if (orderButtonRef.current && orderButtonRef.current.createOrder) return () => orderButtonRef.current.createOrder();\n };\n\n useEffect(() => {\n const src = getAmazonPayUrl(props.configuration.region);\n const script = new Script(src);\n if (window.amazon) {\n handleLoad();\n } else {\n script.load().then(handleLoad);\n }\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__amazonpay\">\n <div className=\"adyen-checkout__amazonpay__status adyen-checkout__amazonpay__status--pending\">\n <Spinner />\n </div>\n </div>\n );\n }\n\n if (props.showSignOutButton) {\n return (\n <div className=\"adyen-checkout__amazonpay\">\n <SignOutButton amazonRef={window.amazon} onSignOut={props.onSignOut} />\n </div>\n );\n }\n\n if (props.amazonCheckoutSessionId) {\n return (\n <div className=\"adyen-checkout__amazonpay\">\n {props.showOrderButton && (\n <OrderButton\n amazonCheckoutSessionId={props.amazonCheckoutSessionId}\n amount={props.amount}\n chargePermissionType={props.chargePermissionType}\n recurringMetadata={props.recurringMetadata}\n clientKey={props.clientKey}\n onError={props.onError}\n publicKeyId={props.configuration?.publicKeyId}\n region={props.configuration?.region}\n returnUrl={props.returnUrl}\n ref={orderButtonRef}\n />\n )}\n\n {props.showChangePaymentDetailsButton && (\n <ChangePaymentDetailsButton amazonCheckoutSessionId={props.amazonCheckoutSessionId} amazonRef={window.amazon} />\n )}\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__amazonpay\">\n <AmazonPayButton {...props} showPayButton={this.props.showPayButton} amazonRef={window.amazon} ref={amazonPayButtonRef} />\n </div>\n );\n}\n"],"names":["AmazonPayComponent","props","status","setStatus","useState","amazonPayButtonRef","useRef","orderButtonRef","handleLoad","this","getSubmitFunction","current","initCheckout","createOrder","useEffect","src","getAmazonPayUrl","configuration","region","script","Script","window","amazon","load","then","remove","h","div","className","Spinner","showSignOutButton","SignOutButton","amazonRef","onSignOut","amazonCheckoutSessionId","showOrderButton","OrderButton","amount","chargePermissionType","recurringMetadata","clientKey","onError","publicKeyId","returnUrl","ref","showChangePaymentDetailsButton","ChangePaymentDetailsButton","AmazonPayButton","showPayButton"],"mappings":"ugCAWe,SAASA,EAAmBC,GACvC,MAAOC,EAAQC,GAAaC,EAAS,WAC/BC,EAAqBC,EAAO,MAC5BC,EAAiBD,EAAO,MAExBE,EAAa,KACfL,EAAU,QAAA,EAsBd,OAnBAM,KAAKC,kBAAoB,IACjBL,EAAmBM,SAAWN,EAAmBM,QAAQC,aAAqB,IAAMP,EAAmBM,QAAQC,eAC/GL,EAAeI,SAAWJ,EAAeI,QAAQE,YAAoB,IAAMN,EAAeI,QAAQE,mBAAtG,EAGJC,GAAU,KACN,MAAMC,EAAMC,EAAgBf,EAAMgB,cAAcC,QAC1CC,EAAS,IAAIC,EAAOL,GAO1B,OANIM,OAAOC,OACPd,IAEAW,EAAOI,OAAOC,KAAKhB,GAGhB,KACHW,EAAOM,QAAM,CACjB,GACD,IAEY,YAAXvB,EAEIwB,EAACC,MAAAA,CAAIC,UAAU,6BACXF,EAACC,MAAAA,CAAIC,UAAU,gFACXF,EAACG,EAAAA,QAMb5B,EAAM6B,kBAEFJ,EAACC,MAAAA,CAAIC,UAAU,6BACXF,EAACK,EAAAA,CAAcC,UAAWX,OAAOC,OAAQW,UAAWhC,EAAMgC,aAKlEhC,EAAMiC,wBAEFR,EAACC,MAAAA,CAAIC,UAAU,6BACV3B,EAAMkC,iBACHT,EAACU,EAAAA,CACGF,wBAAyBjC,EAAMiC,wBAC/BG,OAAQpC,EAAMoC,OACdC,qBAAsBrC,EAAMqC,qBAC5BC,kBAAmBtC,EAAMsC,kBACzBC,UAAWvC,EAAMuC,UACjBC,QAASxC,EAAMwC,QACfC,YAAazC,QAAAA,EAAAA,EAAMgB,qBAANhB,IAAAA,OAAAA,EAAAA,EAAqByC,YAClCxB,OAAQjB,QAAAA,EAAAA,EAAMgB,qBAANhB,IAAAA,OAAAA,EAAAA,EAAqBiB,OAC7ByB,UAAW1C,EAAM0C,UACjBC,IAAKrC,IAIZN,EAAM4C,gCACHnB,EAACoB,EAAAA,CAA2BZ,wBAAyBjC,EAAMiC,wBAAyBF,UAAWX,OAAOC,UAOlHI,EAACC,MAAAA,CAAIC,UAAU,6BACXF,EAACqB,EAAoB9C,wUAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAO+C,cAAevC,KAAKR,MAAM+C,cAAehB,UAAWX,OAAOC,OAAQsB,IAAKvC,UAhB3EJ,EACLA,CAkBhC"}
@@ -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 r from"./components/ApplePayButton.js";import n from"./ApplePayService.js";import o from"../../utils/base64.js";import i from"./defaultProps.js";import{httpPost as s}from"../../core/Services/http.js";import{APPLEPAY_SESSION_ENDPOINT as a}from"./config.js";import{preparePaymentRequest as p}from"./payment-request.js";import{resolveSupportedVersion as l,mapBrands as c,formatApplePayContactToAdyenAddressFormat as d}from"./utils.js";import h from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as u}from"../tx-variants.js";import{sanitizeResponse as m,verifyPaymentDidNotFail as y}from"../internal/UIElement/utils.js";import{ANALYTICS_SELECTED_STR as f,ANALYTICS_INSTANT_PAYMENT_BUTTON as P}from"../../core/Analytics/constants.js";function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){b(e,t,r[t])}))}return e}function v(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}class A extends t{formatProps(e){var t,r;const n=e.version||l(14),o=(null===(t=e.brands)||void 0===t?void 0:t.length)?c(e.brands):e.supportedNetworks;return v(g({},e),{configuration:e.configuration,supportedNetworks:o,version:n,totalPriceLabel:e.totalPriceLabel||(null===(r=e.configuration)||void 0===r?void 0:r.merchantName)})}formatData(){const{applePayToken:e,billingAddress:t,deliveryAddress:r}=this.state;return g({paymentMethod:{type:A.type,applePayToken:e}},t&&{billingAddress:t},r&&{deliveryAddress:r})}startSession(){const{version:e,onValidateMerchant:t,onPaymentMethodSelected:r,onShippingMethodSelected:o,onShippingContactSelected:i}=this.props,s=p(g({companyName:this.props.configuration.merchantName,countryCode:this.core.options.countryCode},this.props)),a=new n(s,{version:e,onError:e=>{this.handleError(new h("ERROR","ApplePay - Something went wrong on ApplePayService",{cause:e}))},onCancel:e=>{this.handleError(new h("CANCEL","ApplePay UI dismissed",{cause:e}))},onPaymentMethodSelected:r,onShippingMethodSelected:o,onShippingContactSelected:i,onValidateMerchant:t||this.validateMerchant,onPaymentAuthorized:(e,t,r)=>{const n=d(r.payment.billingContact),o=d(r.payment.shippingContact,!0);this.setState(g({applePayToken:btoa(JSON.stringify(r.payment.token.paymentData)),authorizedEvent:r},n&&{billingAddress:n},o&&{deliveryAddress:o})),this.handleAuthorization().then(this.makePaymentsCall).then(m).then(y).then(this.collectOrderTrackingDetailsIfNeeded).then((({paymentResponse:t,orderDetails:r})=>(e(g({status:ApplePaySession.STATUS_SUCCESS},r&&{orderDetails:r})),t))).then((e=>{this.handleResponse(e)})).catch((e=>{var r;const n=null==e||null===(r=e.error)||void 0===r?void 0:r.applePayError;t({status:ApplePaySession.STATUS_FAILURE,errors:n?Array.isArray(n)?n:[n]:void 0});const o=v(g({},e),{error:{applePayError:n}});this.handleFailedResult(o)}))}});return new Promise(((e,t)=>this.props.onClick(e,t))).then((()=>{a.begin()})).catch((()=>({})))}async handleAuthorization(){return new Promise(((e,t)=>{this.props.onAuthorized||e();const{authorizedEvent:r,billingAddress:n,deliveryAddress:o}=this.state;this.props.onAuthorized(g({authorizedEvent:r},n&&{billingAddress:n},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=>g({paymentResponse:e},t&&{orderDetails:t}))).catch((()=>({paymentResponse:e})))}async validateMerchant(e,t){const{hostname:r}=window.location,{clientKey:n,configuration:i,loadingContext:p,initiative:l}=this.props,{merchantName:c,merchantId:d}=i,h={loadingContext:p,path:`${a}?clientKey=${n}`},u={displayName:c,domainName:r,initiative:l,merchantIdentifier:d};try{const r=await s(h,u),n=o.decode(r.data);n||t("Could not decode Apple Pay session");e(JSON.parse(n))}catch(e){t("Could not get Apple Pay session")}}get isValid(){return!0}async isAvailable(){if("https:"!==document.location.protocol)return Promise.reject(new h("IMPLEMENTATION_ERROR","Trying to start an Apple Pay session from an insecure document"));if(!this.props.onValidateMerchant&&!this.props.clientKey)return Promise.reject(new h("IMPLEMENTATION_ERROR","clientKey was not provided"));try{if(window.ApplePaySession&&ApplePaySession.canMakePayments()&&ApplePaySession.supportsVersion(this.props.version))return Promise.resolve()}catch(e){console.warn(e)}return Promise.reject(new h("ERROR","Apple Pay is not available on this device"))}render(){return this.props.showPayButton?e(r,{i18n:this.props.i18n,buttonColor:this.props.buttonColor,buttonType:this.props.buttonType,onClick:e=>{e.preventDefault(),this.submit()}}):null}constructor(e,t){super(e,t),b(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:f,target:P}),this.startSession()})),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)}}b(A,"type",u.applepay),b(A,"defaultProps",i);export{A as default};
1
+ import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import r from"./components/ApplePayButton.js";import n from"./ApplePayService.js";import o from"../../utils/base64.js";import s from"./defaultProps.js";import{httpPost as i}from"../../core/Services/http.js";import{APPLEPAY_SESSION_ENDPOINT as a}from"./config.js";import{preparePaymentRequest as p}from"./payment-request.js";import{resolveSupportedVersion as l,mapBrands as c,formatApplePayContactToAdyenAddressFormat as d}from"./utils.js";import h from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as u}from"../tx-variants.js";import{sanitizeResponse as m,verifyPaymentDidNotFail as y}from"../internal/UIElement/utils.js";import{ANALYTICS_SELECTED_STR as f,ANALYTICS_INSTANT_PAYMENT_BUTTON as P}from"../../core/Analytics/constants.js";function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){b(e,t,r[t])}))}return e}function A(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}class S extends t{formatProps(e){var t,r;const n=e.version||l(14),o=(null===(t=e.brands)||void 0===t?void 0:t.length)?c(e.brands):e.supportedNetworks;return A(g({},e),{configuration:e.configuration,supportedNetworks:o,version:n,totalPriceLabel:e.totalPriceLabel||(null===(r=e.configuration)||void 0===r?void 0:r.merchantName)})}formatData(){const{applePayToken:e,billingAddress:t,deliveryAddress:r}=this.state,{isExpress:n}=this.props;return g({paymentMethod:g({type:S.type,applePayToken:e},n&&{subtype:"express"})},t&&{billingAddress:t},r&&{deliveryAddress:r})}startSession(){const{version:e,onValidateMerchant:t,onPaymentMethodSelected:r,onShippingMethodSelected:o,onShippingContactSelected:s}=this.props,i=p(g({companyName:this.props.configuration.merchantName,countryCode:this.core.options.countryCode},this.props)),a=new n(i,{version:e,onError:e=>{this.handleError(new h("ERROR","ApplePay - Something went wrong on ApplePayService",{cause:e}))},onCancel:e=>{this.handleError(new h("CANCEL","ApplePay UI dismissed",{cause:e}))},onPaymentMethodSelected:r,onShippingMethodSelected:o,onShippingContactSelected:s,onValidateMerchant:t||this.validateMerchant,onPaymentAuthorized:(e,t,r)=>{const n=d(r.payment.billingContact),o=d(r.payment.shippingContact,!0);this.setState(g({applePayToken:btoa(JSON.stringify(r.payment.token.paymentData)),authorizedEvent:r},n&&{billingAddress:n},o&&{deliveryAddress:o})),this.handleAuthorization().then(this.makePaymentsCall).then(m).then(y).then(this.collectOrderTrackingDetailsIfNeeded).then((({paymentResponse:t,orderDetails:r})=>(e(g({status:ApplePaySession.STATUS_SUCCESS},r&&{orderDetails:r})),t))).then((e=>{this.handleResponse(e)})).catch((e=>{var r;const n=null==e||null===(r=e.error)||void 0===r?void 0:r.applePayError;t({status:ApplePaySession.STATUS_FAILURE,errors:n?Array.isArray(n)?n:[n]:void 0});const o=A(g({},e),{error:{applePayError:n}});this.handleFailedResult(o)}))}});return new Promise(((e,t)=>this.props.onClick(e,t))).then((()=>{a.begin()})).catch((()=>({})))}async handleAuthorization(){return new Promise(((e,t)=>{this.props.onAuthorized||e();const{authorizedEvent:r,billingAddress:n,deliveryAddress:o}=this.state;this.props.onAuthorized(g({authorizedEvent:r},n&&{billingAddress:n},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=>g({paymentResponse:e},t&&{orderDetails:t}))).catch((()=>({paymentResponse:e})))}async validateMerchant(e,t){const{hostname:r}=window.location,{clientKey:n,configuration:s,loadingContext:p,initiative:l}=this.props,{merchantName:c,merchantId:d}=s,h={loadingContext:p,path:`${a}?clientKey=${n}`},u={displayName:c,domainName:r,initiative:l,merchantIdentifier:d};try{const r=await i(h,u),n=o.decode(r.data);if(n.success){e(JSON.parse(n.data))}else t("Could not decode Apple Pay session")}catch(e){t("Could not get Apple Pay session")}}get isValid(){return!0}async isAvailable(){if("https:"!==document.location.protocol)return Promise.reject(new h("IMPLEMENTATION_ERROR","Trying to start an Apple Pay session from an insecure document"));if(!this.props.onValidateMerchant&&!this.props.clientKey)return Promise.reject(new h("IMPLEMENTATION_ERROR","clientKey was not provided"));try{if(window.ApplePaySession&&ApplePaySession.canMakePayments()&&ApplePaySession.supportsVersion(this.props.version))return Promise.resolve()}catch(e){console.warn(e)}return Promise.reject(new h("ERROR","Apple Pay is not available on this device"))}render(){return this.props.showPayButton?e(r,{i18n:this.props.i18n,buttonColor:this.props.buttonColor,buttonType:this.props.buttonType,onClick:e=>{e.preventDefault(),this.submit()}}):null}constructor(e,t){super(e,t),b(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:f,target:P}),this.startSession()}));const{isExpress:r,onShippingContactSelected:n,onShippingMethodSelected:o}=this.props;if(!1===r&&(n||o))throw new h("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)}}b(S,"type",u.applepay),b(S,"defaultProps",s);export{S 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 './ApplePayService';\nimport base64 from '../../utils/base64';\nimport defaultProps from './defaultProps';\nimport { httpPost } from '../../core/Services/http';\nimport { APPLEPAY_SESSION_ENDPOINT } from './config';\nimport { preparePaymentRequest } from './payment-request';\nimport { resolveSupportedVersion, mapBrands, formatApplePayContactToAdyenAddressFormat } from './utils';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\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 type { ApplePayConfiguration, ApplePayElementData, ApplePayPaymentOrderDetails, ApplePaySessionRequest } from './types';\nimport type { ICore } from '../../core/types';\nimport type { PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\n\nconst latestSupportedVersion = 14;\n\nclass ApplePayElement extends UIElement<ApplePayConfiguration> {\n public static type = TxVariants.applepay;\n protected static defaultProps = defaultProps;\n\n constructor(checkout: ICore, props?: ApplePayConfiguration) {\n super(checkout, props);\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 }\n\n /**\n * Formats the component props\n */\n protected formatProps(props) {\n const version = props.version || resolveSupportedVersion(latestSupportedVersion);\n const supportedNetworks = props.brands?.length ? mapBrands(props.brands) : props.supportedNetworks;\n\n return {\n ...props,\n configuration: props.configuration,\n supportedNetworks,\n version,\n totalPriceLabel: props.totalPriceLabel || props.configuration?.merchantName\n };\n }\n\n /**\n * Formats the component data output\n */\n protected formatData(): ApplePayElementData {\n const { applePayToken, billingAddress, deliveryAddress } = this.state;\n\n return {\n paymentMethod: {\n type: ApplePayElement.type,\n applePayToken\n },\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n public 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 private startSession() {\n const { version, 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,\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 = `${APPLEPAY_SESSION_ENDPOINT}?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 = base64.decode(response.data);\n if (!decodedData) reject('Could not decode Apple Pay session');\n const session = JSON.parse(decodedData as string);\n resolve(session);\n } catch (e) {\n reject('Could not get Apple Pay session');\n }\n }\n\n /**\n * Validation\n *\n * @remarks\n * Apple Pay does not require any specific validation\n */\n get isValid(): boolean {\n return true;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from Apple Pay.\n * @returns Promise Resolve/Reject whether the shopper can use Apple Pay\n */\n public override async isAvailable(): Promise<void> {\n if (document.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 if (!this.props.onValidateMerchant && !this.props.clientKey) {\n return Promise.reject(new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'clientKey was not provided'));\n }\n\n try {\n if (window.ApplePaySession && ApplePaySession.canMakePayments() && ApplePaySession.supportsVersion(this.props.version)) {\n return Promise.resolve();\n }\n } catch (error) {\n console.warn(error);\n }\n\n return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay is not available on this device'));\n }\n\n /**\n * Renders the Apple Pay button or nothing in the Dropin\n */\n render() {\n if (this.props.showPayButton) {\n return (\n <ApplePayButton\n i18n={this.props.i18n}\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n onClick={e => {\n e.preventDefault();\n this.submit();\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default ApplePayElement;\n"],"names":["ApplePayElement","UIElement","formatProps","props","version","resolveSupportedVersion","supportedNetworks","brands","length","mapBrands","_object_spread_props","configuration","totalPriceLabel","merchantName","formatData","applePayToken","billingAddress","deliveryAddress","this","state","_object_spread","paymentMethod","type","startSession","onValidateMerchant","onPaymentMethodSelected","onShippingMethodSelected","onShippingContactSelected","paymentRequest","preparePaymentRequest","companyName","countryCode","core","options","session","ApplePayService","onError","error","handleError","AdyenCheckoutError","cause","onCancel","event","validateMerchant","onPaymentAuthorized","resolve","reject","formatApplePayContactToAdyenAddressFormat","payment","billingContact","shippingContact","setState","btoa","JSON","stringify","token","paymentData","authorizedEvent","handleAuthorization","then","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","collectOrderTrackingDetailsIfNeeded","paymentResponse","orderDetails","status","ApplePaySession","STATUS_SUCCESS","handleResponse","catch","errors","applePayError","STATUS_FAILURE","Array","isArray","undefined","responseWithError","handleFailedResult","Promise","onClick","begin","onAuthorized","data","onOrderTrackingRequest","hostname","domainName","window","location","clientKey","loadingContext","initiative","merchantId","path","APPLEPAY_SESSION_ENDPOINT","request","displayName","merchantIdentifier","response","httpPost","decodedData","base64","decode","parse","e","isValid","isAvailable","document","protocol","canMakePayments","supportsVersion","console","warn","render","showPayButton","h","ApplePayButton","i18n","buttonColor","buttonType","preventDefault","submit","constructor","checkout","super","_define_property","isInstantPayment","submitAnalytics","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","bind","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 './ApplePayService';\nimport base64 from '../../utils/base64';\nimport defaultProps from './defaultProps';\nimport { httpPost } from '../../core/Services/http';\nimport { APPLEPAY_SESSION_ENDPOINT } from './config';\nimport { preparePaymentRequest } from './payment-request';\nimport { resolveSupportedVersion, mapBrands, formatApplePayContactToAdyenAddressFormat } from './utils';\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';\n\nimport type { ApplePayConfiguration, ApplePayElementData, ApplePayPaymentOrderDetails, ApplePaySessionRequest } from './types';\nimport type { ICore } from '../../core/types';\nimport type { PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\n\nconst latestSupportedVersion = 14;\n\nclass ApplePayElement extends UIElement<ApplePayConfiguration> {\n public static type = TxVariants.applepay;\n protected static defaultProps = defaultProps;\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 }\n\n /**\n * Formats the component props\n */\n protected override formatProps(props) {\n const version = props.version || resolveSupportedVersion(latestSupportedVersion);\n const supportedNetworks = props.brands?.length ? mapBrands(props.brands) : props.supportedNetworks;\n\n return {\n ...props,\n configuration: props.configuration,\n supportedNetworks,\n version,\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 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 private startSession() {\n const { version, 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,\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 = `${APPLEPAY_SESSION_ENDPOINT}?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 /**\n * Validation\n *\n * @remarks\n * Apple Pay does not require any specific validation\n */\n get isValid(): boolean {\n return true;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from Apple Pay.\n * @returns Promise Resolve/Reject whether the shopper can use Apple Pay\n */\n public override async isAvailable(): Promise<void> {\n if (document.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 if (!this.props.onValidateMerchant && !this.props.clientKey) {\n return Promise.reject(new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'clientKey was not provided'));\n }\n\n try {\n if (window.ApplePaySession && ApplePaySession.canMakePayments() && ApplePaySession.supportsVersion(this.props.version)) {\n return Promise.resolve();\n }\n } catch (error) {\n console.warn(error);\n }\n\n return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay is not available on this device'));\n }\n\n /**\n * Renders the Apple Pay button or nothing in the Dropin\n */\n render() {\n if (this.props.showPayButton) {\n return (\n <ApplePayButton\n i18n={this.props.i18n}\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n onClick={e => {\n e.preventDefault();\n this.submit();\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default ApplePayElement;\n"],"names":["ApplePayElement","UIElement","formatProps","props","version","resolveSupportedVersion","supportedNetworks","brands","length","mapBrands","_object_spread_props","configuration","totalPriceLabel","merchantName","formatData","applePayToken","billingAddress","deliveryAddress","this","state","isExpress","_object_spread","paymentMethod","type","subtype","startSession","onValidateMerchant","onPaymentMethodSelected","onShippingMethodSelected","onShippingContactSelected","paymentRequest","preparePaymentRequest","companyName","countryCode","core","options","session","ApplePayService","onError","error","handleError","AdyenCheckoutError","cause","onCancel","event","validateMerchant","onPaymentAuthorized","resolve","reject","formatApplePayContactToAdyenAddressFormat","payment","billingContact","shippingContact","setState","btoa","JSON","stringify","token","paymentData","authorizedEvent","handleAuthorization","then","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","collectOrderTrackingDetailsIfNeeded","paymentResponse","orderDetails","status","ApplePaySession","STATUS_SUCCESS","handleResponse","catch","errors","applePayError","STATUS_FAILURE","Array","isArray","undefined","responseWithError","handleFailedResult","Promise","onClick","begin","onAuthorized","data","onOrderTrackingRequest","hostname","domainName","window","location","clientKey","loadingContext","initiative","merchantId","path","APPLEPAY_SESSION_ENDPOINT","request","displayName","merchantIdentifier","response","httpPost","decodedData","base64","decode","success","parse","e","isValid","isAvailable","document","protocol","canMakePayments","supportsVersion","console","warn","render","showPayButton","h","ApplePayButton","i18n","buttonColor","buttonType","preventDefault","submit","constructor","checkout","super","_define_property","isInstantPayment","submitAnalytics","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","bind","TxVariants","applepay","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const i={amount:{currency:"USD",value:0},countryCode:"US",totalPriceStatus:"final",totalPriceLabel:void 0,configuration:{merchantName:"",merchantId:""},initiative:"web",lineItems:void 0,merchantCapabilities:["supports3DS"],shippingMethods:void 0,shippingType:void 0,supportedCountries:void 0,supportedNetworks:["amex","discover","masterCard","visa"],requiredBillingContactFields:void 0,requiredShippingContactFields:void 0,billingContact:void 0,shippingContact:void 0,applicationData:void 0,onClick:i=>i(),onPaymentMethodSelected:null,onShippingContactSelected:null,onShippingMethodSelected:null,buttonType:"plain",buttonColor:"black",showPayButton:!0};export{i 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":["const defaultProps = {\n // Transaction Information\n amount: { currency: 'USD', value: 0 },\n\n /**\n * The merchant’s two-letter ISO 3166 country code.\n */\n countryCode: 'US',\n\n totalPriceStatus: 'final',\n totalPriceLabel: undefined,\n\n configuration: {\n merchantName: '',\n merchantId: ''\n },\n\n initiative: 'web',\n\n /**\n * https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/1916120-lineitems\n * A set of line items that explain recurring payments and additional charges and discounts.\n */\n lineItems: undefined,\n\n /**\n * https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/1916123-merchantcapabilities\n * The payment capabilities supported by the merchant.\n */\n merchantCapabilities: ['supports3DS'],\n\n /**\n * https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/1916121-shippingmethods\n * A list of available methods for shipping physical goods.\n */\n shippingMethods: undefined,\n\n /**\n * https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/1916128-shippingtype\n * An optional value that indicates how purchased items are to be shipped.\n */\n shippingType: undefined,\n\n /**\n * https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/2928612-supportedcountries\n * A list of two-character country codes you provide, used to limit payments to cards from specific countries.\n */\n supportedCountries: undefined,\n\n /**\n * https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/1916122-supportednetworks\n * The payment networks supported by the merchant.\n */\n supportedNetworks: ['amex', 'discover', 'masterCard', 'visa'],\n\n // Requested Billing and Shipping Contact Information\n\n /**\n * The fields of billing information that you require from the user to process the transaction.\n */\n requiredBillingContactFields: undefined,\n\n /**\n * The fields of shipping information that you require from the user to fulfill the order.\n */\n requiredShippingContactFields: undefined,\n\n // Known Contact Information\n\n billingContact: undefined, // Billing contact information for the user.\n shippingContact: undefined, // Shipping contact information for the user.\n\n // Custom Data\n\n applicationData: undefined, // A Base64-encoded string used to contain your application-specific data.\n\n // Events\n onClick: resolve => resolve(),\n onPaymentMethodSelected: null,\n onShippingContactSelected: null,\n onShippingMethodSelected: null,\n\n // ButtonOptions\n buttonType: 'plain',\n buttonColor: 'black',\n showPayButton: true // show or hide the Apple Pay button\n};\n\nexport default defaultProps;\n"],"names":["defaultProps","amount","currency","value","countryCode","totalPriceStatus","totalPriceLabel","undefined","configuration","merchantName","merchantId","initiative","lineItems","merchantCapabilities","shippingMethods","shippingType","supportedCountries","supportedNetworks","requiredBillingContactFields","requiredShippingContactFields","billingContact","shippingContact","applicationData","onClick","resolve","onPaymentMethodSelected","onShippingContactSelected","onShippingMethodSelected","buttonType","buttonColor","showPayButton"],"mappings":"AAAA,MAAMA,EAAe,CAEjBC,OAAQ,CAAEC,SAAU,MAAOC,MAAO,GAKlCC,YAAa,KAEbC,iBAAkB,QAClBC,qBAAiBC,EAEjBC,cAAe,CACXC,aAAc,GACdC,WAAY,IAGhBC,WAAY,MAMZC,eAAWL,EAMXM,qBAAsB,CAAC,eAMvBC,qBAAiBP,EAMjBQ,kBAAcR,EAMdS,wBAAoBT,EAMpBU,kBAAmB,CAAC,OAAQ,WAAY,aAAc,QAOtDC,kCAA8BX,EAK9BY,mCAA+BZ,EAI/Ba,oBAAgBb,EAChBc,qBAAiBd,EAIjBe,qBAAiBf,EAGjBgB,QAASC,GAAWA,IACpBC,wBAAyB,KACzBC,0BAA2B,KAC3BC,yBAA0B,KAG1BC,WAAY,QACZC,YAAa,QACbC,eAAe"}
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 +1 @@
1
- {"version":3,"file":"payment-request.js","sources":["../../../../src/components/ApplePay/payment-request.ts"],"sourcesContent":["import { getDecimalAmount } from '../../utils/amount-util';\nimport { PaymentAmount } from '../../types/global-types';\n\nconst formatAmount = (amount: PaymentAmount) => String(getDecimalAmount(amount.value, amount.currency));\n\nexport const preparePaymentRequest = (paymentRequest): ApplePayJS.ApplePayPaymentRequest => {\n const { countryCode, companyName, amount, ...props } = paymentRequest;\n const formattedAmount = formatAmount(amount);\n\n if (!countryCode) {\n console.warn('ApplePay - Make sure to set the countryCode in the AdyenCheckout configuration or in the Checkout Session creation');\n }\n\n return {\n countryCode,\n currencyCode: amount.currency,\n\n total: {\n label: props.totalPriceLabel,\n amount: formattedAmount,\n type: props.totalPriceStatus\n },\n\n lineItems: props.lineItems,\n shippingMethods: props.shippingMethods,\n shippingType: props.shippingType,\n\n // @ts-ignore 'recurringPaymentRequest' isn't defined in the @types/applepayjs\n recurringPaymentRequest: props.recurringPaymentRequest,\n\n merchantCapabilities: props.merchantCapabilities,\n supportedCountries: props.supportedCountries,\n supportedNetworks: props.supportedNetworks,\n\n requiredShippingContactFields: props.requiredShippingContactFields,\n requiredBillingContactFields: props.requiredBillingContactFields,\n\n billingContact: props.billingContact,\n shippingContact: props.shippingContact,\n\n applicationData: props.applicationData\n };\n};\n\nexport default preparePaymentRequest;\n"],"names":["preparePaymentRequest","paymentRequest","countryCode","companyName","amount","props","formattedAmount","String","getDecimalAmount","value","currency","formatAmount","console","warn","currencyCode","total","label","totalPriceLabel","type","totalPriceStatus","lineItems","shippingMethods","shippingType","recurringPaymentRequest","merchantCapabilities","supportedCountries","supportedNetworks","requiredShippingContactFields","requiredBillingContactFields","billingContact","shippingContact","applicationData"],"mappings":"kbAGA,MAEaA,EAAyBC,IAClC,MAAMC,YAAEA,EAAWC,YAAEA,EAAWC,OAAEA,GAAqBH,EAAVI,EAAUJ,EAAAA,EAAAA,CAA/CC,cAAaC,cAAaC,WAC5BE,EAJW,CAACF,GAA0BG,OAAOC,EAAiBJ,EAAOK,MAAOL,EAAOM,WAIjEC,CAAaP,GAMrC,OAJKF,GACDU,QAAQC,KAAK,sHAGV,CACHX,cACAY,aAAcV,EAAOM,SAErBK,MAAO,CACHC,MAAOX,EAAMY,gBACbb,OAAQE,EACRY,KAAMb,EAAMc,kBAGhBC,UAAWf,EAAMe,UACjBC,gBAAiBhB,EAAMgB,gBACvBC,aAAcjB,EAAMiB,aAGpBC,wBAAyBlB,EAAMkB,wBAE/BC,qBAAsBnB,EAAMmB,qBAC5BC,mBAAoBpB,EAAMoB,mBAC1BC,kBAAmBrB,EAAMqB,kBAEzBC,8BAA+BtB,EAAMsB,8BACrCC,6BAA8BvB,EAAMuB,6BAEpCC,eAAgBxB,EAAMwB,eACtBC,gBAAiBzB,EAAMyB,gBAEvBC,gBAAiB1B,EAAM0B,gBAC3B"}
1
+ {"version":3,"file":"payment-request.js","sources":["../../../../src/components/ApplePay/payment-request.ts"],"sourcesContent":["import { getDecimalAmount } from '../../utils/amount-util';\nimport { PaymentAmount } from '../../types/global-types';\n\nconst formatAmount = (amount: PaymentAmount) => String(getDecimalAmount(amount.value, amount.currency));\n\nexport const preparePaymentRequest = (paymentRequest): ApplePayJS.ApplePayPaymentRequest => {\n const { countryCode, companyName, amount, ...props } = paymentRequest;\n const formattedAmount = formatAmount(amount);\n\n if (!countryCode) {\n console.warn('ApplePay - Make sure to set the countryCode in the AdyenCheckout configuration or in the Checkout Session creation');\n }\n\n return {\n countryCode,\n currencyCode: amount.currency,\n\n total: {\n label: props.totalPriceLabel,\n amount: formattedAmount,\n type: props.totalPriceStatus\n },\n\n lineItems: props.lineItems,\n shippingMethods: props.shippingMethods,\n shippingType: props.shippingType,\n\n recurringPaymentRequest: props.recurringPaymentRequest,\n\n merchantCapabilities: props.merchantCapabilities,\n supportedCountries: props.supportedCountries,\n supportedNetworks: props.supportedNetworks,\n\n requiredShippingContactFields: props.requiredShippingContactFields,\n requiredBillingContactFields: props.requiredBillingContactFields,\n\n billingContact: props.billingContact,\n shippingContact: props.shippingContact,\n\n applicationData: props.applicationData\n };\n};\n\nexport default preparePaymentRequest;\n"],"names":["preparePaymentRequest","paymentRequest","countryCode","companyName","amount","props","formattedAmount","String","getDecimalAmount","value","currency","formatAmount","console","warn","currencyCode","total","label","totalPriceLabel","type","totalPriceStatus","lineItems","shippingMethods","shippingType","recurringPaymentRequest","merchantCapabilities","supportedCountries","supportedNetworks","requiredShippingContactFields","requiredBillingContactFields","billingContact","shippingContact","applicationData"],"mappings":"kbAGA,MAEaA,EAAyBC,IAClC,MAAMC,YAAEA,EAAWC,YAAEA,EAAWC,OAAEA,GAAqBH,EAAVI,EAAUJ,EAAAA,EAAAA,CAA/CC,cAAaC,cAAaC,WAC5BE,EAJW,CAACF,GAA0BG,OAAOC,EAAiBJ,EAAOK,MAAOL,EAAOM,WAIjEC,CAAaP,GAMrC,OAJKF,GACDU,QAAQC,KAAK,sHAGV,CACHX,cACAY,aAAcV,EAAOM,SAErBK,MAAO,CACHC,MAAOX,EAAMY,gBACbb,OAAQE,EACRY,KAAMb,EAAMc,kBAGhBC,UAAWf,EAAMe,UACjBC,gBAAiBhB,EAAMgB,gBACvBC,aAAcjB,EAAMiB,aAEpBC,wBAAyBlB,EAAMkB,wBAE/BC,qBAAsBnB,EAAMmB,qBAC5BC,mBAAoBpB,EAAMoB,mBAC1BC,kBAAmBrB,EAAMqB,kBAEzBC,8BAA+BtB,EAAMsB,8BACrCC,6BAA8BvB,EAAMuB,6BAEpCC,eAAgBxB,EAAMwB,eACtBC,gBAAiBzB,EAAMyB,gBAEvBC,gBAAiB1B,EAAM0B,gBAC3B"}
@@ -1,2 +1,2 @@
1
- import e from"../../../internal/SocialSecurityNumberBrazil/validate.js";import{validationRules as r}from"../../../../utils/Validator/defaultRules.js";const a={socialSecurityNumber:{validate:e,errorMessage:"error.va.gen.02",modes:["blur"]},shopperEmail:r.emailRule,default:{validate:e=>!!e&&e.length>0,errorMessage:"error.va.gen.02",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{a as boletoValidationRules};
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};
2
2
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sources":["../../../../../../src/components/Boleto/components/BoletoInput/validate.ts"],"sourcesContent":["import { ValidatorRules } from '../../../../utils/Validator/types';\nimport validateSSN from '../../../internal/SocialSecurityNumberBrazil/validate';\nimport { validationRules } from '../../../../utils/Validator/defaultRules';\n\nexport const boletoValidationRules: ValidatorRules = {\n socialSecurityNumber: {\n validate: validateSSN,\n errorMessage: 'error.va.gen.02',\n modes: ['blur']\n },\n shopperEmail: validationRules.emailRule,\n default: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'error.va.gen.02',\n modes: ['blur']\n },\n firstName: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'firstName.invalid',\n modes: ['blur']\n },\n lastName: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'lastName.invalid',\n modes: ['blur']\n }\n};\n"],"names":["boletoValidationRules","socialSecurityNumber","validate","validateSSN","errorMessage","modes","shopperEmail","validationRules","emailRule","default","value","length","firstName","lastName"],"mappings":"4JAIaA,EAAwC,CACjDC,qBAAsB,CAClBC,SAAUC,EACVC,aAAc,kBACdC,MAAO,CAAC,SAEZC,aAAcC,EAAgBC,UAC9BC,QAAS,CACLP,SAAUQ,KAAWA,GAASA,EAAMC,OAAS,EAC7CP,aAAc,kBACdC,MAAO,CAAC,SAEZO,UAAW,CACPV,SAAUQ,KAAWA,GAASA,EAAMC,OAAS,EAC7CP,aAAc,oBACdC,MAAO,CAAC,SAEZQ,SAAU,CACNX,SAAUQ,KAAWA,GAASA,EAAMC,OAAS,EAC7CP,aAAc,mBACdC,MAAO,CAAC"}
1
+ {"version":3,"file":"validate.js","sources":["../../../../../../src/components/Boleto/components/BoletoInput/validate.ts"],"sourcesContent":["import { ValidatorRules } from '../../../../utils/Validator/types';\nimport validateSSN from '../../../internal/SocialSecurityNumberBrazil/validate';\nimport { validationRules } from '../../../../utils/Validator/defaultRules';\nimport { BOLETO_SOCIAL_SECURITY_NUMBER_INVALID, SF_ErrorCodes } from '../../../../core/Errors/constants';\n\nexport const boletoValidationRules: ValidatorRules = {\n socialSecurityNumber: {\n validate: validateSSN,\n errorMessage: BOLETO_SOCIAL_SECURITY_NUMBER_INVALID,\n modes: ['blur']\n },\n shopperEmail: validationRules.emailRule,\n default: {\n validate: value => !!value && value.length > 0,\n errorMessage: SF_ErrorCodes.ERROR_MSG_INVALID_FIELD,\n modes: ['blur']\n },\n firstName: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'firstName.invalid',\n modes: ['blur']\n },\n lastName: {\n validate: value => !!value && value.length > 0,\n errorMessage: 'lastName.invalid',\n modes: ['blur']\n }\n};\n"],"names":["boletoValidationRules","socialSecurityNumber","validate","validateSSN","errorMessage","BOLETO_SOCIAL_SECURITY_NUMBER_INVALID","modes","shopperEmail","validationRules","emailRule","default","value","length","SF_ErrorCodes","ERROR_MSG_INVALID_FIELD","firstName","lastName"],"mappings":"4QAKaA,EAAwC,CACjDC,qBAAsB,CAClBC,SAAUC,EACVC,aAAcC,EACdC,MAAO,CAAC,SAEZC,aAAcC,EAAgBC,UAC9BC,QAAS,CACLR,SAAUS,KAAWA,GAASA,EAAMC,OAAS,EAC7CR,aAAcS,EAAcC,wBAC5BR,MAAO,CAAC,SAEZS,UAAW,CACPb,SAAUS,KAAWA,GAASA,EAAMC,OAAS,EAC7CR,aAAc,oBACdE,MAAO,CAAC,SAEZU,SAAU,CACNd,SAAUS,KAAWA,GAASA,EAAMC,OAAS,EAC7CR,aAAc,mBACdE,MAAO,CAAC"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import o from"./components/CardInput/CardInput.js";import e from"../../core/Context/CoreProvider.js";import i from"../../utils/browserInfo.js";import r from"../internal/SecuredFields/binLookup/triggerBinLookUp.js";import{reject as s,fieldTypeToSnakeCase as n}from"../internal/SecuredFields/utils.js";import{hasValidInstallmentsObject as a}from"./components/CardInput/utils.js";import l from"../internal/ClickToPay/services/create-clicktopay-service.js";import u from"./components/ClickToPayWrapper.js";import c from"../../core/Errors/SRPanelProvider.js";import{TxVariants as d}from"../tx-variants.js";import{UIElement as p}from"../internal/UIElement/UIElement.js";import h from"../internal/PayButton/PayButton.js";import{ANALYTICS_RENDERED_STR as m,ANALYTICS_CONFIGURED_STR as y,ANALYTICS_FOCUS_STR as v,ANALYTICS_UNFOCUS_STR as f,ANALYTICS_VALIDATION_ERROR_STR as b}from"../../core/Analytics/constants.js";import{ALL_SECURED_FIELDS as g}from"../internal/SecuredFields/lib/configuration/constants.js";import{hasOwnProperty as P}from"../../utils/hasOwnProperty.js";import C,{IMPLEMENTATION_ERROR as S}from"../../core/Errors/AdyenCheckoutError.js";function k(t,o,e){return o in t?Object.defineProperty(t,o,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[o]=e,t}function O(t){for(var o=1;o<arguments.length;o++){var e=null!=arguments[o]?arguments[o]:{},i=Object.keys(e);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(e).filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})))),i.forEach((function(o){k(t,o,e[o])}))}return t}function j(t,o){return o=null!=o?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):function(t,o){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);o&&(i=i.filter((function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable}))),e.push.apply(e,i)}return e}(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})),t}class T extends p{setStatus(t,o){var e,i;return(null===(e=this.componentRef)||void 0===e?void 0:e.setStatus)&&this.componentRef.setStatus(t,o),(null===(i=this.clickToPayRef)||void 0===i?void 0:i.setStatus)&&this.clickToPayRef.setStatus(t,o),this}formatProps(t){var o,e,i,r,s,n,a,l,u,c,p,h,m,y,v,f,b,g,P;const k=!(0===(null===(o=t.amount)||void 0===o?void 0:o.value))&&((null===(i=t.session)||void 0===i||null===(e=i.configuration)||void 0===e?void 0:e.enableStoreDetails)||t.enableStoreDetails),T=t.storedPaymentMethodId||t.id,B=T&&(null==t||null===(r=t.supportedShopperInteractions)||void 0===r?void 0:r.includes("Ecommerce"));if(T&&!B)throw new C(S,"You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions");var R,I;return O(j(O({},t),{holderNameRequired:!!t.hasHolderName&&t.holderNameRequired,hasCVC:!(t.brand&&"bcmc"===t.brand||t.hideCVC),billingAddressRequired:!t.storedPaymentMethodId&&t.billingAddressRequired,brand:null!==(R=t.brand)&&void 0!==R?R:d.card,countryCode:t.countryCode?t.countryCode.toLowerCase():null,configuration:j(O({},t.configuration),{socialSecurityNumberMode:null!==(I=null===(s=t.configuration)||void 0===s?void 0:s.socialSecurityNumberMode)&&void 0!==I?I:"auto"}),brandsConfiguration:t.brandsConfiguration||(null===(n=t.configuration)||void 0===n?void 0:n.brandsConfiguration)||{},icon:t.icon||(null===(a=t.configuration)||void 0===a?void 0:a.icon),installmentOptions:(null===(u=t.session)||void 0===u||null===(l=u.configuration)||void 0===l?void 0:l.installmentOptions)||t.installmentOptions,enableStoreDetails:k,clickToPayConfiguration:j(O({},t.clickToPayConfiguration),{disableOtpAutoFocus:(null===(c=t.clickToPayConfiguration)||void 0===c?void 0:c.disableOtpAutoFocus)||!1,shopperEmail:(null===(p=t.clickToPayConfiguration)||void 0===p?void 0:p.shopperEmail)||(null===(m=this.core.options)||void 0===m||null===(h=m.session)||void 0===h?void 0:h.shopperEmail),telephoneNumber:(null===(y=t.clickToPayConfiguration)||void 0===y?void 0:y.telephoneNumber)||(null===(f=this.core.options)||void 0===f||null===(v=f.session)||void 0===v?void 0:v.telephoneNumber),locale:(null===(b=t.clickToPayConfiguration)||void 0===b?void 0:b.locale)||(null===(P=t.i18n)||void 0===P||null===(g=P.locale)||void 0===g?void 0:g.replace("-","_"))})}),T&&{storedPaymentMethodId:T})}formatData(){const t=this.state.selectedBrandValue,o=this.props.enableStoreDetails&&void 0!==this.state.storePaymentMethod;return j(O({paymentMethod:O({type:T.type},this.state.data,this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId},t&&{brand:t},this.props.fundingSource&&{fundingSource:this.props.fundingSource})},this.state.billingAddress&&{billingAddress:this.state.billingAddress},this.state.socialSecurityNumber&&{socialSecurityNumber:this.state.socialSecurityNumber},o&&{storePaymentMethod:Boolean(this.state.storePaymentMethod)},a(this.state.installments)&&{installments:this.state.installments}),{browserInfo:this.browserInfo,origin:!!window&&window.location.origin})}updateStyles(t){var o;return(null===(o=this.componentRef)||void 0===o?void 0:o.updateStyles)&&this.componentRef.updateStyles(t),this}setFocusOn(t){var o;return(null===(o=this.componentRef)||void 0===o?void 0:o.setFocusOn)&&this.componentRef.setFocusOn(t),this}processBinLookupResponse(t,o=!1){var e;return(null===(e=this.componentRef)||void 0===e?void 0:e.processBinLookupResponse)&&this.componentRef.processBinLookupResponse(t,o),this}handleUnsupportedCard(t){var o;return(null===(o=this.componentRef)||void 0===o?void 0:o.handleUnsupportedCard)&&this.componentRef.handleUnsupportedCard(t),this}onBinLookup(t){if(!t.isReset){const o=s("supportedBrandsRaw").from(t);this.props.onBinLookup(o)}}submitAnalytics(t){const{type:o}=t;o!==m&&o!==y||"scheme"===this.constructor.type&&P(this.props,"supportedShopperInteractions")&&(t.isStoredPaymentMethod=!0,t.brand=this.props.brand),super.submitAnalytics(t)}get isValid(){return!!this.state.isValid}get icon(){var t;return null!==(t=this.props.icon)&&void 0!==t?t:this.resources.getImage()(this.props.brand)}get brands(){const{brands:t,brandsConfiguration:o}=this.props;return t?t.map((t=>{var e,i;return{icon:null!==(i=null===(e=o[t])||void 0===e?void 0:e.icon)&&void 0!==i?i:this.props.modules.resources.getImage()(t),name:t}})):[]}get displayName(){return this.props.storedPaymentMethodId?`•••• ${this.props.lastFour}`:this.props.name||T.type}get accessibleName(){return(this.props.name||T.type)+(this.props.storedPaymentMethodId?" "+this.props.i18n.get("creditCard.storedCard.description.ariaLabel").replace("%@",this.props.lastFour):"")}get browserInfo(){return i()}renderCardInput(e=!0){return t(o,j(O({setComponentRef:this.setComponentRef},this.props,this.state),{onChange:this.setState,onSubmit:this.submit,payButton:this.payButton,onBrand:this.onBrand,onBinValue:this.onBinValue,brand:this.props.brand,brandsIcons:this.brands,isPayButtonPrimaryVariant:e,resources:this.resources,onFocus:this.onFocus,onBlur:this.onBlur,onErrorAnalytics:this.onErrorAnalytics,onConfigSuccess:this.onConfigSuccess}))}render(){return t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(c,{srPanel:this.props.modules.srPanel},t(u,{amount:this.props.amount,configuration:this.props.clickToPayConfiguration,clickToPayService:this.clickToPayService,isStandaloneComponent:!1,setClickToPayRef:this.setClickToPayRef,onSetStatus:this.setElementStatus,onSubmit:this.handleClickToPaySubmit,onError:this.handleError},(t=>this.renderCardInput(t)))))}constructor(o,e){var i;(super(o,e),k(this,"clickToPayService",void 0),k(this,"clickToPayRef",null),k(this,"setClickToPayRef",(t=>{this.clickToPayRef=t})),k(this,"onBrand",(t=>{var o,e;null===(o=(e=this.props).onBrand)||void 0===o||o.call(e,t)})),k(this,"handleClickToPaySubmit",(t=>{this.setState({data:O({},t),valid:{},errors:{},isValid:!0}),this.submit()})),k(this,"onConfigSuccess",(t=>{var o,e;this.submitAnalytics({type:y}),null===(o=(e=this.props).onConfigSuccess)||void 0===o||o.call(e,t)})),k(this,"onFocus",(t=>{var o,e,i,r;(this.submitAnalytics({type:v,target:n(t.fieldType)}),g.includes(t.fieldType))?null===(o=(e=this.props).onFocus)||void 0===o||o.call(e,t.event):null===(i=(r=this.props).onFocus)||void 0===i||i.call(r,t)})),k(this,"onBlur",(t=>{var o,e,i,r;(this.submitAnalytics({type:f,target:n(t.fieldType)}),g.includes(t.fieldType))?null===(o=(e=this.props).onBlur)||void 0===o||o.call(e,t.event):null===(i=(r=this.props).onBlur)||void 0===i||i.call(r,t)})),k(this,"onErrorAnalytics",(t=>{this.submitAnalytics({type:b,target:n(t.fieldType),validationErrorCode:t.errorCode,validationErrorMessage:t.errorMessage})})),k(this,"onBinValue",r(this)),k(this,"payButton",(o=>{var e,i;const r=0===(null===(e=this.props.amount)||void 0===e?void 0:e.value),s=(null===(i=this.props.storedPaymentMethodId)||void 0===i?void 0:i.length)>0;return t(h,j(O({},o),{amount:this.props.amount,secondaryAmount:this.props.secondaryAmount,label:r&&!s?this.props.i18n.get("payButton.saveDetails"):"",onClick:this.submit}))})),e&&!e._disableClickToPay)&&(this.clickToPayService=l(this.props.configuration,this.props.clickToPayConfiguration,this.props.environment),null===(i=this.clickToPayService)||void 0===i||i.initialize())}}k(T,"type",d.scheme),k(T,"defaultProps",{onBinLookup:()=>{},showFormInstruction:!0,_disableClickToPay:!1});export{T as CardElement,T as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import o from"./components/CardInput/CardInput.js";import e from"../../core/Context/CoreProvider.js";import i from"../../utils/browserInfo.js";import r from"../internal/SecuredFields/binLookup/triggerBinLookUp.js";import{reject as s,fieldTypeToSnakeCase as n}from"../internal/SecuredFields/utils.js";import{hasValidInstallmentsObject as a}from"./components/CardInput/utils.js";import l from"../internal/ClickToPay/services/create-clicktopay-service.js";import u from"./components/ClickToPayWrapper.js";import d from"../../core/Errors/SRPanelProvider.js";import{TxVariants as c}from"../tx-variants.js";import{UIElement as p}from"../internal/UIElement/UIElement.js";import h from"../internal/PayButton/PayButton.js";import{ANALYTICS_RENDERED_STR as m,ANALYTICS_CONFIGURED_STR as y,ANALYTICS_FOCUS_STR as v,ANALYTICS_UNFOCUS_STR as f,ANALYTICS_VALIDATION_ERROR_STR as b}from"../../core/Analytics/constants.js";import{ALL_SECURED_FIELDS as g}from"../internal/SecuredFields/lib/configuration/constants.js";import{hasOwnProperty as P}from"../../utils/hasOwnProperty.js";import C,{IMPLEMENTATION_ERROR as S}from"../../core/Errors/AdyenCheckoutError.js";import{getErrorMessageFromCode as k}from"../../core/Errors/utils.js";import{SF_ErrorCodes as j}from"../../core/Errors/constants.js";function O(t,o,e){return o in t?Object.defineProperty(t,o,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[o]=e,t}function T(t){for(var o=1;o<arguments.length;o++){var e=null!=arguments[o]?arguments[o]:{},i=Object.keys(e);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(e).filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})))),i.forEach((function(o){O(t,o,e[o])}))}return t}function B(t,o){return o=null!=o?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):function(t,o){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);o&&(i=i.filter((function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable}))),e.push.apply(e,i)}return e}(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})),t}class R extends p{setStatus(t,o){var e,i;return(null===(e=this.componentRef)||void 0===e?void 0:e.setStatus)&&this.componentRef.setStatus(t,o),(null===(i=this.clickToPayRef)||void 0===i?void 0:i.setStatus)&&this.clickToPayRef.setStatus(t,o),this}formatProps(t){var o,e,i,r,s,n,a,l,u,d,p,h,m,y,v,f,b,g,P,k;const j=null!==(k=null===(e=t.session)||void 0===e||null===(o=e.configuration)||void 0===o?void 0:o.enableStoreDetails)&&void 0!==k?k:t.enableStoreDetails,O=!(0===(null===(i=t.amount)||void 0===i?void 0:i.value))&&j,R=t.storedPaymentMethodId||t.id,I=R&&(null==t||null===(r=t.supportedShopperInteractions)||void 0===r?void 0:r.includes("Ecommerce"));if(R&&!I)throw new C(S,"You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions");var w,E;return T(B(T({},t),{holderNameRequired:!!t.hasHolderName&&t.holderNameRequired,hasCVC:!(t.brand&&"bcmc"===t.brand||t.hideCVC),billingAddressRequired:!t.storedPaymentMethodId&&t.billingAddressRequired,brand:null!==(w=t.brand)&&void 0!==w?w:c.card,countryCode:t.countryCode?t.countryCode.toLowerCase():null,configuration:B(T({},t.configuration),{socialSecurityNumberMode:null!==(E=null===(s=t.configuration)||void 0===s?void 0:s.socialSecurityNumberMode)&&void 0!==E?E:"auto"}),brandsConfiguration:t.brandsConfiguration||(null===(n=t.configuration)||void 0===n?void 0:n.brandsConfiguration)||{},icon:t.icon||(null===(a=t.configuration)||void 0===a?void 0:a.icon),installmentOptions:(null===(u=t.session)||void 0===u||null===(l=u.configuration)||void 0===l?void 0:l.installmentOptions)||t.installmentOptions,enableStoreDetails:j,showStoreDetailsCheckbox:O,clickToPayConfiguration:B(T({},t.clickToPayConfiguration),{disableOtpAutoFocus:(null===(d=t.clickToPayConfiguration)||void 0===d?void 0:d.disableOtpAutoFocus)||!1,shopperEmail:(null===(p=t.clickToPayConfiguration)||void 0===p?void 0:p.shopperEmail)||(null===(m=this.core.options)||void 0===m||null===(h=m.session)||void 0===h?void 0:h.shopperEmail),telephoneNumber:(null===(y=t.clickToPayConfiguration)||void 0===y?void 0:y.telephoneNumber)||(null===(f=this.core.options)||void 0===f||null===(v=f.session)||void 0===v?void 0:v.telephoneNumber),locale:(null===(b=t.clickToPayConfiguration)||void 0===b?void 0:b.locale)||(null===(P=t.i18n)||void 0===P||null===(g=P.locale)||void 0===g?void 0:g.replace("-","_"))})}),R&&{storedPaymentMethodId:R})}formatData(){const t=this.state.selectedBrandValue;return B(T({paymentMethod:T({type:R.type},this.state.data,this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId},t&&{brand:t},this.props.fundingSource&&{fundingSource:this.props.fundingSource})},this.state.billingAddress&&{billingAddress:this.state.billingAddress},this.state.socialSecurityNumber&&{socialSecurityNumber:this.state.socialSecurityNumber},this.storePaymentMethodPayload,a(this.state.installments)&&{installments:this.state.installments}),{browserInfo:this.browserInfo,origin:!!window&&window.location.origin})}updateStyles(t){var o;return(null===(o=this.componentRef)||void 0===o?void 0:o.updateStyles)&&this.componentRef.updateStyles(t),this}setFocusOn(t){var o;return(null===(o=this.componentRef)||void 0===o?void 0:o.setFocusOn)&&this.componentRef.setFocusOn(t),this}processBinLookupResponse(t,o=!1){var e;return(null===(e=this.componentRef)||void 0===e?void 0:e.processBinLookupResponse)&&this.componentRef.processBinLookupResponse(t,o),this}handleUnsupportedCard(t){var o;return(null===(o=this.componentRef)||void 0===o?void 0:o.handleUnsupportedCard)&&this.componentRef.handleUnsupportedCard(t),this}onBinLookup(t){if(!t.isReset){const o=s("supportedBrandsRaw").from(t);this.props.onBinLookup(o)}}submitAnalytics(t){const{type:o}=t;o!==m&&o!==y||"scheme"===this.constructor.type&&P(this.props,"supportedShopperInteractions")&&(t.isStoredPaymentMethod=!0,t.brand=this.props.brand),super.submitAnalytics(t)}get storePaymentMethodPayload(){var t,o;if((null===(t=this.props.storedPaymentMethodId)||void 0===t?void 0:t.length)>0)return{};if(0===(null===(o=this.props.amount)||void 0===o?void 0:o.value))return this.props.enableStoreDetails?{storePaymentMethod:!0}:{};return this.props.showStoreDetailsCheckbox&&void 0!==this.state.storePaymentMethod?{storePaymentMethod:Boolean(this.state.storePaymentMethod)}:{}}get isValid(){return!!this.state.isValid}get icon(){var t;return null!==(t=this.props.icon)&&void 0!==t?t:this.resources.getImage()(this.props.brand)}get brands(){const{brands:t,brandsConfiguration:o}=this.props;return t?t.map((t=>{var e,i;return{icon:null!==(i=null===(e=o[t])||void 0===e?void 0:e.icon)&&void 0!==i?i:this.props.modules.resources.getImage()(t),name:t}})):[]}get displayName(){return this.props.storedPaymentMethodId?`•••• ${this.props.lastFour}`:this.props.name||R.type}get accessibleName(){return(this.props.name||R.type)+(this.props.storedPaymentMethodId?" "+this.props.i18n.get("creditCard.storedCard.description.ariaLabel").replace("%@",this.props.lastFour):"")}get browserInfo(){return i()}renderCardInput(e=!0){return t(o,B(T({setComponentRef:this.setComponentRef},this.props,this.state),{onChange:this.setState,onSubmit:this.submit,payButton:this.payButton,onBrand:this.onBrand,onBinValue:this.onBinValue,brand:this.props.brand,brandsIcons:this.brands,isPayButtonPrimaryVariant:e,resources:this.resources,onFocus:this.onFocus,onBlur:this.onBlur,onValidationErrorAnalytics:this.onValidationErrorAnalytics,onConfigSuccess:this.onConfigSuccess}))}render(){return t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(d,{srPanel:this.props.modules.srPanel},t(u,{amount:this.props.amount,configuration:this.props.clickToPayConfiguration,clickToPayService:this.clickToPayService,isStandaloneComponent:!1,setClickToPayRef:this.setClickToPayRef,onSetStatus:this.setElementStatus,onSubmit:this.handleClickToPaySubmit,onError:this.handleError},(t=>this.renderCardInput(t)))))}constructor(o,e){var i;(super(o,e),O(this,"clickToPayService",void 0),O(this,"clickToPayRef",null),O(this,"setClickToPayRef",(t=>{this.clickToPayRef=t})),O(this,"onBrand",(t=>{var o,e;null===(o=(e=this.props).onBrand)||void 0===o||o.call(e,t)})),O(this,"handleClickToPaySubmit",(t=>{this.setState({data:T({},t),valid:{},errors:{},isValid:!0}),this.submit()})),O(this,"onConfigSuccess",(t=>{var o,e;this.submitAnalytics({type:y}),null===(o=(e=this.props).onConfigSuccess)||void 0===o||o.call(e,t)})),O(this,"onFocus",(t=>{var o,e,i,r;(this.submitAnalytics({type:v,target:n(t.fieldType)}),g.includes(t.fieldType))?null===(o=(e=this.props).onFocus)||void 0===o||o.call(e,t.event):null===(i=(r=this.props).onFocus)||void 0===i||i.call(r,t)})),O(this,"onBlur",(t=>{var o,e,i,r;(this.submitAnalytics({type:f,target:n(t.fieldType)}),g.includes(t.fieldType))?null===(o=(e=this.props).onBlur)||void 0===o||o.call(e,t.event):null===(i=(r=this.props).onBlur)||void 0===i||i.call(r,t)})),O(this,"onValidationErrorAnalytics",(t=>{this.submitAnalytics({type:b,target:n(t.fieldType),validationErrorCode:t.errorCode,validationErrorMessage:k(t.errorCode,j)})})),O(this,"onBinValue",r(this)),O(this,"payButton",(o=>{var e,i;const r=0===(null===(e=this.props.amount)||void 0===e?void 0:e.value),s=(null===(i=this.props.storedPaymentMethodId)||void 0===i?void 0:i.length)>0;return t(h,B(T({},o),{amount:this.props.amount,secondaryAmount:this.props.secondaryAmount,label:r&&!s?this.props.i18n.get("payButton.saveDetails"):"",onClick:this.submit}))})),e&&!e._disableClickToPay)&&(this.clickToPayService=l(this.props.configuration,this.props.clickToPayConfiguration,this.props.environment),null===(i=this.clickToPayService)||void 0===i||i.initialize())}}O(R,"type",c.scheme),O(R,"defaultProps",{onBinLookup:()=>{},showFormInstruction:!0,_disableClickToPay:!1});export{R as CardElement,R as default};
2
2
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { h } from 'preact';\nimport CardInput from './components/CardInput';\nimport CoreProvider from '../../core/Context/CoreProvider';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport { BinLookupResponse, CardElementData, CardConfiguration } from './types';\nimport triggerBinLookUp from '../internal/SecuredFields/binLookup/triggerBinLookUp';\nimport { CbObjOnBinLookup, CbObjOnConfigSuccess, CbObjOnFocus } from '../internal/SecuredFields/lib/types';\nimport { fieldTypeToSnakeCase, reject } from '../internal/SecuredFields/utils';\nimport { hasValidInstallmentsObject } from './components/CardInput/utils';\nimport createClickToPayService from '../internal/ClickToPay/services/create-clicktopay-service';\nimport { ClickToPayCheckoutPayload, IClickToPayService } from '../internal/ClickToPay/services/types';\nimport ClickToPayWrapper from './components/ClickToPayWrapper';\nimport { ComponentFocusObject } from '../../types/global-types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport { UIElementStatus } from '../internal/UIElement/types';\nimport UIElement from '../internal/UIElement';\nimport PayButton from '../internal/PayButton';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\nimport type { ICore } from '../../core/types';\nimport {\n ANALYTICS_FOCUS_STR,\n ANALYTICS_CONFIGURED_STR,\n ANALYTICS_UNFOCUS_STR,\n ANALYTICS_VALIDATION_ERROR_STR,\n ANALYTICS_RENDERED_STR\n} from '../../core/Analytics/constants';\nimport { ALL_SECURED_FIELDS } from '../internal/SecuredFields/lib/configuration/constants';\nimport { FieldErrorAnalyticsObject, SendAnalyticsObject } from '../../core/Analytics/types';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport AdyenCheckoutError, { IMPLEMENTATION_ERROR } from '../../core/Errors/AdyenCheckoutError';\n\nexport class CardElement extends UIElement<CardConfiguration> {\n public static type = TxVariants.scheme;\n\n private readonly clickToPayService: IClickToPayService | null;\n\n /**\n * Reference to the 'ClickToPayComponent'\n */\n private clickToPayRef = null;\n\n constructor(checkout: ICore, props?: CardConfiguration) {\n super(checkout, props);\n\n if (props && !props._disableClickToPay) {\n this.clickToPayService = createClickToPayService(this.props.configuration, this.props.clickToPayConfiguration, this.props.environment);\n this.clickToPayService?.initialize();\n }\n }\n\n protected static defaultProps = {\n onBinLookup: () => {},\n showFormInstruction: true,\n _disableClickToPay: false\n };\n\n public setStatus(status: UIElementStatus, props?): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n }\n if (this.clickToPayRef?.setStatus) {\n this.clickToPayRef.setStatus(status, props);\n }\n return this;\n }\n\n private setClickToPayRef = ref => {\n this.clickToPayRef = ref;\n };\n\n formatProps(props: CardConfiguration) {\n const isZeroAuth = props.amount?.value === 0;\n const enableStoreDetails = isZeroAuth ? false : props.session?.configuration?.enableStoreDetails || props.enableStoreDetails;\n\n const storedCardID = props.storedPaymentMethodId || props.id; // check if we've been passed a (checkout) processed storedCard or one that merchant has pulled from the PMs response\n const isEcommerceStoredCard = storedCardID && props?.supportedShopperInteractions?.includes('Ecommerce'); // If we have a storedCard does it support Ecommerce (it might not if the merchant has pulled it from the PMs response)\n\n // If we have a storedPM but it doesn't support Ecommerce - we can't make a storedCard component from it\n if (storedCardID && !isEcommerceStoredCard) {\n // TODO - Decide if an error is too severe? Would a console.warning suffice?\n throw new AdyenCheckoutError(\n IMPLEMENTATION_ERROR,\n 'You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions'\n );\n }\n\n return {\n ...props,\n // Mismatch between hasHolderName & holderNameRequired which can mean card can never be valid\n holderNameRequired: !props.hasHolderName ? false : props.holderNameRequired,\n // False for *stored* BCMC cards & if merchant explicitly wants to hide the CVC field\n hasCVC: !((props.brand && props.brand === 'bcmc') || props.hideCVC),\n // billingAddressRequired only available for non-stored cards\n billingAddressRequired: props.storedPaymentMethodId ? false : props.billingAddressRequired,\n // ...(props.brands && !props.groupTypes && { groupTypes: props.brands }),\n /** props.brand will be specified in the case of a StoredCard or a Bancontact component, for a regular Card we default it to 'card' */\n brand: props.brand ?? TxVariants.card,\n countryCode: props.countryCode ? props.countryCode.toLowerCase() : null,\n // Required for transition period (until configuration object becomes the norm)\n // - if merchant has defined value directly in props, use this instead\n configuration: {\n ...props.configuration,\n socialSecurityNumberMode: props.configuration?.socialSecurityNumberMode ?? 'auto'\n },\n brandsConfiguration: props.brandsConfiguration || props.configuration?.brandsConfiguration || {},\n icon: props.icon || props.configuration?.icon,\n // installmentOptions of a session should be used before falling back to the merchant configuration\n installmentOptions: props.session?.configuration?.installmentOptions || props.installmentOptions,\n enableStoreDetails,\n /**\n * Click to Pay configuration\n * - If email is set explicitly in the configuration, then it can override the one used in the session creation\n */\n clickToPayConfiguration: {\n ...props.clickToPayConfiguration,\n disableOtpAutoFocus: props.clickToPayConfiguration?.disableOtpAutoFocus || false,\n shopperEmail: props.clickToPayConfiguration?.shopperEmail || this.core.options?.session?.shopperEmail,\n telephoneNumber: props.clickToPayConfiguration?.telephoneNumber || this.core.options?.session?.telephoneNumber,\n locale: props.clickToPayConfiguration?.locale || props.i18n?.locale?.replace('-', '_')\n },\n ...(storedCardID && { storedPaymentMethodId: storedCardID })\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): CardElementData {\n /**\n * this.state.selectedBrandValue will be set when:\n * - /binLookup detects a single brand,\n * - when /binLookup detects a dual-branded card and the shopper makes a brand selection\n * - or, in the case of a storedCard\n */\n const cardBrand = this.state.selectedBrandValue;\n const includeStorePaymentMethod = this.props.enableStoreDetails && typeof this.state.storePaymentMethod !== 'undefined';\n\n return {\n paymentMethod: {\n type: CardElement.type,\n ...this.state.data,\n ...(this.props.storedPaymentMethodId && { storedPaymentMethodId: this.props.storedPaymentMethodId }),\n ...(cardBrand && { brand: cardBrand }),\n ...(this.props.fundingSource && { fundingSource: this.props.fundingSource })\n },\n ...(this.state.billingAddress && { billingAddress: this.state.billingAddress }),\n ...(this.state.socialSecurityNumber && { socialSecurityNumber: this.state.socialSecurityNumber }),\n ...(includeStorePaymentMethod && { storePaymentMethod: Boolean(this.state.storePaymentMethod) }),\n ...(hasValidInstallmentsObject(this.state.installments) && { installments: this.state.installments }),\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin\n };\n }\n\n updateStyles(stylesObj) {\n if (this.componentRef?.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName) {\n if (this.componentRef?.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n public onBrand = event => {\n this.props.onBrand?.(event);\n };\n\n processBinLookupResponse(binLookupResponse: BinLookupResponse, isReset = false) {\n if (this.componentRef?.processBinLookupResponse) this.componentRef.processBinLookupResponse(binLookupResponse, isReset);\n return this;\n }\n\n handleUnsupportedCard(errObj) {\n if (this.componentRef?.handleUnsupportedCard) this.componentRef.handleUnsupportedCard(errObj);\n return this;\n }\n\n private handleClickToPaySubmit = (payload: ClickToPayCheckoutPayload) => {\n this.setState({ data: { ...payload }, valid: {}, errors: {}, isValid: true });\n this.submit();\n };\n\n onBinLookup(obj: CbObjOnBinLookup) {\n // Handler for regular card comp doesn't need this 'raw' data or to know about 'resets'\n if (!obj.isReset) {\n const nuObj = reject('supportedBrandsRaw').from(obj);\n this.props.onBinLookup(nuObj);\n }\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n const { type } = analyticsObj;\n\n if (type === ANALYTICS_RENDERED_STR || type === ANALYTICS_CONFIGURED_STR) {\n // Check if it's a storedCard\n if (this.constructor['type'] === 'scheme') {\n if (hasOwnProperty(this.props, 'supportedShopperInteractions')) {\n analyticsObj.isStoredPaymentMethod = true;\n analyticsObj.brand = this.props.brand;\n }\n }\n }\n\n super.submitAnalytics(analyticsObj);\n }\n\n private onConfigSuccess = (obj: CbObjOnConfigSuccess) => {\n this.submitAnalytics({\n type: ANALYTICS_CONFIGURED_STR\n });\n\n this.props.onConfigSuccess?.(obj);\n };\n\n private onFocus = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_FOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onFocus?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onFocus?.(obj);\n }\n };\n\n private onBlur = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_UNFOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onBlur?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onBlur?.(obj);\n }\n };\n\n private onErrorAnalytics = (obj: FieldErrorAnalyticsObject) => {\n this.submitAnalytics({\n type: ANALYTICS_VALIDATION_ERROR_STR,\n target: fieldTypeToSnakeCase(obj.fieldType),\n validationErrorCode: obj.errorCode,\n validationErrorMessage: obj.errorMessage\n });\n };\n\n public onBinValue = triggerBinLookUp(this);\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.icon ?? this.resources.getImage()(this.props.brand);\n }\n\n get brands(): { icon: any; name: string }[] {\n const { brands, brandsConfiguration } = this.props;\n if (brands) {\n return brands.map(brand => {\n const brandIcon = brandsConfiguration[brand]?.icon ?? this.props.modules.resources.getImage()(brand);\n return { icon: brandIcon, name: brand };\n });\n }\n\n return [];\n }\n\n get displayName(): string {\n if (this.props.storedPaymentMethodId) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name || CardElement.type;\n }\n\n get accessibleName(): string {\n // Use display name, unless it's a stored payment method, there inform user\n return (\n (this.props.name || CardElement.type) +\n (this.props.storedPaymentMethodId\n ? ' ' + this.props.i18n.get('creditCard.storedCard.description.ariaLabel').replace('%@', this.props.lastFour)\n : '')\n );\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n // Override\n protected payButton = (props: PayButtonProps) => {\n const isZeroAuth = this.props.amount?.value === 0;\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n return (\n <PayButton\n {...props}\n amount={this.props.amount}\n secondaryAmount={this.props.secondaryAmount}\n label={isZeroAuth && !isStoredCard ? this.props.i18n.get('payButton.saveDetails') : ''}\n onClick={this.submit}\n />\n );\n };\n\n private renderCardInput(isCardPrimaryInput = true): h.JSX.Element {\n return (\n <CardInput\n setComponentRef={this.setComponentRef}\n {...this.props}\n {...this.state}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n onBrand={this.onBrand}\n onBinValue={this.onBinValue}\n brand={this.props.brand}\n brandsIcons={this.brands}\n isPayButtonPrimaryVariant={isCardPrimaryInput}\n resources={this.resources}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onErrorAnalytics={this.onErrorAnalytics}\n onConfigSuccess={this.onConfigSuccess}\n />\n );\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <ClickToPayWrapper\n amount={this.props.amount}\n configuration={this.props.clickToPayConfiguration}\n clickToPayService={this.clickToPayService}\n isStandaloneComponent={false}\n setClickToPayRef={this.setClickToPayRef}\n onSetStatus={this.setElementStatus}\n onSubmit={this.handleClickToPaySubmit}\n onError={this.handleError}\n >\n {isCardPrimaryInput => this.renderCardInput(isCardPrimaryInput)}\n </ClickToPayWrapper>\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default CardElement;\n"],"names":["CardElement","UIElement","setStatus","status","props","_this_componentRef","_this_clickToPayRef","this","componentRef","clickToPayRef","formatProps","_this_core_options_session","_this_core_options","_this_core_options_session1","_this_core_options1","enableStoreDetails","amount","value","session","configuration","storedCardID","storedPaymentMethodId","id","isEcommerceStoredCard","supportedShopperInteractions","includes","AdyenCheckoutError","IMPLEMENTATION_ERROR","_object_spread","holderNameRequired","hasHolderName","hasCVC","brand","hideCVC","billingAddressRequired","TxVariants","card","countryCode","toLowerCase","_object_spread_props","socialSecurityNumberMode","brandsConfiguration","icon","installmentOptions","clickToPayConfiguration","disableOtpAutoFocus","shopperEmail","core","options","telephoneNumber","locale","i18n","replace","formatData","cardBrand","state","selectedBrandValue","includeStorePaymentMethod","storePaymentMethod","paymentMethod","type","data","fundingSource","billingAddress","socialSecurityNumber","Boolean","hasValidInstallmentsObject","installments","browserInfo","origin","window","location","updateStyles","stylesObj","setFocusOn","fieldName","processBinLookupResponse","binLookupResponse","isReset","handleUnsupportedCard","errObj","onBinLookup","obj","nuObj","reject","from","submitAnalytics","analyticsObj","ANALYTICS_RENDERED_STR","ANALYTICS_CONFIGURED_STR","constructor","hasOwnProperty","isStoredPaymentMethod","super","isValid","_this_props_icon","resources","getImage","brands","map","modules","name","displayName","lastFour","accessibleName","get","collectBrowserInfo","renderCardInput","isCardPrimaryInput","h","CardInput","setComponentRef","onChange","setState","onSubmit","submit","payButton","onBrand","onBinValue","brandsIcons","isPayButtonPrimaryVariant","onFocus","onBlur","onErrorAnalytics","onConfigSuccess","render","CoreProvider","loadingContext","SRPanelProvider","srPanel","ClickToPayWrapper","clickToPayService","isStandaloneComponent","setClickToPayRef","onSetStatus","setElementStatus","handleClickToPaySubmit","onError","handleError","checkout","_this_clickToPayService","_define_property","ref","event","_this_props_onBrand","_this_props","call","payload","valid","errors","_this_props_onConfigSuccess","_this_props_onFocus","_this_props_onFocus1","_this_props1","ANALYTICS_FOCUS_STR","target","fieldTypeToSnakeCase","fieldType","ALL_SECURED_FIELDS","_this_props_onBlur","_this_props_onBlur1","ANALYTICS_UNFOCUS_STR","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","errorCode","validationErrorMessage","errorMessage","triggerBinLookUp","_this_props_amount","_this_props_storedPaymentMethodId","isZeroAuth","isStoredCard","length","PayButton","secondaryAmount","label","onClick","_disableClickToPay","createClickToPayService","environment","initialize","scheme","defaultProps","showFormInstruction"],"mappings":"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"}
1
+ {"version":3,"file":"Card.js","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { h } from 'preact';\nimport CardInput from './components/CardInput';\nimport CoreProvider from '../../core/Context/CoreProvider';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport { BinLookupResponse, CardElementData, CardConfiguration } from './types';\nimport triggerBinLookUp from '../internal/SecuredFields/binLookup/triggerBinLookUp';\nimport { CbObjOnBinLookup, CbObjOnConfigSuccess, CbObjOnFocus } from '../internal/SecuredFields/lib/types';\nimport { fieldTypeToSnakeCase, reject } from '../internal/SecuredFields/utils';\nimport { hasValidInstallmentsObject } from './components/CardInput/utils';\nimport createClickToPayService from '../internal/ClickToPay/services/create-clicktopay-service';\nimport { ClickToPayCheckoutPayload, IClickToPayService } from '../internal/ClickToPay/services/types';\nimport ClickToPayWrapper from './components/ClickToPayWrapper';\nimport { ComponentFocusObject } from '../../types/global-types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport { UIElementStatus } from '../internal/UIElement/types';\nimport UIElement from '../internal/UIElement';\nimport PayButton from '../internal/PayButton';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\nimport type { ICore } from '../../core/types';\nimport {\n ANALYTICS_FOCUS_STR,\n ANALYTICS_CONFIGURED_STR,\n ANALYTICS_UNFOCUS_STR,\n ANALYTICS_VALIDATION_ERROR_STR,\n ANALYTICS_RENDERED_STR\n} from '../../core/Analytics/constants';\nimport { ALL_SECURED_FIELDS } from '../internal/SecuredFields/lib/configuration/constants';\nimport { FieldErrorAnalyticsObject, SendAnalyticsObject } from '../../core/Analytics/types';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport AdyenCheckoutError, { IMPLEMENTATION_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { getErrorMessageFromCode } from '../../core/Errors/utils';\nimport { SF_ErrorCodes } from '../../core/Errors/constants';\n\nexport class CardElement extends UIElement<CardConfiguration> {\n public static type = TxVariants.scheme;\n\n private readonly clickToPayService: IClickToPayService | null;\n\n /**\n * Reference to the 'ClickToPayComponent'\n */\n private clickToPayRef = null;\n\n constructor(checkout: ICore, props?: CardConfiguration) {\n super(checkout, props);\n\n if (props && !props._disableClickToPay) {\n this.clickToPayService = createClickToPayService(this.props.configuration, this.props.clickToPayConfiguration, this.props.environment);\n this.clickToPayService?.initialize();\n }\n }\n\n protected static defaultProps = {\n onBinLookup: () => {},\n showFormInstruction: true,\n _disableClickToPay: false\n };\n\n public setStatus(status: UIElementStatus, props?): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n }\n if (this.clickToPayRef?.setStatus) {\n this.clickToPayRef.setStatus(status, props);\n }\n return this;\n }\n\n private setClickToPayRef = ref => {\n this.clickToPayRef = ref;\n };\n\n formatProps(props: CardConfiguration) {\n // The value from a session should be used, before falling back to the merchant configuration\n const enableStoreDetails = props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails;\n\n const isZeroAuth = props.amount?.value === 0;\n const showStoreDetailsCheckbox = isZeroAuth ? false : enableStoreDetails;\n\n const storedCardID = props.storedPaymentMethodId || props.id; // check if we've been passed a (checkout) processed storedCard or one that merchant has pulled from the PMs response\n const isEcommerceStoredCard = storedCardID && props?.supportedShopperInteractions?.includes('Ecommerce'); // If we have a storedCard does it support Ecommerce (it might not if the merchant has pulled it from the PMs response)\n\n // If we have a storedPM but it doesn't support Ecommerce - we can't make a storedCard component from it\n if (storedCardID && !isEcommerceStoredCard) {\n // TODO - Decide if an error is too severe? Would a console.warning suffice?\n throw new AdyenCheckoutError(\n IMPLEMENTATION_ERROR,\n 'You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions'\n );\n }\n\n return {\n ...props,\n // Mismatch between hasHolderName & holderNameRequired which can mean card can never be valid\n holderNameRequired: !props.hasHolderName ? false : props.holderNameRequired,\n // False for *stored* BCMC cards & if merchant explicitly wants to hide the CVC field\n hasCVC: !((props.brand && props.brand === 'bcmc') || props.hideCVC),\n // billingAddressRequired only available for non-stored cards\n billingAddressRequired: props.storedPaymentMethodId ? false : props.billingAddressRequired,\n // ...(props.brands && !props.groupTypes && { groupTypes: props.brands }),\n /** props.brand will be specified in the case of a StoredCard or a Bancontact component, for a regular Card we default it to 'card' */\n brand: props.brand ?? TxVariants.card,\n countryCode: props.countryCode ? props.countryCode.toLowerCase() : null,\n // Required for transition period (until configuration object becomes the norm)\n // - if merchant has defined value directly in props, use this instead\n configuration: {\n ...props.configuration,\n socialSecurityNumberMode: props.configuration?.socialSecurityNumberMode ?? 'auto'\n },\n brandsConfiguration: props.brandsConfiguration || props.configuration?.brandsConfiguration || {},\n icon: props.icon || props.configuration?.icon,\n // installmentOptions of a session should be used before falling back to the merchant configuration\n installmentOptions: props.session?.configuration?.installmentOptions || props.installmentOptions,\n enableStoreDetails,\n showStoreDetailsCheckbox,\n /**\n * Click to Pay configuration\n * - If email is set explicitly in the configuration, then it can override the one used in the session creation\n */\n clickToPayConfiguration: {\n ...props.clickToPayConfiguration,\n disableOtpAutoFocus: props.clickToPayConfiguration?.disableOtpAutoFocus || false,\n shopperEmail: props.clickToPayConfiguration?.shopperEmail || this.core.options?.session?.shopperEmail,\n telephoneNumber: props.clickToPayConfiguration?.telephoneNumber || this.core.options?.session?.telephoneNumber,\n locale: props.clickToPayConfiguration?.locale || props.i18n?.locale?.replace('-', '_')\n },\n ...(storedCardID && { storedPaymentMethodId: storedCardID })\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): CardElementData {\n /**\n * this.state.selectedBrandValue will be set when:\n * - /binLookup detects a single brand,\n * - when /binLookup detects a dual-branded card and the shopper makes a brand selection\n * - or, in the case of a storedCard\n */\n const cardBrand = this.state.selectedBrandValue;\n\n return {\n paymentMethod: {\n type: CardElement.type,\n ...this.state.data,\n ...(this.props.storedPaymentMethodId && { storedPaymentMethodId: this.props.storedPaymentMethodId }),\n ...(cardBrand && { brand: cardBrand }),\n ...(this.props.fundingSource && { fundingSource: this.props.fundingSource })\n },\n ...(this.state.billingAddress && { billingAddress: this.state.billingAddress }),\n ...(this.state.socialSecurityNumber && { socialSecurityNumber: this.state.socialSecurityNumber }),\n ...this.storePaymentMethodPayload,\n ...(hasValidInstallmentsObject(this.state.installments) && { installments: this.state.installments }),\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin\n };\n }\n\n updateStyles(stylesObj) {\n if (this.componentRef?.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName) {\n if (this.componentRef?.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n public onBrand = event => {\n this.props.onBrand?.(event);\n };\n\n processBinLookupResponse(binLookupResponse: BinLookupResponse, isReset = false) {\n if (this.componentRef?.processBinLookupResponse) this.componentRef.processBinLookupResponse(binLookupResponse, isReset);\n return this;\n }\n\n handleUnsupportedCard(errObj) {\n if (this.componentRef?.handleUnsupportedCard) this.componentRef.handleUnsupportedCard(errObj);\n return this;\n }\n\n private handleClickToPaySubmit = (payload: ClickToPayCheckoutPayload) => {\n this.setState({ data: { ...payload }, valid: {}, errors: {}, isValid: true });\n this.submit();\n };\n\n onBinLookup(obj: CbObjOnBinLookup) {\n // Handler for regular card comp doesn't need this 'raw' data or to know about 'resets'\n if (!obj.isReset) {\n const nuObj = reject('supportedBrandsRaw').from(obj);\n this.props.onBinLookup(nuObj);\n }\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n const { type } = analyticsObj;\n\n if (type === ANALYTICS_RENDERED_STR || type === ANALYTICS_CONFIGURED_STR) {\n // Check if it's a storedCard\n if (this.constructor['type'] === 'scheme') {\n if (hasOwnProperty(this.props, 'supportedShopperInteractions')) {\n analyticsObj.isStoredPaymentMethod = true;\n analyticsObj.brand = this.props.brand;\n }\n }\n }\n\n super.submitAnalytics(analyticsObj);\n }\n\n private onConfigSuccess = (obj: CbObjOnConfigSuccess) => {\n this.submitAnalytics({\n type: ANALYTICS_CONFIGURED_STR\n });\n\n this.props.onConfigSuccess?.(obj);\n };\n\n private onFocus = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_FOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onFocus?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onFocus?.(obj);\n }\n };\n\n private onBlur = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_UNFOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onBlur?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onBlur?.(obj);\n }\n };\n\n private onValidationErrorAnalytics = (obj: FieldErrorAnalyticsObject) => {\n this.submitAnalytics({\n type: ANALYTICS_VALIDATION_ERROR_STR,\n target: fieldTypeToSnakeCase(obj.fieldType),\n validationErrorCode: obj.errorCode,\n validationErrorMessage: getErrorMessageFromCode(obj.errorCode, SF_ErrorCodes)\n });\n };\n\n public onBinValue = triggerBinLookUp(this);\n\n get storePaymentMethodPayload() {\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n if (isStoredCard) {\n return {};\n }\n\n /**\n * For regular card, zero auth payments, we store the payment method, *if* the configuration says we should:\n * - For sessions, this means if the session has been created with storePaymentMethodMode: 'askForConsent'\n * - For the advanced flow, this means if the merchant has still set enableStoreDetails: true\n *\n * What we are doing is.. if for a normal payment we would show the \"Save for my next payment\" checkbox,\n * for a zero-auth payment we effectively click the checkbox on behalf of the shopper.\n */\n const isZeroAuth = this.props.amount?.value === 0;\n if (isZeroAuth) {\n return this.props.enableStoreDetails ? { storePaymentMethod: true } : {};\n }\n\n // For regular card, non-zero auth payments, we store the payment method based on the checkbox value.\n // const includeStorePaymentMethod = this.props.enableStoreDetails && typeof this.state.storePaymentMethod !== 'undefined';\n const includeStorePaymentMethod = this.props.showStoreDetailsCheckbox && typeof this.state.storePaymentMethod !== 'undefined';\n return includeStorePaymentMethod ? { storePaymentMethod: Boolean(this.state.storePaymentMethod) } : {};\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.icon ?? this.resources.getImage()(this.props.brand);\n }\n\n get brands(): { icon: any; name: string }[] {\n const { brands, brandsConfiguration } = this.props;\n if (brands) {\n return brands.map(brand => {\n const brandIcon = brandsConfiguration[brand]?.icon ?? this.props.modules.resources.getImage()(brand);\n return { icon: brandIcon, name: brand };\n });\n }\n\n return [];\n }\n\n get displayName(): string {\n if (this.props.storedPaymentMethodId) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name || CardElement.type;\n }\n\n get accessibleName(): string {\n // Use display name, unless it's a stored payment method, there inform user\n return (\n (this.props.name || CardElement.type) +\n (this.props.storedPaymentMethodId\n ? ' ' + this.props.i18n.get('creditCard.storedCard.description.ariaLabel').replace('%@', this.props.lastFour)\n : '')\n );\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n // Override\n protected payButton = (props: PayButtonProps) => {\n const isZeroAuth = this.props.amount?.value === 0;\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n return (\n <PayButton\n {...props}\n amount={this.props.amount}\n secondaryAmount={this.props.secondaryAmount}\n label={isZeroAuth && !isStoredCard ? this.props.i18n.get('payButton.saveDetails') : ''}\n onClick={this.submit}\n />\n );\n };\n\n private renderCardInput(isCardPrimaryInput = true): h.JSX.Element {\n return (\n <CardInput\n setComponentRef={this.setComponentRef}\n {...this.props}\n {...this.state}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n onBrand={this.onBrand}\n onBinValue={this.onBinValue}\n brand={this.props.brand}\n brandsIcons={this.brands}\n isPayButtonPrimaryVariant={isCardPrimaryInput}\n resources={this.resources}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onValidationErrorAnalytics={this.onValidationErrorAnalytics}\n onConfigSuccess={this.onConfigSuccess}\n />\n );\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <ClickToPayWrapper\n amount={this.props.amount}\n configuration={this.props.clickToPayConfiguration}\n clickToPayService={this.clickToPayService}\n isStandaloneComponent={false}\n setClickToPayRef={this.setClickToPayRef}\n onSetStatus={this.setElementStatus}\n onSubmit={this.handleClickToPaySubmit}\n onError={this.handleError}\n >\n {isCardPrimaryInput => this.renderCardInput(isCardPrimaryInput)}\n </ClickToPayWrapper>\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default CardElement;\n"],"names":["CardElement","UIElement","setStatus","status","props","_this_componentRef","_this_clickToPayRef","this","componentRef","clickToPayRef","formatProps","_this_core_options_session","_this_core_options","_this_core_options_session1","_this_core_options1","enableStoreDetails","session","configuration","showStoreDetailsCheckbox","amount","value","storedCardID","storedPaymentMethodId","id","isEcommerceStoredCard","supportedShopperInteractions","includes","AdyenCheckoutError","IMPLEMENTATION_ERROR","_object_spread","holderNameRequired","hasHolderName","hasCVC","brand","hideCVC","billingAddressRequired","TxVariants","card","countryCode","toLowerCase","_object_spread_props","socialSecurityNumberMode","brandsConfiguration","icon","installmentOptions","clickToPayConfiguration","disableOtpAutoFocus","shopperEmail","core","options","telephoneNumber","locale","i18n","replace","formatData","cardBrand","state","selectedBrandValue","paymentMethod","type","data","fundingSource","billingAddress","socialSecurityNumber","storePaymentMethodPayload","hasValidInstallmentsObject","installments","browserInfo","origin","window","location","updateStyles","stylesObj","setFocusOn","fieldName","processBinLookupResponse","binLookupResponse","isReset","handleUnsupportedCard","errObj","onBinLookup","obj","nuObj","reject","from","submitAnalytics","analyticsObj","ANALYTICS_RENDERED_STR","ANALYTICS_CONFIGURED_STR","constructor","hasOwnProperty","isStoredPaymentMethod","super","_this_props_storedPaymentMethodId","_this_props_amount","length","storePaymentMethod","Boolean","isValid","_this_props_icon","resources","getImage","brands","map","modules","name","displayName","lastFour","accessibleName","get","collectBrowserInfo","renderCardInput","isCardPrimaryInput","h","CardInput","setComponentRef","onChange","setState","onSubmit","submit","payButton","onBrand","onBinValue","brandsIcons","isPayButtonPrimaryVariant","onFocus","onBlur","onValidationErrorAnalytics","onConfigSuccess","render","CoreProvider","loadingContext","SRPanelProvider","srPanel","ClickToPayWrapper","clickToPayService","isStandaloneComponent","setClickToPayRef","onSetStatus","setElementStatus","handleClickToPaySubmit","onError","handleError","checkout","_this_clickToPayService","_define_property","ref","event","_this_props_onBrand","_this_props","call","payload","valid","errors","_this_props_onConfigSuccess","_this_props_onFocus","_this_props_onFocus1","_this_props1","ANALYTICS_FOCUS_STR","target","fieldTypeToSnakeCase","fieldType","ALL_SECURED_FIELDS","_this_props_onBlur","_this_props_onBlur1","ANALYTICS_UNFOCUS_STR","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","errorCode","validationErrorMessage","getErrorMessageFromCode","SF_ErrorCodes","triggerBinLookUp","isZeroAuth","isStoredCard","PayButton","secondaryAmount","label","onClick","_disableClickToPay","createClickToPayService","environment","initialize","scheme","defaultProps","showFormInstruction"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as e,Fragment as r}from"../../../../external/preact/dist/preact.js";import{useRef as t,useMemo as o,useState as n,useCallback as s,useEffect as l}from"../../../../external/preact/hooks/dist/hooks.js";import a from"../../../internal/SecuredFields/SFP/SecuredFieldsProvider.js";import i from"./defaultProps.js";import{AddressModeOptions as d}from"./types.js";import{DATE_POLICY_REQUIRED as u,CVC_POLICY_REQUIRED as c}from"../../../internal/SecuredFields/lib/configuration/constants.js";import{cardInputFormatters as m,cardInputValidationRules as p,getRuleByNameAndMode as b}from"./validate.js";import f from"../../../internal/SecuredFields/binLookup/extensions.js";import y from"../../../../utils/useForm/useForm.js";import{mapFieldKey as h,handlePartialAddressMode as g,extractPropsForCardFields as S,extractPropsForSFP as N,getLayout as v,lookupBlurBasedErrors as O}from"./utils.js";import{usePrevious as j}from"../../../../utils/hookUtils.js";import A from"../../../internal/Address/Specifications.js";import{StoredCardFieldsWrapper as F}from"./components/StoredCardFieldsWrapper.js";import{CardFieldsWrapper as P}from"./components/CardFieldsWrapper.js";import{getAutoJumpHandler as w,setFocusOnFirstField as C,getFocusHandler as k,getAddressHandler as x}from"./handlers.js";import R from"../../../../external/classnames/index.js";import{getPartialAddressValidationRules as B}from"../../../internal/Address/validate.js";import{ERROR_ACTION_BLUR_SCENARIO as E,ERROR_ACTION_FOCUS_FIELD as I}from"../../../../core/Errors/constants.js";import M from"../../../../core/Errors/useSRPanelContext.js";import V from"../../../../core/Context/useImage.js";import{getArrayDifferences as D}from"../../../../utils/arrayUtils.js";import q from"../../../internal/FormInstruction/FormInstruction.js";function T(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function L(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},o=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),o.forEach((function(r){T(e,r,t[r])}))}return e}function _(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})),e}function K(e,r){if(null==e)return{};var t,o,n=function(e,r){if(null==e)return{};var t,o,n={},s=Object.keys(e);for(o=0;o<s.length;o++)t=s[o],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)t=s[o],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}const H=i=>{var T,H;const U=t(null),z=t(!1),W=V(),{setSRMessagesFromObjects:$,setSRMessagesFromStrings:G,clearSRPanel:J,shouldMoveFocusSR:Q}=M(),X=null==$?void 0:$({fieldTypeMappingFn:h}),Y=t(null),Z=e=>{Y.current=e},ee=t({});Object.keys(ee.current).length||i.setComponentRef(ee.current);const re=t(0),te=t(!1),oe=o((()=>new A(i.specifications)),[i.specifications]);ee.current.sfp=U;const[ne,se]=n("ready"),[le,ae]=n({}),[ie,de]=n(L({},i.holderNameRequired&&{holderName:!1}));var ue;const[ce,me]=n(L({},i.hasHolderName&&{holderName:null!==(ue=i.data.holderName)&&void 0!==ue?ue:""})),[pe,be]=n(null),[fe,ye]=n(""),[he,ge]=n(!1),[Se,Ne]=n(u),[ve,Oe]=n(c),[je,Ae]=n(null),[Fe,Pe]=n([]),[we,Ce]=n(i.storedPaymentMethodId?i.brand:""),ke=i.billingAddressMode!==d.none&&i.billingAddressRequired,xe=g(i.billingAddressMode),Re=t(xe&&(null===(H=i.data)||void 0===H||null===(T=H.billingAddress)||void 0===T?void 0:T.country)),[Be,Ee]=n(!1),[Ie,Me]=n(ke?i.data.billingAddress:null),[Ve,De]=n(!1),[qe,Te]=n(""),[Le,_e]=n({value:null}),[Ke,He]=n(null),{handleChangeFor:Ue,triggerValidation:ze,data:We,valid:$e,errors:Ge,setSchema:Je,setData:Qe,setValid:Xe,setErrors:Ye}=y({schema:[],defaultData:i.data,formatters:m,rules:p}),Ze=!!Object.keys(i.installmentOptions).length&&"debit"!==i.fundingSource;var er;const rr=null===(er=i.showInstallmentAmounts)||void 0===er||er,tr="kr"===(null!=je?je:i.countryCode),or=i.configuration.koreanAuthenticationRequired&&tr,nr=Ve&&"auto"===i.configuration.socialSecurityNumberMode||"show"===i.configuration.socialSecurityNumberMode,sr=(e,r)=>{i.onFocus({fieldType:e,event:r})},lr=(e,r)=>{i.onBlur({fieldType:e,event:r})},ar=k(ye,sr,lr),ir=()=>v(L({props:i,showKCP:or,showBrazilianSSN:nr},i.billingAddressRequired&&{countrySpecificSchemas:oe.getAddressSchemaForCountry(null==Ie?void 0:Ie.country),billingAddressRequiredFields:i.billingAddressRequiredFields})),dr=s((e=>{const r="webInternalElement"!==e.fieldType?e.fieldType:e.name;He(r)}),[]),ur=x(Qe,Xe,Ye),cr=w(te,U,ir()),mr=o((()=>f(i,{sfp:U},{dualBrandSelectElements:Fe,setDualBrandSelectElements:Pe,setSelectedBrandValue:Ce,issuingCountryCode:je,setIssuingCountryCode:Ae},re)),[Fe,je]);ee.current.showValidation=()=>{z.current=!0,null==J||J(),U.current.showValidation(),ze(["holderName","socialSecurityNumber","taxNumber"]),(null==Y?void 0:Y.current)&&Y.current.showValidation()},ee.current.processBinLookupResponse=(e,r)=>{mr.processBinLookup(e,r)},ee.current.setStatus=se,l((()=>(ee.current.setFocusOn=U.current.setFocusOn,ee.current.updateStyles=U.current.updateStyles,ee.current.handleUnsupportedCard=U.current.handleUnsupportedCard,()=>{U.current.destroy()})),[]),l((()=>{const e=[...i.hasHolderName?["holderName"]:[],...nr?["socialSecurityNumber"]:[],...or?["taxNumber"]:[],...ke?["billingAddress"]:[]];Je(e)}),[i.hasHolderName,nr,or]),l((()=>{var e;me(_(L({},ce),{holderName:null!==(e=We.holderName)&&void 0!==e?e:"",taxNumber:We.taxNumber})),Te(We.socialSecurityNumber),ke&&Me(L({},We.billingAddress)),de(_(L({},ie),{holderName:!i.holderNameRequired||$e.holderName,socialSecurityNumber:!!$e.socialSecurityNumber&&$e.socialSecurityNumber,taxNumber:!!$e.taxNumber&&$e.taxNumber,billingAddress:!!$e.billingAddress&&$e.billingAddress}));const r=!!Ge.billingAddress&&Object.entries(Ge.billingAddress).reduce(((e,[,r])=>e||null!=r),!1);ae(_(L({},le),{holderName:i.holderNameRequired&&Ge.holderName?Ge.holderName:null,socialSecurityNumber:nr&&Ge.socialSecurityNumber?Ge.socialSecurityNumber:null,taxNumber:or&&Ge.taxNumber?Ge.taxNumber:null,billingAddress:ke&&r?Ge.billingAddress:null}))}),[We,$e,Ge]);const pr=j(pe);l((()=>{var e;const r=ie.holderName,t=he,o=!ke||ie.billingAddress,n=!or||!!ie.taxNumber&&!!ie.encryptedPassword,s=!nr||!!ie.socialSecurityNumber,l=t&&r&&o&&n&&s,a=U.current.mapErrorsToValidationRuleResult(),d=L({},le,a),{billingAddress:u}=d,c=L({},K(d,["billingAddress"]),u);var m;const p=null==X?void 0:X({errors:c,isValidating:z.current,layout:ir(),countrySpecificLabels:null!==(m=oe.getAddressLabelsForCountry(null==Ie?void 0:Ie.country))&&void 0!==m?m:null==xe||null===(e=xe.default)||void 0===e?void 0:e.labels}),b=null==p?void 0:p.currentErrorsSortedByLayout;switch(be(b),null==p?void 0:p.action){case I:Q&&C(z.current,U,null==p?void 0:p.fieldToFocus),setTimeout((()=>{z.current=!1}),300);break;case E:{const e=D(b,pr,"field"),r=null==e?void 0:e[0];if(r){const e=O(r.errorCode)?r.errorMessage:null;G(e)}else J();break}}if(b){const e=D(b,pr,"field");null==e||e.forEach((e=>{const r={fieldType:e.field,errorCode:e.errorCode,errorMessage:e.errorMessage};i.onErrorAnalytics(r)}))}i.onChange({data:ce,valid:ie,errors:d,isValid:l,billingAddress:Ie,selectedBrandValue:we,storePaymentMethod:Be,socialSecurityNumber:qe,installments:Le})}),[ce,ie,le,we,Be,Le]);const br=i.storedPaymentMethodId?F:P;return e(r,null,e(a,_(L({ref:U},N(i)),{styles:L({},i.styles),koreanAuthenticationRequired:i.configuration.koreanAuthenticationRequired,hasKoreanFields:!(!i.configuration.koreanAuthenticationRequired||"kr"!==i.countryCode),onChange:(e,r)=>{var t;if(e.autoCompleteName){if(!i.hasHolderName)return;const r=b("holderName","blur")(e.autoCompleteName)?e.autoCompleteName:null;r&&(Qe("holderName",r),Xe("holderName",!0),Ye("holderName",null))}else i.autoFocus&&re.current>0&&(!ie.encryptedCardNumber&&(null===(t=e.valid)||void 0===t?void 0:t.encryptedCardNumber)||ie.encryptedCardNumber&&e.valid.encryptedCardNumber&&"handleOnBrand"===(null==r?void 0:r.event))&&cr(),me(L({},ce,e.data)),ae(L({},le,e.errors)),de(L({},ie,e.valid)),ge(e.isSfpValid),Oe(e.cvcPolicy),De(e.showSocialSecurityNumber),Ne(e.expiryDatePolicy)},onBrand:i.onBrand,onFocus:ar,type:i.brand,disableIOSArrowKeys:i.disableIOSArrowKeys?dr:null,render:({setRootNode:r,setFocusOn:t},o)=>{var n;return e("div",{ref:r,className:R({"adyen-checkout__card-input":!0,"adyen-checkout-card-input__wrapper":!0,[`adyen-checkout__card-input--${null!==(n=i.fundingSource)&&void 0!==n?n:"credit"}`]:!0,"adyen-checkout__card-input--loading":"loading"===ne}),role:"form"},i.showFormInstruction&&e(q,null),e(br,_(L({},S(i)),{data:ce,valid:ie,errors:le,handleChangeFor:Ue,focusedElement:fe,setFocusOn:t,sfpState:o,cvcPolicy:ve,hasInstallments:Ze,showAmountsInInstallments:rr,handleInstallments:_e,brandsIcons:i.brandsIcons,formData:We,formErrors:Ge,formValid:$e,expiryDatePolicy:Se,dualBrandSelectElements:Fe,extensions:mr,selectedBrandValue:we,showKCP:or,showBrazilianSSN:nr,socialSecurityNumber:qe,handleOnStoreDetails:Ee,setAddressRef:Z,billingAddress:Ie,billingAddressValidationRules:xe&&B(Re.current),partialAddressSchema:xe,handleAddress:ur,onAddressLookup:i.onAddressLookup,onAddressSelected:i.onAddressSelected,addressSearchDebounceMs:i.addressSearchDebounceMs,iOSFocusedField:Ke,onFieldFocusAnalytics:sr,onFieldBlurAnalytics:lr})))}})),i.showPayButton&&i.payButton({status:ne,variant:i.isPayButtonPrimaryVariant?"primary":"secondary",icon:W({imageFolder:"components/"})("lock")}))};H.defaultProps=i;export{H as default};
1
+ import{createElement as e,Fragment as r}from"../../../../external/preact/dist/preact.js";import{useRef as t,useMemo as o,useState as n,useCallback as s,useEffect as l}from"../../../../external/preact/hooks/dist/hooks.js";import i from"../../../internal/SecuredFields/SFP/SecuredFieldsProvider.js";import a from"./defaultProps.js";import{AddressModeOptions as d}from"./types.js";import{DATE_POLICY_REQUIRED as u,CVC_POLICY_REQUIRED as c,ENCRYPTED_CARD_NUMBER as m}from"../../../internal/SecuredFields/lib/configuration/constants.js";import{cardInputFormatters as p,cardInputValidationRules as b,getRuleByNameAndMode as f}from"./validate.js";import y from"../../../internal/SecuredFields/binLookup/extensions.js";import h from"../../../../utils/useForm/useForm.js";import{mapFieldKey as g,handlePartialAddressMode as S,extractPropsForCardFields as N,extractPropsForSFP as v,getLayout as O,lookupBlurBasedErrors as j}from"./utils.js";import{usePrevious as A}from"../../../../utils/hookUtils.js";import F from"../../../internal/Address/Specifications.js";import{StoredCardFieldsWrapper as P}from"./components/StoredCardFieldsWrapper.js";import{CardFieldsWrapper as w}from"./components/CardFieldsWrapper.js";import{getAutoJumpHandler as C,setFocusOnFirstField as k,getFocusHandler as x,getAddressHandler as R}from"./handlers.js";import B from"../../../../external/classnames/index.js";import{getPartialAddressValidationRules as E}from"../../../internal/Address/validate.js";import{ERROR_ACTION_BLUR_SCENARIO as I,ERROR_ACTION_FOCUS_FIELD as V}from"../../../../core/Errors/constants.js";import M from"../../../../core/Errors/useSRPanelContext.js";import D from"../../../../core/Context/useImage.js";import{getArrayDifferences as q}from"../../../../utils/arrayUtils.js";import T from"../../../internal/FormInstruction/FormInstruction.js";function L(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},o=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),o.forEach((function(r){L(e,r,t[r])}))}return e}function K(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})),e}function H(e,r){if(null==e)return{};var t,o,n=function(e,r){if(null==e)return{};var t,o,n={},s=Object.keys(e);for(o=0;o<s.length;o++)t=s[o],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)t=s[o],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}const U=a=>{var L,U;const z=t(null),W=t(!1),$=D(),{setSRMessagesFromObjects:G,setSRMessagesFromStrings:J,clearSRPanel:Q,shouldMoveFocusSR:X}=M(),Y=null==G?void 0:G({fieldTypeMappingFn:g}),Z=t(null),ee=e=>{Z.current=e},re=t({});Object.keys(re.current).length||a.setComponentRef(re.current);const te=t(0),oe=t(!1),ne=o((()=>new F(a.specifications)),[a.specifications]);re.current.sfp=z;const[se,le]=n("ready"),[ie,ae]=n({}),[de,ue]=n(_({},a.holderNameRequired&&{holderName:!1}));var ce;const[me,pe]=n(_({},a.hasHolderName&&{holderName:null!==(ce=a.data.holderName)&&void 0!==ce?ce:""})),[be,fe]=n(null),[ye,he]=n(""),[ge,Se]=n(!1),[Ne,ve]=n(u),[Oe,je]=n(c),[Ae,Fe]=n(null),[Pe,we]=n([]),[Ce,ke]=n(a.storedPaymentMethodId?a.brand:""),xe=a.billingAddressMode!==d.none&&a.billingAddressRequired,Re=S(a.billingAddressMode),Be=t(Re&&(null===(U=a.data)||void 0===U||null===(L=U.billingAddress)||void 0===L?void 0:L.country)),[Ee,Ie]=n(!1),[Ve,Me]=n(xe?a.data.billingAddress:null),[De,qe]=n(!1),[Te,Le]=n(""),[_e,Ke]=n({value:null}),[He,Ue]=n(null),{handleChangeFor:ze,triggerValidation:We,data:$e,valid:Ge,errors:Je,setSchema:Qe,setData:Xe,setValid:Ye,setErrors:Ze}=h({schema:[],defaultData:a.data,formatters:p,rules:b}),er=!!Object.keys(a.installmentOptions).length&&"debit"!==a.fundingSource;var rr;const tr=null===(rr=a.showInstallmentAmounts)||void 0===rr||rr,or="kr"===(null!=Ae?Ae:a.countryCode),nr=a.configuration.koreanAuthenticationRequired&&or,sr=De&&"auto"===a.configuration.socialSecurityNumberMode||"show"===a.configuration.socialSecurityNumberMode,lr=(e,r)=>{a.onFocus({fieldType:e,event:r})},ir=(e,r)=>{a.onBlur({fieldType:e,event:r})},ar=x(he,lr,ir),dr=()=>O(_({props:a,showKCP:nr,showBrazilianSSN:sr},a.billingAddressRequired&&{countrySpecificSchemas:ne.getAddressSchemaForCountry(null==Ve?void 0:Ve.country),billingAddressRequiredFields:a.billingAddressRequiredFields})),ur=s((e=>{const r="webInternalElement"!==e.fieldType?e.fieldType:e.name;Ue(r)}),[]),cr=R(Xe,Ye,Ze),mr=C(oe,z,dr()),pr=o((()=>y(a,{sfp:z},{dualBrandSelectElements:Pe,setDualBrandSelectElements:we,setSelectedBrandValue:ke,issuingCountryCode:Ae,setIssuingCountryCode:Fe},te)),[Pe,Ae]);re.current.showValidation=()=>{W.current=!0,null==Q||Q(),z.current.showValidation(),We(["holderName","socialSecurityNumber","taxNumber"]),(null==Z?void 0:Z.current)&&Z.current.showValidation()},re.current.processBinLookupResponse=(e,r)=>{pr.processBinLookup(e,r)},re.current.setStatus=le,l((()=>(re.current.setFocusOn=z.current.setFocusOn,re.current.updateStyles=z.current.updateStyles,re.current.handleUnsupportedCard=z.current.handleUnsupportedCard,()=>{z.current.destroy()})),[]),l((()=>{const e=[...a.hasHolderName?["holderName"]:[],...sr?["socialSecurityNumber"]:[],...nr?["taxNumber"]:[],...xe?["billingAddress"]:[]];Qe(e)}),[a.hasHolderName,sr,nr]),l((()=>{var e;pe(K(_({},me),{holderName:null!==(e=$e.holderName)&&void 0!==e?e:"",taxNumber:$e.taxNumber})),Le($e.socialSecurityNumber),xe&&Me(_({},$e.billingAddress)),ue(K(_({},de),{holderName:!a.holderNameRequired||Ge.holderName,socialSecurityNumber:!!Ge.socialSecurityNumber&&Ge.socialSecurityNumber,taxNumber:!!Ge.taxNumber&&Ge.taxNumber,billingAddress:!!Ge.billingAddress&&Ge.billingAddress}));const r=!!Je.billingAddress&&Object.entries(Je.billingAddress).reduce(((e,[,r])=>e||null!=r),!1);ae(K(_({},ie),{holderName:a.holderNameRequired&&Je.holderName?Je.holderName:null,socialSecurityNumber:sr&&Je.socialSecurityNumber?Je.socialSecurityNumber:null,taxNumber:nr&&Je.taxNumber?Je.taxNumber:null,billingAddress:xe&&r?Je.billingAddress:null}))}),[$e,Ge,Je]);const br=A(be);l((()=>{var e;const r=de.holderName,t=ge,o=!xe||de.billingAddress,n=!nr||!!de.taxNumber&&!!de.encryptedPassword,s=!sr||!!de.socialSecurityNumber,l=t&&r&&o&&n&&s,i=z.current.mapErrorsToValidationRuleResult(),d=_({},ie,i),{billingAddress:u}=d,c=_({},H(d,["billingAddress"]),u);var m;const p=null==Y?void 0:Y({errors:c,isValidating:W.current,layout:dr(),countrySpecificLabels:null!==(m=ne.getAddressLabelsForCountry(null==Ve?void 0:Ve.country))&&void 0!==m?m:null==Re||null===(e=Re.default)||void 0===e?void 0:e.labels}),b=null==p?void 0:p.currentErrorsSortedByLayout;switch(fe(b),null==p?void 0:p.action){case V:X&&k(W.current,z,null==p?void 0:p.fieldToFocus),setTimeout((()=>{W.current=!1}),300);break;case I:{const e=q(b,br,"field"),r=null==e?void 0:e[0];if(r){const e=j(r.errorCode)?r.errorMessage:null;J(e)}else Q();break}}if(b){const e=q(b,br,"field");null==e||e.forEach((e=>{const r={fieldType:e.field,errorCode:e.errorCode};a.onValidationErrorAnalytics(r)}))}a.onChange({data:me,valid:de,errors:d,isValid:l,billingAddress:Ve,selectedBrandValue:Ce,storePaymentMethod:Ee,socialSecurityNumber:Te,installments:_e})}),[me,de,ie,Ce,Ee,_e]);const fr=a.storedPaymentMethodId?P:w;return e(r,null,e(i,K(_({ref:z},v(a)),{styles:_({},a.styles),koreanAuthenticationRequired:a.configuration.koreanAuthenticationRequired,hasKoreanFields:!(!a.configuration.koreanAuthenticationRequired||"kr"!==a.countryCode),onChange:(e,r)=>{if(e.autoCompleteName){if(!a.hasHolderName)return;const r=f("holderName","blur")(e.autoCompleteName)?e.autoCompleteName:null;r&&(Xe("holderName",r),Ye("holderName",!0),Ze("holderName",null))}else a.autoFocus&&te.current>0&&"handleOnFieldValid"===(null==r?void 0:r.event)&&(null==r?void 0:r.fieldType)===m&&e.valid.encryptedCardNumber&&mr(),pe(_({},me,e.data)),ae(_({},ie,e.errors)),ue(_({},de,e.valid)),Se(e.isSfpValid),je(e.cvcPolicy),qe(e.showSocialSecurityNumber),ve(e.expiryDatePolicy)},onBrand:a.onBrand,onFocus:ar,type:a.brand,disableIOSArrowKeys:a.disableIOSArrowKeys?ur:null,render:({setRootNode:r,setFocusOn:t},o)=>{var n;return e("div",{ref:r,className:B({"adyen-checkout__card-input":!0,"adyen-checkout-card-input__wrapper":!0,[`adyen-checkout__card-input--${null!==(n=a.fundingSource)&&void 0!==n?n:"credit"}`]:!0,"adyen-checkout__card-input--loading":"loading"===se}),role:"form"},a.showFormInstruction&&e(T,null),e(fr,K(_({},N(a)),{data:me,valid:de,errors:ie,handleChangeFor:ze,focusedElement:ye,setFocusOn:t,sfpState:o,cvcPolicy:Oe,hasInstallments:er,showAmountsInInstallments:tr,handleInstallments:Ke,brandsIcons:a.brandsIcons,formData:$e,formErrors:Je,formValid:Ge,expiryDatePolicy:Ne,dualBrandSelectElements:Pe,extensions:pr,selectedBrandValue:Ce,showKCP:nr,showBrazilianSSN:sr,socialSecurityNumber:Te,handleOnStoreDetails:Ie,setAddressRef:ee,billingAddress:Ve,billingAddressValidationRules:Re&&E(Be.current),partialAddressSchema:Re,handleAddress:cr,onAddressLookup:a.onAddressLookup,onAddressSelected:a.onAddressSelected,addressSearchDebounceMs:a.addressSearchDebounceMs,iOSFocusedField:He,onFieldFocusAnalytics:lr,onFieldBlurAnalytics:ir})))}})),a.showPayButton&&a.payButton({status:se,variant:a.isPayButtonPrimaryVariant?"primary":"secondary",icon:$({imageFolder:"components/"})("lock")}))};U.defaultProps=a;export{U as default};
2
2
  //# sourceMappingURL=CardInput.js.map