@adyen/adyen-web 6.28.0 → 6.30.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 (315) hide show
  1. package/dist/cjs/adyen.css +15 -14
  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 +2688 -2566
  6. package/dist/es/adyen.css +15 -14
  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/types.js.map +1 -1
  13. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  14. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  15. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js +1 -1
  16. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  17. package/dist/es/components/Econtext/Econtext.js +1 -1
  18. package/dist/es/components/Econtext/Econtext.js.map +1 -1
  19. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js +1 -1
  20. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  21. package/dist/es/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js +1 -1
  22. package/dist/es/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js.map +1 -1
  23. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  24. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  25. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  26. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  27. package/dist/es/components/Iris/Iris.js +2 -0
  28. package/dist/es/components/Iris/Iris.js.map +1 -0
  29. package/dist/es/components/Iris/components/IrisComponent.js +2 -0
  30. package/dist/es/components/Iris/components/IrisComponent.js.map +1 -0
  31. package/dist/es/components/Iris/components/IrisComponent.module.scss.js +2 -0
  32. package/dist/es/components/Iris/components/IrisComponent.module.scss.js.map +1 -0
  33. package/dist/es/components/Iris/components/IrisGenerateQRCode.js +2 -0
  34. package/dist/es/components/Iris/components/IrisGenerateQRCode.js.map +1 -0
  35. package/dist/es/components/Iris/components/IrisGenerateQRCode.module.scss.js +2 -0
  36. package/dist/es/components/Iris/components/IrisGenerateQRCode.module.scss.js.map +1 -0
  37. package/dist/es/components/Iris/components/IrisQrCodeInstructions.js +2 -0
  38. package/dist/es/components/Iris/components/IrisQrCodeInstructions.js.map +1 -0
  39. package/dist/es/components/Iris/constants.js +2 -0
  40. package/dist/es/components/Iris/constants.js.map +1 -0
  41. package/dist/es/components/Iris/types.js +2 -0
  42. package/dist/es/components/Iris/types.js.map +1 -0
  43. package/dist/es/components/Iris/utils.js +2 -0
  44. package/dist/es/components/Iris/utils.js.map +1 -0
  45. package/dist/es/components/PayTo/components/PayToComponent.js +1 -1
  46. package/dist/es/components/PayTo/components/PayToComponent.js.map +1 -1
  47. package/dist/es/components/Pix/components/PixQRDetails.js +1 -1
  48. package/dist/es/components/Pix/components/PixQRDetails.js.map +1 -1
  49. package/dist/es/components/UPI/UPI.js +1 -1
  50. package/dist/es/components/UPI/UPI.js.map +1 -1
  51. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  52. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  53. package/dist/es/components/UPI/constants.js +1 -1
  54. package/dist/es/components/UPI/constants.js.map +1 -1
  55. package/dist/es/components/components-name-map.js +1 -1
  56. package/dist/es/components/components-name-map.js.map +1 -1
  57. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  58. package/dist/es/components/index.js +1 -1
  59. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  60. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  61. package/dist/es/components/internal/Countdown/index.js +1 -1
  62. package/dist/es/components/internal/Countdown/index.js.map +1 -1
  63. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  64. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  65. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  66. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  67. package/dist/es/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  68. package/dist/es/components/internal/QRLoader/components/QRDetails.js +1 -1
  69. package/dist/es/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  70. package/dist/es/components/internal/QRLoader/components/QRImage.js +1 -1
  71. package/dist/es/components/internal/QRLoader/components/QRImage.js.map +1 -1
  72. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  73. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  74. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  75. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  76. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
  77. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  78. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  79. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  80. package/dist/es/components/internal/SegmentedControl/SegmentedControl.js +1 -1
  81. package/dist/es/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
  82. package/dist/es/components/internal/SegmentedControl/SegmentedControlRegion.js +2 -0
  83. package/dist/es/components/internal/SegmentedControl/SegmentedControlRegion.js.map +1 -0
  84. package/dist/es/components/internal/Voucher/Voucher.js +1 -1
  85. package/dist/es/components/internal/Voucher/Voucher.js.map +1 -1
  86. package/dist/es/components/internal/Voucher/utils.js.map +1 -1
  87. package/dist/es/components/tx-variants.js +1 -1
  88. package/dist/es/components/tx-variants.js.map +1 -1
  89. package/dist/es/core/Analytics/Analytics.js +1 -1
  90. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  91. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js +1 -1
  92. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -1
  93. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  94. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  95. package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
  96. package/dist/es/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
  97. package/dist/es/core/ProcessResponse/PaymentMethods/utils.js +1 -1
  98. package/dist/es/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  99. package/dist/es/core/config.js +1 -1
  100. package/dist/es/index.d.ts +2688 -2566
  101. package/dist/es/index.js +1 -1
  102. package/dist/es/language/Language.js.map +1 -1
  103. package/dist/es/utils/createSdkData.js +2 -0
  104. package/dist/es/utils/createSdkData.js.map +1 -0
  105. package/dist/es-legacy/adyen.css +15 -14
  106. package/dist/es-legacy/adyen.css.map +1 -1
  107. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  108. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  109. package/dist/es-legacy/components/ApplePay/utils/payment-request.js +1 -1
  110. package/dist/es-legacy/components/ApplePay/utils/payment-request.js.map +1 -1
  111. package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js +1 -1
  112. package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js.map +1 -1
  113. package/dist/es-legacy/components/Card/Card.js +1 -1
  114. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  115. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  116. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  117. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  118. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  119. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  120. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  121. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  122. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js +1 -1
  123. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  124. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  125. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  126. package/dist/es-legacy/components/Card/components/ClickToPayWrapper.js +1 -1
  127. package/dist/es-legacy/components/Card/components/ClickToPayWrapper.js.map +1 -1
  128. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  129. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  130. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js +1 -1
  131. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  132. package/dist/es-legacy/components/Dragonpay/Dragonpay.js +1 -1
  133. package/dist/es-legacy/components/Dragonpay/Dragonpay.js.map +1 -1
  134. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  135. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  136. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  137. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  138. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  139. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  140. package/dist/es-legacy/components/Econtext/Econtext.js +1 -1
  141. package/dist/es-legacy/components/Econtext/Econtext.js.map +1 -1
  142. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js +1 -1
  143. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  144. package/dist/es-legacy/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js +1 -1
  145. package/dist/es-legacy/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js.map +1 -1
  146. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  147. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  148. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  149. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  150. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  151. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  152. package/dist/es-legacy/components/GooglePay/requests.js +1 -1
  153. package/dist/es-legacy/components/GooglePay/requests.js.map +1 -1
  154. package/dist/es-legacy/components/Iris/Iris.js +2 -0
  155. package/dist/es-legacy/components/Iris/Iris.js.map +1 -0
  156. package/dist/es-legacy/components/Iris/components/IrisComponent.js +2 -0
  157. package/dist/es-legacy/components/Iris/components/IrisComponent.js.map +1 -0
  158. package/dist/es-legacy/components/Iris/components/IrisComponent.module.scss.js +2 -0
  159. package/dist/es-legacy/components/Iris/components/IrisComponent.module.scss.js.map +1 -0
  160. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js +2 -0
  161. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js.map +1 -0
  162. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.module.scss.js +2 -0
  163. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.module.scss.js.map +1 -0
  164. package/dist/es-legacy/components/Iris/components/IrisQrCodeInstructions.js +2 -0
  165. package/dist/es-legacy/components/Iris/components/IrisQrCodeInstructions.js.map +1 -0
  166. package/dist/es-legacy/components/Iris/constants.js +2 -0
  167. package/dist/es-legacy/components/Iris/constants.js.map +1 -0
  168. package/dist/es-legacy/components/Iris/types.js +2 -0
  169. package/dist/es-legacy/components/Iris/types.js.map +1 -0
  170. package/dist/es-legacy/components/Iris/utils.js +2 -0
  171. package/dist/es-legacy/components/Iris/utils.js.map +1 -0
  172. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
  173. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  174. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
  175. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  176. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  177. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  178. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  179. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  180. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
  181. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
  182. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
  183. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
  184. package/dist/es-legacy/components/PayTo/components/PayToComponent.js +1 -1
  185. package/dist/es-legacy/components/PayTo/components/PayToComponent.js.map +1 -1
  186. package/dist/es-legacy/components/Pix/components/PixQRDetails.js +1 -1
  187. package/dist/es-legacy/components/Pix/components/PixQRDetails.js.map +1 -1
  188. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  189. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  190. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  191. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  192. package/dist/es-legacy/components/UPI/UPI.js +1 -1
  193. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  194. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  195. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  196. package/dist/es-legacy/components/UPI/constants.js +1 -1
  197. package/dist/es-legacy/components/UPI/constants.js.map +1 -1
  198. package/dist/es-legacy/components/components-name-map.js +1 -1
  199. package/dist/es-legacy/components/components-name-map.js.map +1 -1
  200. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  201. package/dist/es-legacy/components/index.js +1 -1
  202. package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
  203. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  204. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  205. package/dist/es-legacy/components/internal/Button/CopyButton.js +1 -1
  206. package/dist/es-legacy/components/internal/Button/CopyButton.js.map +1 -1
  207. package/dist/es-legacy/components/internal/Button/CopyIconButton.js +1 -1
  208. package/dist/es-legacy/components/internal/Button/CopyIconButton.js.map +1 -1
  209. package/dist/es-legacy/components/internal/Countdown/index.js +1 -1
  210. package/dist/es-legacy/components/internal/Countdown/index.js.map +1 -1
  211. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js +1 -1
  212. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js.map +1 -1
  213. package/dist/es-legacy/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.js +1 -1
  214. package/dist/es-legacy/components/internal/FormFields/ConsentCheckbox/ConsentCheckbox.js.map +1 -1
  215. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  216. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  217. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  218. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  219. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js +1 -1
  220. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js.map +1 -1
  221. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js +1 -1
  222. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectListItem.js.map +1 -1
  223. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  224. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  225. package/dist/es-legacy/components/internal/Modal/Modal.js +1 -1
  226. package/dist/es-legacy/components/internal/Modal/Modal.js.map +1 -1
  227. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  228. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  229. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  230. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  231. package/dist/es-legacy/components/internal/PayButton/PayButton.js +1 -1
  232. package/dist/es-legacy/components/internal/PayButton/PayButton.js.map +1 -1
  233. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  234. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  235. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
  236. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
  237. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  238. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  239. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  240. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  241. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js +1 -1
  242. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  243. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js +1 -1
  244. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  245. package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js +1 -1
  246. package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js.map +1 -1
  247. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js +1 -1
  248. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  249. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  250. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  251. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  252. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js.map +1 -1
  253. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  254. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  255. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleBrandFromBinLookup.js +1 -1
  256. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleBrandFromBinLookup.js.map +1 -1
  257. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
  258. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
  259. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js +1 -1
  260. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js.map +1 -1
  261. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
  262. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  263. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  264. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  265. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  266. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js +1 -1
  267. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControl.js.map +1 -1
  268. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControlRegion.js +2 -0
  269. package/dist/es-legacy/components/internal/SegmentedControl/SegmentedControlRegion.js.map +1 -0
  270. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js +1 -1
  271. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js.map +1 -1
  272. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  273. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  274. package/dist/es-legacy/components/internal/Voucher/Voucher.js +1 -1
  275. package/dist/es-legacy/components/internal/Voucher/Voucher.js.map +1 -1
  276. package/dist/es-legacy/components/internal/Voucher/utils.js.map +1 -1
  277. package/dist/es-legacy/components/tx-variants.js +1 -1
  278. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  279. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  280. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  281. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js +1 -1
  282. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -1
  283. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  284. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  285. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  286. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  287. package/dist/es-legacy/core/Context/Resources.js +1 -1
  288. package/dist/es-legacy/core/Context/Resources.js.map +1 -1
  289. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/PaymentMethods.js +1 -1
  290. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/PaymentMethods.js.map +1 -1
  291. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js +1 -1
  292. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  293. package/dist/es-legacy/core/config.js +1 -1
  294. package/dist/es-legacy/core/core.js +1 -1
  295. package/dist/es-legacy/core/core.js.map +1 -1
  296. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
  297. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
  298. package/dist/es-legacy/index.js +1 -1
  299. package/dist/es-legacy/language/Language.js.map +1 -1
  300. package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
  301. package/dist/es-legacy/utils/commonUtils.js.map +1 -1
  302. package/dist/es-legacy/utils/createSdkData.js +2 -0
  303. package/dist/es-legacy/utils/createSdkData.js.map +1 -0
  304. package/dist/es-legacy/utils/useForm/reducer.js +1 -1
  305. package/dist/es-legacy/utils/useForm/reducer.js.map +1 -1
  306. package/package.json +12 -12
  307. package/styles/adyen.css +15 -14
  308. package/dist/es/components/UPI/components/VpaInput/VpaInput.js +0 -2
  309. package/dist/es/components/UPI/components/VpaInput/VpaInput.js.map +0 -1
  310. package/dist/es/components/UPI/components/VpaInput/validate.js +0 -2
  311. package/dist/es/components/UPI/components/VpaInput/validate.js.map +0 -1
  312. package/dist/es-legacy/components/UPI/components/VpaInput/VpaInput.js +0 -2
  313. package/dist/es-legacy/components/UPI/components/VpaInput/VpaInput.js.map +0 -1
  314. package/dist/es-legacy/components/UPI/components/VpaInput/validate.js +0 -2
  315. package/dist/es-legacy/components/UPI/components/VpaInput/validate.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SecuredField.js","sources":["../../../../../../../src/components/internal/SecuredFields/lib/securedField/SecuredField.ts"],"sourcesContent":["import * as logger from '../utilities/logger';\nimport createIframe from './utils/createIframe';\nimport { removeAllChildren, selectOne } from '../utilities/dom';\nimport { off, on } from '../../../../../utils/listenerUtils';\nimport postMessageToIframe from '../CSF/utils/iframes/postMessageToIframe';\nimport { isChromeVoxPostMsg, isWebpackPostMsg, originCheckPassed } from '../CSF/utils/iframes/postMessageValidation';\nimport {\n CVC_POLICY_HIDDEN,\n CVC_POLICY_OPTIONAL,\n DATE_POLICY_HIDDEN,\n DATE_POLICY_OPTIONAL,\n ENCRYPTED_EXPIRY_DATE,\n ENCRYPTED_EXPIRY_MONTH,\n ENCRYPTED_EXPIRY_YEAR,\n ENCRYPTED_SECURITY_CODE\n} from '../constants';\nimport { generateRandomNumber } from '../utilities/commonUtils';\nimport { CVCPolicyType, DatePolicyType, RtnType_callbackFn, RtnType_noParamVoidFn, RtnType_postMessageListener, SFFeedbackObj } from '../types';\nimport AbstractSecuredField from './AbstractSecuredField';\nimport { AriaConfig, IframeConfigObject, SecuredFieldSetupObject, SecuredFieldCommonProps } from '../types';\nimport { reject } from '../../../../../utils/commonUtils';\nimport { processAriaConfig } from './utils/processAriaConfig';\nimport { processPlaceholders } from './utils/processPlaceholders';\nimport Language from '../../../../../language/Language';\nimport { hasOwnProperty } from '../../../../../utils/hasOwnProperty';\nimport { Placeholders } from '../../SFP/types';\nimport './SecuredField.scss';\n\nconst logPostMsg = false;\nconst doLog = false;\n\nclass SecuredField extends AbstractSecuredField {\n constructor(pSetupObj: SecuredFieldSetupObject, i18n: Language) {\n super();\n\n /**\n * List of props to exclude from being set on this.sfConfig.\n * These props are only required for internal purposes. They do not get sent to the iframe\n */\n const deltaPropsArr: string[] = ['loadingContext', 'holderEl', 'iframeSrc', 'showContextualElement', 'placeholders'];\n\n /**\n * List of props from setup object that will be set on this.sfConfig\n * These props will all end up being sent to the iframe\n */\n const configVarsFromSetUpObj = reject(deltaPropsArr).from(pSetupObj);\n\n // Copy passed setup object values to this.sfConfig\n this.sfConfig = {\n // ...this.sfConfig, // Do we need to do this? Pretty sure we don't\n ...configVarsFromSetUpObj,\n // Break references on iframeUIConfig object so we can overwrite its properties in each securedField instance\n iframeUIConfig: { ...configVarsFromSetUpObj.iframeUIConfig }\n } as SecuredFieldCommonProps;\n\n /**\n * Extract values only needed for init\n */\n const { iframeSrc, placeholders, showContextualElement } = pSetupObj;\n\n /**\n * Store those passed setup object values that are needed in multiple functions\n */\n this.loadingContext = pSetupObj.loadingContext;\n this.holderEl = pSetupObj.holderEl;\n\n /**\n * Initiate other values on 'this' through setters\n */\n this.isValid = false;\n this.iframeContentWindow = null;\n this.numKey = generateRandomNumber();\n this.isEncrypted = false;\n this.hasError = false;\n this.errorType = '';\n this.cvcPolicy = pSetupObj.cvcPolicy;\n this.expiryDatePolicy = pSetupObj.expiryDatePolicy;\n\n if (process.env.NODE_ENV === 'development' && doLog) {\n logger.log(\n '### SecuredField::constructor:: this.sfConfig.fieldType=',\n this.sfConfig.fieldType,\n 'isValid=',\n this._isValid,\n 'numKey=',\n this.numKey\n );\n logger.log('\\n');\n }\n\n return this.init(i18n, iframeSrc, placeholders, showContextualElement);\n }\n\n init(i18n: Language, iframeSrc: string, placeholders: Placeholders, showContextualElement: boolean): SecuredField {\n /**\n * Ensure all fields have a related ariaConfig object containing, at minimum, an iframeTitle property and a (translated) errors object\n */\n const processedAriaConfig: AriaConfig = processAriaConfig(this.sfConfig.txVariant, this.sfConfig.fieldType, i18n, showContextualElement);\n // Set result back onto config object\n this.sfConfig.iframeUIConfig.ariaConfig = processedAriaConfig;\n\n // Set result back onto config object\n this.sfConfig.iframeUIConfig.placeholders = processPlaceholders(this.sfConfig.txVariant, this.sfConfig.fieldType, placeholders);\n\n /**\n * Configure, create & reference iframe and add load listener\n */\n const iframeConfig = {\n src: iframeSrc,\n title: processedAriaConfig[this.sfConfig.fieldType].iframeTitle,\n policy: 'origin'\n };\n\n const iframeEl: HTMLIFrameElement = createIframe(iframeConfig);\n\n // Place the iframe into the holder\n this.holderEl.appendChild(iframeEl);\n\n // Now examine the holder to get an actual DOM node\n const iframe: HTMLIFrameElement = selectOne(this.holderEl, '.js-iframe');\n\n if (iframe) {\n this.iframeContentWindow = iframe.contentWindow;\n\n // Create reference to bound fn (see getters/setters for binding)\n this.iframeOnLoadListener = this.iframeOnLoadListenerFn;\n\n on(iframe, 'load', this.iframeOnLoadListener, false);\n }\n\n this.iframeRef = iframe;\n\n return this;\n }\n\n iframeOnLoadListenerFn(): void {\n // Create reference to bound fn (see getters/setters for binding)\n this.postMessageListener = this.postMessageListenerFn;\n\n // Add general listener for 'message' EVENT - the event that 'powers' postMessage\n on(window, 'message', this.postMessageListener, false);\n\n // Create and send config object to iframe\n const configObj: IframeConfigObject = {\n ...this.sfConfig,\n numKey: this.numKey\n };\n\n if (window._b$dl) console.log('### SecuredField:::: onIframeLoaded:: created configObj=', configObj);\n\n postMessageToIframe(configObj, this.iframeContentWindow, this.loadingContext);\n //--\n\n // Callback to say iframe loaded\n this.onIframeLoadedCallback();\n }\n\n postMessageListenerFn(event: MessageEvent): void {\n // Check message is from expected domain\n if (!originCheckPassed(event, this.loadingContext, this.sfConfig.showWarnings)) {\n return;\n }\n\n // TODO - for debugging purposes this would always be useful to see\n // logger.log('\\n',this.sfConfig.fieldType,'### CSF SecuredField::postMessageListener:: event.data=',event.data);\n\n if (process.env.NODE_ENV === 'development' && logPostMsg) {\n logger.log(\n '\\n###CSF SecuredField::postMessageListener:: DOMAIN & ORIGIN MATCH, NO WEBPACK WEIRDNESS fieldType=',\n this.sfConfig.fieldType,\n 'txVariant=',\n this.sfConfig.txVariant,\n 'this.numKey=',\n this.numKey\n );\n }\n\n // PARSE DATA OBJECT (thus testing if it is a JSON string) - OR TRY & WORK OUT WHY THE PARSING FAILED\n let feedbackObj: SFFeedbackObj;\n\n try {\n feedbackObj = JSON.parse(event.data);\n } catch (e) {\n // Was the message generated by webpack?\n if (isWebpackPostMsg(event)) {\n if (this.sfConfig.showWarnings) logger.log('### SecuredField::postMessageListenerFn:: PARSE FAIL - WEBPACK');\n return;\n }\n\n // Was the message generated by ChromeVox?\n if (isChromeVoxPostMsg(event)) {\n if (this.sfConfig.showWarnings) logger.log('### SecuredField::postMessageListenerFn:: PARSE FAIL - CHROMEVOX');\n return;\n }\n\n if (this.sfConfig.showWarnings)\n logger.log('### SecuredField::postMessageListenerFn:: PARSE FAIL - UNKNOWN REASON: event.data=', event.data);\n return;\n }\n\n // CHECK FOR EXPECTED PROPS\n const hasMainProps: boolean = hasOwnProperty(feedbackObj, 'action') && hasOwnProperty(feedbackObj, 'numKey');\n\n if (!hasMainProps) {\n if (this.sfConfig.showWarnings) logger.warn('WARNING SecuredField :: postMessage listener for iframe :: data mismatch!');\n return;\n }\n\n if (process.env.NODE_ENV === 'development' && logPostMsg) {\n logger.log('### SecuredField::postMessageListener:: feedbackObj.numKey=', feedbackObj.numKey);\n }\n\n if (this.numKey !== feedbackObj.numKey) {\n if (this.sfConfig.showWarnings) {\n logger.warn(\n 'WARNING SecuredField :: postMessage listener for iframe :: data mismatch! (Probably a message from an unrelated securedField)'\n );\n }\n return;\n }\n\n // VALIDATION CHECKS PASSED - DECIDE ON COURSE OF ACTION\n if (process.env.NODE_ENV === 'development' && logPostMsg) {\n logger.log(\n '### SecuredField::postMessageListener:: numkeys match PROCEED WITH POST MESSAGE PROCESSING fieldType=',\n this.sfConfig.fieldType,\n 'txVariant=',\n this.sfConfig.txVariant\n );\n }\n\n switch (feedbackObj.action) {\n case 'encryption':\n this.isValid = true;\n this.onEncryptionCallback(feedbackObj);\n break;\n\n case 'config':\n if (window._b$dl)\n console.log('### SecuredField::postMessageListenerFn:: configured - calling onConfigCallback', feedbackObj.fieldType);\n this.onConfigCallback(feedbackObj);\n break;\n\n case 'focus':\n this.onFocusCallback(feedbackObj);\n break;\n\n case 'binValue':\n this.onBinValueCallback(feedbackObj);\n break;\n\n // iOS ONLY - RE. iOS BUGS AROUND BLUR AND FOCUS EVENTS\n case 'touch':\n this.onTouchstartCallback(feedbackObj);\n break;\n\n // Only happens for Firefox & IE <= 11\n case 'shifttab':\n this.onShiftTabCallback(feedbackObj);\n break;\n\n case 'autoComplete':\n this.onAutoCompleteCallback(feedbackObj);\n break;\n\n case 'enterKeyPressed':\n this.onKeyPressedCallback(feedbackObj);\n break;\n\n /**\n * Validate, because action =\n *\n * 'brand'\n * 'delete'\n * 'luhnCheck'\n * //'incomplete field' (an error that follows from a focus (blur) event)\n * 'incorrectly filled field' (an error that follows from a focus (blur) event) // NEW\n * 'numberKeyPressed' (or date-, month-, year-, cvc-, pin-, or iban- KeyPressed)\n * - since we have no \"error\" action \"...KeyPressed\" is the action type on most error events (other than \"incomplete field\" or \"luhnCheck\")\n * and often these error events representing the clearing of an existing error\n */\n default:\n // If we're validation handling (& not encryption handling) field must be invalid\n this.isValid = false;\n this.onValidationCallback(feedbackObj);\n }\n }\n\n destroy(): void {\n off(window, 'message', this.postMessageListener, false);\n off(this.iframeRef, 'load', this.iframeOnLoadListener, false);\n this.iframeContentWindow = null;\n removeAllChildren(this.holderEl);\n }\n\n /**\n * Returns whether the securedField is hidden OR whether it is optional and not in error\n */\n isOptionalOrHidden(): boolean {\n if (\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_DATE ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_MONTH ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_YEAR\n ) {\n switch (this.expiryDatePolicy) {\n case DATE_POLICY_HIDDEN:\n return true;\n case DATE_POLICY_OPTIONAL:\n return !this.hasError;\n default:\n return false;\n }\n }\n\n if (this.sfConfig.fieldType === ENCRYPTED_SECURITY_CODE) {\n switch (this.cvcPolicy) {\n case CVC_POLICY_HIDDEN:\n return true;\n case CVC_POLICY_OPTIONAL:\n return !this.hasError;\n default:\n return false;\n }\n }\n\n // Any other type of securedField is not optional & can't be hidden\n return false;\n }\n\n // /////// ALLOCATE CALLBACKS /////////\n onIframeLoaded(callbackFn: RtnType_noParamVoidFn): SecuredField {\n this.onIframeLoadedCallback = callbackFn;\n return this;\n }\n\n onEncryption(callbackFn: RtnType_callbackFn): SecuredField {\n this.onEncryptionCallback = callbackFn;\n return this;\n }\n\n onValidation(callbackFn: RtnType_callbackFn): SecuredField {\n this.onValidationCallback = callbackFn;\n return this;\n }\n\n onConfig(callbackFn: RtnType_callbackFn): SecuredField {\n this.onConfigCallback = callbackFn;\n return this;\n }\n\n onFocus(callbackFn: RtnType_callbackFn): SecuredField {\n this.onFocusCallback = callbackFn;\n return this;\n }\n\n onBinValue(callbackFn: RtnType_callbackFn): SecuredField {\n this.onBinValueCallback = callbackFn;\n return this;\n }\n\n onTouchstart(callbackFn: RtnType_callbackFn): SecuredField {\n this.onTouchstartCallback = callbackFn;\n return this;\n }\n\n onShiftTab(callbackFn: RtnType_callbackFn): SecuredField {\n this.onShiftTabCallback = callbackFn;\n return this;\n }\n\n onAutoComplete(callbackFn: RtnType_callbackFn): SecuredField {\n this.onAutoCompleteCallback = callbackFn;\n return this;\n }\n\n onKeyPressed(callbackFn: RtnType_callbackFn): SecuredField {\n this.onKeyPressedCallback = callbackFn;\n return this;\n }\n //------------------------------------\n\n // ///////////// GETTERS/SETTERS //////////////\n\n get errorType(): string {\n return this._errorType;\n }\n set errorType(value: string) {\n this._errorType = value;\n }\n\n get hasError(): boolean {\n return this._hasError;\n }\n set hasError(value: boolean) {\n this._hasError = value;\n }\n\n get isValid(): boolean {\n if (this.sfConfig.fieldType === ENCRYPTED_SECURITY_CODE) {\n switch (this.cvcPolicy) {\n case CVC_POLICY_HIDDEN:\n // If cvc is hidden then the field is always valid\n return true;\n case CVC_POLICY_OPTIONAL:\n // If cvc is optional then the field is always valid UNLESS it has an error\n return !this.hasError;\n default:\n return this._isValid;\n }\n }\n\n if (\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_DATE ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_MONTH ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_YEAR\n ) {\n switch (this.expiryDatePolicy) {\n case DATE_POLICY_HIDDEN:\n // If date is hidden then the field is always valid\n return true;\n case DATE_POLICY_OPTIONAL:\n // If date is optional then the field is always valid UNLESS it has an error\n return !this.hasError;\n default:\n return this._isValid;\n }\n }\n\n return this._isValid;\n }\n set isValid(value: boolean) {\n this._isValid = value;\n }\n\n get cvcPolicy(): CVCPolicyType {\n return this._cvcPolicy;\n }\n\n set cvcPolicy(value: CVCPolicyType) {\n // Only set if this is a CVC field\n if (this.sfConfig.fieldType !== ENCRYPTED_SECURITY_CODE) return;\n\n // Only set if value has changed\n if (value === this.cvcPolicy) return;\n\n if (process.env.NODE_ENV === 'development' && doLog) logger.log(this.sfConfig.fieldType, '### SecuredField::cvcPolicy:: value=', value);\n\n this._cvcPolicy = value;\n\n // If the field has changed status (required <--> not required) AND it's error state was due to an isValidated call\n // NOTE: fixes issue in Components where you first validate and then start typing a maestro number\n // - w/o this and the fix in CSF the maestro PM will never register as valid\n if (this.hasError && this.errorType === 'isValidated') {\n this.hasError = false;\n }\n }\n\n get expiryDatePolicy(): DatePolicyType {\n return this._expiryDatePolicy;\n }\n\n set expiryDatePolicy(value: DatePolicyType) {\n // Only set if this is a date field type of securedField\n if (\n this.sfConfig.fieldType !== ENCRYPTED_EXPIRY_DATE &&\n this.sfConfig.fieldType !== ENCRYPTED_EXPIRY_MONTH &&\n this.sfConfig.fieldType !== ENCRYPTED_EXPIRY_YEAR\n )\n return;\n\n // Only set if value has changed\n if (value === this.expiryDatePolicy) return;\n\n if (process.env.NODE_ENV === 'development' && doLog) logger.log(this.sfConfig.fieldType, '### SecuredField:expiryDatePolicy:: value=', value);\n\n this._expiryDatePolicy = value;\n\n // If the field has changed status (required <--> not required) AND it's error state was due to an isValidated call\n if (this.hasError && this.errorType === 'isValidated') {\n this.hasError = false;\n }\n }\n\n get iframeContentWindow(): Window {\n return this._iframeContentWindow;\n }\n set iframeContentWindow(value: Window) {\n this._iframeContentWindow = value;\n }\n\n get isEncrypted(): boolean {\n return this._isEncrypted;\n }\n set isEncrypted(value: boolean) {\n this._isEncrypted = value;\n }\n\n get numKey(): number {\n return this._numKey;\n }\n set numKey(value: number) {\n this._numKey = value;\n }\n\n // Internal use - way to create listener refs that we can add/remove\n get iframeOnLoadListener(): RtnType_noParamVoidFn {\n return this._iframeOnLoadListener;\n }\n set iframeOnLoadListener(value: RtnType_noParamVoidFn) {\n this._iframeOnLoadListener = value.bind(this);\n }\n\n get postMessageListener(): RtnType_postMessageListener {\n return this._postMessageListener;\n }\n set postMessageListener(value: RtnType_postMessageListener) {\n this._postMessageListener = value.bind(this);\n }\n}\n\nexport default SecuredField;\n"],"names":["SecuredField","AbstractSecuredField","init","i18n","iframeSrc","placeholders","showContextualElement","processedAriaConfig","processAriaConfig","this","sfConfig","txVariant","fieldType","iframeUIConfig","ariaConfig","processPlaceholders","iframeConfig","src","title","iframeTitle","policy","iframeEl","createIframe","holderEl","appendChild","iframe","selectOne","iframeContentWindow","contentWindow","iframeOnLoadListener","iframeOnLoadListenerFn","on","iframeRef","postMessageListener","postMessageListenerFn","window","configObj","numKey","_b$dl","console","log","postMessageToIframe","loadingContext","onIframeLoadedCallback","event","originCheckPassed","showWarnings","feedbackObj","JSON","parse","data","e","isWebpackPostMsg","logger","isChromeVoxPostMsg","hasOwnProperty","action","isValid","onEncryptionCallback","onConfigCallback","onFocusCallback","onBinValueCallback","onTouchstartCallback","onShiftTabCallback","onAutoCompleteCallback","onKeyPressedCallback","onValidationCallback","destroy","off","removeAllChildren","isOptionalOrHidden","ENCRYPTED_EXPIRY_DATE","ENCRYPTED_EXPIRY_MONTH","ENCRYPTED_EXPIRY_YEAR","expiryDatePolicy","DATE_POLICY_HIDDEN","DATE_POLICY_OPTIONAL","hasError","ENCRYPTED_SECURITY_CODE","cvcPolicy","CVC_POLICY_HIDDEN","CVC_POLICY_OPTIONAL","onIframeLoaded","callbackFn","onEncryption","onValidation","onConfig","onFocus","onBinValue","onTouchstart","onShiftTab","onAutoComplete","onKeyPressed","errorType","_errorType","value","_hasError","_isValid","_cvcPolicy","_expiryDatePolicy","_iframeContentWindow","isEncrypted","_isEncrypted","_numKey","_iframeOnLoadListener","bind","_postMessageListener","constructor","pSetupObj","super","configVarsFromSetUpObj","reject","from","generateRandomNumber"],"mappings":"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"}
1
+ {"version":3,"file":"SecuredField.js","sources":["../../../../../../../src/components/internal/SecuredFields/lib/securedField/SecuredField.ts"],"sourcesContent":["import * as logger from '../utilities/logger';\nimport createIframe from './utils/createIframe';\nimport { removeAllChildren, selectOne } from '../utilities/dom';\nimport { off, on } from '../../../../../utils/listenerUtils';\nimport postMessageToIframe from '../CSF/utils/iframes/postMessageToIframe';\nimport { isChromeVoxPostMsg, isWebpackPostMsg, originCheckPassed } from '../CSF/utils/iframes/postMessageValidation';\nimport {\n CVC_POLICY_HIDDEN,\n CVC_POLICY_OPTIONAL,\n DATE_POLICY_HIDDEN,\n DATE_POLICY_OPTIONAL,\n ENCRYPTED_EXPIRY_DATE,\n ENCRYPTED_EXPIRY_MONTH,\n ENCRYPTED_EXPIRY_YEAR,\n ENCRYPTED_SECURITY_CODE\n} from '../constants';\nimport { generateRandomNumber } from '../utilities/commonUtils';\nimport { CVCPolicyType, DatePolicyType, RtnType_callbackFn, RtnType_noParamVoidFn, RtnType_postMessageListener, SFFeedbackObj } from '../types';\nimport AbstractSecuredField from './AbstractSecuredField';\nimport { AriaConfig, IframeConfigObject, SecuredFieldSetupObject, SecuredFieldCommonProps } from '../types';\nimport { reject } from '../../../../../utils/commonUtils';\nimport { processAriaConfig } from './utils/processAriaConfig';\nimport { processPlaceholders } from './utils/processPlaceholders';\nimport Language from '../../../../../language/Language';\nimport { hasOwnProperty } from '../../../../../utils/hasOwnProperty';\nimport { Placeholders } from '../../SFP/types';\nimport './SecuredField.scss';\nimport { AnalyticsErrorEvent, ErrorEventCode, ErrorEventType } from '../../../../../core/Analytics/events/AnalyticsErrorEvent';\n\nconst logPostMsg = false;\nconst doLog = false;\n\nclass SecuredField extends AbstractSecuredField {\n constructor(pSetupObj: SecuredFieldSetupObject, i18n: Language) {\n super();\n\n /**\n * List of props to exclude from being set on this.sfConfig.\n * These props are only required for internal purposes. They do not get sent to the iframe\n */\n const deltaPropsArr: string[] = ['loadingContext', 'holderEl', 'iframeSrc', 'showContextualElement', 'placeholders'];\n\n /**\n * List of props from setup object that will be set on this.sfConfig\n * These props will all end up being sent to the iframe\n */\n const configVarsFromSetUpObj = reject(deltaPropsArr).from(pSetupObj);\n\n // Copy passed setup object values to this.sfConfig\n this.sfConfig = {\n // ...this.sfConfig, // Do we need to do this? Pretty sure we don't\n ...configVarsFromSetUpObj,\n // Break references on iframeUIConfig object so we can overwrite its properties in each securedField instance\n iframeUIConfig: { ...configVarsFromSetUpObj.iframeUIConfig }\n } as SecuredFieldCommonProps;\n\n /**\n * Extract values only needed for init\n */\n const { iframeSrc, placeholders, showContextualElement } = pSetupObj;\n\n /**\n * Store those passed setup object values that are needed in multiple functions\n */\n this.loadingContext = pSetupObj.loadingContext;\n this.holderEl = pSetupObj.holderEl;\n this.submitAnalytics = pSetupObj.submitAnalytics;\n this.componentType = pSetupObj.componentType;\n\n /**\n * Initiate other values on 'this' through setters\n */\n this.isValid = false;\n this.iframeContentWindow = null;\n this.numKey = generateRandomNumber();\n this.isEncrypted = false;\n this.hasError = false;\n this.errorType = '';\n this.cvcPolicy = pSetupObj.cvcPolicy;\n this.expiryDatePolicy = pSetupObj.expiryDatePolicy;\n\n if (process.env.NODE_ENV === 'development' && doLog) {\n logger.log(\n '### SecuredField::constructor:: this.sfConfig.fieldType=',\n this.sfConfig.fieldType,\n 'isValid=',\n this._isValid,\n 'numKey=',\n this.numKey\n );\n logger.log('\\n');\n }\n\n return this.init(i18n, iframeSrc, placeholders, showContextualElement);\n }\n\n init(i18n: Language, iframeSrc: string, placeholders: Placeholders, showContextualElement: boolean): SecuredField {\n /**\n * Ensure all fields have a related ariaConfig object containing, at minimum, an iframeTitle property and a (translated) errors object\n */\n const processedAriaConfig: AriaConfig = processAriaConfig(this.sfConfig.txVariant, this.sfConfig.fieldType, i18n, showContextualElement);\n // Set result back onto config object\n this.sfConfig.iframeUIConfig.ariaConfig = processedAriaConfig;\n\n // Set result back onto config object\n this.sfConfig.iframeUIConfig.placeholders = processPlaceholders(this.sfConfig.txVariant, this.sfConfig.fieldType, placeholders);\n\n /**\n * Configure, create & reference iframe and add load listener\n */\n const iframeConfig = {\n src: iframeSrc,\n title: processedAriaConfig[this.sfConfig.fieldType].iframeTitle,\n policy: 'origin'\n };\n\n const iframeEl: HTMLIFrameElement = createIframe(iframeConfig);\n\n // Place the iframe into the holder\n this.holderEl.appendChild(iframeEl);\n\n // Now examine the holder to get an actual DOM node\n const iframe: HTMLIFrameElement = selectOne(this.holderEl, '.js-iframe');\n\n if (iframe) {\n if (!iframe.contentWindow) {\n // Warn the dev\n console.error(\n 'ERROR: Trying to initialise a securedField iframe, but the iframe.contentWindow is undefined. Are you sure the element into which the Card component is being mounted already exists in the DOM *before* the Card component is mounted?'\n );\n // Log the error\n const event = new AnalyticsErrorEvent({\n component: this.componentType,\n code: ErrorEventCode.SECURED_FIELDS_IFRAME_CONTENT_WINDOW_NOT_FOUND,\n errorType: ErrorEventType.implementation,\n message: `Trying to initialise an iframe for ${this.sfConfig.fieldType}, but the iframe.contentWindow is undefined`\n });\n\n this.submitAnalytics?.(event);\n }\n\n this.iframeContentWindow = iframe.contentWindow;\n\n // Create reference to bound fn (see getters/setters for binding)\n this.iframeOnLoadListener = this.iframeOnLoadListenerFn;\n\n on(iframe, 'load', this.iframeOnLoadListener, false);\n }\n\n this.iframeRef = iframe;\n\n return this;\n }\n\n iframeOnLoadListenerFn(): void {\n // Create reference to bound fn (see getters/setters for binding)\n this.postMessageListener = this.postMessageListenerFn;\n\n // Add general listener for 'message' EVENT - the event that 'powers' postMessage\n on(window, 'message', this.postMessageListener, false);\n\n // Create and send config object to iframe\n const configObj: IframeConfigObject = {\n ...this.sfConfig,\n numKey: this.numKey\n };\n\n if (window._b$dl) console.log('### SecuredField:::: onIframeLoaded:: created configObj=', configObj);\n\n postMessageToIframe(configObj, this.iframeContentWindow, this.loadingContext);\n //--\n\n // Callback to say iframe loaded\n this.onIframeLoadedCallback();\n }\n\n postMessageListenerFn(event: MessageEvent): void {\n // Check message is from expected domain\n if (!originCheckPassed(event, this.loadingContext, this.sfConfig.showWarnings)) {\n return;\n }\n\n // TODO - for debugging purposes this would always be useful to see\n // logger.log('\\n',this.sfConfig.fieldType,'### CSF SecuredField::postMessageListener:: event.data=',event.data);\n\n if (process.env.NODE_ENV === 'development' && logPostMsg) {\n logger.log(\n '\\n###CSF SecuredField::postMessageListener:: DOMAIN & ORIGIN MATCH, NO WEBPACK WEIRDNESS fieldType=',\n this.sfConfig.fieldType,\n 'txVariant=',\n this.sfConfig.txVariant,\n 'this.numKey=',\n this.numKey\n );\n }\n\n // PARSE DATA OBJECT (thus testing if it is a JSON string) - OR TRY & WORK OUT WHY THE PARSING FAILED\n let feedbackObj: SFFeedbackObj;\n\n try {\n feedbackObj = JSON.parse(event.data);\n } catch (e) {\n // Was the message generated by webpack?\n if (isWebpackPostMsg(event)) {\n if (this.sfConfig.showWarnings) logger.log('### SecuredField::postMessageListenerFn:: PARSE FAIL - WEBPACK');\n return;\n }\n\n // Was the message generated by ChromeVox?\n if (isChromeVoxPostMsg(event)) {\n if (this.sfConfig.showWarnings) logger.log('### SecuredField::postMessageListenerFn:: PARSE FAIL - CHROMEVOX');\n return;\n }\n\n if (this.sfConfig.showWarnings)\n logger.log('### SecuredField::postMessageListenerFn:: PARSE FAIL - UNKNOWN REASON: event.data=', event.data);\n return;\n }\n\n // CHECK FOR EXPECTED PROPS\n const hasMainProps: boolean = hasOwnProperty(feedbackObj, 'action') && hasOwnProperty(feedbackObj, 'numKey');\n\n if (!hasMainProps) {\n if (this.sfConfig.showWarnings) logger.warn('WARNING SecuredField :: postMessage listener for iframe :: data mismatch!');\n return;\n }\n\n if (process.env.NODE_ENV === 'development' && logPostMsg) {\n logger.log('### SecuredField::postMessageListener:: feedbackObj.numKey=', feedbackObj.numKey);\n }\n\n if (this.numKey !== feedbackObj.numKey) {\n if (this.sfConfig.showWarnings) {\n logger.warn(\n 'WARNING SecuredField :: postMessage listener for iframe :: data mismatch! (Probably a message from an unrelated securedField)'\n );\n }\n return;\n }\n\n // VALIDATION CHECKS PASSED - DECIDE ON COURSE OF ACTION\n if (process.env.NODE_ENV === 'development' && logPostMsg) {\n logger.log(\n '### SecuredField::postMessageListener:: numkeys match PROCEED WITH POST MESSAGE PROCESSING fieldType=',\n this.sfConfig.fieldType,\n 'txVariant=',\n this.sfConfig.txVariant\n );\n }\n\n switch (feedbackObj.action) {\n case 'encryption':\n this.isValid = true;\n this.onEncryptionCallback(feedbackObj);\n break;\n\n case 'config':\n if (window._b$dl)\n console.log('### SecuredField::postMessageListenerFn:: configured - calling onConfigCallback', feedbackObj.fieldType);\n this.onConfigCallback(feedbackObj);\n break;\n\n case 'focus':\n this.onFocusCallback(feedbackObj);\n break;\n\n case 'binValue':\n this.onBinValueCallback(feedbackObj);\n break;\n\n // iOS ONLY - RE. iOS BUGS AROUND BLUR AND FOCUS EVENTS\n case 'touch':\n this.onTouchstartCallback(feedbackObj);\n break;\n\n // Only happens for Firefox & IE <= 11\n case 'shifttab':\n this.onShiftTabCallback(feedbackObj);\n break;\n\n case 'autoComplete':\n this.onAutoCompleteCallback(feedbackObj);\n break;\n\n case 'enterKeyPressed':\n this.onKeyPressedCallback(feedbackObj);\n break;\n\n /**\n * Validate, because action =\n *\n * 'brand'\n * 'delete'\n * 'luhnCheck'\n * //'incomplete field' (an error that follows from a focus (blur) event)\n * 'incorrectly filled field' (an error that follows from a focus (blur) event) // NEW\n * 'numberKeyPressed' (or date-, month-, year-, cvc-, pin-, or iban- KeyPressed)\n * - since we have no \"error\" action \"...KeyPressed\" is the action type on most error events (other than \"incomplete field\" or \"luhnCheck\")\n * and often these error events representing the clearing of an existing error\n */\n default:\n // If we're validation handling (& not encryption handling) field must be invalid\n this.isValid = false;\n this.onValidationCallback(feedbackObj);\n }\n }\n\n destroy(): void {\n off(window, 'message', this.postMessageListener, false);\n off(this.iframeRef, 'load', this.iframeOnLoadListener, false);\n this.iframeContentWindow = null;\n removeAllChildren(this.holderEl);\n }\n\n /**\n * Returns whether the securedField is hidden OR whether it is optional and not in error\n */\n isOptionalOrHidden(): boolean {\n if (\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_DATE ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_MONTH ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_YEAR\n ) {\n switch (this.expiryDatePolicy) {\n case DATE_POLICY_HIDDEN:\n return true;\n case DATE_POLICY_OPTIONAL:\n return !this.hasError;\n default:\n return false;\n }\n }\n\n if (this.sfConfig.fieldType === ENCRYPTED_SECURITY_CODE) {\n switch (this.cvcPolicy) {\n case CVC_POLICY_HIDDEN:\n return true;\n case CVC_POLICY_OPTIONAL:\n return !this.hasError;\n default:\n return false;\n }\n }\n\n // Any other type of securedField is not optional & can't be hidden\n return false;\n }\n\n // /////// ALLOCATE CALLBACKS /////////\n onIframeLoaded(callbackFn: RtnType_noParamVoidFn): SecuredField {\n this.onIframeLoadedCallback = callbackFn;\n return this;\n }\n\n onEncryption(callbackFn: RtnType_callbackFn): SecuredField {\n this.onEncryptionCallback = callbackFn;\n return this;\n }\n\n onValidation(callbackFn: RtnType_callbackFn): SecuredField {\n this.onValidationCallback = callbackFn;\n return this;\n }\n\n onConfig(callbackFn: RtnType_callbackFn): SecuredField {\n this.onConfigCallback = callbackFn;\n return this;\n }\n\n onFocus(callbackFn: RtnType_callbackFn): SecuredField {\n this.onFocusCallback = callbackFn;\n return this;\n }\n\n onBinValue(callbackFn: RtnType_callbackFn): SecuredField {\n this.onBinValueCallback = callbackFn;\n return this;\n }\n\n onTouchstart(callbackFn: RtnType_callbackFn): SecuredField {\n this.onTouchstartCallback = callbackFn;\n return this;\n }\n\n onShiftTab(callbackFn: RtnType_callbackFn): SecuredField {\n this.onShiftTabCallback = callbackFn;\n return this;\n }\n\n onAutoComplete(callbackFn: RtnType_callbackFn): SecuredField {\n this.onAutoCompleteCallback = callbackFn;\n return this;\n }\n\n onKeyPressed(callbackFn: RtnType_callbackFn): SecuredField {\n this.onKeyPressedCallback = callbackFn;\n return this;\n }\n //------------------------------------\n\n // ///////////// GETTERS/SETTERS //////////////\n\n get errorType(): string {\n return this._errorType;\n }\n set errorType(value: string) {\n this._errorType = value;\n }\n\n get hasError(): boolean {\n return this._hasError;\n }\n set hasError(value: boolean) {\n this._hasError = value;\n }\n\n get isValid(): boolean {\n if (this.sfConfig.fieldType === ENCRYPTED_SECURITY_CODE) {\n switch (this.cvcPolicy) {\n case CVC_POLICY_HIDDEN:\n // If cvc is hidden then the field is always valid\n return true;\n case CVC_POLICY_OPTIONAL:\n // If cvc is optional then the field is always valid UNLESS it has an error\n return !this.hasError;\n default:\n return this._isValid;\n }\n }\n\n if (\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_DATE ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_MONTH ||\n this.sfConfig.fieldType === ENCRYPTED_EXPIRY_YEAR\n ) {\n switch (this.expiryDatePolicy) {\n case DATE_POLICY_HIDDEN:\n // If date is hidden then the field is always valid\n return true;\n case DATE_POLICY_OPTIONAL:\n // If date is optional then the field is always valid UNLESS it has an error\n return !this.hasError;\n default:\n return this._isValid;\n }\n }\n\n return this._isValid;\n }\n set isValid(value: boolean) {\n this._isValid = value;\n }\n\n get cvcPolicy(): CVCPolicyType {\n return this._cvcPolicy;\n }\n\n set cvcPolicy(value: CVCPolicyType) {\n // Only set if this is a CVC field\n if (this.sfConfig.fieldType !== ENCRYPTED_SECURITY_CODE) return;\n\n // Only set if value has changed\n if (value === this.cvcPolicy) return;\n\n if (process.env.NODE_ENV === 'development' && doLog) logger.log(this.sfConfig.fieldType, '### SecuredField::cvcPolicy:: value=', value);\n\n this._cvcPolicy = value;\n\n // If the field has changed status (required <--> not required) AND it's error state was due to an isValidated call\n // NOTE: fixes issue in Components where you first validate and then start typing a maestro number\n // - w/o this and the fix in CSF the maestro PM will never register as valid\n if (this.hasError && this.errorType === 'isValidated') {\n this.hasError = false;\n }\n }\n\n get expiryDatePolicy(): DatePolicyType {\n return this._expiryDatePolicy;\n }\n\n set expiryDatePolicy(value: DatePolicyType) {\n // Only set if this is a date field type of securedField\n if (\n this.sfConfig.fieldType !== ENCRYPTED_EXPIRY_DATE &&\n this.sfConfig.fieldType !== ENCRYPTED_EXPIRY_MONTH &&\n this.sfConfig.fieldType !== ENCRYPTED_EXPIRY_YEAR\n )\n return;\n\n // Only set if value has changed\n if (value === this.expiryDatePolicy) return;\n\n if (process.env.NODE_ENV === 'development' && doLog) logger.log(this.sfConfig.fieldType, '### SecuredField:expiryDatePolicy:: value=', value);\n\n this._expiryDatePolicy = value;\n\n // If the field has changed status (required <--> not required) AND it's error state was due to an isValidated call\n if (this.hasError && this.errorType === 'isValidated') {\n this.hasError = false;\n }\n }\n\n get iframeContentWindow(): Window {\n return this._iframeContentWindow;\n }\n set iframeContentWindow(value: Window) {\n this._iframeContentWindow = value;\n }\n\n get isEncrypted(): boolean {\n return this._isEncrypted;\n }\n set isEncrypted(value: boolean) {\n this._isEncrypted = value;\n }\n\n get numKey(): number {\n return this._numKey;\n }\n set numKey(value: number) {\n this._numKey = value;\n }\n\n // Internal use - way to create listener refs that we can add/remove\n get iframeOnLoadListener(): RtnType_noParamVoidFn {\n return this._iframeOnLoadListener;\n }\n set iframeOnLoadListener(value: RtnType_noParamVoidFn) {\n this._iframeOnLoadListener = value.bind(this);\n }\n\n get postMessageListener(): RtnType_postMessageListener {\n return this._postMessageListener;\n }\n set postMessageListener(value: RtnType_postMessageListener) {\n this._postMessageListener = value.bind(this);\n }\n}\n\nexport default SecuredField;\n"],"names":["SecuredField","AbstractSecuredField","init","i18n","iframeSrc","placeholders","showContextualElement","processedAriaConfig","processAriaConfig","this","sfConfig","txVariant","fieldType","iframeUIConfig","ariaConfig","processPlaceholders","iframeConfig","src","title","iframeTitle","policy","iframeEl","createIframe","holderEl","appendChild","iframe","selectOne","contentWindow","console","error","event","AnalyticsErrorEvent","component","componentType","code","ErrorEventCode","SECURED_FIELDS_IFRAME_CONTENT_WINDOW_NOT_FOUND","errorType","ErrorEventType","implementation","message","submitAnalytics","iframeContentWindow","iframeOnLoadListener","iframeOnLoadListenerFn","on","iframeRef","postMessageListener","postMessageListenerFn","window","configObj","numKey","_b$dl","log","postMessageToIframe","loadingContext","onIframeLoadedCallback","originCheckPassed","showWarnings","feedbackObj","JSON","parse","data","e","isWebpackPostMsg","logger","isChromeVoxPostMsg","hasOwnProperty","action","isValid","onEncryptionCallback","onConfigCallback","onFocusCallback","onBinValueCallback","onTouchstartCallback","onShiftTabCallback","onAutoCompleteCallback","onKeyPressedCallback","onValidationCallback","destroy","off","removeAllChildren","isOptionalOrHidden","ENCRYPTED_EXPIRY_DATE","ENCRYPTED_EXPIRY_MONTH","ENCRYPTED_EXPIRY_YEAR","expiryDatePolicy","DATE_POLICY_HIDDEN","DATE_POLICY_OPTIONAL","hasError","ENCRYPTED_SECURITY_CODE","cvcPolicy","CVC_POLICY_HIDDEN","CVC_POLICY_OPTIONAL","onIframeLoaded","callbackFn","onEncryption","onValidation","onConfig","onFocus","onBinValue","onTouchstart","onShiftTab","onAutoComplete","onKeyPressed","_errorType","value","_hasError","_isValid","_cvcPolicy","_expiryDatePolicy","_iframeContentWindow","isEncrypted","_isEncrypted","_numKey","_iframeOnLoadListener","bind","_postMessageListener","constructor","pSetupObj","super","configVarsFromSetUpObj","reject","from","generateRandomNumber"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import t from"../../../_virtual/index.js";import{stopPropagationForActionKeys as o}from"../Button/stopPropagationForActionKeys.js";function n({classNameModifiers:n=[],selectedValue:a,disabled:s=!1,options:r,onChange:l}){return r&&0!==r.length?e("div",{className:t("adyen-checkout__segmented-control",{"adyen-checkout__segmented-control--disabled":s},...n.map(e=>`adyen-checkout__segmented-control--${e}`)),role:"group"},r.map(({label:n,value:r,controls:c,htmlProps:d})=>e("button",{disabled:s,key:r,onClick:e=>l(r,e),onKeyPress:o,onKeyDown:o,className:t("adyen-checkout__segmented-control-segment",{"adyen-checkout__segmented-control-segment--selected":a===r}),"aria-controls":c,"aria-expanded":a===r,type:"button",...d},n))):null}export{n as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import o from"../../../_virtual/index.js";import{stopPropagationForActionKeys as t}from"../Button/stopPropagationForActionKeys.js";const n=({classNameModifiers:n=[],selectedValue:a,disabled:s=!1,options:c,onChange:l})=>c&&0!==c.length?e("div",{className:o("adyen-checkout__segmented-control",{"adyen-checkout__segmented-control--disabled":s},...n.map(e=>`adyen-checkout__segmented-control--${e}`)),role:"group"},c.map(({label:n,value:c,controls:r,htmlProps:d})=>e("button",{disabled:s,key:c,onClick:e=>l(c,e),onKeyPress:t,onKeyDown:t,className:o("adyen-checkout__segmented-control-segment",{"adyen-checkout__segmented-control-segment--selected":a===c}),"aria-controls":r,"aria-expanded":a===c,type:"button",...d},n))):null;export{n as SegmentedControl};
2
2
  //# sourceMappingURL=SegmentedControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.js","sources":["../../../../../src/components/internal/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport './SegmentedControl.scss';\nimport { stopPropagationForActionKeys } from '../Button/stopPropagationForActionKeys';\n\nexport interface SegmentedControlOption<T> {\n label: string;\n value: T;\n id: string;\n controls: string;\n htmlProps?: {};\n}\n\nexport type SegmentedControlOptions<T> = Array<SegmentedControlOption<T>>;\n\nexport interface SegmentedControlProps<T> {\n classNameModifiers?: string[];\n selectedValue: T;\n disabled?: boolean;\n options: SegmentedControlOptions<T>;\n onChange(value: T, event: MouseEvent): void;\n}\n\n/**\n *\n * example:\n * <SegmentedControl\n * onChange={(value) = setMode(value)}\n * selectedValue={mode}\n * disabled={status === 'loading'}\n * classNameModifiers={['css-class']}\n * options={segmentedControlOptions}\n * />\n *\n * @param classNameModifiers\n * @param selectedValue\n * @param disabled\n * @param options\n * @param onChange\n * @constructor\n */\nfunction SegmentedControl<T>({ classNameModifiers = [], selectedValue, disabled = false, options, onChange }: SegmentedControlProps<T>) {\n if (!options || options.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(\n 'adyen-checkout__segmented-control',\n { 'adyen-checkout__segmented-control--disabled': disabled },\n ...classNameModifiers.map(modifier => `adyen-checkout__segmented-control--${modifier}`)\n )}\n role=\"group\"\n >\n {options.map(({ label, value, controls, htmlProps }: SegmentedControlOption<T>) => (\n <button\n disabled={disabled}\n key={value}\n onClick={(event: MouseEvent) => onChange(value, event)}\n // Workaround: See ADR-0001-uielement-keyboard-event-propagation-workaround\n onKeyPress={stopPropagationForActionKeys}\n onKeyDown={stopPropagationForActionKeys}\n className={cx('adyen-checkout__segmented-control-segment', {\n 'adyen-checkout__segmented-control-segment--selected': selectedValue === value\n })}\n aria-controls={controls}\n aria-expanded={selectedValue === value}\n type=\"button\"\n {...htmlProps}\n >\n {label}\n </button>\n ))}\n </div>\n );\n}\n\nexport default SegmentedControl;\n"],"names":["SegmentedControl","classNameModifiers","selectedValue","disabled","options","onChange","length","h","div","className","cx","map","modifier","role","label","value","controls","htmlProps","button","key","onClick","event","onKeyPress","stopPropagationForActionKeys","onKeyDown","aria-controls","aria-expanded","type"],"mappings":"2MAyCA,SAASA,GAAoBC,mBAAEA,EAAqB,GAAEC,cAAEA,EAAaC,SAAEA,GAAW,EAAKC,QAAEA,EAAOC,SAAEA,IAC9F,OAAKD,GAA8B,IAAnBA,EAAQE,OAKpBC,EAACC,MAAAA,CACGC,UAAWC,EACP,oCACA,CAAE,8CAA+CP,MAC9CF,EAAmBU,IAAIC,GAAY,sCAAsCA,MAEhFC,KAAK,SAEJT,EAAQO,IAAI,EAAGG,QAAOC,QAAOC,WAAUC,eACpCV,EAACW,SAAAA,CACGf,SAAUA,EACVgB,IAAKJ,EACLK,QAAUC,GAAsBhB,EAASU,EAAOM,GAEhDC,WAAYC,EACZC,UAAWD,EACXd,UAAWC,EAAG,4CAA6C,CACvD,sDAAuDR,IAAkBa,IAE7EU,gBAAeT,EACfU,gBAAexB,IAAkBa,EACjCY,KAAK,YACDV,GAEHH,KA5BN,IAiCf"}
1
+ {"version":3,"file":"SegmentedControl.js","sources":["../../../../../src/components/internal/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport './SegmentedControl.scss';\nimport { stopPropagationForActionKeys } from '../Button/stopPropagationForActionKeys';\n\nexport interface SegmentedControlOption<T> {\n label: string;\n value: T;\n id: string;\n controls: string;\n htmlProps?: {};\n}\n\nexport type SegmentedControlOptions<T> = Array<SegmentedControlOption<T>>;\n\nexport interface SegmentedControlProps<T> {\n classNameModifiers?: string[];\n selectedValue: T;\n disabled?: boolean;\n options: SegmentedControlOptions<T>;\n onChange(value: T, event: MouseEvent): void;\n}\n\n/**\n *\n * example:\n * <SegmentedControl\n * onChange={(value) = setMode(value)}\n * selectedValue={mode}\n * disabled={status === 'loading'}\n * classNameModifiers={['css-class']}\n * options={segmentedControlOptions}\n * />\n *\n * @param classNameModifiers\n * @param selectedValue\n * @param disabled\n * @param options\n * @param onChange\n * @constructor\n */\nexport const SegmentedControl = <T,>({ classNameModifiers = [], selectedValue, disabled = false, options, onChange }: SegmentedControlProps<T>) => {\n if (!options || options.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(\n 'adyen-checkout__segmented-control',\n { 'adyen-checkout__segmented-control--disabled': disabled },\n ...classNameModifiers.map(modifier => `adyen-checkout__segmented-control--${modifier}`)\n )}\n role=\"group\"\n >\n {options.map(({ label, value, controls, htmlProps }: SegmentedControlOption<T>) => (\n <button\n disabled={disabled}\n key={value}\n onClick={(event: MouseEvent) => onChange(value, event)}\n // Workaround: See ADR-0001-uielement-keyboard-event-propagation-workaround\n onKeyPress={stopPropagationForActionKeys}\n onKeyDown={stopPropagationForActionKeys}\n className={cx('adyen-checkout__segmented-control-segment', {\n 'adyen-checkout__segmented-control-segment--selected': selectedValue === value\n })}\n aria-controls={controls}\n aria-expanded={selectedValue === value}\n type=\"button\"\n {...htmlProps}\n >\n {label}\n </button>\n ))}\n </div>\n );\n};\n"],"names":["SegmentedControl","classNameModifiers","selectedValue","disabled","options","onChange","length","h","div","className","cx","map","modifier","role","label","value","controls","htmlProps","button","key","onClick","event","onKeyPress","stopPropagationForActionKeys","onKeyDown","aria-controls","aria-expanded","type"],"mappings":"2MAyCO,MAAMA,EAAmB,EAAOC,qBAAqB,GAAIC,gBAAeC,YAAW,EAAOC,UAASC,cACjGD,GAA8B,IAAnBA,EAAQE,OAKpBC,EAACC,MAAAA,CACGC,UAAWC,EACP,oCACA,CAAE,8CAA+CP,MAC9CF,EAAmBU,IAAIC,GAAY,sCAAsCA,MAEhFC,KAAK,SAEJT,EAAQO,IAAI,EAAGG,QAAOC,QAAOC,WAAUC,eACpCV,EAACW,SAAAA,CACGf,SAAUA,EACVgB,IAAKJ,EACLK,QAAUC,GAAsBhB,EAASU,EAAOM,GAEhDC,WAAYC,EACZC,UAAWD,EACXd,UAAWC,EAAG,4CAA6C,CACvD,sDAAuDR,IAAkBa,IAE7EU,gBAAeT,EACfU,gBAAexB,IAAkBa,EACjCY,KAAK,YACDV,GAEHH,KA5BN"}
@@ -0,0 +1,2 @@
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";const a=({id:a,ariaLabelledBy:r,className:l,children:i})=>e("div",{id:a,"aria-labelledby":r,className:l,role:"region"},i);export{a as SegmentedControlRegion};
2
+ //# sourceMappingURL=SegmentedControlRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedControlRegion.js","sources":["../../../../../src/components/internal/SegmentedControl/SegmentedControlRegion.tsx"],"sourcesContent":["import { h } from 'preact';\n\nexport interface SegmentedControlRegionProps {\n id: string;\n ariaLabelledBy: string;\n className?: string;\n children: h.JSX.Element | h.JSX.Element[];\n}\n\nexport const SegmentedControlRegion = ({ id, ariaLabelledBy, className, children }: SegmentedControlRegionProps) => {\n return (\n <div id={id} aria-labelledby={ariaLabelledBy} className={className} role=\"region\">\n {children}\n </div>\n );\n};\n"],"names":["SegmentedControlRegion","id","ariaLabelledBy","className","children","h","div","aria-labelledby","role"],"mappings":"wEASO,MAAMA,EAAyB,EAAGC,KAAIC,iBAAgBC,YAAWC,cAEhEC,EAACC,MAAAA,CAAIL,GAAIA,EAAIM,kBAAiBL,EAAgBC,UAAWA,EAAWK,KAAK,UACpEJ"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import r from"../../../_virtual/index.js";import a from"../Button/Button.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import o from"../../../core/Context/useImage.js";import{PREFIX as c}from"../Icon/constants.js";import s from"../DetailsTable/DetailsTable.js";import{CopyButton as n}from"../Button/CopyButton.js";function _({voucherDetails:_=[],className:u="",...l}){const{i18n:i}=t(),d=o();return l.onActionHandled?.({componentType:l.paymentMethodType,actionDescription:"voucher-presented"}),e("div",{className:r("adyen-checkout__voucher-result",`adyen-checkout__voucher-result--${l.paymentMethodType}`,u)},e("div",{className:"adyen-checkout__voucher-result__top"},e("div",{className:"adyen-checkout__voucher-result__image"},!!l.imageUrl&&e("span",{className:"adyen-checkout__voucher-result__image__wrapper"},e("img",{alt:l.paymentMethodType,className:"adyen-checkout__voucher-result__image__brand",src:l.imageUrl})),!!l.issuerImageUrl&&e("span",{className:"adyen-checkout__voucher-result__image__wrapper"},e("img",{alt:l.paymentMethodType,className:"adyen-checkout__voucher-result__image__issuer",src:l.issuerImageUrl}))),e("div",{className:"adyen-checkout__voucher-result__introduction"},l.introduction," ",l.instructionsUrl&&e("a",{className:"adyen-checkout-link adyen-checkout-link--voucher-result-instructions",href:l.instructionsUrl,target:"_blank",rel:"noopener noreferrer"},i.get("voucher.readInstructions")," ›")),l.amount&&e("div",{className:"adyen-checkout__voucher-result__amount"},l.amount,l.surcharge&&e("span",{className:"adyen-checkout__voucher-result__surcharge"},"(",i.get("voucher.surcharge").replace("%@",l.surcharge),")"))),l.reference&&e("div",{className:"adyen-checkout__voucher-result__separator"},e("div",{className:"adyen-checkout__voucher-result__separator__inner"}),e("div",{className:"adyen-checkout__voucher-result__code__label"},e("span",{className:"adyen-checkout__voucher-result__code__label__text"},i.get("voucher.paymentReferenceLabel")))),e("div",{className:"adyen-checkout__voucher-result__bottom"},l.reference&&e("div",{className:"adyen-checkout__voucher-result__code"},l.barcode&&e("img",{alt:i.get("voucher.paymentReferenceLabel"),className:"adyen-checkout__voucher-result__code__barcode",src:l.barcode}),e("span",null,l.reference)),(!!l.downloadUrl||!!l.copyBtn)&&e("ul",{className:"adyen-checkout__voucher-result__actions"},!!l.copyBtn&&e("li",{className:"adyen-checkout__voucher-result__actions__item"},e(n,{inline:!0,text:l.reference})),!!l.downloadUrl&&e("li",{className:"adyen-checkout__voucher-result__actions__item"},e(a,{inline:!0,variant:"action",href:l.downloadUrl,icon:d({imageFolder:"components/"})(`${c}download`),label:l.downloadButtonText||i.get("button.download"),target:"_blank",rel:"noopener noreferrer"}))),e(s,{tableFields:_})))}export{_ as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import a from"../../../_virtual/index.js";import o from"../Button/Button.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import t from"../../../core/Context/useImage.js";import{PREFIX as c}from"../Icon/constants.js";import n from"../DetailsTable/DetailsTable.js";import{CopyButton as s}from"../Button/CopyButton.js";function l(l){const{voucherDetails:_=[],className:u="",showReferenceValue:i=!0}=l,{i18n:d}=r(),m=t();return l.onActionHandled?.({componentType:l.paymentMethodType,actionDescription:"voucher-presented"}),e("div",{className:a("adyen-checkout__voucher-result",`adyen-checkout__voucher-result--${l.paymentMethodType}`,u)},e("div",{className:"adyen-checkout__voucher-result__top"},e("div",{className:"adyen-checkout__voucher-result__image"},Boolean(l.imageUrl)&&e("span",{className:"adyen-checkout__voucher-result__image__wrapper"},e("img",{alt:l.paymentMethodType,className:"adyen-checkout__voucher-result__image__brand",src:l.imageUrl})),Boolean(l.issuerImageUrl)&&e("span",{className:"adyen-checkout__voucher-result__image__wrapper"},e("img",{alt:l.paymentMethodType,className:"adyen-checkout__voucher-result__image__issuer",src:l.issuerImageUrl}))),e("div",{className:"adyen-checkout__voucher-result__introduction"},l.introduction," ",l.instructionsUrl&&e("a",{className:"adyen-checkout-link adyen-checkout-link--voucher-result-instructions",href:l.instructionsUrl,target:"_blank",rel:"noopener noreferrer"},d.get("voucher.readInstructions")," ›")),l.amount&&e("div",{className:"adyen-checkout__voucher-result__amount"},l.amount,l.surcharge&&e("span",{className:"adyen-checkout__voucher-result__surcharge"},"(",d.get("voucher.surcharge").replace("%@",l.surcharge),")"))),l.reference&&e("div",{className:"adyen-checkout__voucher-result__separator"},e("div",{className:"adyen-checkout__voucher-result__separator__inner"}),e("div",{className:"adyen-checkout__voucher-result__code__label"},e("span",{className:"adyen-checkout__voucher-result__code__label__text"},l.paymentReferenceLabel??d.get("voucher.paymentReferenceLabel")))),e("div",{className:"adyen-checkout__voucher-result__bottom"},l.reference&&e("div",{className:"adyen-checkout__voucher-result__code"},l.barcode&&e("img",{alt:d.get("voucher.paymentReferenceLabel"),className:"adyen-checkout__voucher-result__code__barcode",src:l.barcode}),i&&e("span",null,l.reference)),(Boolean(l.downloadUrl)||Boolean(l.copyBtn))&&e("ul",{className:"adyen-checkout__voucher-result__actions"},Boolean(l.copyBtn)&&e("li",{className:"adyen-checkout__voucher-result__actions__item"},e(s,{inline:!0,text:l.reference})),Boolean(l.downloadUrl)&&e("li",{className:"adyen-checkout__voucher-result__actions__item"},e(o,{inline:!0,variant:"action",href:l.downloadUrl,icon:m({imageFolder:"components/"})(`${c}download`),label:l.downloadButtonText||d.get("button.download"),target:"_blank",rel:"noopener noreferrer"}))),e(n,{tableFields:_})))}export{l as default};
2
2
  //# sourceMappingURL=Voucher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Voucher.js","sources":["../../../../../src/components/internal/Voucher/Voucher.tsx"],"sourcesContent":["import { h } from 'preact';\nimport classNames from 'classnames';\nimport Button from '../Button';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport './Voucher.scss';\nimport { VoucherProps } from './types';\nimport useImage from '../../../core/Context/useImage';\nimport { PREFIX } from '../Icon/constants';\nimport DetailsTable from '../DetailsTable';\nimport { CopyButton } from '../Button/CopyButton';\n\nexport default function Voucher({ voucherDetails = [], className = '', ...props }: VoucherProps) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n props.onActionHandled?.({ componentType: props.paymentMethodType, actionDescription: 'voucher-presented' });\n\n return (\n <div className={classNames('adyen-checkout__voucher-result', `adyen-checkout__voucher-result--${props.paymentMethodType}`, className)}>\n <div className=\"adyen-checkout__voucher-result__top\">\n <div className=\"adyen-checkout__voucher-result__image\">\n {!!props.imageUrl && (\n <span className=\"adyen-checkout__voucher-result__image__wrapper\">\n <img alt={props.paymentMethodType} className=\"adyen-checkout__voucher-result__image__brand\" src={props.imageUrl} />\n </span>\n )}\n\n {!!props.issuerImageUrl && (\n <span className=\"adyen-checkout__voucher-result__image__wrapper\">\n <img alt={props.paymentMethodType} className=\"adyen-checkout__voucher-result__image__issuer\" src={props.issuerImageUrl} />\n </span>\n )}\n </div>\n\n <div className=\"adyen-checkout__voucher-result__introduction\">\n {props.introduction}{' '}\n {props.instructionsUrl && (\n <a\n className=\"adyen-checkout-link adyen-checkout-link--voucher-result-instructions\"\n href={props.instructionsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {i18n.get('voucher.readInstructions')} ›\n </a>\n )}\n </div>\n\n {props.amount && (\n <div className=\"adyen-checkout__voucher-result__amount\">\n {props.amount}\n\n {props.surcharge && (\n <span className=\"adyen-checkout__voucher-result__surcharge\">\n ({i18n.get('voucher.surcharge').replace('%@', props.surcharge)})\n </span>\n )}\n </div>\n )}\n </div>\n\n {props.reference && (\n <div className=\"adyen-checkout__voucher-result__separator\">\n <div className=\"adyen-checkout__voucher-result__separator__inner\" />\n <div className=\"adyen-checkout__voucher-result__code__label\">\n <span className=\"adyen-checkout__voucher-result__code__label__text\">{i18n.get('voucher.paymentReferenceLabel')}</span>\n </div>\n </div>\n )}\n\n <div className=\"adyen-checkout__voucher-result__bottom\">\n {props.reference && (\n <div className=\"adyen-checkout__voucher-result__code\">\n {props.barcode && (\n <img\n alt={i18n.get('voucher.paymentReferenceLabel')}\n className=\"adyen-checkout__voucher-result__code__barcode\"\n src={props.barcode}\n />\n )}\n <span>{props.reference}</span>\n </div>\n )}\n\n {(!!props.downloadUrl || !!props.copyBtn) && (\n <ul className=\"adyen-checkout__voucher-result__actions\">\n {!!props.copyBtn && (\n <li className=\"adyen-checkout__voucher-result__actions__item\">\n <CopyButton inline text={props.reference} />\n </li>\n )}\n\n {!!props.downloadUrl && (\n <li className=\"adyen-checkout__voucher-result__actions__item\">\n <Button\n inline\n variant=\"action\"\n href={props.downloadUrl}\n icon={getImage({ imageFolder: 'components/' })(`${PREFIX}download`)}\n label={props.downloadButtonText || i18n.get('button.download')}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n </li>\n )}\n </ul>\n )}\n\n <DetailsTable tableFields={voucherDetails} />\n </div>\n </div>\n );\n}\n"],"names":["Voucher","voucherDetails","className","props","i18n","useCoreContext","getImage","useImage","onActionHandled","componentType","paymentMethodType","actionDescription","h","div","classNames","imageUrl","span","img","alt","src","issuerImageUrl","introduction","instructionsUrl","a","href","target","rel","get","amount","surcharge","replace","reference","barcode","downloadUrl","copyBtn","ul","li","CopyButton","inline","text","Button","variant","icon","imageFolder","PREFIX","label","downloadButtonText","DetailsTable","tableFields"],"mappings":"+ZAWe,SAASA,GAAQC,eAAEA,EAAiB,GAAEC,UAAEA,EAAY,MAAOC,IACtE,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAIjB,OAFAJ,EAAMK,kBAAkB,CAAEC,cAAeN,EAAMO,kBAAmBC,kBAAmB,sBAGjFC,EAACC,MAAAA,CAAIX,UAAWY,EAAW,iCAAkC,mCAAmCX,EAAMO,oBAAqBR,IACvHU,EAACC,MAAAA,CAAIX,UAAU,uCACXU,EAACC,MAAAA,CAAIX,UAAU,2CACRC,EAAMY,UACLH,EAACI,OAAAA,CAAKd,UAAU,kDACZU,EAACK,MAAAA,CAAIC,IAAKf,EAAMO,kBAAmBR,UAAU,+CAA+CiB,IAAKhB,EAAMY,cAI5GZ,EAAMiB,gBACLR,EAACI,OAAAA,CAAKd,UAAU,kDACZU,EAACK,MAAAA,CAAIC,IAAKf,EAAMO,kBAAmBR,UAAU,gDAAgDiB,IAAKhB,EAAMiB,mBAKpHR,EAACC,MAAAA,CAAIX,UAAU,gDACVC,EAAMkB,aAAc,IACpBlB,EAAMmB,iBACHV,EAACW,IAAAA,CACGrB,UAAU,uEACVsB,KAAMrB,EAAMmB,gBACZG,OAAO,SACPC,IAAI,uBAEHtB,EAAKuB,IAAI,4BAA4B,OAKjDxB,EAAMyB,QACHhB,EAACC,MAAAA,CAAIX,UAAU,0CACVC,EAAMyB,OAENzB,EAAM0B,WACHjB,EAACI,OAAAA,CAAKd,UAAU,6CAA4C,IACtDE,EAAKuB,IAAI,qBAAqBG,QAAQ,KAAM3B,EAAM0B,WAAW,OAOlF1B,EAAM4B,WACHnB,EAACC,MAAAA,CAAIX,UAAU,6CACXU,EAACC,MAAAA,CAAIX,UAAU,qDACfU,EAACC,MAAAA,CAAIX,UAAU,+CACXU,EAACI,OAAAA,CAAKd,UAAU,qDAAqDE,EAAKuB,IAAI,oCAK1Ff,EAACC,MAAAA,CAAIX,UAAU,0CACVC,EAAM4B,WACHnB,EAACC,MAAAA,CAAIX,UAAU,wCACVC,EAAM6B,SACHpB,EAACK,MAAAA,CACGC,IAAKd,EAAKuB,IAAI,iCACdzB,UAAU,gDACViB,IAAKhB,EAAM6B,UAGnBpB,EAACI,YAAMb,EAAM4B,eAIjB5B,EAAM8B,eAAiB9B,EAAM+B,UAC7BtB,EAACuB,KAAAA,CAAGjC,UAAU,6CACPC,EAAM+B,SACLtB,EAACwB,KAAAA,CAAGlC,UAAU,iDACVU,EAACyB,EAAAA,CAAWC,QAAAA,EAAOC,KAAMpC,EAAM4B,eAIpC5B,EAAM8B,aACLrB,EAACwB,KAAAA,CAAGlC,UAAU,iDACVU,EAAC4B,EAAAA,CACGF,QAAAA,EACAG,QAAQ,SACRjB,KAAMrB,EAAM8B,YACZS,KAAMpC,EAAS,CAAEqC,YAAa,eAAxBrC,CAAyC,GAAGsC,aAClDC,MAAO1C,EAAM2C,oBAAsB1C,EAAKuB,IAAI,mBAC5CF,OAAO,SACPC,IAAI,0BAOxBd,EAACmC,EAAAA,CAAaC,YAAa/C,KAI3C"}
1
+ {"version":3,"file":"Voucher.js","sources":["../../../../../src/components/internal/Voucher/Voucher.tsx"],"sourcesContent":["import { h } from 'preact';\nimport classNames from 'classnames';\nimport Button from '../Button';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { VoucherProps } from './types';\nimport useImage from '../../../core/Context/useImage';\nimport { PREFIX } from '../Icon/constants';\nimport DetailsTable from '../DetailsTable';\nimport { CopyButton } from '../Button/CopyButton';\nimport './Voucher.scss';\n\nexport default function Voucher(props: Readonly<VoucherProps>) {\n const { voucherDetails = [], className = '', showReferenceValue = true } = props;\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n props.onActionHandled?.({ componentType: props.paymentMethodType, actionDescription: 'voucher-presented' });\n\n return (\n <div className={classNames('adyen-checkout__voucher-result', `adyen-checkout__voucher-result--${props.paymentMethodType}`, className)}>\n <div className=\"adyen-checkout__voucher-result__top\">\n <div className=\"adyen-checkout__voucher-result__image\">\n {Boolean(props.imageUrl) && (\n <span className=\"adyen-checkout__voucher-result__image__wrapper\">\n <img alt={props.paymentMethodType} className=\"adyen-checkout__voucher-result__image__brand\" src={props.imageUrl} />\n </span>\n )}\n\n {Boolean(props.issuerImageUrl) && (\n <span className=\"adyen-checkout__voucher-result__image__wrapper\">\n <img alt={props.paymentMethodType} className=\"adyen-checkout__voucher-result__image__issuer\" src={props.issuerImageUrl} />\n </span>\n )}\n </div>\n\n <div className=\"adyen-checkout__voucher-result__introduction\">\n {props.introduction}{' '}\n {props.instructionsUrl && (\n <a\n className=\"adyen-checkout-link adyen-checkout-link--voucher-result-instructions\"\n href={props.instructionsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {i18n.get('voucher.readInstructions')} ›\n </a>\n )}\n </div>\n\n {props.amount && (\n <div className=\"adyen-checkout__voucher-result__amount\">\n {props.amount}\n\n {props.surcharge && (\n <span className=\"adyen-checkout__voucher-result__surcharge\">\n ({i18n.get('voucher.surcharge').replace('%@', props.surcharge)})\n </span>\n )}\n </div>\n )}\n </div>\n\n {props.reference && (\n <div className=\"adyen-checkout__voucher-result__separator\">\n <div className=\"adyen-checkout__voucher-result__separator__inner\" />\n <div className=\"adyen-checkout__voucher-result__code__label\">\n <span className=\"adyen-checkout__voucher-result__code__label__text\">\n {props.paymentReferenceLabel ?? i18n.get('voucher.paymentReferenceLabel')}\n </span>\n </div>\n </div>\n )}\n\n <div className=\"adyen-checkout__voucher-result__bottom\">\n {props.reference && (\n <div className=\"adyen-checkout__voucher-result__code\">\n {props.barcode && (\n <img\n alt={i18n.get('voucher.paymentReferenceLabel')}\n className=\"adyen-checkout__voucher-result__code__barcode\"\n src={props.barcode}\n />\n )}\n {showReferenceValue && <span>{props.reference}</span>}\n </div>\n )}\n\n {(Boolean(props.downloadUrl) || Boolean(props.copyBtn)) && (\n <ul className=\"adyen-checkout__voucher-result__actions\">\n {Boolean(props.copyBtn) && (\n <li className=\"adyen-checkout__voucher-result__actions__item\">\n <CopyButton inline text={props.reference} />\n </li>\n )}\n\n {Boolean(props.downloadUrl) && (\n <li className=\"adyen-checkout__voucher-result__actions__item\">\n <Button\n inline\n variant=\"action\"\n href={props.downloadUrl}\n icon={getImage({ imageFolder: 'components/' })(`${PREFIX}download`)}\n label={props.downloadButtonText || i18n.get('button.download')}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n </li>\n )}\n </ul>\n )}\n\n <DetailsTable tableFields={voucherDetails} />\n </div>\n </div>\n );\n}\n"],"names":["Voucher","props","voucherDetails","className","showReferenceValue","i18n","useCoreContext","getImage","useImage","onActionHandled","componentType","paymentMethodType","actionDescription","h","div","classNames","Boolean","imageUrl","span","img","alt","src","issuerImageUrl","introduction","instructionsUrl","a","href","target","rel","get","amount","surcharge","replace","reference","paymentReferenceLabel","barcode","downloadUrl","copyBtn","ul","li","CopyButton","inline","text","Button","variant","icon","imageFolder","PREFIX","label","downloadButtonText","DetailsTable","tableFields"],"mappings":"+ZAWe,SAASA,EAAQC,GAC5B,MAAMC,eAAEA,EAAiB,GAAEC,UAAEA,EAAY,GAAEC,mBAAEA,GAAqB,GAASH,GACrEI,KAAEA,GAASC,IACXC,EAAWC,IAIjB,OAFAP,EAAMQ,kBAAkB,CAAEC,cAAeT,EAAMU,kBAAmBC,kBAAmB,sBAGjFC,EAACC,MAAAA,CAAIX,UAAWY,EAAW,iCAAkC,mCAAmCd,EAAMU,oBAAqBR,IACvHU,EAACC,MAAAA,CAAIX,UAAU,uCACXU,EAACC,MAAAA,CAAIX,UAAU,yCACVa,QAAQf,EAAMgB,WACXJ,EAACK,OAAAA,CAAKf,UAAU,kDACZU,EAACM,MAAAA,CAAIC,IAAKnB,EAAMU,kBAAmBR,UAAU,+CAA+CkB,IAAKpB,EAAMgB,YAI9GD,QAAQf,EAAMqB,iBACXT,EAACK,OAAAA,CAAKf,UAAU,kDACZU,EAACM,MAAAA,CAAIC,IAAKnB,EAAMU,kBAAmBR,UAAU,gDAAgDkB,IAAKpB,EAAMqB,mBAKpHT,EAACC,MAAAA,CAAIX,UAAU,gDACVF,EAAMsB,aAAc,IACpBtB,EAAMuB,iBACHX,EAACY,IAAAA,CACGtB,UAAU,uEACVuB,KAAMzB,EAAMuB,gBACZG,OAAO,SACPC,IAAI,uBAEHvB,EAAKwB,IAAI,4BAA4B,OAKjD5B,EAAM6B,QACHjB,EAACC,MAAAA,CAAIX,UAAU,0CACVF,EAAM6B,OAEN7B,EAAM8B,WACHlB,EAACK,OAAAA,CAAKf,UAAU,6CAA4C,IACtDE,EAAKwB,IAAI,qBAAqBG,QAAQ,KAAM/B,EAAM8B,WAAW,OAOlF9B,EAAMgC,WACHpB,EAACC,MAAAA,CAAIX,UAAU,6CACXU,EAACC,MAAAA,CAAIX,UAAU,qDACfU,EAACC,MAAAA,CAAIX,UAAU,+CACXU,EAACK,OAAAA,CAAKf,UAAU,qDACXF,EAAMiC,uBAAyB7B,EAAKwB,IAAI,oCAMzDhB,EAACC,MAAAA,CAAIX,UAAU,0CACVF,EAAMgC,WACHpB,EAACC,MAAAA,CAAIX,UAAU,wCACVF,EAAMkC,SACHtB,EAACM,MAAAA,CACGC,IAAKf,EAAKwB,IAAI,iCACd1B,UAAU,gDACVkB,IAAKpB,EAAMkC,UAGlB/B,GAAsBS,EAACK,OAAAA,KAAMjB,EAAMgC,aAI1CjB,QAAQf,EAAMmC,cAAgBpB,QAAQf,EAAMoC,WAC1CxB,EAACyB,KAAAA,CAAGnC,UAAU,2CACTa,QAAQf,EAAMoC,UACXxB,EAAC0B,KAAAA,CAAGpC,UAAU,iDACVU,EAAC2B,EAAAA,CAAWC,QAAAA,EAAOC,KAAMzC,EAAMgC,aAItCjB,QAAQf,EAAMmC,cACXvB,EAAC0B,KAAAA,CAAGpC,UAAU,iDACVU,EAAC8B,EAAAA,CACGF,QAAAA,EACAG,QAAQ,SACRlB,KAAMzB,EAAMmC,YACZS,KAAMtC,EAAS,CAAEuC,YAAa,eAAxBvC,CAAyC,GAAGwC,aAClDC,MAAO/C,EAAMgD,oBAAsB5C,EAAKwB,IAAI,mBAC5CF,OAAO,SACPC,IAAI,0BAOxBf,EAACqC,EAAAA,CAAaC,YAAajD,KAI3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../src/components/internal/Voucher/utils.ts"],"sourcesContent":["import { CommonVoucherProps } from './types';\n\nexport const extractCommonPropsForVoucher = ({ props, i18n, introKey, getImage }): CommonVoucherProps => {\n const { paymentMethodType, onActionHandled, totalAmount, reference } = props;\n\n return {\n // occur in all vouchers\n paymentMethodType,\n introduction: i18n.get(introKey),\n imageUrl: getImage(paymentMethodType),\n onActionHandled,\n // occurs in 7/8 vouchers\n ...(totalAmount ? { amount: i18n.amount(totalAmount.value, totalAmount.currency) } : {}),\n // occurs in 6/8 vouchers\n ...(reference ? { reference } : {})\n };\n};\n"],"names":["extractCommonPropsForVoucher","props","i18n","introKey","getImage","paymentMethodType","onActionHandled","totalAmount","reference","introduction","get","imageUrl","amount","value","currency"],"mappings":"AAEO,MAAMA,EAA+B,EAAGC,QAAOC,OAAMC,WAAUC,eAClE,MAAMC,kBAAEA,EAAiBC,gBAAEA,EAAeC,YAAEA,EAAWC,UAAEA,GAAcP,EAEvE,MAAO,CAEHI,oBACAI,aAAcP,EAAKQ,IAAIP,GACvBQ,SAAUP,EAASC,GACnBC,qBAEIC,EAAc,CAAEK,OAAQV,EAAKU,OAAOL,EAAYM,MAAON,EAAYO,WAAc,CAAA,KAEjFN,EAAY,CAAEA,aAAc,CAAA"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../src/components/internal/Voucher/utils.ts"],"sourcesContent":["import { GetImageFnType } from '../../../core/Context/Resources';\nimport Language from '../../../language';\nimport { PaymentAmount } from '../../../types';\nimport { CommonVoucherProps, VoucherConfiguration } from './types';\n\nexport const extractCommonPropsForVoucher = ({\n props,\n i18n,\n introKey,\n getImage\n}: {\n props: VoucherConfiguration & { totalAmount?: PaymentAmount };\n i18n: Language;\n introKey: string;\n getImage: GetImageFnType;\n}): CommonVoucherProps => {\n const { paymentMethodType, onActionHandled, totalAmount, reference } = props;\n\n return {\n // occur in all vouchers\n paymentMethodType,\n introduction: i18n.get(introKey),\n imageUrl: getImage(paymentMethodType),\n onActionHandled,\n // occurs in 7/8 vouchers\n ...(totalAmount ? { amount: i18n.amount(totalAmount.value, totalAmount.currency) } : {}),\n // occurs in 6/8 vouchers\n ...(reference ? { reference } : {})\n };\n};\n"],"names":["extractCommonPropsForVoucher","props","i18n","introKey","getImage","paymentMethodType","onActionHandled","totalAmount","reference","introduction","get","imageUrl","amount","value","currency"],"mappings":"AAKO,MAAMA,EAA+B,EACxCC,QACAC,OACAC,WACAC,eAOA,MAAMC,kBAAEA,EAAiBC,gBAAEA,EAAeC,YAAEA,EAAWC,UAAEA,GAAcP,EAEvE,MAAO,CAEHI,oBACAI,aAAcP,EAAKQ,IAAIP,GACvBQ,SAAUP,EAASC,GACnBC,qBAEIC,EAAc,CAAEK,OAAQV,EAAKU,OAAOL,EAAYM,MAAON,EAAYO,WAAc,CAAA,KAEjFN,EAAY,CAAEA,aAAc,CAAA"}
@@ -1,2 +1,2 @@
1
- var a=function(a){return a.address="address",a.bankTransfer_IBAN="bankTransfer_IBAN",a.bankTransfer_BE="bankTransfer_BE",a.bankTransfer_NL="bankTransfer_NL",a.bankTransfer_PL="bankTransfer_PL",a.bankTransfer_FR="bankTransfer_FR",a.bankTransfer_CH="bankTransfer_CH",a.bankTransfer_IE="bankTransfer_IE",a.bankTransfer_GB="bankTransfer_GB",a.bankTransfer_DE="bankTransfer_DE",a.bankTransfer_AE="bankTransfer_AE",a.bankTransfer_AT="bankTransfer_AT",a.bankTransfer_AU="bankTransfer_AU",a.bankTransfer_BG="bankTransfer_BG",a.bankTransfer_CA="bankTransfer_CA",a.bankTransfer_EE="bankTransfer_EE",a.bankTransfer_ES="bankTransfer_ES",a.bankTransfer_FI="bankTransfer_FI",a.bankTransfer_HK="bankTransfer_HK",a.bankTransfer_HU="bankTransfer_HU",a.bankTransfer_IT="bankTransfer_IT",a.bankTransfer_JP="bankTransfer_JP",a.bankTransfer_LU="bankTransfer_LU",a.bankTransfer_NZ="bankTransfer_NZ",a.bankTransfer_PT="bankTransfer_PT",a.bankTransfer_SG="bankTransfer_SG",a.bankTransfer_SK="bankTransfer_SK",a.bankTransfer_US="bankTransfer_US",a.donation="donation",a.personal_details="personal_details",a.dropin="dropin",a.bcmc="bcmc",a.card="card",a.scheme="scheme",a.storedCard="storedCard",a.customCard="customcard",a.threeDS2Challenge="threeDS2Challenge",a.threeDS2Fingerprint="threeDS2Fingerprint",a.threeDS2DeviceFingerprint="threeDS2DeviceFingerprint",a.ach="ach",a.directdebit_GB="directdebit_GB",a.sepadirectdebit="sepadirectdebit",a.eft_directdebit_CA="eft_directdebit_CA",a.affirm="affirm",a.afterpay="afterpay",a.afterpay_default="afterpay_default",a.afterpay_b2b="afterpay_b2b",a.atome="atome",a.facilypay_3x="facilypay_3x",a.facilypay_4x="facilypay_4x",a.facilypay_6x="facilypay_6x",a.facilypay_10x="facilypay_10x",a.facilypay_12x="facilypay_12x",a.ratepay="ratepay",a.ratepay_directdebit="ratepay_directdebit",a.amazonpay="amazonpay",a.applepay="applepay",a.cashapp="cashapp",a.clicktopay="clicktopay",a.googlepay="googlepay",a.paypal="paypal",a.fastlane="fastlane",a.paywithgoogle="paywithgoogle",a.boletobancario="boletobancario",a.boletobancario_itau="boletobancario_itau",a.boletobancario_santander="boletobancario_santander",a.primeiropay_boleto="primeiropay_boleto",a.doku="doku",a.doku_alfamart="doku_alfamart",a.doku_permata_lite_atm="doku_permata_lite_atm",a.doku_indomaret="doku_indomaret",a.doku_atm_mandiri_va="doku_atm_mandiri_va",a.doku_sinarmas_va="doku_sinarmas_va",a.doku_mandiri_va="doku_mandiri_va",a.doku_cimb_va="doku_cimb_va",a.doku_danamon_va="doku_danamon_va",a.doku_bri_va="doku_bri_va",a.doku_bni_va="doku_bni_va",a.doku_bca_va="doku_bca_va",a.doku_wallet="doku_wallet",a.oxxo="oxxo",a.billdesk_online="billdesk_online",a.billdesk_wallet="billdesk_wallet",a.dotpay="dotpay",a.eps="eps",a.molpay_ebanking_fpx_MY="molpay_ebanking_fpx_MY",a.molpay_ebanking_TH="molpay_ebanking_TH",a.molpay_ebanking_VN="molpay_ebanking_VN",a.onlineBanking_CZ="onlineBanking_CZ",a.onlinebanking_IN="onlinebanking_IN",a.onlineBanking_PL="onlineBanking_PL",a.onlineBanking_SK="onlineBanking_SK",a.paybybank="paybybank",a.payu_IN_cashcard="payu_IN_cashcard",a.payu_IN_nb="payu_IN_nb",a.wallet_IN="wallet_IN",a.dragonpay="dragonpay",a.dragonpay_ebanking="dragonpay_ebanking",a.dragonpay_otc_banking="dragonpay_otc_banking",a.dragonpay_otc_non_banking="dragonpay_otc_non_banking",a.dragonpay_otc_philippines="dragonpay_otc_philippines",a.econtext="econtext",a.econtext_atm="econtext_atm",a.econtext_online="econtext_online",a.econtext_seven_eleven="econtext_seven_eleven",a.econtext_stores="econtext_stores",a.giropay="giropay",a.multibanco="multibanco",a.redirect="redirect",a.twint="twint",a.vipps="vipps",a.trustly="trustly",a.paybybank_AIS_DD="paybybank_AIS_DD",a.riverty="riverty",a.paybybank_pix="paybybank_pix",a.klarna="klarna",a.klarna_account="klarna_account",a.klarna_paynow="klarna_paynow",a.klarna_b2b="klarna_b2b",a.bcmc_mobile="bcmc_mobile",a.bcmc_mobile_QR="bcmc_mobile_QR",a.pix="pix",a.swish="swish",a.wechatpay="wechatpay",a.wechatpayQR="wechatpayQR",a.promptpay="promptpay",a.paynow="paynow",a.duitnow="duitnow",a.blik="blik",a.mbway="mbway",a.ancv="ancv",a.payto="payto",a.upi="upi",a.upi_qr="upi_qr",a.upi_collect="upi_collect",a.upi_intent="upi_intent",a.giftcard="giftcard",a.mealVoucher_FR="mealVoucher_FR",a.mealVoucher_FR_natixis="mealVoucher_FR_natixis",a.mealVoucher_FR_sodexo="mealVoucher_FR_sodexo",a.mealVoucher_FR_groupeup="mealVoucher_FR_groupeup",a}({});export{a as TxVariants};
1
+ var a=function(a){return a.address="address",a.bankTransfer_IBAN="bankTransfer_IBAN",a.bankTransfer_BE="bankTransfer_BE",a.bankTransfer_NL="bankTransfer_NL",a.bankTransfer_PL="bankTransfer_PL",a.bankTransfer_FR="bankTransfer_FR",a.bankTransfer_CH="bankTransfer_CH",a.bankTransfer_IE="bankTransfer_IE",a.bankTransfer_GB="bankTransfer_GB",a.bankTransfer_DE="bankTransfer_DE",a.bankTransfer_AE="bankTransfer_AE",a.bankTransfer_AT="bankTransfer_AT",a.bankTransfer_AU="bankTransfer_AU",a.bankTransfer_BG="bankTransfer_BG",a.bankTransfer_CA="bankTransfer_CA",a.bankTransfer_EE="bankTransfer_EE",a.bankTransfer_ES="bankTransfer_ES",a.bankTransfer_FI="bankTransfer_FI",a.bankTransfer_HK="bankTransfer_HK",a.bankTransfer_HU="bankTransfer_HU",a.bankTransfer_IT="bankTransfer_IT",a.bankTransfer_JP="bankTransfer_JP",a.bankTransfer_LU="bankTransfer_LU",a.bankTransfer_NZ="bankTransfer_NZ",a.bankTransfer_PT="bankTransfer_PT",a.bankTransfer_SG="bankTransfer_SG",a.bankTransfer_SK="bankTransfer_SK",a.bankTransfer_US="bankTransfer_US",a.donation="donation",a.personal_details="personal_details",a.dropin="dropin",a.bcmc="bcmc",a.card="card",a.scheme="scheme",a.storedCard="storedCard",a.customCard="customcard",a.threeDS2Challenge="threeDS2Challenge",a.threeDS2Fingerprint="threeDS2Fingerprint",a.threeDS2DeviceFingerprint="threeDS2DeviceFingerprint",a.ach="ach",a.directdebit_GB="directdebit_GB",a.sepadirectdebit="sepadirectdebit",a.eft_directdebit_CA="eft_directdebit_CA",a.affirm="affirm",a.afterpay="afterpay",a.afterpay_default="afterpay_default",a.afterpay_b2b="afterpay_b2b",a.atome="atome",a.facilypay_3x="facilypay_3x",a.facilypay_4x="facilypay_4x",a.facilypay_6x="facilypay_6x",a.facilypay_10x="facilypay_10x",a.facilypay_12x="facilypay_12x",a.ratepay="ratepay",a.ratepay_directdebit="ratepay_directdebit",a.amazonpay="amazonpay",a.applepay="applepay",a.cashapp="cashapp",a.clicktopay="clicktopay",a.googlepay="googlepay",a.paypal="paypal",a.fastlane="fastlane",a.paywithgoogle="paywithgoogle",a.boletobancario="boletobancario",a.boletobancario_itau="boletobancario_itau",a.boletobancario_santander="boletobancario_santander",a.primeiropay_boleto="primeiropay_boleto",a.doku="doku",a.doku_alfamart="doku_alfamart",a.doku_permata_lite_atm="doku_permata_lite_atm",a.doku_indomaret="doku_indomaret",a.doku_atm_mandiri_va="doku_atm_mandiri_va",a.doku_sinarmas_va="doku_sinarmas_va",a.doku_mandiri_va="doku_mandiri_va",a.doku_cimb_va="doku_cimb_va",a.doku_danamon_va="doku_danamon_va",a.doku_bri_va="doku_bri_va",a.doku_bni_va="doku_bni_va",a.doku_bca_va="doku_bca_va",a.doku_wallet="doku_wallet",a.oxxo="oxxo",a.billdesk_online="billdesk_online",a.billdesk_wallet="billdesk_wallet",a.dotpay="dotpay",a.eps="eps",a.iris="iris",a.molpay_ebanking_fpx_MY="molpay_ebanking_fpx_MY",a.molpay_ebanking_TH="molpay_ebanking_TH",a.molpay_ebanking_VN="molpay_ebanking_VN",a.onlineBanking_CZ="onlineBanking_CZ",a.onlinebanking_IN="onlinebanking_IN",a.onlineBanking_PL="onlineBanking_PL",a.onlineBanking_SK="onlineBanking_SK",a.paybybank="paybybank",a.payu_IN_cashcard="payu_IN_cashcard",a.payu_IN_nb="payu_IN_nb",a.wallet_IN="wallet_IN",a.dragonpay="dragonpay",a.dragonpay_ebanking="dragonpay_ebanking",a.dragonpay_otc_banking="dragonpay_otc_banking",a.dragonpay_otc_non_banking="dragonpay_otc_non_banking",a.dragonpay_otc_philippines="dragonpay_otc_philippines",a.econtext="econtext",a.econtext_atm="econtext_atm",a.econtext_online="econtext_online",a.econtext_seven_eleven="econtext_seven_eleven",a.econtext_stores="econtext_stores",a.giropay="giropay",a.multibanco="multibanco",a.redirect="redirect",a.twint="twint",a.vipps="vipps",a.trustly="trustly",a.paybybank_AIS_DD="paybybank_AIS_DD",a.riverty="riverty",a.paybybank_pix="paybybank_pix",a.klarna="klarna",a.klarna_account="klarna_account",a.klarna_paynow="klarna_paynow",a.klarna_b2b="klarna_b2b",a.bcmc_mobile="bcmc_mobile",a.bcmc_mobile_QR="bcmc_mobile_QR",a.pix="pix",a.swish="swish",a.wechatpay="wechatpay",a.wechatpayQR="wechatpayQR",a.promptpay="promptpay",a.paynow="paynow",a.duitnow="duitnow",a.blik="blik",a.mbway="mbway",a.ancv="ancv",a.payto="payto",a.upi="upi",a.upi_qr="upi_qr",a.upi_intent="upi_intent",a.giftcard="giftcard",a.mealVoucher_FR="mealVoucher_FR",a.mealVoucher_FR_natixis="mealVoucher_FR_natixis",a.mealVoucher_FR_sodexo="mealVoucher_FR_sodexo",a.mealVoucher_FR_groupeup="mealVoucher_FR_groupeup",a}({});export{a as TxVariants};
2
2
  //# sourceMappingURL=tx-variants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tx-variants.js","sources":["../../../src/components/tx-variants.ts"],"sourcesContent":["export enum TxVariants {\n /** internal */\n address = 'address',\n bankTransfer_IBAN = 'bankTransfer_IBAN',\n bankTransfer_BE = 'bankTransfer_BE',\n bankTransfer_NL = 'bankTransfer_NL',\n bankTransfer_PL = 'bankTransfer_PL',\n bankTransfer_FR = 'bankTransfer_FR',\n bankTransfer_CH = 'bankTransfer_CH',\n bankTransfer_IE = 'bankTransfer_IE',\n bankTransfer_GB = 'bankTransfer_GB',\n bankTransfer_DE = 'bankTransfer_DE',\n bankTransfer_AE = 'bankTransfer_AE',\n bankTransfer_AT = 'bankTransfer_AT',\n bankTransfer_AU = 'bankTransfer_AU',\n bankTransfer_BG = 'bankTransfer_BG',\n bankTransfer_CA = 'bankTransfer_CA',\n bankTransfer_EE = 'bankTransfer_EE',\n bankTransfer_ES = 'bankTransfer_ES',\n bankTransfer_FI = 'bankTransfer_FI',\n bankTransfer_HK = 'bankTransfer_HK',\n bankTransfer_HU = 'bankTransfer_HU',\n bankTransfer_IT = 'bankTransfer_IT',\n bankTransfer_JP = 'bankTransfer_JP',\n bankTransfer_LU = 'bankTransfer_LU',\n bankTransfer_NZ = 'bankTransfer_NZ',\n bankTransfer_PT = 'bankTransfer_PT',\n bankTransfer_SG = 'bankTransfer_SG',\n bankTransfer_SK = 'bankTransfer_SK',\n bankTransfer_US = 'bankTransfer_US',\n donation = 'donation',\n personal_details = 'personal_details',\n dropin = 'dropin',\n /** internal */\n\n /** Card */\n bcmc = 'bcmc',\n card = 'card',\n scheme = 'scheme',\n storedCard = 'storedCard',\n customCard = 'customcard',\n /** Card */\n\n /** ThreeDS */\n threeDS2Challenge = 'threeDS2Challenge',\n threeDS2Fingerprint = 'threeDS2Fingerprint',\n threeDS2DeviceFingerprint = 'threeDS2DeviceFingerprint',\n /** ThreeDS */\n\n /** Direct debit */\n ach = 'ach',\n directdebit_GB = 'directdebit_GB',\n sepadirectdebit = 'sepadirectdebit',\n eft_directdebit_CA = 'eft_directdebit_CA',\n /** Direct debit */\n\n /** Open Invoice */\n affirm = 'affirm',\n afterpay = 'afterpay',\n afterpay_default = 'afterpay_default',\n afterpay_b2b = 'afterpay_b2b',\n atome = 'atome',\n facilypay_3x = 'facilypay_3x',\n facilypay_4x = 'facilypay_4x',\n facilypay_6x = 'facilypay_6x',\n facilypay_10x = 'facilypay_10x',\n facilypay_12x = 'facilypay_12x',\n ratepay = 'ratepay',\n ratepay_directdebit = 'ratepay_directdebit',\n /** Open Invoice */\n\n /** Wallets */\n amazonpay = 'amazonpay',\n applepay = 'applepay',\n cashapp = 'cashapp',\n clicktopay = 'clicktopay',\n googlepay = 'googlepay',\n paypal = 'paypal',\n fastlane = 'fastlane',\n paywithgoogle = 'paywithgoogle',\n /** Wallets */\n\n /** Voucher */\n boletobancario = 'boletobancario',\n boletobancario_itau = 'boletobancario_itau',\n boletobancario_santander = 'boletobancario_santander',\n primeiropay_boleto = 'primeiropay_boleto',\n doku = 'doku',\n doku_alfamart = 'doku_alfamart',\n doku_permata_lite_atm = 'doku_permata_lite_atm',\n doku_indomaret = 'doku_indomaret',\n doku_atm_mandiri_va = 'doku_atm_mandiri_va',\n doku_sinarmas_va = 'doku_sinarmas_va',\n doku_mandiri_va = 'doku_mandiri_va',\n doku_cimb_va = 'doku_cimb_va',\n doku_danamon_va = 'doku_danamon_va',\n doku_bri_va = 'doku_bri_va',\n doku_bni_va = 'doku_bni_va',\n doku_bca_va = 'doku_bca_va',\n doku_wallet = 'doku_wallet',\n oxxo = 'oxxo',\n /** Voucher */\n\n /** issuerList */\n billdesk_online = 'billdesk_online',\n billdesk_wallet = 'billdesk_wallet',\n dotpay = 'dotpay',\n eps = 'eps',\n molpay_ebanking_fpx_MY = 'molpay_ebanking_fpx_MY',\n molpay_ebanking_TH = 'molpay_ebanking_TH',\n molpay_ebanking_VN = 'molpay_ebanking_VN',\n onlineBanking_CZ = 'onlineBanking_CZ',\n onlinebanking_IN = 'onlinebanking_IN',\n onlineBanking_PL = 'onlineBanking_PL',\n onlineBanking_SK = 'onlineBanking_SK',\n paybybank = 'paybybank',\n payu_IN_cashcard = 'payu_IN_cashcard',\n payu_IN_nb = 'payu_IN_nb',\n wallet_IN = 'wallet_IN',\n /** issuerList */\n\n /** Dragonpay */\n dragonpay = 'dragonpay',\n dragonpay_ebanking = 'dragonpay_ebanking',\n dragonpay_otc_banking = 'dragonpay_otc_banking',\n dragonpay_otc_non_banking = 'dragonpay_otc_non_banking',\n dragonpay_otc_philippines = 'dragonpay_otc_philippines',\n /** Dragonpay */\n\n /** Econtext */\n econtext = 'econtext',\n econtext_atm = 'econtext_atm',\n econtext_online = 'econtext_online',\n econtext_seven_eleven = 'econtext_seven_eleven',\n econtext_stores = 'econtext_stores',\n /** Econtext */\n\n /** Redirect */\n giropay = 'giropay',\n multibanco = 'multibanco',\n redirect = 'redirect',\n twint = 'twint',\n vipps = 'vipps',\n trustly = 'trustly',\n paybybank_AIS_DD = 'paybybank_AIS_DD',\n riverty = 'riverty',\n paybybank_pix = 'paybybank_pix',\n /** Redirect */\n\n /** Klarna */\n klarna = 'klarna',\n klarna_account = 'klarna_account',\n klarna_paynow = 'klarna_paynow',\n klarna_b2b = 'klarna_b2b',\n /** Klarna */\n\n /** QRLoader */\n bcmc_mobile = 'bcmc_mobile',\n bcmc_mobile_QR = 'bcmc_mobile_QR',\n pix = 'pix',\n swish = 'swish',\n wechatpay = 'wechatpay',\n wechatpayQR = 'wechatpayQR',\n promptpay = 'promptpay',\n paynow = 'paynow',\n duitnow = 'duitnow',\n /** QRLoader */\n\n /** Await */\n blik = 'blik',\n mbway = 'mbway',\n ancv = 'ancv',\n payto = 'payto',\n upi = 'upi', // also QR\n upi_qr = 'upi_qr', // also QR\n upi_collect = 'upi_collect', // also QR\n upi_intent = 'upi_intent', // also QR\n /** Await */\n\n /** Giftcard */\n giftcard = 'giftcard',\n mealVoucher_FR = 'mealVoucher_FR',\n mealVoucher_FR_natixis = 'mealVoucher_FR_natixis',\n mealVoucher_FR_sodexo = 'mealVoucher_FR_sodexo',\n mealVoucher_FR_groupeup = 'mealVoucher_FR_groupeup'\n /** Giftcard */\n}\n"],"names":["TxVariants"],"mappings":"AAAO,IAAAA,EAAKA,SAAAA,GAAAA,OACKA,EAAA,QAAA,wiCAkCJA,EAAA,KAAA,2FAQGA,EAAA,kBAAA,wHAMKA,EAAA,IAAA,sHAOAA,EAAA,OAAA,6UAeLA,EAAA,UAAA,gLAWAA,EAAA,eAAA,mlBAqBGA,EAAA,gBAAA,keAkBDA,EAAA,UAAA,sNAQDA,EAAA,SAAA,iKAQAA,EAAA,QAAA,wMAYFA,EAAA,OAAA,qGAOEA,EAAA,YAAA,8LAYHA,EAAA,KAAA,yIAWGA,EAAA,SAAA,mMAnLLA,CA0LX,CA1LWA,CA0LX,CAAA"}
1
+ {"version":3,"file":"tx-variants.js","sources":["../../../src/components/tx-variants.ts"],"sourcesContent":["export enum TxVariants {\n /** internal */\n address = 'address',\n bankTransfer_IBAN = 'bankTransfer_IBAN',\n bankTransfer_BE = 'bankTransfer_BE',\n bankTransfer_NL = 'bankTransfer_NL',\n bankTransfer_PL = 'bankTransfer_PL',\n bankTransfer_FR = 'bankTransfer_FR',\n bankTransfer_CH = 'bankTransfer_CH',\n bankTransfer_IE = 'bankTransfer_IE',\n bankTransfer_GB = 'bankTransfer_GB',\n bankTransfer_DE = 'bankTransfer_DE',\n bankTransfer_AE = 'bankTransfer_AE',\n bankTransfer_AT = 'bankTransfer_AT',\n bankTransfer_AU = 'bankTransfer_AU',\n bankTransfer_BG = 'bankTransfer_BG',\n bankTransfer_CA = 'bankTransfer_CA',\n bankTransfer_EE = 'bankTransfer_EE',\n bankTransfer_ES = 'bankTransfer_ES',\n bankTransfer_FI = 'bankTransfer_FI',\n bankTransfer_HK = 'bankTransfer_HK',\n bankTransfer_HU = 'bankTransfer_HU',\n bankTransfer_IT = 'bankTransfer_IT',\n bankTransfer_JP = 'bankTransfer_JP',\n bankTransfer_LU = 'bankTransfer_LU',\n bankTransfer_NZ = 'bankTransfer_NZ',\n bankTransfer_PT = 'bankTransfer_PT',\n bankTransfer_SG = 'bankTransfer_SG',\n bankTransfer_SK = 'bankTransfer_SK',\n bankTransfer_US = 'bankTransfer_US',\n donation = 'donation',\n personal_details = 'personal_details',\n dropin = 'dropin',\n /** internal */\n\n /** Card */\n bcmc = 'bcmc',\n card = 'card',\n scheme = 'scheme',\n storedCard = 'storedCard',\n customCard = 'customcard',\n /** Card */\n\n /** ThreeDS */\n threeDS2Challenge = 'threeDS2Challenge',\n threeDS2Fingerprint = 'threeDS2Fingerprint',\n threeDS2DeviceFingerprint = 'threeDS2DeviceFingerprint',\n /** ThreeDS */\n\n /** Direct debit */\n ach = 'ach',\n directdebit_GB = 'directdebit_GB',\n sepadirectdebit = 'sepadirectdebit',\n eft_directdebit_CA = 'eft_directdebit_CA',\n /** Direct debit */\n\n /** Open Invoice */\n affirm = 'affirm',\n afterpay = 'afterpay',\n afterpay_default = 'afterpay_default',\n afterpay_b2b = 'afterpay_b2b',\n atome = 'atome',\n facilypay_3x = 'facilypay_3x',\n facilypay_4x = 'facilypay_4x',\n facilypay_6x = 'facilypay_6x',\n facilypay_10x = 'facilypay_10x',\n facilypay_12x = 'facilypay_12x',\n ratepay = 'ratepay',\n ratepay_directdebit = 'ratepay_directdebit',\n /** Open Invoice */\n\n /** Wallets */\n amazonpay = 'amazonpay',\n applepay = 'applepay',\n cashapp = 'cashapp',\n clicktopay = 'clicktopay',\n googlepay = 'googlepay',\n paypal = 'paypal',\n fastlane = 'fastlane',\n paywithgoogle = 'paywithgoogle',\n /** Wallets */\n\n /** Voucher */\n boletobancario = 'boletobancario',\n boletobancario_itau = 'boletobancario_itau',\n boletobancario_santander = 'boletobancario_santander',\n primeiropay_boleto = 'primeiropay_boleto',\n doku = 'doku',\n doku_alfamart = 'doku_alfamart',\n doku_permata_lite_atm = 'doku_permata_lite_atm',\n doku_indomaret = 'doku_indomaret',\n doku_atm_mandiri_va = 'doku_atm_mandiri_va',\n doku_sinarmas_va = 'doku_sinarmas_va',\n doku_mandiri_va = 'doku_mandiri_va',\n doku_cimb_va = 'doku_cimb_va',\n doku_danamon_va = 'doku_danamon_va',\n doku_bri_va = 'doku_bri_va',\n doku_bni_va = 'doku_bni_va',\n doku_bca_va = 'doku_bca_va',\n doku_wallet = 'doku_wallet',\n oxxo = 'oxxo',\n /** Voucher */\n\n /** issuerList */\n billdesk_online = 'billdesk_online',\n billdesk_wallet = 'billdesk_wallet',\n dotpay = 'dotpay',\n eps = 'eps',\n iris = 'iris',\n molpay_ebanking_fpx_MY = 'molpay_ebanking_fpx_MY',\n molpay_ebanking_TH = 'molpay_ebanking_TH',\n molpay_ebanking_VN = 'molpay_ebanking_VN',\n onlineBanking_CZ = 'onlineBanking_CZ',\n onlinebanking_IN = 'onlinebanking_IN',\n onlineBanking_PL = 'onlineBanking_PL',\n onlineBanking_SK = 'onlineBanking_SK',\n paybybank = 'paybybank',\n payu_IN_cashcard = 'payu_IN_cashcard',\n payu_IN_nb = 'payu_IN_nb',\n wallet_IN = 'wallet_IN',\n /** issuerList */\n\n /** Dragonpay */\n dragonpay = 'dragonpay',\n dragonpay_ebanking = 'dragonpay_ebanking',\n dragonpay_otc_banking = 'dragonpay_otc_banking',\n dragonpay_otc_non_banking = 'dragonpay_otc_non_banking',\n dragonpay_otc_philippines = 'dragonpay_otc_philippines',\n /** Dragonpay */\n\n /** Econtext */\n econtext = 'econtext',\n econtext_atm = 'econtext_atm',\n econtext_online = 'econtext_online',\n econtext_seven_eleven = 'econtext_seven_eleven',\n econtext_stores = 'econtext_stores',\n /** Econtext */\n\n /** Redirect */\n giropay = 'giropay',\n multibanco = 'multibanco',\n redirect = 'redirect',\n twint = 'twint',\n vipps = 'vipps',\n trustly = 'trustly',\n paybybank_AIS_DD = 'paybybank_AIS_DD',\n riverty = 'riverty',\n paybybank_pix = 'paybybank_pix',\n /** Redirect */\n\n /** Klarna */\n klarna = 'klarna',\n klarna_account = 'klarna_account',\n klarna_paynow = 'klarna_paynow',\n klarna_b2b = 'klarna_b2b',\n /** Klarna */\n\n /** QRLoader */\n bcmc_mobile = 'bcmc_mobile',\n bcmc_mobile_QR = 'bcmc_mobile_QR',\n pix = 'pix',\n swish = 'swish',\n wechatpay = 'wechatpay',\n wechatpayQR = 'wechatpayQR',\n promptpay = 'promptpay',\n paynow = 'paynow',\n duitnow = 'duitnow',\n /** QRLoader */\n\n /** Await */\n blik = 'blik',\n mbway = 'mbway',\n ancv = 'ancv',\n payto = 'payto',\n upi = 'upi', // also QR\n upi_qr = 'upi_qr', // also QR\n upi_intent = 'upi_intent', // also QR\n /** Await */\n\n /** Giftcard */\n giftcard = 'giftcard',\n mealVoucher_FR = 'mealVoucher_FR',\n mealVoucher_FR_natixis = 'mealVoucher_FR_natixis',\n mealVoucher_FR_sodexo = 'mealVoucher_FR_sodexo',\n mealVoucher_FR_groupeup = 'mealVoucher_FR_groupeup'\n /** Giftcard */\n}\n"],"names":["TxVariants"],"mappings":"AAAO,IAAAA,EAAKA,SAAAA,GAAAA,OACKA,EAAA,QAAA,wiCAkCJA,EAAA,KAAA,2FAQGA,EAAA,kBAAA,wHAMKA,EAAA,IAAA,sHAOAA,EAAA,OAAA,6UAeLA,EAAA,UAAA,gLAWAA,EAAA,eAAA,mlBAqBGA,EAAA,gBAAA,gfAmBDA,EAAA,UAAA,sNAQDA,EAAA,SAAA,iKAQAA,EAAA,QAAA,wMAYFA,EAAA,OAAA,qGAOEA,EAAA,YAAA,8LAYHA,EAAA,KAAA,6GAUGA,EAAA,SAAA,mMAnLLA,CA0LX,CA1LWA,CA0LX,CAAA"}
@@ -1,2 +1,2 @@
1
- import{debounce as e}from"../../utils/debounce.js";import{processAnalyticsData as t}from"./utils.js";import{AnalyticsEventCategory as s}from"./events/AbstractAnalyticsEvent.js";import n from"../../utils/Storage.js";import{LIBRARY_BUNDLE_TYPE as i,LIBRARY_VERSION as o}from"../config.js";function a(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}class r{async setUp({sessionId:e,checkoutStage:s,locale:n}={}){try{const a=this.storage.get(),r=function(e){if(!e?.timestamp)return!1;const t=Date.now()-9e5;return e.timestamp>t}(a),{applicationInfo:c,checkoutAttemptId:d}=t(this.analyticsData),h=r?a.id:d,u={version:o,buildType:i,channel:"Web",platform:"Web",locale:n,referrer:window.location.href,screenWidth:window.screen.width,checkoutStage:s||"checkout",level:this.enabled?"all":"initial",...c&&{applicationInfo:c},...e&&{sessionId:e},...h&&{checkoutAttemptId:h}};this.capturedCheckoutAttemptId=await this.service.requestCheckoutAttemptId(u),this.storage.set({id:this.capturedCheckoutAttemptId,timestamp:r?a.timestamp:Date.now()})}catch(e){this.enabled=!1,console.warn("Analytics: Error setting up",e)}}sendAnalytics(e){if(this.enabled)try{this.addEventToQueue(e)}catch(e){console.warn("Analytics: Error adding event to queue",e)}}async sendFlavor(e){if(this.capturedCheckoutAttemptId&&!this.isFlavorReported){this.isFlavorReported=!0;try{await this.service.reportIntegrationFlavor(e,this.capturedCheckoutAttemptId)}catch(e){console.warn("Analytics: Error reporting flavor",e)}}}flush(){this.sendEvents()}addEventToQueue(e){this.eventsQueue.add(e),e.getEventCategory()===s.info?this.debouncedSendInfoEvents():this.debouncedSendEvents()}async sendEvents(){if(!this.capturedCheckoutAttemptId||!this.enabled)return;const e={channel:"Web",platform:"Web",info:this.eventsQueue.infoEvents,errors:this.eventsQueue.errorEvents,logs:this.eventsQueue.logEvents};this.eventsQueue.clear();try{await this.service.sendEvents(e,this.capturedCheckoutAttemptId)}catch(e){console.warn("Analytics: Error sending events",e)}}constructor({service:t,eventQueue:s,enabled:i,analyticsData:o}){a(this,"analyticsData",void 0),a(this,"service",void 0),a(this,"eventsQueue",void 0),a(this,"storage",new n("checkout-attempt-id","sessionStorage")),a(this,"debouncedSendInfoEvents",void 0),a(this,"debouncedSendEvents",void 0),a(this,"enabled",!0),a(this,"capturedCheckoutAttemptId",void 0),a(this,"isFlavorReported",!1),this.service=t,this.eventsQueue=s,this.debouncedSendInfoEvents=e(this.sendEvents.bind(this),1e4),this.debouncedSendEvents=e(this.sendEvents.bind(this),5e3),void 0!==i&&(this.enabled=i),o&&(this.analyticsData=o)}}export{r as default};
1
+ import{debounce as e}from"../../utils/debounce.js";import{processAnalyticsData as t}from"./utils.js";import{AnalyticsEventCategory as s}from"./events/AbstractAnalyticsEvent.js";import n from"../../utils/Storage.js";import{LIBRARY_BUNDLE_TYPE as i,LIBRARY_VERSION as o}from"../config.js";function a(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}class r{get checkoutAttemptId(){return this.capturedCheckoutAttemptId}async setUp({sessionId:e,checkoutStage:s,locale:n}={}){try{const a=this.storage.get(),r=function(e){if(!e?.timestamp)return!1;const t=Date.now()-9e5;return e.timestamp>t}(a),{applicationInfo:c,checkoutAttemptId:d}=t(this.analyticsData),h=r?a.id:d,u={version:o,buildType:i,channel:"Web",platform:"Web",locale:n,referrer:window.location.href,screenWidth:window.screen.width,checkoutStage:s||"checkout",level:this.enabled?"all":"initial",...c&&{applicationInfo:c},...e&&{sessionId:e},...h&&{checkoutAttemptId:h}};this.capturedCheckoutAttemptId=await this.service.requestCheckoutAttemptId(u),this.storage.set({id:this.capturedCheckoutAttemptId,timestamp:r?a.timestamp:Date.now()})}catch(e){this.enabled=!1,console.warn("Analytics: Error setting up",e)}}sendAnalytics(e){if(this.enabled)try{this.addEventToQueue(e)}catch(e){console.warn("Analytics: Error adding event to queue",e)}}async sendFlavor(e){if(this.capturedCheckoutAttemptId&&!this.isFlavorReported){this.isFlavorReported=!0;try{await this.service.reportIntegrationFlavor(e,this.capturedCheckoutAttemptId)}catch(e){console.warn("Analytics: Error reporting flavor",e)}}}flush(){this.sendEvents()}addEventToQueue(e){this.eventsQueue.add(e),e.getEventCategory()===s.info?this.debouncedSendInfoEvents():this.debouncedSendEvents()}async sendEvents(){if(!this.capturedCheckoutAttemptId||!this.enabled)return;const e={channel:"Web",platform:"Web",info:this.eventsQueue.infoEvents,errors:this.eventsQueue.errorEvents,logs:this.eventsQueue.logEvents};this.eventsQueue.clear();try{await this.service.sendEvents(e,this.capturedCheckoutAttemptId)}catch(e){console.warn("Analytics: Error sending events",e)}}constructor({service:t,eventQueue:s,enabled:i,analyticsData:o}){a(this,"analyticsData",void 0),a(this,"service",void 0),a(this,"eventsQueue",void 0),a(this,"storage",new n("checkout-attempt-id","sessionStorage")),a(this,"debouncedSendInfoEvents",void 0),a(this,"debouncedSendEvents",void 0),a(this,"enabled",!0),a(this,"capturedCheckoutAttemptId",void 0),a(this,"isFlavorReported",!1),this.service=t,this.eventsQueue=s,this.debouncedSendInfoEvents=e(this.sendEvents.bind(this),1e4),this.debouncedSendEvents=e(this.sendEvents.bind(this),5e3),void 0!==i&&(this.enabled=i),o&&(this.analyticsData=o)}}export{r as default};
2
2
  //# sourceMappingURL=Analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Analytics.js","sources":["../../../../src/core/Analytics/Analytics.ts"],"sourcesContent":["import { debounce } from '../../utils/debounce';\nimport { processAnalyticsData } from './utils';\nimport { AbstractAnalyticsEvent, AnalyticsEventCategory } from './events/AbstractAnalyticsEvent';\nimport Storage from '../../utils/Storage';\nimport { LIBRARY_BUNDLE_TYPE, LIBRARY_VERSION } from '../config';\nimport { AnalyticsEventQueue } from './AnalyticsEventQueue';\nimport type { AnalyticsOptions } from './types';\nimport type { AnalyticsEventPayload, IAnalyticsService, RequestAttemptIdPayload } from './AnalyticsService';\n\nexport interface AnalyticsProps {\n service: IAnalyticsService;\n eventQueue: AnalyticsEventQueue;\n enabled?: boolean;\n analyticsData?: AnalyticsOptions['analyticsData'];\n}\n\nexport interface IAnalytics {\n setUp({ sessionId, checkoutStage, locale }: { sessionId?: string; checkoutStage?: 'precheckout' | 'checkout'; locale?: string }): Promise<void>;\n sendFlavor(flavor: 'dropin' | 'components'): Promise<void>;\n sendAnalytics(event: AbstractAnalyticsEvent): void;\n flush(): void;\n}\n\nexport interface CheckoutAttemptIdSessionStorage {\n id: string;\n timestamp: number;\n}\n\n/**\n * If the checkout attempt ID was stored more than fifteen minutes ago, then we should request a new ID.\n * More here: COWEB-1099\n */\nfunction isSessionCreatedUnderFifteenMinutes(session: CheckoutAttemptIdSessionStorage): boolean {\n const FIFTEEN_MINUTES_IN_MS = 15 * 60 * 1000;\n if (!session?.timestamp) return false;\n const fifteenMinutesAgo = Date.now() - FIFTEEN_MINUTES_IN_MS;\n return session.timestamp > fifteenMinutesAgo;\n}\n\nconst ANALYTICS_INFO_DEBOUNCE_DELAY = process.env.NODE_ENV === 'development' ? 5_000 : 10_000;\nconst ANALYTICS_ERROR_AND_LOGS_DEBOUNCE_DELAY = 5_000;\n\nclass Analytics implements IAnalytics {\n private readonly analyticsData?: AnalyticsOptions['analyticsData'];\n private readonly service: IAnalyticsService;\n private readonly eventsQueue: AnalyticsEventQueue;\n private readonly storage = new Storage<CheckoutAttemptIdSessionStorage>('checkout-attempt-id', 'sessionStorage');\n private readonly debouncedSendInfoEvents: () => void;\n private readonly debouncedSendEvents: () => void;\n\n private enabled: boolean = true;\n private capturedCheckoutAttemptId?: string;\n private isFlavorReported = false;\n\n constructor({ service, eventQueue, enabled, analyticsData }: AnalyticsProps) {\n this.service = service;\n this.eventsQueue = eventQueue;\n\n this.debouncedSendInfoEvents = debounce(this.sendEvents.bind(this), ANALYTICS_INFO_DEBOUNCE_DELAY);\n this.debouncedSendEvents = debounce(this.sendEvents.bind(this), ANALYTICS_ERROR_AND_LOGS_DEBOUNCE_DELAY);\n\n if (enabled !== undefined) this.enabled = enabled;\n if (analyticsData) this.analyticsData = analyticsData;\n }\n\n public async setUp({\n sessionId,\n checkoutStage,\n locale\n }: { sessionId?: string; locale?: string; checkoutStage?: 'precheckout' | 'checkout' } = {}): Promise<void> {\n try {\n const checkoutAttemptIdSession = this.storage.get();\n const isSessionReusable = isSessionCreatedUnderFifteenMinutes(checkoutAttemptIdSession);\n\n const { applicationInfo, checkoutAttemptId: checkoutAttemptIdFromPayByLink } = processAnalyticsData(this.analyticsData);\n\n const availableCheckoutAttemptId: string | undefined = isSessionReusable ? checkoutAttemptIdSession.id : checkoutAttemptIdFromPayByLink;\n\n const payload: RequestAttemptIdPayload = {\n version: LIBRARY_VERSION,\n buildType: LIBRARY_BUNDLE_TYPE,\n channel: 'Web',\n platform: 'Web',\n locale,\n referrer: window.location.href,\n screenWidth: window.screen.width,\n checkoutStage: checkoutStage || 'checkout',\n level: this.enabled ? 'all' : 'initial',\n ...(applicationInfo && { applicationInfo }),\n ...(sessionId && { sessionId }),\n ...(availableCheckoutAttemptId && { checkoutAttemptId: availableCheckoutAttemptId })\n };\n\n this.capturedCheckoutAttemptId = await this.service.requestCheckoutAttemptId(payload);\n\n this.storage.set({\n id: this.capturedCheckoutAttemptId,\n timestamp: isSessionReusable ? checkoutAttemptIdSession.timestamp : Date.now()\n });\n } catch (error: unknown) {\n this.enabled = false;\n console.warn('Analytics: Error setting up', error);\n }\n }\n\n public sendAnalytics(event: AbstractAnalyticsEvent): void {\n if (!this.enabled) {\n return;\n }\n\n try {\n this.addEventToQueue(event);\n } catch (error: unknown) {\n console.warn('Analytics: Error adding event to queue', error);\n }\n }\n\n public async sendFlavor(flavor: 'dropin' | 'components'): Promise<void> {\n if (!this.capturedCheckoutAttemptId) return;\n if (this.isFlavorReported) return;\n\n this.isFlavorReported = true;\n\n try {\n await this.service.reportIntegrationFlavor(flavor, this.capturedCheckoutAttemptId);\n } catch (error) {\n console.warn('Analytics: Error reporting flavor', error);\n }\n }\n\n public flush(): void {\n void this.sendEvents();\n }\n\n /**\n * Info events don't have high priority, therefore we add a delay in order to dispatch a batch of events\n * Log/Error events are sent almost immediately. There is a debounce mechanism in place but the delay is very minimal\n *\n * @param event\n * @private\n */\n private addEventToQueue(event: AbstractAnalyticsEvent): void {\n this.eventsQueue.add(event);\n\n if (event.getEventCategory() === AnalyticsEventCategory.info) {\n this.debouncedSendInfoEvents();\n } else {\n this.debouncedSendEvents();\n }\n }\n\n private async sendEvents(): Promise<void> {\n if (!this.capturedCheckoutAttemptId || !this.enabled) {\n return;\n }\n\n const payload: AnalyticsEventPayload = {\n channel: 'Web',\n platform: 'Web',\n info: this.eventsQueue.infoEvents,\n errors: this.eventsQueue.errorEvents,\n logs: this.eventsQueue.logEvents\n };\n\n this.eventsQueue.clear();\n\n try {\n await this.service.sendEvents(payload, this.capturedCheckoutAttemptId);\n } catch (error) {\n console.warn('Analytics: Error sending events', error);\n }\n }\n}\n\nexport default Analytics;\n"],"names":["Analytics","setUp","sessionId","checkoutStage","locale","checkoutAttemptIdSession","this","storage","get","isSessionReusable","session","timestamp","fifteenMinutesAgo","Date","now","isSessionCreatedUnderFifteenMinutes","applicationInfo","checkoutAttemptId","checkoutAttemptIdFromPayByLink","processAnalyticsData","analyticsData","availableCheckoutAttemptId","id","payload","version","LIBRARY_VERSION","buildType","LIBRARY_BUNDLE_TYPE","channel","platform","referrer","window","location","href","screenWidth","screen","width","level","enabled","capturedCheckoutAttemptId","service","requestCheckoutAttemptId","set","error","console","warn","sendAnalytics","event","addEventToQueue","sendFlavor","flavor","isFlavorReported","reportIntegrationFlavor","flush","sendEvents","eventsQueue","add","getEventCategory","AnalyticsEventCategory","info","debouncedSendInfoEvents","debouncedSendEvents","infoEvents","errors","errorEvents","logs","logEvents","clear","constructor","eventQueue","_define_property","Storage","debounce","bind","undefined"],"mappings":"uZA0CA,MAAMA,EAuBF,WAAaC,EAAMC,UACfA,EAASC,cACTA,EAAaC,OACbA,GACqF,CAAA,GACrF,IACI,MAAMC,EAA2BC,KAAKC,QAAQC,MACxCC,EAxClB,SAA6CC,GAEzC,IAAKA,GAASC,UAAW,OAAO,EAChC,MAAMC,EAAoBC,KAAKC,MAFD,IAG9B,OAAOJ,EAAQC,UAAYC,CAC/B,CAmCsCG,CAAoCV,IAExDW,gBAAEA,EAAiBC,kBAAmBC,GAAmCC,EAAqBb,KAAKc,eAEnGC,EAAiDZ,EAAoBJ,EAAyBiB,GAAKJ,EAEnGK,EAAmC,CACrCC,QAASC,EACTC,UAAWC,EACXC,QAAS,MACTC,SAAU,MACVzB,SACA0B,SAAUC,OAAOC,SAASC,KAC1BC,YAAaH,OAAOI,OAAOC,MAC3BjC,cAAeA,GAAiB,WAChCkC,MAAO/B,KAAKgC,QAAU,MAAQ,aAC1BtB,GAAmB,CAAEA,sBACrBd,GAAa,CAAEA,gBACfmB,GAA8B,CAAEJ,kBAAmBI,IAG3Df,KAAKiC,gCAAkCjC,KAAKkC,QAAQC,yBAAyBlB,GAE7EjB,KAAKC,QAAQmC,IAAI,CACbpB,GAAIhB,KAAKiC,0BACT5B,UAAWF,EAAoBJ,EAAyBM,UAAYE,KAAKC,OAEjF,CAAE,MAAO6B,GACLrC,KAAKgC,SAAU,EACfM,QAAQC,KAAK,8BAA+BF,EAChD,CACJ,CAEOG,aAAAA,CAAcC,GACjB,GAAKzC,KAAKgC,QAIV,IACIhC,KAAK0C,gBAAgBD,EACzB,CAAE,MAAOJ,GACLC,QAAQC,KAAK,yCAA0CF,EAC3D,CACJ,CAEA,gBAAaM,CAAWC,GACpB,GAAK5C,KAAKiC,4BACNjC,KAAK6C,iBAAT,CAEA7C,KAAK6C,kBAAmB,EAExB,UACU7C,KAAKkC,QAAQY,wBAAwBF,EAAQ5C,KAAKiC,0BAC5D,CAAE,MAAOI,GACLC,QAAQC,KAAK,oCAAqCF,EACtD,CAR2B,CAS/B,CAEOU,KAAAA,GACE/C,KAAKgD,YACd,CASQN,eAAAA,CAAgBD,GACpBzC,KAAKiD,YAAYC,IAAIT,GAEjBA,EAAMU,qBAAuBC,EAAuBC,KACpDrD,KAAKsD,0BAELtD,KAAKuD,qBAEb,CAEA,gBAAcP,GACV,IAAKhD,KAAKiC,4BAA8BjC,KAAKgC,QACzC,OAGJ,MAAMf,EAAiC,CACnCK,QAAS,MACTC,SAAU,MACV8B,KAAMrD,KAAKiD,YAAYO,WACvBC,OAAQzD,KAAKiD,YAAYS,YACzBC,KAAM3D,KAAKiD,YAAYW,WAG3B5D,KAAKiD,YAAYY,QAEjB,UACU7D,KAAKkC,QAAQc,WAAW/B,EAASjB,KAAKiC,0BAChD,CAAE,MAAOI,GACLC,QAAQC,KAAK,kCAAmCF,EACpD,CACJ,CArHA,WAAAyB,EAAY5B,QAAEA,EAAO6B,WAAEA,EAAU/B,QAAEA,EAAOlB,cAAEA,IAX5CkD,EAAAhE,KAAiBc,qBAAjB,GACAkD,EAAAhE,KAAiBkC,eAAjB,GACA8B,EAAAhE,KAAiBiD,mBAAjB,GACAe,EAAAhE,KAAiBC,UAAU,IAAIgE,EAAyC,sBAAuB,mBAC/FD,EAAAhE,KAAiBsD,+BAAjB,GACAU,EAAAhE,KAAiBuD,2BAAjB,GAEAS,EAAAhE,KAAQgC,WAAmB,GAC3BgC,EAAAhE,KAAQiC,iCAAR,GACA+B,EAAAhE,KAAQ6C,oBAAmB,GAGvB7C,KAAKkC,QAAUA,EACflC,KAAKiD,YAAcc,EAEnB/D,KAAKsD,wBAA0BY,EAASlE,KAAKgD,WAAWmB,KAAKnE,MAnBkB,KAoB/EA,KAAKuD,oBAAsBW,EAASlE,KAAKgD,WAAWmB,KAAKnE,MAnBjB,UAqBxBoE,IAAZpC,IAAuBhC,KAAKgC,QAAUA,GACtClB,IAAed,KAAKc,cAAgBA,EAC5C"}
1
+ {"version":3,"file":"Analytics.js","sources":["../../../../src/core/Analytics/Analytics.ts"],"sourcesContent":["import { debounce } from '../../utils/debounce';\nimport { processAnalyticsData } from './utils';\nimport { AbstractAnalyticsEvent, AnalyticsEventCategory } from './events/AbstractAnalyticsEvent';\nimport Storage from '../../utils/Storage';\nimport { LIBRARY_BUNDLE_TYPE, LIBRARY_VERSION } from '../config';\nimport { AnalyticsEventQueue } from './AnalyticsEventQueue';\nimport type { AnalyticsOptions } from './types';\nimport type { AnalyticsEventPayload, IAnalyticsService, RequestAttemptIdPayload } from './AnalyticsService';\n\nexport interface AnalyticsProps {\n service: IAnalyticsService;\n eventQueue: AnalyticsEventQueue;\n enabled?: boolean;\n analyticsData?: AnalyticsOptions['analyticsData'];\n}\n\nexport interface IAnalytics {\n checkoutAttemptId?: string;\n setUp({ sessionId, checkoutStage, locale }: { sessionId?: string; checkoutStage?: 'precheckout' | 'checkout'; locale?: string }): Promise<void>;\n sendFlavor(flavor: 'dropin' | 'components'): Promise<void>;\n sendAnalytics(event: AbstractAnalyticsEvent): void;\n flush(): void;\n}\n\nexport interface CheckoutAttemptIdSessionStorage {\n id: string;\n timestamp: number;\n}\n\n/**\n * If the checkout attempt ID was stored more than fifteen minutes ago, then we should request a new ID.\n * More here: COWEB-1099\n */\nfunction isSessionCreatedUnderFifteenMinutes(session: CheckoutAttemptIdSessionStorage): boolean {\n const FIFTEEN_MINUTES_IN_MS = 15 * 60 * 1000;\n if (!session?.timestamp) return false;\n const fifteenMinutesAgo = Date.now() - FIFTEEN_MINUTES_IN_MS;\n return session.timestamp > fifteenMinutesAgo;\n}\n\nconst ANALYTICS_INFO_DEBOUNCE_DELAY = process.env.NODE_ENV === 'development' ? 5_000 : 10_000;\nconst ANALYTICS_ERROR_AND_LOGS_DEBOUNCE_DELAY = 5_000;\n\nclass Analytics implements IAnalytics {\n private readonly analyticsData?: AnalyticsOptions['analyticsData'];\n private readonly service: IAnalyticsService;\n private readonly eventsQueue: AnalyticsEventQueue;\n private readonly storage = new Storage<CheckoutAttemptIdSessionStorage>('checkout-attempt-id', 'sessionStorage');\n private readonly debouncedSendInfoEvents: () => void;\n private readonly debouncedSendEvents: () => void;\n\n private enabled: boolean = true;\n private capturedCheckoutAttemptId?: string;\n private isFlavorReported = false;\n\n constructor({ service, eventQueue, enabled, analyticsData }: AnalyticsProps) {\n this.service = service;\n this.eventsQueue = eventQueue;\n\n this.debouncedSendInfoEvents = debounce(this.sendEvents.bind(this), ANALYTICS_INFO_DEBOUNCE_DELAY);\n this.debouncedSendEvents = debounce(this.sendEvents.bind(this), ANALYTICS_ERROR_AND_LOGS_DEBOUNCE_DELAY);\n\n if (enabled !== undefined) this.enabled = enabled;\n if (analyticsData) this.analyticsData = analyticsData;\n }\n\n public get checkoutAttemptId(): string {\n return this.capturedCheckoutAttemptId;\n }\n\n public async setUp({\n sessionId,\n checkoutStage,\n locale\n }: { sessionId?: string; locale?: string; checkoutStage?: 'precheckout' | 'checkout' } = {}): Promise<void> {\n try {\n const checkoutAttemptIdSession = this.storage.get();\n const isSessionReusable = isSessionCreatedUnderFifteenMinutes(checkoutAttemptIdSession);\n\n const { applicationInfo, checkoutAttemptId: checkoutAttemptIdFromPayByLink } = processAnalyticsData(this.analyticsData);\n\n const availableCheckoutAttemptId: string | undefined = isSessionReusable ? checkoutAttemptIdSession.id : checkoutAttemptIdFromPayByLink;\n\n const payload: RequestAttemptIdPayload = {\n version: LIBRARY_VERSION,\n buildType: LIBRARY_BUNDLE_TYPE,\n channel: 'Web',\n platform: 'Web',\n locale,\n referrer: window.location.href,\n screenWidth: window.screen.width,\n checkoutStage: checkoutStage || 'checkout',\n level: this.enabled ? 'all' : 'initial',\n ...(applicationInfo && { applicationInfo }),\n ...(sessionId && { sessionId }),\n ...(availableCheckoutAttemptId && { checkoutAttemptId: availableCheckoutAttemptId })\n };\n\n this.capturedCheckoutAttemptId = await this.service.requestCheckoutAttemptId(payload);\n\n this.storage.set({\n id: this.capturedCheckoutAttemptId,\n timestamp: isSessionReusable ? checkoutAttemptIdSession.timestamp : Date.now()\n });\n } catch (error: unknown) {\n this.enabled = false;\n console.warn('Analytics: Error setting up', error);\n }\n }\n\n public sendAnalytics(event: AbstractAnalyticsEvent): void {\n if (!this.enabled) {\n return;\n }\n\n try {\n this.addEventToQueue(event);\n } catch (error: unknown) {\n console.warn('Analytics: Error adding event to queue', error);\n }\n }\n\n public async sendFlavor(flavor: 'dropin' | 'components'): Promise<void> {\n if (!this.capturedCheckoutAttemptId) return;\n if (this.isFlavorReported) return;\n\n this.isFlavorReported = true;\n\n try {\n await this.service.reportIntegrationFlavor(flavor, this.capturedCheckoutAttemptId);\n } catch (error) {\n console.warn('Analytics: Error reporting flavor', error);\n }\n }\n\n public flush(): void {\n void this.sendEvents();\n }\n\n /**\n * Info events don't have high priority, therefore we add a delay in order to dispatch a batch of events\n * Log/Error events are sent almost immediately. There is a debounce mechanism in place but the delay is very minimal\n *\n * @param event\n * @private\n */\n private addEventToQueue(event: AbstractAnalyticsEvent): void {\n this.eventsQueue.add(event);\n\n if (event.getEventCategory() === AnalyticsEventCategory.info) {\n this.debouncedSendInfoEvents();\n } else {\n this.debouncedSendEvents();\n }\n }\n\n private async sendEvents(): Promise<void> {\n if (!this.capturedCheckoutAttemptId || !this.enabled) {\n return;\n }\n\n const payload: AnalyticsEventPayload = {\n channel: 'Web',\n platform: 'Web',\n info: this.eventsQueue.infoEvents,\n errors: this.eventsQueue.errorEvents,\n logs: this.eventsQueue.logEvents\n };\n\n this.eventsQueue.clear();\n\n try {\n await this.service.sendEvents(payload, this.capturedCheckoutAttemptId);\n } catch (error) {\n console.warn('Analytics: Error sending events', error);\n }\n }\n}\n\nexport default Analytics;\n"],"names":["Analytics","checkoutAttemptId","this","capturedCheckoutAttemptId","setUp","sessionId","checkoutStage","locale","checkoutAttemptIdSession","storage","get","isSessionReusable","session","timestamp","fifteenMinutesAgo","Date","now","isSessionCreatedUnderFifteenMinutes","applicationInfo","checkoutAttemptIdFromPayByLink","processAnalyticsData","analyticsData","availableCheckoutAttemptId","id","payload","version","LIBRARY_VERSION","buildType","LIBRARY_BUNDLE_TYPE","channel","platform","referrer","window","location","href","screenWidth","screen","width","level","enabled","service","requestCheckoutAttemptId","set","error","console","warn","sendAnalytics","event","addEventToQueue","sendFlavor","flavor","isFlavorReported","reportIntegrationFlavor","flush","sendEvents","eventsQueue","add","getEventCategory","AnalyticsEventCategory","info","debouncedSendInfoEvents","debouncedSendEvents","infoEvents","errors","errorEvents","logs","logEvents","clear","constructor","eventQueue","_define_property","Storage","debounce","bind","undefined"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{AbstractAnalyticsEvent as r,AnalyticsEventCategory as e}from"./AbstractAnalyticsEvent.js";function E(r,e,E){return e in r?Object.defineProperty(r,e,{value:E,enumerable:!0,configurable:!0,writable:!0}):r[e]=E,r}var _=function(r){return r.network="Network",r.implementation="ImplementationError",r.internal="Internal",r.apiError="ApiError",r.sdkError="SdkError",r.thirdParty="ThirdParty",r.generic="Generic",r.redirect="Redirect",r.threeDS2="ThreeDS2",r}({}),t=function(r){return r.REDIRECT="600",r.THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA="700",r.THREEDS2_ACTION_IS_MISSING_TOKEN="701",r.THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL="702",r.THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS="703",r.THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED="704",r.THREEDS2_TIMEOUT="705",r.THREEDS2_TOKEN_IS_MISSING_ACSURL="800",r.THREEDS2_NO_TRANSSTATUS="801",r.THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED="802",r.THREEDS2_NO_COMPONENT_FOR_ACTION="803",r.THREEDS2_NO_ACTION_FOR_CHALLENGE="804",r.THREEDS2_CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP="805",r}({});class S extends r{getEventCategory(){return e.error}constructor(r){super(r.component),E(this,"errorType",void 0),E(this,"code",void 0),E(this,"message",void 0),this.errorType=r.errorType,this.code=r.code,r.message&&(this.message=r.message)}}export{S as AnalyticsErrorEvent,t as ErrorEventCode,_ as ErrorEventType};
1
+ import{AbstractAnalyticsEvent as E,AnalyticsEventCategory as e}from"./AbstractAnalyticsEvent.js";function r(E,e,r){return e in E?Object.defineProperty(E,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):E[e]=r,E}var _=function(E){return E.network="Network",E.implementation="Implementation",E.internal="Internal",E.apiError="ApiError",E.sdkError="SdkError",E.thirdParty="ThirdParty",E.generic="Generic",E.redirect="Redirect",E.threeDS2="ThreeDS2",E}({}),T=function(E){return E.SECURED_FIELDS_IFRAME_CONTENT_WINDOW_NOT_FOUND="500",E.REDIRECT="600",E.THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA="700",E.THREEDS2_ACTION_IS_MISSING_TOKEN="701",E.THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL="702",E.THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS="703",E.THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED="704",E.THREEDS2_TIMEOUT="705",E.THREEDS2_TOKEN_IS_MISSING_ACSURL="800",E.THREEDS2_NO_TRANSSTATUS="801",E.THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED="802",E.THREEDS2_NO_COMPONENT_FOR_ACTION="803",E.THREEDS2_NO_ACTION_FOR_CHALLENGE="804",E.THREEDS2_CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP="805",E}({});class S extends E{getEventCategory(){return e.error}constructor(E){super(E.component),r(this,"errorType",void 0),r(this,"code",void 0),r(this,"message",void 0),this.errorType=E.errorType,this.code=E.code,E.message&&(this.message=E.message)}}export{S as AnalyticsErrorEvent,T as ErrorEventCode,_ as ErrorEventType};
2
2
  //# sourceMappingURL=AnalyticsErrorEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsErrorEvent.js","sources":["../../../../../src/core/Analytics/events/AnalyticsErrorEvent.ts"],"sourcesContent":["import { AbstractAnalyticsEvent, AnalyticsEventCategory } from './AbstractAnalyticsEvent';\n\ntype AnalyticsErrorEventProps = {\n component: string;\n errorType: ErrorEventType;\n code: string;\n message?: string;\n};\n\nexport enum ErrorEventType {\n network = 'Network',\n implementation = 'ImplementationError',\n internal = 'Internal',\n apiError = 'ApiError',\n sdkError = 'SdkError',\n thirdParty = 'ThirdParty',\n generic = 'Generic',\n redirect = 'Redirect',\n threeDS2 = 'ThreeDS2'\n}\n\nexport enum ErrorEventCode {\n REDIRECT = '600',\n /** Missing 'paymentData' property from threeDS2 action */\n THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA = '700',\n /** Missing 'token' property from threeDS2 action */\n THREEDS2_ACTION_IS_MISSING_TOKEN = '701',\n /** Decoded token is missing a valid threeDSMethodURL property */\n THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL = '702',\n /**\n * Decoded token is missing one or more of the following properties:\n * fingerprint: (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)\n * challenge: (acsTransID | messageVersion | threeDSServerTransID)\n */\n THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS = '703',\n /** Token decoding or parsing has failed. ('not base64', 'malformed URI sequence' or 'Could not JSON parse token') */\n THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED = '704',\n /** 3DS2 process has timed out */\n THREEDS2_TIMEOUT = '705',\n /** Decoded token is missing a valid acsURL property */\n THREEDS2_TOKEN_IS_MISSING_ACSURL = '800',\n /** Challenge has resulted in an error (no transStatus could be retrieved by the backend) */\n THREEDS2_NO_TRANSSTATUS = '801',\n /** callSubmit3DS2Fingerprint has received a response indicating either a \"frictionless\" flow, or a \"refused\" response, but without a details object */\n THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED = '802',\n /** callSubmit3DS2Fingerprint cannot find a component to handle the action response */\n THREEDS2_NO_COMPONENT_FOR_ACTION = '803',\n /** callSubmit3DS2Fingerprint has received a response indicating a \"challenge\" but without an action object */\n THREEDS2_NO_ACTION_FOR_CHALLENGE = '804',\n /** The challenge process has happened, an object has been returned, parsed & accepted as legit, but the result prop on that object is either missing or doesn't have a transStatus prop */\n THREEDS2_CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP = '805'\n}\n\nexport class AnalyticsErrorEvent extends AbstractAnalyticsEvent {\n private readonly errorType: ErrorEventType;\n private readonly code: string;\n\n private readonly message?: string;\n\n constructor(props: AnalyticsErrorEventProps) {\n super(props.component);\n\n this.errorType = props.errorType;\n this.code = props.code;\n\n if (props.message) this.message = props.message;\n }\n\n public getEventCategory(): AnalyticsEventCategory {\n return AnalyticsEventCategory.error;\n }\n}\n"],"names":["ErrorEventType","ErrorEventCode","AnalyticsErrorEvent","AbstractAnalyticsEvent","getEventCategory","AnalyticsEventCategory","error","constructor","props","super","component","_define_property","errorType","this","code","message"],"mappings":"yNASO,IAAAA,EAAKA,SAAAA,GAAAA,8NAAAA,CAUX,CAVWA,CAUX,CAAA,GAEMC,EAAKA,SAAAA,GAAAA,wBAEiDA,EAAA,wCAAA,MAEPA,EAAA,iCAAA,MAEaA,EAAA,2CAAA,MAM9DA,EAAA,sCAAA,MAEkHA,EAAA,wCAAA,MAEpFA,EAAA,iBAAA,MAEsBA,EAAA,iCAAA,MAEqCA,EAAA,wBAAA,MAE2DA,EAAA,gDAAA,MAEjEA,EAAA,iCAAA,MAEwBA,EAAA,iCAAA,MAE6EA,EAAA,gDAAA,MA5BjLA,CA8BX,CA9BWA,CA8BX,CAAA,GAEM,MAAMC,UAA4BC,EAe9BC,gBAAAA,GACH,OAAOC,EAAuBC,KAClC,CAXA,WAAAC,CAAYC,GACRC,MAAMD,EAAME,WANhBC,OAAiBC,iBAAjB,GACAD,EAAAE,KAAiBC,YAAjB,GAEAH,EAAAE,KAAiBE,eAAjB,GAKIF,KAAKD,UAAYJ,EAAMI,UACvBC,KAAKC,KAAON,EAAMM,KAEdN,EAAMO,UAASF,KAAKE,QAAUP,EAAMO,QAC5C"}
1
+ {"version":3,"file":"AnalyticsErrorEvent.js","sources":["../../../../../src/core/Analytics/events/AnalyticsErrorEvent.ts"],"sourcesContent":["import { AbstractAnalyticsEvent, AnalyticsEventCategory } from './AbstractAnalyticsEvent';\n\ntype AnalyticsErrorEventProps = {\n component: string;\n errorType: ErrorEventType;\n code: string;\n message?: string;\n};\n\nexport enum ErrorEventType {\n network = 'Network',\n implementation = 'Implementation',\n internal = 'Internal',\n apiError = 'ApiError',\n sdkError = 'SdkError',\n thirdParty = 'ThirdParty',\n generic = 'Generic',\n redirect = 'Redirect',\n threeDS2 = 'ThreeDS2'\n}\n\nexport enum ErrorEventCode {\n /** Trying to initialise a securedField iframe, but the iframe.contentWindow is undefined (meaning the containing element is not in the DOM */\n SECURED_FIELDS_IFRAME_CONTENT_WINDOW_NOT_FOUND = '500',\n REDIRECT = '600',\n /** Missing 'paymentData' property from threeDS2 action */\n THREEDS2_ACTION_IS_MISSING_PAYMENT_DATA = '700',\n /** Missing 'token' property from threeDS2 action */\n THREEDS2_ACTION_IS_MISSING_TOKEN = '701',\n /** Decoded token is missing a valid threeDSMethodURL property */\n THREEDS2_TOKEN_IS_MISSING_THREEDSMETHODURL = '702',\n /**\n * Decoded token is missing one or more of the following properties:\n * fingerprint: (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)\n * challenge: (acsTransID | messageVersion | threeDSServerTransID)\n */\n THREEDS2_TOKEN_IS_MISSING_OTHER_PROPS = '703',\n /** Token decoding or parsing has failed. ('not base64', 'malformed URI sequence' or 'Could not JSON parse token') */\n THREEDS2_TOKEN_DECODE_OR_PARSING_FAILED = '704',\n /** 3DS2 process has timed out */\n THREEDS2_TIMEOUT = '705',\n /** Decoded token is missing a valid acsURL property */\n THREEDS2_TOKEN_IS_MISSING_ACSURL = '800',\n /** Challenge has resulted in an error (no transStatus could be retrieved by the backend) */\n THREEDS2_NO_TRANSSTATUS = '801',\n /** callSubmit3DS2Fingerprint has received a response indicating either a \"frictionless\" flow, or a \"refused\" response, but without a details object */\n THREEDS2_NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED = '802',\n /** callSubmit3DS2Fingerprint cannot find a component to handle the action response */\n THREEDS2_NO_COMPONENT_FOR_ACTION = '803',\n /** callSubmit3DS2Fingerprint has received a response indicating a \"challenge\" but without an action object */\n THREEDS2_NO_ACTION_FOR_CHALLENGE = '804',\n /** The challenge process has happened, an object has been returned, parsed & accepted as legit, but the result prop on that object is either missing or doesn't have a transStatus prop */\n THREEDS2_CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP = '805'\n}\n\nexport class AnalyticsErrorEvent extends AbstractAnalyticsEvent {\n private readonly errorType: ErrorEventType;\n private readonly code: string;\n\n private readonly message?: string;\n\n constructor(props: AnalyticsErrorEventProps) {\n super(props.component);\n\n this.errorType = props.errorType;\n this.code = props.code;\n\n if (props.message) this.message = props.message;\n }\n\n public getEventCategory(): AnalyticsEventCategory {\n return AnalyticsEventCategory.error;\n }\n}\n"],"names":["ErrorEventType","ErrorEventCode","AnalyticsErrorEvent","AbstractAnalyticsEvent","getEventCategory","AnalyticsEventCategory","error","constructor","props","super","component","_define_property","errorType","this","code","message"],"mappings":"yNASO,IAAAA,EAAKA,SAAAA,GAAAA,yNAAAA,CAUX,CAVWA,CAUX,CAAA,GAEMC,EAAKA,SAAAA,GAAAA,OACoIA,EAAA,+CAAA,uBAGnFA,EAAA,wCAAA,MAEPA,EAAA,iCAAA,MAEaA,EAAA,2CAAA,MAM9DA,EAAA,sCAAA,MAEkHA,EAAA,wCAAA,MAEpFA,EAAA,iBAAA,MAEsBA,EAAA,iCAAA,MAEqCA,EAAA,wBAAA,MAE2DA,EAAA,gDAAA,MAEjEA,EAAA,iCAAA,MAEwBA,EAAA,iCAAA,MAE6EA,EAAA,gDAAA,MA9BjLA,CAgCX,CAhCWA,CAgCX,CAAA,GAEM,MAAMC,UAA4BC,EAe9BC,gBAAAA,GACH,OAAOC,EAAuBC,KAClC,CAXA,WAAAC,CAAYC,GACRC,MAAMD,EAAME,WANhBC,OAAiBC,iBAAjB,GACAD,EAAAE,KAAiBC,YAAjB,GAEAH,EAAAE,KAAiBE,eAAjB,GAKIF,KAAKD,UAAYJ,EAAMI,UACvBC,KAAKC,KAAON,EAAMM,KAEdN,EAAMO,UAASF,KAAKE,QAAUP,EAAMO,QAC5C"}
@@ -1,2 +1,2 @@
1
- import{AbstractAnalyticsEvent as e,AnalyticsEventCategory as t}from"./AbstractAnalyticsEvent.js";import{mapErrorCodesForAnalytics as o}from"../utils.js";function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var i=function(e){return e.instantPaymentButton="instant_payment_button",e.dualBrandButton="dual_brand_button",e.fastlaneSignupConsentToggle="fastlane_signup_consent_toggle",e.otherPaymentMethodButton="otherpaymentmethod_button",e.featuredIssuer="featured_issuer",e.list="list",e.listSearch="list_search",e.qrDownloadButton="qr_download_button",e.cardNumber="card_number",e}({}),d=function(e){return e.clicked="clicked",e.rendered="rendered",e.selected="selected",e.validationError="validationError",e.focus="focus",e.unfocus="unfocus",e.configured="configured",e.displayed="displayed",e.input="input",e.download="download",e.sdkDownloadInitiated="sdkDownloadInitiated",e.sdkDownloadFailed="sdkDownloadFailed",e.sdkDownloadAborted="sdkDownloadAborted",e.sdkDownloadCompleted="sdkDownloadCompleted",e.Initialized="initialized",e.LookupStarted="lookupStarted",e.LookupUserNotFound="lookupUserNotFound",e.OtpStarted="otpStarted",e.OtpSucceeded="otpSucceeded",e.OtpCanceled="otpCanceled",e.OtpFailed="otpFailed",e.AddressSelectorClicked="addressSelectorClicked",e.AddressSelectorClosed="addressSelectorClosed",e.AddressChanged="addressChanged",e}({});class s extends e{get configDataExcludedFields(){return["paymentMethodsConfiguration","elementRef","isDropin","oneClick","storedPaymentMethodId","paymentMethodId","isInstantPayment","type","data","holderName","shopperEmail","email","telephoneNumber","clickToPayConfiguration","modules","i18n"]}createAnalyticsConfigData(e){if(!e)return{};const t={};try{for(const[o,r]of Object.entries(e))this.configDataExcludedFields.includes(o)||("function"==typeof r?t[o]="function":Array.isArray(r)?t[o]=r.join(", ").substring(0,128):t[o]="object"==typeof r&&null!==r?JSON.stringify(r).substring(0,128):r);return t}catch(e){return t}}getEventCategory(){return t.info}constructor(e){super(e.component),r(this,"type",void 0),r(this,"configData",void 0),r(this,"target",void 0),r(this,"issuer",void 0),r(this,"isExpress",void 0),r(this,"expressPage",void 0),r(this,"isStoredPaymentMethod",void 0),r(this,"brand",void 0),r(this,"validationErrorCode",void 0),r(this,"validationErrorMessage",void 0),r(this,"cdnUrl",void 0),this.type=e.type,e.target&&(this.target=e.target),e.issuer&&(this.issuer=e.issuer),void 0!==e.isStoredPaymentMethod&&(this.isStoredPaymentMethod=e.isStoredPaymentMethod),void 0!==e.isExpress&&(this.isExpress=e.isExpress),e.expressPage&&(this.expressPage=e.expressPage),e.brand&&(this.brand=e.brand),e.cdnUrl&&(this.cdnUrl=e.cdnUrl),e.validationErrorCode&&(this.validationErrorCode=e.validationErrorCode),e.validationErrorMessage&&(this.validationErrorMessage=e.validationErrorMessage),"rendered"===this.type&&(this.configData=this.createAnalyticsConfigData(e?.configData)),"validationError"===this.type&&(this.validationErrorCode=o(this.validationErrorCode,this.target))}}export{s as AnalyticsInfoEvent,d as InfoEventType,i as UiTarget};
1
+ import{AbstractAnalyticsEvent as e,AnalyticsEventCategory as t}from"./AbstractAnalyticsEvent.js";import{mapErrorCodesForAnalytics as o}from"../utils.js";function d(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var i=function(e){return e.instantPaymentButton="instant_payment_button",e.dualBrandButton="dual_brand_button",e.fastlaneSignupConsentToggle="fastlane_signup_consent_toggle",e.otherPaymentMethodButton="otherpaymentmethod_button",e.featuredIssuer="featured_issuer",e.list="list",e.listSearch="list_search",e.qrDownloadButton="qr_download_button",e.cardNumber="card_number",e.segmentedControl="segmented_control",e}({}),r=function(e){return e.clicked="clicked",e.rendered="rendered",e.selected="selected",e.validationError="validationError",e.focus="focus",e.unfocus="unfocus",e.configured="configured",e.displayed="displayed",e.input="input",e.download="download",e.sdkDownloadInitiated="sdkDownloadInitiated",e.sdkDownloadFailed="sdkDownloadFailed",e.sdkDownloadAborted="sdkDownloadAborted",e.sdkDownloadCompleted="sdkDownloadCompleted",e.Initialized="initialized",e.LookupStarted="lookupStarted",e.LookupUserNotFound="lookupUserNotFound",e.OtpStarted="otpStarted",e.OtpSucceeded="otpSucceeded",e.OtpCanceled="otpCanceled",e.OtpFailed="otpFailed",e.AddressSelectorClicked="addressSelectorClicked",e.AddressSelectorClosed="addressSelectorClosed",e.AddressChanged="addressChanged",e}({});class s extends e{get configDataExcludedFields(){return["paymentMethodsConfiguration","elementRef","isDropin","oneClick","storedPaymentMethodId","paymentMethodId","isInstantPayment","type","data","holderName","shopperEmail","email","telephoneNumber","clickToPayConfiguration","modules","i18n"]}createAnalyticsConfigData(e){if(!e)return{};const t={};try{for(const[o,d]of Object.entries(e))this.configDataExcludedFields.includes(o)||("function"==typeof d?t[o]="function":Array.isArray(d)?t[o]=d.join(", ").substring(0,128):t[o]="object"==typeof d&&null!==d?JSON.stringify(d).substring(0,128):d);return t}catch(e){return t}}getEventCategory(){return t.info}constructor(e){super(e.component),d(this,"type",void 0),d(this,"configData",void 0),d(this,"target",void 0),d(this,"issuer",void 0),d(this,"isExpress",void 0),d(this,"expressPage",void 0),d(this,"isStoredPaymentMethod",void 0),d(this,"brand",void 0),d(this,"selectedValue",void 0),d(this,"validationErrorCode",void 0),d(this,"validationErrorMessage",void 0),d(this,"cdnUrl",void 0),this.type=e.type,e.target&&(this.target=e.target),e.issuer&&(this.issuer=e.issuer),void 0!==e.isStoredPaymentMethod&&(this.isStoredPaymentMethod=e.isStoredPaymentMethod),void 0!==e.isExpress&&(this.isExpress=e.isExpress),e.expressPage&&(this.expressPage=e.expressPage),e.brand&&(this.brand=e.brand),e.cdnUrl&&(this.cdnUrl=e.cdnUrl),e.selectedValue&&(this.selectedValue=e.selectedValue),e.validationErrorCode&&(this.validationErrorCode=e.validationErrorCode),e.validationErrorMessage&&(this.validationErrorMessage=e.validationErrorMessage),"rendered"===this.type&&(this.configData=this.createAnalyticsConfigData(e?.configData)),"validationError"===this.type&&(this.validationErrorCode=o(this.validationErrorCode,this.target))}}export{s as AnalyticsInfoEvent,r as InfoEventType,i as UiTarget};
2
2
  //# sourceMappingURL=AnalyticsInfoEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsInfoEvent.js","sources":["../../../../../src/core/Analytics/events/AnalyticsInfoEvent.ts"],"sourcesContent":["import { AbstractAnalyticsEvent, AnalyticsEventCategory } from './AbstractAnalyticsEvent';\nimport { mapErrorCodesForAnalytics } from '../utils';\n\ntype AnalyticsInfoEventProps = {\n type: InfoEventType;\n component: string;\n target?: UiTarget;\n issuer?: string;\n isExpress?: boolean;\n expressPage?: string;\n isStoredPaymentMethod?: boolean;\n brand?: string;\n validationErrorCode?: string;\n validationErrorMessage?: string;\n configData?: Record<string, any>;\n cdnUrl?: string;\n};\n\nexport enum UiTarget {\n instantPaymentButton = 'instant_payment_button',\n dualBrandButton = 'dual_brand_button',\n fastlaneSignupConsentToggle = 'fastlane_signup_consent_toggle',\n otherPaymentMethodButton = 'otherpaymentmethod_button',\n featuredIssuer = 'featured_issuer',\n list = 'list',\n listSearch = 'list_search',\n qrDownloadButton = 'qr_download_button',\n cardNumber = 'card_number'\n}\n\nexport enum InfoEventType {\n /** When a UI element is clicked */\n clicked = 'clicked',\n /** When a component is rendered in the browser (e.g. render() method is called) */\n rendered = 'rendered',\n /** When a list item is selected (e.g. issuer list) */\n selected = 'selected',\n /** When there is a validation issue with the input */\n validationError = 'validationError',\n /** When input gets focus */\n focus = 'focus',\n /** When input gets unfocus */\n unfocus = 'unfocus',\n /** When iframe fields are configured */\n configured = 'configured',\n /** When a dropdown list is displayed */\n displayed = 'displayed',\n /** When shopper utilizes an input field to search for values (e.g. issuer list) */\n input = 'input',\n /** When shopper clicks to download the image (e.g. QR code image) */\n download = 'download',\n sdkDownloadInitiated = 'sdkDownloadInitiated',\n sdkDownloadFailed = 'sdkDownloadFailed',\n sdkDownloadAborted = 'sdkDownloadAborted',\n sdkDownloadCompleted = 'sdkDownloadCompleted',\n Initialized = 'initialized',\n LookupStarted = 'lookupStarted',\n LookupUserNotFound = 'lookupUserNotFound',\n OtpStarted = 'otpStarted',\n OtpSucceeded = 'otpSucceeded',\n OtpCanceled = 'otpCanceled',\n OtpFailed = 'otpFailed',\n AddressSelectorClicked = 'addressSelectorClicked',\n AddressSelectorClosed = 'addressSelectorClosed',\n AddressChanged = 'addressChanged'\n}\n\nexport class AnalyticsInfoEvent extends AbstractAnalyticsEvent {\n /**\n * Analytics event type\n */\n private readonly type: InfoEventType;\n\n /**\n * Component config data set by the merchant. Sent only in 'rendered' events\n * @private\n */\n private readonly configData?: Record<string, string | boolean>;\n private readonly target?: UiTarget;\n private readonly issuer?: string;\n private readonly isExpress?: boolean;\n private readonly expressPage?: string;\n private readonly isStoredPaymentMethod?: boolean;\n private readonly brand?: string;\n private readonly validationErrorCode?: string;\n private readonly validationErrorMessage?: string;\n\n /**\n * Third party script URL's (e.g. Apple Pay)\n */\n public cdnUrl?: string;\n\n constructor(props: AnalyticsInfoEventProps) {\n super(props.component);\n\n this.type = props.type;\n\n if (props.target) this.target = props.target;\n if (props.issuer) this.issuer = props.issuer;\n if (props.isStoredPaymentMethod !== undefined) this.isStoredPaymentMethod = props.isStoredPaymentMethod;\n if (props.isExpress !== undefined) this.isExpress = props.isExpress;\n if (props.expressPage) this.expressPage = props.expressPage;\n if (props.brand) this.brand = props.brand;\n if (props.cdnUrl) this.cdnUrl = props.cdnUrl;\n if (props.validationErrorCode) this.validationErrorCode = props.validationErrorCode;\n if (props.validationErrorMessage) this.validationErrorMessage = props.validationErrorMessage;\n\n if (this.type === InfoEventType.rendered) {\n this.configData = this.createAnalyticsConfigData(props?.configData);\n }\n\n // Some of the more generic validation error codes required combination with target to retrieve a specific code\n if (this.type === InfoEventType.validationError) {\n this.validationErrorCode = mapErrorCodesForAnalytics(this.validationErrorCode, this.target);\n }\n }\n\n /**\n * Set of properties that must not be included when creating the configData for Analytics\n * @private\n */\n private get configDataExcludedFields() {\n const DROPIN_FIELDS = ['paymentMethodsConfiguration'];\n const FIELDS_INJECTED_BY_DROPIN = [\n 'elementRef',\n 'isDropin',\n 'oneClick',\n 'storedPaymentMethodId',\n 'paymentMethodId',\n 'isInstantPayment',\n 'type'\n ];\n const PII_FIELDS = ['data', 'holderName', 'shopperEmail', 'email', 'telephoneNumber', 'clickToPayConfiguration'];\n\n /**\n * TODO: Many unit tests are passing 'modules' as props, which leads to circular structure issue\n * The components must use the 'modules' from the core and not from the props\n */\n const UNIT_TEST_FIELDS = ['modules', 'i18n'];\n\n return [...DROPIN_FIELDS, ...FIELDS_INJECTED_BY_DROPIN, ...PII_FIELDS, ...UNIT_TEST_FIELDS];\n }\n\n /**\n * Creates a serializable analytics payload from the given config object.\n * Functions are replaced with 'function', and objects/arrays are stringified.\n */\n private createAnalyticsConfigData(config: Record<string, any>) {\n if (!config) return {};\n\n const MAX_STRING_LENGTH = 128;\n const result = {};\n\n try {\n for (const [key, value] of Object.entries(config)) {\n if (!this.configDataExcludedFields.includes(key)) {\n if (typeof value === 'function') {\n result[key] = 'function';\n } else if (Array.isArray(value)) {\n result[key] = value.join(', ').substring(0, MAX_STRING_LENGTH);\n } else if (typeof value === 'object' && value !== null) {\n result[key] = JSON.stringify(value).substring(0, MAX_STRING_LENGTH);\n } else {\n result[key] = value;\n }\n }\n }\n\n return result;\n } catch (error: unknown) {\n if (process.env.NODE_ENV === 'development') console.warn('AnalyticsInfoEvent: Error when creating configData\\n', error);\n return result;\n }\n }\n\n public getEventCategory(): AnalyticsEventCategory {\n return AnalyticsEventCategory.info;\n }\n}\n"],"names":["UiTarget","InfoEventType","AnalyticsInfoEvent","AbstractAnalyticsEvent","configDataExcludedFields","createAnalyticsConfigData","config","result","key","value","Object","entries","this","includes","Array","isArray","join","substring","JSON","stringify","error","getEventCategory","AnalyticsEventCategory","info","constructor","props","super","component","_define_property","type","configData","target","issuer","isExpress","expressPage","isStoredPaymentMethod","brand","validationErrorCode","validationErrorMessage","cdnUrl","undefined","mapErrorCodesForAnalytics"],"mappings":"iRAkBO,IAAAA,EAAKA,SAAAA,GAAAA,kWAAAA,CAUZ,CAVYA,CAUZ,CAAA,GAEOC,EAAKA,SAAAA,GAAAA,OACyBA,EAAA,QAAA,UAEgDA,EAAA,SAAA,WAE7BA,EAAA,SAAA,WAEAA,EAAA,gBAAA,kBAE1BA,EAAA,MAAA,QAEEA,EAAA,QAAA,UAEUA,EAAA,WAAA,aAEAA,EAAA,UAAA,YAE2CA,EAAA,MAAA,QAEdA,EAAA,SAAA,+gBAnB3DA,CAmCZ,CAnCYA,CAmCZ,CAAA,GAEO,MAAMC,UAA2BC,EAsDpC,4BAAYC,GAmBR,MAAO,CAlBgB,8BAEnB,aACA,WACA,WACA,wBACA,kBACA,mBACA,OAEgB,OAAQ,aAAc,eAAgB,QAAS,kBAAmB,0BAM5D,UAAW,OAGzC,CAMQC,yBAAAA,CAA0BC,GAC9B,IAAKA,EAAQ,MAAO,CAAA,EAEpB,MACMC,EAAS,CAAA,EAEf,IACI,IAAK,MAAOC,EAAKC,KAAUC,OAAOC,QAAQL,GACjCM,KAAKR,yBAAyBS,SAASL,KACnB,mBAAVC,EACPF,EAAOC,GAAO,WACPM,MAAMC,QAAQN,GACrBF,EAAOC,GAAOC,EAAMO,KAAK,MAAMC,UAAU,EAT/B,KAWVV,EAAOC,GADiB,iBAAVC,GAAgC,OAAVA,EACtBS,KAAKC,UAAUV,GAAOQ,UAAU,EAXpC,KAaIR,GAK1B,OAAOF,CACX,CAAE,MAAOa,GAEL,OAAOb,CACX,CACJ,CAEOc,gBAAAA,GACH,OAAOC,EAAuBC,IAClC,CArFA,WAAAC,CAAYC,GACRC,MAAMD,EAAME,WAtBhBC,EAAAhB,KAAiBiB,YAAjB,GAMAD,EAAAhB,KAAiBkB,kBAAjB,GACAF,OAAiBG,cAAjB,GACAH,EAAAhB,KAAiBoB,cAAjB,GACAJ,EAAAhB,KAAiBqB,iBAAjB,GACAL,EAAAhB,KAAiBsB,mBAAjB,GACAN,EAAAhB,KAAiBuB,6BAAjB,GACAP,OAAiBQ,aAAjB,GACAR,EAAAhB,KAAiByB,2BAAjB,GACAT,EAAAhB,KAAiB0B,8BAAjB,GAKAV,EAAAhB,KAAO2B,cAAP,GAKI3B,KAAKiB,KAAOJ,EAAMI,KAEdJ,EAAMM,SAAQnB,KAAKmB,OAASN,EAAMM,QAClCN,EAAMO,SAAQpB,KAAKoB,OAASP,EAAMO,aACFQ,IAAhCf,EAAMU,wBAAqCvB,KAAKuB,sBAAwBV,EAAMU,4BAC1DK,IAApBf,EAAMQ,YAAyBrB,KAAKqB,UAAYR,EAAMQ,WACtDR,EAAMS,cAAatB,KAAKsB,YAAcT,EAAMS,aAC5CT,EAAMW,QAAOxB,KAAKwB,MAAQX,EAAMW,OAChCX,EAAMc,SAAQ3B,KAAK2B,OAASd,EAAMc,QAClCd,EAAMY,sBAAqBzB,KAAKyB,oBAAsBZ,EAAMY,qBAC5DZ,EAAMa,yBAAwB1B,KAAK0B,uBAAyBb,EAAMa,wBAEzD,aAAT1B,KAAKiB,OACLjB,KAAKkB,WAAalB,KAAKP,0BAA0BoB,GAAOK,aAI/C,oBAATlB,KAAKiB,OACLjB,KAAKyB,oBAAsBI,EAA0B7B,KAAKyB,oBAAqBzB,KAAKmB,QAE5F"}
1
+ {"version":3,"file":"AnalyticsInfoEvent.js","sources":["../../../../../src/core/Analytics/events/AnalyticsInfoEvent.ts"],"sourcesContent":["import { AbstractAnalyticsEvent, AnalyticsEventCategory } from './AbstractAnalyticsEvent';\nimport { mapErrorCodesForAnalytics } from '../utils';\n\ntype AnalyticsInfoEventProps = {\n type: InfoEventType;\n component: string;\n target?: UiTarget;\n issuer?: string;\n isExpress?: boolean;\n expressPage?: string;\n isStoredPaymentMethod?: boolean;\n brand?: string;\n validationErrorCode?: string;\n validationErrorMessage?: string;\n configData?: Record<string, any>;\n cdnUrl?: string;\n selectedValue?: string;\n};\n\nexport enum UiTarget {\n instantPaymentButton = 'instant_payment_button',\n dualBrandButton = 'dual_brand_button',\n fastlaneSignupConsentToggle = 'fastlane_signup_consent_toggle',\n otherPaymentMethodButton = 'otherpaymentmethod_button',\n featuredIssuer = 'featured_issuer',\n list = 'list',\n listSearch = 'list_search',\n qrDownloadButton = 'qr_download_button',\n cardNumber = 'card_number',\n segmentedControl = 'segmented_control'\n}\n\nexport enum InfoEventType {\n /** When a UI element is clicked */\n clicked = 'clicked',\n /** When a component is rendered in the browser (e.g. render() method is called) */\n rendered = 'rendered',\n /** When a list item is selected (e.g. issuer list) */\n selected = 'selected',\n /** When there is a validation issue with the input */\n validationError = 'validationError',\n /** When input gets focus */\n focus = 'focus',\n /** When input gets unfocus */\n unfocus = 'unfocus',\n /** When iframe fields are configured */\n configured = 'configured',\n /** When a dropdown list is displayed */\n displayed = 'displayed',\n /** When shopper utilizes an input field to search for values (e.g. issuer list) */\n input = 'input',\n /** When shopper clicks to download the image (e.g. QR code image) */\n download = 'download',\n sdkDownloadInitiated = 'sdkDownloadInitiated',\n sdkDownloadFailed = 'sdkDownloadFailed',\n sdkDownloadAborted = 'sdkDownloadAborted',\n sdkDownloadCompleted = 'sdkDownloadCompleted',\n Initialized = 'initialized',\n LookupStarted = 'lookupStarted',\n LookupUserNotFound = 'lookupUserNotFound',\n OtpStarted = 'otpStarted',\n OtpSucceeded = 'otpSucceeded',\n OtpCanceled = 'otpCanceled',\n OtpFailed = 'otpFailed',\n AddressSelectorClicked = 'addressSelectorClicked',\n AddressSelectorClosed = 'addressSelectorClosed',\n AddressChanged = 'addressChanged'\n}\n\nexport class AnalyticsInfoEvent extends AbstractAnalyticsEvent {\n /**\n * Analytics event type\n */\n private readonly type: InfoEventType;\n\n /**\n * Component config data set by the merchant. Sent only in 'rendered' events\n * @private\n */\n private readonly configData?: Record<string, string | boolean>;\n private readonly target?: UiTarget;\n private readonly issuer?: string;\n private readonly isExpress?: boolean;\n private readonly expressPage?: string;\n private readonly isStoredPaymentMethod?: boolean;\n private readonly brand?: string;\n private readonly selectedValue?: string;\n private readonly validationErrorCode?: string;\n private readonly validationErrorMessage?: string;\n\n /**\n * Third party script URL's (e.g. Apple Pay)\n */\n public cdnUrl?: string;\n\n constructor(props: AnalyticsInfoEventProps) {\n super(props.component);\n\n this.type = props.type;\n\n if (props.target) this.target = props.target;\n if (props.issuer) this.issuer = props.issuer;\n if (props.isStoredPaymentMethod !== undefined) this.isStoredPaymentMethod = props.isStoredPaymentMethod;\n if (props.isExpress !== undefined) this.isExpress = props.isExpress;\n if (props.expressPage) this.expressPage = props.expressPage;\n if (props.brand) this.brand = props.brand;\n if (props.cdnUrl) this.cdnUrl = props.cdnUrl;\n if (props.selectedValue) this.selectedValue = props.selectedValue;\n if (props.validationErrorCode) this.validationErrorCode = props.validationErrorCode;\n if (props.validationErrorMessage) this.validationErrorMessage = props.validationErrorMessage;\n if (this.type === InfoEventType.rendered) {\n this.configData = this.createAnalyticsConfigData(props?.configData);\n }\n\n // Some of the more generic validation error codes required combination with target to retrieve a specific code\n if (this.type === InfoEventType.validationError) {\n this.validationErrorCode = mapErrorCodesForAnalytics(this.validationErrorCode, this.target);\n }\n }\n\n /**\n * Set of properties that must not be included when creating the configData for Analytics\n * @private\n */\n private get configDataExcludedFields() {\n const DROPIN_FIELDS = ['paymentMethodsConfiguration'];\n const FIELDS_INJECTED_BY_DROPIN = [\n 'elementRef',\n 'isDropin',\n 'oneClick',\n 'storedPaymentMethodId',\n 'paymentMethodId',\n 'isInstantPayment',\n 'type'\n ];\n const PII_FIELDS = ['data', 'holderName', 'shopperEmail', 'email', 'telephoneNumber', 'clickToPayConfiguration'];\n\n /**\n * TODO: Many unit tests are passing 'modules' as props, which leads to circular structure issue\n * The components must use the 'modules' from the core and not from the props\n */\n const UNIT_TEST_FIELDS = ['modules', 'i18n'];\n\n return [...DROPIN_FIELDS, ...FIELDS_INJECTED_BY_DROPIN, ...PII_FIELDS, ...UNIT_TEST_FIELDS];\n }\n\n /**\n * Creates a serializable analytics payload from the given config object.\n * Functions are replaced with 'function', and objects/arrays are stringified.\n */\n private createAnalyticsConfigData(config: Record<string, any>) {\n if (!config) return {};\n\n const MAX_STRING_LENGTH = 128;\n const result = {};\n\n try {\n for (const [key, value] of Object.entries(config)) {\n if (!this.configDataExcludedFields.includes(key)) {\n if (typeof value === 'function') {\n result[key] = 'function';\n } else if (Array.isArray(value)) {\n result[key] = value.join(', ').substring(0, MAX_STRING_LENGTH);\n } else if (typeof value === 'object' && value !== null) {\n result[key] = JSON.stringify(value).substring(0, MAX_STRING_LENGTH);\n } else {\n result[key] = value;\n }\n }\n }\n\n return result;\n } catch (error: unknown) {\n if (process.env.NODE_ENV === 'development') console.warn('AnalyticsInfoEvent: Error when creating configData\\n', error);\n return result;\n }\n }\n\n public getEventCategory(): AnalyticsEventCategory {\n return AnalyticsEventCategory.info;\n }\n}\n"],"names":["UiTarget","InfoEventType","AnalyticsInfoEvent","AbstractAnalyticsEvent","configDataExcludedFields","createAnalyticsConfigData","config","result","key","value","Object","entries","this","includes","Array","isArray","join","substring","JSON","stringify","error","getEventCategory","AnalyticsEventCategory","info","constructor","props","super","component","_define_property","type","configData","target","issuer","isExpress","expressPage","isStoredPaymentMethod","brand","selectedValue","validationErrorCode","validationErrorMessage","cdnUrl","undefined","mapErrorCodesForAnalytics"],"mappings":"iRAmBO,IAAAA,EAAKA,SAAAA,GAAAA,yYAAAA,CAWZ,CAXYA,CAWZ,CAAA,GAEOC,EAAKA,SAAAA,GAAAA,OACyBA,EAAA,QAAA,UAEgDA,EAAA,SAAA,WAE7BA,EAAA,SAAA,WAEAA,EAAA,gBAAA,kBAE1BA,EAAA,MAAA,QAEEA,EAAA,QAAA,UAEUA,EAAA,WAAA,aAEAA,EAAA,UAAA,YAE2CA,EAAA,MAAA,QAEdA,EAAA,SAAA,+gBAnB3DA,CAmCZ,CAnCYA,CAmCZ,CAAA,GAEO,MAAMC,UAA2BC,EAuDpC,4BAAYC,GAmBR,MAAO,CAlBgB,8BAEnB,aACA,WACA,WACA,wBACA,kBACA,mBACA,OAEgB,OAAQ,aAAc,eAAgB,QAAS,kBAAmB,0BAM5D,UAAW,OAGzC,CAMQC,yBAAAA,CAA0BC,GAC9B,IAAKA,EAAQ,MAAO,CAAA,EAEpB,MACMC,EAAS,CAAA,EAEf,IACI,IAAK,MAAOC,EAAKC,KAAUC,OAAOC,QAAQL,GACjCM,KAAKR,yBAAyBS,SAASL,KACnB,mBAAVC,EACPF,EAAOC,GAAO,WACPM,MAAMC,QAAQN,GACrBF,EAAOC,GAAOC,EAAMO,KAAK,MAAMC,UAAU,EAT/B,KAWVV,EAAOC,GADiB,iBAAVC,GAAgC,OAAVA,EACtBS,KAAKC,UAAUV,GAAOQ,UAAU,EAXpC,KAaIR,GAK1B,OAAOF,CACX,CAAE,MAAOa,GAEL,OAAOb,CACX,CACJ,CAEOc,gBAAAA,GACH,OAAOC,EAAuBC,IAClC,CArFA,WAAAC,CAAYC,GACRC,MAAMD,EAAME,WAvBhBC,EAAAhB,KAAiBiB,YAAjB,GAMAD,OAAiBE,kBAAjB,GACAF,EAAAhB,KAAiBmB,cAAjB,GACAH,EAAAhB,KAAiBoB,cAAjB,GACAJ,EAAAhB,KAAiBqB,iBAAjB,GACAL,OAAiBM,mBAAjB,GACAN,EAAAhB,KAAiBuB,6BAAjB,GACAP,OAAiBQ,aAAjB,GACAR,EAAAhB,KAAiByB,qBAAjB,GACAT,OAAiBU,2BAAjB,GACAV,EAAAhB,KAAiB2B,8BAAjB,GAKAX,EAAAhB,KAAO4B,cAAP,GAKI5B,KAAKiB,KAAOJ,EAAMI,KAEdJ,EAAMM,SAAQnB,KAAKmB,OAASN,EAAMM,QAClCN,EAAMO,SAAQpB,KAAKoB,OAASP,EAAMO,aACFS,IAAhChB,EAAMU,wBAAqCvB,KAAKuB,sBAAwBV,EAAMU,4BAC1DM,IAApBhB,EAAMQ,YAAyBrB,KAAKqB,UAAYR,EAAMQ,WACtDR,EAAMS,cAAatB,KAAKsB,YAAcT,EAAMS,aAC5CT,EAAMW,QAAOxB,KAAKwB,MAAQX,EAAMW,OAChCX,EAAMe,SAAQ5B,KAAK4B,OAASf,EAAMe,QAClCf,EAAMY,gBAAezB,KAAKyB,cAAgBZ,EAAMY,eAChDZ,EAAMa,sBAAqB1B,KAAK0B,oBAAsBb,EAAMa,qBAC5Db,EAAMc,yBAAwB3B,KAAK2B,uBAAyBd,EAAMc,wBACzD,aAAT3B,KAAKiB,OACLjB,KAAKkB,WAAalB,KAAKP,0BAA0BoB,GAAOK,aAI/C,oBAATlB,KAAKiB,OACLjB,KAAK0B,oBAAsBI,EAA0B9B,KAAK0B,oBAAqB1B,KAAKmB,QAE5F"}
@@ -1,2 +1,2 @@
1
- import{checkPaymentMethodsResponse as e,processPaymentMethods as t,processStoredPaymentMethods as n}from"./utils.js";function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class o{mapCreatedComponentType(e){return"card"===e?"scheme":e}has(e){return Boolean(this.paymentMethods.find(t=>t.type===this.mapCreatedComponentType(e)))}find(e){return this.paymentMethods.find(t=>t.type===this.mapCreatedComponentType(e))}findById(e){return this.paymentMethods.find(t=>t._id===e)}findStoredPaymentMethod(e){return this.storedPaymentMethods.find(t=>t.id===e)}constructor(o,s={}){d(this,"paymentMethods",[]),d(this,"storedPaymentMethods",[]),e(o),this.paymentMethods=o?t(o.paymentMethods,s):[],this.storedPaymentMethods=o?n(o.storedPaymentMethods,s):[]}}export{o as default};
1
+ import{checkPaymentMethodsResponse as e,processPaymentMethods as t,processStoredPaymentMethods as n}from"./utils.js";function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class o{mapCreatedComponentType(e){return"card"===e?"scheme":e}has(e){return Boolean(this.paymentMethods.find(t=>t.type===this.mapCreatedComponentType(e)))}find(e){return this.paymentMethods.find(t=>t.type===this.mapCreatedComponentType(e))}findById(e){return this.paymentMethods.find(t=>t._id===e)}findStoredPaymentMethod(e){return this.storedPaymentMethods.find(t=>t.id===e)}constructor(o,s={}){d(this,"paymentMethods",[]),d(this,"storedPaymentMethods",[]),e(o),this.paymentMethods=o?t(o.paymentMethods,s):[],this.storedPaymentMethods=o?n(o.storedPaymentMethods,s,o.paymentMethods||[]):[]}}export{o as default};
2
2
  //# sourceMappingURL=PaymentMethods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentMethods.js","sources":["../../../../../src/core/ProcessResponse/PaymentMethods/PaymentMethods.ts"],"sourcesContent":["import { RawPaymentMethod, PaymentMethodsResponse, RawStoredPaymentMethod } from '../../../types/global-types';\nimport { checkPaymentMethodsResponse, processPaymentMethods, processStoredPaymentMethods } from './utils';\n\nexport type PaymentMethod = RawPaymentMethod & {\n /**\n * Internal ID generated when parsing the payment method list\n */\n _id: string;\n};\n\nexport type StoredPaymentMethod = RawStoredPaymentMethod & {\n /**\n * A unique identifier of this stored payment method. Mapped from 'storedPaymentMethod.id'\n * @internal\n */\n storedPaymentMethodId?: string;\n /**\n * Internal flag\n * @internal\n */\n isStoredPaymentMethod?: boolean;\n};\n\nclass PaymentMethods {\n public paymentMethods: PaymentMethod[] = [];\n public storedPaymentMethods: StoredPaymentMethod[] = [];\n\n constructor(response: PaymentMethodsResponse, options = {}) {\n checkPaymentMethodsResponse(response);\n\n this.paymentMethods = response ? processPaymentMethods(response.paymentMethods, options) : [];\n this.storedPaymentMethods = response ? processStoredPaymentMethods(response.storedPaymentMethods, options) : [];\n }\n\n private mapCreatedComponentType(pmType: string): string {\n // Components created as 'card' need to be matched with paymentMethod response objects with type 'scheme'\n return pmType === 'card' ? 'scheme' : pmType;\n }\n\n has(paymentMethod: string): boolean {\n return Boolean(this.paymentMethods.find(pm => pm.type === this.mapCreatedComponentType(paymentMethod)));\n }\n\n find(paymentMethod: string): PaymentMethod {\n return this.paymentMethods.find(pm => pm.type === this.mapCreatedComponentType(paymentMethod));\n }\n\n findById(paymentMethodId: string): PaymentMethod {\n return this.paymentMethods.find(pm => pm._id === paymentMethodId);\n }\n\n findStoredPaymentMethod(storedPaymentMethodId: string): StoredPaymentMethod {\n return this.storedPaymentMethods.find(pm => pm.id === storedPaymentMethodId);\n }\n}\n\nexport default PaymentMethods;\n"],"names":["PaymentMethods","mapCreatedComponentType","pmType","has","paymentMethod","Boolean","this","paymentMethods","find","pm","type","findById","paymentMethodId","_id","findStoredPaymentMethod","storedPaymentMethodId","storedPaymentMethods","id","constructor","response","options","_define_property","checkPaymentMethodsResponse","processPaymentMethods","processStoredPaymentMethods"],"mappings":"6OAuBA,MAAMA,EAWMC,uBAAAA,CAAwBC,GAE5B,MAAkB,SAAXA,EAAoB,SAAWA,CAC1C,CAEAC,GAAAA,CAAIC,GACA,OAAOC,QAAQC,KAAKC,eAAeC,KAAKC,GAAMA,EAAGC,OAASJ,KAAKL,wBAAwBG,IAC3F,CAEAI,IAAAA,CAAKJ,GACD,OAAOE,KAAKC,eAAeC,KAAKC,GAAMA,EAAGC,OAASJ,KAAKL,wBAAwBG,GACnF,CAEAO,QAAAA,CAASC,GACL,OAAON,KAAKC,eAAeC,KAAKC,GAAMA,EAAGI,MAAQD,EACrD,CAEAE,uBAAAA,CAAwBC,GACpB,OAAOT,KAAKU,qBAAqBR,KAAKC,GAAMA,EAAGQ,KAAOF,EAC1D,CA1BA,WAAAG,CAAYC,EAAkCC,EAAU,IAHxDC,EAAAf,KAAOC,iBAAkC,IACzCc,EAAAf,KAAOU,uBAA8C,IAGjDM,EAA4BH,GAE5Bb,KAAKC,eAAiBY,EAAWI,EAAsBJ,EAASZ,eAAgBa,GAAW,GAC3Fd,KAAKU,qBAAuBG,EAAWK,EAA4BL,EAASH,qBAAsBI,GAAW,EACjH"}
1
+ {"version":3,"file":"PaymentMethods.js","sources":["../../../../../src/core/ProcessResponse/PaymentMethods/PaymentMethods.ts"],"sourcesContent":["import { RawPaymentMethod, PaymentMethodsResponse, RawStoredPaymentMethod } from '../../../types/global-types';\nimport { checkPaymentMethodsResponse, processPaymentMethods, processStoredPaymentMethods } from './utils';\n\nexport type PaymentMethod = RawPaymentMethod & {\n /**\n * Internal ID generated when parsing the payment method list\n */\n _id: string;\n};\n\nexport type StoredPaymentMethod = RawStoredPaymentMethod & {\n /**\n * A unique identifier of this stored payment method. Mapped from 'storedPaymentMethod.id'\n * @internal\n */\n storedPaymentMethodId?: string;\n /**\n * Internal flag\n * @internal\n */\n isStoredPaymentMethod?: boolean;\n};\n\nclass PaymentMethods {\n public paymentMethods: PaymentMethod[] = [];\n public storedPaymentMethods: StoredPaymentMethod[] = [];\n\n constructor(response: PaymentMethodsResponse, options = {}) {\n checkPaymentMethodsResponse(response);\n\n this.paymentMethods = response ? processPaymentMethods(response.paymentMethods, options) : [];\n this.storedPaymentMethods = response\n ? processStoredPaymentMethods(response.storedPaymentMethods, options, response.paymentMethods || [])\n : [];\n }\n\n private mapCreatedComponentType(pmType: string): string {\n // Components created as 'card' need to be matched with paymentMethod response objects with type 'scheme'\n return pmType === 'card' ? 'scheme' : pmType;\n }\n\n has(paymentMethod: string): boolean {\n return Boolean(this.paymentMethods.find(pm => pm.type === this.mapCreatedComponentType(paymentMethod)));\n }\n\n find(paymentMethod: string): PaymentMethod {\n return this.paymentMethods.find(pm => pm.type === this.mapCreatedComponentType(paymentMethod));\n }\n\n findById(paymentMethodId: string): PaymentMethod {\n return this.paymentMethods.find(pm => pm._id === paymentMethodId);\n }\n\n findStoredPaymentMethod(storedPaymentMethodId: string): StoredPaymentMethod {\n return this.storedPaymentMethods.find(pm => pm.id === storedPaymentMethodId);\n }\n}\n\nexport default PaymentMethods;\n"],"names":["PaymentMethods","mapCreatedComponentType","pmType","has","paymentMethod","Boolean","this","paymentMethods","find","pm","type","findById","paymentMethodId","_id","findStoredPaymentMethod","storedPaymentMethodId","storedPaymentMethods","id","constructor","response","options","_define_property","checkPaymentMethodsResponse","processPaymentMethods","processStoredPaymentMethods"],"mappings":"6OAuBA,MAAMA,EAaMC,uBAAAA,CAAwBC,GAE5B,MAAkB,SAAXA,EAAoB,SAAWA,CAC1C,CAEAC,GAAAA,CAAIC,GACA,OAAOC,QAAQC,KAAKC,eAAeC,KAAKC,GAAMA,EAAGC,OAASJ,KAAKL,wBAAwBG,IAC3F,CAEAI,IAAAA,CAAKJ,GACD,OAAOE,KAAKC,eAAeC,KAAKC,GAAMA,EAAGC,OAASJ,KAAKL,wBAAwBG,GACnF,CAEAO,QAAAA,CAASC,GACL,OAAON,KAAKC,eAAeC,KAAKC,GAAMA,EAAGI,MAAQD,EACrD,CAEAE,uBAAAA,CAAwBC,GACpB,OAAOT,KAAKU,qBAAqBR,KAAKC,GAAMA,EAAGQ,KAAOF,EAC1D,CA5BA,WAAAG,CAAYC,EAAkCC,EAAU,IAHxDC,EAAAf,KAAOC,iBAAkC,IACzCc,EAAAf,KAAOU,uBAA8C,IAGjDM,EAA4BH,GAE5Bb,KAAKC,eAAiBY,EAAWI,EAAsBJ,EAASZ,eAAgBa,GAAW,GAC3Fd,KAAKU,qBAAuBG,EACtBK,EAA4BL,EAASH,qBAAsBI,EAASD,EAASZ,gBAAkB,IAC/F,EACV"}