@adyen/adyen-web 6.5.0 → 6.6.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 (248) hide show
  1. package/dist/cjs/adyen.css +2 -2
  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 +68 -30
  6. package/dist/es/adyen.css +2 -2
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/ANCV.js.map +1 -1
  9. package/dist/es/components/Ach/components/AchInput/defaultProps.js +1 -1
  10. package/dist/es/components/Ach/components/AchInput/defaultProps.js.map +1 -1
  11. package/dist/es/components/ApplePay/components/ApplePayButton.js.map +1 -1
  12. package/dist/es/components/BacsDD/BacsDD.js.map +1 -1
  13. package/dist/es/components/Boleto/Boleto.js.map +1 -1
  14. package/dist/es/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js +1 -1
  15. package/dist/es/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js.map +1 -1
  16. package/dist/es/components/Card/Card.js.map +1 -1
  17. package/dist/es/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  18. package/dist/es/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  19. package/dist/es/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  20. package/dist/es/components/Card/components/CardInput/types.js +1 -1
  21. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  22. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  23. package/dist/es/components/CashAppPay/services/types.js +1 -1
  24. package/dist/es/components/CashAppPay/services/types.js.map +1 -1
  25. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  26. package/dist/es/components/Donation/components/CampaignContent.js +1 -1
  27. package/dist/es/components/Donation/components/CampaignContent.js.map +1 -1
  28. package/dist/es/components/Donation/components/CampaignInfo.js +2 -0
  29. package/dist/es/components/Donation/components/CampaignInfo.js.map +1 -0
  30. package/dist/es/components/Donation/components/DonationComponent.js +1 -1
  31. package/dist/es/components/Donation/components/DonationComponent.js.map +1 -1
  32. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  33. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  34. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  35. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  36. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  37. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  38. package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
  39. package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
  40. package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
  41. package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  42. package/dist/es/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
  43. package/dist/es/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  44. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  45. package/dist/es/components/OnlineBankingCZ/index.js +1 -1
  46. package/dist/es/components/OnlineBankingCZ/index.js.map +1 -1
  47. package/dist/es/components/OnlineBankingSK/index.js +1 -1
  48. package/dist/es/components/OnlineBankingSK/index.js.map +1 -1
  49. package/dist/es/components/Oxxo/Oxxo.js.map +1 -1
  50. package/dist/es/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js +1 -1
  51. package/dist/es/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js.map +1 -1
  52. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  53. package/dist/es/components/Redirect/Redirect.js +1 -1
  54. package/dist/es/components/Redirect/Redirect.js.map +1 -1
  55. package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
  56. package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
  57. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  58. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  59. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  60. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  61. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  62. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  63. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  64. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  65. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
  66. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  67. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  68. package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
  69. package/dist/es/components/Twint/Twint.js.map +1 -1
  70. package/dist/es/components/UPI/UPI.js.map +1 -1
  71. package/dist/es/components/internal/Address/components/CountryField.js +1 -1
  72. package/dist/es/components/internal/Address/components/CountryField.js.map +1 -1
  73. package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
  74. package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
  75. package/dist/es/components/internal/Address/components/ReadOnlyAddress.js.map +1 -1
  76. package/dist/es/components/internal/Address/components/StateField.js +1 -1
  77. package/dist/es/components/internal/Address/components/StateField.js.map +1 -1
  78. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  79. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  80. package/dist/es/components/internal/Button/Button.js.map +1 -1
  81. package/dist/es/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
  82. package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
  83. package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  84. package/dist/es/components/internal/ClickToPay/services/sdks/SrciError.js.map +1 -1
  85. package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
  86. package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
  87. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  88. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  89. package/dist/es/components/internal/IFrame/Iframe.js.map +1 -1
  90. package/dist/es/components/internal/IssuerList/IssuerList.js +1 -1
  91. package/dist/es/components/internal/IssuerList/IssuerList.js.map +1 -1
  92. package/dist/es/components/internal/PersonalDetails/ReadOnlyPersonalDetails.js.map +1 -1
  93. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  94. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  95. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  96. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js.map +1 -1
  97. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  98. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  99. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  100. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  101. package/dist/es/components/internal/SecuredFields/lib/utilities/logger.js.map +1 -1
  102. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  103. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  104. package/dist/es/components/tx-variants.js +1 -1
  105. package/dist/es/components/tx-variants.js.map +1 -1
  106. package/dist/es/core/Analytics/Analytics.js +1 -1
  107. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  108. package/dist/es/core/Analytics/EventsQueue.js.map +1 -1
  109. package/dist/es/core/Analytics/analyticsPreProcessor.js +1 -1
  110. package/dist/es/core/Analytics/analyticsPreProcessor.js.map +1 -1
  111. package/dist/es/core/Analytics/constants.js +1 -1
  112. package/dist/es/core/Analytics/constants.js.map +1 -1
  113. package/dist/es/core/CheckoutSession/CheckoutSession.js.map +1 -1
  114. package/dist/es/core/Errors/AdyenCheckoutError.js.map +1 -1
  115. package/dist/es/core/Errors/SRPanel.js.map +1 -1
  116. package/dist/es/core/Errors/constants.js +1 -1
  117. package/dist/es/core/Errors/constants.js.map +1 -1
  118. package/dist/es/core/Errors/utils.js +1 -1
  119. package/dist/es/core/RiskModule/RiskModule.js.map +1 -1
  120. package/dist/es/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  121. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  122. package/dist/es/core/core.js +1 -1
  123. package/dist/es/index.d.ts +68 -30
  124. package/dist/es-legacy/adyen.css +2 -2
  125. package/dist/es-legacy/adyen.css.map +1 -1
  126. package/dist/es-legacy/components/ANCV/ANCV.js.map +1 -1
  127. package/dist/es-legacy/components/Ach/components/AchInput/defaultProps.js +1 -1
  128. package/dist/es-legacy/components/Ach/components/AchInput/defaultProps.js.map +1 -1
  129. package/dist/es-legacy/components/ApplePay/components/ApplePayButton.js.map +1 -1
  130. package/dist/es-legacy/components/BacsDD/BacsDD.js.map +1 -1
  131. package/dist/es-legacy/components/Boleto/Boleto.js.map +1 -1
  132. package/dist/es-legacy/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js +1 -1
  133. package/dist/es-legacy/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js.map +1 -1
  134. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  135. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js +1 -1
  136. package/dist/es-legacy/components/Card/components/CardInput/components/BrandIcon.js.map +1 -1
  137. package/dist/es-legacy/components/Card/components/CardInput/components/CVCHint.js.map +1 -1
  138. package/dist/es-legacy/components/Card/components/CardInput/types.js +1 -1
  139. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  140. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  141. package/dist/es-legacy/components/CashAppPay/services/types.js +1 -1
  142. package/dist/es-legacy/components/CashAppPay/services/types.js.map +1 -1
  143. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  144. package/dist/es-legacy/components/Donation/components/CampaignContent.js +1 -1
  145. package/dist/es-legacy/components/Donation/components/CampaignContent.js.map +1 -1
  146. package/dist/es-legacy/components/Donation/components/CampaignInfo.js +2 -0
  147. package/dist/es-legacy/components/Donation/components/CampaignInfo.js.map +1 -0
  148. package/dist/es-legacy/components/Donation/components/DonationComponent.js +1 -1
  149. package/dist/es-legacy/components/Donation/components/DonationComponent.js.map +1 -1
  150. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  151. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  152. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  153. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  154. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  155. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  156. package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
  157. package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
  158. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
  159. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  160. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js +1 -1
  161. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  162. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  163. package/dist/es-legacy/components/OnlineBankingCZ/index.js +1 -1
  164. package/dist/es-legacy/components/OnlineBankingCZ/index.js.map +1 -1
  165. package/dist/es-legacy/components/OnlineBankingSK/index.js +1 -1
  166. package/dist/es-legacy/components/OnlineBankingSK/index.js.map +1 -1
  167. package/dist/es-legacy/components/Oxxo/Oxxo.js.map +1 -1
  168. package/dist/es-legacy/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js +1 -1
  169. package/dist/es-legacy/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js.map +1 -1
  170. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  171. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  172. package/dist/es-legacy/components/Redirect/Redirect.js.map +1 -1
  173. package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
  174. package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
  175. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  176. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  177. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  178. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  179. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  180. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  181. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  182. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  183. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
  184. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  185. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  186. package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
  187. package/dist/es-legacy/components/Twint/Twint.js.map +1 -1
  188. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  189. package/dist/es-legacy/components/internal/Address/components/CountryField.js +1 -1
  190. package/dist/es-legacy/components/internal/Address/components/CountryField.js.map +1 -1
  191. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
  192. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
  193. package/dist/es-legacy/components/internal/Address/components/ReadOnlyAddress.js.map +1 -1
  194. package/dist/es-legacy/components/internal/Address/components/StateField.js +1 -1
  195. package/dist/es-legacy/components/internal/Address/components/StateField.js.map +1 -1
  196. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  197. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  198. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  199. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  200. package/dist/es-legacy/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
  201. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
  202. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  203. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrciError.js.map +1 -1
  204. package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
  205. package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
  206. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  207. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  208. package/dist/es-legacy/components/internal/IFrame/Iframe.js.map +1 -1
  209. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  210. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  211. package/dist/es-legacy/components/internal/PersonalDetails/ReadOnlyPersonalDetails.js.map +1 -1
  212. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  213. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  214. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  215. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleIOSTouchEvents.js.map +1 -1
  216. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  217. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  218. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  219. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  220. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/logger.js.map +1 -1
  221. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  222. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  223. package/dist/es-legacy/components/tx-variants.js +1 -1
  224. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  225. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  226. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  227. package/dist/es-legacy/core/Analytics/EventsQueue.js.map +1 -1
  228. package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js +1 -1
  229. package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js.map +1 -1
  230. package/dist/es-legacy/core/Analytics/constants.js +1 -1
  231. package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
  232. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  233. package/dist/es-legacy/core/CheckoutSession/CheckoutSession.js.map +1 -1
  234. package/dist/es-legacy/core/Errors/AdyenCheckoutError.js.map +1 -1
  235. package/dist/es-legacy/core/Errors/SRPanel.js.map +1 -1
  236. package/dist/es-legacy/core/Errors/constants.js +1 -1
  237. package/dist/es-legacy/core/Errors/constants.js.map +1 -1
  238. package/dist/es-legacy/core/Errors/utils.js +1 -1
  239. package/dist/es-legacy/core/RiskModule/RiskModule.js.map +1 -1
  240. package/dist/es-legacy/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  241. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  242. package/dist/es-legacy/core/core.js +1 -1
  243. package/package.json +15 -12
  244. package/styles/adyen.css +2 -2
  245. package/dist/es/components/Donation/components/CampaignContainer.js +0 -2
  246. package/dist/es/components/Donation/components/CampaignContainer.js.map +0 -1
  247. package/dist/es-legacy/components/Donation/components/CampaignContainer.js +0 -2
  248. package/dist/es-legacy/components/Donation/components/CampaignContainer.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import n from"./CampaignContainer.js";import a from"../../internal/Button/Button.js";import s from"../../internal/Img/Img.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import c from"../../internal/DisclaimerMessage/DisclaimerMessage.js";import u from"../../../core/Context/useImage.js";import i from"./FixedAmounts.js";import m from"./Roundup.js";import{getRoundupAmount as d,getRoundupAmountLabel as l,getAmountLabel as g}from"./utils.js";function _(_){const{donation:p,commercialTxAmount:y,onCancel:h,onDonate:k,showCancelButton:v=!0,termsAndConditionsUrl:f}=_,{i18n:C}=r(),x=u(),{currency:j,type:A}=p,N="roundup"===A,[B,D]=t("ready"),[w,F]=t(N),[S,I]=t({currency:j,value:N?d(p.maxRoundupAmount,y):null});this.setStatus=e=>{D(e)};const R=()=>{D("loading"),k({data:{amount:S}})};return o((()=>{_.onChange({data:{amount:S},isValid:w})}),[S,w]),"error"===B?e("div",{className:"adyen-checkout__adyen-giving"},e(s,{className:"adyen-checkout__status__icon adyen-checkout__status__icon--error",src:x({imageFolder:"components/"})("error"),alt:C.get("error.message.unknown")}),e("div",{className:"adyen-checkout__status__text"},C.get("error.message.unknown"))):"success"===B?e("div",{className:"adyen-checkout__adyen-giving"},e(s,{className:"adyen-checkout__status__icon adyen-checkout__status__icon--success",src:x({imageFolder:"components/"})("heart"),alt:C.get("thanksForYourSupport")}),e("div",{className:"adyen-checkout__status__text"},C.get("thanksForYourSupport"))):e("div",{className:"adyen-checkout__adyen-giving"},e(n,_),e("div",{className:"adyen-checkout__adyen-giving-actions"},f&&e(c,{message:C.get("donationTermsCondition"),urls:[f]}),N?e(m,{donationAmount:l(C,{maxRoundupAmount:p.maxRoundupAmount,commercialTxAmount:y,currency:j}),originalPaymentAmount:g(C,{value:y,currency:j}),status:B,onDonateButtonClicked:R}):e(i,{selectedAmount:S.value,values:p.values,currency:j,status:B,onAmountSelected:({target:e})=>{const t=parseInt(e.value,10);F(!0),I((e=>({...e,value:t})))},onDonateButtonClicked:R}),v&&e(a,{classNameModifiers:["decline"],variant:"ghost",onClick:()=>{D("ready"),h({data:{amount:S},isValid:w})},disabled:"loading"===B,label:`${C.get("notNowButton")} ›`})))}_.defaultProps={onCancel:()=>{},onChange:()=>{},onDonate:()=>{},donation:{},showCancelButton:!0};export{_ as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import n from"./CampaignContent.js";import a from"../../internal/Button/Button.js";import s from"../../internal/Img/Img.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import c from"../../internal/DisclaimerMessage/DisclaimerMessage.js";import u from"../../../core/Context/useImage.js";import i from"./FixedAmounts.js";import m from"./Roundup.js";import{getRoundupAmount as d,getRoundupAmountLabel as l,getAmountLabel as g}from"./utils.js";function _(_){const{donation:p,commercialTxAmount:y,onCancel:h,onDonate:k,showCancelButton:v=!0,termsAndConditionsUrl:f}=_,{i18n:C}=r(),x=u(),{currency:j,type:A}=p,N="roundup"===A,[B,D]=t("ready"),[w,F]=t(N),[S,I]=t({currency:j,value:N?d(p.maxRoundupAmount,y):null});this.setStatus=e=>{D(e)};const R=()=>{D("loading"),k({data:{amount:S}})};return o((()=>{_.onChange({data:{amount:S},isValid:w})}),[S,w]),"error"===B?e("div",{className:"adyen-checkout__adyen-giving"},e(s,{className:"adyen-checkout__status__icon adyen-checkout__status__icon--error",src:x({imageFolder:"components/"})("error"),alt:C.get("error.message.unknown")}),e("div",{className:"adyen-checkout__status__text"},C.get("error.message.unknown"))):"success"===B?e("div",{className:"adyen-checkout__adyen-giving"},e(s,{className:"adyen-checkout__status__icon adyen-checkout__status__icon--success",src:x({imageFolder:"components/"})("heart"),alt:C.get("thanksForYourSupport")}),e("div",{className:"adyen-checkout__status__text"},C.get("thanksForYourSupport"))):e("div",{className:"adyen-checkout__adyen-giving"},e(n,_),e("div",{className:"adyen-checkout__adyen-giving-actions"},f&&e(c,{message:C.get("donationTermsCondition"),urls:[f]}),N?e(m,{donationAmount:l(C,{maxRoundupAmount:p.maxRoundupAmount,commercialTxAmount:y,currency:j}),originalPaymentAmount:g(C,{value:y,currency:j}),status:B,onDonateButtonClicked:R}):e(i,{selectedAmount:S.value,values:p.values,currency:j,status:B,onAmountSelected:({target:e})=>{const t=parseInt(e.value,10);F(!0),I((e=>({...e,value:t})))},onDonateButtonClicked:R}),v&&e(a,{classNameModifiers:["decline"],variant:"ghost",onClick:()=>{D("ready"),h({data:{amount:S},isValid:w})},disabled:"loading"===B,label:`${C.get("notNowButton")} ›`})))}_.defaultProps={onCancel:()=>{},onChange:()=>{},onDonate:()=>{},donation:{},showCancelButton:!0};export{_ as default};
2
2
  //# sourceMappingURL=DonationComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DonationComponent.js","sources":["../../../../../src/components/Donation/components/DonationComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport CampaignContainer from './CampaignContainer';\nimport Button from '../../internal/Button';\nimport Img from '../../internal/Img';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport '../Donation.scss';\nimport DisclaimerMessage from '../../internal/DisclaimerMessage';\nimport { DonationAmount, DonationComponentProps, Status } from './types';\nimport useImage from '../../../core/Context/useImage';\nimport FixedAmounts from './FixedAmounts';\nimport Roundup from './Roundup';\nimport { getAmountLabel, getRoundupAmount, getRoundupAmountLabel } from './utils';\n\nexport default function DonationComponent(props: DonationComponentProps) {\n const { donation, commercialTxAmount, onCancel, onDonate, showCancelButton = true, termsAndConditionsUrl } = props;\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { currency, type } = donation;\n const isRoundupDonation = type === 'roundup';\n const [status, setStatus] = useState<Status>('ready');\n const [isValid, setIsValid] = useState<boolean>(isRoundupDonation);\n const [amount, setAmount] = useState<DonationAmount>({\n currency,\n value: isRoundupDonation ? getRoundupAmount(donation.maxRoundupAmount, commercialTxAmount) : null\n });\n\n this.setStatus = (status: Status) => {\n setStatus(status);\n };\n\n const handleAmountSelected = ({ target }) => {\n const value = parseInt(target.value, 10);\n setIsValid(true);\n setAmount((amount: DonationAmount) => ({ ...amount, value }));\n };\n\n const handleDonate = () => {\n setStatus('loading');\n onDonate({ data: { amount } });\n };\n\n const handleDecline = () => {\n setStatus('ready');\n onCancel({ data: { amount }, isValid });\n };\n\n useEffect(() => {\n props.onChange({ data: { amount }, isValid });\n }, [amount, isValid]);\n\n if (status === 'error') {\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({ imageFolder: 'components/' })('error')}\n alt={i18n.get('error.message.unknown')}\n />\n <div className=\"adyen-checkout__status__text\">{i18n.get('error.message.unknown')}</div>\n </div>\n );\n }\n\n if (status === 'success') {\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--success\"\n src={getImage({ imageFolder: 'components/' })('heart')}\n alt={i18n.get('thanksForYourSupport')}\n />\n\n <div className=\"adyen-checkout__status__text\">{i18n.get('thanksForYourSupport')}</div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <CampaignContainer {...props} />\n\n <div className=\"adyen-checkout__adyen-giving-actions\">\n {termsAndConditionsUrl && <DisclaimerMessage message={i18n.get('donationTermsCondition')} urls={[termsAndConditionsUrl]} />}\n {isRoundupDonation ? (\n <Roundup\n donationAmount={getRoundupAmountLabel(i18n, { maxRoundupAmount: donation.maxRoundupAmount, commercialTxAmount, currency })}\n originalPaymentAmount={getAmountLabel(i18n, { value: commercialTxAmount, currency })}\n status={status}\n onDonateButtonClicked={handleDonate}\n ></Roundup>\n ) : (\n <FixedAmounts\n selectedAmount={amount.value}\n values={donation.values}\n currency={currency}\n status={status}\n onAmountSelected={handleAmountSelected}\n onDonateButtonClicked={handleDonate}\n ></FixedAmounts>\n )}\n {showCancelButton && (\n <Button\n classNameModifiers={['decline']}\n variant=\"ghost\"\n onClick={handleDecline}\n disabled={status === 'loading'}\n label={`${i18n.get('notNowButton')} ›`}\n />\n )}\n </div>\n </div>\n );\n}\n\nDonationComponent.defaultProps = {\n onCancel: () => {},\n onChange: () => {},\n onDonate: () => {},\n donation: {},\n showCancelButton: true\n};\n"],"names":["DonationComponent","props","donation","commercialTxAmount","onCancel","onDonate","showCancelButton","termsAndConditionsUrl","i18n","useCoreContext","getImage","useImage","currency","type","isRoundupDonation","status","setStatus","useState","isValid","setIsValid","amount","setAmount","value","getRoundupAmount","maxRoundupAmount","this","handleDonate","data","useEffect","onChange","h","div","className","Img","src","imageFolder","alt","get","CampaignContainer","DisclaimerMessage","message","urls","Roundup","donationAmount","getRoundupAmountLabel","originalPaymentAmount","getAmountLabel","onDonateButtonClicked","FixedAmounts","selectedAmount","values","onAmountSelected","target","parseInt","Button","classNameModifiers","variant","onClick","disabled","label","defaultProps"],"mappings":"onBAce,SAASA,EAAkBC,GACtC,MAAMC,SAAEA,EAAQC,mBAAEA,EAAkBC,SAAEA,EAAQC,SAAEA,EAAQC,iBAAEA,GAAmB,EAAIC,sBAAEA,GAA0BN,GACvGO,KAAEA,GAASC,IACXC,EAAWC,KACXC,SAAEA,EAAQC,KAAEA,GAASX,EACrBY,EAA6B,YAATD,GACnBE,EAAQC,GAAaC,EAAiB,UACtCC,EAASC,GAAcF,EAAkBH,IACzCM,EAAQC,GAAaJ,EAAyB,CACjDL,WACAU,MAAOR,EAAoBS,EAAiBrB,EAASsB,iBAAkBrB,GAAsB,OAGjGsB,KAAKT,UAAaD,IACdC,EAAUD,EAAAA,EAGd,MAMMW,EAAe,KACjBV,EAAU,WACVX,EAAS,CAAEsB,KAAM,CAAEP,WAAS,EAYhC,OAJAQ,GAAU,KACN3B,EAAM4B,SAAS,CAAEF,KAAM,CAAEP,UAAUF,WAAQ,GAC5C,CAACE,EAAQF,IAEG,UAAXH,EAEIe,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,EAAAA,CACGD,UAAU,mEACVE,IAAKxB,EAAS,CAAEyB,YAAa,eAAxBzB,CAAyC,SAC9C0B,IAAK5B,EAAK6B,IAAI,2BAElBP,EAACC,MAAAA,CAAIC,UAAU,gCAAgCxB,EAAK6B,IAAI,2BAKrD,YAAXtB,EAEIe,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,EAAAA,CACGD,UAAU,qEACVE,IAAKxB,EAAS,CAAEyB,YAAa,eAAxBzB,CAAyC,SAC9C0B,IAAK5B,EAAK6B,IAAI,0BAGlBP,EAACC,MAAAA,CAAIC,UAAU,gCAAgCxB,EAAK6B,IAAI,0BAMhEP,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACQ,EAAsBrC,GAEvB6B,EAACC,MAAAA,CAAIC,UAAU,wCACVzB,GAAyBuB,EAACS,EAAAA,CAAkBC,QAAShC,EAAK6B,IAAI,0BAA2BI,KAAM,CAAClC,KAChGO,EACGgB,EAACY,EAAAA,CACGC,eAAgBC,EAAsBpC,EAAM,CAAEgB,iBAAkBtB,EAASsB,iBAAkBrB,qBAAoBS,aAC/GiC,sBAAuBC,EAAetC,EAAM,CAAEc,MAAOnB,EAAoBS,aACzEG,OAAQA,EACRgC,sBAAuBrB,IAG3BI,EAACkB,EAAAA,CACGC,eAAgB7B,EAAOE,MACvB4B,OAAQhD,EAASgD,OACjBtC,SAAUA,EACVG,OAAQA,EACRoC,iBAlES,EAAGC,aAC5B,MAAM9B,EAAQ+B,SAASD,EAAO9B,MAAO,IACrCH,GAAW,GACXE,GAAWD,IAA4B,IAAKA,EAAQE,WAAM,EAgE1CyB,sBAAuBrB,IAG9BpB,GACGwB,EAACwB,EAAAA,CACGC,mBAAoB,CAAC,WACrBC,QAAQ,QACRC,QA/DE,KAClBzC,EAAU,SACVZ,EAAS,CAAEuB,KAAM,CAAEP,UAAUF,WAAQ,EA8DrBwC,SAAqB,YAAX3C,EACV4C,MAAO,GAAGnD,EAAK6B,IAAI,uBAM3C,CAEArC,EAAkB4D,aAAe,CAC7BxD,SAAU,OACVyB,SAAU,OACVxB,SAAU,OACVH,SAAU,CAAC,EACXI,kBAAkB"}
1
+ {"version":3,"file":"DonationComponent.js","sources":["../../../../../src/components/Donation/components/DonationComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport CampaignContent from './CampaignContent';\nimport Button from '../../internal/Button';\nimport Img from '../../internal/Img';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport '../Donation.scss';\nimport DisclaimerMessage from '../../internal/DisclaimerMessage';\nimport { DonationAmount, DonationComponentProps, Status } from './types';\nimport useImage from '../../../core/Context/useImage';\nimport FixedAmounts from './FixedAmounts';\nimport Roundup from './Roundup';\nimport { getAmountLabel, getRoundupAmount, getRoundupAmountLabel } from './utils';\n\nexport default function DonationComponent(props: DonationComponentProps) {\n const { donation, commercialTxAmount, onCancel, onDonate, showCancelButton = true, termsAndConditionsUrl } = props;\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const { currency, type } = donation;\n const isRoundupDonation = type === 'roundup';\n const [status, setStatus] = useState<Status>('ready');\n const [isValid, setIsValid] = useState<boolean>(isRoundupDonation);\n const [amount, setAmount] = useState<DonationAmount>({\n currency,\n value: isRoundupDonation ? getRoundupAmount(donation.maxRoundupAmount, commercialTxAmount) : null\n });\n\n this.setStatus = (status: Status) => {\n setStatus(status);\n };\n\n const handleAmountSelected = ({ target }) => {\n const value = parseInt(target.value, 10);\n setIsValid(true);\n setAmount((amount: DonationAmount) => ({ ...amount, value }));\n };\n\n const handleDonate = () => {\n setStatus('loading');\n onDonate({ data: { amount } });\n };\n\n const handleDecline = () => {\n setStatus('ready');\n onCancel({ data: { amount }, isValid });\n };\n\n useEffect(() => {\n props.onChange({ data: { amount }, isValid });\n }, [amount, isValid]);\n\n if (status === 'error') {\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({ imageFolder: 'components/' })('error')}\n alt={i18n.get('error.message.unknown')}\n />\n <div className=\"adyen-checkout__status__text\">{i18n.get('error.message.unknown')}</div>\n </div>\n );\n }\n\n if (status === 'success') {\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--success\"\n src={getImage({ imageFolder: 'components/' })('heart')}\n alt={i18n.get('thanksForYourSupport')}\n />\n\n <div className=\"adyen-checkout__status__text\">{i18n.get('thanksForYourSupport')}</div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__adyen-giving\">\n <CampaignContent {...props} />\n\n <div className=\"adyen-checkout__adyen-giving-actions\">\n {termsAndConditionsUrl && <DisclaimerMessage message={i18n.get('donationTermsCondition')} urls={[termsAndConditionsUrl]} />}\n {isRoundupDonation ? (\n <Roundup\n donationAmount={getRoundupAmountLabel(i18n, { maxRoundupAmount: donation.maxRoundupAmount, commercialTxAmount, currency })}\n originalPaymentAmount={getAmountLabel(i18n, { value: commercialTxAmount, currency })}\n status={status}\n onDonateButtonClicked={handleDonate}\n ></Roundup>\n ) : (\n <FixedAmounts\n selectedAmount={amount.value}\n values={donation.values}\n currency={currency}\n status={status}\n onAmountSelected={handleAmountSelected}\n onDonateButtonClicked={handleDonate}\n ></FixedAmounts>\n )}\n {showCancelButton && (\n <Button\n classNameModifiers={['decline']}\n variant=\"ghost\"\n onClick={handleDecline}\n disabled={status === 'loading'}\n label={`${i18n.get('notNowButton')} ›`}\n />\n )}\n </div>\n </div>\n );\n}\n\nDonationComponent.defaultProps = {\n onCancel: () => {},\n onChange: () => {},\n onDonate: () => {},\n donation: {},\n showCancelButton: true\n};\n"],"names":["DonationComponent","props","donation","commercialTxAmount","onCancel","onDonate","showCancelButton","termsAndConditionsUrl","i18n","useCoreContext","getImage","useImage","currency","type","isRoundupDonation","status","setStatus","useState","isValid","setIsValid","amount","setAmount","value","getRoundupAmount","maxRoundupAmount","this","handleDonate","data","useEffect","onChange","h","div","className","Img","src","imageFolder","alt","get","CampaignContent","DisclaimerMessage","message","urls","Roundup","donationAmount","getRoundupAmountLabel","originalPaymentAmount","getAmountLabel","onDonateButtonClicked","FixedAmounts","selectedAmount","values","onAmountSelected","target","parseInt","Button","classNameModifiers","variant","onClick","disabled","label","defaultProps"],"mappings":"knBAce,SAASA,EAAkBC,GACtC,MAAMC,SAAEA,EAAQC,mBAAEA,EAAkBC,SAAEA,EAAQC,SAAEA,EAAQC,iBAAEA,GAAmB,EAAIC,sBAAEA,GAA0BN,GACvGO,KAAEA,GAASC,IACXC,EAAWC,KACXC,SAAEA,EAAQC,KAAEA,GAASX,EACrBY,EAA6B,YAATD,GACnBE,EAAQC,GAAaC,EAAiB,UACtCC,EAASC,GAAcF,EAAkBH,IACzCM,EAAQC,GAAaJ,EAAyB,CACjDL,WACAU,MAAOR,EAAoBS,EAAiBrB,EAASsB,iBAAkBrB,GAAsB,OAGjGsB,KAAKT,UAAaD,IACdC,EAAUD,EAAAA,EAGd,MAMMW,EAAe,KACjBV,EAAU,WACVX,EAAS,CAAEsB,KAAM,CAAEP,WAAS,EAYhC,OAJAQ,GAAU,KACN3B,EAAM4B,SAAS,CAAEF,KAAM,CAAEP,UAAUF,WAAQ,GAC5C,CAACE,EAAQF,IAEG,UAAXH,EAEIe,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,EAAAA,CACGD,UAAU,mEACVE,IAAKxB,EAAS,CAAEyB,YAAa,eAAxBzB,CAAyC,SAC9C0B,IAAK5B,EAAK6B,IAAI,2BAElBP,EAACC,MAAAA,CAAIC,UAAU,gCAAgCxB,EAAK6B,IAAI,2BAKrD,YAAXtB,EAEIe,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,EAAAA,CACGD,UAAU,qEACVE,IAAKxB,EAAS,CAAEyB,YAAa,eAAxBzB,CAAyC,SAC9C0B,IAAK5B,EAAK6B,IAAI,0BAGlBP,EAACC,MAAAA,CAAIC,UAAU,gCAAgCxB,EAAK6B,IAAI,0BAMhEP,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACQ,EAAoBrC,GAErB6B,EAACC,MAAAA,CAAIC,UAAU,wCACVzB,GAAyBuB,EAACS,EAAAA,CAAkBC,QAAShC,EAAK6B,IAAI,0BAA2BI,KAAM,CAAClC,KAChGO,EACGgB,EAACY,EAAAA,CACGC,eAAgBC,EAAsBpC,EAAM,CAAEgB,iBAAkBtB,EAASsB,iBAAkBrB,qBAAoBS,aAC/GiC,sBAAuBC,EAAetC,EAAM,CAAEc,MAAOnB,EAAoBS,aACzEG,OAAQA,EACRgC,sBAAuBrB,IAG3BI,EAACkB,EAAAA,CACGC,eAAgB7B,EAAOE,MACvB4B,OAAQhD,EAASgD,OACjBtC,SAAUA,EACVG,OAAQA,EACRoC,iBAlES,EAAGC,aAC5B,MAAM9B,EAAQ+B,SAASD,EAAO9B,MAAO,IACrCH,GAAW,GACXE,GAAWD,IAA4B,IAAKA,EAAQE,WAAM,EAgE1CyB,sBAAuBrB,IAG9BpB,GACGwB,EAACwB,EAAAA,CACGC,mBAAoB,CAAC,WACrBC,QAAQ,QACRC,QA/DE,KAClBzC,EAAU,SACVZ,EAAS,CAAEuB,KAAM,CAAEP,UAAUF,WAAQ,EA8DrBwC,SAAqB,YAAX3C,EACV4C,MAAO,GAAGnD,EAAK6B,IAAI,uBAM3C,CAEArC,EAAkB4D,aAAe,CAC7BxD,SAAU,OACVyB,SAAU,OACVxB,SAAU,OACVH,SAAU,CAAC,EACXI,kBAAkB"}
@@ -1,2 +1,2 @@
1
- import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import s from"./PaymentMethod/PaymentMethodList.js";import o from"./status/index.js";import n from"../../../core/Services/order-status.js";import{sanitizeOrder as a}from"../../internal/UIElement/utils.js";import{ANALYTICS_RENDERED_STR as r}from"../../../core/Analytics/constants.js";import i from"../../../core/Errors/AdyenCheckoutError.js";function d(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class h extends t{componentDidMount(){this.prepareDropinData()}get analyticConfigData(){return{openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,showStoredPaymentMethods:this.props.showStoredPaymentMethods}}componentDidUpdate(t,e){e.status.type!==this.state.status.type&&this.state.activePaymentMethod&&this.state.activePaymentMethod.setStatus(this.state.status.type),"ready"===this.state.status.type&&"ready"!==e.status.type&&this.props.onReady&&this.props.onReady()}closeActivePaymentMethod(){this.setState({activePaymentMethod:null})}render(t,{elements:n,instantPaymentElements:a,storedPaymentElements:r,status:i,activePaymentMethod:d,cachedPaymentMethods:h}){const p="loading"===i.type,m="redirect"===i.type,c=n?.length||a?.length||r?.length;switch(i.type){case"success":return e(o.Success,{message:0===t?.amount?.value?"resultMessages.preauthorized":i.props?.message});case"error":return e(o.Error,{message:i.props?.message});case"custom":return i.props?.component?.render();default:return e("div",{className:`adyen-checkout__dropin adyen-checkout__dropin--${i.type}`},m&&i.props.component&&i.props.component.render(),p&&i.props&&i.props.component&&i.props.component.render(),!!c&&e(s,{isLoading:p||m,isDisablingPaymentMethod:this.state.isDisabling,paymentMethods:n,instantPaymentMethods:a,storedPaymentMethods:r,activePaymentMethod:d,cachedPaymentMethods:h,order:this.props.order,orderStatus:this.state.orderStatus,onOrderCancel:this.onOrderCancel,onSelect:this.handleOnSelectPaymentMethod,openPaymentMethod:this.props.openPaymentMethod,openFirstPaymentMethod:this.props.openFirstPaymentMethod,openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,onDisableStoredPaymentMethod:this.handleDisableStoredPaymentMethod,showRemovePaymentMethodButton:this.props.showRemovePaymentMethodButton,showRadioButton:this.props.showRadioButton}))}}constructor(...t){super(...t),d(this,"state",{elements:[],instantPaymentElements:[],storedPaymentElements:[],orderStatus:null,isDisabling:!1,status:{type:"loading",props:void 0},activePaymentMethod:null,cachedPaymentMethods:{}}),d(this,"prepareDropinData",(()=>{const{order:t,clientKey:e,loadingContext:s}=this.props,[o,a,i]=this.props.onCreateElements(),d=t?n({clientKey:e,loadingContext:s},t):null;Promise.all([o,a,i,d]).then((([t,e,s,o])=>{this.setState({instantPaymentElements:s,elements:e,storedPaymentElements:t,orderStatus:o}),this.setStatus("ready"),this.props.modules?.analytics.sendAnalytics("dropin",{type:r,configData:this.analyticConfigData})})),this.onOrderCancel=this.getOnOrderCancel()})),d(this,"setStatus",((t,e={})=>{this.setState({status:{type:t,props:e}})})),d(this,"setActivePaymentMethod",(t=>{this.setState((e=>({activePaymentMethod:t,cachedPaymentMethods:{...e.cachedPaymentMethods,[t._id]:!0}})))})),d(this,"handleOnSelectPaymentMethod",(t=>{const{activePaymentMethod:e}=this.state;this.setActivePaymentMethod(t),(e&&e._id!==t._id||!e)&&(this.props.onSelect?.(t),t.submitAnalytics({type:r}))})),d(this,"handleDisableStoredPaymentMethod",(t=>{this.setState({isDisabling:!0}),new Promise(((e,s)=>this.props.onDisableStoredPaymentMethod(t.props.storedPaymentMethodId,e,s))).then((()=>{this.setState((e=>({storedPaymentElements:e.storedPaymentElements.filter((e=>e._id!==t._id))}))),this.setState({isDisabling:!1})})).catch((()=>{this.setState({isDisabling:!1})}))})),d(this,"getOnOrderCancel",(()=>this.props.onOrderCancel?t=>{const e=a(t.order);new Promise(((t,s)=>{this.props.onOrderCancel({order:e},{resolve:t,reject:s})})).then((({amount:t})=>this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null,t))).catch((t=>{throw new i("NETWORK_ERROR",t)}))}:this.props.session?t=>this.props.session.cancelOrder(t).then((()=>this.props.core.update({order:null}))).catch((t=>{console.error(t),this.setStatus(t?.message||"error")})):null)),d(this,"onOrderCancel",void 0)}}export{h as DropinComponent,h as default};
1
+ import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import s from"./PaymentMethod/PaymentMethodList.js";import o from"./status/index.js";import n from"../../../core/Services/order-status.js";import{sanitizeOrder as a}from"../../internal/UIElement/utils.js";import{ANALYTICS_RENDERED_STR as r}from"../../../core/Analytics/constants.js";import i from"../../../core/Errors/AdyenCheckoutError.js";function d(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class h extends t{componentDidMount(){this.prepareDropinData()}get analyticConfigData(){return{openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,showStoredPaymentMethods:this.props.showStoredPaymentMethods}}componentDidUpdate(t,e){e.status.type!==this.state.status.type&&this.state.activePaymentMethod&&this.state.activePaymentMethod.setStatus(this.state.status.type),"ready"===this.state.status.type&&"ready"!==e.status.type&&this.props.onReady&&this.props.onReady()}closeActivePaymentMethod(){this.setState({activePaymentMethod:null})}render(t,{elements:n,instantPaymentElements:a,storedPaymentElements:r,status:i,activePaymentMethod:d,cachedPaymentMethods:h}){const p="loading"===i.type,m="redirect"===i.type,c=n?.length||a?.length||r?.length;switch(i.type){case"success":return e(o.Success,{message:0===t?.amount?.value?"resultMessages.preauthorized":i.props?.message});case"error":return e(o.Error,{message:i.props?.message});case"custom":return i.props?.component?.render();default:return e("div",{className:`adyen-checkout__dropin adyen-checkout__dropin--${i.type}`},m&&i.props.component&&i.props.component.render(),p&&i.props&&i.props.component&&i.props.component.render(),!!c&&e(s,{isLoading:p||m,isDisablingPaymentMethod:this.state.isDisabling,paymentMethods:n,instantPaymentMethods:a,storedPaymentMethods:r,activePaymentMethod:d,cachedPaymentMethods:h,order:this.props.order,orderStatus:this.state.orderStatus,onOrderCancel:this.onOrderCancel,onSelect:this.handleOnSelectPaymentMethod,openPaymentMethod:this.props.openPaymentMethod,openFirstPaymentMethod:this.props.openFirstPaymentMethod,openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,onDisableStoredPaymentMethod:this.handleDisableStoredPaymentMethod,showRemovePaymentMethodButton:this.props.showRemovePaymentMethodButton,showRadioButton:this.props.showRadioButton}))}}constructor(...t){super(...t),d(this,"state",{elements:[],instantPaymentElements:[],storedPaymentElements:[],orderStatus:null,isDisabling:!1,status:{type:"loading",props:void 0},activePaymentMethod:null,cachedPaymentMethods:{}}),d(this,"prepareDropinData",(()=>{const{order:t,clientKey:e,loadingContext:s}=this.props,[o,a,i]=this.props.onCreateElements(),d=t?n({clientKey:e,loadingContext:s},t):null;Promise.all([o,a,i,d]).then((([t,e,s,o])=>{this.setState({instantPaymentElements:s,elements:e,storedPaymentElements:t,orderStatus:o}),this.setStatus("ready"),this.props.modules?.analytics.sendAnalytics("dropin",{type:r,configData:this.analyticConfigData})})),this.onOrderCancel=this.getOnOrderCancel()})),d(this,"setStatus",((t,e={})=>{this.setState({status:{type:t,props:e}})})),d(this,"setActivePaymentMethod",(t=>{t!==this.state.activePaymentMethod&&(this.setState((e=>({activePaymentMethod:t,cachedPaymentMethods:{...e.cachedPaymentMethods,[t._id]:!0}}))),this.state.cachedPaymentMethods[t._id]&&t.activate())})),d(this,"handleOnSelectPaymentMethod",(t=>{const{activePaymentMethod:e}=this.state;this.setActivePaymentMethod(t),(e&&e._id!==t._id||!e)&&(this.props.onSelect?.(t),t.submitAnalytics({type:r}))})),d(this,"handleDisableStoredPaymentMethod",(t=>{this.setState({isDisabling:!0}),new Promise(((e,s)=>this.props.onDisableStoredPaymentMethod(t.props.storedPaymentMethodId,e,s))).then((()=>{this.setState((e=>({storedPaymentElements:e.storedPaymentElements.filter((e=>e._id!==t._id))}))),this.setState({isDisabling:!1})})).catch((()=>{this.setState({isDisabling:!1})}))})),d(this,"getOnOrderCancel",(()=>this.props.onOrderCancel?t=>{const e=a(t.order);new Promise(((t,s)=>{this.props.onOrderCancel({order:e},{resolve:t,reject:s})})).then((({amount:t})=>this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null,t))).catch((t=>{throw new i("NETWORK_ERROR",t)}))}:this.props.session?t=>this.props.session.cancelOrder(t).then((()=>this.props.core.update({order:null}))).catch((t=>{console.error(t),this.setStatus(t?.message||"error")})):null)),d(this,"onOrderCancel",void 0)}}export{h as DropinComponent,h as default};
2
2
  //# sourceMappingURL=DropinComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropinComponent.js","sources":["../../../../../src/components/Dropin/components/DropinComponent.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport PaymentMethodList from './PaymentMethod/PaymentMethodList';\nimport Status from './status';\nimport getOrderStatus from '../../../core/Services/order-status';\nimport { DropinComponentProps, DropinComponentState, DropinStatusProps, onOrderCancelData } from '../types';\nimport './DropinComponent.scss';\nimport { UIElementStatus } from '../../internal/UIElement/types';\nimport { sanitizeOrder } from '../../internal/UIElement/utils';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\n\nexport class DropinComponent extends Component<DropinComponentProps, DropinComponentState> {\n public state: DropinComponentState = {\n elements: [],\n instantPaymentElements: [],\n storedPaymentElements: [],\n orderStatus: null,\n isDisabling: false,\n status: { type: 'loading', props: undefined },\n activePaymentMethod: null,\n cachedPaymentMethods: {}\n };\n\n componentDidMount() {\n this.prepareDropinData();\n }\n\n public prepareDropinData = () => {\n const { order, clientKey, loadingContext } = this.props;\n const [storedElementsPromises, elementsPromises, instantPaymentsPromises] = this.props.onCreateElements();\n const orderStatusPromise = order ? getOrderStatus({ clientKey, loadingContext }, order) : null;\n\n void Promise.all([storedElementsPromises, elementsPromises, instantPaymentsPromises, orderStatusPromise]).then(\n ([storedPaymentElements, elements, instantPaymentElements, orderStatus]) => {\n this.setState({ instantPaymentElements, elements, storedPaymentElements, orderStatus });\n this.setStatus('ready');\n\n this.props.modules?.analytics.sendAnalytics('dropin', {\n type: ANALYTICS_RENDERED_STR,\n configData: this.analyticConfigData\n });\n }\n );\n\n this.onOrderCancel = this.getOnOrderCancel();\n };\n\n get analyticConfigData() {\n return {\n openFirstStoredPaymentMethod: this.props.openFirstStoredPaymentMethod,\n showStoredPaymentMethods: this.props.showStoredPaymentMethods\n };\n }\n\n public setStatus = (status: UIElementStatus, props: DropinStatusProps = {}) => {\n this.setState({ status: { type: status, props } });\n };\n\n private setActivePaymentMethod = paymentMethod => {\n this.setState(prevState => ({\n activePaymentMethod: paymentMethod,\n cachedPaymentMethods: { ...prevState.cachedPaymentMethods, [paymentMethod._id]: true }\n }));\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.status.type !== this.state.status.type && this.state.activePaymentMethod) {\n this.state.activePaymentMethod.setStatus(this.state.status.type);\n }\n\n if (this.state.status.type === 'ready' && prevState.status.type !== 'ready' && this.props.onReady) {\n this.props.onReady();\n }\n }\n\n private handleOnSelectPaymentMethod = paymentMethod => {\n const { activePaymentMethod } = this.state;\n\n this.setActivePaymentMethod(paymentMethod);\n\n // onSelect event\n if ((activePaymentMethod && activePaymentMethod._id !== paymentMethod._id) || !activePaymentMethod) {\n this.props.onSelect?.(paymentMethod);\n\n paymentMethod.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n };\n\n private handleDisableStoredPaymentMethod = storedPaymentMethod => {\n this.setState({ isDisabling: true });\n\n new Promise((resolve, reject) => this.props.onDisableStoredPaymentMethod(storedPaymentMethod.props.storedPaymentMethodId, resolve, reject))\n .then(() => {\n this.setState(prevState => ({\n storedPaymentElements: prevState.storedPaymentElements.filter(pm => pm._id !== storedPaymentMethod._id)\n }));\n this.setState({ isDisabling: false });\n })\n .catch(() => {\n this.setState({ isDisabling: false });\n });\n };\n\n closeActivePaymentMethod() {\n this.setState({ activePaymentMethod: null });\n }\n\n /**\n * getOnOrderCancel decides which onOrderCancel logic should be used, manual or sessions\n */\n private getOnOrderCancel = () => {\n if (this.props.onOrderCancel) {\n return (data: onOrderCancelData) => {\n const order = sanitizeOrder(data.order);\n new Promise<{ amount: PaymentAmount }>((resolve, reject) => {\n this.props.onOrderCancel({ order }, { resolve, reject });\n })\n .then(({ amount }) => this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null, amount))\n .catch(error => {\n throw new AdyenCheckoutError('NETWORK_ERROR', error);\n });\n };\n }\n if (this.props.session) {\n return (data: onOrderCancelData) =>\n this.props.session\n .cancelOrder(data)\n .then(() => this.props.core.update({ order: null }))\n .catch(error => {\n console.error(error);\n this.setStatus(error?.message || 'error');\n });\n }\n return null;\n };\n\n private onOrderCancel: (data: onOrderCancelData) => void;\n\n render(props, { elements, instantPaymentElements, storedPaymentElements, status, activePaymentMethod, cachedPaymentMethods }) {\n const isLoading = status.type === 'loading';\n const isRedirecting = status.type === 'redirect';\n const hasPaymentMethodsToBeDisplayed = elements?.length || instantPaymentElements?.length || storedPaymentElements?.length;\n\n switch (status.type) {\n case 'success':\n return <Status.Success message={props?.amount?.value === 0 ? 'resultMessages.preauthorized' : status.props?.message} />;\n\n case 'error':\n return <Status.Error message={status.props?.message} />;\n\n case 'custom':\n return status.props?.component?.render();\n\n default:\n return (\n <div className={`adyen-checkout__dropin adyen-checkout__dropin--${status.type}`}>\n {isRedirecting && status.props.component && status.props.component.render()}\n {isLoading && status.props && status.props.component && status.props.component.render()}\n {!!hasPaymentMethodsToBeDisplayed && (\n <PaymentMethodList\n isLoading={isLoading || isRedirecting}\n isDisablingPaymentMethod={this.state.isDisabling}\n paymentMethods={elements}\n instantPaymentMethods={instantPaymentElements}\n storedPaymentMethods={storedPaymentElements}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n order={this.props.order}\n orderStatus={this.state.orderStatus}\n onOrderCancel={this.onOrderCancel}\n onSelect={this.handleOnSelectPaymentMethod}\n openPaymentMethod={this.props.openPaymentMethod}\n openFirstPaymentMethod={this.props.openFirstPaymentMethod}\n openFirstStoredPaymentMethod={this.props.openFirstStoredPaymentMethod}\n onDisableStoredPaymentMethod={this.handleDisableStoredPaymentMethod}\n showRemovePaymentMethodButton={this.props.showRemovePaymentMethodButton}\n showRadioButton={this.props.showRadioButton}\n />\n )}\n </div>\n );\n }\n }\n}\n\nexport default DropinComponent;\n"],"names":["DropinComponent","Component","componentDidMount","this","prepareDropinData","analyticConfigData","openFirstStoredPaymentMethod","props","showStoredPaymentMethods","componentDidUpdate","prevProps","prevState","status","type","state","activePaymentMethod","setStatus","onReady","closeActivePaymentMethod","setState","render","elements","instantPaymentElements","storedPaymentElements","cachedPaymentMethods","isLoading","isRedirecting","hasPaymentMethodsToBeDisplayed","length","h","Status","Success","message","amount","value","Error","component","div","className","PaymentMethodList","isDisablingPaymentMethod","isDisabling","paymentMethods","instantPaymentMethods","storedPaymentMethods","order","orderStatus","onOrderCancel","onSelect","handleOnSelectPaymentMethod","openPaymentMethod","openFirstPaymentMethod","onDisableStoredPaymentMethod","handleDisableStoredPaymentMethod","showRemovePaymentMethodButton","showRadioButton","_define_property","undefined","clientKey","loadingContext","storedElementsPromises","elementsPromises","instantPaymentsPromises","onCreateElements","orderStatusPromise","getOrderStatus","Promise","all","then","modules","analytics","sendAnalytics","ANALYTICS_RENDERED_STR","configData","getOnOrderCancel","setActivePaymentMethod","paymentMethod","_id","submitAnalytics","storedPaymentMethod","resolve","reject","storedPaymentMethodId","filter","pm","catch","data","sanitizeOrder","elementRef","handleAdvanceFlowPaymentMethodsUpdate","error","AdyenCheckoutError","session","cancelOrder","core","update","console"],"mappings":"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"}
1
+ {"version":3,"file":"DropinComponent.js","sources":["../../../../../src/components/Dropin/components/DropinComponent.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport PaymentMethodList from './PaymentMethod/PaymentMethodList';\nimport Status from './status';\nimport getOrderStatus from '../../../core/Services/order-status';\nimport { DropinComponentProps, DropinComponentState, DropinStatusProps, onOrderCancelData } from '../types';\nimport './DropinComponent.scss';\nimport { UIElementStatus } from '../../internal/UIElement/types';\nimport { sanitizeOrder } from '../../internal/UIElement/utils';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport UIElement from '../../internal/UIElement';\n\nexport class DropinComponent extends Component<DropinComponentProps, DropinComponentState> {\n public state: DropinComponentState = {\n elements: [],\n instantPaymentElements: [],\n storedPaymentElements: [],\n orderStatus: null,\n isDisabling: false,\n status: { type: 'loading', props: undefined },\n activePaymentMethod: null,\n cachedPaymentMethods: {}\n };\n\n componentDidMount() {\n this.prepareDropinData();\n }\n\n public prepareDropinData = () => {\n const { order, clientKey, loadingContext } = this.props;\n const [storedElementsPromises, elementsPromises, instantPaymentsPromises] = this.props.onCreateElements();\n const orderStatusPromise = order ? getOrderStatus({ clientKey, loadingContext }, order) : null;\n\n void Promise.all([storedElementsPromises, elementsPromises, instantPaymentsPromises, orderStatusPromise]).then(\n ([storedPaymentElements, elements, instantPaymentElements, orderStatus]) => {\n this.setState({ instantPaymentElements, elements, storedPaymentElements, orderStatus });\n this.setStatus('ready');\n\n this.props.modules?.analytics.sendAnalytics('dropin', {\n type: ANALYTICS_RENDERED_STR,\n configData: this.analyticConfigData\n });\n }\n );\n\n this.onOrderCancel = this.getOnOrderCancel();\n };\n\n get analyticConfigData() {\n return {\n openFirstStoredPaymentMethod: this.props.openFirstStoredPaymentMethod,\n showStoredPaymentMethods: this.props.showStoredPaymentMethods\n };\n }\n\n public setStatus = (status: UIElementStatus, props: DropinStatusProps = {}) => {\n this.setState({ status: { type: status, props } });\n };\n\n private setActivePaymentMethod = (paymentMethod: UIElement): void => {\n if (paymentMethod === this.state.activePaymentMethod) {\n return;\n }\n\n this.setState(prevState => ({\n activePaymentMethod: paymentMethod,\n cachedPaymentMethods: { ...prevState.cachedPaymentMethods, [paymentMethod._id]: true }\n }));\n\n if (this.state.cachedPaymentMethods[paymentMethod._id]) {\n paymentMethod.activate();\n }\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.status.type !== this.state.status.type && this.state.activePaymentMethod) {\n this.state.activePaymentMethod.setStatus(this.state.status.type);\n }\n\n if (this.state.status.type === 'ready' && prevState.status.type !== 'ready' && this.props.onReady) {\n this.props.onReady();\n }\n }\n\n private handleOnSelectPaymentMethod = paymentMethod => {\n const { activePaymentMethod } = this.state;\n\n this.setActivePaymentMethod(paymentMethod);\n\n // onSelect event\n if ((activePaymentMethod && activePaymentMethod._id !== paymentMethod._id) || !activePaymentMethod) {\n this.props.onSelect?.(paymentMethod);\n\n paymentMethod.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n };\n\n private handleDisableStoredPaymentMethod = storedPaymentMethod => {\n this.setState({ isDisabling: true });\n\n new Promise((resolve, reject) => this.props.onDisableStoredPaymentMethod(storedPaymentMethod.props.storedPaymentMethodId, resolve, reject))\n .then(() => {\n this.setState(prevState => ({\n storedPaymentElements: prevState.storedPaymentElements.filter(pm => pm._id !== storedPaymentMethod._id)\n }));\n this.setState({ isDisabling: false });\n })\n .catch(() => {\n this.setState({ isDisabling: false });\n });\n };\n\n closeActivePaymentMethod() {\n this.setState({ activePaymentMethod: null });\n }\n\n /**\n * getOnOrderCancel decides which onOrderCancel logic should be used, manual or sessions\n */\n private getOnOrderCancel = () => {\n if (this.props.onOrderCancel) {\n return (data: onOrderCancelData) => {\n const order = sanitizeOrder(data.order);\n new Promise<{ amount: PaymentAmount }>((resolve, reject) => {\n this.props.onOrderCancel({ order }, { resolve, reject });\n })\n .then(({ amount }) => this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null, amount))\n .catch(error => {\n throw new AdyenCheckoutError('NETWORK_ERROR', error);\n });\n };\n }\n if (this.props.session) {\n return (data: onOrderCancelData) =>\n this.props.session\n .cancelOrder(data)\n .then(() => this.props.core.update({ order: null }))\n .catch(error => {\n console.error(error);\n this.setStatus(error?.message || 'error');\n });\n }\n return null;\n };\n\n private onOrderCancel: (data: onOrderCancelData) => void;\n\n render(props, { elements, instantPaymentElements, storedPaymentElements, status, activePaymentMethod, cachedPaymentMethods }) {\n const isLoading = status.type === 'loading';\n const isRedirecting = status.type === 'redirect';\n const hasPaymentMethodsToBeDisplayed = elements?.length || instantPaymentElements?.length || storedPaymentElements?.length;\n\n switch (status.type) {\n case 'success':\n return <Status.Success message={props?.amount?.value === 0 ? 'resultMessages.preauthorized' : status.props?.message} />;\n\n case 'error':\n return <Status.Error message={status.props?.message} />;\n\n case 'custom':\n return status.props?.component?.render();\n\n default:\n return (\n <div className={`adyen-checkout__dropin adyen-checkout__dropin--${status.type}`}>\n {isRedirecting && status.props.component && status.props.component.render()}\n {isLoading && status.props && status.props.component && status.props.component.render()}\n {!!hasPaymentMethodsToBeDisplayed && (\n <PaymentMethodList\n isLoading={isLoading || isRedirecting}\n isDisablingPaymentMethod={this.state.isDisabling}\n paymentMethods={elements}\n instantPaymentMethods={instantPaymentElements}\n storedPaymentMethods={storedPaymentElements}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n order={this.props.order}\n orderStatus={this.state.orderStatus}\n onOrderCancel={this.onOrderCancel}\n onSelect={this.handleOnSelectPaymentMethod}\n openPaymentMethod={this.props.openPaymentMethod}\n openFirstPaymentMethod={this.props.openFirstPaymentMethod}\n openFirstStoredPaymentMethod={this.props.openFirstStoredPaymentMethod}\n onDisableStoredPaymentMethod={this.handleDisableStoredPaymentMethod}\n showRemovePaymentMethodButton={this.props.showRemovePaymentMethodButton}\n showRadioButton={this.props.showRadioButton}\n />\n )}\n </div>\n );\n }\n }\n}\n\nexport default DropinComponent;\n"],"names":["DropinComponent","Component","componentDidMount","this","prepareDropinData","analyticConfigData","openFirstStoredPaymentMethod","props","showStoredPaymentMethods","componentDidUpdate","prevProps","prevState","status","type","state","activePaymentMethod","setStatus","onReady","closeActivePaymentMethod","setState","render","elements","instantPaymentElements","storedPaymentElements","cachedPaymentMethods","isLoading","isRedirecting","hasPaymentMethodsToBeDisplayed","length","h","Status","Success","message","amount","value","Error","component","div","className","PaymentMethodList","isDisablingPaymentMethod","isDisabling","paymentMethods","instantPaymentMethods","storedPaymentMethods","order","orderStatus","onOrderCancel","onSelect","handleOnSelectPaymentMethod","openPaymentMethod","openFirstPaymentMethod","onDisableStoredPaymentMethod","handleDisableStoredPaymentMethod","showRemovePaymentMethodButton","showRadioButton","super","args","_define_property","undefined","clientKey","loadingContext","storedElementsPromises","elementsPromises","instantPaymentsPromises","onCreateElements","orderStatusPromise","getOrderStatus","Promise","all","then","modules","analytics","sendAnalytics","ANALYTICS_RENDERED_STR","configData","getOnOrderCancel","setActivePaymentMethod","paymentMethod","_id","activate","submitAnalytics","storedPaymentMethod","resolve","reject","storedPaymentMethodId","filter","pm","catch","data","sanitizeOrder","elementRef","handleAdvanceFlowPaymentMethodsUpdate","error","AdyenCheckoutError","session","cancelOrder","core","update","console"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentMethodItem.js","sources":["../../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport PaymentMethodDetails from '../PaymentMethodDetails';\nimport PaymentMethodIcon from '../PaymentMethodIcon';\nimport DisableOneClickConfirmation from '../DisableOneClickConfirmation';\nimport './PaymentMethodItem.scss';\nimport UIElement from '../../../../internal/UIElement/UIElement';\nimport PaymentMethodBrands from '../PaymentMethodBrands/PaymentMethodBrands';\nimport { BRAND_ICON_UI_EXCLUSION_LIST } from '../../../../internal/SecuredFields/lib/constants';\nimport PaymentMethodName from '../PaymentMethodName';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport ExpandButton from '../../../../internal/ExpandButton';\n\nexport interface PaymentMethodItemProps {\n paymentMethod: UIElement;\n isSelected?: boolean;\n isLoaded?: boolean;\n isLoading?: boolean;\n isDisablingPaymentMethod: boolean;\n showRemovePaymentMethodButton: boolean;\n onDisableStoredPaymentMethod: (paymentMethod) => void;\n onSelect: (paymentMethod: UIElement) => void;\n standalone: boolean;\n className?: string;\n showRadioButton?: boolean;\n}\n\nclass PaymentMethodItem extends Component<PaymentMethodItemProps> {\n public static defaultProps = {\n paymentMethod: null,\n isSelected: false,\n isLoaded: false,\n isLoading: false,\n showDisableStoredPaymentMethodConfirmation: false,\n showRadioButton: false\n };\n\n public state = {\n showDisableStoredPaymentMethodConfirmation: false\n };\n\n public toggleDisableConfirmation = () => {\n this.setState({ showDisableStoredPaymentMethodConfirmation: !this.state.showDisableStoredPaymentMethodConfirmation });\n };\n\n public onDisableStoredPaymentMethod = () => {\n this.props.onDisableStoredPaymentMethod(this.props.paymentMethod);\n this.toggleDisableConfirmation();\n };\n\n private handleOnListItemClick = (): void => {\n const { onSelect, paymentMethod } = this.props;\n onSelect(paymentMethod);\n };\n\n // @ts-ignore need to refine the type for paymentMethod\n render({ paymentMethod, isSelected, isDisablingPaymentMethod, isLoaded, isLoading, standalone, showRadioButton }) {\n const { i18n } = useCoreContext();\n\n if (!paymentMethod) {\n return null;\n }\n\n const isCard = paymentMethod.props.type === 'card' || paymentMethod.props.type === 'scheme';\n\n const paymentMethodClassnames = classNames({\n 'adyen-checkout__payment-method': true,\n [`adyen-checkout__payment-method--${paymentMethod.props.type}`]: true,\n ...(isCard && { [`adyen-checkout__payment-method--${paymentMethod.props.fundingSource ?? 'credit'}`]: true }),\n 'adyen-checkout__payment-method--selected': isSelected,\n 'adyen-checkout__payment-method--loading': isLoading,\n 'adyen-checkout__payment-method--disabling': isDisablingPaymentMethod,\n 'adyen-checkout__payment-method--confirming': this.state.showDisableStoredPaymentMethodConfirmation,\n 'adyen-checkout__payment-method--standalone': standalone,\n [paymentMethod._id]: true,\n [this.props.className]: true\n });\n\n const showRemovePaymentMethodButton = this.props.showRemovePaymentMethodButton && paymentMethod.props.oneClick && isSelected;\n const disableConfirmationId = `remove-${paymentMethod._id}`;\n const containerId = `container-${paymentMethod._id}`;\n const buttonId = `button-${paymentMethod._id}`;\n\n const showBrands = !paymentMethod.props.oneClick && paymentMethod.brands && paymentMethod.brands.length > 0;\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div key={paymentMethod._id} className={paymentMethodClassnames} onClick={this.handleOnListItemClick}>\n <div className=\"adyen-checkout__payment-method__header\">\n <ExpandButton buttonId={buttonId} showRadioButton={showRadioButton} isSelected={isSelected} expandContentId={containerId}>\n <PaymentMethodIcon\n // Only add alt attribute to storedPaymentMethods (to avoid SR reading the PM name twice)\n {...(paymentMethod.props.oneClick && { altDescription: paymentMethod.props.name })}\n type={paymentMethod.type}\n src={paymentMethod.icon}\n />\n\n <PaymentMethodName\n displayName={paymentMethod.displayName}\n isSelected={isSelected}\n additionalInfo={paymentMethod.additionalInfo}\n />\n </ExpandButton>\n\n {showRemovePaymentMethodButton && (\n <button\n type=\"button\"\n className=\"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link\"\n onClick={this.toggleDisableConfirmation}\n aria-expanded={this.state.showDisableStoredPaymentMethodConfirmation}\n aria-controls={disableConfirmationId}\n >\n {i18n.get('storedPaymentMethod.disable.button')}\n </button>\n )}\n\n {showBrands && (\n <PaymentMethodBrands\n showOtherInsteafOfNumber={paymentMethod.props.showOtherInsteafOfNumber}\n keepBrandsVisible={paymentMethod.props.keepBrandsVisible}\n brands={paymentMethod.brands}\n excludedUIBrands={BRAND_ICON_UI_EXCLUSION_LIST}\n isPaymentMethodSelected={isSelected}\n />\n )}\n </div>\n\n <div className=\"adyen-checkout-pm-details-wrapper\" aria-hidden={!isSelected}>\n <div className=\"adyen-checkout__payment-method__details\" id={containerId}>\n {showRemovePaymentMethodButton && (\n <DisableOneClickConfirmation\n id={disableConfirmationId}\n open={this.state.showDisableStoredPaymentMethodConfirmation}\n onDisable={this.onDisableStoredPaymentMethod}\n onCancel={this.toggleDisableConfirmation}\n />\n )}\n\n <PaymentMethodDetails paymentMethodComponent={paymentMethod.render()} isLoaded={isLoaded} />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default PaymentMethodItem;\n"],"names":["PaymentMethodItem","Component","render","paymentMethod","isSelected","isDisablingPaymentMethod","isLoaded","isLoading","standalone","showRadioButton","i18n","useCoreContext","isCard","props","type","paymentMethodClassnames","classNames","fundingSource","this","state","showDisableStoredPaymentMethodConfirmation","_id","className","showRemovePaymentMethodButton","oneClick","disableConfirmationId","containerId","buttonId","showBrands","brands","length","h","div","key","onClick","handleOnListItemClick","ExpandButton","expandContentId","PaymentMethodIcon","altDescription","name","src","icon","PaymentMethodName","displayName","additionalInfo","button","toggleDisableConfirmation","aria-expanded","aria-controls","get","PaymentMethodBrands","showOtherInsteafOfNumber","keepBrandsVisible","excludedUIBrands","BRAND_ICON_UI_EXCLUSION_LIST","isPaymentMethodSelected","aria-hidden","id","DisableOneClickConfirmation","open","onDisable","onDisableStoredPaymentMethod","onCancel","PaymentMethodDetails","paymentMethodComponent","_define_property","setState","onSelect","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"PaymentMethodItem.js","sources":["../../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport PaymentMethodDetails from '../PaymentMethodDetails';\nimport PaymentMethodIcon from '../PaymentMethodIcon';\nimport DisableOneClickConfirmation from '../DisableOneClickConfirmation';\nimport './PaymentMethodItem.scss';\nimport UIElement from '../../../../internal/UIElement/UIElement';\nimport PaymentMethodBrands from '../PaymentMethodBrands/PaymentMethodBrands';\nimport { BRAND_ICON_UI_EXCLUSION_LIST } from '../../../../internal/SecuredFields/lib/constants';\nimport PaymentMethodName from '../PaymentMethodName';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport ExpandButton from '../../../../internal/ExpandButton';\n\nexport interface PaymentMethodItemProps {\n paymentMethod: UIElement;\n isSelected?: boolean;\n isLoaded?: boolean;\n isLoading?: boolean;\n isDisablingPaymentMethod: boolean;\n showRemovePaymentMethodButton: boolean;\n onDisableStoredPaymentMethod: (paymentMethod) => void;\n onSelect: (paymentMethod: UIElement) => void;\n standalone: boolean;\n className?: string;\n showRadioButton?: boolean;\n}\n\nclass PaymentMethodItem extends Component<PaymentMethodItemProps> {\n public static defaultProps = {\n paymentMethod: null,\n isSelected: false,\n isLoaded: false,\n isLoading: false,\n showDisableStoredPaymentMethodConfirmation: false,\n showRadioButton: false\n };\n\n public state = {\n showDisableStoredPaymentMethodConfirmation: false\n };\n\n public toggleDisableConfirmation = () => {\n this.setState({ showDisableStoredPaymentMethodConfirmation: !this.state.showDisableStoredPaymentMethodConfirmation });\n };\n\n public onDisableStoredPaymentMethod = () => {\n this.props.onDisableStoredPaymentMethod(this.props.paymentMethod);\n this.toggleDisableConfirmation();\n };\n\n private handleOnListItemClick = (): void => {\n const { onSelect, paymentMethod } = this.props;\n onSelect(paymentMethod);\n };\n\n // @ts-ignore need to refine the type for paymentMethod\n render({ paymentMethod, isSelected, isDisablingPaymentMethod, isLoaded, isLoading, standalone, showRadioButton }) {\n const { i18n } = useCoreContext();\n\n if (!paymentMethod) {\n return null;\n }\n\n const isCard = paymentMethod.props.type === 'card' || paymentMethod.props.type === 'scheme';\n\n const paymentMethodClassnames = classNames({\n 'adyen-checkout__payment-method': true,\n [`adyen-checkout__payment-method--${paymentMethod.props.type}`]: true,\n ...(isCard && { [`adyen-checkout__payment-method--${paymentMethod.props.fundingSource ?? 'credit'}`]: true }),\n 'adyen-checkout__payment-method--selected': isSelected,\n 'adyen-checkout__payment-method--loading': isLoading,\n 'adyen-checkout__payment-method--disabling': isDisablingPaymentMethod,\n 'adyen-checkout__payment-method--confirming': this.state.showDisableStoredPaymentMethodConfirmation,\n 'adyen-checkout__payment-method--standalone': standalone,\n [paymentMethod._id]: true,\n [this.props.className]: true\n });\n\n const showRemovePaymentMethodButton = this.props.showRemovePaymentMethodButton && paymentMethod.props.oneClick && isSelected;\n const disableConfirmationId = `remove-${paymentMethod._id}`;\n const containerId = `container-${paymentMethod._id}`;\n const buttonId = `button-${paymentMethod._id}`;\n\n const showBrands = !paymentMethod.props.oneClick && paymentMethod.brands && paymentMethod.brands.length > 0;\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div key={paymentMethod._id} className={paymentMethodClassnames} onClick={this.handleOnListItemClick}>\n <div className=\"adyen-checkout__payment-method__header\">\n <ExpandButton buttonId={buttonId} showRadioButton={showRadioButton} isSelected={isSelected} expandContentId={containerId}>\n <PaymentMethodIcon\n // Only add alt attribute to storedPaymentMethods (to avoid SR reading the PM name twice)\n {...(paymentMethod.props.oneClick && { altDescription: paymentMethod.props.name })}\n type={paymentMethod.type}\n src={paymentMethod.icon}\n />\n\n <PaymentMethodName\n displayName={paymentMethod.displayName}\n isSelected={isSelected}\n additionalInfo={paymentMethod.additionalInfo}\n />\n </ExpandButton>\n\n {showRemovePaymentMethodButton && (\n <button\n type=\"button\"\n className=\"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link\"\n onClick={this.toggleDisableConfirmation}\n aria-expanded={this.state.showDisableStoredPaymentMethodConfirmation}\n aria-controls={disableConfirmationId}\n >\n {i18n.get('storedPaymentMethod.disable.button')}\n </button>\n )}\n\n {showBrands && (\n <PaymentMethodBrands\n showOtherInsteafOfNumber={paymentMethod.props.showOtherInsteafOfNumber}\n keepBrandsVisible={paymentMethod.props.keepBrandsVisible}\n brands={paymentMethod.brands}\n excludedUIBrands={BRAND_ICON_UI_EXCLUSION_LIST}\n isPaymentMethodSelected={isSelected}\n />\n )}\n </div>\n\n <div className=\"adyen-checkout-pm-details-wrapper\" aria-hidden={!isSelected}>\n <div className=\"adyen-checkout__payment-method__details\" id={containerId}>\n {showRemovePaymentMethodButton && (\n <DisableOneClickConfirmation\n id={disableConfirmationId}\n open={this.state.showDisableStoredPaymentMethodConfirmation}\n onDisable={this.onDisableStoredPaymentMethod}\n onCancel={this.toggleDisableConfirmation}\n />\n )}\n\n <PaymentMethodDetails paymentMethodComponent={paymentMethod.render()} isLoaded={isLoaded} />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default PaymentMethodItem;\n"],"names":["PaymentMethodItem","Component","render","paymentMethod","isSelected","isDisablingPaymentMethod","isLoaded","isLoading","standalone","showRadioButton","i18n","useCoreContext","isCard","props","type","paymentMethodClassnames","classNames","fundingSource","this","state","showDisableStoredPaymentMethodConfirmation","_id","className","showRemovePaymentMethodButton","oneClick","disableConfirmationId","containerId","buttonId","showBrands","brands","length","h","div","key","onClick","handleOnListItemClick","ExpandButton","expandContentId","PaymentMethodIcon","altDescription","name","src","icon","PaymentMethodName","displayName","additionalInfo","button","toggleDisableConfirmation","aria-expanded","aria-controls","get","PaymentMethodBrands","showOtherInsteafOfNumber","keepBrandsVisible","excludedUIBrands","BRAND_ICON_UI_EXCLUSION_LIST","isPaymentMethodSelected","aria-hidden","id","DisableOneClickConfirmation","open","onDisable","onDisableStoredPaymentMethod","onCancel","PaymentMethodDetails","paymentMethodComponent","super","args","_define_property","setState","onSelect","defaultProps"],"mappings":"uuBA2BA,MAAMA,UAA0BC,EA6B5BC,MAAAA,EAAOC,cAAEA,EAAaC,WAAEA,EAAUC,yBAAEA,EAAwBC,SAAEA,EAAQC,UAAEA,EAASC,WAAEA,EAAUC,gBAAEA,IAC3F,MAAMC,KAAEA,GAASC,IAEjB,IAAKR,EACD,OAAO,KAGX,MAAMS,EAAsC,SAA7BT,EAAcU,MAAMC,MAAgD,WAA7BX,EAAcU,MAAMC,KAEpEC,EAA0BC,EAAW,CACvC,kCAAkC,EAClC,CAAC,mCAAmCb,EAAcU,MAAMC,SAAS,KAC7DF,GAAU,CAAE,CAAC,mCAAmCT,EAAcU,MAAMI,eAAiB,aAAa,GACtG,2CAA4Cb,EAC5C,0CAA2CG,EAC3C,4CAA6CF,EAC7C,6CAA8Ca,KAAKC,MAAMC,2CACzD,6CAA8CZ,EAC9C,CAACL,EAAckB,MAAM,EACrB,CAACH,KAAKL,MAAMS,YAAY,IAGtBC,EAAgCL,KAAKL,MAAMU,+BAAiCpB,EAAcU,MAAMW,UAAYpB,EAC5GqB,EAAwB,UAAUtB,EAAckB,MAChDK,EAAc,aAAavB,EAAckB,MACzCM,EAAW,UAAUxB,EAAckB,MAEnCO,GAAczB,EAAcU,MAAMW,UAAYrB,EAAc0B,QAAU1B,EAAc0B,OAAOC,OAAS,EAE1G,OAEIC,EAACC,MAAAA,CAAIC,IAAK9B,EAAckB,IAAKC,UAAWP,EAAyBmB,QAAShB,KAAKiB,uBAC3EJ,EAACC,MAAAA,CAAIV,UAAU,0CACXS,EAACK,EAAAA,CAAaT,SAAUA,EAAUlB,gBAAiBA,EAAiBL,WAAYA,EAAYiC,gBAAiBX,GACzGK,EAACO,EAAAA,IAEQnC,EAAcU,MAAMW,UAAY,CAAEe,eAAgBpC,EAAcU,MAAM2B,MAC3E1B,KAAMX,EAAcW,KACpB2B,IAAKtC,EAAcuC,OAGvBX,EAACY,EAAAA,CACGC,YAAazC,EAAcyC,YAC3BxC,WAAYA,EACZyC,eAAgB1C,EAAc0C,kBAIrCtB,GACGQ,EAACe,SAAAA,CACGhC,KAAK,SACLQ,UAAU,qFACVY,QAAShB,KAAK6B,0BACdC,gBAAe9B,KAAKC,MAAMC,2CAC1B6B,gBAAexB,GAEdf,EAAKwC,IAAI,uCAIjBtB,GACGG,EAACoB,EAAAA,CACGC,yBAA0BjD,EAAcU,MAAMuC,yBAC9CC,kBAAmBlD,EAAcU,MAAMwC,kBACvCxB,OAAQ1B,EAAc0B,OACtByB,iBAAkBC,EAClBC,wBAAyBpD,KAKrC2B,EAACC,MAAAA,CAAIV,UAAU,oCAAoCmC,eAAcrD,GAC7D2B,EAACC,MAAAA,CAAIV,UAAU,0CAA0CoC,GAAIhC,GACxDH,GACGQ,EAAC4B,EAAAA,CACGD,GAAIjC,EACJmC,KAAM1C,KAAKC,MAAMC,2CACjByC,UAAW3C,KAAK4C,6BAChBC,SAAU7C,KAAK6B,4BAIvBhB,EAACiC,EAAAA,CAAqBC,uBAAwB9D,EAAcD,SAAUI,SAAUA,MAKpG,mBA1GA4D,SAAAC,GAAAC,EAAAlD,KAAOC,QAAQ,CACXC,4CAA4C,IAGhDgD,OAAOrB,6BAA4B,KAC/B7B,KAAKmD,SAAS,CAAEjD,4CAA6CF,KAAKC,MAAMC,4CAA2C,IAGvHgD,OAAON,gCAA+B,KAClC5C,KAAKL,MAAMiD,6BAA6B5C,KAAKL,MAAMV,eACnDe,KAAK6B,2BAAyB,IAGlCqB,OAAQjC,yBAAwB,KAC5B,MAAMmC,SAAEA,EAAQnE,cAAEA,GAAkBe,KAAKL,MACzCyD,EAASnE,EAAAA,KAxBbiE,EADEpE,EACYuE,eAAe,CACzBpE,cAAe,KACfC,YAAY,EACZE,UAAU,EACVC,WAAW,EACXa,4CAA4C,EAC5CX,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Giftcard.js","sources":["../../../../src/components/Giftcard/Giftcard.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GiftcardComponent from './components/GiftcardComponent';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport PayButton from '../internal/PayButton';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { PaymentAmount } from '../../types/global-types';\nimport { GiftCardElementData, GiftCardConfiguration, balanceCheckResponseType } from './types';\nimport { TxVariants } from '../tx-variants';\n\nexport class GiftcardElement extends UIElement<GiftCardConfiguration> {\n public static type = TxVariants.giftcard;\n\n protected static defaultProps = {\n brandsConfiguration: {}\n };\n\n formatProps(props) {\n return {\n ...props?.configuration,\n ...props\n };\n }\n\n formatData(): GiftCardElementData {\n return {\n paymentMethod: {\n type: this.constructor['type'],\n brand: this.props.brand,\n encryptedCardNumber: this.state.data?.encryptedCardNumber,\n encryptedSecurityCode: this.state.data?.encryptedSecurityCode\n }\n };\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.brandsConfiguration[this.props.brand]?.icon || this.props.icon || this.resources.getImage()(this.props.brand);\n }\n\n get displayName() {\n return this.props.brandsConfiguration[this.props.brand]?.name || this.props.name;\n }\n\n private handleBalanceCheck = (data: GiftCardElementData): Promise<balanceCheckResponseType> => {\n if (this.props.onBalanceCheck) {\n return new Promise((resolve, reject) => {\n void this.props.onBalanceCheck(resolve, reject, data);\n });\n }\n\n if (this.props.session) {\n return this.props.session.checkBalance(data);\n }\n };\n\n private onOrderRequest = data => {\n if (this.props.onOrderRequest)\n return new Promise((resolve, reject) => {\n void this.props.onOrderRequest(resolve, reject, data);\n });\n\n if (this.props.session) {\n return this.props.session.createOrder();\n }\n };\n\n public balanceCheck() {\n return this.onBalanceCheck();\n }\n\n private onBalanceCheck = (): void => {\n // skip balance check if no onBalanceCheck event has been defined\n const hasBalanceCheck = this.props.session || this.props.onBalanceCheck;\n if (!hasBalanceCheck) return super.submit();\n\n this.setStatus('loading');\n\n this.handleBalanceCheck(this.formatData())\n .then(({ balance, transactionLimit = {} as PaymentAmount }) => {\n if (!balance) throw new Error('card-error'); // card doesn't exist\n if (balance?.currency !== this.props.amount?.currency) throw new Error('currency-error');\n if (balance?.value <= 0) throw new Error('no-balance');\n\n this.componentRef.setBalance({ balance, transactionLimit });\n\n if (this.props.amount.value > balance.value || this.props.amount.value > transactionLimit.value) {\n if (this.props.order) {\n return super.submit();\n }\n\n return this.onOrderRequest(this.data).then((order: { orderData: string; pspReference: string }) => {\n this.setState({ order: { orderData: order.orderData, pspReference: order.pspReference } });\n return super.submit();\n });\n } else {\n return this.handleOnRequiringConfirmation().then(() => super.submit());\n }\n })\n .catch(error => {\n this.setStatus(error?.message || 'error');\n if (this.props.onError) this.handleError(new AdyenCheckoutError('ERROR', error));\n });\n };\n\n private handleOnRequiringConfirmation = (): Promise<any> => {\n if (this.props.onRequiringConfirmation) {\n return new Promise<void>((resolve, reject) => {\n void this.props.onRequiringConfirmation(resolve, reject);\n });\n }\n };\n\n public submit() {\n if (!this.isValid) {\n this.showValidation();\n return false;\n }\n\n this.balanceCheck();\n }\n\n // Giftcards override the regular payButton flow\n public payButton = props => {\n return <PayButton {...props} />;\n };\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <GiftcardComponent\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n handleKeyPress={this.handleKeyPress}\n showPayButton={this.props.showPayButton}\n onChange={this.setState}\n onBalanceCheck={this.onBalanceCheck}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default GiftcardElement;\n"],"names":["GiftcardElement","UIElement","formatProps","props","configuration","formatData","paymentMethod","type","this","constructor","brand","encryptedCardNumber","state","data","encryptedSecurityCode","isValid","icon","brandsConfiguration","resources","getImage","displayName","name","balanceCheck","onBalanceCheck","submit","showValidation","render","h","CoreProvider","i18n","loadingContext","GiftcardComponent","ref","componentRef","handleKeyPress","showPayButton","onChange","setState","onSubmit","payButton","_define_property","handleBalanceCheck","Promise","resolve","reject","session","checkBalance","onOrderRequest","createOrder","super","setStatus","then","balance","transactionLimit","Error","currency","amount","value","setBalance","order","orderData","pspReference","handleOnRequiringConfirmation","catch","error","message","onError","handleError","AdyenCheckoutError","onRequiringConfirmation","PayButton","TxVariants","giftcard","defaultProps"],"mappings":"ugBAUO,MAAMA,UAAwBC,EAOjCC,WAAAA,CAAYC,GACR,MAAO,IACAA,GAAOC,iBACPD,EAEX,CAEAE,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKC,YAAmB,KAC9BC,MAAOF,KAAKL,MAAMO,MAClBC,oBAAqBH,KAAKI,MAAMC,MAAMF,oBACtCG,sBAAuBN,KAAKI,MAAMC,MAAMC,uBAGpD,CAEA,WAAIC,GACA,QAASP,KAAKI,MAAMG,OACxB,CAEA,QAAIC,GACA,OAAOR,KAAKL,MAAMc,oBAAoBT,KAAKL,MAAMO,QAAQM,MAAQR,KAAKL,MAAMa,MAAQR,KAAKU,UAAUC,UAAfX,CAA0BA,KAAKL,MAAMO,MAC7H,CAEA,eAAIU,GACA,OAAOZ,KAAKL,MAAMc,oBAAoBT,KAAKL,MAAMO,QAAQW,MAAQb,KAAKL,MAAMkB,IAChF,CAyBOC,YAAAA,GACH,OAAOd,KAAKe,gBAChB,CA4COC,MAAAA,GACH,IAAKhB,KAAKO,QAEN,OADAP,KAAKiB,kBACE,EAGXjB,KAAKc,cACT,CAOAI,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaC,KAAMrB,KAAKL,MAAM0B,KAAMC,eAAgBtB,KAAKL,MAAM2B,eAAgBZ,UAAWV,KAAKU,WAC5FS,EAACI,EAAAA,CACGC,IAAKA,IACDxB,KAAKyB,aAAeD,CAAAA,KAEpBxB,KAAKL,MACT+B,eAAgB1B,KAAK0B,eACrBC,cAAe3B,KAAKL,MAAMgC,cAC1BC,SAAU5B,KAAK6B,SACfd,eAAgBf,KAAKe,eACrBe,SAAU9B,KAAKgB,OACfe,UAAW/B,KAAK+B,YAIhC,+BApGAC,EAAAhC,KAAQiC,sBAAsB5B,GACtBL,KAAKL,MAAMoB,eACJ,IAAImB,SAAQ,CAACC,EAASC,KACpBpC,KAAKL,MAAMoB,eAAeoB,EAASC,EAAQ/B,EAAAA,IAIpDL,KAAKL,MAAM0C,QACJrC,KAAKL,MAAM0C,QAAQC,aAAajC,QAD3C,IAKJ2B,EAAAhC,KAAQuC,kBAAiBlC,GACjBL,KAAKL,MAAM4C,eACJ,IAAIL,SAAQ,CAACC,EAASC,KACpBpC,KAAKL,MAAM4C,eAAeJ,EAASC,EAAQ/B,EAAAA,IAGpDL,KAAKL,MAAM0C,QACJrC,KAAKL,MAAM0C,QAAQG,mBAD9B,IASJR,EAAAhC,KAAQe,kBAAiB,KAGrB,KADwBf,KAAKL,MAAM0C,SAAWrC,KAAKL,MAAMoB,gBACnC,OAAO0B,MAAMzB,SAEnChB,KAAK0C,UAAU,WAEf1C,KAAKiC,mBAAmBjC,KAAKH,cACxB8C,MAAK,EAAGC,UAASC,mBAAmB,CAAA,MACjC,IAAKD,EAAS,MAAM,IAAIE,MAAM,cAC9B,GAAIF,GAASG,WAAa/C,KAAKL,MAAMqD,QAAQD,SAAU,MAAM,IAAID,MAAM,kBACvE,GAAIF,GAASK,OAAS,EAAG,MAAM,IAAIH,MAAM,cAIzC,OAFA9C,KAAKyB,aAAayB,WAAW,CAAEN,UAASC,qBAEpC7C,KAAKL,MAAMqD,OAAOC,MAAQL,EAAQK,OAASjD,KAAKL,MAAMqD,OAAOC,MAAQJ,EAAiBI,MAClFjD,KAAKL,MAAMwD,MACJV,MAAMzB,SAGVhB,KAAKuC,eAAevC,KAAKK,MAAMsC,MAAMQ,IACxCnD,KAAK6B,SAAS,CAAEsB,MAAO,CAAEC,UAAWD,EAAMC,UAAWC,aAAcF,EAAME,gBAClEZ,MAAMzB,YAGVhB,KAAKsD,gCAAgCX,MAAK,IAAMF,MAAMzB,UACjE,IAEHuC,OAAMC,IACHxD,KAAK0C,UAAUc,GAAOC,SAAW,SAC7BzD,KAAKL,MAAM+D,SAAS1D,KAAK2D,YAAY,IAAIC,EAAmB,QAASJ,GAAAA,GAC7E,IAGRxB,EAAAhC,KAAQsD,iCAAgC,KACpC,GAAItD,KAAKL,MAAMkE,wBACX,OAAO,IAAI3B,SAAc,CAACC,EAASC,KAC1BpC,KAAKL,MAAMkE,wBAAwB1B,EAASC,EAAAA,GAEzD,IAaJJ,EAAAhC,KAAO+B,aAAYpC,GACRwB,EAAC2C,EAAcnE,MApH1BqC,EADSxC,EACKO,OAAOgE,EAAWC,UAEhChC,EAHSxC,EAGQyE,eAAe,CAC5BxD,oBAAqB,CAAC"}
1
+ {"version":3,"file":"Giftcard.js","sources":["../../../../src/components/Giftcard/Giftcard.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GiftcardComponent from './components/GiftcardComponent';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport PayButton from '../internal/PayButton';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { PaymentAmount } from '../../types/global-types';\nimport { GiftCardElementData, GiftCardConfiguration, balanceCheckResponseType } from './types';\nimport { TxVariants } from '../tx-variants';\n\nexport class GiftcardElement extends UIElement<GiftCardConfiguration> {\n public static type = TxVariants.giftcard;\n\n protected static defaultProps = {\n brandsConfiguration: {}\n };\n\n formatProps(props) {\n return {\n ...props?.configuration,\n ...props\n };\n }\n\n formatData(): GiftCardElementData {\n return {\n paymentMethod: {\n type: this.constructor['type'],\n brand: this.props.brand,\n encryptedCardNumber: this.state.data?.encryptedCardNumber,\n encryptedSecurityCode: this.state.data?.encryptedSecurityCode\n }\n };\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.brandsConfiguration[this.props.brand]?.icon || this.props.icon || this.resources.getImage()(this.props.brand);\n }\n\n get displayName() {\n return this.props.brandsConfiguration[this.props.brand]?.name || this.props.name;\n }\n\n private handleBalanceCheck = (data: GiftCardElementData): Promise<balanceCheckResponseType> => {\n if (this.props.onBalanceCheck) {\n return new Promise((resolve, reject) => {\n void this.props.onBalanceCheck(resolve, reject, data);\n });\n }\n\n if (this.props.session) {\n return this.props.session.checkBalance(data);\n }\n };\n\n private onOrderRequest = data => {\n if (this.props.onOrderRequest)\n return new Promise((resolve, reject) => {\n void this.props.onOrderRequest(resolve, reject, data);\n });\n\n if (this.props.session) {\n return this.props.session.createOrder();\n }\n };\n\n public balanceCheck() {\n return this.onBalanceCheck();\n }\n\n private onBalanceCheck = (): void => {\n // skip balance check if no onBalanceCheck event has been defined\n const hasBalanceCheck = this.props.session || this.props.onBalanceCheck;\n if (!hasBalanceCheck) return super.submit();\n\n this.setStatus('loading');\n\n this.handleBalanceCheck(this.formatData())\n .then(({ balance, transactionLimit = {} as PaymentAmount }) => {\n if (!balance) throw new Error('card-error'); // card doesn't exist\n if (balance?.currency !== this.props.amount?.currency) throw new Error('currency-error');\n if (balance?.value <= 0) throw new Error('no-balance');\n\n this.componentRef.setBalance({ balance, transactionLimit });\n\n if (this.props.amount.value > balance.value || this.props.amount.value > transactionLimit.value) {\n if (this.props.order) {\n return super.submit();\n }\n\n return this.onOrderRequest(this.data).then((order: { orderData: string; pspReference: string }) => {\n this.setState({ order: { orderData: order.orderData, pspReference: order.pspReference } });\n return super.submit();\n });\n } else {\n return this.handleOnRequiringConfirmation().then(() => super.submit());\n }\n })\n .catch(error => {\n this.setStatus(error?.message || 'error');\n if (this.props.onError) this.handleError(new AdyenCheckoutError('ERROR', error));\n });\n };\n\n private handleOnRequiringConfirmation = (): Promise<any> => {\n if (this.props.onRequiringConfirmation) {\n return new Promise<void>((resolve, reject) => {\n void this.props.onRequiringConfirmation(resolve, reject);\n });\n }\n };\n\n public submit() {\n if (!this.isValid) {\n this.showValidation();\n return false;\n }\n\n this.balanceCheck();\n }\n\n // Giftcards override the regular payButton flow\n public payButton = props => {\n return <PayButton {...props} />;\n };\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <GiftcardComponent\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n handleKeyPress={this.handleKeyPress}\n showPayButton={this.props.showPayButton}\n onChange={this.setState}\n onBalanceCheck={this.onBalanceCheck}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default GiftcardElement;\n"],"names":["GiftcardElement","UIElement","formatProps","props","configuration","formatData","paymentMethod","type","this","constructor","brand","encryptedCardNumber","state","data","encryptedSecurityCode","isValid","icon","brandsConfiguration","resources","getImage","displayName","name","balanceCheck","onBalanceCheck","submit","showValidation","render","h","CoreProvider","i18n","loadingContext","GiftcardComponent","ref","componentRef","handleKeyPress","showPayButton","onChange","setState","onSubmit","payButton","super","args","_define_property","handleBalanceCheck","Promise","resolve","reject","session","checkBalance","onOrderRequest","createOrder","setStatus","then","balance","transactionLimit","Error","currency","amount","value","setBalance","order","orderData","pspReference","handleOnRequiringConfirmation","catch","error","message","onError","handleError","AdyenCheckoutError","onRequiringConfirmation","PayButton","TxVariants","giftcard","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GiftcardComponent.js","sources":["../../../../../src/components/Giftcard/components/GiftcardComponent.tsx"],"sourcesContent":["import { Component, FunctionComponent, h } from 'preact';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport Alert from '../../internal/Alert';\nimport GiftcardResult from './GiftcardResult';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\n\ninterface GiftcardComponentProps {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n onSubmit: (event) => void;\n onBalanceCheck: (event) => void;\n\n amount?: PaymentAmount;\n showPayButton: boolean;\n payButton: (config) => any;\n\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyPress?: (o: KeyboardEvent) => void;\n}\n\nclass Giftcard extends Component<GiftcardComponentProps> {\n public state = {\n status: 'ready',\n data: {},\n balance: null,\n transactionLimit: null,\n focusedElement: false,\n isValid: false\n };\n\n public static defaultProps = {\n pinRequired: true,\n expiryDateRequired: false,\n onChange: () => {},\n onFocus: () => {},\n onBlur: () => {},\n fieldsLayoutComponent: GiftCardFields\n };\n\n public sfp;\n\n public onChange = sfpState => {\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\n };\n\n public showValidation = () => {\n this.sfp.showValidation();\n };\n\n setStatus(status) {\n this.setState({ status });\n }\n\n public handleFocus = e => {\n this.setState({ focusedElement: e.currentFocusObject });\n\n const isFocused = e.focus === true;\n if (isFocused) {\n this.props.onFocus(e);\n } else {\n this.props.onBlur(e);\n }\n };\n\n public setBalance = ({ balance, transactionLimit }) => {\n this.setState({ balance, transactionLimit });\n };\n\n render(props, { focusedElement, balance, transactionLimit }) {\n const { i18n } = useCoreContext();\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= this.props.amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return <GiftcardResult balance={balance} transactionLimit={transactionLimit} onSubmit={props.onSubmit} {...props} />;\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n switch (this.state.status) {\n case 'no-balance':\n return i18n.get('error.giftcard.no-balance');\n case 'card-error':\n return i18n.get('error.giftcard.card-error');\n case 'currency-error':\n return i18n.get('error.giftcard.currency-error');\n default:\n return null;\n }\n };\n\n return (\n <div className=\"adyen-checkout__giftcard\">\n {this.state.status === 'error' && <Alert icon={'cross'}>{i18n.get('error.message.unknown')}</Alert>}\n\n <SecuredFieldsProvider\n {...this.props}\n ref={ref => {\n this.sfp = ref;\n }}\n onChange={this.onChange}\n onFocus={this.handleFocus}\n type={GIFT_CARD}\n render={({ setRootNode, setFocusOn }, sfpState) =>\n this.props.fieldsLayoutComponent({\n i18n: i18n,\n pinRequired: this.props.pinRequired,\n focusedElement: focusedElement,\n getCardErrorMessage: getCardErrorMessage,\n setRootNode: setRootNode,\n setFocusOn: setFocusOn,\n sfpState: sfpState\n })\n }\n />\n\n {this.props.showPayButton &&\n this.props.payButton({\n status: this.state.status,\n onClick: this.props.onSubmit,\n label: i18n.get('applyGiftcard')\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","setStatus","status","this","setState","render","props","focusedElement","balance","transactionLimit","i18n","useCoreContext","transactionAmount","value","hasEnoughBalance","amount","h","GiftcardResult","onSubmit","getCardErrorMessage","sfpState","errors","encryptedCardNumber","get","state","div","className","Alert","icon","SecuredFieldsProvider","ref","sfp","onChange","onFocus","handleFocus","type","GIFT_CARD","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","showPayButton","payButton","onClick","label","_define_property","data","isValid","isSfpValid","showValidation","e","currentFocusObject","focus","onBlur","setBalance","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"8iBA4BA,MAAMA,UAAiBC,EAgCnBC,SAAAA,CAAUC,GACNC,KAAKC,SAAS,CAAEF,UACpB,CAiBAG,MAAAA,CAAOC,GAAOC,eAAEA,EAAcC,QAAEA,EAAOC,iBAAEA,IACrC,MAAMC,KAAEA,GAASC,IAEXC,EAAoBH,GAAkBI,MAAQL,GAASK,MAAQJ,EAAmBD,EAClFM,EAAmBF,GAAmBC,OAASV,KAAKG,MAAMS,QAAQF,MAExE,GAAID,GAAqBE,EACrB,OAAOE,EAACC,EAAAA,CAAeT,QAASA,EAASC,iBAAkBA,EAAkBS,SAAUZ,EAAMY,YAAcZ,IAG/G,MAAMa,EAAsBC,IACxB,GAAIA,EAASC,OAAOC,oBAAqB,OAAOZ,EAAKa,IAAIH,EAASC,OAAOC,qBAEzE,OAAQnB,KAAKqB,MAAMtB,QACf,IAAK,aACD,OAAOQ,EAAKa,IAAI,6BACpB,IAAK,aACD,OAAOb,EAAKa,IAAI,6BACpB,IAAK,iBACD,OAAOb,EAAKa,IAAI,iCACpB,QACI,OAAO,KACf,EAGJ,OACIP,EAACS,MAAAA,CAAIC,UAAU,4BACY,UAAtBvB,KAAKqB,MAAMtB,QAAsBc,EAACW,EAAAA,CAAMC,KAAM,SAAUlB,EAAKa,IAAI,0BAElEP,EAACa,EAAAA,IACO1B,KAAKG,MACTwB,IAAKA,IACD3B,KAAK4B,IAAMD,CAAAA,EAEfE,SAAU7B,KAAK6B,SACfC,QAAS9B,KAAK+B,YACdC,KAAMC,EACN/B,OAAQ,EAAGgC,cAAaC,cAAclB,IAClCjB,KAAKG,MAAMiC,sBAAsB,CAC7B7B,KAAMA,EACN8B,YAAarC,KAAKG,MAAMkC,YACxBjC,eAAgBA,EAChBY,oBAAqBA,EACrBkB,YAAaA,EACbC,WAAYA,EACZlB,SAAUA,MAKrBjB,KAAKG,MAAMmC,eACRtC,KAAKG,MAAMoC,UAAU,CACjBxC,OAAQC,KAAKqB,MAAMtB,OACnByC,QAASxC,KAAKG,MAAMY,SACpB0B,MAAOlC,EAAKa,IAAI,mBAIpC,+BA5GAsB,EAAA1C,KAAOqB,QAAQ,CACXtB,OAAQ,QACR4C,KAAM,CAAC,EACPtC,QAAS,KACTC,iBAAkB,KAClBF,gBAAgB,EAChBwC,SAAS,IAYbF,EAAA1C,KAAO4B,WAAP,GAEAc,EAAA1C,KAAO6B,YAAWZ,IACdjB,KAAKG,MAAM0B,SAAS,CAChBc,KAAM1B,EAAS0B,KACfC,QAAS3B,EAAS4B,YACtB,IAGJH,EAAA1C,KAAO8C,kBAAiB,KACpB9C,KAAK4B,IAAIkB,gBAAc,IAO3BJ,EAAA1C,KAAO+B,eAAcgB,IACjB/C,KAAKC,SAAS,CAAEG,eAAgB2C,EAAEC,sBAEJ,IAAZD,EAAEE,MAEhBjD,KAAKG,MAAM2B,QAAQiB,GAEnB/C,KAAKG,MAAM+C,OAAOH,EACtB,IAGJL,EAAA1C,KAAOmD,cAAa,EAAG9C,UAASC,uBAC5BN,KAAKC,SAAS,CAAEI,UAASC,oBAAiB,KAtC9CoC,EAVE9C,EAUYwD,eAAe,CACzBf,aAAa,EACbgB,oBAAoB,EACpBxB,SAAU,OACVC,QAAS,OACToB,OAAQ,OACRd,sBAAuBkB"}
1
+ {"version":3,"file":"GiftcardComponent.js","sources":["../../../../../src/components/Giftcard/components/GiftcardComponent.tsx"],"sourcesContent":["import { Component, FunctionComponent, h } from 'preact';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport Alert from '../../internal/Alert';\nimport GiftcardResult from './GiftcardResult';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\n\ninterface GiftcardComponentProps {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n onSubmit: (event) => void;\n onBalanceCheck: (event) => void;\n\n amount?: PaymentAmount;\n showPayButton: boolean;\n payButton: (config) => any;\n\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyPress?: (o: KeyboardEvent) => void;\n}\n\nclass Giftcard extends Component<GiftcardComponentProps> {\n public state = {\n status: 'ready',\n data: {},\n balance: null,\n transactionLimit: null,\n focusedElement: false,\n isValid: false\n };\n\n public static defaultProps = {\n pinRequired: true,\n expiryDateRequired: false,\n onChange: () => {},\n onFocus: () => {},\n onBlur: () => {},\n fieldsLayoutComponent: GiftCardFields\n };\n\n public sfp;\n\n public onChange = sfpState => {\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\n };\n\n public showValidation = () => {\n this.sfp.showValidation();\n };\n\n setStatus(status) {\n this.setState({ status });\n }\n\n public handleFocus = e => {\n this.setState({ focusedElement: e.currentFocusObject });\n\n const isFocused = e.focus === true;\n if (isFocused) {\n this.props.onFocus(e);\n } else {\n this.props.onBlur(e);\n }\n };\n\n public setBalance = ({ balance, transactionLimit }) => {\n this.setState({ balance, transactionLimit });\n };\n\n render(props, { focusedElement, balance, transactionLimit }) {\n const { i18n } = useCoreContext();\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= this.props.amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return <GiftcardResult balance={balance} transactionLimit={transactionLimit} onSubmit={props.onSubmit} {...props} />;\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n switch (this.state.status) {\n case 'no-balance':\n return i18n.get('error.giftcard.no-balance');\n case 'card-error':\n return i18n.get('error.giftcard.card-error');\n case 'currency-error':\n return i18n.get('error.giftcard.currency-error');\n default:\n return null;\n }\n };\n\n return (\n <div className=\"adyen-checkout__giftcard\">\n {this.state.status === 'error' && <Alert icon={'cross'}>{i18n.get('error.message.unknown')}</Alert>}\n\n <SecuredFieldsProvider\n {...this.props}\n ref={ref => {\n this.sfp = ref;\n }}\n onChange={this.onChange}\n onFocus={this.handleFocus}\n type={GIFT_CARD}\n render={({ setRootNode, setFocusOn }, sfpState) =>\n this.props.fieldsLayoutComponent({\n i18n: i18n,\n pinRequired: this.props.pinRequired,\n focusedElement: focusedElement,\n getCardErrorMessage: getCardErrorMessage,\n setRootNode: setRootNode,\n setFocusOn: setFocusOn,\n sfpState: sfpState\n })\n }\n />\n\n {this.props.showPayButton &&\n this.props.payButton({\n status: this.state.status,\n onClick: this.props.onSubmit,\n label: i18n.get('applyGiftcard')\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","setStatus","status","this","setState","render","props","focusedElement","balance","transactionLimit","i18n","useCoreContext","transactionAmount","value","hasEnoughBalance","amount","h","GiftcardResult","onSubmit","getCardErrorMessage","sfpState","errors","encryptedCardNumber","get","state","div","className","Alert","icon","SecuredFieldsProvider","ref","sfp","onChange","onFocus","handleFocus","type","GIFT_CARD","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","showPayButton","payButton","onClick","label","super","args","_define_property","data","isValid","isSfpValid","showValidation","e","currentFocusObject","focus","onBlur","setBalance","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"8iBA4BA,MAAMA,UAAiBC,EAgCnBC,SAAAA,CAAUC,GACNC,KAAKC,SAAS,CAAEF,UACpB,CAiBAG,MAAAA,CAAOC,GAAOC,eAAEA,EAAcC,QAAEA,EAAOC,iBAAEA,IACrC,MAAMC,KAAEA,GAASC,IAEXC,EAAoBH,GAAkBI,MAAQL,GAASK,MAAQJ,EAAmBD,EAClFM,EAAmBF,GAAmBC,OAASV,KAAKG,MAAMS,QAAQF,MAExE,GAAID,GAAqBE,EACrB,OAAOE,EAACC,EAAAA,CAAeT,QAASA,EAASC,iBAAkBA,EAAkBS,SAAUZ,EAAMY,YAAcZ,IAG/G,MAAMa,EAAsBC,IACxB,GAAIA,EAASC,OAAOC,oBAAqB,OAAOZ,EAAKa,IAAIH,EAASC,OAAOC,qBAEzE,OAAQnB,KAAKqB,MAAMtB,QACf,IAAK,aACD,OAAOQ,EAAKa,IAAI,6BACpB,IAAK,aACD,OAAOb,EAAKa,IAAI,6BACpB,IAAK,iBACD,OAAOb,EAAKa,IAAI,iCACpB,QACI,OAAO,KACf,EAGJ,OACIP,EAACS,MAAAA,CAAIC,UAAU,4BACY,UAAtBvB,KAAKqB,MAAMtB,QAAsBc,EAACW,EAAAA,CAAMC,KAAM,SAAUlB,EAAKa,IAAI,0BAElEP,EAACa,EAAAA,IACO1B,KAAKG,MACTwB,IAAKA,IACD3B,KAAK4B,IAAMD,CAAAA,EAEfE,SAAU7B,KAAK6B,SACfC,QAAS9B,KAAK+B,YACdC,KAAMC,EACN/B,OAAQ,EAAGgC,cAAaC,cAAclB,IAClCjB,KAAKG,MAAMiC,sBAAsB,CAC7B7B,KAAMA,EACN8B,YAAarC,KAAKG,MAAMkC,YACxBjC,eAAgBA,EAChBY,oBAAqBA,EACrBkB,YAAaA,EACbC,WAAYA,EACZlB,SAAUA,MAKrBjB,KAAKG,MAAMmC,eACRtC,KAAKG,MAAMoC,UAAU,CACjBxC,OAAQC,KAAKqB,MAAMtB,OACnByC,QAASxC,KAAKG,MAAMY,SACpB0B,MAAOlC,EAAKa,IAAI,mBAIpC,mBA5GAsB,SAAAC,GAAAC,EAAA5C,KAAOqB,QAAQ,CACXtB,OAAQ,QACR8C,KAAM,CAAC,EACPxC,QAAS,KACTC,iBAAkB,KAClBF,gBAAgB,EAChB0C,SAAS,IAYbF,OAAOhB,WAAP,GAEAgB,EAAA5C,KAAO6B,YAAWZ,IACdjB,KAAKG,MAAM0B,SAAS,CAChBgB,KAAM5B,EAAS4B,KACfC,QAAS7B,EAAS8B,YACtB,IAGJH,OAAOI,kBAAiB,KACpBhD,KAAK4B,IAAIoB,gBAAc,IAO3BJ,EAAA5C,KAAO+B,eAAckB,IACjBjD,KAAKC,SAAS,CAAEG,eAAgB6C,EAAEC,sBAEJ,IAAZD,EAAEE,MAEhBnD,KAAKG,MAAM2B,QAAQmB,GAEnBjD,KAAKG,MAAMiD,OAAOH,EACtB,IAGJL,OAAOS,cAAa,EAAGhD,UAASC,uBAC5BN,KAAKC,SAAS,CAAEI,UAASC,oBAAiB,KAtC9CsC,EAVEhD,EAUY0D,eAAe,CACzBjB,aAAa,EACbkB,oBAAoB,EACpB1B,SAAU,OACVC,QAAS,OACTsB,OAAQ,OACRhB,sBAAuBoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { SendAnalyticsObject } from '../../core/Analytics/types';\n\nimport type { AddressData, BrowserInfo, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static type = TxVariants.googlepay;\n public static txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n protected override formatProps(props): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n return {\n ...props,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n public override submit = () => {\n // Analytics\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n\n new Promise((resolve, reject) => this.props.onClick(resolve, reject))\n .then(() => this.googlePay.initiatePayment(this.props, this.core.options.countryCode))\n .catch((error: google.payments.api.PaymentsError) => {\n if (error.statusCode === 'CANCELED') {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError('CANCEL', error.toString(), { cause: error }));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError('ERROR', error.toString(), { cause: error }));\n }\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Validation\n */\n get isValid(): boolean {\n return !!this.state.googlePayToken;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n render() {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["GooglePay","UIElement","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","this","state","isExpress","paymentMethod","type","subtype","browserInfo","origin","window","location","submitAnalytics","analyticsObj","super","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","catch","error","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","AdyenCheckoutError","paymentMethodPresent","collectBrowserInfo","icon","resources","getImage","render","showPayButton","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","googlePay","onClick","submit","constructor","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","initiatePayment","core","options","countryCode","statusCode","handleError","toString","cause","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","GooglePayService","environment","TxVariants","googlepay","txVariants","paywithgoogle","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { SendAnalyticsObject } from '../../core/Analytics/types';\n\nimport type { AddressData, BrowserInfo, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static type = TxVariants.googlepay;\n public static txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n protected override formatProps(props): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n return {\n ...props,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n public override submit = () => {\n // Analytics\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n\n new Promise((resolve, reject) => this.props.onClick(resolve, reject))\n .then(() => this.googlePay.initiatePayment(this.props, this.core.options.countryCode))\n .catch((error: google.payments.api.PaymentsError) => {\n if (error.statusCode === 'CANCELED') {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError('CANCEL', error.toString(), { cause: error }));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError('ERROR', error.toString(), { cause: error }));\n }\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Validation\n */\n get isValid(): boolean {\n return !!this.state.googlePayToken;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n render() {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["GooglePay","UIElement","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","this","state","isExpress","paymentMethod","type","subtype","browserInfo","origin","window","location","submitAnalytics","analyticsObj","super","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","catch","error","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","AdyenCheckoutError","paymentMethodPresent","collectBrowserInfo","icon","resources","getImage","render","showPayButton","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","googlePay","onClick","submit","constructor","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","initiatePayment","core","options","countryCode","statusCode","handleError","toString","cause","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","GooglePayService","environment","TxVariants","googlepay","txVariants","paywithgoogle","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import{CoreProvider as n}from"../../core/Context/CoreProvider.js";import o from"../internal/PayButton/PayButton.js";import{KlarnaContainer as i}from"./components/KlarnaContainer/KlarnaContainer.js";import{TxVariants as r}from"../tx-variants.js";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class s extends e{get isValid(){return!0}formatData(){return{paymentMethod:{type:this.type,...this.props.useKlarnaWidget?{subtype:"sdk"}:{}}}}updateWithAction(t){if(t.paymentMethodType!==this.type)throw new Error("Invalid Action");this.componentRef.setAction(t)}onLoaded(){this.setElementStatus("ready")}render(){return t(n,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{...this.props,ref:t=>{this.componentRef=t},displayName:this.displayName,onComplete:t=>this.handleAdditionalDetails(t),onError:this.props.onError,payButton:this.payButton,onLoaded:this.onLoaded,onActionHandled:this.onActionHandled}))}constructor(e,n){super(e,n),a(this,"payButton",(e=>t(o,{amount:this.props.amount,onClick:this.submit,...e}))),this.onComplete=this.onComplete.bind(this),this.updateWithAction=this.updateWithAction.bind(this),this.submit=this.submit.bind(this),this.onLoaded=this.onLoaded.bind(this)}}a(s,"type",r.klarna),a(s,"txVariants",[r.klarna,r.klarna_account,r.klarna_paynow,r.klarna_b2b]),a(s,"defaultProps",{useKlarnaWidget:!1});export{s as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import{CoreProvider as o}from"../../core/Context/CoreProvider.js";import n from"../internal/PayButton/PayButton.js";import{KlarnaContainer as i}from"./components/KlarnaContainer/KlarnaContainer.js";import{TxVariants as s}from"../tx-variants.js";function a(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class r extends e{get isValid(){return!0}formatData(){return{paymentMethod:{type:this.type,...this.props.useKlarnaWidget?{subtype:"sdk"}:{}}}}updateWithAction(t){if(t.paymentMethodType!==this.type)throw new Error("Invalid Action");this.componentRef.setAction(t)}onLoaded(){this.setElementStatus("ready")}activate(){this.componentRef.reinitializeWidget()}onComplete(t){this.handleAdditionalDetails(t)}render(){return t(o,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{...this.props,setComponentRef:this.setComponentRef,displayName:this.displayName,onComplete:this.onComplete,onError:this.props.onError,payButton:this.payButton,onLoaded:this.onLoaded,showPayButton:this.props.showPayButton,onActionHandled:this.onActionHandled,type:this.props.type}))}constructor(e,o){super(e,o),a(this,"componentRef",void 0),a(this,"payButton",(e=>t(n,{amount:this.props.amount,onClick:this.submit,...e}))),this.onComplete=this.onComplete.bind(this),this.updateWithAction=this.updateWithAction.bind(this),this.submit=this.submit.bind(this),this.onLoaded=this.onLoaded.bind(this)}}a(r,"type",s.klarna),a(r,"txVariants",[s.klarna,s.klarna_account,s.klarna_paynow,s.klarna_b2b]),a(r,"defaultProps",{useKlarnaWidget:!1});export{r as default};
2
2
  //# sourceMappingURL=KlarnaPayments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaPayments.js","sources":["../../../../src/components/Klarna/KlarnaPayments.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport { KlarnConfiguration } from './types';\nimport PayButton from '../internal/PayButton';\nimport { KlarnaContainer } from './components/KlarnaContainer/KlarnaContainer';\nimport { PaymentAction } from '../../types/global-types';\nimport { TxVariants } from '../tx-variants';\nimport type { ICore } from '../../core/types';\n\nclass KlarnaPayments extends UIElement<KlarnConfiguration> {\n public static type = TxVariants.klarna;\n public static txVariants = [TxVariants.klarna, TxVariants.klarna_account, TxVariants.klarna_paynow, TxVariants.klarna_b2b];\n\n protected static defaultProps = {\n useKlarnaWidget: false\n };\n\n constructor(checkout: ICore, props?: KlarnConfiguration) {\n super(checkout, props);\n\n this.onComplete = this.onComplete.bind(this);\n this.updateWithAction = this.updateWithAction.bind(this);\n this.submit = this.submit.bind(this);\n this.onLoaded = this.onLoaded.bind(this);\n }\n get isValid() {\n return true;\n }\n\n protected formatData() {\n return {\n paymentMethod: {\n type: this.type,\n ...(this.props.useKlarnaWidget ? { subtype: 'sdk' } : {})\n }\n };\n }\n\n public payButton = props => {\n return <PayButton amount={this.props.amount} onClick={this.submit} {...props} />;\n };\n\n updateWithAction(action: PaymentAction): void {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n this.componentRef.setAction(action);\n }\n\n onLoaded() {\n // When action/widget is loaded, set the 'drop-in' back to ready\n this.setElementStatus('ready');\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <KlarnaContainer\n {...this.props}\n ref={ref => {\n this.componentRef = ref;\n }}\n displayName={this.displayName}\n onComplete={state => this.handleAdditionalDetails(state)}\n onError={this.props.onError}\n payButton={this.payButton}\n onLoaded={this.onLoaded}\n onActionHandled={this.onActionHandled}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default KlarnaPayments;\n"],"names":["KlarnaPayments","UIElement","isValid","formatData","paymentMethod","type","this","props","useKlarnaWidget","subtype","updateWithAction","action","paymentMethodType","Error","componentRef","setAction","onLoaded","setElementStatus","render","h","CoreProvider","i18n","loadingContext","resources","KlarnaContainer","ref","displayName","onComplete","state","handleAdditionalDetails","onError","payButton","onActionHandled","constructor","checkout","super","_define_property","PayButton","amount","onClick","submit","bind","TxVariants","klarna","txVariants","klarna_account","klarna_paynow","klarna_b2b","defaultProps"],"mappings":"ifAUA,MAAMA,UAAuBC,EAgBzB,WAAIC,GACA,OAAO,CACX,CAEUC,UAAAA,GACN,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKD,QACPC,KAAKC,MAAMC,gBAAkB,CAAEC,QAAS,OAAU,CAAE,GAGpE,CAMAC,gBAAAA,CAAiBC,GACb,GAAIA,EAAOC,oBAAsBN,KAAKD,KAAM,MAAM,IAAIQ,MAAM,kBAC5DP,KAAKQ,aAAaC,UAAUJ,EAChC,CAEAK,QAAAA,GAEIV,KAAKW,iBAAiB,QAC1B,CAEAC,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaC,KAAMf,KAAKC,MAAMc,KAAMC,eAAgBhB,KAAKC,MAAMe,eAAgBC,UAAWjB,KAAKiB,WAC5FJ,EAACK,EAAAA,IACOlB,KAAKC,MACTkB,IAAKA,IACDnB,KAAKQ,aAAeW,CAAAA,EAExBC,YAAapB,KAAKoB,YAClBC,WAAYC,GAAStB,KAAKuB,wBAAwBD,GAClDE,QAASxB,KAAKC,MAAMuB,QACpBC,UAAWzB,KAAKyB,UAChBf,SAAUV,KAAKU,SACfgB,gBAAiB1B,KAAK0B,kBAItC,CApDAC,WAAAA,CAAYC,EAAiB3B,GACzB4B,MAAMD,EAAU3B,GAoBpB6B,EAAA9B,KAAOyB,aAAYxB,GACRY,EAACkB,EAAAA,CAAUC,OAAQhC,KAAKC,MAAM+B,OAAQC,QAASjC,KAAKkC,UAAYjC,MAnBvED,KAAKqB,WAAarB,KAAKqB,WAAWc,KAAKnC,MACvCA,KAAKI,iBAAmBJ,KAAKI,iBAAiB+B,KAAKnC,MACnDA,KAAKkC,OAASlC,KAAKkC,OAAOC,KAAKnC,MAC/BA,KAAKU,SAAWV,KAAKU,SAASyB,KAAKnC,KACvC,EAdA8B,EADEpC,EACYK,OAAOqC,EAAWC,QAChCP,EAFEpC,EAEY4C,aAAa,CAACF,EAAWC,OAAQD,EAAWG,eAAgBH,EAAWI,cAAeJ,EAAWK,aAE/GX,EAJEpC,EAIegD,eAAe,CAC5BxC,iBAAiB"}
1
+ {"version":3,"file":"KlarnaPayments.js","sources":["../../../../src/components/Klarna/KlarnaPayments.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport PayButton from '../internal/PayButton';\nimport { KlarnaContainer } from './components/KlarnaContainer/KlarnaContainer';\nimport { TxVariants } from '../tx-variants';\nimport type { KlarnaAction, KlarnaAdditionalDetailsData, KlarnaComponentRef, KlarnaConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass KlarnaPayments extends UIElement<KlarnaConfiguration> {\n public static type = TxVariants.klarna;\n public static txVariants = [TxVariants.klarna, TxVariants.klarna_account, TxVariants.klarna_paynow, TxVariants.klarna_b2b];\n\n public componentRef: KlarnaComponentRef;\n\n protected static defaultProps = {\n useKlarnaWidget: false\n };\n\n constructor(checkout: ICore, props?: KlarnaConfiguration) {\n super(checkout, props);\n\n this.onComplete = this.onComplete.bind(this);\n this.updateWithAction = this.updateWithAction.bind(this);\n this.submit = this.submit.bind(this);\n this.onLoaded = this.onLoaded.bind(this);\n }\n get isValid() {\n return true;\n }\n\n protected formatData() {\n return {\n paymentMethod: {\n type: this.type,\n ...(this.props.useKlarnaWidget ? { subtype: 'sdk' } : {})\n }\n };\n }\n\n public payButton = props => {\n return <PayButton amount={this.props.amount} onClick={this.submit} {...props} />;\n };\n\n updateWithAction(action: KlarnaAction): void {\n if (action.paymentMethodType !== this.type) throw new Error('Invalid Action');\n this.componentRef.setAction(action);\n }\n\n private onLoaded() {\n // When action/widget is loaded, set the 'drop-in' back to ready\n this.setElementStatus('ready');\n }\n\n public override activate() {\n this.componentRef.reinitializeWidget();\n }\n\n protected onComplete(details: KlarnaAdditionalDetailsData): void {\n this.handleAdditionalDetails(details);\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <KlarnaContainer\n {...this.props}\n setComponentRef={this.setComponentRef}\n displayName={this.displayName}\n onComplete={this.onComplete}\n onError={this.props.onError}\n payButton={this.payButton}\n onLoaded={this.onLoaded}\n showPayButton={this.props.showPayButton}\n onActionHandled={this.onActionHandled}\n type={this.props.type}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default KlarnaPayments;\n"],"names":["KlarnaPayments","UIElement","isValid","formatData","paymentMethod","type","this","props","useKlarnaWidget","subtype","updateWithAction","action","paymentMethodType","Error","componentRef","setAction","onLoaded","setElementStatus","activate","reinitializeWidget","onComplete","details","handleAdditionalDetails","render","h","CoreProvider","i18n","loadingContext","resources","KlarnaContainer","setComponentRef","displayName","onError","payButton","showPayButton","onActionHandled","constructor","checkout","super","_define_property","PayButton","amount","onClick","submit","bind","TxVariants","klarna","txVariants","klarna_account","klarna_paynow","klarna_b2b","defaultProps"],"mappings":"ifASA,MAAMA,UAAuBC,EAkBzB,WAAIC,GACA,OAAO,CACX,CAEUC,UAAAA,GACN,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKD,QACPC,KAAKC,MAAMC,gBAAkB,CAAEC,QAAS,OAAU,CAAE,GAGpE,CAMAC,gBAAAA,CAAiBC,GACb,GAAIA,EAAOC,oBAAsBN,KAAKD,KAAM,MAAM,IAAIQ,MAAM,kBAC5DP,KAAKQ,aAAaC,UAAUJ,EAChC,CAEQK,QAAAA,GAEJV,KAAKW,iBAAiB,QAC1B,CAEgBC,QAAAA,GACZZ,KAAKQ,aAAaK,oBACtB,CAEUC,UAAAA,CAAWC,GACjBf,KAAKgB,wBAAwBD,EACjC,CAEAE,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaC,KAAMpB,KAAKC,MAAMmB,KAAMC,eAAgBrB,KAAKC,MAAMoB,eAAgBC,UAAWtB,KAAKsB,WAC5FJ,EAACK,EAAAA,IACOvB,KAAKC,MACTuB,gBAAiBxB,KAAKwB,gBACtBC,YAAazB,KAAKyB,YAClBX,WAAYd,KAAKc,WACjBY,QAAS1B,KAAKC,MAAMyB,QACpBC,UAAW3B,KAAK2B,UAChBjB,SAAUV,KAAKU,SACfkB,cAAe5B,KAAKC,MAAM2B,cAC1BC,gBAAiB7B,KAAK6B,gBACtB9B,KAAMC,KAAKC,MAAMF,OAIjC,CA5DA+B,WAAAA,CAAYC,EAAiB9B,GACzB+B,MAAMD,EAAU9B,GAPpBgC,EAAAjC,KAAOQ,oBAAP,GA2BAyB,EAAON,KAAAA,aAAY1B,GACRiB,EAACgB,EAAAA,CAAUC,OAAQnC,KAAKC,MAAMkC,OAAQC,QAASpC,KAAKqC,UAAYpC,MAnBvED,KAAKc,WAAad,KAAKc,WAAWwB,KAAKtC,MACvCA,KAAKI,iBAAmBJ,KAAKI,iBAAiBkC,KAAKtC,MACnDA,KAAKqC,OAASrC,KAAKqC,OAAOC,KAAKtC,MAC/BA,KAAKU,SAAWV,KAAKU,SAAS4B,KAAKtC,KACvC,EAhBAiC,EADEvC,EACYK,OAAOwC,EAAWC,QAChCP,EAFEvC,EAEY+C,aAAa,CAACF,EAAWC,OAAQD,EAAWG,eAAgBH,EAAWI,cAAeJ,EAAWK,aAI/GX,EANEvC,EAMemD,eAAe,CAC5B3C,iBAAiB"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../../../external/preact/dist/preact.js";import{KlarnaWidget as a}from"../KlarnaWidget/KlarnaWidget.js";import{useState as e}from"../../../../external/preact/hooks/dist/hooks.js";function o(o){const[n,s]=e({sdkData:o.sdkData,paymentMethodType:o.paymentMethodType,paymentData:o.paymentData}),[p,d]=e("ready");return this.setAction=s,this.setStatus=d,n.sdkData?t(a,{sdkData:n.sdkData,paymentMethodType:n.paymentMethodType,paymentData:n.paymentData,payButton:o.payButton,onComplete:o.onComplete,onError:o.onError,onLoaded:()=>{o.onActionHandled?.({componentType:o.type,actionDescription:"sdk-loaded",originalAction:n}),o.onLoaded()}}):o.showPayButton?o.payButton({...o,status:p,disabled:"loading"===p,classNameModifiers:["standalone"],label:`${this.props.i18n.get("continueTo")} ${o.displayName}`}):null}export{o as KlarnaContainer};
1
+ import{createElement as t}from"../../../../external/preact/dist/preact.js";import{useState as e,useRef as a,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import{KlarnaWidget as n}from"../KlarnaWidget/KlarnaWidget.js";function i({setComponentRef:i,...s}){const[r,d]=e(null),[p,l]=e(),[m,c]=e("ready"),u=a({setAction:t=>{l(t),d((new Date).getTime())},setStatus:t=>c(t),reinitializeWidget:()=>{d((new Date).getTime())}});return o((()=>{i(u.current)}),[i]),p?.sdkData?t(n,{widgetInitializationTime:r,sdkData:p.sdkData,paymentMethodType:p.paymentMethodType,paymentData:p.paymentData,payButton:s.payButton,onComplete:s.onComplete,onError:s.onError,onLoaded:()=>{s.onActionHandled?.({componentType:s.type,actionDescription:"sdk-loaded",originalAction:p}),s.onLoaded()}}):s.showPayButton?s.payButton({...s,status:m,disabled:"loading"===m,classNameModifiers:["standalone"],label:`${this.props.i18n.get("continueTo")} ${s.displayName}`}):null}export{i as KlarnaContainer};
2
2
  //# sourceMappingURL=KlarnaContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaContainer.js","sources":["../../../../../../src/components/Klarna/components/KlarnaContainer/KlarnaContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { KlarnaWidget } from '../KlarnaWidget/KlarnaWidget';\nimport { useState } from 'preact/hooks';\n\nexport function KlarnaContainer(props) {\n const [action, setAction] = useState({\n sdkData: props.sdkData,\n paymentMethodType: props.paymentMethodType,\n paymentData: props.paymentData\n });\n const [status, setStatus] = useState('ready');\n\n this.setAction = setAction;\n this.setStatus = setStatus;\n\n if (action.sdkData) {\n return (\n <KlarnaWidget\n sdkData={action.sdkData}\n paymentMethodType={action.paymentMethodType}\n paymentData={action.paymentData}\n payButton={props.payButton}\n onComplete={props.onComplete}\n onError={props.onError}\n onLoaded={() => {\n props.onActionHandled?.({ componentType: props.type, actionDescription: 'sdk-loaded', originalAction: action });\n props.onLoaded();\n }}\n />\n );\n }\n\n if (props.showPayButton) {\n return props.payButton({\n ...props,\n status,\n disabled: status === 'loading',\n classNameModifiers: ['standalone'],\n label: `${this.props.i18n.get('continueTo')} ${props.displayName}`\n });\n }\n\n return null;\n}\n"],"names":["KlarnaContainer","props","action","setAction","useState","sdkData","paymentMethodType","paymentData","status","setStatus","this","h","KlarnaWidget","payButton","onComplete","onError","onLoaded","onActionHandled","componentType","type","actionDescription","originalAction","showPayButton","disabled","classNameModifiers","label","i18n","get","displayName"],"mappings":"qNAIO,SAASA,EAAgBC,GAC5B,MAAOC,EAAQC,GAAaC,EAAS,CACjCC,QAASJ,EAAMI,QACfC,kBAAmBL,EAAMK,kBACzBC,YAAaN,EAAMM,eAEhBC,EAAQC,GAAaL,EAAS,SAKrC,OAHAM,KAAKP,UAAYA,EACjBO,KAAKD,UAAYA,EAEbP,EAAOG,QAEHM,EAACC,EAAAA,CACGP,QAASH,EAAOG,QAChBC,kBAAmBJ,EAAOI,kBAC1BC,YAAaL,EAAOK,YACpBM,UAAWZ,EAAMY,UACjBC,WAAYb,EAAMa,WAClBC,QAASd,EAAMc,QACfC,SAAU,KACNf,EAAMgB,kBAAkB,CAAEC,cAAejB,EAAMkB,KAAMC,kBAAmB,aAAcC,eAAgBnB,IACtGD,EAAMe,UAAQ,IAM1Bf,EAAMqB,cACCrB,EAAMY,UAAU,IAChBZ,EACHO,SACAe,SAAqB,YAAXf,EACVgB,mBAAoB,CAAC,cACrBC,MAAO,GAAGf,KAAKT,MAAMyB,KAAKC,IAAI,iBAAiB1B,EAAM2B,gBAItD,IACX"}
1
+ {"version":3,"file":"KlarnaContainer.js","sources":["../../../../../../src/components/Klarna/components/KlarnaContainer/KlarnaContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { KlarnaWidget } from '../KlarnaWidget/KlarnaWidget';\nimport type { ComponentMethodsRef, PayButtonFunctionProps, UIElementStatus } from '../../../internal/UIElement/types';\nimport type { ActionHandledReturnObject } from '../../../../types/global-types';\nimport type { AdyenCheckoutError, KlarnaAction, KlarnaAdditionalDetailsData, KlarnaComponentRef } from '../../../../types';\n\ninterface KlarnaContainerProps {\n setComponentRef: (ref: ComponentMethodsRef) => void;\n displayName: string;\n showPayButton: boolean;\n type: string;\n onComplete(state: KlarnaAdditionalDetailsData): void;\n onError(error: AdyenCheckoutError): void;\n payButton(props?: PayButtonFunctionProps): h.JSX.Element;\n onLoaded(): void;\n onActionHandled(actionHandled: ActionHandledReturnObject): void;\n}\n\nexport function KlarnaContainer({ setComponentRef, ...props }: KlarnaContainerProps) {\n const [widgetInitializationTime, setWidgetInitializationTime] = useState<number>(null);\n const [action, setAction] = useState<KlarnaAction>();\n const [status, setStatus] = useState('ready');\n const klarnaRef = useRef<KlarnaComponentRef>({\n setAction: (action: KlarnaAction) => {\n setAction(action);\n setWidgetInitializationTime(new Date().getTime());\n },\n setStatus: (status: UIElementStatus) => setStatus(status),\n reinitializeWidget: () => {\n setWidgetInitializationTime(new Date().getTime());\n }\n });\n\n useEffect(() => {\n setComponentRef(klarnaRef.current);\n }, [setComponentRef]);\n\n if (action?.sdkData) {\n return (\n <KlarnaWidget\n widgetInitializationTime={widgetInitializationTime}\n sdkData={action.sdkData}\n paymentMethodType={action.paymentMethodType}\n paymentData={action.paymentData}\n payButton={props.payButton}\n onComplete={props.onComplete}\n onError={props.onError}\n onLoaded={() => {\n props.onActionHandled?.({ componentType: props.type, actionDescription: 'sdk-loaded', originalAction: action });\n props.onLoaded();\n }}\n />\n );\n }\n\n if (props.showPayButton) {\n return props.payButton({\n ...props,\n status,\n disabled: status === 'loading',\n classNameModifiers: ['standalone'],\n label: `${this.props.i18n.get('continueTo')} ${props.displayName}`\n });\n }\n\n return null;\n}\n"],"names":["KlarnaContainer","setComponentRef","props","widgetInitializationTime","setWidgetInitializationTime","useState","action","setAction","status","setStatus","klarnaRef","useRef","Date","getTime","reinitializeWidget","useEffect","current","sdkData","h","KlarnaWidget","paymentMethodType","paymentData","payButton","onComplete","onError","onLoaded","onActionHandled","componentType","type","actionDescription","originalAction","showPayButton","disabled","classNameModifiers","label","this","i18n","get","displayName"],"mappings":"gPAmBO,SAASA,GAAgBC,gBAAEA,KAAoBC,IAClD,MAAOC,EAA0BC,GAA+BC,EAAiB,OAC1EC,EAAQC,GAAaF,KACrBG,EAAQC,GAAaJ,EAAS,SAC/BK,EAAYC,EAA2B,CACzCJ,UAAYD,IACRC,EAAUD,GACVF,GAA4B,IAAIQ,MAAOC,UAAO,EAElDJ,UAAYD,GAA4BC,EAAUD,GAClDM,mBAAoB,KAChBV,GAA4B,IAAIQ,MAAOC,UAAO,IAQtD,OAJAE,GAAU,KACNd,EAAgBS,EAAUM,QAAO,GAClC,CAACf,IAEAK,GAAQW,QAEJC,EAACC,EAAAA,CACGhB,yBAA0BA,EAC1Bc,QAASX,EAAOW,QAChBG,kBAAmBd,EAAOc,kBAC1BC,YAAaf,EAAOe,YACpBC,UAAWpB,EAAMoB,UACjBC,WAAYrB,EAAMqB,WAClBC,QAAStB,EAAMsB,QACfC,SAAU,KACNvB,EAAMwB,kBAAkB,CAAEC,cAAezB,EAAM0B,KAAMC,kBAAmB,aAAcC,eAAgBxB,IACtGJ,EAAMuB,UAAQ,IAM1BvB,EAAM6B,cACC7B,EAAMoB,UAAU,IAChBpB,EACHM,SACAwB,SAAqB,YAAXxB,EACVyB,mBAAoB,CAAC,cACrBC,MAAO,GAAGC,KAAKjC,MAAMkC,KAAKC,IAAI,iBAAiBnC,EAAMoC,gBAItD,IACX"}
@@ -1,2 +1,2 @@
1
- import t from"../../../../utils/Script.js";import{useRef as a,useState as e,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import{createElement as n}from"../../../../external/preact/dist/preact.js";import{KLARNA_WIDGET_URL as r}from"../../constants.js";function s({sdkData:s,paymentMethodType:i,payButton:c,...d}){const m=a(null),[l,p]=e("ready"),y=()=>{p("error"),d.onComplete({data:{paymentData:d.paymentData,details:{}}})},u=()=>{p("loading");try{window.Klarna.Payments.authorize({payment_method_category:s.payment_method_category},(function(t){!0===t.approved&&!0===t.show_form?(p("success"),d.onComplete({data:{paymentData:d.paymentData,details:{authorization_token:t.authorization_token}}})):t.approved||!0!==t.show_form?y():(p("ready"),d.onError(t))}))}catch(t){y()}};return o((()=>{window.klarnaAsyncCallback=function(){window.Klarna.Payments.init({client_token:s.client_token}),window.Klarna.Payments.load({container:m.current,payment_method_category:s.payment_method_category},(function(t){!t.show_form||t.error?y():d.onLoaded()}))};const a=new t(r);return a.load(),()=>{a.remove()}}),[]),"error"!==l&&"success"!==l?n("div",{className:"adyen-checkout__klarna-widget"},n("div",{ref:m}),c({status:l,disabled:"loading"===l,onClick:u})):null}export{s as KlarnaWidget};
1
+ import{createElement as t}from"../../../../external/preact/dist/preact.js";import{useRef as a,useState as e,useCallback as o,useEffect as n}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../../../../utils/Script.js";import{KLARNA_WIDGET_URL as i}from"../../constants.js";function s({sdkData:s,paymentMethodType:m,widgetInitializationTime:c,payButton:d,...l}){const p=a(null),[y,u]=e("ready"),_=o((()=>{u("error"),l.onComplete({data:{paymentData:l.paymentData,details:{}}})}),[l.paymentData,l.onComplete]),h=o((()=>{window.Klarna.Payments.init({client_token:s.client_token}),window.Klarna.Payments.load({container:p.current,payment_method_category:s.payment_method_category},(function(t){!t.show_form||t.error?_():l.onLoaded()}))}),[s.client_token,s.payment_method_category]),w=o((()=>{u("loading");try{window.Klarna.Payments.authorize({payment_method_category:s.payment_method_category},(function(t){!0===t.approved&&!0===t.show_form?(u("success"),l.onComplete({data:{paymentData:l.paymentData,details:{authorization_token:t.authorization_token}}})):t.approved||!0!==t.show_form?_():(u("ready"),l.onError(t))}))}catch(t){_()}}),[s.payment_method_category,l.onComplete,l.onError]);return n((()=>{const t=window.Klarna?.Payments?.init;t&&h()}),[c]),n((()=>{window.klarnaAsyncCallback=function(){h()};const t=new r(i);return t.load(),()=>{t.remove()}}),[h]),"error"!==y&&"success"!==y?t("div",{className:"adyen-checkout__klarna-widget"},t("div",{ref:p}),d({status:y,disabled:"loading"===y,onClick:w})):null}export{s as KlarnaWidget};
2
2
  //# sourceMappingURL=KlarnaWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaWidget.js","sources":["../../../../../../src/components/Klarna/components/KlarnaWidget/KlarnaWidget.tsx"],"sourcesContent":["import Script from '../../../../utils/Script';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { h } from 'preact';\nimport { KlarnaWidgetAuthorizeResponse, KlarnaWidgetProps } from '../../types';\nimport { KLARNA_WIDGET_URL } from '../../constants';\nimport './KlarnaWidget.scss';\n\nexport function KlarnaWidget({ sdkData, paymentMethodType, payButton, ...props }: KlarnaWidgetProps) {\n const klarnaWidgetRef = useRef(null);\n const [status, setStatus] = useState('ready');\n\n const handleError = () => {\n setStatus('error');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {}\n }\n });\n };\n\n const initializeKlarnaWidget = () => {\n window.Klarna.Payments.init({\n client_token: sdkData.client_token\n });\n\n window.Klarna.Payments.load(\n {\n container: klarnaWidgetRef.current,\n payment_method_category: sdkData.payment_method_category\n },\n function (res) {\n // If show_form: true is received together with an error, something fixable is wrong and the consumer\n // needs to take action before moving forward\n // If show_form: false, the payment method in the loaded widget will not be offered for this order\n // based on Klarna’s pre-assessment.\n if (!res.show_form || !!res.error) {\n handleError();\n } else {\n props.onLoaded();\n }\n }\n );\n };\n\n const authorizeKlarna = () => {\n setStatus('loading');\n try {\n window.Klarna.Payments.authorize(\n {\n payment_method_category: sdkData.payment_method_category\n },\n function (res: KlarnaWidgetAuthorizeResponse) {\n if (res.approved === true && res.show_form === true) {\n // Klarna has approved the authorization of credit for this order.\n setStatus('success');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {\n authorization_token: res.authorization_token\n }\n }\n });\n } else if (!res.approved && res.show_form === true) {\n // Fixable error\n setStatus('ready');\n props.onError(res);\n } else {\n // The purchase is declined. The widget should be hidden and the user\n // should select another payment method.\n handleError();\n }\n }\n );\n } catch (e) {\n handleError();\n }\n };\n\n // Add Klarna Payments Widget SDK\n useEffect(() => {\n window.klarnaAsyncCallback = function () {\n initializeKlarnaWidget();\n };\n\n const script = new Script(KLARNA_WIDGET_URL);\n void script.load();\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status !== 'error' && status !== 'success') {\n return (\n <div className=\"adyen-checkout__klarna-widget\">\n <div ref={klarnaWidgetRef} />\n {payButton({ status, disabled: status === 'loading', onClick: authorizeKlarna })}\n </div>\n );\n }\n\n return null;\n}\n"],"names":["KlarnaWidget","sdkData","paymentMethodType","payButton","props","klarnaWidgetRef","useRef","status","setStatus","useState","handleError","onComplete","data","paymentData","details","authorizeKlarna","window","Klarna","Payments","authorize","payment_method_category","res","approved","show_form","authorization_token","onError","e","useEffect","klarnaAsyncCallback","init","client_token","load","container","current","error","onLoaded","script","Script","KLARNA_WIDGET_URL","remove","h","div","className","ref","disabled","onClick"],"mappings":"mRAOO,SAASA,GAAaC,QAAEA,EAAOC,kBAAEA,EAAiBC,UAAEA,KAAcC,IACrE,MAAMC,EAAkBC,EAAO,OACxBC,EAAQC,GAAaC,EAAS,SAE/BC,EAAc,KAChBF,EAAU,SACVJ,EAAMO,WAAW,CACbC,KAAM,CACFC,YAAaT,EAAMS,YACnBC,QAAS,CAAC,IAElB,EA2BEC,EAAkB,KACpBP,EAAU,WACV,IACIQ,OAAOC,OAAOC,SAASC,UACnB,CACIC,wBAAyBnB,EAAQmB,0BAErC,SAAUC,IACe,IAAjBA,EAAIC,WAAuC,IAAlBD,EAAIE,WAE7Bf,EAAU,WACVJ,EAAMO,WAAW,CACbC,KAAM,CACFC,YAAaT,EAAMS,YACnBC,QAAS,CACLU,oBAAqBH,EAAIG,yBAI7BH,EAAIC,WAA8B,IAAlBD,EAAIE,UAO5Bb,KALAF,EAAU,SACVJ,EAAMqB,QAAQJ,GAMtB,GAER,CAAE,MAAOK,GACLhB,GACJ,GAiBJ,OAbAiB,GAAU,KACNX,OAAOY,oBAAsB,WA5D7BZ,OAAOC,OAAOC,SAASW,KAAK,CACxBC,aAAc7B,EAAQ6B,eAG1Bd,OAAOC,OAAOC,SAASa,KACnB,CACIC,UAAW3B,EAAgB4B,QAC3Bb,wBAAyBnB,EAAQmB,0BAErC,SAAUC,IAKDA,EAAIE,WAAeF,EAAIa,MACxBxB,IAEAN,EAAM+B,UAEd,GA2CJ,EAEA,MAAMC,EAAS,IAAIC,EAAOC,GAG1B,OAFKF,EAAOL,OAEL,KACHK,EAAOG,QAAM,CACjB,GACD,IAEY,UAAXhC,GAAiC,YAAXA,EAElBiC,EAACC,MAAAA,CAAIC,UAAU,iCACXF,EAACC,MAAAA,CAAIE,IAAKtC,IACTF,EAAU,CAAEI,SAAQqC,SAAqB,YAAXrC,EAAsBsC,QAAS9B,KAKnE,IACX"}
1
+ {"version":3,"file":"KlarnaWidget.js","sources":["../../../../../../src/components/Klarna/components/KlarnaWidget/KlarnaWidget.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState, useCallback } from 'preact/hooks';\nimport Script from '../../../../utils/Script';\nimport { KLARNA_WIDGET_URL } from '../../constants';\nimport type { KlarnaWidgetAuthorizeResponse, KlarnaWidgetProps } from '../../types';\n\nimport './KlarnaWidget.scss';\n\nexport function KlarnaWidget({ sdkData, paymentMethodType, widgetInitializationTime, payButton, ...props }: KlarnaWidgetProps) {\n const klarnaWidgetRef = useRef(null);\n const [status, setStatus] = useState('ready');\n\n const handleError = useCallback(() => {\n setStatus('error');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {}\n }\n });\n }, [props.paymentData, props.onComplete]);\n\n const initializeKlarnaWidget = useCallback(() => {\n window.Klarna.Payments.init({\n client_token: sdkData.client_token\n });\n\n window.Klarna.Payments.load(\n {\n container: klarnaWidgetRef.current,\n payment_method_category: sdkData.payment_method_category\n },\n function (res) {\n // If show_form: true is received together with an error, something fixable is wrong and the consumer\n // needs to take action before moving forward\n // If show_form: false, the payment method in the loaded widget will not be offered for this order\n // based on Klarna’s pre-assessment.\n if (!res.show_form || !!res.error) {\n handleError();\n } else {\n props.onLoaded();\n }\n }\n );\n }, [sdkData.client_token, sdkData.payment_method_category]);\n\n const authorizeKlarna = useCallback(() => {\n setStatus('loading');\n try {\n window.Klarna.Payments.authorize(\n {\n payment_method_category: sdkData.payment_method_category\n },\n function (res: KlarnaWidgetAuthorizeResponse) {\n if (res.approved === true && res.show_form === true) {\n // Klarna has approved the authorization of credit for this order.\n setStatus('success');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: {\n authorization_token: res.authorization_token\n }\n }\n });\n } else if (!res.approved && res.show_form === true) {\n // Fixable error\n setStatus('ready');\n props.onError(res);\n } else {\n // The purchase is declined. The widget should be hidden and the user\n // should select another payment method.\n handleError();\n }\n }\n );\n } catch (e) {\n handleError();\n }\n }, [sdkData.payment_method_category, props.onComplete, props.onError]);\n\n /**\n * Initializes Klarna SDK if it is already available and reinitialize\n * it when the init time refreshes\n */\n useEffect(() => {\n const isKlarnaAvailable = window.Klarna?.Payments?.init;\n if (isKlarnaAvailable) {\n initializeKlarnaWidget();\n }\n }, [widgetInitializationTime]);\n\n useEffect(() => {\n window.klarnaAsyncCallback = function () {\n initializeKlarnaWidget();\n };\n const script = new Script(KLARNA_WIDGET_URL);\n void script.load();\n\n return () => {\n script.remove();\n };\n }, [initializeKlarnaWidget]);\n\n if (status !== 'error' && status !== 'success') {\n return (\n <div className=\"adyen-checkout__klarna-widget\">\n <div ref={klarnaWidgetRef} />\n {payButton({ status, disabled: status === 'loading', onClick: authorizeKlarna })}\n </div>\n );\n }\n\n return null;\n}\n"],"names":["KlarnaWidget","sdkData","paymentMethodType","widgetInitializationTime","payButton","props","klarnaWidgetRef","useRef","status","setStatus","useState","handleError","useCallback","onComplete","data","paymentData","details","initializeKlarnaWidget","window","Klarna","Payments","init","client_token","load","container","current","payment_method_category","res","show_form","error","onLoaded","authorizeKlarna","authorize","approved","authorization_token","onError","e","useEffect","isKlarnaAvailable","klarnaAsyncCallback","script","Script","KLARNA_WIDGET_URL","remove","h","div","className","ref","disabled","onClick"],"mappings":"oSAQO,SAASA,GAAaC,QAAEA,EAAOC,kBAAEA,EAAiBC,yBAAEA,EAAwBC,UAAEA,KAAcC,IAC/F,MAAMC,EAAkBC,EAAO,OACxBC,EAAQC,GAAaC,EAAS,SAE/BC,EAAcC,GAAY,KAC5BH,EAAU,SACVJ,EAAMQ,WAAW,CACbC,KAAM,CACFC,YAAaV,EAAMU,YACnBC,QAAS,CAAC,IAElB,GACD,CAACX,EAAMU,YAAaV,EAAMQ,aAEvBI,EAAyBL,GAAY,KACvCM,OAAOC,OAAOC,SAASC,KAAK,CACxBC,aAAcrB,EAAQqB,eAG1BJ,OAAOC,OAAOC,SAASG,KACnB,CACIC,UAAWlB,EAAgBmB,QAC3BC,wBAAyBzB,EAAQyB,0BAErC,SAAUC,IAKDA,EAAIC,WAAeD,EAAIE,MACxBlB,IAEAN,EAAMyB,UAEd,GAAA,GAEL,CAAC7B,EAAQqB,aAAcrB,EAAQyB,0BAE5BK,EAAkBnB,GAAY,KAChCH,EAAU,WACV,IACIS,OAAOC,OAAOC,SAASY,UACnB,CACIN,wBAAyBzB,EAAQyB,0BAErC,SAAUC,IACe,IAAjBA,EAAIM,WAAuC,IAAlBN,EAAIC,WAE7BnB,EAAU,WACVJ,EAAMQ,WAAW,CACbC,KAAM,CACFC,YAAaV,EAAMU,YACnBC,QAAS,CACLkB,oBAAqBP,EAAIO,yBAI7BP,EAAIM,WAA8B,IAAlBN,EAAIC,UAO5BjB,KALAF,EAAU,SACVJ,EAAM8B,QAAQR,GAMtB,GAER,CAAE,MAAOS,GACLzB,GACJ,IACD,CAACV,EAAQyB,wBAAyBrB,EAAMQ,WAAYR,EAAM8B,UAyB7D,OAnBAE,GAAU,KACN,MAAMC,EAAoBpB,OAAOC,QAAQC,UAAUC,KAC/CiB,GACArB,GACJ,GACD,CAACd,IAEJkC,GAAU,KACNnB,OAAOqB,oBAAsB,WACzBtB,GACJ,EACA,MAAMuB,EAAS,IAAIC,EAAOC,GAG1B,OAFKF,EAAOjB,OAEL,KACHiB,EAAOG,QAAM,CACjB,GACD,CAAC1B,IAEW,UAAXT,GAAiC,YAAXA,EAElBoC,EAACC,MAAAA,CAAIC,UAAU,iCACXF,EAACC,MAAAA,CAAIE,IAAKzC,IACTF,EAAU,CAAEI,SAAQwC,SAAqB,YAAXxC,EAAsByC,QAASlB,KAKnE,IACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"Multibanco.js","sources":["../../../../src/components/Multibanco/Multibanco.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport MultibancoVoucherResult from './components/MultibancoVoucherResult';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport { VoucherConfiguration } from '../internal/Voucher/types';\n\nexport class MultibancoElement extends UIElement<VoucherConfiguration> {\n public static type = TxVariants.multibanco;\n\n get isValid() {\n return true;\n }\n\n formatProps(props) {\n return {\n ...props,\n name: props.name || 'Multibanco'\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n return {\n paymentMethod: {\n type: this.props.type || MultibancoElement.type\n }\n };\n }\n\n private handleRef = ref => {\n this.componentRef = ref;\n };\n\n render() {\n if (this.props.reference) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <MultibancoVoucherResult ref={this.handleRef} {...this.props} onActionHandled={this.onActionHandled} />\n </CoreProvider>\n );\n }\n\n if (this.props.showPayButton) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </CoreProvider>\n );\n }\n\n return null;\n }\n}\n\nexport default MultibancoElement;\n"],"names":["MultibancoElement","UIElement","isValid","formatProps","props","name","formatData","paymentMethod","type","this","render","reference","h","CoreProvider","i18n","loadingContext","resources","MultibancoVoucherResult","ref","handleRef","onActionHandled","showPayButton","RedirectButton","displayName","amount","payButton","onSubmit","submit","componentRef","_define_property","TxVariants","multibanco"],"mappings":"wfAQO,MAAMA,UAA0BC,EAGnC,WAAIC,GACA,OAAO,CACX,CAEAC,WAAAA,CAAYC,GACR,MAAO,IACAA,EACHC,KAAMD,EAAMC,MAAQ,aAE5B,CAKAC,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKL,MAAMI,MAAQR,EAAkBQ,MAGvD,CAMAE,MAAAA,GACI,OAAID,KAAKL,MAAMO,UAEPC,EAACC,EAAAA,CAAaC,KAAML,KAAKL,MAAMU,KAAMC,eAAgBN,KAAKL,MAAMW,eAAgBC,UAAWP,KAAKO,WAC5FJ,EAACK,EAAAA,CAAwBC,IAAKT,KAAKU,aAAeV,KAAKL,MAAOgB,gBAAiBX,KAAKW,mBAK5FX,KAAKL,MAAMiB,cAEPT,EAACC,EAAAA,CAAaC,KAAML,KAAKL,MAAMU,KAAMC,eAAgBN,KAAKL,MAAMW,eAAgBC,UAAWP,KAAKO,WAC5FJ,EAACU,EAAAA,CACGD,cAAeZ,KAAKL,MAAMiB,cAC1BhB,KAAMI,KAAKc,YACXC,OAAQf,KAAKL,MAAMoB,OACnBC,UAAWhB,KAAKgB,UAChBC,SAAUjB,KAAKkB,OACfT,IAAKA,IACDT,KAAKmB,aAAeV,CAAAA,KAOjC,IACX,+BA/BAW,EAAApB,KAAQU,aAAYD,IAChBT,KAAKmB,aAAeV,CAAAA,KAzBxBW,EADS7B,EACKQ,OAAOsB,EAAWC"}
1
+ {"version":3,"file":"Multibanco.js","sources":["../../../../src/components/Multibanco/Multibanco.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport MultibancoVoucherResult from './components/MultibancoVoucherResult';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport { VoucherConfiguration } from '../internal/Voucher/types';\n\nexport class MultibancoElement extends UIElement<VoucherConfiguration> {\n public static type = TxVariants.multibanco;\n\n get isValid() {\n return true;\n }\n\n formatProps(props) {\n return {\n ...props,\n name: props.name || 'Multibanco'\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n return {\n paymentMethod: {\n type: this.props.type || MultibancoElement.type\n }\n };\n }\n\n private handleRef = ref => {\n this.componentRef = ref;\n };\n\n render() {\n if (this.props.reference) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <MultibancoVoucherResult ref={this.handleRef} {...this.props} onActionHandled={this.onActionHandled} />\n </CoreProvider>\n );\n }\n\n if (this.props.showPayButton) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n amount={this.props.amount}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </CoreProvider>\n );\n }\n\n return null;\n }\n}\n\nexport default MultibancoElement;\n"],"names":["MultibancoElement","UIElement","isValid","formatProps","props","name","formatData","paymentMethod","type","this","render","reference","h","CoreProvider","i18n","loadingContext","resources","MultibancoVoucherResult","ref","handleRef","onActionHandled","showPayButton","RedirectButton","displayName","amount","payButton","onSubmit","submit","componentRef","super","args","_define_property","TxVariants","multibanco"],"mappings":"wfAQO,MAAMA,UAA0BC,EAGnC,WAAIC,GACA,OAAO,CACX,CAEAC,WAAAA,CAAYC,GACR,MAAO,IACAA,EACHC,KAAMD,EAAMC,MAAQ,aAE5B,CAKAC,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKL,MAAMI,MAAQR,EAAkBQ,MAGvD,CAMAE,MAAAA,GACI,OAAID,KAAKL,MAAMO,UAEPC,EAACC,EAAAA,CAAaC,KAAML,KAAKL,MAAMU,KAAMC,eAAgBN,KAAKL,MAAMW,eAAgBC,UAAWP,KAAKO,WAC5FJ,EAACK,EAAAA,CAAwBC,IAAKT,KAAKU,aAAeV,KAAKL,MAAOgB,gBAAiBX,KAAKW,mBAK5FX,KAAKL,MAAMiB,cAEPT,EAACC,EAAAA,CAAaC,KAAML,KAAKL,MAAMU,KAAMC,eAAgBN,KAAKL,MAAMW,eAAgBC,UAAWP,KAAKO,WAC5FJ,EAACU,EAAAA,CACGD,cAAeZ,KAAKL,MAAMiB,cAC1BhB,KAAMI,KAAKc,YACXC,OAAQf,KAAKL,MAAMoB,OACnBC,UAAWhB,KAAKgB,UAChBC,SAAUjB,KAAKkB,OACfT,IAAKA,IACDT,KAAKmB,aAAeV,CAAAA,KAOjC,IACX,mBA/BAW,SAAAC,GAAAC,EAAAtB,KAAQU,aAAYD,IAChBT,KAAKmB,aAAeV,CAAAA,KAzBxBa,EADS/B,EACKQ,OAAOwB,EAAWC"}