@adyen/adyen-web 6.27.1 → 6.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/cjs/adyen.css +10 -8
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +1344 -1169
  6. package/dist/es/adyen.css +10 -8
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/Card/Card.js +1 -1
  9. package/dist/es/components/Card/Card.js.map +1 -1
  10. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  11. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  12. package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  13. package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  14. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  15. package/dist/es/components/Econtext/Econtext.js +1 -1
  16. package/dist/es/components/Econtext/Econtext.js.map +1 -1
  17. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js +1 -1
  18. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  19. package/dist/es/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js +1 -1
  20. package/dist/es/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js.map +1 -1
  21. package/dist/es/components/Iris/Iris.js +2 -0
  22. package/dist/es/components/Iris/Iris.js.map +1 -0
  23. package/dist/es/components/Iris/components/IrisComponent.js +2 -0
  24. package/dist/es/components/Iris/components/IrisComponent.js.map +1 -0
  25. package/dist/es/components/Iris/components/IrisComponent.module.scss.js +2 -0
  26. package/dist/es/components/Iris/components/IrisComponent.module.scss.js.map +1 -0
  27. package/dist/es/components/Iris/components/IrisGenerateQRCode.js +2 -0
  28. package/dist/es/components/Iris/components/IrisGenerateQRCode.js.map +1 -0
  29. package/dist/es/components/Iris/components/IrisGenerateQRCode.module.scss.js +2 -0
  30. package/dist/es/components/Iris/components/IrisGenerateQRCode.module.scss.js.map +1 -0
  31. package/dist/es/components/Iris/components/IrisQrCodeInstructions.js +2 -0
  32. package/dist/es/components/Iris/components/IrisQrCodeInstructions.js.map +1 -0
  33. package/dist/es/components/Iris/constants.js +2 -0
  34. package/dist/es/components/Iris/constants.js.map +1 -0
  35. package/dist/es/components/Iris/types.js +2 -0
  36. package/dist/es/components/Iris/types.js.map +1 -0
  37. package/dist/es/components/Iris/utils.js +2 -0
  38. package/dist/es/components/Iris/utils.js.map +1 -0
  39. package/dist/es/components/PayTo/components/PayToComponent.js +1 -1
  40. package/dist/es/components/PayTo/components/PayToComponent.js.map +1 -1
  41. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  42. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  43. package/dist/es/components/ThreeDS2/components/utils.js +1 -1
  44. package/dist/es/components/ThreeDS2/components/utils.js.map +1 -1
  45. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  46. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  47. package/dist/es/components/components-name-map.js +1 -1
  48. package/dist/es/components/components-name-map.js.map +1 -1
  49. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  50. package/dist/es/components/index.js +1 -1
  51. package/dist/es/components/internal/Address/Address.js +1 -1
  52. package/dist/es/components/internal/Address/Address.js.map +1 -1
  53. package/dist/es/components/internal/Address/constants.js +1 -1
  54. package/dist/es/components/internal/Address/constants.js.map +1 -1
  55. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  56. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  57. package/dist/es/components/internal/Button/Button.js +1 -1
  58. package/dist/es/components/internal/Button/Button.js.map +1 -1
  59. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js +1 -1
  60. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js.map +1 -1
  61. package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
  62. package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
  63. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  64. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  65. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  66. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  67. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  68. package/dist/es/components/internal/SegmentedControl/SegmentedControl.js +1 -1
  69. package/dist/es/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
  70. package/dist/es/components/internal/SegmentedControl/SegmentedControlRegion.js +2 -0
  71. package/dist/es/components/internal/SegmentedControl/SegmentedControlRegion.js.map +1 -0
  72. package/dist/es/components/internal/Voucher/Voucher.js +1 -1
  73. package/dist/es/components/internal/Voucher/Voucher.js.map +1 -1
  74. package/dist/es/components/internal/Voucher/utils.js.map +1 -1
  75. package/dist/es/components/tx-variants.js +1 -1
  76. package/dist/es/components/tx-variants.js.map +1 -1
  77. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  78. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  79. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  80. package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
  81. package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
  82. package/dist/es/core/ProcessResponse/PaymentMethods/utils.js +1 -1
  83. package/dist/es/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  84. package/dist/es/core/config.js +1 -1
  85. package/dist/es/index.d.ts +1344 -1169
  86. package/dist/es/index.js +1 -1
  87. package/dist/es/language/Language.js.map +1 -1
  88. package/dist/es/utils/createSdkData.js +2 -0
  89. package/dist/es/utils/createSdkData.js.map +1 -0
  90. package/dist/es-legacy/adyen.css +10 -8
  91. package/dist/es-legacy/adyen.css.map +1 -1
  92. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  93. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  94. package/dist/es-legacy/components/ApplePay/utils/payment-request.js +1 -1
  95. package/dist/es-legacy/components/ApplePay/utils/payment-request.js.map +1 -1
  96. package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js +1 -1
  97. package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js.map +1 -1
  98. package/dist/es-legacy/components/Card/Card.js +1 -1
  99. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  100. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  101. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  102. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  103. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  104. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  105. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  106. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  107. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js +1 -1
  108. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  109. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  110. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  111. package/dist/es-legacy/components/Card/components/ClickToPayWrapper.js +1 -1
  112. package/dist/es-legacy/components/Card/components/ClickToPayWrapper.js.map +1 -1
  113. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  114. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  115. package/dist/es-legacy/components/Dragonpay/Dragonpay.js +1 -1
  116. package/dist/es-legacy/components/Dragonpay/Dragonpay.js.map +1 -1
  117. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  118. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  119. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  120. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  121. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  122. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  123. package/dist/es-legacy/components/Econtext/Econtext.js +1 -1
  124. package/dist/es-legacy/components/Econtext/Econtext.js.map +1 -1
  125. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js +1 -1
  126. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  127. package/dist/es-legacy/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js +1 -1
  128. package/dist/es-legacy/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js.map +1 -1
  129. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  130. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  131. package/dist/es-legacy/components/GooglePay/requests.js +1 -1
  132. package/dist/es-legacy/components/GooglePay/requests.js.map +1 -1
  133. package/dist/es-legacy/components/Iris/Iris.js +2 -0
  134. package/dist/es-legacy/components/Iris/Iris.js.map +1 -0
  135. package/dist/es-legacy/components/Iris/components/IrisComponent.js +2 -0
  136. package/dist/es-legacy/components/Iris/components/IrisComponent.js.map +1 -0
  137. package/dist/es-legacy/components/Iris/components/IrisComponent.module.scss.js +2 -0
  138. package/dist/es-legacy/components/Iris/components/IrisComponent.module.scss.js.map +1 -0
  139. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js +2 -0
  140. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js.map +1 -0
  141. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.module.scss.js +2 -0
  142. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.module.scss.js.map +1 -0
  143. package/dist/es-legacy/components/Iris/components/IrisQrCodeInstructions.js +2 -0
  144. package/dist/es-legacy/components/Iris/components/IrisQrCodeInstructions.js.map +1 -0
  145. package/dist/es-legacy/components/Iris/constants.js +2 -0
  146. package/dist/es-legacy/components/Iris/constants.js.map +1 -0
  147. package/dist/es-legacy/components/Iris/types.js +2 -0
  148. package/dist/es-legacy/components/Iris/types.js.map +1 -0
  149. package/dist/es-legacy/components/Iris/utils.js +2 -0
  150. package/dist/es-legacy/components/Iris/utils.js.map +1 -0
  151. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
  152. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  153. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
  154. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  155. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  156. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  157. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  158. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  159. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
  160. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
  161. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
  162. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
  163. package/dist/es-legacy/components/PayTo/components/PayToComponent.js +1 -1
  164. package/dist/es-legacy/components/PayTo/components/PayToComponent.js.map +1 -1
  165. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  166. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  167. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  168. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  169. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  170. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  171. package/dist/es-legacy/components/ThreeDS2/components/utils.js +1 -1
  172. package/dist/es-legacy/components/ThreeDS2/components/utils.js.map +1 -1
  173. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  174. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  175. package/dist/es-legacy/components/components-name-map.js +1 -1
  176. package/dist/es-legacy/components/components-name-map.js.map +1 -1
  177. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  178. package/dist/es-legacy/components/index.js +1 -1
  179. package/dist/es-legacy/components/internal/Address/Address.js +1 -1
  180. package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
  181. package/dist/es-legacy/components/internal/Address/constants.js +1 -1
  182. package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
  183. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  184. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  185. package/dist/es-legacy/components/internal/Button/Button.js +1 -1
  186. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  187. package/dist/es-legacy/components/internal/Button/CopyButton.js +1 -1
  188. package/dist/es-legacy/components/internal/Button/CopyButton.js.map +1 -1
  189. package/dist/es-legacy/components/internal/Button/CopyIconButton.js +1 -1
  190. package/dist/es-legacy/components/internal/Button/CopyIconButton.js.map +1 -1
  191. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js +1 -1
  192. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCardsList/CtPCardsList.js.map +1 -1
  193. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js +1 -1
  194. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js.map +1 -1
  195. package/dist/es-legacy/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.js +1 -1
  196. package/dist/es-legacy/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.js.map +1 -1
  197. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  198. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  199. package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
  200. package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
  201. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  202. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  203. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js +1 -1
  204. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js.map +1 -1
  205. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js +1 -1
  206. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js.map +1 -1
  207. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  208. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  209. package/dist/es-legacy/components/internal/Modal/Modal.js +1 -1
  210. package/dist/es-legacy/components/internal/Modal/Modal.js.map +1 -1
  211. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  212. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  213. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  214. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  215. package/dist/es-legacy/components/internal/PayButton/PayButton.js +1 -1
  216. package/dist/es-legacy/components/internal/PayButton/PayButton.js.map +1 -1
  217. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  218. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  219. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
  220. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
  221. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  222. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  223. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  224. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js +1 -1
  225. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  226. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js +1 -1
  227. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  228. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  229. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  230. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  231. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js.map +1 -1
  232. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  233. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  234. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleBrandFromBinLookup.js +1 -1
  235. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleBrandFromBinLookup.js.map +1 -1
  236. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
  237. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
  238. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js +1 -1
  239. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js.map +1 -1
  240. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  241. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js +1 -1
  242. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
  243. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControlRegion.js +2 -0
  244. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControlRegion.js.map +1 -0
  245. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js +1 -1
  246. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js.map +1 -1
  247. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  248. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  249. package/dist/es-legacy/components/internal/Voucher/Voucher.js +1 -1
  250. package/dist/es-legacy/components/internal/Voucher/Voucher.js.map +1 -1
  251. package/dist/es-legacy/components/internal/Voucher/utils.js.map +1 -1
  252. package/dist/es-legacy/components/tx-variants.js +1 -1
  253. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  254. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  255. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  256. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  257. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  258. package/dist/es-legacy/core/Context/Resources.js +1 -1
  259. package/dist/es-legacy/core/Context/Resources.js.map +1 -1
  260. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  261. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
  262. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
  263. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js +1 -1
  264. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  265. package/dist/es-legacy/core/config.js +1 -1
  266. package/dist/es-legacy/core/core.js +1 -1
  267. package/dist/es-legacy/core/core.js.map +1 -1
  268. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
  269. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
  270. package/dist/es-legacy/index.js +1 -1
  271. package/dist/es-legacy/language/Language.js.map +1 -1
  272. package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
  273. package/dist/es-legacy/utils/commonUtils.js.map +1 -1
  274. package/dist/es-legacy/utils/createSdkData.js +2 -0
  275. package/dist/es-legacy/utils/createSdkData.js.map +1 -0
  276. package/dist/es-legacy/utils/useForm/reducer.js +1 -1
  277. package/dist/es-legacy/utils/useForm/reducer.js.map +1 -1
  278. package/package.json +22 -22
  279. package/styles/adyen.css +10 -8
@@ -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 n from"./components/PaypalComponent.js";import r from"./defaultProps.js";import i from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as o}from"./constants.js";import{TxVariants as s}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as a}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as p,InfoEventType as h}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){l(e,t,n[t])})}return e}function c(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function u(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}class m extends t{formatProps(e){var t,n,r;const i=null===(t=e.configuration)||void 0===t?void 0:t.merchantId,o=null===(n=e.configuration)||void 0===n?void 0:n.intent,s=0===(null===(r=e.amount)||void 0===r?void 0:r.value)?"tokenize":e.intent||o,a="tokenize"===s||e.vault,p="continue"===e.userAction;return c(d({},e),{commit:!p&&e.commit,vault:a,configuration:{intent:s,merchantId:i}})}beforeRender(e){const t=new p(d({type:h.rendered,component:this.type,configData:c(d({},e),{showPayButton:this.props.showPayButton})},(null==e?void 0:e.isExpress)&&{isExpress:e.isExpress},(null==e?void 0:e.expressPage)&&{expressPage:e.expressPage}));this.analytics.sendAnalytics(t)}updatePaymentData(e){e||console.warn("PayPal - Updating payment data with an invalid value"),this.paymentData=e}formatData(){const{isExpress:e,userAction:t}=this.props;return{paymentMethod:{type:m.type,userAction:t,subtype:e?"express":m.subtype}}}get isValid(){return!0}handleResolve(e){if(!this.resolve)return this.handleError(new i("ERROR",o.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new i("ERROR",o.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return super.submit(),new Promise((e,t)=>{this.resolve=e,this.reject=t})}handleOnShippingAddressChange(e,t){return this.props.onShippingAddressChange(e,t,this)}handleOnShippingOptionsChange(e,t){return this.props.onShippingOptionsChange(e,t,this)}componentToRender(){if(!this.props.showPayButton)return null;const t=this.props,{onShippingAddressChange:r,onShippingOptionsChange:o}=t,s=u(t,["onShippingAddressChange","onShippingOptionsChange"]);return e(n,c(d({ref:e=>{this.componentRef=e}},s,r&&{onShippingAddressChange:this.handleOnShippingAddressChange},o&&{onShippingOptionsChange:this.handleOnShippingOptionsChange}),{onCancel:()=>this.handleError(new i("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:e=>{this.handleError(new i("ERROR",e.toString(),{cause:e}))},onScriptLoadFailure:e=>this.handleError(e),onSubmit:this.handleSubmit}))}constructor(e,t){super(e,t),l(this,"paymentData",null),l(this,"resolve",null),l(this,"reject",null),l(this,"submit",()=>{this.handleError(new i("IMPLEMENTATION_ERROR",o.SUBMIT_NOT_SUPPORTED))}),l(this,"handleAction",e=>this.updateWithAction(e)),l(this,"updateWithAction",e=>{if(e.paymentMethodType!==this.type)throw new Error("Invalid Action");return e.paymentData&&(this.paymentData=e.paymentData),e.sdkData&&e.sdkData.token?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:e}),this.handleResolve(e.sdkData.token)):this.handleReject(o.NO_TOKEN_PROVIDED),null}),l(this,"handleOnApprove",(e,t)=>{const{onAuthorized:n}=this.props,r={data:{details:e,paymentData:this.paymentData}};if(n)return t.order.get().then(e=>{var t;const r=a(null==e?void 0:e.payer),i=a(null==e||null===(t=e.purchase_units)||void 0===t?void 0:t[0].shipping,!0);return this.setState(d({authorizedEvent:e},r&&{billingAddress:r},i&&{deliveryAddress:i})),new Promise((t,o)=>n(d({authorizedEvent:e},r&&{billingAddress:r},i&&{deliveryAddress:i}),{resolve:t,reject:o}))}).then(()=>this.handleAdditionalDetails(r)).catch(e=>this.handleError(new i("ERROR","Something went wrong while parsing PayPal Order",{cause:e})));this.handleAdditionalDetails(r)}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this)}}l(m,"type",s.paypal),l(m,"subtype","sdk"),l(m,"defaultProps",r);export{m as default};
1
+ import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import n from"./components/PaypalComponent.js";import r from"./defaultProps.js";import i from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as o}from"./constants.js";import{TxVariants as s}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as a}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as p,InfoEventType as h}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){l(e,t,n[t])})}return e}function c(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function u(e,t){if(null==e)return{};var n,r,i,o={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(e),i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}if(o=function(e,t){if(null==e)return{};var n,r,i={},o=Object.getOwnPropertyNames(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n]);return i}(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}class y extends t{formatProps(e){var t,n,r;const i=null===(t=e.configuration)||void 0===t?void 0:t.merchantId,o=null===(n=e.configuration)||void 0===n?void 0:n.intent,s=0===(null===(r=e.amount)||void 0===r?void 0:r.value)?"tokenize":e.intent||o,a="tokenize"===s||e.vault,p="continue"===e.userAction;return c(d({},e),{commit:!p&&e.commit,vault:a,configuration:{intent:s,merchantId:i}})}beforeRender(e){const t=new p(d({type:h.rendered,component:this.type,configData:c(d({},e),{showPayButton:this.props.showPayButton})},(null==e?void 0:e.isExpress)&&{isExpress:e.isExpress},(null==e?void 0:e.expressPage)&&{expressPage:e.expressPage}));this.analytics.sendAnalytics(t)}updatePaymentData(e){e||console.warn("PayPal - Updating payment data with an invalid value"),this.paymentData=e}formatData(){const{isExpress:e,userAction:t}=this.props;return{paymentMethod:{type:y.type,userAction:t,subtype:e?"express":y.subtype}}}get isValid(){return!0}handleResolve(e){if(!this.resolve)return this.handleError(new i("ERROR",o.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new i("ERROR",o.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return super.submit(),new Promise((e,t)=>{this.resolve=e,this.reject=t})}handleOnShippingAddressChange(e,t){return this.props.onShippingAddressChange(e,t,this)}handleOnShippingOptionsChange(e,t){return this.props.onShippingOptionsChange(e,t,this)}componentToRender(){if(!this.props.showPayButton)return null;const t=this.props,{onShippingAddressChange:r,onShippingOptionsChange:o}=t,s=u(t,["onShippingAddressChange","onShippingOptionsChange"]);return e(n,c(d({ref:e=>{this.componentRef=e}},s,r&&{onShippingAddressChange:this.handleOnShippingAddressChange},o&&{onShippingOptionsChange:this.handleOnShippingOptionsChange}),{onCancel:()=>this.handleError(new i("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:e=>{this.handleError(new i("ERROR",e.toString(),{cause:e}))},onScriptLoadFailure:e=>this.handleError(e),onSubmit:this.handleSubmit}))}constructor(e,t){super(e,t),l(this,"paymentData",null),l(this,"resolve",null),l(this,"reject",null),l(this,"submit",()=>{this.handleError(new i("IMPLEMENTATION_ERROR",o.SUBMIT_NOT_SUPPORTED))}),l(this,"handleAction",e=>this.updateWithAction(e)),l(this,"updateWithAction",e=>{if(e.paymentMethodType!==this.type)throw new Error("Invalid Action");return e.paymentData&&(this.paymentData=e.paymentData),e.sdkData&&e.sdkData.token?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:e}),this.handleResolve(e.sdkData.token)):this.handleReject(o.NO_TOKEN_PROVIDED),null}),l(this,"handleOnApprove",(e,t)=>{const{onAuthorized:n}=this.props,r={data:{details:e,paymentData:this.paymentData}};if(n)return t.order.get().then(e=>{var t;const r=a(null==e?void 0:e.payer),i=a(null==e||null===(t=e.purchase_units)||void 0===t?void 0:t[0].shipping,!0);return this.setState(d({authorizedEvent:e},r&&{billingAddress:r},i&&{deliveryAddress:i})),new Promise((t,o)=>n(d({authorizedEvent:e},r&&{billingAddress:r},i&&{deliveryAddress:i}),{resolve:t,reject:o}))}).then(()=>this.handleAdditionalDetails(r)).catch(e=>this.handleError(new i("ERROR","Something went wrong while parsing PayPal Order",{cause:e})));this.handleAdditionalDetails(r)}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this)}}l(y,"type",s.paypal),l(y,"subtype","sdk"),l(y,"defaultProps",r);export{y as default};
2
2
  //# sourceMappingURL=Paypal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Paypal.js","sources":["../../../../src/components/PayPal/Paypal.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PaypalComponent from './components/PaypalComponent';\nimport defaultProps from './defaultProps';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { ERRORS } from './constants';\nimport { TxVariants } from '../tx-variants';\nimport { formatPaypalOrderContactToAdyenFormat } from './utils/format-paypal-order-contact-to-adyen-format';\n\nimport type { ICore } from '../../core/types';\nimport type { PaymentAction } from '../../types/global-types';\nimport type { Intent, PayPalConfiguration } from './types';\n\nimport './Paypal.scss';\nimport { AnalyticsInfoEvent, InfoEventType } from '../../core/Analytics/events/AnalyticsInfoEvent';\n\nclass PaypalElement extends UIElement<PayPalConfiguration> {\n public static type = TxVariants.paypal;\n public static subtype = 'sdk';\n\n public paymentData: string = null;\n\n private resolve = null;\n private reject = null;\n\n protected static defaultProps = defaultProps;\n\n constructor(checkout: ICore, props?: PayPalConfiguration) {\n super(checkout, props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnShippingAddressChange = this.handleOnShippingAddressChange.bind(this);\n this.handleOnShippingOptionsChange = this.handleOnShippingOptionsChange.bind(this);\n }\n\n formatProps(props: PayPalConfiguration): PayPalConfiguration {\n const merchantId = props.configuration?.merchantId;\n const intentFromConfig = props.configuration?.intent;\n const isZeroAuth = props.amount?.value === 0;\n const intent: Intent = isZeroAuth ? 'tokenize' : props.intent || intentFromConfig;\n const vault = intent === 'tokenize' || props.vault;\n\n const displayContinueToReviewPageButton = props.userAction === 'continue';\n\n return {\n ...props,\n commit: displayContinueToReviewPageButton ? false : props.commit,\n vault,\n configuration: {\n intent,\n merchantId\n }\n };\n }\n\n protected override beforeRender(configSetByMerchant?: PayPalConfiguration) {\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n public submit = () => {\n this.handleError(new AdyenCheckoutError('IMPLEMENTATION_ERROR', ERRORS.SUBMIT_NOT_SUPPORTED));\n };\n\n /**\n * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount\n * @param paymentData - Payment data value\n */\n public updatePaymentData(paymentData: string): void {\n if (!paymentData) console.warn('PayPal - Updating payment data with an invalid value');\n this.paymentData = paymentData;\n }\n\n /**\n * Formats the component data output\n */\n protected formatData() {\n const { isExpress, userAction } = this.props;\n\n return {\n paymentMethod: {\n type: PaypalElement.type,\n userAction,\n subtype: isExpress ? 'express' : PaypalElement.subtype\n }\n };\n }\n\n public handleAction = (action: PaymentAction) => {\n return this.updateWithAction(action);\n };\n\n public updateWithAction = (action: PaymentAction) => {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n\n if (action.paymentData) {\n this.paymentData = action.paymentData;\n }\n\n if (action.sdkData && action.sdkData.token) {\n this.onActionHandled({ componentType: this.type, actionDescription: 'sdk-loaded', originalAction: action });\n this.handleResolve(action.sdkData.token);\n } else {\n this.handleReject(ERRORS.NO_TOKEN_PROVIDED);\n }\n\n return null;\n };\n\n /**\n * Dropin Validation\n *\n * @remarks\n * Paypal does not require any specific Dropin validation\n */\n get isValid() {\n return true;\n }\n\n private handleOnApprove = (data: any, actions: any): Promise<void> | void => {\n const { onAuthorized } = this.props;\n const state = { data: { details: data, paymentData: this.paymentData } };\n\n if (!onAuthorized) {\n this.handleAdditionalDetails(state);\n return;\n }\n\n return actions.order\n .get()\n .then((paypalOrder: any) => {\n const billingAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.payer);\n const deliveryAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.purchase_units?.[0].shipping, true);\n\n this.setState({\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error => this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong while parsing PayPal Order', { cause: error })));\n };\n\n handleResolve(token: string) {\n if (!this.resolve) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.resolve(token);\n }\n\n handleReject(errorMessage: string) {\n if (!this.reject) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.reject(new Error(errorMessage));\n }\n\n private handleSubmit(): Promise<void> {\n super.submit();\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n /**\n * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingAddressChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingAddressChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingOptionsChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingOptionsChange(data, actions, this);\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (!this.props.showPayButton) return null;\n\n const { onShippingAddressChange, onShippingOptionsChange, ...rest } = this.props;\n\n return (\n <PaypalComponent\n ref={ref => {\n this.componentRef = ref;\n }}\n {...rest}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onChange={this.setState}\n onApprove={this.handleOnApprove}\n onError={error => {\n this.handleError(new AdyenCheckoutError('ERROR', error.toString(), { cause: error }));\n }}\n onScriptLoadFailure={error => this.handleError(error)}\n onSubmit={this.handleSubmit}\n />\n );\n }\n}\n\nexport default PaypalElement;\n"],"names":["PaypalElement","UIElement","formatProps","props","merchantId","configuration","intentFromConfig","intent","amount","value","vault","displayContinueToReviewPageButton","userAction","_object_spread_props","_object_spread","commit","beforeRender","configSetByMerchant","event","AnalyticsInfoEvent","type","InfoEventType","rendered","component","this","configData","showPayButton","isExpress","expressPage","analytics","sendAnalytics","updatePaymentData","paymentData","console","warn","formatData","paymentMethod","subtype","isValid","handleResolve","token","resolve","handleError","AdyenCheckoutError","ERRORS","WRONG_INSTANCE","handleReject","errorMessage","reject","Error","handleSubmit","super","submit","Promise","handleOnShippingAddressChange","data","actions","onShippingAddressChange","handleOnShippingOptionsChange","onShippingOptionsChange","componentToRender","_this_props","rest","h","PaypalComponent","ref","componentRef","onCancel","onChange","setState","onApprove","handleOnApprove","onError","error","toString","cause","onScriptLoadFailure","onSubmit","constructor","checkout","_define_property","SUBMIT_NOT_SUPPORTED","handleAction","action","updateWithAction","paymentMethodType","sdkData","onActionHandled","componentType","actionDescription","originalAction","NO_TOKEN_PROVIDED","onAuthorized","state","details","order","get","then","paypalOrder","billingAddress","formatPaypalOrderContactToAdyenFormat","payer","deliveryAddress","purchase_units","shipping","authorizedEvent","handleAdditionalDetails","catch","bind","TxVariants","paypal","defaultProps"],"mappings":"wtDAgBA,MAAMA,UAAsBC,EAkBxBC,WAAAA,CAAYC,GACWA,IAAAA,EACMA,EACNA,EAFnB,MAAMC,EAAgC,QAAnBD,EAAAA,EAAME,qBAANF,IAAAA,OAAAA,EAAAA,EAAqBC,WAClCE,EAAsC,QAAnBH,EAAAA,EAAME,qBAANF,IAAAA,OAAAA,EAAAA,EAAqBI,OAExCA,EADqC,KAAZ,QAAZJ,EAAAA,EAAMK,cAANL,IAAAA,OAAAA,EAAAA,EAAcM,OACG,WAAaN,EAAMI,QAAUD,EAC3DI,EAAmB,aAAXH,GAAyBJ,EAAMO,MAEvCC,EAAyD,aAArBR,EAAMS,WAEhD,OAAOC,EAAAC,EAAA,CAAA,EACAX,GAAAA,CACHY,QAAQJ,GAA4CR,EAAMY,OAC1DL,QACAL,cAAe,CACXE,SACAH,eAGZ,CAEmBY,YAAAA,CAAaC,GAC5B,MAAMC,EAAQ,IAAIC,EAAmBL,EAAA,CACjCM,KAAMC,EAAcC,SACpBC,UAAWC,KAAKJ,KAChBK,WAAYZ,EAAAC,EAAA,CAAA,EAAKG,GAAAA,CAAqBS,cAAeF,KAAKrB,MAAMuB,kBAC5DT,aAAAA,EAAAA,EAAqBU,YAAa,CAAEA,UAAWV,EAAoBU,YACnEV,aAAAA,EAAAA,EAAqBW,cAAe,CAAEA,YAAaX,EAAoBW,eAG/EJ,KAAKK,UAAUC,cAAcZ,EACjC,CAUOa,iBAAAA,CAAkBC,GAChBA,GAAaC,QAAQC,KAAK,wDAC/BV,KAAKQ,YAAcA,CACvB,CAKA,UAAAG,GACI,MAAMR,UAAEA,EAASf,WAAEA,GAAeY,KAAKrB,MAEvC,MAAO,CACHiC,cAAe,CACXhB,KAAMpB,EAAcoB,KACpBR,aACAyB,QAASV,EAAY,UAAY3B,EAAcqC,SAG3D,CA6BA,WAAIC,GACA,OAAO,CACX,CAsCAC,aAAAA,CAAcC,GACV,IAAKhB,KAAKiB,QAAS,OAAOjB,KAAKkB,YAAY,IAAIC,EAAmB,QAASC,EAAOC,iBAClFrB,KAAKiB,QAAQD,EACjB,CAEAM,YAAAA,CAAaC,GACT,IAAKvB,KAAKwB,OAAQ,OAAOxB,KAAKkB,YAAY,IAAIC,EAAmB,QAASC,EAAOC,iBACjFrB,KAAKwB,OAAO,IAAIC,MAAMF,GAC1B,CAEQG,YAAAA,GAGJ,OAFAC,MAAMC,SAEC,IAAIC,QAAQ,CAACZ,EAASO,KACzBxB,KAAKiB,QAAUA,EACfjB,KAAKwB,OAASA,GAEtB,CAUA,6BAAAM,CAAsCC,EAAWC,GAC7C,OAAOhC,KAAKrB,MAAMsD,wBAAwBF,EAAMC,EAAShC,KAC7D,CAUA,6BAAAkC,CAAsCH,EAAWC,GAC7C,OAAOhC,KAAKrB,MAAMwD,wBAAwBJ,EAAMC,EAAShC,KAC7D,CAEmBoC,iBAAAA,GACf,IAAKpC,KAAKrB,MAAMuB,cAAe,OAAO,KAEtC,MAAsEmC,EAAArC,KAAKrB,OAArEsD,wBAAEA,EAAuBE,wBAAEA,GAAqCE,EAATC,EAAAA,EAASD,EAAA,CAA9DJ,0BAAyBE,4BAEjC,OACII,EAACC,EAAAA,EAAAA,EAAAA,CACGC,IAAKA,IACDzC,KAAK0C,aAAeD,IAEpBH,EACCL,GAA2B,CAAEA,wBAAyBjC,KAAK8B,+BAC3DK,GAA2B,CAAEA,wBAAyBnC,KAAKkC,gCAA8B,CAC9FS,SAAU,IAAM3C,KAAKkB,YAAY,IAAIC,EAAmB,WACxDyB,SAAU5C,KAAK6C,SACfC,UAAW9C,KAAK+C,gBAChBC,QAASC,IACLjD,KAAKkB,YAAY,IAAIC,EAAmB,QAAS8B,EAAMC,WAAY,CAAEC,MAAOF,MAEhFG,oBAAqBH,GAASjD,KAAKkB,YAAY+B,GAC/CI,SAAUrD,KAAK0B,eAG3B,CAxMA,WAAA4B,CAAYC,EAAiB5E,GACzBgD,MAAM4B,EAAU5E,GARpB6E,EAAAxD,KAAOQ,cAAsB,MAE7BgD,EAAAxD,KAAQiB,UAAU,MAClBuC,EAAAxD,KAAQwB,SAAS,MA2CjBgC,OAAO5B,SAAS,KACZ5B,KAAKkB,YAAY,IAAIC,EAAmB,uBAAwBC,EAAOqC,yBA2B3ED,EAAAxD,KAAO0D,eAAgBC,GACZ3D,KAAK4D,iBAAiBD,IAGjCH,EAAAxD,KAAO4D,mBAAoBD,IACvB,GAAIA,EAAOE,oBAAsB7D,KAAKJ,KAAM,MAAM,IAAI6B,MAAM,kBAa5D,OAXIkC,EAAOnD,cACPR,KAAKQ,YAAcmD,EAAOnD,aAG1BmD,EAAOG,SAAWH,EAAOG,QAAQ9C,OACjChB,KAAK+D,gBAAgB,CAAEC,cAAehE,KAAKJ,KAAMqE,kBAAmB,aAAcC,eAAgBP,IAClG3D,KAAKe,cAAc4C,EAAOG,QAAQ9C,QAElChB,KAAKsB,aAAaF,EAAO+C,mBAGtB,OAaXX,EAAAxD,KAAQ+C,kBAAkB,CAAChB,EAAWC,KAClC,MAAMoC,aAAEA,GAAiBpE,KAAKrB,MACxB0F,EAAQ,CAAEtC,KAAM,CAAEuC,QAASvC,EAAMvB,YAAaR,KAAKQ,cAEzD,GAAK4D,EAKL,OAAOpC,EAAQuC,MACVC,MACAC,KAAMC,IAE2DA,IAAAA,EAD9D,MAAMC,EAAiBC,EAAsCF,aAAAA,EAAAA,EAAaG,OACpEC,EAAkBF,EAAsCF,SAA2B,QAA3BA,EAAAA,EAAaK,sBAAbL,IAAAA,OAAAA,EAAAA,EAA8B,GAAGM,UAAU,GAQzG,OANAhF,KAAK6C,SAASvD,EAAA,CACV2F,gBAAiBP,GACbC,GAAkB,CAAEA,kBACpBG,GAAmB,CAAEA,qBAGtB,IAAIjD,QAAc,CAACZ,EAASO,IAC/B4C,EACI9E,EAAA,CACI2F,gBAAiBP,GACbC,GAAkB,CAAEA,kBACpBG,GAAmB,CAAEA,oBAE7B,CAAE7D,UAASO,cAItBiD,KAAK,IAAMzE,KAAKkF,wBAAwBb,IACxCc,MAAMlC,GAASjD,KAAKkB,YAAY,IAAIC,EAAmB,QAAS,kDAAmD,CAAEgC,MAAOF,MA5B7HjD,KAAKkF,wBAAwBb,KArGjCrE,KAAK0B,aAAe1B,KAAK0B,aAAa0D,KAAKpF,MAC3CA,KAAK8B,8BAAgC9B,KAAK8B,8BAA8BsD,KAAKpF,MAC7EA,KAAKkC,8BAAgClC,KAAKkC,8BAA8BkD,KAAKpF,KACjF,EAfAwD,EADEhF,EACYoB,OAAOyF,EAAWC,QAChC9B,EAFEhF,EAEYqC,UAAU,OAOxB2C,EATEhF,EASe+G,eAAeA"}
1
+ {"version":3,"file":"Paypal.js","sources":["../../../../src/components/PayPal/Paypal.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PaypalComponent from './components/PaypalComponent';\nimport defaultProps from './defaultProps';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { ERRORS } from './constants';\nimport { TxVariants } from '../tx-variants';\nimport { formatPaypalOrderContactToAdyenFormat } from './utils/format-paypal-order-contact-to-adyen-format';\n\nimport type { ICore } from '../../core/types';\nimport type { PaymentAction } from '../../types/global-types';\nimport type { Intent, PayPalConfiguration } from './types';\n\nimport './Paypal.scss';\nimport { AnalyticsInfoEvent, InfoEventType } from '../../core/Analytics/events/AnalyticsInfoEvent';\n\nclass PaypalElement extends UIElement<PayPalConfiguration> {\n public static type = TxVariants.paypal;\n public static subtype = 'sdk';\n\n public paymentData: string = null;\n\n private resolve = null;\n private reject = null;\n\n protected static defaultProps = defaultProps;\n\n constructor(checkout: ICore, props?: PayPalConfiguration) {\n super(checkout, props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnShippingAddressChange = this.handleOnShippingAddressChange.bind(this);\n this.handleOnShippingOptionsChange = this.handleOnShippingOptionsChange.bind(this);\n }\n\n formatProps(props: PayPalConfiguration): PayPalConfiguration {\n const merchantId = props.configuration?.merchantId;\n const intentFromConfig = props.configuration?.intent;\n const isZeroAuth = props.amount?.value === 0;\n const intent: Intent = isZeroAuth ? 'tokenize' : props.intent || intentFromConfig;\n const vault = intent === 'tokenize' || props.vault;\n\n const displayContinueToReviewPageButton = props.userAction === 'continue';\n\n return {\n ...props,\n commit: displayContinueToReviewPageButton ? false : props.commit,\n vault,\n configuration: {\n intent,\n merchantId\n }\n };\n }\n\n protected override beforeRender(configSetByMerchant?: PayPalConfiguration) {\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n public submit = () => {\n this.handleError(new AdyenCheckoutError('IMPLEMENTATION_ERROR', ERRORS.SUBMIT_NOT_SUPPORTED));\n };\n\n /**\n * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount\n * @param paymentData - Payment data value\n */\n public updatePaymentData(paymentData: string): void {\n if (!paymentData) console.warn('PayPal - Updating payment data with an invalid value');\n this.paymentData = paymentData;\n }\n\n /**\n * Formats the component data output\n */\n protected formatData() {\n const { isExpress, userAction } = this.props;\n\n return {\n paymentMethod: {\n type: PaypalElement.type,\n userAction,\n subtype: isExpress ? 'express' : PaypalElement.subtype\n }\n };\n }\n\n public handleAction = (action: PaymentAction) => {\n return this.updateWithAction(action);\n };\n\n public updateWithAction = (action: PaymentAction) => {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n\n if (action.paymentData) {\n this.paymentData = action.paymentData;\n }\n\n if (action.sdkData && action.sdkData.token) {\n this.onActionHandled({ componentType: this.type, actionDescription: 'sdk-loaded', originalAction: action });\n this.handleResolve(action.sdkData.token);\n } else {\n this.handleReject(ERRORS.NO_TOKEN_PROVIDED);\n }\n\n return null;\n };\n\n /**\n * Dropin Validation\n *\n * @remarks\n * Paypal does not require any specific Dropin validation\n */\n get isValid() {\n return true;\n }\n\n private handleOnApprove = (data: any, actions: any): Promise<void> | void => {\n const { onAuthorized } = this.props;\n const state = { data: { details: data, paymentData: this.paymentData } };\n\n if (!onAuthorized) {\n this.handleAdditionalDetails(state);\n return;\n }\n\n return actions.order\n .get()\n .then((paypalOrder: any) => {\n const billingAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.payer);\n const deliveryAddress = formatPaypalOrderContactToAdyenFormat(paypalOrder?.purchase_units?.[0].shipping, true);\n\n this.setState({\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<void>((resolve, reject) =>\n onAuthorized(\n {\n authorizedEvent: paypalOrder,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n )\n );\n })\n .then(() => this.handleAdditionalDetails(state))\n .catch(error => this.handleError(new AdyenCheckoutError('ERROR', 'Something went wrong while parsing PayPal Order', { cause: error })));\n };\n\n handleResolve(token: string) {\n if (!this.resolve) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.resolve(token);\n }\n\n handleReject(errorMessage: string) {\n if (!this.reject) return this.handleError(new AdyenCheckoutError('ERROR', ERRORS.WRONG_INSTANCE));\n this.reject(new Error(errorMessage));\n }\n\n private handleSubmit(): Promise<void> {\n super.submit();\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n /**\n * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingAddressChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingAddressChange(data, actions, this);\n }\n\n /**\n * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order\n * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the\n * paymentData\n *\n * @param data - PayPal data\n * @param actions - PayPal actions.\n */\n private handleOnShippingOptionsChange(data: any, actions: any): Promise<void> {\n return this.props.onShippingOptionsChange(data, actions, this);\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (!this.props.showPayButton) return null;\n\n const { onShippingAddressChange, onShippingOptionsChange, ...rest } = this.props;\n\n return (\n <PaypalComponent\n ref={ref => {\n this.componentRef = ref;\n }}\n {...rest}\n {...(onShippingAddressChange && { onShippingAddressChange: this.handleOnShippingAddressChange })}\n {...(onShippingOptionsChange && { onShippingOptionsChange: this.handleOnShippingOptionsChange })}\n onCancel={() => this.handleError(new AdyenCheckoutError('CANCEL'))}\n onChange={this.setState}\n onApprove={this.handleOnApprove}\n onError={error => {\n this.handleError(new AdyenCheckoutError('ERROR', error.toString(), { cause: error }));\n }}\n onScriptLoadFailure={error => this.handleError(error)}\n onSubmit={this.handleSubmit}\n />\n );\n }\n}\n\nexport default PaypalElement;\n"],"names":["PaypalElement","UIElement","formatProps","props","merchantId","configuration","intentFromConfig","intent","amount","value","vault","displayContinueToReviewPageButton","userAction","_object_spread_props","_object_spread","commit","beforeRender","configSetByMerchant","event","AnalyticsInfoEvent","type","InfoEventType","rendered","component","this","configData","showPayButton","isExpress","expressPage","analytics","sendAnalytics","updatePaymentData","paymentData","console","warn","formatData","paymentMethod","subtype","isValid","handleResolve","token","resolve","handleError","AdyenCheckoutError","ERRORS","WRONG_INSTANCE","handleReject","errorMessage","reject","Error","handleSubmit","super","submit","Promise","handleOnShippingAddressChange","data","actions","onShippingAddressChange","handleOnShippingOptionsChange","onShippingOptionsChange","componentToRender","_this_props","rest","h","PaypalComponent","ref","componentRef","onCancel","onChange","setState","onApprove","handleOnApprove","onError","error","toString","cause","onScriptLoadFailure","onSubmit","constructor","checkout","_define_property","SUBMIT_NOT_SUPPORTED","handleAction","action","updateWithAction","paymentMethodType","sdkData","onActionHandled","componentType","actionDescription","originalAction","NO_TOKEN_PROVIDED","onAuthorized","state","details","order","get","then","paypalOrder","billingAddress","formatPaypalOrderContactToAdyenFormat","payer","deliveryAddress","purchase_units","shipping","authorizedEvent","handleAdditionalDetails","catch","bind","TxVariants","paypal","defaultProps"],"mappings":"q9DAgBA,MAAMA,UAAsBC,EAkBxBC,WAAAA,CAAYC,GACWA,IAAAA,EACMA,EACNA,EAFnB,MAAMC,EAAgC,QAAnBD,EAAAA,EAAME,qBAANF,IAAAA,OAAAA,EAAAA,EAAqBC,WAClCE,EAAsC,QAAnBH,EAAAA,EAAME,qBAANF,IAAAA,OAAAA,EAAAA,EAAqBI,OAExCA,EADqC,KAAZ,QAAZJ,EAAAA,EAAMK,cAANL,IAAAA,OAAAA,EAAAA,EAAcM,OACG,WAAaN,EAAMI,QAAUD,EAC3DI,EAAmB,aAAXH,GAAyBJ,EAAMO,MAEvCC,EAAyD,aAArBR,EAAMS,WAEhD,OAAOC,EAAAC,EAAA,CAAA,EACAX,GAAAA,CACHY,QAAQJ,GAA4CR,EAAMY,OAC1DL,QACAL,cAAe,CACXE,SACAH,eAGZ,CAEmBY,YAAAA,CAAaC,GAC5B,MAAMC,EAAQ,IAAIC,EAAmBL,EAAA,CACjCM,KAAMC,EAAcC,SACpBC,UAAWC,KAAKJ,KAChBK,WAAYZ,EAAAC,EAAA,CAAA,EAAKG,GAAAA,CAAqBS,cAAeF,KAAKrB,MAAMuB,kBAC5DT,aAAAA,EAAAA,EAAqBU,YAAa,CAAEA,UAAWV,EAAoBU,YACnEV,aAAAA,EAAAA,EAAqBW,cAAe,CAAEA,YAAaX,EAAoBW,eAG/EJ,KAAKK,UAAUC,cAAcZ,EACjC,CAUOa,iBAAAA,CAAkBC,GAChBA,GAAaC,QAAQC,KAAK,wDAC/BV,KAAKQ,YAAcA,CACvB,CAKA,UAAAG,GACI,MAAMR,UAAEA,EAASf,WAAEA,GAAeY,KAAKrB,MAEvC,MAAO,CACHiC,cAAe,CACXhB,KAAMpB,EAAcoB,KACpBR,aACAyB,QAASV,EAAY,UAAY3B,EAAcqC,SAG3D,CA6BA,WAAIC,GACA,OAAO,CACX,CAsCAC,aAAAA,CAAcC,GACV,IAAKhB,KAAKiB,QAAS,OAAOjB,KAAKkB,YAAY,IAAIC,EAAmB,QAASC,EAAOC,iBAClFrB,KAAKiB,QAAQD,EACjB,CAEAM,YAAAA,CAAaC,GACT,IAAKvB,KAAKwB,OAAQ,OAAOxB,KAAKkB,YAAY,IAAIC,EAAmB,QAASC,EAAOC,iBACjFrB,KAAKwB,OAAO,IAAIC,MAAMF,GAC1B,CAEQG,YAAAA,GAGJ,OAFAC,MAAMC,SAEC,IAAIC,QAAQ,CAACZ,EAASO,KACzBxB,KAAKiB,QAAUA,EACfjB,KAAKwB,OAASA,GAEtB,CAUA,6BAAAM,CAAsCC,EAAWC,GAC7C,OAAOhC,KAAKrB,MAAMsD,wBAAwBF,EAAMC,EAAShC,KAC7D,CAUA,6BAAAkC,CAAsCH,EAAWC,GAC7C,OAAOhC,KAAKrB,MAAMwD,wBAAwBJ,EAAMC,EAAShC,KAC7D,CAEmBoC,iBAAAA,GACf,IAAKpC,KAAKrB,MAAMuB,cAAe,OAAO,KAEtC,MAAsEmC,EAAArC,KAAKrB,OAArEsD,wBAAEA,EAAuBE,wBAAEA,GAAqCE,EAATC,EAAAA,EAASD,EAAA,uDAEtE,OACIE,EAACC,EAAAA,EAAAA,EAAAA,CACGC,IAAKA,IACDzC,KAAK0C,aAAeD,IAEpBH,EACCL,GAA2B,CAAEA,wBAAyBjC,KAAK8B,+BAC3DK,GAA2B,CAAEA,wBAAyBnC,KAAKkC,gCAA8B,CAC9FS,SAAU,IAAM3C,KAAKkB,YAAY,IAAIC,EAAmB,WACxDyB,SAAU5C,KAAK6C,SACfC,UAAW9C,KAAK+C,gBAChBC,QAASC,IACLjD,KAAKkB,YAAY,IAAIC,EAAmB,QAAS8B,EAAMC,WAAY,CAAEC,MAAOF,MAEhFG,oBAAqBH,GAASjD,KAAKkB,YAAY+B,GAC/CI,SAAUrD,KAAK0B,eAG3B,CAxMA,WAAA4B,CAAYC,EAAiB5E,GACzBgD,MAAM4B,EAAU5E,GARpB6E,EAAAxD,KAAOQ,cAAsB,MAE7BgD,EAAAxD,KAAQiB,UAAU,MAClBuC,EAAAxD,KAAQwB,SAAS,MA2CjBgC,OAAO5B,SAAS,KACZ5B,KAAKkB,YAAY,IAAIC,EAAmB,uBAAwBC,EAAOqC,yBA2B3ED,EAAAxD,KAAO0D,eAAgBC,GACZ3D,KAAK4D,iBAAiBD,IAGjCH,EAAAxD,KAAO4D,mBAAoBD,IACvB,GAAIA,EAAOE,oBAAsB7D,KAAKJ,KAAM,MAAM,IAAI6B,MAAM,kBAa5D,OAXIkC,EAAOnD,cACPR,KAAKQ,YAAcmD,EAAOnD,aAG1BmD,EAAOG,SAAWH,EAAOG,QAAQ9C,OACjChB,KAAK+D,gBAAgB,CAAEC,cAAehE,KAAKJ,KAAMqE,kBAAmB,aAAcC,eAAgBP,IAClG3D,KAAKe,cAAc4C,EAAOG,QAAQ9C,QAElChB,KAAKsB,aAAaF,EAAO+C,mBAGtB,OAaXX,EAAAxD,KAAQ+C,kBAAkB,CAAChB,EAAWC,KAClC,MAAMoC,aAAEA,GAAiBpE,KAAKrB,MACxB0F,EAAQ,CAAEtC,KAAM,CAAEuC,QAASvC,EAAMvB,YAAaR,KAAKQ,cAEzD,GAAK4D,EAKL,OAAOpC,EAAQuC,MACVC,MACAC,KAAMC,IAE2DA,IAAAA,EAD9D,MAAMC,EAAiBC,EAAsCF,aAAAA,EAAAA,EAAaG,OACpEC,EAAkBF,EAAsCF,SAA2B,QAA3BA,EAAAA,EAAaK,sBAAbL,IAAAA,OAAAA,EAAAA,EAA8B,GAAGM,UAAU,GAQzG,OANAhF,KAAK6C,SAASvD,EAAA,CACV2F,gBAAiBP,GACbC,GAAkB,CAAEA,kBACpBG,GAAmB,CAAEA,qBAGtB,IAAIjD,QAAc,CAACZ,EAASO,IAC/B4C,EACI9E,EAAA,CACI2F,gBAAiBP,GACbC,GAAkB,CAAEA,kBACpBG,GAAmB,CAAEA,oBAE7B,CAAE7D,UAASO,cAItBiD,KAAK,IAAMzE,KAAKkF,wBAAwBb,IACxCc,MAAMlC,GAASjD,KAAKkB,YAAY,IAAIC,EAAmB,QAAS,kDAAmD,CAAEgC,MAAOF,MA5B7HjD,KAAKkF,wBAAwBb,KArGjCrE,KAAK0B,aAAe1B,KAAK0B,aAAa0D,KAAKpF,MAC3CA,KAAK8B,8BAAgC9B,KAAK8B,8BAA8BsD,KAAKpF,MAC7EA,KAAKkC,8BAAgClC,KAAKkC,8BAA8BkD,KAAKpF,KACjF,EAfAwD,EADEhF,EACYoB,OAAOyF,EAAWC,QAChC9B,EAFEhF,EAEYqC,UAAU,OAOxB2C,EATEhF,EASe+G,eAAeA"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as t,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import o from"../../../_virtual/index.js";import{getStyle as r}from"../utils/get-paypal-styles.js";import a from"../../internal/Spinner/Spinner.js";import{useCoreContext as c}from"../../../core/Context/CoreProvider.js";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function l(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function s(s){var u,{onInit:y,onApprove:_,onClick:f,onCancel:b,onError:d,onShippingAddressChange:m,onShippingOptionsChange:g,onSubmit:O,isProcessingPayment:h,paypalRef:P,style:k}=s,v=l(s,["onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style"]);const{i18n:j}=c(),S="tokenize"===(null===(u=v.configuration)||void 0===u?void 0:u.intent),C=t(null),E=t(null),w=t(null),A=t(null),N=(e,t)=>{const n=p(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){i(e,t,n[t])})}return e}({},S&&{createBillingAgreement:O},!S&&{createOrder:O},!S&&"venmo"!==e&&m&&{onShippingAddressChange:m},!S&&"venmo"!==e&&g&&{onShippingOptionsChange:g}),{fundingSource:e,style:r(e,k),onInit:y,onClick:f,onCancel:b,onError:d,onApprove:_}),o=P.Buttons(n);o.isEligible()&&o.render(t.current)};n(()=>{const{PAYPAL:e,CREDIT:t,PAYLATER:n,VENMO:o}=P.FUNDING;v.blockPayPalButton||N(e,C),v.blockPayPalCreditButton||N(t,E),v.blockPayPalPayLaterButton||N(n,w),v.blockPayPalVenmoButton||N(o,A)},[]);const x=!0===v.commit;return e("div",{className:o("adyen-checkout__paypal__buttons",{"adyen-checkout__paypal-processing":h})},e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal",ref:C}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit",ref:E}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later",ref:w}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo",ref:A}),h&&e("div",{className:"adyen-checkout__paypal"},e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing"},e(a,{size:"medium",inline:!0}),x&&j.get("paypal.processingPayment"))))}export{s as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as t,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import o from"../../../_virtual/index.js";import{getStyle as r}from"../utils/get-paypal-styles.js";import a from"../../internal/Spinner/Spinner.js";import{useCoreContext as c}from"../../../core/Context/CoreProvider.js";function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function l(e,t){if(null==e)return{};var n,o,r,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(e),r=0;r<n.length;r++)o=n[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o]);return a}if(a=function(e,t){if(null==e)return{};var n,o,r={},a=Object.getOwnPropertyNames(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n]);return r}(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),r=0;r<n.length;r++)o=n[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o]);return a}function s(s){let{onInit:u,onApprove:y,onClick:f,onCancel:b,onError:_,onShippingAddressChange:d,onShippingOptionsChange:m,onSubmit:g,isProcessingPayment:O,paypalRef:h,style:P}=s,j=l(s,["onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style"]);var k;const{i18n:v}=c(),S="tokenize"===(null===(k=j.configuration)||void 0===k?void 0:k.intent),C=t(null),w=t(null),E=t(null),A=t(null),N=(e,t)=>{const n=i(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){p(e,t,n[t])})}return e}({},S&&{createBillingAgreement:g},!S&&{createOrder:g},!S&&"venmo"!==e&&d&&{onShippingAddressChange:d},!S&&"venmo"!==e&&m&&{onShippingOptionsChange:m}),{fundingSource:e,style:r(e,P),onInit:u,onClick:f,onCancel:b,onError:_,onApprove:y}),o=h.Buttons(n);o.isEligible()&&o.render(t.current)};n(()=>{const{PAYPAL:e,CREDIT:t,PAYLATER:n,VENMO:o}=h.FUNDING;j.blockPayPalButton||N(e,C),j.blockPayPalCreditButton||N(t,w),j.blockPayPalPayLaterButton||N(n,E),j.blockPayPalVenmoButton||N(o,A)},[]);const x=!0===j.commit;return e("div",{className:o("adyen-checkout__paypal__buttons",{"adyen-checkout__paypal-processing":O})},e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal",ref:C}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit",ref:w}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later",ref:E}),e("div",{className:"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo",ref:A}),O&&e("div",{className:"adyen-checkout__paypal"},e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing"},e(a,{size:"medium",inline:!0}),x&&v.get("paypal.processingPayment"))))}export{s as default};
2
2
  //# sourceMappingURL=PaypalButtons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\nimport Spinner from '../../internal/Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\n\nimport type { PayPalButtonsProps } from './types';\nimport type { FundingSource } from '../types';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: PayPalButtonsProps) {\n const { i18n } = useCoreContext();\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: FundingSource, buttonRef: RefObject<HTMLDivElement>) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef.Buttons(configuration);\n\n if (button.isEligible()) {\n button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef.FUNDING;\n\n if (!props.blockPayPalButton) createButton(PAYPAL, paypalButtonRef);\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n const isProcessingPaymentWithoutReviewPage = props.commit === true;\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\">\n <Spinner size=\"medium\" inline />\n {isProcessingPaymentWithoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","_param","props","onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","i18n","useCoreContext","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","_object_spread_props","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","render","current","useEffect","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalButton","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","isProcessingPaymentWithoutReviewPage","commit","h","div","className","classnames","ref","Spinner","size","inline","get"],"mappings":"itCAUe,SAASA,EAAcC,OAefC,GAfeC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,wBACPA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,GAXkCZ,EAY/BC,EAAAA,EAZ+BD,EAAA,CAClCE,SACAC,YACAC,UACAC,WACAC,UACAC,0BACAC,0BACAC,WACAC,sBACAC,YACAC,UAGA,MAAMC,KAAEA,GAASC,IACXC,EAA6C,cAAb,QAAnBd,EAAAA,EAAMe,qBAANf,IAAAA,OAAAA,EAAAA,EAAqBgB,QAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8BC,KAChD,MAAMT,EAAgBU,wUACdX,GAAc,CAAEY,uBAAwBlB,IACvCM,GAAc,CAAEa,YAAanB,IAC7BM,GAAgC,UAAlBS,GAA6BjB,GAA2B,CAAEA,4BACxEQ,GAAgC,UAAlBS,GAA6BhB,GAA2B,CAAEA,4BAAwB,CACrGgB,gBACAZ,MAAOiB,EAASL,EAAeZ,GAC/BV,SACAE,UACAC,WACAC,UACAH,cAGE2B,EAASnB,EAAUoB,QAAQf,GAE7Bc,EAAOE,cACPF,EAAOG,OAAOR,EAAUS,UAIhCC,EAAU,KACN,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU5B,EAAU6B,QAEjDvC,EAAMwC,mBAAmBlB,EAAaa,EAAQlB,GAC9CjB,EAAMyC,yBAAyBnB,EAAac,EAAQjB,GACpDnB,EAAM0C,2BAA2BpB,EAAae,EAAUjB,GACxDpB,EAAM2C,wBAAwBrB,EAAagB,EAAOjB,IACxD,IAEH,MAAMuB,GAAwD,IAAjB5C,EAAM6C,OAEnD,OACIC,EAACC,MAAAA,CAAIC,UAAWC,EAAW,kCAAmC,CAAE,oCAAqCxC,KACjGqC,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAKjC,IAC5F6B,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK/B,IAC5F2B,EAACC,MAAAA,CAAIC,UAAU,2EAA2EE,IAAK9B,IAC/F0B,EAACC,MAAAA,CAAIC,UAAU,uEAAuEE,IAAK7B,IAE1FZ,GACGqC,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACC,MAAAA,CAAIC,UAAU,6EACXF,EAACK,EAAAA,CAAQC,KAAK,SAASC,QAAAA,IACtBT,GAAwChC,EAAK0C,IAAI,8BAM1E"}
1
+ {"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\nimport Spinner from '../../internal/Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\n\nimport type { PayPalButtonsProps } from './types';\nimport type { FundingSource } from '../types';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: PayPalButtonsProps) {\n const { i18n } = useCoreContext();\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: FundingSource, buttonRef: RefObject<HTMLDivElement>) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef.Buttons(configuration);\n\n if (button.isEligible()) {\n button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef.FUNDING;\n\n if (!props.blockPayPalButton) createButton(PAYPAL, paypalButtonRef);\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n const isProcessingPaymentWithoutReviewPage = props.commit === true;\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\">\n <Spinner size=\"medium\" inline />\n {isProcessingPaymentWithoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","_0","onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","props","i18n","useCoreContext","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","_object_spread_props","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","render","current","useEffect","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalButton","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","isProcessingPaymentWithoutReviewPage","commit","h","div","className","classnames","ref","Spinner","size","inline","get"],"mappings":"88CAUe,SAASA,EAAcC,OAAAC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,wBACPA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,GAEiBX,EADdY,EAAAA,EAAAA,EAAAA,gKAGgBA,IAAAA,EADnB,MAAMC,KAAEA,GAASC,IACXC,EAA6C,cAAb,QAAnBH,EAAAA,EAAMI,qBAANJ,IAAAA,OAAAA,EAAAA,EAAqBK,QAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8BC,KAChD,MAAMT,EAAgBU,wUACdX,GAAc,CAAEY,uBAAwBnB,IACvCO,GAAc,CAAEa,YAAapB,IAC7BO,GAAgC,UAAlBS,GAA6BlB,GAA2B,CAAEA,4BACxES,GAAgC,UAAlBS,GAA6BjB,GAA2B,CAAEA,4BAAwB,CACrGiB,gBACAb,MAAOkB,EAASL,EAAeb,GAC/BV,SACAE,UACAC,WACAC,UACAH,cAGE4B,EAASpB,EAAUqB,QAAQf,GAE7Bc,EAAOE,cACPF,EAAOG,OAAOR,EAAUS,UAIhCC,EAAU,KACN,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU7B,EAAU8B,QAEjD5B,EAAM6B,mBAAmBlB,EAAaa,EAAQlB,GAC9CN,EAAM8B,yBAAyBnB,EAAac,EAAQjB,GACpDR,EAAM+B,2BAA2BpB,EAAae,EAAUjB,GACxDT,EAAMgC,wBAAwBrB,EAAagB,EAAOjB,IACxD,IAEH,MAAMuB,GAAwD,IAAjBjC,EAAMkC,OAEnD,OACIC,EAACC,MAAAA,CAAIC,UAAWC,EAAW,kCAAmC,CAAE,oCAAqCzC,KACjGsC,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAKjC,IAC5F6B,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK/B,IAC5F2B,EAACC,MAAAA,CAAIC,UAAU,2EAA2EE,IAAK9B,IAC/F0B,EAACC,MAAAA,CAAIC,UAAU,uEAAuEE,IAAK7B,IAE1Fb,GACGsC,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACC,MAAAA,CAAIC,UAAU,6EACXF,EAACK,EAAAA,CAAQC,KAAK,SAASC,QAAAA,IACtBT,GAAwChC,EAAK0C,IAAI,8BAM1E"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useCallback as r,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import o from"./PaypalButtons.js";import a from"../../internal/Spinner/Spinner.js";import{getPaypalUrl as c}from"../utils/get-paypal-url.js";import p from"../../../utils/Script.js";import s from"../../../core/Analytics/useAnalytics.js";function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(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){i(e,t,r[t])})}return e}function u(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function y(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function f(i){var{onApprove:f,onCancel:b,onChange:m,onError:O,onSubmit:d,onScriptLoadFailure:j}=i,g=y(i,["onApprove","onCancel","onChange","onError","onSubmit","onScriptLoadFailure"]);const[h,v]=t("pending"),{analytics:P}=s();this.setStatus=v;const S=r((e,t)=>{v("processing"),f(e,t)},[f]),w=()=>{v("ready")},_=e=>{j(e)};return n(()=>{const e=c(g),t=l({},g.cspNonce&&{nonce:g.cspNonce}),r=l({},g.cspNonce&&{cspNonce:g.cspNonce}),n=new p({src:e,component:"paypal",attributes:t,dataAttributes:r,analytics:P});return n.load().then(w).catch(_),()=>{n.remove()}},[]),"pending"===h?e("div",{className:"adyen-checkout__paypal","aria-live":"polite","aria-busy":"true"},e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending","data-testid":"paypal-loader"},e(a,null))):e("div",{className:"adyen-checkout__paypal"},e(o,u(l({},g),{onCancel:b,onChange:m,onError:O,onSubmit:d,onApprove:S,isProcessingPayment:"processing"===h,paypalRef:window.paypal})))}export{f as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useCallback as r,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import o from"./PaypalButtons.js";import a from"../../internal/Spinner/Spinner.js";import{getPaypalUrl as c}from"../utils/get-paypal-url.js";import p from"../../../utils/Script.js";import s from"../../../core/Analytics/useAnalytics.js";function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(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){i(e,t,r[t])})}return e}function u(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function y(e,t){if(null==e)return{};var r,n,o,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(r=Reflect.ownKeys(e),o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}if(a=function(e,t){if(null==e)return{};var r,n,o={},a=Object.getOwnPropertyNames(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}(e,t),Object.getOwnPropertySymbols)for(r=Object.getOwnPropertySymbols(e),o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}function f(i){let{onApprove:f,onCancel:b,onChange:m,onError:O,onSubmit:d,onScriptLoadFailure:j}=i,g=y(i,["onApprove","onCancel","onChange","onError","onSubmit","onScriptLoadFailure"]);const[h,w]=t("pending"),{analytics:P}=s();this.setStatus=w;const S=r((e,t)=>{w("processing"),f(e,t)},[f]),v=()=>{w("ready")},_=e=>{j(e)};return n(()=>{const e=c(g),t=l({},g.cspNonce&&{nonce:g.cspNonce}),r=l({},g.cspNonce&&{cspNonce:g.cspNonce}),n=new p({src:e,component:"paypal",attributes:t,dataAttributes:r,analytics:P});return n.load().then(v).catch(_),()=>{n.remove()}},[]),"pending"===h?e("div",{className:"adyen-checkout__paypal","aria-live":"polite","aria-busy":"true"},e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending","data-testid":"paypal-loader"},e(a,null))):e("div",{className:"adyen-checkout__paypal"},e(o,u(l({},g),{onCancel:b,onChange:m,onError:O,onSubmit:d,onApprove:S,isProcessingPayment:"processing"===h,paypalRef:window.paypal})))}export{f as default};
2
2
  //# sourceMappingURL=PaypalComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaypalComponent.js","sources":["../../../../../src/components/PayPal/components/PaypalComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useCallback } from 'preact/hooks';\nimport PaypalButtons from './PaypalButtons';\nimport Spinner from '../../internal/Spinner';\nimport { getPaypalUrl } from '../utils/get-paypal-url';\nimport Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport type { PayPalComponentProps } from './types';\nimport useAnalytics from '../../../core/Analytics/useAnalytics';\n\nexport default function PaypalComponent({ onApprove, onCancel, onChange, onError, onSubmit, onScriptLoadFailure, ...props }: PayPalComponentProps) {\n const [status, setStatus] = useState('pending');\n const { analytics } = useAnalytics();\n\n this.setStatus = setStatus;\n\n const handleOnApprove = useCallback(\n (data: any, actions: any) => {\n setStatus('processing');\n onApprove(data, actions);\n },\n [onApprove]\n );\n\n const handlePaypalLoad = () => {\n setStatus('ready');\n };\n\n const handlePaypalLoadFailure = (error: AdyenCheckoutError) => {\n onScriptLoadFailure(error);\n };\n\n useEffect(() => {\n const src = getPaypalUrl(props);\n\n const attributes = { ...(props.cspNonce && { nonce: props.cspNonce }) },\n dataAttributes = { ...(props.cspNonce && { cspNonce: props.cspNonce }) };\n\n const script = new Script({\n src,\n component: 'paypal',\n attributes,\n dataAttributes,\n analytics\n });\n\n script.load().then(handlePaypalLoad).catch(handlePaypalLoadFailure);\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__paypal\" aria-live=\"polite\" aria-busy=\"true\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending\" data-testid={'paypal-loader'}>\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__paypal\">\n <PaypalButtons\n {...props}\n onCancel={onCancel}\n onChange={onChange}\n onError={onError}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n isProcessingPayment={status === 'processing'}\n paypalRef={window.paypal}\n />\n </div>\n );\n}\n"],"names":["PaypalComponent","_param","onApprove","onCancel","onChange","onError","onSubmit","onScriptLoadFailure","props","status","setStatus","useState","analytics","useAnalytics","this","handleOnApprove","useCallback","data","actions","handlePaypalLoad","handlePaypalLoadFailure","error","useEffect","src","getPaypalUrl","attributes","_object_spread","cspNonce","nonce","dataAttributes","script","Script","component","load","then","catch","remove","h","div","className","aria-live","aria-busy","data-testid","Spinner","PaypalButtons","isProcessingPayment","paypalRef","window","paypal"],"mappings":"yjDAUe,SAASA,EAAgBC,GAAA,IAAAC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,QAAEA,EAAOC,SAAEA,EAAQC,oBAAEA,GAApDN,EAA4EO,EAAAA,EAA5EP,EAAA,CAAEC,YAAWC,WAAUC,WAAUC,UAASC,WAAUC,wBACxF,MAAOE,EAAQC,GAAaC,EAAS,YAC/BC,UAAEA,GAAcC,IAEtBC,KAAKJ,UAAYA,EAEjB,MAAMK,EAAkBC,EACpB,CAACC,EAAWC,KACRR,EAAU,cACVR,EAAUe,EAAMC,IAEpB,CAAChB,IAGCiB,EAAmB,KACrBT,EAAU,UAGRU,EAA2BC,IAC7Bd,EAAoBc,IAwBxB,OArBAC,EAAU,KACN,MAAMC,EAAMC,EAAahB,GAEnBiB,EAAaC,EAAA,GAAMlB,EAAMmB,UAAY,CAAEC,MAAOpB,EAAMmB,WACtDE,EAAiBH,EAAA,CAAA,EAAMlB,EAAMmB,UAAY,CAAEA,SAAUnB,EAAMmB,WAEzDG,EAAS,IAAIC,EAAO,CACtBR,MACAS,UAAW,SACXP,aACAI,iBACAjB,cAKJ,OAFAkB,EAAOG,OAAOC,KAAKf,GAAkBgB,MAAMf,GAEpC,KACHU,EAAOM,WAEZ,IAEY,YAAX3B,EAEI4B,EAACC,MAAAA,CAAIC,UAAU,yBAAyBC,YAAU,SAASC,YAAU,QACjEJ,EAACC,MAAAA,CAAIC,UAAU,yEAAyEG,cAAa,iBACjGL,EAACM,EAAAA,QAObN,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACO,EAAAA,EAAAA,EAAAA,CAAAA,EACOpC,GAAAA,CACJL,SAAUA,EACVC,SAAUA,EACVC,QAASA,EACTC,SAAUA,EACVJ,UAAWa,EACX8B,oBAAgC,eAAXpC,EACrBqC,UAAWC,OAAOC,UAIlC"}
1
+ {"version":3,"file":"PaypalComponent.js","sources":["../../../../../src/components/PayPal/components/PaypalComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useCallback } from 'preact/hooks';\nimport PaypalButtons from './PaypalButtons';\nimport Spinner from '../../internal/Spinner';\nimport { getPaypalUrl } from '../utils/get-paypal-url';\nimport Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport type { PayPalComponentProps } from './types';\nimport useAnalytics from '../../../core/Analytics/useAnalytics';\n\nexport default function PaypalComponent({ onApprove, onCancel, onChange, onError, onSubmit, onScriptLoadFailure, ...props }: PayPalComponentProps) {\n const [status, setStatus] = useState('pending');\n const { analytics } = useAnalytics();\n\n this.setStatus = setStatus;\n\n const handleOnApprove = useCallback(\n (data: any, actions: any) => {\n setStatus('processing');\n onApprove(data, actions);\n },\n [onApprove]\n );\n\n const handlePaypalLoad = () => {\n setStatus('ready');\n };\n\n const handlePaypalLoadFailure = (error: AdyenCheckoutError) => {\n onScriptLoadFailure(error);\n };\n\n useEffect(() => {\n const src = getPaypalUrl(props);\n\n const attributes = { ...(props.cspNonce && { nonce: props.cspNonce }) },\n dataAttributes = { ...(props.cspNonce && { cspNonce: props.cspNonce }) };\n\n const script = new Script({\n src,\n component: 'paypal',\n attributes,\n dataAttributes,\n analytics\n });\n\n script.load().then(handlePaypalLoad).catch(handlePaypalLoadFailure);\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__paypal\" aria-live=\"polite\" aria-busy=\"true\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending\" data-testid={'paypal-loader'}>\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__paypal\">\n <PaypalButtons\n {...props}\n onCancel={onCancel}\n onChange={onChange}\n onError={onError}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n isProcessingPayment={status === 'processing'}\n paypalRef={window.paypal}\n />\n </div>\n );\n}\n"],"names":["PaypalComponent","_0","onApprove","onCancel","onChange","onError","onSubmit","onScriptLoadFailure","props","status","setStatus","useState","analytics","useAnalytics","this","handleOnApprove","useCallback","data","actions","handlePaypalLoad","handlePaypalLoadFailure","error","useEffect","src","getPaypalUrl","attributes","_object_spread","cspNonce","nonce","dataAttributes","script","Script","component","load","then","catch","remove","h","div","className","aria-live","aria-busy","data-testid","Spinner","PaypalButtons","isProcessingPayment","paypalRef","window","paypal"],"mappings":"szDAUe,SAASA,EAAgBC,GAAA,IAAAC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,QAAEA,EAAOC,SAAEA,EAAQC,oBAAEA,GAAqDN,EAA7BO,EAAAA,EAAAA,EAAAA,gFAChH,MAAOC,EAAQC,GAAaC,EAAS,YAC/BC,UAAEA,GAAcC,IAEtBC,KAAKJ,UAAYA,EAEjB,MAAMK,EAAkBC,EACpB,CAACC,EAAWC,KACRR,EAAU,cACVR,EAAUe,EAAMC,IAEpB,CAAChB,IAGCiB,EAAmB,KACrBT,EAAU,UAGRU,EAA2BC,IAC7Bd,EAAoBc,IAwBxB,OArBAC,EAAU,KACN,MAAMC,EAAMC,EAAahB,GAEnBiB,EAAaC,EAAA,GAAMlB,EAAMmB,UAAY,CAAEC,MAAOpB,EAAMmB,WACtDE,EAAiBH,EAAA,CAAA,EAAMlB,EAAMmB,UAAY,CAAEA,SAAUnB,EAAMmB,WAEzDG,EAAS,IAAIC,EAAO,CACtBR,MACAS,UAAW,SACXP,aACAI,iBACAjB,cAKJ,OAFAkB,EAAOG,OAAOC,KAAKf,GAAkBgB,MAAMf,GAEpC,KACHU,EAAOM,WAEZ,IAEY,YAAX3B,EAEI4B,EAACC,MAAAA,CAAIC,UAAU,yBAAyBC,YAAU,SAASC,YAAU,QACjEJ,EAACC,MAAAA,CAAIC,UAAU,yEAAyEG,cAAa,iBACjGL,EAACM,EAAAA,QAObN,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACO,EAAAA,EAAAA,EAAAA,CAAAA,EACOpC,GAAAA,CACJL,SAAUA,EACVC,SAAUA,EACVC,QAASA,EACTC,SAAUA,EACVJ,UAAWa,EACX8B,oBAAgC,eAAXpC,EACrBqC,UAAWC,OAAOC,UAIlC"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../../external/preact/dist/preact.js";import e from"../../internal/SegmentedControl/SegmentedControl.js";import{useState as o,useMemo as n}from"../../../external/preact/hooks/dist/hooks.js";import a from"./PayIDInput.js";import r from"./BSBInput.js";import{useCoreContext as s}from"../../../core/Context/CoreProvider.js";import i from"../../../_virtual/index.js";import{getUniqueId as l}from"../../../utils/idGenerator.js";function p(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function u(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),n.forEach(function(e){p(t,e,o[e])})}return t}function d(p){const{i18n:d}=s(),[c,m]=o("ready"),f=n(()=>l("payid-input"),[]),b=n(()=>l("bsb-input"),[]),y=n(()=>[{value:"payid-option",label:"PayID",id:"payid-option",controls:f},{value:"bsb-option",label:d.get("payto.bsb.option.label"),id:"bsb-option",controls:b}],[d,f,b]),g=y[0].value,[h,j]=o(g),C=({data:t,valid:e,errors:o,isValid:n})=>{p.onChange({data:u({selectedInput:h},t),valid:e,errors:o,isValid:n})};return t("div",{className:i({"adyen-checkout__payto-component":!0,"adyen-checkout__payto-component--loading":"loading"===c})},t(e,{selectedValue:h,options:y,onChange:j}),"payid-option"===h&&t(a,{id:f,status:c,setStatus:m,setComponentRef:p.setComponentRef,onChange:C,defaultData:p.data,placeholders:p.placeholders}),"bsb-option"===h&&t(r,{id:b,status:c,setStatus:m,setComponentRef:p.setComponentRef,onChange:C,defaultData:p.data,placeholders:p.placeholders}),p.showPayButton&&p.payButton({status:c,label:d.get("continue")}))}export{d as default};
1
+ import{createElement as t}from"../../../external/preact/dist/preact.js";import{SegmentedControl as e}from"../../internal/SegmentedControl/SegmentedControl.js";import{useState as o,useMemo as n}from"../../../external/preact/hooks/dist/hooks.js";import a from"./PayIDInput.js";import r from"./BSBInput.js";import{useCoreContext as s}from"../../../core/Context/CoreProvider.js";import i from"../../../_virtual/index.js";import{getUniqueId as l}from"../../../utils/idGenerator.js";function p(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function u(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),n.forEach(function(e){p(t,e,o[e])})}return t}function d(p){const{i18n:d}=s(),[c,m]=o("ready"),f=n(()=>l("payid-input"),[]),b=n(()=>l("bsb-input"),[]),y=n(()=>[{value:"payid-option",label:"PayID",id:"payid-option",controls:f},{value:"bsb-option",label:d.get("payto.bsb.option.label"),id:"bsb-option",controls:b}],[d,f,b]),g=y[0].value,[h,j]=o(g),C=({data:t,valid:e,errors:o,isValid:n})=>{p.onChange({data:u({selectedInput:h},t),valid:e,errors:o,isValid:n})};return t("div",{className:i({"adyen-checkout__payto-component":!0,"adyen-checkout__payto-component--loading":"loading"===c})},t(e,{selectedValue:h,options:y,onChange:j}),"payid-option"===h&&t(a,{id:f,status:c,setStatus:m,setComponentRef:p.setComponentRef,onChange:C,defaultData:p.data,placeholders:p.placeholders}),"bsb-option"===h&&t(r,{id:b,status:c,setStatus:m,setComponentRef:p.setComponentRef,onChange:C,defaultData:p.data,placeholders:p.placeholders}),p.showPayButton&&p.payButton({status:c,label:d.get("continue")}))}export{d as default};
2
2
  //# sourceMappingURL=PayToComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayToComponent.js","sources":["../../../../../src/components/PayTo/components/PayToComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport SegmentedControl from '../../internal/SegmentedControl';\nimport { useMemo, useState } from 'preact/hooks';\nimport { SegmentedControlOptions } from '../../internal/SegmentedControl/SegmentedControl';\nimport PayIDInput from './PayIDInput';\nimport BSBInput from './BSBInput';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { ComponentMethodsRef, UIElementStatus } from '../../internal/UIElement/types';\nimport { PayToData, PayToPlaceholdersType } from '../types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport classNames from 'classnames';\nimport { getUniqueId } from '../../../utils/idGenerator';\nimport './PayToComponent.scss';\n\nexport type PayToInputOption = 'payid-option' | 'bsb-option';\n\nexport type PayToComponentData = { selectedInput: PayToInputOption };\n\nexport interface PayToComponentProps {\n showPayButton: boolean;\n onChange: (e) => void;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n data: PayToData;\n placeholders: PayToPlaceholdersType;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n}\n\nexport default function PayToComponent(props: PayToComponentProps) {\n const { i18n } = useCoreContext();\n\n const [status, setStatus] = useState<UIElementStatus>('ready');\n\n // Generate unique IDs for the input sections\n const payidInputId = useMemo(() => getUniqueId('payid-input'), []);\n const bsbInputId = useMemo(() => getUniqueId('bsb-input'), []);\n\n const inputOptions: SegmentedControlOptions<PayToInputOption> = useMemo(\n () => [\n {\n value: 'payid-option',\n label: 'PayID',\n id: 'payid-option',\n controls: payidInputId\n },\n {\n value: 'bsb-option',\n label: i18n.get('payto.bsb.option.label'),\n id: 'bsb-option',\n controls: bsbInputId\n }\n ],\n [i18n, payidInputId, bsbInputId]\n );\n\n const defaultOption = inputOptions[0].value;\n const [selectedInput, setSelectedInput] = useState<PayToInputOption>(defaultOption);\n\n const onChange = ({ data, valid, errors, isValid }) => {\n // merge selected input to as data, this keep the input layers untouched\n props.onChange({ data: { selectedInput: selectedInput, ...data }, valid, errors, isValid });\n };\n\n return (\n <div\n className={classNames({\n 'adyen-checkout__payto-component': true,\n 'adyen-checkout__payto-component--loading': status === 'loading'\n })}\n >\n <SegmentedControl selectedValue={selectedInput} options={inputOptions} onChange={setSelectedInput} />\n {selectedInput === 'payid-option' && (\n <PayIDInput\n id={payidInputId}\n status={status}\n setStatus={setStatus}\n setComponentRef={props.setComponentRef}\n onChange={onChange}\n defaultData={props.data}\n placeholders={props.placeholders}\n />\n )}\n {selectedInput === 'bsb-option' && (\n <BSBInput\n id={bsbInputId}\n status={status}\n setStatus={setStatus}\n setComponentRef={props.setComponentRef}\n onChange={onChange}\n defaultData={props.data}\n placeholders={props.placeholders}\n />\n )}\n\n {props.showPayButton && props.payButton({ status, label: i18n.get('continue') })}\n </div>\n );\n}\n"],"names":["PayToComponent","props","i18n","useCoreContext","status","setStatus","useState","payidInputId","useMemo","getUniqueId","bsbInputId","inputOptions","value","label","id","controls","get","defaultOption","selectedInput","setSelectedInput","onChange","data","valid","errors","isValid","_object_spread","h","div","className","classNames","SegmentedControl","selectedValue","options","PayIDInput","setComponentRef","defaultData","placeholders","BSBInput","showPayButton","payButton"],"mappings":"q4BA2Be,SAASA,EAAeC,GACnC,MAAMC,KAAEA,GAASC,KAEVC,EAAQC,GAAaC,EAA0B,SAGhDC,EAAeC,EAAQ,IAAMC,EAAY,eAAgB,IACzDC,EAAaF,EAAQ,IAAMC,EAAY,aAAc,IAErDE,EAA0DH,EAC5D,IAAM,CACF,CACII,MAAO,eACPC,MAAO,QACPC,GAAI,eACJC,SAAUR,GAEd,CACIK,MAAO,aACPC,MAAOX,EAAKc,IAAI,0BAChBF,GAAI,aACJC,SAAUL,IAGlB,CAACR,EAAMK,EAAcG,IAGnBO,EAAgBN,EAAa,GAAGC,OAC/BM,EAAeC,GAAoBb,EAA2BW,GAE/DG,EAAW,EAAGC,OAAMC,QAAOC,SAAQC,cAErCvB,EAAMmB,SAAS,CAAEC,KAAMI,EAAA,CAAEP,cAAeA,GAAkBG,GAAQC,QAAOC,SAAQC,aAGrF,OACIE,EAACC,MAAAA,CACGC,UAAWC,EAAW,CAClB,mCAAmC,EACnC,2CAAuD,YAAXzB,KAGhDsB,EAACI,EAAAA,CAAiBC,cAAeb,EAAec,QAASrB,EAAcS,SAAUD,IAC9D,iBAAlBD,GACGQ,EAACO,EAAAA,CACGnB,GAAIP,EACJH,OAAQA,EACRC,UAAWA,EACX6B,gBAAiBjC,EAAMiC,gBACvBd,SAAUA,EACVe,YAAalC,EAAMoB,KACnBe,aAAcnC,EAAMmC,eAGT,eAAlBlB,GACGQ,EAACW,EAAAA,CACGvB,GAAIJ,EACJN,OAAQA,EACRC,UAAWA,EACX6B,gBAAiBjC,EAAMiC,gBACvBd,SAAUA,EACVe,YAAalC,EAAMoB,KACnBe,aAAcnC,EAAMmC,eAI3BnC,EAAMqC,eAAiBrC,EAAMsC,UAAU,CAAEnC,SAAQS,MAAOX,EAAKc,IAAI,cAG9E"}
1
+ {"version":3,"file":"PayToComponent.js","sources":["../../../../../src/components/PayTo/components/PayToComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { SegmentedControl } from '../../internal/SegmentedControl';\nimport { useMemo, useState } from 'preact/hooks';\nimport { SegmentedControlOptions } from '../../internal/SegmentedControl/SegmentedControl';\nimport PayIDInput from './PayIDInput';\nimport BSBInput from './BSBInput';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { ComponentMethodsRef, UIElementStatus } from '../../internal/UIElement/types';\nimport { PayToData, PayToPlaceholdersType } from '../types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport classNames from 'classnames';\nimport { getUniqueId } from '../../../utils/idGenerator';\nimport './PayToComponent.scss';\n\nexport type PayToInputOption = 'payid-option' | 'bsb-option';\n\nexport type PayToComponentData = { selectedInput: PayToInputOption };\n\nexport interface PayToComponentProps {\n showPayButton: boolean;\n onChange: (e) => void;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n data: PayToData;\n placeholders: PayToPlaceholdersType;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n}\n\nexport default function PayToComponent(props: PayToComponentProps) {\n const { i18n } = useCoreContext();\n\n const [status, setStatus] = useState<UIElementStatus>('ready');\n\n // Generate unique IDs for the input sections\n const payidInputId = useMemo(() => getUniqueId('payid-input'), []);\n const bsbInputId = useMemo(() => getUniqueId('bsb-input'), []);\n\n const inputOptions: SegmentedControlOptions<PayToInputOption> = useMemo(\n () => [\n {\n value: 'payid-option',\n label: 'PayID',\n id: 'payid-option',\n controls: payidInputId\n },\n {\n value: 'bsb-option',\n label: i18n.get('payto.bsb.option.label'),\n id: 'bsb-option',\n controls: bsbInputId\n }\n ],\n [i18n, payidInputId, bsbInputId]\n );\n\n const defaultOption = inputOptions[0].value;\n const [selectedInput, setSelectedInput] = useState<PayToInputOption>(defaultOption);\n\n const onChange = ({ data, valid, errors, isValid }) => {\n // merge selected input to as data, this keep the input layers untouched\n props.onChange({ data: { selectedInput: selectedInput, ...data }, valid, errors, isValid });\n };\n\n return (\n <div\n className={classNames({\n 'adyen-checkout__payto-component': true,\n 'adyen-checkout__payto-component--loading': status === 'loading'\n })}\n >\n <SegmentedControl selectedValue={selectedInput} options={inputOptions} onChange={setSelectedInput} />\n {selectedInput === 'payid-option' && (\n <PayIDInput\n id={payidInputId}\n status={status}\n setStatus={setStatus}\n setComponentRef={props.setComponentRef}\n onChange={onChange}\n defaultData={props.data}\n placeholders={props.placeholders}\n />\n )}\n {selectedInput === 'bsb-option' && (\n <BSBInput\n id={bsbInputId}\n status={status}\n setStatus={setStatus}\n setComponentRef={props.setComponentRef}\n onChange={onChange}\n defaultData={props.data}\n placeholders={props.placeholders}\n />\n )}\n\n {props.showPayButton && props.payButton({ status, label: i18n.get('continue') })}\n </div>\n );\n}\n"],"names":["PayToComponent","props","i18n","useCoreContext","status","setStatus","useState","payidInputId","useMemo","getUniqueId","bsbInputId","inputOptions","value","label","id","controls","get","defaultOption","selectedInput","setSelectedInput","onChange","data","valid","errors","isValid","_object_spread","h","div","className","classNames","SegmentedControl","selectedValue","options","PayIDInput","setComponentRef","defaultData","placeholders","BSBInput","showPayButton","payButton"],"mappings":"y5BA2Be,SAASA,EAAeC,GACnC,MAAMC,KAAEA,GAASC,KAEVC,EAAQC,GAAaC,EAA0B,SAGhDC,EAAeC,EAAQ,IAAMC,EAAY,eAAgB,IACzDC,EAAaF,EAAQ,IAAMC,EAAY,aAAc,IAErDE,EAA0DH,EAC5D,IAAM,CACF,CACII,MAAO,eACPC,MAAO,QACPC,GAAI,eACJC,SAAUR,GAEd,CACIK,MAAO,aACPC,MAAOX,EAAKc,IAAI,0BAChBF,GAAI,aACJC,SAAUL,IAGlB,CAACR,EAAMK,EAAcG,IAGnBO,EAAgBN,EAAa,GAAGC,OAC/BM,EAAeC,GAAoBb,EAA2BW,GAE/DG,EAAW,EAAGC,OAAMC,QAAOC,SAAQC,cAErCvB,EAAMmB,SAAS,CAAEC,KAAMI,EAAA,CAAEP,cAAeA,GAAkBG,GAAQC,QAAOC,SAAQC,aAGrF,OACIE,EAACC,MAAAA,CACGC,UAAWC,EAAW,CAClB,mCAAmC,EACnC,2CAAuD,YAAXzB,KAGhDsB,EAACI,EAAAA,CAAiBC,cAAeb,EAAec,QAASrB,EAAcS,SAAUD,IAC9D,iBAAlBD,GACGQ,EAACO,EAAAA,CACGnB,GAAIP,EACJH,OAAQA,EACRC,UAAWA,EACX6B,gBAAiBjC,EAAMiC,gBACvBd,SAAUA,EACVe,YAAalC,EAAMoB,KACnBe,aAAcnC,EAAMmC,eAGT,eAAlBlB,GACGQ,EAACW,EAAAA,CACGvB,GAAIJ,EACJN,OAAQA,EACRC,UAAWA,EACX6B,gBAAiBjC,EAAMiC,gBACvBd,SAAUA,EACVe,YAAalC,EAAMoB,KACnBe,aAAcnC,EAAMmC,eAI3BnC,EAAMqC,eAAiBrC,EAAMsC,UAAU,CAAEnC,SAAQS,MAAOX,EAAKc,IAAI,cAG9E"}
@@ -1,2 +1,2 @@
1
- import{createElement as t,Fragment as e}from"../../external/preact/dist/preact.js";import{UIElement as o}from"../internal/UIElement/UIElement.js";import{TxVariants as n}from"../tx-variants.js";import r from"./components/PreAuthorizedDebitCanadaComponent.js";import{SettlementInfo as s}from"./components/SettlementInfo.js";import a from"../internal/RedirectButton/RedirectButton.js";import"../internal/Button/Button.js";import"../../core/Context/CoreProvider.js";import{payAmountLabel as i}from"../internal/PayButton/utils.js";function p(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function l(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),n.forEach(function(e){p(t,e,o[e])})}return t}class m extends o{formatData(){return!!this.props.storedPaymentMethodId?{paymentMethod:{type:m.type,storedPaymentMethodId:this.props.storedPaymentMethodId}}:l({paymentMethod:{type:m.type,ownerName:this.state.data.ownerName,bankAccountNumber:this.state.data.bankAccountNumber,bankCode:this.state.data.bankCode,bankLocationId:this.state.data.bankLocationId}},this.state.storePaymentMethod&&{storePaymentMethod:this.state.storePaymentMethod})}formatProps(t){var e,o,n;return l({enableStoreDetails:null!==(n=null===(o=t.session)||void 0===o||null===(e=o.configuration)||void 0===e?void 0:e.enableStoreDetails)&&void 0!==n?n:t.enableStoreDetails},t)}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.lastFour?`•••• ${this.props.lastFour}`:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.label:""}componentToRender(){var o;return this.props.storedPaymentMethodId?t(e,null,t(s,null),t(a,{showPayButton:this.props.showPayButton,icon:null===(o=this.resources)||void 0===o?void 0:o.getImage({imageFolder:"components/"})("bento_lock"),label:i(this.props.i18n,this.props.amount),name:this.displayName,amount:this.props.amount,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}})):t(r,{onChange:this.setState,payButton:this.payButton,showPayButton:this.props.showPayButton,placeholders:this.props.placeholders,setComponentRef:this.setComponentRef,showContextualElement:this.props.showContextualElement,enableStoreDetails:this.props.enableStoreDetails})}}p(m,"type",n.eft_directdebit_CA);export{m as PreAuthorizedDebitCanada,m as default};
1
+ import{createElement as t,Fragment as e}from"../../external/preact/dist/preact.js";import{UIElement as o}from"../internal/UIElement/UIElement.js";import{TxVariants as n}from"../tx-variants.js";import r from"./components/PreAuthorizedDebitCanadaComponent.js";import{SettlementInfo as s}from"./components/SettlementInfo.js";import a from"../internal/RedirectButton/RedirectButton.js";import"../internal/Button/Button.js";import"../../core/Context/CoreProvider.js";import{payAmountLabel as i}from"../internal/PayButton/utils.js";function p(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function l(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),n.forEach(function(e){p(t,e,o[e])})}return t}class m extends o{formatData(){return!!this.props.storedPaymentMethodId?{paymentMethod:{type:m.type,storedPaymentMethodId:this.props.storedPaymentMethodId}}:l({paymentMethod:{type:m.type,ownerName:this.state.data.ownerName,bankAccountNumber:this.state.data.bankAccountNumber,bankCode:this.state.data.bankCode,bankLocationId:this.state.data.bankLocationId}},this.state.storePaymentMethod&&{storePaymentMethod:this.state.storePaymentMethod})}formatProps(t){var e,o,n;return l({enableStoreDetails:null!==(e=null===(n=t.session)||void 0===n||null===(o=n.configuration)||void 0===o?void 0:o.enableStoreDetails)&&void 0!==e?e:t.enableStoreDetails},t)}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.lastFour?`•••• ${this.props.lastFour}`:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.label:""}componentToRender(){var o;return this.props.storedPaymentMethodId?t(e,null,t(s,null),t(a,{showPayButton:this.props.showPayButton,icon:null===(o=this.resources)||void 0===o?void 0:o.getImage({imageFolder:"components/"})("bento_lock"),label:i(this.props.i18n,this.props.amount),name:this.displayName,amount:this.props.amount,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}})):t(r,{onChange:this.setState,payButton:this.payButton,showPayButton:this.props.showPayButton,placeholders:this.props.placeholders,setComponentRef:this.setComponentRef,showContextualElement:this.props.showContextualElement,enableStoreDetails:this.props.enableStoreDetails})}}p(m,"type",n.eft_directdebit_CA);export{m as PreAuthorizedDebitCanada,m as default};
2
2
  //# sourceMappingURL=PreAuthorizedDebitCanada.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreAuthorizedDebitCanada.js","sources":["../../../../src/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.tsx"],"sourcesContent":["import { h, Fragment } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { TxVariants } from '../tx-variants';\nimport PreAuthorizedDebitCanadaComponent from './components/PreAuthorizedDebitCanadaComponent';\nimport { SettlementInfo } from './components/SettlementInfo';\nimport RedirectButton from '../internal/RedirectButton';\nimport { payAmountLabel } from '../internal/PayButton';\n\nimport type { PreAuthorizedDebitCanadaConfiguration } from './types';\n\nexport class PreAuthorizedDebitCanada extends UIElement<PreAuthorizedDebitCanadaConfiguration> {\n public static type = TxVariants.eft_directdebit_CA;\n\n public override formatData() {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n if (recurringPayment) {\n return {\n paymentMethod: {\n type: PreAuthorizedDebitCanada.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: PreAuthorizedDebitCanada.type,\n ownerName: this.state.data.ownerName,\n bankAccountNumber: this.state.data.bankAccountNumber,\n bankCode: this.state.data.bankCode,\n bankLocationId: this.state.data.bankLocationId\n },\n ...(this.state.storePaymentMethod && { storePaymentMethod: this.state.storePaymentMethod })\n };\n }\n\n public override formatProps(props: PreAuthorizedDebitCanadaConfiguration): PreAuthorizedDebitCanadaConfiguration {\n return {\n enableStoreDetails: props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails,\n ...props\n };\n }\n\n public override get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n public override get displayName(): string {\n if (this.props.storedPaymentMethodId && this.props.lastFour) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name;\n }\n\n public override get additionalInfo(): string {\n return this.props.storedPaymentMethodId ? this.props.label : '';\n }\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.storedPaymentMethodId ? (\n <Fragment>\n <SettlementInfo />\n <RedirectButton\n showPayButton={this.props.showPayButton}\n icon={this.resources?.getImage({ imageFolder: 'components/' })(`bento_lock`)}\n label={payAmountLabel(this.props.i18n, this.props.amount)}\n name={this.displayName}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </Fragment>\n ) : (\n <PreAuthorizedDebitCanadaComponent\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n placeholders={this.props.placeholders}\n setComponentRef={this.setComponentRef}\n showContextualElement={this.props.showContextualElement}\n enableStoreDetails={this.props.enableStoreDetails}\n />\n );\n }\n}\n\nexport default PreAuthorizedDebitCanada;\n"],"names":["PreAuthorizedDebitCanada","UIElement","formatData","this","props","storedPaymentMethodId","paymentMethod","type","_object_spread","ownerName","state","data","bankAccountNumber","bankCode","bankLocationId","storePaymentMethod","formatProps","enableStoreDetails","session","configuration","isValid","displayName","lastFour","name","additionalInfo","label","componentToRender","_this_resources","h","Fragment","SettlementInfo","RedirectButton","showPayButton","icon","resources","getImage","imageFolder","payAmountLabel","i18n","amount","payButton","onSubmit","submit","ref","componentRef","PreAuthorizedDebitCanadaComponent","onChange","setState","placeholders","setComponentRef","showContextualElement","_define_property","TxVariants","eft_directdebit_CA"],"mappings":"08BAUO,MAAMA,UAAiCC,EAG1BC,UAAAA,GAGZ,QAF2BC,KAAKC,MAAMC,sBAG3B,CACHC,cAAe,CACXC,KAAMP,EAAyBO,KAC/BF,sBAAuBF,KAAKC,MAAMC,wBAKvCG,EAAA,CACHF,cAAe,CACXC,KAAMP,EAAyBO,KAC/BE,UAAWN,KAAKO,MAAMC,KAAKF,UAC3BG,kBAAmBT,KAAKO,MAAMC,KAAKC,kBACnCC,SAAUV,KAAKO,MAAMC,KAAKE,SAC1BC,eAAgBX,KAAKO,MAAMC,KAAKG,iBAEhCX,KAAKO,MAAMK,oBAAsB,CAAEA,mBAAoBZ,KAAKO,MAAMK,oBAE9E,CAEgBC,WAAAA,CAAYZ,OAEAA,EAAAA,EAAAA,EADxB,OAAOI,EAAA,CACHS,2BAAoBb,EAAa,QAAbA,EAAAA,EAAMc,mBAANd,GAA4B,QAA5BA,EAAAA,EAAee,yBAAff,SAAAA,EAA8Ba,0BAA9Bb,IAAAA,EAAAA,EAAoDA,EAAMa,oBAC3Eb,EAEX,CAEA,WAAoBgB,GAChB,QAAIjB,KAAKC,MAAMC,yBAINF,KAAKO,MAAMU,OACxB,CAEA,eAAoBC,GAChB,OAAIlB,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMkB,SACxC,QAAQnB,KAAKC,MAAMkB,WAGvBnB,KAAKC,MAAMmB,IACtB,CAEA,kBAAoBC,GAChB,OAAOrB,KAAKC,MAAMC,sBAAwBF,KAAKC,MAAMqB,MAAQ,EACjE,CAEmBC,iBAAAA,GAMG,IAAAC,EALlB,OAAOxB,KAAKC,MAAMC,sBACduB,EAACC,EAAAA,KACGD,EAACE,EAAAA,MACDF,EAACG,EAAAA,CACGC,cAAe7B,KAAKC,MAAM4B,cAC1BC,KAAoB,QAAdN,EAAAxB,KAAK+B,iBAAL,IAAAP,OAAA,EAAAA,EAAgBQ,SAAS,CAAEC,YAAa,eAAxCT,CAAyD,cAC/DF,MAAOY,EAAelC,KAAKC,MAAMkC,KAAMnC,KAAKC,MAAMmC,QAClDhB,KAAMpB,KAAKkB,YACXkB,OAAQpC,KAAKC,MAAMmC,OACnBC,UAAWrC,KAAKqC,UAChBC,SAAUtC,KAAKuC,OACfC,IAAKA,IACDxC,KAAKyC,aAAeD,MAKhCf,EAACiB,EAAAA,CACGC,SAAU3C,KAAK4C,SACfP,UAAWrC,KAAKqC,UAChBR,cAAe7B,KAAKC,MAAM4B,cAC1BgB,aAAc7C,KAAKC,MAAM4C,aACzBC,gBAAiB9C,KAAK8C,gBACtBC,sBAAuB/C,KAAKC,MAAM8C,sBAClCjC,mBAAoBd,KAAKC,MAAMa,oBAG3C,EAjFAkC,EADSnD,EACKO,OAAO6C,EAAWC"}
1
+ {"version":3,"file":"PreAuthorizedDebitCanada.js","sources":["../../../../src/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.tsx"],"sourcesContent":["import { h, Fragment } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { TxVariants } from '../tx-variants';\nimport PreAuthorizedDebitCanadaComponent from './components/PreAuthorizedDebitCanadaComponent';\nimport { SettlementInfo } from './components/SettlementInfo';\nimport RedirectButton from '../internal/RedirectButton';\nimport { payAmountLabel } from '../internal/PayButton';\n\nimport type { PreAuthorizedDebitCanadaConfiguration } from './types';\n\nexport class PreAuthorizedDebitCanada extends UIElement<PreAuthorizedDebitCanadaConfiguration> {\n public static type = TxVariants.eft_directdebit_CA;\n\n public override formatData() {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n if (recurringPayment) {\n return {\n paymentMethod: {\n type: PreAuthorizedDebitCanada.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: PreAuthorizedDebitCanada.type,\n ownerName: this.state.data.ownerName,\n bankAccountNumber: this.state.data.bankAccountNumber,\n bankCode: this.state.data.bankCode,\n bankLocationId: this.state.data.bankLocationId\n },\n ...(this.state.storePaymentMethod && { storePaymentMethod: this.state.storePaymentMethod })\n };\n }\n\n public override formatProps(props: PreAuthorizedDebitCanadaConfiguration): PreAuthorizedDebitCanadaConfiguration {\n return {\n enableStoreDetails: props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails,\n ...props\n };\n }\n\n public override get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n public override get displayName(): string {\n if (this.props.storedPaymentMethodId && this.props.lastFour) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name;\n }\n\n public override get additionalInfo(): string {\n return this.props.storedPaymentMethodId ? this.props.label : '';\n }\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.storedPaymentMethodId ? (\n <Fragment>\n <SettlementInfo />\n <RedirectButton\n showPayButton={this.props.showPayButton}\n icon={this.resources?.getImage({ imageFolder: 'components/' })(`bento_lock`)}\n label={payAmountLabel(this.props.i18n, this.props.amount)}\n name={this.displayName}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </Fragment>\n ) : (\n <PreAuthorizedDebitCanadaComponent\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n placeholders={this.props.placeholders}\n setComponentRef={this.setComponentRef}\n showContextualElement={this.props.showContextualElement}\n enableStoreDetails={this.props.enableStoreDetails}\n />\n );\n }\n}\n\nexport default PreAuthorizedDebitCanada;\n"],"names":["PreAuthorizedDebitCanada","UIElement","formatData","this","props","storedPaymentMethodId","paymentMethod","type","_object_spread","ownerName","state","data","bankAccountNumber","bankCode","bankLocationId","storePaymentMethod","formatProps","enableStoreDetails","_ref","session","configuration","isValid","displayName","lastFour","name","additionalInfo","label","componentToRender","_this_resources","h","Fragment","SettlementInfo","RedirectButton","showPayButton","icon","resources","getImage","imageFolder","payAmountLabel","i18n","amount","payButton","onSubmit","submit","ref","componentRef","PreAuthorizedDebitCanadaComponent","onChange","setState","placeholders","setComponentRef","showContextualElement","_define_property","TxVariants","eft_directdebit_CA"],"mappings":"08BAUO,MAAMA,UAAiCC,EAG1BC,UAAAA,GAGZ,QAF2BC,KAAKC,MAAMC,sBAG3B,CACHC,cAAe,CACXC,KAAMP,EAAyBO,KAC/BF,sBAAuBF,KAAKC,MAAMC,wBAKvCG,EAAA,CACHF,cAAe,CACXC,KAAMP,EAAyBO,KAC/BE,UAAWN,KAAKO,MAAMC,KAAKF,UAC3BG,kBAAmBT,KAAKO,MAAMC,KAAKC,kBACnCC,SAAUV,KAAKO,MAAMC,KAAKE,SAC1BC,eAAgBX,KAAKO,MAAMC,KAAKG,iBAEhCX,KAAKO,MAAMK,oBAAsB,CAAEA,mBAAoBZ,KAAKO,MAAMK,oBAE9E,CAEgBC,WAAAA,CAAYZ,SAEAA,EAAAA,EADxB,OAAOI,EAAA,CACHS,mBAAoE,QAAlDC,UAAEd,EAAAA,EAAMe,eAANf,IAAAA,WAAAA,EAAAA,EAAegB,qBAAfhB,IAAAA,OAAAA,EAAAA,EAA8Ba,0BAAkB,IAAAC,EAAAA,EAAId,EAAMa,oBAC3Eb,EAEX,CAEA,WAAoBiB,GAChB,QAAIlB,KAAKC,MAAMC,yBAINF,KAAKO,MAAMW,OACxB,CAEA,eAAoBC,GAChB,OAAInB,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMmB,SACxC,QAAQpB,KAAKC,MAAMmB,WAGvBpB,KAAKC,MAAMoB,IACtB,CAEA,kBAAoBC,GAChB,OAAOtB,KAAKC,MAAMC,sBAAwBF,KAAKC,MAAMsB,MAAQ,EACjE,CAEmBC,iBAAAA,GAMG,IAAAC,EALlB,OAAOzB,KAAKC,MAAMC,sBACdwB,EAACC,EAAAA,KACGD,EAACE,EAAAA,MACDF,EAACG,EAAAA,CACGC,cAAe9B,KAAKC,MAAM6B,cAC1BC,KAAoB,QAAdN,EAAAzB,KAAKgC,iBAAL,IAAAP,OAAA,EAAAA,EAAgBQ,SAAS,CAAEC,YAAa,eAAxCT,CAAyD,cAC/DF,MAAOY,EAAenC,KAAKC,MAAMmC,KAAMpC,KAAKC,MAAMoC,QAClDhB,KAAMrB,KAAKmB,YACXkB,OAAQrC,KAAKC,MAAMoC,OACnBC,UAAWtC,KAAKsC,UAChBC,SAAUvC,KAAKwC,OACfC,IAAKA,IACDzC,KAAK0C,aAAeD,MAKhCf,EAACiB,EAAAA,CACGC,SAAU5C,KAAK6C,SACfP,UAAWtC,KAAKsC,UAChBR,cAAe9B,KAAKC,MAAM6B,cAC1BgB,aAAc9C,KAAKC,MAAM6C,aACzBC,gBAAiB/C,KAAK+C,gBACtBC,sBAAuBhD,KAAKC,MAAM+C,sBAClClC,mBAAoBd,KAAKC,MAAMa,oBAG3C,EAjFAmC,EADSpD,EACKO,OAAO8C,EAAWC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreeDS2Challenge.js","sources":["../../../../src/components/ThreeDS2/ThreeDS2Challenge.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PrepareChallenge from './components/Challenge';\nimport { DEFAULT_CHALLENGE_WINDOW_SIZE, THREEDS2_CHALLENGE, THREEDS2_CHALLENGE_ERROR } from './constants';\nimport { existy } from '../../utils/commonUtils';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport { TxVariants } from '../tx-variants';\nimport { ChallengeResolveData, LegacyChallengeResolveData, ThreeDS2ChallengeConfiguration } from './types';\nimport AdyenCheckoutError, { API_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { ActionHandledReturnObject } from '../../types/global-types';\nimport { AnalyticsLogEvent, LogEventSubtype, LogEventType } from '../../core/Analytics/events/AnalyticsLogEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../core/Analytics/events/AnalyticsErrorEvent';\n\nclass ThreeDS2Challenge extends UIElement<ThreeDS2ChallengeConfiguration> {\n public static type = TxVariants.threeDS2Challenge;\n\n public static defaultProps = {\n dataKey: 'threeDSResult',\n size: DEFAULT_CHALLENGE_WINDOW_SIZE,\n type: THREEDS2_CHALLENGE\n };\n\n protected override beforeRender() {\n /* Do not send rendered events for ThreeDS2Challenge */\n }\n\n protected onActionHandled = (rtnObj: ActionHandledReturnObject) => {\n const event = new AnalyticsLogEvent({\n component: this.type,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.challengeIframeLoaded,\n message: rtnObj.actionDescription\n });\n\n this.submitAnalytics(event);\n\n super.onActionHandled(rtnObj);\n };\n\n onComplete(state: LegacyChallengeResolveData | ChallengeResolveData) {\n /**\n * Equals a call to onAdditionalDetails (as set in actionTypes.ts) for the regular, \"native\" flow.\n * However, if the action to create this component came from the 3DS2InMDFlow process it will instead equal a call to the onComplete callback\n * (as defined in the 3DS2InMDFlow and passed in as a config prop).\n */\n if (this.props.onComplete) {\n this.props.onComplete(state, this.elementRef);\n } else {\n super.onComplete(state);\n }\n\n this.unmount(); // re. fixing issue around back to back challenge calls\n }\n\n protected override componentToRender(): h.JSX.Element {\n // existy used because threeds2InMDFlow will send empty string for paymentData and we should be allowed to proceed with this\n if (!existy(this.props.paymentData)) {\n /**\n * The presence of props.isMDFlow indicates the action to create this component came from the threeds2InMDFlow process which passes (an empty) paymentsData.\n * The regular, \"native\" flow uses the authorisationToken from the 3DS2 action, which actionTypes.ts assigns to a property called paymentData\n */\n const dataTypeForError = hasOwnProperty(this.props, 'isMDFlow') ? 'paymentData' : 'authorisationToken';\n\n this.props.onError(new AdyenCheckoutError(API_ERROR, `No ${dataTypeForError} received. 3DS2 Challenge cannot proceed`));\n\n const event = new AnalyticsErrorEvent({\n component: this.type,\n code: ErrorEventCode.THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: Missing 'paymentData' property from threeDS2 action`\n });\n\n this.submitAnalytics(event);\n\n return null;\n }\n\n return (\n <PrepareChallenge\n {...this.props}\n onComplete={this.onComplete}\n onSubmitAnalytics={this.submitAnalytics}\n isMDFlow={this.props.paymentData.length < 15}\n onActionHandled={this.onActionHandled}\n />\n );\n }\n}\n\nexport default ThreeDS2Challenge;\n"],"names":["ThreeDS2Challenge","UIElement","beforeRender","onComplete","state","this","props","elementRef","super","unmount","componentToRender","existy","paymentData","dataTypeForError","hasOwnProperty","onError","AdyenCheckoutError","API_ERROR","event","AnalyticsErrorEvent","component","type","code","ErrorEventCode","THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA","errorType","ErrorEventType","apiError","message","THREEDS2_CHALLENGE_ERROR","submitAnalytics","h","PrepareChallenge","onSubmitAnalytics","isMDFlow","length","onActionHandled","args","_define_property","rtnObj","AnalyticsLogEvent","LogEventType","threeDS2","subType","LogEventSubtype","challengeIframeLoaded","actionDescription","TxVariants","threeDS2Challenge","defaultProps","dataKey","size","DEFAULT_CHALLENGE_WINDOW_SIZE","THREEDS2_CHALLENGE"],"mappings":"kwCAaA,MAAMA,UAA0BC,EASTC,YAAAA,GAEnB,CAeAC,UAAAA,CAAWC,GAMHC,KAAKC,MAAMH,WACXE,KAAKC,MAAMH,WAAWC,EAAOC,KAAKE,YAElCC,MAAML,WAAWC,GAGrBC,KAAKI,SACT,CAEmBC,iBAAAA,GAEf,IAAKC,EAAON,KAAKC,MAAMM,aAAc,CAKjC,MAAMC,EAAmBC,EAAeT,KAAKC,MAAO,YAAc,cAAgB,qBAElFD,KAAKC,MAAMS,QAAQ,IAAIC,EAAmBC,EAAW,MAAMJ,8CAE3D,MAAMK,EAAQ,IAAIC,EAAoB,CAClCC,UAAWf,KAAKgB,KAChBC,KAAMC,EAAeC,wCACrBC,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,2DAKhB,OAFAxB,KAAKyB,gBAAgBZ,GAEd,IACX,CAEA,OACIa,EAACC,EAAAA,oUAAAA,CAAAA,GACO3B,KAAKC,OAAK,CACdH,WAAYE,KAAKF,WACjB8B,kBAAmB5B,KAAKyB,gBACxBI,SAAU7B,KAAKC,MAAMM,YAAYuB,OAAS,GAC1CC,gBAAiB/B,KAAK+B,kBAGlC,mBAzEJ5B,SAAA6B,GAaIC,EAAAjC,KAAU+B,kBAAmBG,IACzB,MAAMrB,EAAQ,IAAIsB,EAAkB,CAChCpB,UAAWf,KAAKgB,KAChBA,KAAMoB,EAAaC,SACnBC,QAASC,EAAgBC,sBACzBjB,QAASW,EAAOO,oBAGpBzC,KAAKyB,gBAAgBZ,GAErBV,MAAM4B,gBAAgBG,MAtB1BD,EADEtC,EACYqB,OAAO0B,EAAWC,mBAEhCV,EAHEtC,EAGYiD,eAAe,CACzBC,QAAS,gBACTC,KAAMC,EACN/B,KAAMgC"}
1
+ {"version":3,"file":"ThreeDS2Challenge.js","sources":["../../../../src/components/ThreeDS2/ThreeDS2Challenge.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PrepareChallenge from './components/Challenge';\nimport { DEFAULT_CHALLENGE_WINDOW_SIZE, THREEDS2_CHALLENGE, THREEDS2_CHALLENGE_ERROR } from './constants';\nimport { existy } from '../../utils/commonUtils';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport { TxVariants } from '../tx-variants';\nimport { ChallengeResolveData, LegacyChallengeResolveData, ThreeDS2ChallengeConfiguration } from './types';\nimport AdyenCheckoutError, { API_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { ActionHandledReturnObject } from '../../types/global-types';\nimport { AnalyticsLogEvent, LogEventSubtype, LogEventType } from '../../core/Analytics/events/AnalyticsLogEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../core/Analytics/events/AnalyticsErrorEvent';\n\nclass ThreeDS2Challenge extends UIElement<ThreeDS2ChallengeConfiguration> {\n public static type = TxVariants.threeDS2Challenge;\n\n public static defaultProps = {\n dataKey: 'threeDSResult',\n size: DEFAULT_CHALLENGE_WINDOW_SIZE,\n type: THREEDS2_CHALLENGE\n };\n\n protected override beforeRender() {\n /* Do not send rendered events for ThreeDS2Challenge - it will have the same timestamp as the \"creq sent\" event */\n }\n\n protected onActionHandled = (rtnObj: ActionHandledReturnObject) => {\n const event = new AnalyticsLogEvent({\n component: this.type,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.challengeIframeLoaded,\n message: rtnObj.actionDescription\n });\n\n this.submitAnalytics(event);\n\n super.onActionHandled(rtnObj);\n };\n\n onComplete(state: LegacyChallengeResolveData | ChallengeResolveData) {\n /**\n * Equals a call to onAdditionalDetails (as set in actionTypes.ts) for the regular, \"native\" flow.\n * However, if the action to create this component came from the 3DS2InMDFlow process it will instead equal a call to the onComplete callback\n * (as defined in the 3DS2InMDFlow and passed in as a config prop).\n */\n if (this.props.onComplete) {\n this.props.onComplete(state, this.elementRef);\n } else {\n super.onComplete(state);\n }\n\n this.unmount(); // re. fixing issue around back to back challenge calls\n }\n\n protected override componentToRender(): h.JSX.Element {\n // existy used because threeds2InMDFlow will send empty string for paymentData and we should be allowed to proceed with this\n if (!existy(this.props.paymentData)) {\n /**\n * The presence of props.isMDFlow indicates the action to create this component came from the threeds2InMDFlow process which passes (an empty) paymentsData.\n * The regular, \"native\" flow uses the authorisationToken from the 3DS2 action, which actionTypes.ts assigns to a property called paymentData\n */\n const dataTypeForError = hasOwnProperty(this.props, 'isMDFlow') ? 'paymentData' : 'authorisationToken';\n\n this.props.onError(new AdyenCheckoutError(API_ERROR, `No ${dataTypeForError} received. 3DS2 Challenge cannot proceed`));\n\n const event = new AnalyticsErrorEvent({\n component: this.type,\n code: ErrorEventCode.THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: Missing 'paymentData' property from threeDS2 action`\n });\n\n this.submitAnalytics(event);\n\n return null;\n }\n\n return (\n <PrepareChallenge\n {...this.props}\n onComplete={this.onComplete}\n onSubmitAnalytics={this.submitAnalytics}\n isMDFlow={this.props.paymentData.length < 15}\n onActionHandled={this.onActionHandled}\n />\n );\n }\n}\n\nexport default ThreeDS2Challenge;\n"],"names":["ThreeDS2Challenge","UIElement","beforeRender","onComplete","state","this","props","elementRef","super","unmount","componentToRender","existy","paymentData","dataTypeForError","hasOwnProperty","onError","AdyenCheckoutError","API_ERROR","event","AnalyticsErrorEvent","component","type","code","ErrorEventCode","THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA","errorType","ErrorEventType","apiError","message","THREEDS2_CHALLENGE_ERROR","submitAnalytics","h","PrepareChallenge","onSubmitAnalytics","isMDFlow","length","onActionHandled","args","_define_property","rtnObj","AnalyticsLogEvent","LogEventType","threeDS2","subType","LogEventSubtype","challengeIframeLoaded","actionDescription","TxVariants","threeDS2Challenge","defaultProps","dataKey","size","DEFAULT_CHALLENGE_WINDOW_SIZE","THREEDS2_CHALLENGE"],"mappings":"kwCAaA,MAAMA,UAA0BC,EASTC,YAAAA,GAEnB,CAeAC,UAAAA,CAAWC,GAMHC,KAAKC,MAAMH,WACXE,KAAKC,MAAMH,WAAWC,EAAOC,KAAKE,YAElCC,MAAML,WAAWC,GAGrBC,KAAKI,SACT,CAEmBC,iBAAAA,GAEf,IAAKC,EAAON,KAAKC,MAAMM,aAAc,CAKjC,MAAMC,EAAmBC,EAAeT,KAAKC,MAAO,YAAc,cAAgB,qBAElFD,KAAKC,MAAMS,QAAQ,IAAIC,EAAmBC,EAAW,MAAMJ,8CAE3D,MAAMK,EAAQ,IAAIC,EAAoB,CAClCC,UAAWf,KAAKgB,KAChBC,KAAMC,EAAeC,wCACrBC,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,2DAKhB,OAFAxB,KAAKyB,gBAAgBZ,GAEd,IACX,CAEA,OACIa,EAACC,EAAAA,oUAAAA,CAAAA,GACO3B,KAAKC,OAAK,CACdH,WAAYE,KAAKF,WACjB8B,kBAAmB5B,KAAKyB,gBACxBI,SAAU7B,KAAKC,MAAMM,YAAYuB,OAAS,GAC1CC,gBAAiB/B,KAAK+B,kBAGlC,mBAzEJ5B,SAAA6B,GAaIC,EAAAjC,KAAU+B,kBAAmBG,IACzB,MAAMrB,EAAQ,IAAIsB,EAAkB,CAChCpB,UAAWf,KAAKgB,KAChBA,KAAMoB,EAAaC,SACnBC,QAASC,EAAgBC,sBACzBjB,QAASW,EAAOO,oBAGpBzC,KAAKyB,gBAAgBZ,GAErBV,MAAM4B,gBAAgBG,MAtB1BD,EADEtC,EACYqB,OAAO0B,EAAWC,mBAEhCV,EAHEtC,EAGYiD,eAAe,CACzBC,QAAS,gBACTC,KAAMC,EACN/B,KAAMgC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreeDS2DeviceFingerprint.js","sources":["../../../../src/components/ThreeDS2/ThreeDS2DeviceFingerprint.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PrepareFingerprint from './components/DeviceFingerprint';\nimport callSubmit3DS2Fingerprint from './callSubmit3DS2Fingerprint';\nimport { existy } from '../../utils/commonUtils';\nimport { TxVariants } from '../tx-variants';\nimport { FingerprintResolveData, LegacyFingerprintResolveData, ThreeDS2DeviceFingerprintConfiguration } from './types';\nimport AdyenCheckoutError, { API_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { THREEDS2_FINGERPRINT, THREEDS2_FINGERPRINT_ERROR } from './constants';\nimport { ActionHandledReturnObject } from '../../types/global-types';\nimport { AnalyticsLogEvent, LogEventSubtype, LogEventType } from '../../core/Analytics/events/AnalyticsLogEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../core/Analytics/events/AnalyticsErrorEvent';\n\nclass ThreeDS2DeviceFingerprint extends UIElement<ThreeDS2DeviceFingerprintConfiguration> {\n public static type = TxVariants.threeDS2Fingerprint;\n\n public static defaultProps = {\n dataKey: 'fingerprintResult',\n type: THREEDS2_FINGERPRINT\n };\n\n private callSubmit3DS2Fingerprint = callSubmit3DS2Fingerprint.bind(this); // New 3DS2 flow\n\n protected override beforeRender() {\n /* Do not send rendered events for ThreeDS2DeviceFingerprint */\n }\n\n protected onActionHandled = (rtnObj: ActionHandledReturnObject) => {\n const event = new AnalyticsLogEvent({\n component: this.type,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.fingerprintIframeLoaded,\n message: rtnObj.actionDescription\n });\n\n this.submitAnalytics(event);\n\n super.onActionHandled(rtnObj);\n };\n\n onComplete(state: LegacyFingerprintResolveData | FingerprintResolveData) {\n if (this.props.onComplete) {\n this.props.onComplete(state, this.elementRef);\n } else {\n super.onComplete(state);\n }\n\n this.unmount(); // re. fixing issue around back to back fingerprinting calls\n }\n\n protected override componentToRender(): h.JSX.Element {\n /**\n * In the regular components (aka \"native\") flow we can't proceed because something has gone wrong with the payment if paymentData is missing from the threeDS2 action.\n * In the MDFlow the paymentData is always present (albeit an empty string, which is why we use 'existy' since we should be allowed to proceed with this)\n */\n if (!existy(this.props.paymentData)) {\n this.props.onError(new AdyenCheckoutError(API_ERROR, `No paymentData received. 3DS2 Fingerprint cannot proceed`));\n\n // TODO - check logs to see if this *ever* happens\n const event = new AnalyticsErrorEvent({\n component: this.type,\n code: ErrorEventCode.THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Missing 'paymentData' property from threeDS2 action`\n });\n\n this.submitAnalytics(event);\n\n return null;\n }\n\n /**\n * this.props.isMDFlow indicates the action to create this component came from the 3DS2InMDFlow process and upon completion should call the\n * passed onComplete callback (as defined in the 3DS2InMDFlow) instead of the /submitThreeDS2Fingerprint endpoint for the regular, \"native\" flow\n */\n return (\n <PrepareFingerprint\n {...this.props}\n onComplete={this.props.isMDFlow ? this.onComplete : this.callSubmit3DS2Fingerprint}\n onSubmitAnalytics={this.submitAnalytics}\n isMDFlow={this.props.paymentData.length < 15}\n onActionHandled={this.onActionHandled}\n />\n );\n }\n}\n\nexport default ThreeDS2DeviceFingerprint;\n"],"names":["ThreeDS2DeviceFingerprint","UIElement","beforeRender","onComplete","state","this","props","elementRef","super","unmount","componentToRender","existy","paymentData","onError","AdyenCheckoutError","API_ERROR","event","AnalyticsErrorEvent","component","type","code","ErrorEventCode","THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA","errorType","ErrorEventType","apiError","message","THREEDS2_FINGERPRINT_ERROR","submitAnalytics","h","PrepareFingerprint","isMDFlow","callSubmit3DS2Fingerprint","onSubmitAnalytics","length","onActionHandled","args","_define_property","bind","rtnObj","AnalyticsLogEvent","LogEventType","threeDS2","subType","LogEventSubtype","fingerprintIframeLoaded","actionDescription","TxVariants","threeDS2Fingerprint","defaultProps","dataKey","THREEDS2_FINGERPRINT"],"mappings":"4tCAaA,MAAMA,UAAkCC,EAUjBC,YAAAA,GAEnB,CAeAC,UAAAA,CAAWC,GACHC,KAAKC,MAAMH,WACXE,KAAKC,MAAMH,WAAWC,EAAOC,KAAKE,YAElCC,MAAML,WAAWC,GAGrBC,KAAKI,SACT,CAEmBC,iBAAAA,GAKf,IAAKC,EAAON,KAAKC,MAAMM,aAAc,CACjCP,KAAKC,MAAMO,QAAQ,IAAIC,EAAmBC,EAAW,6DAGrD,MAAMC,EAAQ,IAAIC,EAAoB,CAClCC,UAAWb,KAAKc,KAChBC,KAAMC,EAAeC,wCACrBC,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,2DAKhB,OAFAtB,KAAKuB,gBAAgBZ,GAEd,IACX,CAMA,OACIa,EAACC,EAAAA,oUAAAA,CAAAA,GACOzB,KAAKC,OAAK,CACdH,WAAYE,KAAKC,MAAMyB,SAAW1B,KAAKF,WAAaE,KAAK2B,0BACzDC,kBAAmB5B,KAAKuB,gBACxBG,SAAU1B,KAAKC,MAAMM,YAAYsB,OAAS,GAC1CC,gBAAiB9B,KAAK8B,kBAGlC,mBAvEJ3B,SAAA4B,GAQIC,OAAQL,4BAA4BA,EAA0BM,KAAKjC,OAMnEgC,EAAAhC,KAAU8B,kBAAmBI,IACzB,MAAMvB,EAAQ,IAAIwB,EAAkB,CAChCtB,UAAWb,KAAKc,KAChBA,KAAMsB,EAAaC,SACnBC,QAASC,EAAgBC,wBACzBnB,QAASa,EAAOO,oBAGpBzC,KAAKuB,gBAAgBZ,GAErBR,MAAM2B,gBAAgBI,MAvB1BF,EADErC,EACYmB,OAAO4B,EAAWC,qBAEhCX,EAHErC,EAGYiD,eAAe,CACzBC,QAAS,oBACT/B,KAAMgC"}
1
+ {"version":3,"file":"ThreeDS2DeviceFingerprint.js","sources":["../../../../src/components/ThreeDS2/ThreeDS2DeviceFingerprint.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport PrepareFingerprint from './components/DeviceFingerprint';\nimport callSubmit3DS2Fingerprint from './callSubmit3DS2Fingerprint';\nimport { existy } from '../../utils/commonUtils';\nimport { TxVariants } from '../tx-variants';\nimport { FingerprintResolveData, LegacyFingerprintResolveData, ThreeDS2DeviceFingerprintConfiguration } from './types';\nimport AdyenCheckoutError, { API_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { THREEDS2_FINGERPRINT, THREEDS2_FINGERPRINT_ERROR } from './constants';\nimport { ActionHandledReturnObject } from '../../types/global-types';\nimport { AnalyticsLogEvent, LogEventSubtype, LogEventType } from '../../core/Analytics/events/AnalyticsLogEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../core/Analytics/events/AnalyticsErrorEvent';\n\nclass ThreeDS2DeviceFingerprint extends UIElement<ThreeDS2DeviceFingerprintConfiguration> {\n public static type = TxVariants.threeDS2Fingerprint;\n\n public static defaultProps = {\n dataKey: 'fingerprintResult',\n type: THREEDS2_FINGERPRINT\n };\n\n private callSubmit3DS2Fingerprint = callSubmit3DS2Fingerprint.bind(this); // New 3DS2 flow\n\n protected override beforeRender() {\n /* Do not send rendered events for ThreeDS2DeviceFingerprint - it will have the same timestamp as the \"threeDSMethodData sent\" event */\n }\n\n protected onActionHandled = (rtnObj: ActionHandledReturnObject) => {\n const event = new AnalyticsLogEvent({\n component: this.type,\n type: LogEventType.threeDS2,\n subType: LogEventSubtype.fingerprintIframeLoaded,\n message: rtnObj.actionDescription\n });\n\n this.submitAnalytics(event);\n\n super.onActionHandled(rtnObj);\n };\n\n onComplete(state: LegacyFingerprintResolveData | FingerprintResolveData) {\n if (this.props.onComplete) {\n this.props.onComplete(state, this.elementRef);\n } else {\n super.onComplete(state);\n }\n\n this.unmount(); // re. fixing issue around back to back fingerprinting calls\n }\n\n protected override componentToRender(): h.JSX.Element {\n /**\n * In the regular components (aka \"native\") flow we can't proceed because something has gone wrong with the payment if paymentData is missing from the threeDS2 action.\n * In the MDFlow the paymentData is always present (albeit an empty string, which is why we use 'existy' since we should be allowed to proceed with this)\n */\n if (!existy(this.props.paymentData)) {\n this.props.onError(new AdyenCheckoutError(API_ERROR, `No paymentData received. 3DS2 Fingerprint cannot proceed`));\n\n // TODO - check logs to see if this *ever* happens\n const event = new AnalyticsErrorEvent({\n component: this.type,\n code: ErrorEventCode.THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Missing 'paymentData' property from threeDS2 action`\n });\n\n this.submitAnalytics(event);\n\n return null;\n }\n\n /**\n * this.props.isMDFlow indicates the action to create this component came from the 3DS2InMDFlow process and upon completion should call the\n * passed onComplete callback (as defined in the 3DS2InMDFlow) instead of the /submitThreeDS2Fingerprint endpoint for the regular, \"native\" flow\n */\n return (\n <PrepareFingerprint\n {...this.props}\n onComplete={this.props.isMDFlow ? this.onComplete : this.callSubmit3DS2Fingerprint}\n onSubmitAnalytics={this.submitAnalytics}\n isMDFlow={this.props.paymentData.length < 15}\n onActionHandled={this.onActionHandled}\n />\n );\n }\n}\n\nexport default ThreeDS2DeviceFingerprint;\n"],"names":["ThreeDS2DeviceFingerprint","UIElement","beforeRender","onComplete","state","this","props","elementRef","super","unmount","componentToRender","existy","paymentData","onError","AdyenCheckoutError","API_ERROR","event","AnalyticsErrorEvent","component","type","code","ErrorEventCode","THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA","errorType","ErrorEventType","apiError","message","THREEDS2_FINGERPRINT_ERROR","submitAnalytics","h","PrepareFingerprint","isMDFlow","callSubmit3DS2Fingerprint","onSubmitAnalytics","length","onActionHandled","args","_define_property","bind","rtnObj","AnalyticsLogEvent","LogEventType","threeDS2","subType","LogEventSubtype","fingerprintIframeLoaded","actionDescription","TxVariants","threeDS2Fingerprint","defaultProps","dataKey","THREEDS2_FINGERPRINT"],"mappings":"4tCAaA,MAAMA,UAAkCC,EAUjBC,YAAAA,GAEnB,CAeAC,UAAAA,CAAWC,GACHC,KAAKC,MAAMH,WACXE,KAAKC,MAAMH,WAAWC,EAAOC,KAAKE,YAElCC,MAAML,WAAWC,GAGrBC,KAAKI,SACT,CAEmBC,iBAAAA,GAKf,IAAKC,EAAON,KAAKC,MAAMM,aAAc,CACjCP,KAAKC,MAAMO,QAAQ,IAAIC,EAAmBC,EAAW,6DAGrD,MAAMC,EAAQ,IAAIC,EAAoB,CAClCC,UAAWb,KAAKc,KAChBC,KAAMC,EAAeC,wCACrBC,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,2DAKhB,OAFAtB,KAAKuB,gBAAgBZ,GAEd,IACX,CAMA,OACIa,EAACC,EAAAA,oUAAAA,CAAAA,GACOzB,KAAKC,OAAK,CACdH,WAAYE,KAAKC,MAAMyB,SAAW1B,KAAKF,WAAaE,KAAK2B,0BACzDC,kBAAmB5B,KAAKuB,gBACxBG,SAAU1B,KAAKC,MAAMM,YAAYsB,OAAS,GAC1CC,gBAAiB9B,KAAK8B,kBAGlC,mBAvEJ3B,SAAA4B,GAQIC,OAAQL,4BAA4BA,EAA0BM,KAAKjC,OAMnEgC,EAAAhC,KAAU8B,kBAAmBI,IACzB,MAAMvB,EAAQ,IAAIwB,EAAkB,CAChCtB,UAAWb,KAAKc,KAChBA,KAAMsB,EAAaC,SACnBC,QAASC,EAAgBC,wBACzBnB,QAASa,EAAOO,oBAGpBzC,KAAKuB,gBAAgBZ,GAErBR,MAAM2B,gBAAgBI,MAvB1BF,EADErC,EACYmB,OAAO4B,EAAWC,qBAEhCX,EAHErC,EAGYiD,eAAe,CACzBC,QAAS,oBACT/B,KAAMgC"}
@@ -1,2 +1,2 @@
1
- import{httpPost as e}from"../../core/Services/http.js";import{pick as t}from"../../utils/commonUtils.js";import{THREEDS2_FINGERPRINT_SUBMIT as n}from"./constants.js";import{API_ERROR_CODE as r}from"../../core/Services/sessions/constants.js";import{AnalyticsErrorEvent as o,ErrorEventType as i,ErrorEventCode as s}from"../../core/Analytics/events/AnalyticsErrorEvent.js";function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c({data:c}){e({path:`v1/submitThreeDS2Fingerprint?token=${this.props.clientKey}`,loadingContext:this.props.loadingContext,errorLevel:"fatal",errorCode:r.submitThreeDS2Fingerprint},function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){a(e,t,n[t])})}return e}({},c)).then(e=>{var r,a;let c;if("completed"===e.type){const{details:t}=e;return e.details?this.onComplete({data:{details:t}}):(console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no details object in a response indicating either a "frictionless" flow, or a "refused" response. resData=',e),c=new o({component:"threeDS2Fingerprint",code:s.THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED,errorType:i.apiError,message:`${n}: no details object in a response indicating either a "frictionless" flow, or a "refused" response`}),void this.submitAnalytics(c))}if(!e.action)return console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no action object in a response indicating a "challenge". resData=',e),c=new o({component:"threeDS2Fingerprint",code:s.THREEDS2_NO_ACTION_FOR_CHALLENGE,errorType:i.apiError,message:`${n}: no action object in a response indicating a "challenge" flow`}),void this.submitAnalytics(c);var l;const p=null!==(l=this.props.elementRef)&&void 0!==l?l:this;return p?"threeDS2"===(null===(r=e.action)||void 0===r?void 0:r.type)?p.handleAction(e.action,t("challengeWindowSize").from(this.props)):"redirect"===(null===(a=e.action)||void 0===a?void 0:a.type)?p.handleAction(e.action):void 0:(console.debug("Handled Error::callSubmit3DS2Fingerprint::FAILED:: no actionHandler"),c=new o({component:"threeDS2Fingerprint",code:s.THREEDS2_NO_COMPONENT_FOR_ACTION,errorType:i.sdkError,message:`${n}: no component defined to handle the action response`}),void this.submitAnalytics(c))}).catch(e=>{this.handleError(e)})}export{c as default};
1
+ import{httpPost as e}from"../../core/Services/http.js";import{pick as t}from"../../utils/commonUtils.js";import{THREEDS2_FINGERPRINT_SUBMIT as n}from"./constants.js";import{API_ERROR_CODE as r}from"../../core/Services/sessions/constants.js";import{AnalyticsErrorEvent as o,ErrorEventType as i,ErrorEventCode as s}from"../../core/Analytics/events/AnalyticsErrorEvent.js";function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c({data:c}){e({path:`v1/submitThreeDS2Fingerprint?token=${this.props.clientKey}`,loadingContext:this.props.loadingContext,errorLevel:"fatal",errorCode:r.submitThreeDS2Fingerprint},function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){a(e,t,n[t])})}return e}({},c)).then(e=>{var r,a,c;let l;if("completed"===e.type){const{details:t}=e;return e.details?this.onComplete({data:{details:t}}):(console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no details object in a response indicating either a "frictionless" flow, or a "refused" response. resData=',e),l=new o({component:"threeDS2Fingerprint",code:s.THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED,errorType:i.apiError,message:`${n}: no details object in a response indicating either a "frictionless" flow, or a "refused" response`}),void this.submitAnalytics(l))}if(!e.action)return console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no action object in a response indicating a "challenge". resData=',e),l=new o({component:"threeDS2Fingerprint",code:s.THREEDS2_NO_ACTION_FOR_CHALLENGE,errorType:i.apiError,message:`${n}: no action object in a response indicating a "challenge" flow`}),void this.submitAnalytics(l);const p=null!==(r=this.props.elementRef)&&void 0!==r?r:this;return p?"threeDS2"===(null===(a=e.action)||void 0===a?void 0:a.type)?p.handleAction(e.action,t("challengeWindowSize").from(this.props)):"redirect"===(null===(c=e.action)||void 0===c?void 0:c.type)?p.handleAction(e.action):void 0:(console.debug("Handled Error::callSubmit3DS2Fingerprint::FAILED:: no actionHandler"),l=new o({component:"threeDS2Fingerprint",code:s.THREEDS2_NO_COMPONENT_FOR_ACTION,errorType:i.sdkError,message:`${n}: no component defined to handle the action response`}),void this.submitAnalytics(l))}).catch(e=>{this.handleError(e)})}export{c as default};
2
2
  //# sourceMappingURL=callSubmit3DS2Fingerprint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"callSubmit3DS2Fingerprint.js","sources":["../../../../src/components/ThreeDS2/callSubmit3DS2Fingerprint.ts"],"sourcesContent":["import { httpPost } from '../../core/Services/http';\nimport { pick } from '../../utils/commonUtils';\nimport { ThreeDS2FingerprintResponse } from './types';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { THREEDS2_FINGERPRINT_SUBMIT } from './constants';\nimport { API_ERROR_CODE } from '../../core/Services/sessions/constants';\nimport { AbstractAnalyticsEvent } from '../../core/Analytics/events/AbstractAnalyticsEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../core/Analytics/events/AnalyticsErrorEvent';\n\n/**\n * ThreeDS2DeviceFingerprint, onComplete, calls a new, internal, endpoint which\n * behaves like the /details endpoint but doesn't require the same credentials\n */\nexport default function callSubmit3DS2Fingerprint({ data }): void {\n httpPost<ThreeDS2FingerprintResponse>(\n {\n path: `v1/submitThreeDS2Fingerprint?token=${this.props.clientKey}`,\n loadingContext: this.props.loadingContext,\n errorLevel: 'fatal',\n errorCode: API_ERROR_CODE.submitThreeDS2Fingerprint\n },\n {\n ...data\n }\n )\n .then(resData => {\n let event: AbstractAnalyticsEvent;\n\n /**\n * Frictionless (no challenge) flow OR \"refused\" flow\n */\n if (resData.type === 'completed') {\n const { details } = resData;\n\n if (!resData.details) {\n console.debug(\n 'Handled Error::callSubmit3DS2Fingerprint::FAILED:: no details object in a response indicating either a \"frictionless\" flow, or a \"refused\" response. resData=',\n resData\n );\n\n event = new AnalyticsErrorEvent({\n component: 'threeDS2Fingerprint',\n code: ErrorEventCode.THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_FINGERPRINT_SUBMIT}: no details object in a response indicating either a \"frictionless\" flow, or a \"refused\" response`\n });\n\n this.submitAnalytics(event);\n\n return;\n }\n\n return this.onComplete({ data: { details } });\n }\n\n /**\n * If we don't have a type: \"completed\", then we expect an action, because we must be in a Challenge or Redirect flow\n */\n if (!resData.action) {\n console.debug(\n 'Handled Error::callSubmit3DS2Fingerprint::FAILED:: no action object in a response indicating a \"challenge\". resData=',\n resData\n );\n\n event = new AnalyticsErrorEvent({\n component: 'threeDS2Fingerprint',\n code: ErrorEventCode.THREEDS2_NO_ACTION_FOR_CHALLENGE,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_FINGERPRINT_SUBMIT}: no action object in a response indicating a \"challenge\" flow`\n });\n this.submitAnalytics(event);\n\n return;\n }\n\n // elementRef exists when the fingerprint component is created from the Dropin\n const actionHandler = this.props.elementRef ?? this;\n\n /**\n * We have an action but do we have a way to handle it?\n * TODO - check logs: do we ever *not* have an actionHandler?\n */\n if (!actionHandler) {\n console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no actionHandler');\n\n event = new AnalyticsErrorEvent({\n component: 'threeDS2Fingerprint',\n code: ErrorEventCode.THREEDS2_NO_COMPONENT_FOR_ACTION,\n errorType: ErrorEventType.sdkError,\n message: `${THREEDS2_FINGERPRINT_SUBMIT}: no component defined to handle the action response`\n });\n\n this.submitAnalytics(event);\n\n return;\n }\n\n /**\n * Challenge flow\n */\n if (resData.action?.type === 'threeDS2') {\n // Ensure challengeWindowSize is propagated if there was a (merchant defined) handleAction call proceeding this one that had it set as an option\n return actionHandler.handleAction(resData.action, pick('challengeWindowSize').from(this.props));\n }\n\n /**\n * Redirect flow (usecase: we thought we could do 3DS2 but it turns out we can't)\n * TODO - check logs: does this ever happen, anymore?\n */\n if (resData.action?.type === 'redirect') {\n return actionHandler.handleAction(resData.action);\n }\n })\n .catch((error: AdyenCheckoutError) => {\n this.handleError(error);\n });\n}\n"],"names":["callSubmit3DS2Fingerprint","data","httpPost","path","this","props","clientKey","loadingContext","errorLevel","errorCode","API_ERROR_CODE","submitThreeDS2Fingerprint","_object_spread","then","resData","event","type","details","onComplete","console","debug","AnalyticsErrorEvent","component","code","ErrorEventCode","THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED","errorType","ErrorEventType","apiError","message","THREEDS2_FINGERPRINT_SUBMIT","submitAnalytics","action","THREEDS2_NO_ACTION_FOR_CHALLENGE","_this_props_elementRef","actionHandler","elementRef","handleAction","pick","from","THREEDS2_NO_COMPONENT_FOR_ACTION","sdkError","catch","error","handleError"],"mappings":"0eAae,SAASA,GAA0BC,KAAEA,IAChDC,EACI,CACIC,KAAM,sCAAsCC,KAAKC,MAAMC,YACvDC,eAAgBH,KAAKC,MAAME,eAC3BC,WAAY,QACZC,UAAWC,EAAeC,6VAE9BC,CAAA,CAAA,EACOX,IAGNY,KAAKC,QA2EEA,EASAA,EAnFJ,IAAIC,EAKJ,GAAqB,cAAjBD,EAAQE,KAAsB,CAC9B,MAAMC,QAAEA,GAAYH,EAEpB,OAAKA,EAAQG,QAkBNb,KAAKc,WAAW,CAAEjB,KAAM,CAAEgB,cAjB7BE,QAAQC,MACJ,gKACAN,GAGJC,EAAQ,IAAIM,EAAoB,CAC5BC,UAAW,sBACXC,KAAMC,EAAeC,gDACrBC,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,6GAGhB1B,KAAK2B,gBAAgBhB,GAM7B,CAKA,IAAKD,EAAQkB,OAcT,OAbAb,QAAQC,MACJ,uHACAN,GAGJC,EAAQ,IAAIM,EAAoB,CAC5BC,UAAW,sBACXC,KAAMC,EAAeS,iCACrBP,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,yEAEhB1B,KAAK2B,gBAAgBhB,GAMH,IAAAmB,EAAtB,MAAMC,EAAqC,QAArBD,EAAA9B,KAAKC,MAAM+B,kBAAX,IAAAF,EAAAA,EAAyB9B,KAM/C,OAAK+B,EAkBwB,sBAAzBrB,EAAAA,EAAQkB,cAARlB,IAAAA,OAAAA,EAAAA,EAAgBE,MAETmB,EAAcE,aAAavB,EAAQkB,OAAQM,EAAK,uBAAuBC,KAAKnC,KAAKC,QAO/D,sBAAzBS,EAAAA,EAAQkB,cAARlB,IAAAA,OAAAA,EAAAA,EAAgBE,MACTmB,EAAcE,aAAavB,EAAQkB,aAD9C,GA1BIb,QAAQC,MAAM,uEAEdL,EAAQ,IAAIM,EAAoB,CAC5BC,UAAW,sBACXC,KAAMC,EAAegB,iCACrBd,UAAWC,EAAec,SAC1BZ,QAAS,GAAGC,+DAGhB1B,KAAK2B,gBAAgBhB,MAqB5B2B,MAAOC,IACJvC,KAAKwC,YAAYD,IAE7B"}
1
+ {"version":3,"file":"callSubmit3DS2Fingerprint.js","sources":["../../../../src/components/ThreeDS2/callSubmit3DS2Fingerprint.ts"],"sourcesContent":["import { httpPost } from '../../core/Services/http';\nimport { pick } from '../../utils/commonUtils';\nimport { ThreeDS2FingerprintResponse } from './types';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { THREEDS2_FINGERPRINT_SUBMIT } from './constants';\nimport { API_ERROR_CODE } from '../../core/Services/sessions/constants';\nimport { AbstractAnalyticsEvent } from '../../core/Analytics/events/AbstractAnalyticsEvent';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../core/Analytics/events/AnalyticsErrorEvent';\n\n/**\n * ThreeDS2DeviceFingerprint, onComplete, calls a new, internal, endpoint which\n * behaves like the /details endpoint but doesn't require the same credentials\n */\nexport default function callSubmit3DS2Fingerprint({ data }): void {\n httpPost<ThreeDS2FingerprintResponse>(\n {\n path: `v1/submitThreeDS2Fingerprint?token=${this.props.clientKey}`,\n loadingContext: this.props.loadingContext,\n errorLevel: 'fatal',\n errorCode: API_ERROR_CODE.submitThreeDS2Fingerprint\n },\n {\n ...data\n }\n )\n .then(resData => {\n let event: AbstractAnalyticsEvent;\n\n /**\n * Frictionless (no challenge) flow OR \"refused\" flow\n */\n if (resData.type === 'completed') {\n const { details } = resData;\n\n if (!resData.details) {\n console.debug(\n 'Handled Error::callSubmit3DS2Fingerprint::FAILED:: no details object in a response indicating either a \"frictionless\" flow, or a \"refused\" response. resData=',\n resData\n );\n\n event = new AnalyticsErrorEvent({\n component: 'threeDS2Fingerprint',\n code: ErrorEventCode.THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_FINGERPRINT_SUBMIT}: no details object in a response indicating either a \"frictionless\" flow, or a \"refused\" response`\n });\n\n this.submitAnalytics(event);\n\n return;\n }\n\n return this.onComplete({ data: { details } });\n }\n\n /**\n * If we don't have a type: \"completed\", then we expect an action, because we must be in a Challenge or Redirect flow\n */\n if (!resData.action) {\n console.debug(\n 'Handled Error::callSubmit3DS2Fingerprint::FAILED:: no action object in a response indicating a \"challenge\". resData=',\n resData\n );\n\n event = new AnalyticsErrorEvent({\n component: 'threeDS2Fingerprint',\n code: ErrorEventCode.THREEDS2_NO_ACTION_FOR_CHALLENGE,\n errorType: ErrorEventType.apiError,\n message: `${THREEDS2_FINGERPRINT_SUBMIT}: no action object in a response indicating a \"challenge\" flow`\n });\n this.submitAnalytics(event);\n\n return;\n }\n\n // elementRef exists when the fingerprint component is created from the Dropin\n const actionHandler = this.props.elementRef ?? this;\n\n /**\n * We have an action but do we have a way to handle it?\n * TODO - check logs: do we ever *not* have an actionHandler?\n */\n if (!actionHandler) {\n console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no actionHandler');\n\n event = new AnalyticsErrorEvent({\n component: 'threeDS2Fingerprint',\n code: ErrorEventCode.THREEDS2_NO_COMPONENT_FOR_ACTION,\n errorType: ErrorEventType.sdkError,\n message: `${THREEDS2_FINGERPRINT_SUBMIT}: no component defined to handle the action response`\n });\n\n this.submitAnalytics(event);\n\n return;\n }\n\n /**\n * Challenge flow\n */\n if (resData.action?.type === 'threeDS2') {\n // Ensure challengeWindowSize is propagated if there was a (merchant defined) handleAction call proceeding this one that had it set as an option\n return actionHandler.handleAction(resData.action, pick('challengeWindowSize').from(this.props));\n }\n\n /**\n * Redirect flow (usecase: we thought we could do 3DS2 but it turns out we can't)\n * TODO - check logs: does this ever happen, anymore?\n */\n if (resData.action?.type === 'redirect') {\n return actionHandler.handleAction(resData.action);\n }\n })\n .catch((error: AdyenCheckoutError) => {\n this.handleError(error);\n });\n}\n"],"names":["callSubmit3DS2Fingerprint","data","httpPost","path","this","props","clientKey","loadingContext","errorLevel","errorCode","API_ERROR_CODE","submitThreeDS2Fingerprint","_object_spread","then","resData","_this_props_elementRef","event","type","details","onComplete","console","debug","AnalyticsErrorEvent","component","code","ErrorEventCode","THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED","errorType","ErrorEventType","apiError","message","THREEDS2_FINGERPRINT_SUBMIT","submitAnalytics","action","THREEDS2_NO_ACTION_FOR_CHALLENGE","actionHandler","elementRef","handleAction","pick","from","THREEDS2_NO_COMPONENT_FOR_ACTION","sdkError","catch","error","handleError"],"mappings":"0eAae,SAASA,GAA0BC,KAAEA,IAChDC,EACI,CACIC,KAAM,sCAAsCC,KAAKC,MAAMC,YACvDC,eAAgBH,KAAKC,MAAME,eAC3BC,WAAY,QACZC,UAAWC,EAAeC,6VAE9BC,CAAA,CAAA,EACOX,IAGNY,KAAKC,IAmDoB,IAAAC,EAwBlBD,EASAA,EAnFJ,IAAIE,EAKJ,GAAqB,cAAjBF,EAAQG,KAAsB,CAC9B,MAAMC,QAAEA,GAAYJ,EAEpB,OAAKA,EAAQI,QAkBNd,KAAKe,WAAW,CAAElB,KAAM,CAAEiB,cAjB7BE,QAAQC,MACJ,gKACAP,GAGJE,EAAQ,IAAIM,EAAoB,CAC5BC,UAAW,sBACXC,KAAMC,EAAeC,gDACrBC,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,6GAGhB3B,KAAK4B,gBAAgBhB,GAM7B,CAKA,IAAKF,EAAQmB,OAcT,OAbAb,QAAQC,MACJ,uHACAP,GAGJE,EAAQ,IAAIM,EAAoB,CAC5BC,UAAW,sBACXC,KAAMC,EAAeS,iCACrBP,UAAWC,EAAeC,SAC1BC,QAAS,GAAGC,yEAEhB3B,KAAK4B,gBAAgBhB,GAMzB,MAAMmB,EAAqC,QAArBpB,EAAAX,KAAKC,MAAM+B,kBAAX,IAAArB,EAAAA,EAAyBX,KAM/C,OAAK+B,EAkBwB,sBAAzBrB,EAAAA,EAAQmB,cAARnB,IAAAA,OAAAA,EAAAA,EAAgBG,MAETkB,EAAcE,aAAavB,EAAQmB,OAAQK,EAAK,uBAAuBC,KAAKnC,KAAKC,QAO/D,sBAAzBS,EAAAA,EAAQmB,cAARnB,IAAAA,OAAAA,EAAAA,EAAgBG,MACTkB,EAAcE,aAAavB,EAAQmB,aAD9C,GA1BIb,QAAQC,MAAM,uEAEdL,EAAQ,IAAIM,EAAoB,CAC5BC,UAAW,sBACXC,KAAMC,EAAee,iCACrBb,UAAWC,EAAea,SAC1BX,QAAS,GAAGC,+DAGhB3B,KAAK4B,gBAAgBhB,MAqB5B0B,MAAOC,IACJvC,KAAKwC,YAAYD,IAE7B"}
@@ -1,2 +1,2 @@
1
- import{CHALLENGE_WINDOW_SIZES as e,DEFAULT_CHALLENGE_WINDOW_SIZE as t}from"../constants.js";import{getOrigin as r}from"../../../utils/getOrigin.js";import n from"../../../utils/base64.js";import{pick as s}from"../../../utils/commonUtils.js";const a=e=>"success"in e&&!e.success,o=e=>{const t=n.decode(e);if(t.success)try{return JSON.parse(t.data)}catch(e){return{success:!1,error:"Could not JSON parse token"}}return t},i=e=>{if(!e||!Object.keys(e).length)throw new Error("No (populated) data object to encode");return n.encode(JSON.stringify(e))},c=r=>{const n=1===r.length?`0${r}`:r;return Object.prototype.hasOwnProperty.call(e,n)?n:t},l=t=>e[c(t)],p=({token:e,size:t})=>{const n=o(e);if(a(n))return n;const{acsTransID:s,acsURL:i,messageVersion:p,threeDSNotificationURL:d,threeDSServerTransID:m}=n,u=r(d);return{acsURL:i,cReqData:{acsTransID:s,messageVersion:p,threeDSServerTransID:m,messageType:"CReq",challengeWindowSize:c(t)},iframeSizeArr:l(t),postMessageDomain:u}},d=({token:e,notificationURL:t})=>{const n=o(e);if(a(n))return n;const{threeDSMethodNotificationURL:s,threeDSMethodUrl:i,threeDSServerTransID:c}=n,l=t||s;return{threeDSServerTransID:c,threeDSMethodURL:i,threeDSMethodNotificationURL:l,postMessageDomain:r(l)}},m=(e,t,r)=>({data:{[e]:i({threeDSCompInd:t.threeDSCompInd}),paymentData:r}}),u=(e,t,r)=>({data:{details:{"threeds2.fingerprint":i(t)},paymentData:r}}),h=(e,t,r)=>({data:{details:{[e]:i({transStatus:t,authorisationToken:r})}}}),D=(e,t,r)=>({data:{details:{"threeds2.challengeResult":i({transStatus:t})},paymentData:r}}),S=e=>{let t=window.btoa(e).split("=")[0];return t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t},f=["elementRef"],g=["createFromAction","onAdditionalDetails"],R=(e,t)=>{if("fingerprint"===e){const e=t.elementRef?f:g,r=s(e).from(t);return r.showSpinner=!t.isDropin,r.statusType="loading",r}return{statusType:"custom",i18n:t.i18n,elementRef:t.elementRef}};export{h as createChallengeResolveData,m as createFingerprintResolveData,D as createOldChallengeResolveData,u as createOldFingerprintResolveData,o as decodeAndParseToken,S as encodeBase64URL,i as encodeObject,R as get3DS2FlowProps,l as getChallengeWindowSize,a as isErrorObject,p as prepareChallengeData,d as prepareFingerPrintData,c as validateChallengeWindowSize};
1
+ import{CHALLENGE_WINDOW_SIZES as e,DEFAULT_CHALLENGE_WINDOW_SIZE as t}from"../constants.js";import{getOrigin as r}from"../../../utils/getOrigin.js";import n from"../../../utils/base64.js";function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const s=e=>"success"in e&&!e.success,a=e=>{const t=n.decode(e);if(t.success)try{return JSON.parse(t.data)}catch(e){return{success:!1,error:"Could not JSON parse token"}}return t},i=e=>{if(!e||!Object.keys(e).length)throw new Error("No (populated) data object to encode");return n.encode(JSON.stringify(e))},c=r=>{const n=1===r.length?`0${r}`:r;return Object.prototype.hasOwnProperty.call(e,n)?n:t},l=t=>e[c(t)],u=({token:e,size:t})=>{const n=a(e);if(s(n))return n;const{acsTransID:o,acsURL:i,messageVersion:u,threeDSNotificationURL:p,threeDSServerTransID:f}=n,h=r(p);return{acsURL:i,cReqData:{acsTransID:o,messageVersion:u,threeDSServerTransID:f,messageType:"CReq",challengeWindowSize:c(t)},iframeSizeArr:l(t),postMessageDomain:h}},p=({token:e,notificationURL:t})=>{const n=a(e);if(s(n))return n;const{threeDSMethodNotificationURL:o,threeDSMethodUrl:i,threeDSServerTransID:c}=n,l=t||o;return{threeDSServerTransID:c,threeDSMethodURL:i,threeDSMethodNotificationURL:l,postMessageDomain:r(l)}},f=(e,t,r)=>({data:{[e]:i({threeDSCompInd:t.threeDSCompInd}),paymentData:r}}),h=(e,t,r)=>({data:{details:{"threeds2.fingerprint":i(t)},paymentData:r}}),d=(e,t,r)=>({data:{details:{[e]:i({transStatus:t,authorisationToken:r})}}}),m=(e,t,r)=>({data:{details:{"threeds2.challengeResult":i({transStatus:t})},paymentData:r}}),D=e=>{let t=window.btoa(e).split("=")[0];return t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t},S=(e,t)=>"fingerprint"===e?function(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){o(e,t,r[t])})}return e}({showSpinner:!t.isDropin,statusType:"loading"},t.elementRef&&{elementRef:t.elementRef}):{statusType:"custom",i18n:t.i18n,elementRef:t.elementRef};export{d as createChallengeResolveData,f as createFingerprintResolveData,m as createOldChallengeResolveData,h as createOldFingerprintResolveData,a as decodeAndParseToken,D as encodeBase64URL,i as encodeObject,S as get3DS2FlowProps,l as getChallengeWindowSize,s as isErrorObject,u as prepareChallengeData,p as prepareFingerPrintData,c as validateChallengeWindowSize};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../src/components/ThreeDS2/components/utils.ts"],"sourcesContent":["import { CHALLENGE_WINDOW_SIZES, DEFAULT_CHALLENGE_WINDOW_SIZE } from '../constants';\nimport { getOrigin } from '../../../utils/getOrigin';\nimport base64 from '../../../utils/base64';\nimport { ChallengeData, ThreeDS2Token, FingerPrintData, ResultObject, FingerprintResolveData, ChallengeResolveData } from '../types';\nimport { pick } from '../../../utils/commonUtils';\nimport { DecodeObject } from '../../../types/global-types';\nimport { ErrorObject } from '../../../core/Errors/types';\n\n/**\n * Check if we have been passed an ErrorObject because either base64 decoding or JSON.parse failed\n * @param obj -\n */\nexport const isErrorObject = (obj: ErrorObject | ThreeDS2Token): boolean => {\n return 'success' in obj && !obj.success;\n};\n\nexport const decodeAndParseToken = (token: string): ThreeDS2Token | ErrorObject => {\n const decodedToken: DecodeObject = base64.decode(token);\n if (decodedToken.success) {\n try {\n return JSON.parse(decodedToken.data) as ThreeDS2Token;\n } catch (e) {\n return {\n success: false,\n error: 'Could not JSON parse token'\n };\n }\n }\n\n // base64.decode failed - object will contain error msg: 'not base64' or 'malformed URI sequence'\n return decodedToken as ErrorObject;\n};\n\n/**\n * Performs JSON.stringify on passed object & and base64 encodes result\n * @param obj -\n * @returns encoded result\n */\nexport const encodeObject = obj => {\n if (!obj || !Object.keys(obj).length) {\n throw new Error('No (populated) data object to encode');\n }\n return base64.encode(JSON.stringify(obj));\n};\n\n/**\n * Accepts a size string for the challenge window & returns it if it is valid else returns a default value\n * @param sizeStr - the size string to check the validity of\n * @returns a valid size string\n */\nexport const validateChallengeWindowSize = (sizeStr: string): string => {\n const sizeString = sizeStr.length === 1 ? `0${sizeStr}` : sizeStr;\n const hasSize = Object.prototype.hasOwnProperty.call(CHALLENGE_WINDOW_SIZES, sizeString);\n return hasSize ? sizeString : DEFAULT_CHALLENGE_WINDOW_SIZE;\n};\n\n/**\n * Accepts a size string for the challenge window & returns the corresponding array of w/h values\n * @param sizeStr -\n */\nexport const getChallengeWindowSize = (sizeStr: string): string[] => CHALLENGE_WINDOW_SIZES[validateChallengeWindowSize(sizeStr)];\n\n/**\n * prepareChallengeData\n *\n * Requires an object containing the challenge parameters:\n * @param token - challengeToken string received from /submitThreeDS2Fingerprint, /details or /payments call: contains acsTransID, acsURL, messageVersion,\n * threeDSNotificationURL and threeDSServerTransID\n * @param size - one of five possible challenge window sizes\n */\nexport const prepareChallengeData = ({ token, size }): ChallengeData | ErrorObject => {\n const decodedChallengeToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedChallengeToken)) {\n return decodedChallengeToken as ErrorObject;\n }\n\n const { acsTransID, acsURL, messageVersion, threeDSNotificationURL, threeDSServerTransID } = decodedChallengeToken as ThreeDS2Token;\n const notificationURLOrigin = getOrigin(threeDSNotificationURL);\n\n return {\n acsURL,\n cReqData: {\n acsTransID,\n messageVersion,\n threeDSServerTransID,\n messageType: 'CReq',\n challengeWindowSize: validateChallengeWindowSize(size)\n },\n iframeSizeArr: getChallengeWindowSize(size),\n postMessageDomain: notificationURLOrigin\n } as ChallengeData;\n};\n\n/**\n * prepareFingerPrintData\n *\n * Requires an object containing the fingerprint parameters:\n * @param token - fingerprintToken string received from /payments call: contains threeDSMethodNotificationURL, threeDSMethodUrl and\n * threeDSServerTransID\n * @param notificationURL - the URL that the final notification is expected to be postMessaged from.\n *\n * NOTE: we don't expect merchants to alter the default by passing in a notificationURL of their own via props;\n * and if 3DS2 is being done via createFromAction or handleAction we won't accept it.\n * But if the merchant is using checkout.create('threeDS2DeviceFingerprint') we still support the fact that they might want to set their own\n * notificationURL (aka threeDSMethodNotificationURL)\n */\nexport const prepareFingerPrintData = ({ token, notificationURL }): FingerPrintData | ErrorObject => {\n const decodedFingerPrintToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedFingerPrintToken)) {\n return decodedFingerPrintToken as ErrorObject;\n }\n\n const { threeDSMethodNotificationURL, threeDSMethodUrl: threeDSMethodURL, threeDSServerTransID } = decodedFingerPrintToken as ThreeDS2Token;\n const receivedNotificationURL = notificationURL || threeDSMethodNotificationURL;\n const notificationURLOrigin = getOrigin(receivedNotificationURL);\n\n return {\n threeDSServerTransID,\n threeDSMethodURL,\n threeDSMethodNotificationURL: receivedNotificationURL,\n postMessageDomain: notificationURLOrigin\n } as FingerPrintData;\n};\n\nexport const createFingerprintResolveData = (dataKey: string, resultObj: ResultObject, paymentData: string): FingerprintResolveData => ({\n data: {\n [dataKey]: encodeObject({ threeDSCompInd: resultObj.threeDSCompInd }),\n paymentData\n }\n});\n\n// Old 3DS2 flow\nexport const createOldFingerprintResolveData = (dataKey: string, resultObj: ResultObject, paymentData: string): any => ({\n data: {\n details: { 'threeds2.fingerprint': encodeObject(resultObj) },\n paymentData\n }\n});\n\nexport const createChallengeResolveData = (dataKey: string, transStatus: string, authorisationToken: string): ChallengeResolveData => ({\n data: {\n details: { [dataKey]: encodeObject({ transStatus, authorisationToken }) }\n }\n});\n\n// Needed for old 3DS2 flow & threeds2InMDFlow\nexport const createOldChallengeResolveData = (dataKey: string, transStatus: string, authorisationToken: string): any => ({\n data: {\n details: { 'threeds2.challengeResult': encodeObject({ transStatus }) },\n paymentData: authorisationToken\n }\n});\n\n/**\n *\n * Takes a string and encodes it as a base64url string\n * (https://en.wikipedia.org/wiki/Base64#URL_applications)\n * (See also https://tools.ietf.org/html/rfc7515)\n *\n * @example\n * ```\n * const jsonStr = JSON.stringify( {name:'john', surname:'smith'} );\n * const base64url = encodeBase64URL(jsonStr);\n * ```\n *\n * @param dataStr - data, as a string, to be encoded\n *\n * @returns base64URL - a base64url encoded string\n */\nexport const encodeBase64URL = (dataStr: string): string => {\n const base64Data = window.btoa(dataStr);\n let base64url = base64Data.split('=')[0]; // Remove any trailing '='s\n\n base64url = base64url.replace(/\\+/g, '-'); // 62nd char of encoding\n base64url = base64url.replace(/\\//g, '_'); // 63rd char of encoding\n\n return base64url;\n};\n\nconst fingerprintFlowPropsDropin = ['elementRef'];\n\n/**\n * Must contain all props needed for the challenge stage since, in the new 3DS2 flow, the fingerprint component will be the \"component\" reference\n * if the /submitThreeDS2Fingerprint response dictates we \"handleAction\" to create a challenge\n */\nconst fingerprintFlowProps = ['createFromAction', 'onAdditionalDetails'];\n\n/**\n * Add props specifically needed for the type of 3DS2 flow: fingerprint or challenge\n *\n * @param actionSubtype - 3DS2 flow type: fingerprint or challenge\n * @param props - object from which to extract particular properties\n */\nexport const get3DS2FlowProps = (actionSubtype, props) => {\n if (actionSubtype === 'fingerprint') {\n // elementRef exists when the fingerprint component is created from the Dropin\n const fingerprintProps = props.elementRef ? fingerprintFlowPropsDropin : fingerprintFlowProps;\n const rtnObj = pick(fingerprintProps).from(props);\n rtnObj.showSpinner = !props.isDropin;\n rtnObj.statusType = 'loading';\n return rtnObj;\n }\n\n // Challenge\n return {\n statusType: 'custom',\n i18n: props.i18n,\n elementRef: props.elementRef\n };\n};\n"],"names":["isErrorObject","obj","success","decodeAndParseToken","token","decodedToken","base64","decode","JSON","parse","data","e","error","encodeObject","Object","keys","length","Error","encode","stringify","validateChallengeWindowSize","sizeStr","sizeString","prototype","hasOwnProperty","call","CHALLENGE_WINDOW_SIZES","DEFAULT_CHALLENGE_WINDOW_SIZE","getChallengeWindowSize","prepareChallengeData","size","decodedChallengeToken","acsTransID","acsURL","messageVersion","threeDSNotificationURL","threeDSServerTransID","notificationURLOrigin","getOrigin","cReqData","messageType","challengeWindowSize","iframeSizeArr","postMessageDomain","prepareFingerPrintData","notificationURL","decodedFingerPrintToken","threeDSMethodNotificationURL","threeDSMethodUrl","threeDSMethodURL","receivedNotificationURL","createFingerprintResolveData","dataKey","resultObj","paymentData","threeDSCompInd","createOldFingerprintResolveData","details","createChallengeResolveData","transStatus","authorisationToken","createOldChallengeResolveData","encodeBase64URL","dataStr","base64url","window","btoa","split","replace","fingerprintFlowPropsDropin","fingerprintFlowProps","get3DS2FlowProps","actionSubtype","props","fingerprintProps","elementRef","rtnObj","pick","from","showSpinner","isDropin","statusType","i18n"],"mappings":"iPAYO,MAAMA,EAAiBC,GACnB,YAAaA,IAAQA,EAAIC,QAGvBC,EAAuBC,IAChC,MAAMC,EAA6BC,EAAOC,OAAOH,GACjD,GAAIC,EAAaH,QACb,IACI,OAAOM,KAAKC,MAAMJ,EAAaK,KACnC,CAAE,MAAOC,GACL,MAAO,CACHT,SAAS,EACTU,MAAO,6BAEf,CAIJ,OAAOP,GAQEQ,EAAeZ,IACxB,IAAKA,IAAQa,OAAOC,KAAKd,GAAKe,OAC1B,MAAM,IAAIC,MAAM,wCAEpB,OAAOX,EAAOY,OAAOV,KAAKW,UAAUlB,KAQ3BmB,EAA+BC,IACxC,MAAMC,EAAgC,IAAnBD,EAAQL,OAAe,IAAIK,IAAYA,EAE1D,OADgBP,OAAOS,UAAUC,eAAeC,KAAKC,EAAwBJ,GAC5DA,EAAaK,GAOrBC,EAA0BP,GAA8BK,EAAuBN,EAA4BC,IAU3GQ,EAAuB,EAAGzB,QAAO0B,WAC1C,MAAMC,EAAwB5B,EAAoBC,GAElD,GAAIJ,EAAc+B,GACd,OAAOA,EAGX,MAAMC,WAAEA,EAAUC,OAAEA,EAAMC,eAAEA,EAAcC,uBAAEA,EAAsBC,qBAAEA,GAAyBL,EACvFM,EAAwBC,EAAUH,GAExC,MAAO,CACHF,SACAM,SAAU,CACNP,aACAE,iBACAE,uBACAI,YAAa,OACbC,oBAAqBrB,EAA4BU,IAErDY,cAAed,EAAuBE,GACtCa,kBAAmBN,IAiBdO,EAAyB,EAAGxC,QAAOyC,sBAC5C,MAAMC,EAA0B3C,EAAoBC,GAEpD,GAAIJ,EAAc8C,GACd,OAAOA,EAGX,MAAMC,6BAAEA,EAA8BC,iBAAkBC,EAAgBb,qBAAEA,GAAyBU,EAC7FI,EAA0BL,GAAmBE,EAGnD,MAAO,CACHX,uBACAa,mBACAF,6BAA8BG,EAC9BP,kBAN0BL,EAAUY,KAU/BC,EAA+B,CAACC,EAAiBC,EAAyBC,MACnF5C,KAAM,CACF0C,CAACA,GAAUvC,EAAa,CAAE0C,eAAgBF,EAAUE,iBACpDD,iBAKKE,EAAkC,CAACJ,EAAiBC,EAAyBC,MACtF5C,KAAM,CACF+C,QAAS,CAAE,uBAAwB5C,EAAawC,IAChDC,iBAIKI,EAA6B,CAACN,EAAiBO,EAAqBC,MAC7ElD,KAAM,CACF+C,QAAS,CAAEL,CAACA,GAAUvC,EAAa,CAAE8C,cAAaC,2BAK7CC,EAAgC,CAACT,EAAiBO,EAAqBC,MAChFlD,KAAM,CACF+C,QAAS,CAAE,2BAA4B5C,EAAa,CAAE8C,iBACtDL,YAAaM,KAoBRE,EAAmBC,IAE5B,IAAIC,EADeC,OAAOC,KAAKH,GACJI,MAAM,KAAK,GAKtC,OAHAH,EAAYA,EAAUI,QAAQ,MAAO,KACrCJ,EAAYA,EAAUI,QAAQ,MAAO,KAE9BJ,GAGLK,EAA6B,CAAC,cAM9BC,EAAuB,CAAC,mBAAoB,uBAQrCC,EAAmB,CAACC,EAAeC,KAC5C,GAAsB,gBAAlBD,EAAiC,CAEjC,MAAME,EAAmBD,EAAME,WAAaN,EAA6BC,EACnEM,EAASC,EAAKH,GAAkBI,KAAKL,GAG3C,OAFAG,EAAOG,aAAeN,EAAMO,SAC5BJ,EAAOK,WAAa,UACbL,CACX,CAGA,MAAO,CACHK,WAAY,SACZC,KAAMT,EAAMS,KACZP,WAAYF,EAAME"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../src/components/ThreeDS2/components/utils.ts"],"sourcesContent":["import { CHALLENGE_WINDOW_SIZES, DEFAULT_CHALLENGE_WINDOW_SIZE } from '../constants';\nimport { getOrigin } from '../../../utils/getOrigin';\nimport base64 from '../../../utils/base64';\nimport type {\n ChallengeData,\n ThreeDS2Token,\n FingerPrintData,\n ResultObject,\n FingerprintResolveData,\n ChallengeResolveData,\n ThreeDS2FlowProps,\n ThreeDS2ActionProps\n} from '../types';\nimport type { DecodeObject } from '../../../types/global-types';\nimport type { ErrorObject } from '../../../core/Errors/types';\n\n/**\n * Check if we have been passed an ErrorObject because either base64 decoding or JSON.parse failed\n * @param obj -\n */\nexport const isErrorObject = (obj: ErrorObject | ThreeDS2Token): boolean => {\n return 'success' in obj && !obj.success;\n};\n\nexport const decodeAndParseToken = (token: string): ThreeDS2Token | ErrorObject => {\n const decodedToken: DecodeObject = base64.decode(token);\n if (decodedToken.success) {\n try {\n return JSON.parse(decodedToken.data) as ThreeDS2Token;\n } catch (e) {\n return {\n success: false,\n error: 'Could not JSON parse token'\n };\n }\n }\n\n // base64.decode failed - object will contain error msg: 'not base64' or 'malformed URI sequence'\n return decodedToken as ErrorObject;\n};\n\n/**\n * Performs JSON.stringify on passed object & and base64 encodes result\n * @param obj -\n * @returns encoded result\n */\nexport const encodeObject = obj => {\n if (!obj || !Object.keys(obj).length) {\n throw new Error('No (populated) data object to encode');\n }\n return base64.encode(JSON.stringify(obj));\n};\n\n/**\n * Accepts a size string for the challenge window & returns it if it is valid else returns a default value\n * @param sizeStr - the size string to check the validity of\n * @returns a valid size string\n */\nexport const validateChallengeWindowSize = (sizeStr: string): string => {\n const sizeString = sizeStr.length === 1 ? `0${sizeStr}` : sizeStr;\n const hasSize = Object.prototype.hasOwnProperty.call(CHALLENGE_WINDOW_SIZES, sizeString);\n return hasSize ? sizeString : DEFAULT_CHALLENGE_WINDOW_SIZE;\n};\n\n/**\n * Accepts a size string for the challenge window & returns the corresponding array of w/h values\n * @param sizeStr -\n */\nexport const getChallengeWindowSize = (sizeStr: string): string[] => CHALLENGE_WINDOW_SIZES[validateChallengeWindowSize(sizeStr)];\n\n/**\n * prepareChallengeData\n *\n * Requires an object containing the challenge parameters:\n * @param token - challengeToken string received from /submitThreeDS2Fingerprint, /details or /payments call: contains acsTransID, acsURL, messageVersion,\n * threeDSNotificationURL and threeDSServerTransID\n * @param size - one of five possible challenge window sizes\n */\nexport const prepareChallengeData = ({ token, size }): ChallengeData | ErrorObject => {\n const decodedChallengeToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedChallengeToken)) {\n return decodedChallengeToken as ErrorObject;\n }\n\n const { acsTransID, acsURL, messageVersion, threeDSNotificationURL, threeDSServerTransID } = decodedChallengeToken as ThreeDS2Token;\n const notificationURLOrigin = getOrigin(threeDSNotificationURL);\n\n return {\n acsURL,\n cReqData: {\n acsTransID,\n messageVersion,\n threeDSServerTransID,\n messageType: 'CReq',\n challengeWindowSize: validateChallengeWindowSize(size)\n },\n iframeSizeArr: getChallengeWindowSize(size),\n postMessageDomain: notificationURLOrigin\n } as ChallengeData;\n};\n\n/**\n * prepareFingerPrintData\n *\n * Requires an object containing the fingerprint parameters:\n * @param token - fingerprintToken string received from /payments call: contains threeDSMethodNotificationURL, threeDSMethodUrl and\n * threeDSServerTransID\n * @param notificationURL - the URL that the final notification is expected to be postMessaged from.\n *\n * NOTE: we don't expect merchants to alter the default by passing in a notificationURL of their own via props;\n * and if 3DS2 is being done via createFromAction or handleAction we won't accept it.\n * But if the merchant is using checkout.create('threeDS2DeviceFingerprint') we still support the fact that they might want to set their own\n * notificationURL (aka threeDSMethodNotificationURL)\n */\nexport const prepareFingerPrintData = ({ token, notificationURL }): FingerPrintData | ErrorObject => {\n const decodedFingerPrintToken = decodeAndParseToken(token);\n\n if (isErrorObject(decodedFingerPrintToken)) {\n return decodedFingerPrintToken as ErrorObject;\n }\n\n const { threeDSMethodNotificationURL, threeDSMethodUrl: threeDSMethodURL, threeDSServerTransID } = decodedFingerPrintToken as ThreeDS2Token;\n const receivedNotificationURL = notificationURL || threeDSMethodNotificationURL;\n const notificationURLOrigin = getOrigin(receivedNotificationURL);\n\n return {\n threeDSServerTransID,\n threeDSMethodURL,\n threeDSMethodNotificationURL: receivedNotificationURL,\n postMessageDomain: notificationURLOrigin\n } as FingerPrintData;\n};\n\nexport const createFingerprintResolveData = (dataKey: string, resultObj: ResultObject, paymentData: string): FingerprintResolveData => ({\n data: {\n [dataKey]: encodeObject({ threeDSCompInd: resultObj.threeDSCompInd }),\n paymentData\n }\n});\n\n// Old 3DS2 flow\nexport const createOldFingerprintResolveData = (dataKey: string, resultObj: ResultObject, paymentData: string): any => ({\n data: {\n details: { 'threeds2.fingerprint': encodeObject(resultObj) },\n paymentData\n }\n});\n\nexport const createChallengeResolveData = (dataKey: string, transStatus: string, authorisationToken: string): ChallengeResolveData => ({\n data: {\n details: { [dataKey]: encodeObject({ transStatus, authorisationToken }) }\n }\n});\n\n// Needed for old 3DS2 flow & threeds2InMDFlow\nexport const createOldChallengeResolveData = (dataKey: string, transStatus: string, authorisationToken: string): any => ({\n data: {\n details: { 'threeds2.challengeResult': encodeObject({ transStatus }) },\n paymentData: authorisationToken\n }\n});\n\n/**\n *\n * Takes a string and encodes it as a base64url string\n * (https://en.wikipedia.org/wiki/Base64#URL_applications)\n * (See also https://tools.ietf.org/html/rfc7515)\n *\n * @example\n * ```\n * const jsonStr = JSON.stringify( {name:'john', surname:'smith'} );\n * const base64url = encodeBase64URL(jsonStr);\n * ```\n *\n * @param dataStr - data, as a string, to be encoded\n *\n * @returns base64URL - a base64url encoded string\n */\nexport const encodeBase64URL = (dataStr: string): string => {\n const base64Data = window.btoa(dataStr);\n let base64url = base64Data.split('=')[0]; // Remove any trailing '='s\n\n base64url = base64url.replace(/\\+/g, '-'); // 62nd char of encoding\n base64url = base64url.replace(/\\//g, '_'); // 63rd char of encoding\n\n return base64url;\n};\n\n/**\n * Add props specifically needed for the type of 3DS2 flow: fingerprint or challenge\n *\n * @param actionSubtype - 3DS2 flow type: fingerprint or challenge\n * @param props - object from which to extract particular properties\n */\nexport const get3DS2FlowProps = (actionSubtype: string, props: ThreeDS2ActionProps): ThreeDS2FlowProps => {\n if (actionSubtype === 'fingerprint') {\n return {\n showSpinner: !props.isDropin,\n statusType: 'loading',\n // elementRef exists when the fingerprint component is created from the Dropin\n ...(props.elementRef && { elementRef: props.elementRef })\n };\n }\n\n // Challenge\n return {\n statusType: 'custom',\n i18n: props.i18n,\n elementRef: props.elementRef\n };\n};\n"],"names":["isErrorObject","obj","success","decodeAndParseToken","token","decodedToken","base64","decode","JSON","parse","data","e","error","encodeObject","Object","keys","length","Error","encode","stringify","validateChallengeWindowSize","sizeStr","sizeString","prototype","hasOwnProperty","call","CHALLENGE_WINDOW_SIZES","DEFAULT_CHALLENGE_WINDOW_SIZE","getChallengeWindowSize","prepareChallengeData","size","decodedChallengeToken","acsTransID","acsURL","messageVersion","threeDSNotificationURL","threeDSServerTransID","notificationURLOrigin","getOrigin","cReqData","messageType","challengeWindowSize","iframeSizeArr","postMessageDomain","prepareFingerPrintData","notificationURL","decodedFingerPrintToken","threeDSMethodNotificationURL","threeDSMethodUrl","threeDSMethodURL","receivedNotificationURL","createFingerprintResolveData","dataKey","resultObj","paymentData","threeDSCompInd","createOldFingerprintResolveData","details","createChallengeResolveData","transStatus","authorisationToken","createOldChallengeResolveData","encodeBase64URL","dataStr","base64url","window","btoa","split","replace","get3DS2FlowProps","actionSubtype","props","_object_spread","showSpinner","isDropin","statusType","elementRef","i18n"],"mappings":"oTAoBO,MAAMA,EAAiBC,GACnB,YAAaA,IAAQA,EAAIC,QAGvBC,EAAuBC,IAChC,MAAMC,EAA6BC,EAAOC,OAAOH,GACjD,GAAIC,EAAaH,QACb,IACI,OAAOM,KAAKC,MAAMJ,EAAaK,KACnC,CAAE,MAAOC,GACL,MAAO,CACHT,SAAS,EACTU,MAAO,6BAEf,CAIJ,OAAOP,GAQEQ,EAAeZ,IACxB,IAAKA,IAAQa,OAAOC,KAAKd,GAAKe,OAC1B,MAAM,IAAIC,MAAM,wCAEpB,OAAOX,EAAOY,OAAOV,KAAKW,UAAUlB,KAQ3BmB,EAA+BC,IACxC,MAAMC,EAAgC,IAAnBD,EAAQL,OAAe,IAAIK,IAAYA,EAE1D,OADgBP,OAAOS,UAAUC,eAAeC,KAAKC,EAAwBJ,GAC5DA,EAAaK,GAOrBC,EAA0BP,GAA8BK,EAAuBN,EAA4BC,IAU3GQ,EAAuB,EAAGzB,QAAO0B,WAC1C,MAAMC,EAAwB5B,EAAoBC,GAElD,GAAIJ,EAAc+B,GACd,OAAOA,EAGX,MAAMC,WAAEA,EAAUC,OAAEA,EAAMC,eAAEA,EAAcC,uBAAEA,EAAsBC,qBAAEA,GAAyBL,EACvFM,EAAwBC,EAAUH,GAExC,MAAO,CACHF,SACAM,SAAU,CACNP,aACAE,iBACAE,uBACAI,YAAa,OACbC,oBAAqBrB,EAA4BU,IAErDY,cAAed,EAAuBE,GACtCa,kBAAmBN,IAiBdO,EAAyB,EAAGxC,QAAOyC,sBAC5C,MAAMC,EAA0B3C,EAAoBC,GAEpD,GAAIJ,EAAc8C,GACd,OAAOA,EAGX,MAAMC,6BAAEA,EAA8BC,iBAAkBC,EAAgBb,qBAAEA,GAAyBU,EAC7FI,EAA0BL,GAAmBE,EAGnD,MAAO,CACHX,uBACAa,mBACAF,6BAA8BG,EAC9BP,kBAN0BL,EAAUY,KAU/BC,EAA+B,CAACC,EAAiBC,EAAyBC,MACnF5C,KAAM,CACF0C,CAACA,GAAUvC,EAAa,CAAE0C,eAAgBF,EAAUE,iBACpDD,iBAKKE,EAAkC,CAACJ,EAAiBC,EAAyBC,MACtF5C,KAAM,CACF+C,QAAS,CAAE,uBAAwB5C,EAAawC,IAChDC,iBAIKI,EAA6B,CAACN,EAAiBO,EAAqBC,MAC7ElD,KAAM,CACF+C,QAAS,CAAEL,CAACA,GAAUvC,EAAa,CAAE8C,cAAaC,2BAK7CC,EAAgC,CAACT,EAAiBO,EAAqBC,MAChFlD,KAAM,CACF+C,QAAS,CAAE,2BAA4B5C,EAAa,CAAE8C,iBACtDL,YAAaM,KAoBRE,EAAmBC,IAE5B,IAAIC,EADeC,OAAOC,KAAKH,GACJI,MAAM,KAAK,GAKtC,OAHAH,EAAYA,EAAUI,QAAQ,MAAO,KACrCJ,EAAYA,EAAUI,QAAQ,MAAO,KAE9BJ,GASEK,EAAmB,CAACC,EAAuBC,IAC9B,gBAAlBD,oUACOE,CAAA,CACHC,aAAcF,EAAMG,SACpBC,WAAY,WAERJ,EAAMK,YAAc,CAAEA,WAAYL,EAAMK,aAK7C,CACHD,WAAY,SACZE,KAAMN,EAAMM,KACZD,WAAYL,EAAMK"}
@@ -1,2 +1,2 @@
1
- import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import{useState as n,useCallback as a,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../VpaInput/VpaInput.js";import i from"../../../../core/Context/useImage.js";import{A11Y as l}from"../../constants.js";import s from"../../../internal/SegmentedControl/SegmentedControl.js";import d from"../UPIIntentAppList/UPIIntentAppList.js";import{useCoreContext as u}from"../../../../core/Context/CoreProvider.js";import c from"../../../internal/Alert/Alert.js";import p from"../UPIMandate/UPIMandate.js";function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),a.forEach(function(t){m(e,t,n[t])})}return e}function b({defaultMode:m,onChange:b,payButton:f,showPayButton:y,mandate:I,amount:h,onUpdateMode:j=()=>{},apps:C=[],segmentedControlOptions:v=[]}){const{i18n:A}=u(),N=i(),[P,k]=n("ready"),[S,O]=n(m),[V,q]=n(null),[w,x]=n(null),[B,E]=n("qrCode"===m),M=I&&e(p,{mandate:I,amount:h});this.setStatus=e=>{k(e)},this.showValidation=()=>{null==V||V.validateInput(),"intent"===S&&R()};const U=a(e=>{q(e)},[]),T=a(e=>{O(e),j(e)},[j]),Q=a(e=>{(null==e?void 0:e.id)!==(null==w?void 0:w.id)&&(x(e),E(!0),k("ready"))},[w]),R=a(()=>{w?(k("ready"),E(!0)):(k("error"),E(!1))},[w]);return o(()=>{b("qrCode"!==S?{data:g({},w&&{app:w}),isValid:B}:{data:{},valid:{},errors:{},isValid:!0})},[w,B,S,b]),e(t,null,v.length>0&&e("p",{className:"adyen-checkout_upi-mode-selection-text"},A.get("upi.modeSelection")),e(s,{onChange:T,selectedValue:S,disabled:"loading"===P,classNameModifiers:["upi-margin-bottom"],options:v}),"intent"===S&&e("div",{id:l.AreaId.INTENT,"aria-labelledby":l.ButtonId.INTENT,className:"adyen-checkout-upi-area-intent",role:"region"},e("span",{className:"adyen-checkout-upi-instruction-label"},A.get("upi.intent.instruction")),"error"===P&&e(c,{icon:"cross"},A.get("upi.error.noAppSelected")),e(d,{disabled:"loading"===P,apps:C,selectedAppId:null==w?void 0:w.id,onAppSelect:Q}),M,y&&f({label:A.get("continue"),status:P})),"vpa"===S&&e("div",{id:l.AreaId.VPA,"aria-labelledby":l.ButtonId.VPA,className:"adyen-checkout-upi-area-vpa",role:"region"},e("span",{className:"adyen-checkout-upi-instruction-label"},A.get("upi.collect.instruction")),e(r,{disabled:"loading"===P,onChange:b,onSetInputHandlers:U}),M,y&&f({label:A.get("continue"),status:P})),"qrCode"===S&&e("div",{id:l.AreaId.QR,"aria-labelledby":l.ButtonId.QR,className:"adyen-checkout-upi-area-qr-code",role:"region"},e("span",{className:"adyen-checkout-upi-instruction-label"},A.get("upi.qrCode.instruction")),M,y&&f({label:A.get("generateQRCode"),icon:N({imageFolder:"components/"})("qr"),status:P})))}export{b as default};
1
+ import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import{useState as n,useCallback as a,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../VpaInput/VpaInput.js";import i from"../../../../core/Context/useImage.js";import{A11Y as l}from"../../constants.js";import{SegmentedControl as s}from"../../../internal/SegmentedControl/SegmentedControl.js";import{SegmentedControlRegion as d}from"../../../internal/SegmentedControl/SegmentedControlRegion.js";import u from"../UPIIntentAppList/UPIIntentAppList.js";import{useCoreContext as c}from"../../../../core/Context/CoreProvider.js";import p from"../../../internal/Alert/Alert.js";import m from"../UPIMandate/UPIMandate.js";function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),a.forEach(function(t){g(e,t,n[t])})}return e}function b({defaultMode:g,onChange:b,payButton:y,showPayButton:I,mandate:h,amount:C,onUpdateMode:j=()=>{},apps:A=[],segmentedControlOptions:N=[]}){const{i18n:P}=c(),S=i(),[k,v]=n("ready"),[O,B]=n(g),[V,q]=n(null),[w,x]=n(null),[E,L]=n("qrCode"===g),M=h&&e(m,{mandate:h,amount:C});this.setStatus=e=>{v(e)},this.showValidation=()=>{null==V||V.validateInput(),"intent"===O&&Q()};const U=a(e=>{q(e)},[]),R=a(e=>{B(e),j(e)},[j]),T=a(e=>{(null==e?void 0:e.id)!==(null==w?void 0:w.id)&&(x(e),L(!0),v("ready"))},[w]),Q=a(()=>{w?(v("ready"),L(!0)):(v("error"),L(!1))},[w]);return o(()=>{b("qrCode"!==O?{data:f({},w&&{app:w}),isValid:E}:{data:{},valid:{},errors:{},isValid:!0})},[w,E,O,b]),e(t,null,N.length>0&&e("p",{className:"adyen-checkout_upi-mode-selection-text"},P.get("upi.modeSelection")),e(s,{onChange:R,selectedValue:O,disabled:"loading"===k,classNameModifiers:["upi-margin-bottom"],options:N}),"intent"===O&&e(d,{id:l.AreaId.INTENT,ariaLabelledBy:l.ButtonId.INTENT,className:"adyen-checkout-upi-area-intent"},e("span",{className:"adyen-checkout-upi-instruction-label"},P.get("upi.intent.instruction")),"error"===k&&e(p,{icon:"cross"},P.get("upi.error.noAppSelected")),e(u,{disabled:"loading"===k,apps:A,selectedAppId:null==w?void 0:w.id,onAppSelect:T}),M,I&&y({label:P.get("continue"),status:k})),"vpa"===O&&e(d,{id:l.AreaId.VPA,ariaLabelledBy:l.ButtonId.VPA,className:"adyen-checkout-upi-area-vpa"},e("span",{className:"adyen-checkout-upi-instruction-label"},P.get("upi.collect.instruction")),e(r,{disabled:"loading"===k,onChange:b,onSetInputHandlers:U}),M,I&&y({label:P.get("continue"),status:k})),"qrCode"===O&&e(d,{id:l.AreaId.QR,ariaLabelledBy:l.ButtonId.QR,className:"adyen-checkout-upi-area-qr-code"},e("span",{className:"adyen-checkout-upi-instruction-label"},P.get("upi.qrCode.instruction")),M,I&&y({label:P.get("generateQRCode"),icon:S({imageFolder:"components/"})("qr"),status:k})))}export{b as default};
2
2
  //# sourceMappingURL=UPIComponent.js.map