@adyen/adyen-web 6.30.0 → 6.31.1

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 (498) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/adyen.css +2 -2
  3. package/dist/cjs/adyen.css.map +1 -1
  4. package/dist/cjs/index.cjs +2 -2
  5. package/dist/cjs/index.cjs.map +1 -1
  6. package/dist/cjs/index.d.cts +802 -714
  7. package/dist/es/adyen.css +2 -2
  8. package/dist/es/adyen.css.map +1 -1
  9. package/dist/es/components/ANCV/ANCV.js.map +1 -1
  10. package/dist/es/components/Ach/Ach.js +1 -1
  11. package/dist/es/components/Ach/Ach.js.map +1 -1
  12. package/dist/es/components/Ach/components/AccountTypeSelector.js.map +1 -1
  13. package/dist/es/components/Ach/components/AchComponent.js.map +1 -1
  14. package/dist/es/components/Affirm/Affirm.js.map +1 -1
  15. package/dist/es/components/AfterPay/AfterPay.js.map +1 -1
  16. package/dist/es/components/AfterPay/AfterPayB2B.js.map +1 -1
  17. package/dist/es/components/AmazonPay/components/AmazonPayButton.js +1 -1
  18. package/dist/es/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
  19. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js +1 -1
  20. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  21. package/dist/es/components/AmazonPay/components/OrderButton.js +1 -1
  22. package/dist/es/components/AmazonPay/components/OrderButton.js.map +1 -1
  23. package/dist/es/components/AmazonPay/utils.js +1 -1
  24. package/dist/es/components/AmazonPay/utils.js.map +1 -1
  25. package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
  26. package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
  27. package/dist/es/components/ApplePay/services/ApplePayService.js +1 -1
  28. package/dist/es/components/ApplePay/services/ApplePayService.js.map +1 -1
  29. package/dist/es/components/ApplePay/utils/map-adyen-brands-to-applepay-brands.js.map +1 -1
  30. package/dist/es/components/ApplePay/utils/payment-request.js.map +1 -1
  31. package/dist/es/components/Atome/Atome.js.map +1 -1
  32. package/dist/es/components/BacsDD/BacsDD.js +1 -1
  33. package/dist/es/components/BacsDD/BacsDD.js.map +1 -1
  34. package/dist/es/components/BacsDD/components/BacsInput.js +1 -1
  35. package/dist/es/components/BacsDD/components/BacsInput.js.map +1 -1
  36. package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
  37. package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
  38. package/dist/es/components/Blik/Blik.js +1 -1
  39. package/dist/es/components/Blik/Blik.js.map +1 -1
  40. package/dist/es/components/Boleto/components/BoletoInput/BoletoInput.js.map +1 -1
  41. package/dist/es/components/Card/Card.js +1 -1
  42. package/dist/es/components/Card/Card.js.map +1 -1
  43. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  44. package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
  45. package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
  46. package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  47. package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  48. package/dist/es/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js +1 -1
  49. package/dist/es/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js.map +1 -1
  50. package/dist/es/components/Card/components/CardInput/handlers.js +1 -1
  51. package/dist/es/components/Card/components/CardInput/handlers.js.map +1 -1
  52. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  53. package/dist/es/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  54. package/dist/es/components/Card/components/CardInput/utils.js +1 -1
  55. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  56. package/dist/es/components/Card/components/ClickToPayWrapper.js +1 -1
  57. package/dist/es/components/Card/components/ClickToPayWrapper.js.map +1 -1
  58. package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
  59. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  60. package/dist/es/components/CashAppPay/services/CashAppSdkLoader.js.map +1 -1
  61. package/dist/es/components/CashAppPay/services/CashAppService.js +1 -1
  62. package/dist/es/components/CashAppPay/services/CashAppService.js.map +1 -1
  63. package/dist/es/components/CashAppPay/services/types.js.map +1 -1
  64. package/dist/es/components/ClickToPay/ClickToPay.js +1 -1
  65. package/dist/es/components/ClickToPay/ClickToPay.js.map +1 -1
  66. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  67. package/dist/es/components/Dragonpay/components/DragonpayInput/DragonpayInput.js +1 -1
  68. package/dist/es/components/Dragonpay/components/DragonpayInput/DragonpayInput.js.map +1 -1
  69. package/dist/es/components/Dropin/Dropin.js +1 -1
  70. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  71. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  72. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  73. package/dist/es/components/Dropin/components/DropinSuccessState.js +2 -0
  74. package/dist/es/components/Dropin/components/DropinSuccessState.js.map +1 -0
  75. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js +1 -1
  76. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  77. package/dist/es/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  78. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  79. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  80. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  81. package/dist/es/components/Giftcard/components/GiftcardResult.js +1 -1
  82. package/dist/es/components/Giftcard/components/GiftcardResult.js.map +1 -1
  83. package/dist/es/components/Giftcard/components/useSRPanelForGiftcardErrors.js +1 -1
  84. package/dist/es/components/Giftcard/components/useSRPanelForGiftcardErrors.js.map +1 -1
  85. package/dist/es/components/GooglePay/GooglePayService.js.map +1 -1
  86. package/dist/es/components/Iris/Iris.js +1 -1
  87. package/dist/es/components/Iris/Iris.js.map +1 -1
  88. package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
  89. package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
  90. package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  91. package/dist/es/components/Multibanco/Multibanco.js +1 -1
  92. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  93. package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
  94. package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
  95. package/dist/es/components/PayByBankPix/components/StoredPayment/StoredPayment.js +1 -1
  96. package/dist/es/components/PayByBankPix/components/StoredPayment/StoredPayment.js.map +1 -1
  97. package/dist/es/components/PayByBankPix/services/PasskeySdkLoader.js.map +1 -1
  98. package/dist/es/components/PayByBankPix/services/PasskeyService.js.map +1 -1
  99. package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
  100. package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
  101. package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
  102. package/dist/es/components/PayPalFastlane/components/FastlaneComponent.js.map +1 -1
  103. package/dist/es/components/PayTo/PayTo.js +1 -1
  104. package/dist/es/components/PayTo/PayTo.js.map +1 -1
  105. package/dist/es/components/PayTo/components/PayToComponent.js.map +1 -1
  106. package/dist/es/components/PayTo/components/PayToNameFields.js +1 -1
  107. package/dist/es/components/PayTo/components/PayToNameFields.js.map +1 -1
  108. package/dist/es/components/PersonalDetails/PersonalDetails.js.map +1 -1
  109. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  110. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  111. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  112. package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
  113. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  114. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  115. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  116. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  117. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  118. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  119. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  120. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  121. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  122. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  123. package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
  124. package/dist/es/components/Twint/Twint.js +1 -1
  125. package/dist/es/components/Twint/Twint.js.map +1 -1
  126. package/dist/es/components/UPI/UPI.js +1 -1
  127. package/dist/es/components/UPI/UPI.js.map +1 -1
  128. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  129. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  130. package/dist/es/components/UPI/components/UPIIntentAppList/UPIIntentAppList.js +1 -1
  131. package/dist/es/components/UPI/components/UPIIntentAppList/UPIIntentAppList.js.map +1 -1
  132. package/dist/es/components/internal/Address/Specifications.js.map +1 -1
  133. package/dist/es/components/internal/Await/Await.js +1 -1
  134. package/dist/es/components/internal/Await/Await.js.map +1 -1
  135. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  136. package/dist/es/components/internal/Button/Button.js +1 -1
  137. package/dist/es/components/internal/Button/Button.js.map +1 -1
  138. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js +1 -1
  139. package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  140. package/dist/es/components/internal/ClickToPay/components/CtPInfo/CtPInfoModal/CtPInfoModal.js +1 -1
  141. package/dist/es/components/internal/ClickToPay/components/CtPInfo/CtPInfoModal/CtPInfoModal.js.map +1 -1
  142. package/dist/es/components/internal/ClickToPay/context/ClickToPayContext.js +1 -1
  143. package/dist/es/components/internal/ClickToPay/context/ClickToPayContext.js.map +1 -1
  144. package/dist/es/components/internal/ClickToPay/context/ClickToPayProvider.js +1 -1
  145. package/dist/es/components/internal/ClickToPay/context/ClickToPayProvider.js.map +1 -1
  146. package/dist/es/components/internal/ClickToPay/models/ShopperCard.js.map +1 -1
  147. package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  148. package/dist/es/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js.map +1 -1
  149. package/dist/es/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
  150. package/dist/es/components/internal/CompanyDetails/CompanyDetails.js +1 -1
  151. package/dist/es/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
  152. package/dist/es/components/internal/Countdown/CountdownA11yReporter.js.map +1 -1
  153. package/dist/es/components/internal/FormFields/InputBase.js +1 -1
  154. package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
  155. package/dist/es/components/internal/IFrame/Iframe.js.map +1 -1
  156. package/dist/es/components/internal/PayButton/PayButton.js +1 -1
  157. package/dist/es/components/internal/PayButton/PayButton.js.map +1 -1
  158. package/dist/es/components/internal/PayButton/utils.js +1 -1
  159. package/dist/es/components/internal/PayButton/utils.js.map +1 -1
  160. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  161. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  162. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  163. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  164. package/dist/es/components/internal/RedirectButton/RedirectButton.js +1 -1
  165. package/dist/es/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  166. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  167. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  168. package/dist/es/components/internal/SecuredFields/lib/CSF/AbstractCSF.js.map +1 -1
  169. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/userAgent.js +1 -1
  170. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/userAgent.js.map +1 -1
  171. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  172. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  173. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  174. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  175. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  176. package/dist/es/components/internal/SecuredFields/utils.js.map +1 -1
  177. package/dist/es/components/internal/SendCopyToEmail/SendCopyToEmail.js +1 -1
  178. package/dist/es/components/internal/SendCopyToEmail/SendCopyToEmail.js.map +1 -1
  179. package/dist/es/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js +1 -1
  180. package/dist/es/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js.map +1 -1
  181. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  182. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  183. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  184. package/dist/es/core/Analytics/AnalyticsService.js.map +1 -1
  185. package/dist/es/core/Analytics/events/AbstractAnalyticsEvent.js.map +1 -1
  186. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js +1 -1
  187. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -1
  188. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  189. package/dist/es/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  190. package/dist/es/core/Analytics/events/AnalyticsLogEvent.js.map +1 -1
  191. package/dist/es/core/Analytics/utils.js +1 -1
  192. package/dist/es/core/Analytics/utils.js.map +1 -1
  193. package/dist/es/core/CheckoutSession/CheckoutSession.js +1 -1
  194. package/dist/es/core/CheckoutSession/CheckoutSession.js.map +1 -1
  195. package/dist/es/core/Context/AmountProvider.js +2 -0
  196. package/dist/es/core/Context/AmountProvider.js.map +1 -0
  197. package/dist/es/core/Context/Resources.js.map +1 -1
  198. package/dist/es/core/Errors/SRPanel.js.map +1 -1
  199. package/dist/es/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  200. package/dist/es/core/config.js +1 -1
  201. package/dist/es/core/core.js +1 -1
  202. package/dist/es/core/core.js.map +1 -1
  203. package/dist/es/external/preact/compat/dist/compat.js +1 -1
  204. package/dist/es/external/preact/compat/dist/compat.js.map +1 -1
  205. package/dist/es/external/preact/dist/preact.js +1 -1
  206. package/dist/es/external/preact/dist/preact.js.map +1 -1
  207. package/dist/es/external/preact/hooks/dist/hooks.js +1 -1
  208. package/dist/es/external/preact/hooks/dist/hooks.js.map +1 -1
  209. package/dist/es/index.d.ts +802 -714
  210. package/dist/es/language/Language.js.map +1 -1
  211. package/dist/es/utils/Script.js.map +1 -1
  212. package/dist/es/utils/Storage.js +1 -1
  213. package/dist/es/utils/Storage.js.map +1 -1
  214. package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
  215. package/dist/es/utils/Validator/Validator.js.map +1 -1
  216. package/dist/es/utils/amount-util.js +1 -1
  217. package/dist/es/utils/amount-util.js.map +1 -1
  218. package/dist/es/utils/browserInfo.js +1 -1
  219. package/dist/es/utils/browserInfo.js.map +1 -1
  220. package/dist/es/utils/constants/currency-minor-units.js.map +1 -1
  221. package/dist/es/utils/createSdkData.js.map +1 -1
  222. package/dist/es/utils/getErrorMessage.js.map +1 -1
  223. package/dist/es/utils/getProp.js +1 -1
  224. package/dist/es/utils/getProp.js.map +1 -1
  225. package/dist/es/utils/hasOwnProperty.js.map +1 -1
  226. package/dist/es/utils/isValidURL.js.map +1 -1
  227. package/dist/es/utils/listenerUtils.js.map +1 -1
  228. package/dist/es/utils/promiseTimeout.js.map +1 -1
  229. package/dist/es/utils/setFocus.js +1 -1
  230. package/dist/es/utils/setFocus.js.map +1 -1
  231. package/dist/es/utils/textUtils.js.map +1 -1
  232. package/dist/es/utils/validator-utils.js.map +1 -1
  233. package/dist/es/utils/windowScrollTo.js +2 -0
  234. package/dist/es/utils/windowScrollTo.js.map +1 -0
  235. package/dist/es-legacy/adyen.css +2 -2
  236. package/dist/es-legacy/adyen.css.map +1 -1
  237. package/dist/es-legacy/components/ANCV/ANCV.js.map +1 -1
  238. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  239. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  240. package/dist/es-legacy/components/Ach/components/AccountTypeSelector.js.map +1 -1
  241. package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -1
  242. package/dist/es-legacy/components/Affirm/Affirm.js.map +1 -1
  243. package/dist/es-legacy/components/AfterPay/AfterPay.js.map +1 -1
  244. package/dist/es-legacy/components/AfterPay/AfterPayB2B.js.map +1 -1
  245. package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js +1 -1
  246. package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
  247. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js +1 -1
  248. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  249. package/dist/es-legacy/components/AmazonPay/components/OrderButton.js +1 -1
  250. package/dist/es-legacy/components/AmazonPay/components/OrderButton.js.map +1 -1
  251. package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
  252. package/dist/es-legacy/components/AmazonPay/utils.js.map +1 -1
  253. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  254. package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
  255. package/dist/es-legacy/components/ApplePay/services/ApplePayService.js +1 -1
  256. package/dist/es-legacy/components/ApplePay/services/ApplePayService.js.map +1 -1
  257. package/dist/es-legacy/components/ApplePay/utils/map-adyen-brands-to-applepay-brands.js.map +1 -1
  258. package/dist/es-legacy/components/ApplePay/utils/payment-request.js.map +1 -1
  259. package/dist/es-legacy/components/Atome/Atome.js.map +1 -1
  260. package/dist/es-legacy/components/BacsDD/BacsDD.js +1 -1
  261. package/dist/es-legacy/components/BacsDD/BacsDD.js.map +1 -1
  262. package/dist/es-legacy/components/BacsDD/components/BacsInput.js +1 -1
  263. package/dist/es-legacy/components/BacsDD/components/BacsInput.js.map +1 -1
  264. package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
  265. package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
  266. package/dist/es-legacy/components/Blik/Blik.js +1 -1
  267. package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
  268. package/dist/es-legacy/components/Boleto/components/BoletoInput/BoletoInput.js.map +1 -1
  269. package/dist/es-legacy/components/Card/Card.js +1 -1
  270. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  271. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  272. package/dist/es-legacy/components/Card/components/CardInput/components/AvailableBrands/AvailableBrands.js.map +1 -1
  273. package/dist/es-legacy/components/Card/components/CardInput/components/CardFields.js.map +1 -1
  274. package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js +1 -1
  275. package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
  276. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  277. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  278. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js +1 -1
  279. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFieldsWrapper.js.map +1 -1
  280. package/dist/es-legacy/components/Card/components/CardInput/handlers.js +1 -1
  281. package/dist/es-legacy/components/Card/components/CardInput/handlers.js.map +1 -1
  282. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  283. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  284. package/dist/es-legacy/components/Card/components/CardInput/utils.js +1 -1
  285. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  286. package/dist/es-legacy/components/Card/components/ClickToPayWrapper.js +1 -1
  287. package/dist/es-legacy/components/Card/components/ClickToPayWrapper.js.map +1 -1
  288. package/dist/es-legacy/components/Card/components/Fastlane/USOnlyPhoneInput.js.map +1 -1
  289. package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
  290. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  291. package/dist/es-legacy/components/CashAppPay/services/CashAppSdkLoader.js.map +1 -1
  292. package/dist/es-legacy/components/CashAppPay/services/CashAppService.js +1 -1
  293. package/dist/es-legacy/components/CashAppPay/services/CashAppService.js.map +1 -1
  294. package/dist/es-legacy/components/CashAppPay/services/types.js.map +1 -1
  295. package/dist/es-legacy/components/ClickToPay/ClickToPay.js +1 -1
  296. package/dist/es-legacy/components/ClickToPay/ClickToPay.js.map +1 -1
  297. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  298. package/dist/es-legacy/components/Doku/components/DokuInput/DokuInput.js.map +1 -1
  299. package/dist/es-legacy/components/Dragonpay/components/DragonpayInput/DragonpayInput.js +1 -1
  300. package/dist/es-legacy/components/Dragonpay/components/DragonpayInput/DragonpayInput.js.map +1 -1
  301. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  302. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  303. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  304. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  305. package/dist/es-legacy/components/Dropin/components/DropinSuccessState.js +2 -0
  306. package/dist/es-legacy/components/Dropin/components/DropinSuccessState.js.map +1 -0
  307. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js +1 -1
  308. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  309. package/dist/es-legacy/components/Econtext/components/EcontextInput/EcontextInput.js.map +1 -1
  310. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  311. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  312. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  313. package/dist/es-legacy/components/Giftcard/components/GiftcardResult.js +1 -1
  314. package/dist/es-legacy/components/Giftcard/components/GiftcardResult.js.map +1 -1
  315. package/dist/es-legacy/components/Giftcard/components/useSRPanelForGiftcardErrors.js +1 -1
  316. package/dist/es-legacy/components/Giftcard/components/useSRPanelForGiftcardErrors.js.map +1 -1
  317. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  318. package/dist/es-legacy/components/GooglePay/GooglePayService.js.map +1 -1
  319. package/dist/es-legacy/components/Iris/Iris.js +1 -1
  320. package/dist/es-legacy/components/Iris/Iris.js.map +1 -1
  321. package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
  322. package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
  323. package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
  324. package/dist/es-legacy/components/Klarna/components/KlarnaWidget/KlarnaWidget.js.map +1 -1
  325. package/dist/es-legacy/components/MBWay/MBWay.js.map +1 -1
  326. package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
  327. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  328. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  329. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  330. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
  331. package/dist/es-legacy/components/PayByBankPix/components/StoredPayment/StoredPayment.js +1 -1
  332. package/dist/es-legacy/components/PayByBankPix/components/StoredPayment/StoredPayment.js.map +1 -1
  333. package/dist/es-legacy/components/PayByBankPix/services/PasskeySdkLoader.js.map +1 -1
  334. package/dist/es-legacy/components/PayByBankPix/services/PasskeyService.js.map +1 -1
  335. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
  336. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
  337. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  338. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
  339. package/dist/es-legacy/components/PayPalFastlane/components/FastlaneComponent.js.map +1 -1
  340. package/dist/es-legacy/components/PayTo/PayTo.js +1 -1
  341. package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
  342. package/dist/es-legacy/components/PayTo/components/PayToComponent.js.map +1 -1
  343. package/dist/es-legacy/components/PayTo/components/PayToNameFields.js +1 -1
  344. package/dist/es-legacy/components/PayTo/components/PayToNameFields.js.map +1 -1
  345. package/dist/es-legacy/components/PersonalDetails/PersonalDetails.js.map +1 -1
  346. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  347. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  348. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  349. package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
  350. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  351. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  352. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  353. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  354. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  355. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js.map +1 -1
  356. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  357. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  358. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  359. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  360. package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
  361. package/dist/es-legacy/components/Twint/Twint.js +1 -1
  362. package/dist/es-legacy/components/Twint/Twint.js.map +1 -1
  363. package/dist/es-legacy/components/UPI/UPI.js +1 -1
  364. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  365. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  366. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  367. package/dist/es-legacy/components/UPI/components/UPIIntentAppList/UPIIntentAppList.js +1 -1
  368. package/dist/es-legacy/components/UPI/components/UPIIntentAppList/UPIIntentAppList.js.map +1 -1
  369. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  370. package/dist/es-legacy/components/helpers/OpenInvoiceContainer/OpenInvoiceContainer.js.map +1 -1
  371. package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
  372. package/dist/es-legacy/components/internal/Address/Specifications.js.map +1 -1
  373. package/dist/es-legacy/components/internal/Address/validate.js.map +1 -1
  374. package/dist/es-legacy/components/internal/Await/Await.js +1 -1
  375. package/dist/es-legacy/components/internal/Await/Await.js.map +1 -1
  376. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  377. package/dist/es-legacy/components/internal/Button/Button.js +1 -1
  378. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  379. package/dist/es-legacy/components/internal/Button/CopyButton.js.map +1 -1
  380. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js +1 -1
  381. package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
  382. package/dist/es-legacy/components/internal/ClickToPay/components/CtPInfo/CtPInfoModal/CtPInfoModal.js +1 -1
  383. package/dist/es-legacy/components/internal/ClickToPay/components/CtPInfo/CtPInfoModal/CtPInfoModal.js.map +1 -1
  384. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js.map +1 -1
  385. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePassword.js.map +1 -1
  386. package/dist/es-legacy/components/internal/ClickToPay/context/ClickToPayContext.js +1 -1
  387. package/dist/es-legacy/components/internal/ClickToPay/context/ClickToPayContext.js.map +1 -1
  388. package/dist/es-legacy/components/internal/ClickToPay/context/ClickToPayProvider.js +1 -1
  389. package/dist/es-legacy/components/internal/ClickToPay/context/ClickToPayProvider.js.map +1 -1
  390. package/dist/es-legacy/components/internal/ClickToPay/models/ShopperCard.js.map +1 -1
  391. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
  392. package/dist/es-legacy/components/internal/ClickToPay/services/create-clicktopay-service.js.map +1 -1
  393. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/AbstractSrcInitiator.js.map +1 -1
  394. package/dist/es-legacy/components/internal/ClickToPay/services/sdks/SrcSdkLoader.js.map +1 -1
  395. package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js +1 -1
  396. package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
  397. package/dist/es-legacy/components/internal/Countdown/CountdownA11yReporter.js.map +1 -1
  398. package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
  399. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  400. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  401. package/dist/es-legacy/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js.map +1 -1
  402. package/dist/es-legacy/components/internal/IFrame/Iframe.js.map +1 -1
  403. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  404. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  405. package/dist/es-legacy/components/internal/PayButton/PayButton.js +1 -1
  406. package/dist/es-legacy/components/internal/PayButton/PayButton.js.map +1 -1
  407. package/dist/es-legacy/components/internal/PayButton/utils.js +1 -1
  408. package/dist/es-legacy/components/internal/PayButton/utils.js.map +1 -1
  409. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  410. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  411. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  412. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  413. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  414. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js +1 -1
  415. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  416. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  417. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  418. package/dist/es-legacy/components/internal/SecuredFields/binLookup/extensions.js.map +1 -1
  419. package/dist/es-legacy/components/internal/SecuredFields/binLookup/triggerBinLookUp.js.map +1 -1
  420. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/AbstractCSF.js.map +1 -1
  421. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/partials/processAutoComplete.js.map +1 -1
  422. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/cardType.js.map +1 -1
  423. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/userAgent.js +1 -1
  424. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/userAgent.js.map +1 -1
  425. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  426. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  427. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  428. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  429. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  430. package/dist/es-legacy/components/internal/SecuredFields/utils.js.map +1 -1
  431. package/dist/es-legacy/components/internal/SendCopyToEmail/SendCopyToEmail.js +1 -1
  432. package/dist/es-legacy/components/internal/SendCopyToEmail/SendCopyToEmail.js.map +1 -1
  433. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js +1 -1
  434. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js.map +1 -1
  435. package/dist/es-legacy/components/internal/Tooltip/Tooltip.js.map +1 -1
  436. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  437. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  438. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  439. package/dist/es-legacy/core/Analytics/AnalyticsService.js.map +1 -1
  440. package/dist/es-legacy/core/Analytics/events/AbstractAnalyticsEvent.js.map +1 -1
  441. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js +1 -1
  442. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -1
  443. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js +1 -1
  444. package/dist/es-legacy/core/Analytics/events/AnalyticsInfoEvent.js.map +1 -1
  445. package/dist/es-legacy/core/Analytics/events/AnalyticsLogEvent.js.map +1 -1
  446. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  447. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  448. package/dist/es-legacy/core/CheckoutSession/CheckoutSession.js +1 -1
  449. package/dist/es-legacy/core/CheckoutSession/CheckoutSession.js.map +1 -1
  450. package/dist/es-legacy/core/Context/AmountProvider.js +2 -0
  451. package/dist/es-legacy/core/Context/AmountProvider.js.map +1 -0
  452. package/dist/es-legacy/core/Context/Resources.js.map +1 -1
  453. package/dist/es-legacy/core/Environment/Environment.js.map +1 -1
  454. package/dist/es-legacy/core/Errors/SRPanel.js.map +1 -1
  455. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  456. package/dist/es-legacy/core/ProcessResponse/PaymentMethods/utils.js.map +1 -1
  457. package/dist/es-legacy/core/RiskModule/components/DeviceFingerprint/GetDeviceFingerprint.js.map +1 -1
  458. package/dist/es-legacy/core/Services/http.js.map +1 -1
  459. package/dist/es-legacy/core/config.js +1 -1
  460. package/dist/es-legacy/core/core.js +1 -1
  461. package/dist/es-legacy/core/core.js.map +1 -1
  462. package/dist/es-legacy/external/preact/compat/dist/compat.js +1 -1
  463. package/dist/es-legacy/external/preact/compat/dist/compat.js.map +1 -1
  464. package/dist/es-legacy/external/preact/dist/preact.js +1 -1
  465. package/dist/es-legacy/external/preact/dist/preact.js.map +1 -1
  466. package/dist/es-legacy/external/preact/hooks/dist/hooks.js +1 -1
  467. package/dist/es-legacy/external/preact/hooks/dist/hooks.js.map +1 -1
  468. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
  469. package/dist/es-legacy/language/Language.js.map +1 -1
  470. package/dist/es-legacy/utils/Script.js.map +1 -1
  471. package/dist/es-legacy/utils/Storage.js +1 -1
  472. package/dist/es-legacy/utils/Storage.js.map +1 -1
  473. package/dist/es-legacy/utils/Validator/ValidationRuleResult.js.map +1 -1
  474. package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
  475. package/dist/es-legacy/utils/amount-util.js +1 -1
  476. package/dist/es-legacy/utils/amount-util.js.map +1 -1
  477. package/dist/es-legacy/utils/browserInfo.js +1 -1
  478. package/dist/es-legacy/utils/browserInfo.js.map +1 -1
  479. package/dist/es-legacy/utils/constants/currency-minor-units.js.map +1 -1
  480. package/dist/es-legacy/utils/createSdkData.js.map +1 -1
  481. package/dist/es-legacy/utils/getConsentUrl.js.map +1 -1
  482. package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
  483. package/dist/es-legacy/utils/getProp.js +1 -1
  484. package/dist/es-legacy/utils/getProp.js.map +1 -1
  485. package/dist/es-legacy/utils/hasOwnProperty.js.map +1 -1
  486. package/dist/es-legacy/utils/isValidURL.js.map +1 -1
  487. package/dist/es-legacy/utils/listenerUtils.js.map +1 -1
  488. package/dist/es-legacy/utils/promiseTimeout.js.map +1 -1
  489. package/dist/es-legacy/utils/setFocus.js +1 -1
  490. package/dist/es-legacy/utils/setFocus.js.map +1 -1
  491. package/dist/es-legacy/utils/textUtils.js.map +1 -1
  492. package/dist/es-legacy/utils/useAutoFocus.js.map +1 -1
  493. package/dist/es-legacy/utils/useForm/reducer.js.map +1 -1
  494. package/dist/es-legacy/utils/validator-utils.js.map +1 -1
  495. package/dist/es-legacy/utils/windowScrollTo.js +2 -0
  496. package/dist/es-legacy/utils/windowScrollTo.js.map +1 -0
  497. package/package.json +11 -11
  498. package/styles/adyen.css +2 -2
@@ -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 PayButton from '../internal/PayButton';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { PaymentAmount } from '../../types/global-types';\nimport { GiftCardElementData, GiftCardConfiguration, balanceCheckResponseType, GiftCardBalanceCheckErrorType } from './types';\nimport { TxVariants } from '../tx-variants';\n\nexport class GiftcardElement extends UIElement<GiftCardConfiguration> {\n public static type = TxVariants.giftcard;\n\n protected componentRef: GiftcardComponent | undefined;\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 setBalanceCheckError(errorMessage: GiftCardBalanceCheckErrorType | null): void {\n this.componentRef?.setBalanceCheckErrors?.(errorMessage);\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 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 if (!this.isValid) {\n this.showValidation();\n return;\n }\n\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 // Clear any previous balance check errors on success\n this.setBalanceCheckError(null);\n\n // We still need to throw these errors, otherwise it would be a breaking changing\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 if (this.props.amount.value > balance.value || this.props.amount.value > transactionLimit.value) {\n if (this.props.order) {\n return this.makeSubmitCall();\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 this.makeSubmitCall();\n });\n } else {\n return this.handleOnRequiringConfirmation(balance, transactionLimit);\n }\n })\n .catch(error => {\n // Simply pass the raw error message to setBalanceCheckError\n this.setBalanceCheckError(error?.message);\n\n // Still call handleError for other side effects (analytics, onError callback)\n if (error instanceof AdyenCheckoutError) {\n this.handleError(error);\n } else {\n this.handleError(new AdyenCheckoutError('ERROR', error));\n }\n });\n };\n\n /**\n * Check if it should call onRequiringConfirmation\n */\n private handleOnRequiringConfirmation = (balance, transactionLimit): Promise<any> => {\n this.componentRef.setBalance({ balance, transactionLimit });\n this.setStatus('ready');\n\n // 1. if we show pay button we don't need to ask for confirmation\n if (this.props.showPayButton) {\n return;\n }\n // 2. there's no callback, we throw error\n if (!this.props.onRequiringConfirmation) {\n throw new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'onRequiringConfirmation must be provided');\n }\n // 3. success case if in case of custom pay button\n return (\n new Promise<void>((resolve, reject) => {\n void this.props.onRequiringConfirmation(resolve, reject);\n })\n //when this resolve passed to onRequiringConfirmation gets resolved make payments call\n .then(() => this.makeSubmitCall())\n //when it gets rejected handle cancellation\n .catch(() => {})\n );\n };\n\n public submit() {\n // for simplicity of the merchant we always only expose .submit()\n // however to make the actual payment call we call makeSubmitCall\n this.balanceCheck();\n }\n\n // this makes the payment, as .submit is used by the merchant to trigger the payButton action\n private makeSubmitCall() {\n super.submit();\n }\n\n // Giftcards override the regular payButton flow\n public payButton = props => {\n return <PayButton {...props} />;\n };\n\n protected override componentToRender(): h.JSX.Element {\n return (\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 makeBalanceCheck={() => this.onBalanceCheck()}\n makePayment={() => this.makeSubmitCall()}\n payButton={this.payButton}\n onSubmitAnalytics={this.submitAnalytics}\n />\n );\n }\n}\n\nexport default GiftcardElement;\n"],"names":["GiftcardElement","UIElement","formatProps","props","_object_spread","configuration","formatData","_this_state_data","_this_state_data1","paymentMethod","type","this","constructor","brand","encryptedCardNumber","state","data","encryptedSecurityCode","isValid","icon","_this_props_brandsConfiguration_this_props_brand","brandsConfiguration","resources","getImage","displayName","name","setBalanceCheckError","errorMessage","_this_componentRef_setBalanceCheckErrors","_this_componentRef","componentRef","setBalanceCheckErrors","call","balanceCheck","onBalanceCheck","submit","makeSubmitCall","super","componentToRender","h","GiftcardComponent","ref","handleKeyPress","showPayButton","onChange","setState","makeBalanceCheck","makePayment","payButton","onSubmitAnalytics","submitAnalytics","args","_define_property","handleBalanceCheck","Promise","resolve","reject","session","checkBalance","onOrderRequest","createOrder","showValidation","setStatus","then","balance","transactionLimit","_this_props_amount","Error","currency","amount","value","order","orderData","pspReference","handleOnRequiringConfirmation","catch","error","message","AdyenCheckoutError","handleError","setBalance","onRequiringConfirmation","PayButton","TxVariants","giftcard","defaultProps"],"mappings":"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"}
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 PayButton from '../internal/PayButton';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { PaymentAmount } from '../../types/global-types';\nimport { GiftCardElementData, GiftCardConfiguration, balanceCheckResponseType, GiftCardBalanceCheckErrorType } from './types';\nimport { TxVariants } from '../tx-variants';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\n\nexport class GiftcardElement extends UIElement<GiftCardConfiguration> {\n public static type = TxVariants.giftcard;\n\n protected componentRef: GiftcardComponent | undefined;\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 setBalanceCheckError(errorMessage: GiftCardBalanceCheckErrorType | null): void {\n this.componentRef?.setBalanceCheckErrors?.(errorMessage);\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 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 if (!this.isValid) {\n this.showValidation();\n return;\n }\n\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 // Clear any previous balance check errors on success\n this.setBalanceCheckError(null);\n\n // We still need to throw these errors, otherwise it would be a breaking changing\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 if (this.props.amount.value > balance.value || this.props.amount.value > transactionLimit.value) {\n if (this.props.order) {\n return this.makeSubmitCall();\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 this.makeSubmitCall();\n });\n } else {\n return this.handleOnRequiringConfirmation(balance, transactionLimit);\n }\n })\n .catch(error => {\n // Simply pass the raw error message to setBalanceCheckError\n this.setBalanceCheckError(error?.message);\n\n // Still call handleError for other side effects (analytics, onError callback)\n if (error instanceof AdyenCheckoutError) {\n this.handleError(error);\n } else {\n this.handleError(new AdyenCheckoutError('ERROR', error));\n }\n });\n };\n\n /**\n * Check if it should call onRequiringConfirmation\n */\n private handleOnRequiringConfirmation = (balance, transactionLimit): Promise<any> => {\n this.componentRef.setBalance({ balance, transactionLimit });\n this.setStatus('ready');\n\n // 1. if we show pay button we don't need to ask for confirmation\n if (this.props.showPayButton) {\n return;\n }\n // 2. there's no callback, we throw error\n if (!this.props.onRequiringConfirmation) {\n throw new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'onRequiringConfirmation must be provided');\n }\n // 3. success case if in case of custom pay button\n return (\n new Promise<void>((resolve, reject) => {\n void this.props.onRequiringConfirmation(resolve, reject);\n })\n //when this resolve passed to onRequiringConfirmation gets resolved make payments call\n .then(() => this.makeSubmitCall())\n //when it gets rejected handle cancellation\n .catch(() => {})\n );\n };\n\n public submit() {\n // for simplicity of the merchant we always only expose .submit()\n // however to make the actual payment call we call makeSubmitCall\n this.balanceCheck();\n }\n\n // this makes the payment, as .submit is used by the merchant to trigger the payButton action\n private makeSubmitCall() {\n super.submit();\n }\n\n // Giftcards override the regular payButton flow\n protected override payButton = (props: PayButtonProps) => {\n return <PayButton {...props} />;\n };\n\n protected override componentToRender(): h.JSX.Element {\n return (\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 makeBalanceCheck={() => this.onBalanceCheck()}\n makePayment={() => this.makeSubmitCall()}\n payButton={this.payButton}\n onSubmitAnalytics={this.submitAnalytics}\n />\n );\n }\n}\n\nexport default GiftcardElement;\n"],"names":["GiftcardElement","UIElement","formatProps","props","_object_spread","configuration","formatData","_this_state_data","_this_state_data1","paymentMethod","type","this","constructor","brand","encryptedCardNumber","state","data","encryptedSecurityCode","isValid","icon","_this_props_brandsConfiguration_this_props_brand","brandsConfiguration","resources","getImage","displayName","name","setBalanceCheckError","errorMessage","_this_componentRef_setBalanceCheckErrors","_this_componentRef","componentRef","setBalanceCheckErrors","call","balanceCheck","onBalanceCheck","submit","makeSubmitCall","super","componentToRender","h","GiftcardComponent","ref","handleKeyPress","showPayButton","onChange","setState","makeBalanceCheck","makePayment","payButton","onSubmitAnalytics","submitAnalytics","args","_define_property","handleBalanceCheck","Promise","resolve","reject","session","checkBalance","onOrderRequest","createOrder","showValidation","setStatus","then","balance","transactionLimit","_this_props_amount","Error","currency","amount","value","order","orderData","pspReference","handleOnRequiringConfirmation","catch","error","message","AdyenCheckoutError","handleError","setBalance","onRequiringConfirmation","PayButton","TxVariants","giftcard","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import r from"../../internal/SecuredFields/SFP/SecuredFieldsProvider.js";import s from"../../internal/Alert/Alert.js";import o from"./GiftcardResult.js";import{useCoreContext as a}from"../../../core/Context/CoreProvider.js";import{GIFT_CARD as n}from"../../internal/SecuredFields/lib/constants.js";import{GiftCardFields as i}from"./GiftcardFields.js";import{useSRPanelForGiftcardErrors as c}from"./useSRPanelForGiftcardErrors.js";function l(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function u(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},s=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),s.forEach(function(e){l(t,e,r[e])})}return t}function p(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e.push.apply(e,r)}return e}(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}class d extends t{generateBalanceCheckErrors(t){const e={};return null===t||(e.encryptedCardNumber={isValid:!1,errorMessage:`error.giftcard.${t}`,error:t}),e}isBalanceCheckError(t){return["no-balance","card-error","currency-error"].includes(t)}render(t,{focusedElement:i,balance:l,transactionLimit:d,isValidating:h,transformedErrors:m}){var f;const{i18n:y}=a();c({errors:m,isValidating:h,sfp:this.sfp});const b=(null==d?void 0:d.value)<(null==l?void 0:l.value)?d:l,g=(null==b?void 0:b.value)>=(null===(f=this.props.amount)||void 0===f?void 0:f.value);if(b&&g)return e(o,{amount:this.props.amount,balance:l,transactionLimit:d,makePayment:t.makePayment,status:this.state.status,makeBalanceCheck:t.makeBalanceCheck,showPayButton:this.props.showPayButton,payButton:this.props.payButton});const O=t=>t.errors.encryptedCardNumber?y.get(t.errors.encryptedCardNumber):m.encryptedCardNumber?y.get(m.encryptedCardNumber.errorMessage):null;return e("div",{className:"adyen-checkout__giftcard"},"error"===this.state.status&&e(s,{icon:"cross"},y.get("error.message.unknown")),e(r,p(u({},this.props),{ref:t=>{this.sfp=t},onChange:this.onChange,onFocus:this.handleFocus,onSubmitAnalytics:t.onSubmitAnalytics,type:n,componentType:t.type,render:({setRootNode:t,setFocusOn:e},r)=>this.props.fieldsLayoutComponent({i18n:y,pinRequired:this.props.pinRequired,focusedElement:i,getCardErrorMessage:O,setRootNode:t,setFocusOn:e,sfpState:r})})),this.props.showPayButton&&this.props.payButton({status:this.state.status,onClick:this.props.makeBalanceCheck,label:y.get("applyGiftcard")}))}constructor(...t){super(...t),l(this,"state",{status:"ready",data:{},balance:null,transactionLimit:null,focusedElement:!1,isValid:!1,sfpState:{},isValidating:!1,transformedErrors:{}}),l(this,"sfp",void 0),l(this,"mapErrorsToValidationObjects",()=>this.sfp?this.sfp.mapErrorsToValidationRuleResult():{}),l(this,"updateTransformedErrors",t=>{const e=u({},this.mapErrorsToValidationObjects(),t);this.setState({transformedErrors:e})}),l(this,"onChange",t=>{this.setState({sfpState:t},()=>this.updateTransformedErrors()),this.props.onChange({data:t.data,isValid:t.isSfpValid})}),l(this,"handleFocus",t=>{this.setState({focusedElement:t.currentFocusObject});!0===t.focus?this.props.onFocus(t):this.props.onBlur(t)}),l(this,"setBalance",({balance:t,transactionLimit:e})=>{this.setState({balance:t,transactionLimit:e})}),l(this,"setBalanceCheckErrors",t=>{if(this.isBalanceCheckError(t)){const e=this.generateBalanceCheckErrors(t);this.updateTransformedErrors(e)}}),l(this,"showValidation",()=>{var t;this.setState({isValidating:!0}),null===(t=this.sfp)||void 0===t||t.showValidation()})}}l(d,"defaultProps",{pinRequired:!0,expiryDateRequired:!1,onChange:()=>{},onFocus:()=>{},onBlur:()=>{},fieldsLayoutComponent:i});export{d as default};
1
+ import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import r from"../../internal/SecuredFields/SFP/SecuredFieldsProvider.js";import s from"../../internal/Alert/Alert.js";import o from"./GiftcardResult.js";import{useCoreContext as a}from"../../../core/Context/CoreProvider.js";import{GIFT_CARD as n}from"../../internal/SecuredFields/lib/constants.js";import{GiftCardFields as i}from"./GiftcardFields.js";import{useSRPanelForGiftcardErrors as c}from"./useSRPanelForGiftcardErrors.js";import{useAmount as l}from"../../../core/Context/AmountProvider.js";function u(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function p(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},s=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),s.forEach(function(e){u(t,e,r[e])})}return t}function d(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e.push.apply(e,r)}return e}(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}class h extends t{generateBalanceCheckErrors(t){const e={};return null===t||(e.encryptedCardNumber={isValid:!1,errorMessage:`error.giftcard.${t}`,error:t}),e}isBalanceCheckError(t){return["no-balance","card-error","currency-error"].includes(t)}render(t,{focusedElement:i,balance:u,transactionLimit:h,isValidating:m,transformedErrors:f}){const{i18n:y}=a(),{amount:b}=l();c({errors:f,isValidating:m,setIsValidating:this.setIsValidating,sfp:this.sfp});const g=(null==h?void 0:h.value)<(null==u?void 0:u.value)?h:u,O=(null==g?void 0:g.value)>=(null==b?void 0:b.value);if(g&&O)return e(o,{balance:u,transactionLimit:h,makePayment:t.makePayment,status:this.state.status,makeBalanceCheck:t.makeBalanceCheck,showPayButton:this.props.showPayButton,payButton:this.props.payButton});const j=t=>t.errors.encryptedCardNumber?y.get(t.errors.encryptedCardNumber):f.encryptedCardNumber?y.get(f.encryptedCardNumber.errorMessage):null;return e("div",{className:"adyen-checkout__giftcard"},"error"===this.state.status&&e(s,{icon:"cross"},y.get("error.message.unknown")),e(r,d(p({},this.props),{ref:t=>{this.sfp=t},onChange:this.onChange,onFocus:this.handleFocus,onSubmitAnalytics:t.onSubmitAnalytics,type:n,componentType:t.type,render:({setRootNode:t,setFocusOn:e},r)=>this.props.fieldsLayoutComponent({i18n:y,pinRequired:this.props.pinRequired,focusedElement:i,getCardErrorMessage:j,setRootNode:t,setFocusOn:e,sfpState:r})})),this.props.showPayButton&&this.props.payButton({status:this.state.status,onClick:this.props.makeBalanceCheck,label:y.get("applyGiftcard")}))}constructor(...t){super(...t),u(this,"state",{status:"ready",data:{},balance:null,transactionLimit:null,focusedElement:!1,isValid:!1,sfpState:{},isValidating:!1,transformedErrors:{}}),u(this,"sfp",void 0),u(this,"mapErrorsToValidationObjects",()=>this.sfp?this.sfp.mapErrorsToValidationRuleResult():{}),u(this,"updateTransformedErrors",t=>{const e=p({},this.mapErrorsToValidationObjects(),t);this.setState({transformedErrors:e})}),u(this,"onChange",t=>{this.setState({sfpState:t},()=>this.updateTransformedErrors()),this.props.onChange({data:t.data,isValid:t.isSfpValid})}),u(this,"handleFocus",t=>{this.setState({focusedElement:t.currentFocusObject});!0===t.focus?this.props.onFocus(t):this.props.onBlur(t)}),u(this,"setBalance",({balance:t,transactionLimit:e})=>{this.setState({balance:t,transactionLimit:e})}),u(this,"setBalanceCheckErrors",t=>{if(this.isBalanceCheckError(t)){const e=this.generateBalanceCheckErrors(t);this.updateTransformedErrors(e)}}),u(this,"showValidation",()=>{var t;this.setState({isValidating:!0}),null===(t=this.sfp)||void 0===t||t.showValidation()}),u(this,"setIsValidating",t=>{this.setState({isValidating:t})})}}u(h,"defaultProps",{pinRequired:!0,expiryDateRequired:!1,onChange:()=>{},onFocus:()=>{},onBlur:()=>{},fieldsLayoutComponent:i});export{h as default};
2
2
  //# sourceMappingURL=GiftcardComponent.js.map
@@ -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';\nimport { useSRPanelForGiftcardErrors } from './useSRPanelForGiftcardErrors';\nimport { GiftCardBalanceCheckErrorType } from '../types';\nimport type { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\n\ninterface GiftcardComponentProps {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n\n makeBalanceCheck: (event) => void;\n makePayment: (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 onSubmitAnalytics?: (event: AbstractAnalyticsEvent) => 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 sfpState: {},\n isValidating: false,\n transformedErrors: {}\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: SecuredFieldsProvider;\n\n /**\n * Maps string error codes from SecuredFields to validation rule objects\n */\n public mapErrorsToValidationObjects = () => {\n // Use the sfp reference to call mapErrorsToValidationRuleResult\n if (!this.sfp) return {};\n return this.sfp.mapErrorsToValidationRuleResult();\n };\n\n private updateTransformedErrors = (balanceCheckErrors?: Record<string, any>) => {\n const transformedErrors = this.mapErrorsToValidationObjects();\n\n const mergedErrors = { ...transformedErrors, ...balanceCheckErrors };\n\n this.setState({ transformedErrors: mergedErrors });\n };\n\n public onChange = sfpState => {\n this.setState({ sfpState }, () => this.updateTransformedErrors());\n\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\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 /**\n * Generates balance check errors in the same format as SFP errors\n * Compatible with the transformedErrors structure\n */\n private generateBalanceCheckErrors(errorType?: GiftCardBalanceCheckErrorType | null): Record<string, any> {\n const balanceCheckErrors: Record<string, any> = {};\n\n // This is the field that the error is associated with, only used for SR logic\n const fieldToAnnounce = 'encryptedCardNumber';\n\n // If errorType is null, clear errors\n if (errorType === null) {\n return balanceCheckErrors;\n }\n\n // Create error in the same format as SFP errors for consistency\n balanceCheckErrors[fieldToAnnounce] = {\n isValid: false,\n errorMessage: `error.giftcard.${errorType}`,\n error: errorType\n };\n\n return balanceCheckErrors;\n }\n\n /**\n * Checks if a status represents a balance check error\n */\n private isBalanceCheckError(status: string): boolean {\n return ['no-balance', 'card-error', 'currency-error'].includes(status);\n }\n\n /**\n * Method called by GiftcardElement to set balance check errors only\n */\n public setBalanceCheckErrors = (errorType: GiftCardBalanceCheckErrorType | null): void => {\n // Check if the errors should be displayed\n if (this.isBalanceCheckError(errorType)) {\n // Generate balance check errors in the style of useForm\n // This is usefull because then we can use the same logic for SF and balance check errors\n // Also we can use the same logic for SRPanel errors\n const balanceCheckErrors = this.generateBalanceCheckErrors(errorType);\n this.updateTransformedErrors(balanceCheckErrors);\n }\n };\n\n public showValidation = () => {\n this.setState({ isValidating: true });\n\n // Validate SecuredFields\n this.sfp?.showValidation();\n };\n\n render(props, { focusedElement, balance, transactionLimit, isValidating, transformedErrors }) {\n const { i18n } = useCoreContext();\n\n // Handle SRPanel errors in render with transformed error objects\n useSRPanelForGiftcardErrors({\n errors: transformedErrors,\n isValidating,\n sfp: this.sfp\n });\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 (\n <GiftcardResult\n amount={this.props.amount}\n balance={balance}\n transactionLimit={transactionLimit}\n makePayment={props.makePayment}\n status={this.state.status}\n makeBalanceCheck={props.makeBalanceCheck}\n showPayButton={this.props.showPayButton}\n payButton={this.props.payButton}\n />\n );\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n // This logic is a bit of a hack, but it's the only way to get the error message for balance check errors\n // In the future we should move this logic to useForm\n if (transformedErrors.encryptedCardNumber) {\n return i18n.get(transformedErrors.encryptedCardNumber.errorMessage);\n }\n\n return null;\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 onSubmitAnalytics={props.onSubmitAnalytics}\n type={GIFT_CARD}\n componentType={props.type}\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.makeBalanceCheck,\n label: i18n.get('applyGiftcard')\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","generateBalanceCheckErrors","errorType","balanceCheckErrors","isValid","errorMessage","error","isBalanceCheckError","status","includes","render","props","focusedElement","balance","transactionLimit","isValidating","transformedErrors","_this_props_amount","i18n","useCoreContext","useSRPanelForGiftcardErrors","errors","sfp","this","transactionAmount","value","hasEnoughBalance","amount","h","GiftcardResult","makePayment","state","makeBalanceCheck","showPayButton","payButton","getCardErrorMessage","sfpState","encryptedCardNumber","get","div","className","Alert","icon","SecuredFieldsProvider","ref","onChange","onFocus","handleFocus","onSubmitAnalytics","type","GIFT_CARD","componentType","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","onClick","label","super","args","_define_property","data","mapErrorsToValidationObjects","mapErrorsToValidationRuleResult","updateTransformedErrors","mergedErrors","_object_spread","setState","isSfpValid","e","currentFocusObject","focus","onBlur","setBalance","setBalanceCheckErrors","showValidation","_this_sfp","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"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"}
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 { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\nimport { useSRPanelForGiftcardErrors } from './useSRPanelForGiftcardErrors';\nimport { GiftCardBalanceCheckErrorType } from '../types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport { useAmount } from '../../../core/Context/AmountProvider';\nimport type { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\n\ninterface GiftcardComponentProps {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n makeBalanceCheck: (event) => void;\n makePayment: (event) => void;\n showPayButton: boolean;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyPress?: (o: KeyboardEvent) => void;\n onSubmitAnalytics?: (event: AbstractAnalyticsEvent) => 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 sfpState: {},\n isValidating: false,\n transformedErrors: {}\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: SecuredFieldsProvider;\n\n /**\n * Maps string error codes from SecuredFields to validation rule objects\n */\n public mapErrorsToValidationObjects = () => {\n // Use the sfp reference to call mapErrorsToValidationRuleResult\n if (!this.sfp) return {};\n return this.sfp.mapErrorsToValidationRuleResult();\n };\n\n private updateTransformedErrors = (balanceCheckErrors?: Record<string, any>) => {\n const transformedErrors = this.mapErrorsToValidationObjects();\n\n const mergedErrors = { ...transformedErrors, ...balanceCheckErrors };\n\n this.setState({ transformedErrors: mergedErrors });\n };\n\n public onChange = sfpState => {\n this.setState({ sfpState }, () => this.updateTransformedErrors());\n\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\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 /**\n * Generates balance check errors in the same format as SFP errors\n * Compatible with the transformedErrors structure\n */\n private generateBalanceCheckErrors(errorType?: GiftCardBalanceCheckErrorType | null): Record<string, any> {\n const balanceCheckErrors: Record<string, any> = {};\n\n // This is the field that the error is associated with, only used for SR logic\n const fieldToAnnounce = 'encryptedCardNumber';\n\n // If errorType is null, clear errors\n if (errorType === null) {\n return balanceCheckErrors;\n }\n\n // Create error in the same format as SFP errors for consistency\n balanceCheckErrors[fieldToAnnounce] = {\n isValid: false,\n errorMessage: `error.giftcard.${errorType}`,\n error: errorType\n };\n\n return balanceCheckErrors;\n }\n\n /**\n * Checks if a status represents a balance check error\n */\n private isBalanceCheckError(status: string): boolean {\n return ['no-balance', 'card-error', 'currency-error'].includes(status);\n }\n\n /**\n * Method called by GiftcardElement to set balance check errors only\n */\n public setBalanceCheckErrors = (errorType: GiftCardBalanceCheckErrorType | null): void => {\n // Check if the errors should be displayed\n if (this.isBalanceCheckError(errorType)) {\n // Generate balance check errors in the style of useForm\n // This is usefull because then we can use the same logic for SF and balance check errors\n // Also we can use the same logic for SRPanel errors\n const balanceCheckErrors = this.generateBalanceCheckErrors(errorType);\n this.updateTransformedErrors(balanceCheckErrors);\n }\n };\n\n public showValidation = () => {\n this.setState({ isValidating: true });\n\n // Validate SecuredFields\n this.sfp?.showValidation();\n };\n\n public setIsValidating = (val: boolean) => {\n this.setState({ isValidating: val });\n };\n\n render(props, { focusedElement, balance, transactionLimit, isValidating, transformedErrors }) {\n const { i18n } = useCoreContext();\n const { amount } = useAmount();\n\n // Handle SRPanel errors in render with transformed error objects\n useSRPanelForGiftcardErrors({\n errors: transformedErrors,\n isValidating,\n setIsValidating: this.setIsValidating,\n sfp: this.sfp\n });\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return (\n <GiftcardResult\n balance={balance}\n transactionLimit={transactionLimit}\n makePayment={props.makePayment}\n status={this.state.status}\n makeBalanceCheck={props.makeBalanceCheck}\n showPayButton={this.props.showPayButton}\n payButton={this.props.payButton}\n />\n );\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n // This logic is a bit of a hack, but it's the only way to get the error message for balance check errors\n // In the future we should move this logic to useForm\n if (transformedErrors.encryptedCardNumber) {\n return i18n.get(transformedErrors.encryptedCardNumber.errorMessage);\n }\n\n return null;\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 onSubmitAnalytics={props.onSubmitAnalytics}\n type={GIFT_CARD}\n componentType={props.type}\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.makeBalanceCheck,\n label: i18n.get('applyGiftcard')\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","generateBalanceCheckErrors","errorType","balanceCheckErrors","isValid","errorMessage","error","isBalanceCheckError","status","includes","render","props","focusedElement","balance","transactionLimit","isValidating","transformedErrors","i18n","useCoreContext","amount","useAmount","useSRPanelForGiftcardErrors","errors","setIsValidating","this","sfp","transactionAmount","value","hasEnoughBalance","h","GiftcardResult","makePayment","state","makeBalanceCheck","showPayButton","payButton","getCardErrorMessage","sfpState","encryptedCardNumber","get","div","className","Alert","icon","SecuredFieldsProvider","ref","onChange","onFocus","handleFocus","onSubmitAnalytics","type","GIFT_CARD","componentType","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","onClick","label","super","args","_define_property","data","mapErrorsToValidationObjects","mapErrorsToValidationRuleResult","updateTransformedErrors","mergedErrors","_object_spread","setState","isSfpValid","e","currentFocusObject","focus","onBlur","setBalance","setBalanceCheckErrors","showValidation","_this_sfp","val","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as a}from"../../../external/preact/dist/preact.js";import{useCoreContext as e}from"../../../core/Context/CoreProvider.js";function t({amount:t,balance:c,transactionLimit:n,status:l,makePayment:u,showPayButton:_,payButton:r}){const{i18n:s}=e(),i=t.value>(null==n?void 0:n.value)?n:t,o=(null==c?void 0:c.value)-(null==i?void 0:i.value);return a("div",{className:"adyen-checkout__giftcard-result"},a("ul",{className:"adyen-checkout__giftcard-result__balance"},a("li",{className:"adyen-checkout__giftcard-result__balance__item"},a("span",{className:"adyen-checkout__giftcard-result__balance__title"},s.get("giftcardBalance")),a("span",{className:"adyen-checkout__giftcard-result__balance__value adyen-checkout__giftcard-result__balance__value--amount"},s.amount(c.value,c.currency))),n&&n.value&&a("li",{className:"adyen-checkout__giftcard-result__balance__item"},a("span",{className:"adyen-checkout__giftcard-result__balance__title adyen-checkout__giftcard-result__balance__title--transactionLimit"},s.get("giftcardTransactionLimit",{values:{amount:s.amount(n.value,n.currency)}})))),_&&r({amount:i,status:l,onClick:u}),a("p",{className:"adyen-checkout__giftcard-result__remaining-balance"},s.get("partialPayment.remainingBalance",{values:{amount:s.amount(o,c.currency)}})))}export{t as default};
1
+ import{createElement as a}from"../../../external/preact/dist/preact.js";import{useCoreContext as e}from"../../../core/Context/CoreProvider.js";import{useAmount as t}from"../../../core/Context/AmountProvider.js";function c({balance:c,transactionLimit:n,status:l,makePayment:u,showPayButton:r,payButton:_}){const{i18n:s}=e(),{amount:i}=t(),o=i.value>(null==n?void 0:n.value)?n:i,m=(null==c?void 0:c.value)-(null==o?void 0:o.value);return a("div",{className:"adyen-checkout__giftcard-result"},a("ul",{className:"adyen-checkout__giftcard-result__balance"},a("li",{className:"adyen-checkout__giftcard-result__balance__item"},a("span",{className:"adyen-checkout__giftcard-result__balance__title"},s.get("giftcardBalance")),a("span",{className:"adyen-checkout__giftcard-result__balance__value adyen-checkout__giftcard-result__balance__value--amount"},s.amount(c.value,c.currency))),n&&n.value&&a("li",{className:"adyen-checkout__giftcard-result__balance__item"},a("span",{className:"adyen-checkout__giftcard-result__balance__title adyen-checkout__giftcard-result__balance__title--transactionLimit"},s.get("giftcardTransactionLimit",{values:{amount:s.amount(n.value,n.currency)}})))),r&&_({customAmount:o,status:l,onClick:u}),a("p",{className:"adyen-checkout__giftcard-result__remaining-balance"},s.get("partialPayment.remainingBalance",{values:{amount:s.amount(m,c.currency)}})))}export{c as default};
2
2
  //# sourceMappingURL=GiftcardResult.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GiftcardResult.js","sources":["../../../../../src/components/Giftcard/components/GiftcardResult.tsx"],"sourcesContent":["import { h } from 'preact';\nimport './GiftcardResult.scss';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\n\ninterface GiftcardResultProps {\n amount: PaymentAmount;\n balance: PaymentAmount;\n transactionLimit: PaymentAmount;\n status: string;\n makePayment: () => void;\n makeBalanceCheck: () => void;\n showPayButton: boolean;\n payButton(props?: PayButtonProps): h.JSX.Element;\n}\n\nfunction GiftcardResult({ amount, balance, transactionLimit, status, makePayment, showPayButton, payButton }: GiftcardResultProps) {\n const { i18n } = useCoreContext();\n // Calculate the transaction amount based on balance and transaction limit\n const transactionAmount = amount.value > transactionLimit?.value ? transactionLimit : amount;\n const remainingBalance = balance?.value - transactionAmount?.value;\n\n return (\n <div className=\"adyen-checkout__giftcard-result\">\n <ul className=\"adyen-checkout__giftcard-result__balance\">\n <li className=\"adyen-checkout__giftcard-result__balance__item\">\n <span className=\"adyen-checkout__giftcard-result__balance__title\">{i18n.get('giftcardBalance')}</span>\n <span className=\"adyen-checkout__giftcard-result__balance__value adyen-checkout__giftcard-result__balance__value--amount\">\n {i18n.amount(balance.value, balance.currency)}\n </span>\n </li>\n {transactionLimit && transactionLimit.value && (\n <li className=\"adyen-checkout__giftcard-result__balance__item\">\n <span className=\"adyen-checkout__giftcard-result__balance__title adyen-checkout__giftcard-result__balance__title--transactionLimit\">\n {i18n.get('giftcardTransactionLimit', {\n values: { amount: i18n.amount(transactionLimit.value, transactionLimit.currency) }\n })}\n </span>\n </li>\n )}\n </ul>\n\n {showPayButton &&\n payButton({\n amount: transactionAmount,\n status: status,\n onClick: makePayment\n })}\n\n <p className=\"adyen-checkout__giftcard-result__remaining-balance\">\n {i18n.get('partialPayment.remainingBalance', {\n values: { amount: i18n.amount(remainingBalance, balance.currency) }\n })}\n </p>\n </div>\n );\n}\n\nexport default GiftcardResult;\n"],"names":["GiftcardResult","amount","balance","transactionLimit","status","makePayment","showPayButton","payButton","i18n","useCoreContext","transactionAmount","value","remainingBalance","h","div","className","ul","li","span","get","currency","values","onClick","p"],"mappings":"+IAiBA,SAASA,GAAeC,OAAEA,EAAMC,QAAEA,EAAOC,iBAAEA,EAAgBC,OAAEA,EAAMC,YAAEA,EAAWC,cAAEA,EAAaC,UAAEA,IAC7F,MAAMC,KAAEA,GAASC,IAEXC,EAAoBT,EAAOU,OAAQR,aAAAA,EAAAA,EAAkBQ,OAAQR,EAAmBF,EAChFW,GAAmBV,aAAAA,EAAAA,EAASS,QAAQD,aAAAA,EAAAA,EAAmBC,OAE7D,OACIE,EAACC,MAAAA,CAAIC,UAAU,mCACXF,EAACG,KAAAA,CAAGD,UAAU,4CACVF,EAACI,KAAAA,CAAGF,UAAU,kDACVF,EAACK,OAAAA,CAAKH,UAAU,mDAAmDP,EAAKW,IAAI,oBAC5EN,EAACK,OAAAA,CAAKH,UAAU,2GACXP,EAAKP,OAAOC,EAAQS,MAAOT,EAAQkB,YAG3CjB,GAAoBA,EAAiBQ,OAClCE,EAACI,KAAAA,CAAGF,UAAU,kDACVF,EAACK,OAAAA,CAAKH,UAAU,qHACXP,EAAKW,IAAI,2BAA4B,CAClCE,OAAQ,CAAEpB,OAAQO,EAAKP,OAAOE,EAAiBQ,MAAOR,EAAiBiB,gBAO1Fd,GACGC,EAAU,CACNN,OAAQS,EACRN,OAAQA,EACRkB,QAASjB,IAGjBQ,EAACU,IAAAA,CAAER,UAAU,sDACRP,EAAKW,IAAI,kCAAmC,CACzCE,OAAQ,CAAEpB,OAAQO,EAAKP,OAAOW,EAAkBV,EAAQkB,cAK5E"}
1
+ {"version":3,"file":"GiftcardResult.js","sources":["../../../../../src/components/Giftcard/components/GiftcardResult.tsx"],"sourcesContent":["import { h } from 'preact';\nimport './GiftcardResult.scss';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport { useAmount } from '../../../core/Context/AmountProvider';\n\ninterface GiftcardResultProps {\n balance: PaymentAmount;\n transactionLimit: PaymentAmount;\n status: string;\n makePayment: () => void;\n makeBalanceCheck: () => void;\n showPayButton: boolean;\n payButton(props: PayButtonProps): h.JSX.Element;\n}\n\nfunction GiftcardResult({ balance, transactionLimit, status, makePayment, showPayButton, payButton }: GiftcardResultProps) {\n const { i18n } = useCoreContext();\n const { amount } = useAmount();\n\n // Calculate the transaction amount based on balance and transaction limit\n const transactionAmount = amount.value > transactionLimit?.value ? transactionLimit : amount;\n const remainingBalance = balance?.value - transactionAmount?.value;\n\n return (\n <div className=\"adyen-checkout__giftcard-result\">\n <ul className=\"adyen-checkout__giftcard-result__balance\">\n <li className=\"adyen-checkout__giftcard-result__balance__item\">\n <span className=\"adyen-checkout__giftcard-result__balance__title\">{i18n.get('giftcardBalance')}</span>\n <span className=\"adyen-checkout__giftcard-result__balance__value adyen-checkout__giftcard-result__balance__value--amount\">\n {i18n.amount(balance.value, balance.currency)}\n </span>\n </li>\n {transactionLimit && transactionLimit.value && (\n <li className=\"adyen-checkout__giftcard-result__balance__item\">\n <span className=\"adyen-checkout__giftcard-result__balance__title adyen-checkout__giftcard-result__balance__title--transactionLimit\">\n {i18n.get('giftcardTransactionLimit', {\n values: { amount: i18n.amount(transactionLimit.value, transactionLimit.currency) }\n })}\n </span>\n </li>\n )}\n </ul>\n\n {showPayButton &&\n payButton({\n customAmount: transactionAmount,\n status: status,\n onClick: makePayment\n })}\n\n <p className=\"adyen-checkout__giftcard-result__remaining-balance\">\n {i18n.get('partialPayment.remainingBalance', {\n values: { amount: i18n.amount(remainingBalance, balance.currency) }\n })}\n </p>\n </div>\n );\n}\n\nexport default GiftcardResult;\n"],"names":["GiftcardResult","balance","transactionLimit","status","makePayment","showPayButton","payButton","i18n","useCoreContext","amount","useAmount","transactionAmount","value","remainingBalance","h","div","className","ul","li","span","get","currency","values","customAmount","onClick","p"],"mappings":"mNAiBA,SAASA,GAAeC,QAAEA,EAAOC,iBAAEA,EAAgBC,OAAEA,EAAMC,YAAEA,EAAWC,cAAEA,EAAaC,UAAEA,IACrF,MAAMC,KAAEA,GAASC,KACXC,OAAEA,GAAWC,IAGbC,EAAoBF,EAAOG,OAAQV,aAAAA,EAAAA,EAAkBU,OAAQV,EAAmBO,EAChFI,GAAmBZ,eAAAA,EAASW,QAAQD,aAAAA,EAAAA,EAAmBC,OAE7D,OACIE,EAACC,MAAAA,CAAIC,UAAU,mCACXF,EAACG,KAAAA,CAAGD,UAAU,4CACVF,EAACI,KAAAA,CAAGF,UAAU,kDACVF,EAACK,OAAAA,CAAKH,UAAU,mDAAmDT,EAAKa,IAAI,oBAC5EN,EAACK,OAAAA,CAAKH,UAAU,2GACXT,EAAKE,OAAOR,EAAQW,MAAOX,EAAQoB,YAG3CnB,GAAoBA,EAAiBU,OAClCE,EAACI,KAAAA,CAAGF,UAAU,kDACVF,EAACK,OAAAA,CAAKH,UAAU,qHACXT,EAAKa,IAAI,2BAA4B,CAClCE,OAAQ,CAAEb,OAAQF,EAAKE,OAAOP,EAAiBU,MAAOV,EAAiBmB,gBAO1FhB,GACGC,EAAU,CACNiB,aAAcZ,EACdR,OAAQA,EACRqB,QAASpB,IAGjBU,EAACW,IAAAA,CAAET,UAAU,sDACRT,EAAKa,IAAI,kCAAmC,CACzCE,OAAQ,CAAEb,OAAQF,EAAKE,OAAOI,EAAkBZ,EAAQoB,cAK5E"}
@@ -1,2 +1,2 @@
1
- import{useState as o,useEffect as s}from"../../../external/preact/hooks/dist/hooks.js";import e from"../../../core/Errors/useSRPanelContext.js";import{usePrevious as r}from"../../../utils/hookUtils.js";import{ERROR_ACTION_BLUR_SCENARIO as t,ERROR_ACTION_FOCUS_FIELD as l}from"../../../core/Errors/constants.js";import{getArrayDifferences as i}from"../../../utils/arrayUtils.js";const n=({errors:n,isValidating:a,sfp:c})=>{const[u,d]=o(null),m=r(u),{setSRMessagesFromObjects:p,setSRMessagesFromStrings:f,clearSRPanel:y,shouldMoveFocusSR:S}=e(),v=["encryptedCardNumber","encryptedExpiryDate","encryptedSecurityCode"];s(()=>{try{const o=null==p?void 0:p({}),s=null==o?void 0:o({errors:n,isValidating:a,layout:v}),e=null==s?void 0:s.currentErrorsSortedByLayout;switch(d(e),null==s?void 0:s.action){case l:S&&(null==c||c.setFocusOn(null==s?void 0:s.fieldToFocus)),setTimeout(()=>{"boolean"==typeof a&&(a=!1)},300);break;case t:{const o=i(e,m,"field"),s=null==o?void 0:o[0];if(s){const o=!0?s.errorMessage:null;f(o)}else y();break}}}catch(o){}},[n])};export{n as useSRPanelForGiftcardErrors};
1
+ import{useState as o,useEffect as e}from"../../../external/preact/hooks/dist/hooks.js";import s from"../../../core/Errors/useSRPanelContext.js";import{usePrevious as r}from"../../../utils/hookUtils.js";import{ERROR_ACTION_BLUR_SCENARIO as t,ERROR_ACTION_FOCUS_FIELD as l}from"../../../core/Errors/constants.js";import{getArrayDifferences as i}from"../../../utils/arrayUtils.js";import n from"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{windowScrollTo as a}from"../../../utils/windowScrollTo.js";const u=({errors:u,isValidating:c,setIsValidating:d,sfp:m})=>{const[f,S]=o(null),p=r(f),{setSRMessagesFromObjects:y,setSRMessagesFromStrings:v,clearSRPanel:g,shouldMoveFocusSR:j}=s(),F=["encryptedCardNumber","encryptedExpiryDate","encryptedSecurityCode"];e(()=>{try{const o=null==y?void 0:y({}),e=null==o?void 0:o({errors:u,isValidating:c,layout:F}),s=null==e?void 0:e.currentErrorsSortedByLayout;switch(S(s),null==e?void 0:e.action){case l:if(j&&c){if(n.__IS_IOS){const o=null==m?void 0:m.getRootNode(),s=null==o?void 0:o.querySelector(`[data-id="${null==e?void 0:e.fieldToFocus}"]`);a(s)}null==m||m.setFocusOn(null==e?void 0:e.fieldToFocus)}setTimeout(()=>{d(!1)},300);break;case t:{const o=i(s,p,"field"),e=null==o?void 0:o[0];if(e){const o=!0?e.errorMessage:null;v(o)}else g();break}}}catch(o){}},[u])};export{u as useSRPanelForGiftcardErrors};
2
2
  //# sourceMappingURL=useSRPanelForGiftcardErrors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSRPanelForGiftcardErrors.js","sources":["../../../../../src/components/Giftcard/components/useSRPanelForGiftcardErrors.ts"],"sourcesContent":["import { useEffect, useState } from 'preact/hooks';\nimport { SetSRMessagesReturnObject } from '../../../core/Errors/types';\nimport useSRPanelContext from '../../../core/Errors/useSRPanelContext';\nimport { usePrevious } from '../../../utils/hookUtils';\nimport { ERROR_ACTION_BLUR_SCENARIO, ERROR_ACTION_FOCUS_FIELD } from '../../../core/Errors/constants';\nimport { getArrayDifferences } from '../../../utils/arrayUtils';\nimport { SetSRMessagesReturnFn } from '../../../core/Errors/SRPanelProvider';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\n\n/**\n * Interface for transformed error objects returned from mapErrorsToValidationRuleResult\n */\ninterface TransformedError {\n isValid: boolean;\n errorMessage: string;\n errorI18n: string;\n error: string;\n rootNode: HTMLElement;\n}\n\n/**\n * Interface for errors object with transformed error entries\n */\ninterface TransformedErrorsObj {\n [key: string]: TransformedError | null;\n}\n\n/**\n * Props interface for the error handling hook\n */\ninterface UseSRPanelForGiftcardErrorsProps {\n errors: TransformedErrorsObj;\n isValidating: boolean;\n sfp: SecuredFieldsProvider;\n}\n\n/**\n * Interface for sorted error objects used for comparison\n */\ninterface SortedErrorObject {\n field: string;\n errorMessage: string;\n}\n\n/**\n * Custom hook for handling gift card component errors and screen reader announcements\n *\n * This hook manages both visual and screen reader error announcements for the gift card component,\n * handling both blur-based validation errors and form-wide validation errors.\n */\nconst useSRPanelForGiftcardErrors = ({ errors, isValidating, sfp }: UseSRPanelForGiftcardErrorsProps) => {\n // Track sorted list of errors for comparison with previous state\n const [sortedErrorList, setSortedErrorList] = useState<SortedErrorObject[]>(null);\n // Track previous error list for detecting changes\n const previousSortedErrors = usePrevious(sortedErrorList);\n\n // Get SRPanel context for managing screen reader messages\n const { setSRMessagesFromObjects, setSRMessagesFromStrings, clearSRPanel, shouldMoveFocusSR } = useSRPanelContext();\n\n // Fixed layout array defining the order of fields for error sorting\n // Assume fields in this order, and adds encryptedExpiryDate for MealVoucher, this is ignored in giftcard\n const layout = ['encryptedCardNumber', 'encryptedExpiryDate', 'encryptedSecurityCode'];\n\n useEffect(() => {\n try {\n // Create a partial function for setting SR messages with fixed configuration\n const setMessages: SetSRMessagesReturnFn = setSRMessagesFromObjects?.({});\n // Set messages with current errors and layout\n\n // Unlike Card SR Panel, isValidating is a boolean\n const srPanelResp: SetSRMessagesReturnObject = setMessages?.({\n errors,\n isValidating,\n layout\n });\n\n // Store the sorted list of errors for comparison\n const currentErrorsSortedByLayout = srPanelResp?.currentErrorsSortedByLayout;\n setSortedErrorList(currentErrorsSortedByLayout);\n\n // Handle different error scenarios based on the action type\n switch (srPanelResp?.action) {\n case ERROR_ACTION_FOCUS_FIELD:\n // When a field needs to be focused due to validation error\n if (shouldMoveFocusSR) {\n sfp?.setFocusOn(srPanelResp?.fieldToFocus);\n }\n // Remove 'showValidation' mode - allowing time for collation of all the fields in error whilst it is 'showValidation' mode (some errors come in a second render pass)\n setTimeout(() => {\n if (typeof isValidating === 'boolean') {\n isValidating = false;\n }\n }, 300);\n break;\n\n case ERROR_ACTION_BLUR_SCENARIO: {\n // Handle blur-based validation errors\n const difference = getArrayDifferences(currentErrorsSortedByLayout, previousSortedErrors, 'field');\n const latestErrorMsg = difference?.[0];\n\n if (latestErrorMsg) {\n // Only announce blur-based errors to screen reader\n const isBlurBasedError = true;\n const latestSRError = isBlurBasedError ? latestErrorMsg.errorMessage : null;\n setSRMessagesFromStrings(latestSRError);\n } else {\n // Clear SR panel if there are no more errors\n clearSRPanel();\n }\n break;\n }\n }\n } catch (_) {\n // Fail silently - we don't want to break the component if SRPanel fails\n }\n }, [errors]);\n};\n\n// Export all interfaces and the hook\nexport type { TransformedError, TransformedErrorsObj };\n\nexport { useSRPanelForGiftcardErrors };\n"],"names":["useSRPanelForGiftcardErrors","errors","isValidating","sfp","sortedErrorList","setSortedErrorList","useState","previousSortedErrors","usePrevious","setSRMessagesFromObjects","setSRMessagesFromStrings","clearSRPanel","shouldMoveFocusSR","useSRPanelContext","layout","useEffect","setMessages","srPanelResp","currentErrorsSortedByLayout","action","ERROR_ACTION_FOCUS_FIELD","setFocusOn","fieldToFocus","setTimeout","ERROR_ACTION_BLUR_SCENARIO","difference","getArrayDifferences","latestErrorMsg","latestSRError","errorMessage","_"],"mappings":"0XAkDA,MAAMA,EAA8B,EAAGC,SAAQC,eAAcC,UAEzD,MAAOC,EAAiBC,GAAsBC,EAA8B,MAEtEC,EAAuBC,EAAYJ,IAGnCK,yBAAEA,EAAwBC,yBAAEA,EAAwBC,aAAEA,EAAYC,kBAAEA,GAAsBC,IAI1FC,EAAS,CAAC,sBAAuB,sBAAuB,yBAE9DC,EAAU,KACN,IAEI,MAAMC,EAAqCP,aAAAA,EAAAA,EAA2B,IAIhEQ,EAAyCD,aAAAA,EAAAA,EAAc,CACzDf,SACAC,eACAY,WAIEI,EAA8BD,aAAAA,EAAAA,EAAaC,4BAIjD,OAHAb,EAAmBa,GAGXD,aAAAA,EAAAA,EAAaE,QACjB,KAAKC,EAEGR,IACAT,SAAAA,EAAKkB,WAAWJ,aAAAA,EAAAA,EAAaK,eAGjCC,WAAW,KACqB,kBAAjBrB,IACPA,GAAe,IAEpB,KACH,MAEJ,KAAKsB,EAA4B,CAE7B,MAAMC,EAAaC,EAAoBR,EAA6BX,EAAsB,SACpFoB,EAAiBF,aAAAA,EAAAA,EAAa,GAEpC,GAAIE,EAAgB,CAEhB,MACMC,GADmB,EACgBD,EAAeE,aAAe,KACvEnB,EAAyBkB,EAC7B,MAEIjB,IAEJ,KACJ,EAER,CAAE,MAAOmB,GAET,GACD,CAAC7B"}
1
+ {"version":3,"file":"useSRPanelForGiftcardErrors.js","sources":["../../../../../src/components/Giftcard/components/useSRPanelForGiftcardErrors.ts"],"sourcesContent":["import { useEffect, useState } from 'preact/hooks';\nimport { SetSRMessagesReturnObject } from '../../../core/Errors/types';\nimport useSRPanelContext from '../../../core/Errors/useSRPanelContext';\nimport { usePrevious } from '../../../utils/hookUtils';\nimport { ERROR_ACTION_BLUR_SCENARIO, ERROR_ACTION_FOCUS_FIELD } from '../../../core/Errors/constants';\nimport { getArrayDifferences } from '../../../utils/arrayUtils';\nimport { SetSRMessagesReturnFn } from '../../../core/Errors/SRPanelProvider';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport ua from '../../internal/SecuredFields/lib/CSF/utils/userAgent';\nimport { windowScrollTo } from '../../../utils/windowScrollTo';\n\n/**\n * Interface for transformed error objects returned from mapErrorsToValidationRuleResult\n */\ninterface TransformedError {\n isValid: boolean;\n errorMessage: string;\n errorI18n: string;\n error: string;\n rootNode: HTMLElement;\n}\n\n/**\n * Interface for errors object with transformed error entries\n */\ninterface TransformedErrorsObj {\n [key: string]: TransformedError | null;\n}\n\n/**\n * Props interface for the error handling hook\n */\ninterface UseSRPanelForGiftcardErrorsProps {\n errors: TransformedErrorsObj;\n isValidating: boolean;\n setIsValidating: (val: boolean) => void;\n sfp: SecuredFieldsProvider;\n}\n\n/**\n * Interface for sorted error objects used for comparison\n */\ninterface SortedErrorObject {\n field: string;\n errorMessage: string;\n}\n\n/**\n * Custom hook for handling gift card component errors and screen reader announcements\n *\n * This hook manages both visual and screen reader error announcements for the gift card component,\n * handling both blur-based validation errors and form-wide validation errors.\n */\nconst useSRPanelForGiftcardErrors = ({ errors, isValidating, setIsValidating, sfp }: UseSRPanelForGiftcardErrorsProps) => {\n // Track sorted list of errors for comparison with previous state\n const [sortedErrorList, setSortedErrorList] = useState<SortedErrorObject[]>(null);\n // Track previous error list for detecting changes\n const previousSortedErrors = usePrevious(sortedErrorList);\n\n // Get SRPanel context for managing screen reader messages\n const { setSRMessagesFromObjects, setSRMessagesFromStrings, clearSRPanel, shouldMoveFocusSR } = useSRPanelContext();\n\n // Fixed layout array defining the order of fields for error sorting\n // Assume fields in this order, and adds encryptedExpiryDate for MealVoucher, this is ignored in giftcard\n const layout = ['encryptedCardNumber', 'encryptedExpiryDate', 'encryptedSecurityCode'];\n\n useEffect(() => {\n try {\n // Create a partial function for setting SR messages with fixed configuration\n const setMessages: SetSRMessagesReturnFn = setSRMessagesFromObjects?.({});\n // Set messages with current errors and layout\n\n // Unlike Card SR Panel, isValidating is a boolean\n const srPanelResp: SetSRMessagesReturnObject = setMessages?.({\n errors,\n isValidating,\n layout\n });\n\n // Store the sorted list of errors for comparison\n const currentErrorsSortedByLayout = srPanelResp?.currentErrorsSortedByLayout;\n setSortedErrorList(currentErrorsSortedByLayout);\n\n // Handle different error scenarios based on the action type\n switch (srPanelResp?.action) {\n case ERROR_ACTION_FOCUS_FIELD:\n // When a field needs to be focused due to validation error\n if (shouldMoveFocusSR && isValidating) {\n // Fix for iOS scrolling issues: can't programmatically set focus on a cross-origin element on iOS, so we scroll to it's label instead, so at least the element is in view\n if (ua.__IS_IOS) {\n const rootNode = sfp?.getRootNode();\n const elementToScrollTo: HTMLElement = rootNode?.querySelector(`[data-id=\"${srPanelResp?.fieldToFocus}\"]`);\n windowScrollTo(elementToScrollTo);\n }\n\n sfp?.setFocusOn(srPanelResp?.fieldToFocus);\n }\n // Remove 'showValidation' mode - allowing time for collation of all the fields in error whilst it is 'showValidation' mode (some errors come in a second render pass)\n setTimeout(() => {\n // Need to reset isValidating on the *state* of the Giftcard component (which is where isValidating comes from),\n // - otherwise it remains true and any subsequent click, *anywhere* in the UI, will trigger a second \"focus field\" event\n setIsValidating(false);\n }, 300);\n break;\n\n case ERROR_ACTION_BLUR_SCENARIO: {\n // Handle blur-based validation errors\n const difference = getArrayDifferences(currentErrorsSortedByLayout, previousSortedErrors, 'field');\n const latestErrorMsg = difference?.[0];\n\n if (latestErrorMsg) {\n // Only announce blur-based errors to screen reader\n const isBlurBasedError = true;\n const latestSRError = isBlurBasedError ? latestErrorMsg.errorMessage : null;\n setSRMessagesFromStrings(latestSRError);\n } else {\n // Clear SR panel if there are no more errors\n clearSRPanel();\n }\n break;\n }\n }\n } catch (_) {\n // Fail silently - we don't want to break the component if SRPanel fails\n }\n }, [errors]);\n};\n\n// Export all interfaces and the hook\nexport type { TransformedError, TransformedErrorsObj };\n\nexport { useSRPanelForGiftcardErrors };\n"],"names":["useSRPanelForGiftcardErrors","errors","isValidating","setIsValidating","sfp","sortedErrorList","setSortedErrorList","useState","previousSortedErrors","usePrevious","setSRMessagesFromObjects","setSRMessagesFromStrings","clearSRPanel","shouldMoveFocusSR","useSRPanelContext","layout","useEffect","setMessages","srPanelResp","currentErrorsSortedByLayout","action","ERROR_ACTION_FOCUS_FIELD","ua","__IS_IOS","rootNode","getRootNode","elementToScrollTo","querySelector","fieldToFocus","windowScrollTo","setFocusOn","setTimeout","ERROR_ACTION_BLUR_SCENARIO","difference","getArrayDifferences","latestErrorMsg","latestSRError","errorMessage","_"],"mappings":"mgBAqDA,MAAMA,EAA8B,EAAGC,SAAQC,eAAcC,kBAAiBC,UAE1E,MAAOC,EAAiBC,GAAsBC,EAA8B,MAEtEC,EAAuBC,EAAYJ,IAGnCK,yBAAEA,EAAwBC,yBAAEA,EAAwBC,aAAEA,EAAYC,kBAAEA,GAAsBC,IAI1FC,EAAS,CAAC,sBAAuB,sBAAuB,yBAE9DC,EAAU,KACN,IAEI,MAAMC,EAAqCP,aAAAA,EAAAA,EAA2B,IAIhEQ,EAAyCD,aAAAA,EAAAA,EAAc,CACzDhB,SACAC,eACAa,WAIEI,EAA8BD,aAAAA,EAAAA,EAAaC,4BAIjD,OAHAb,EAAmBa,GAGXD,aAAAA,EAAAA,EAAaE,QACjB,KAAKC,EAED,GAAIR,GAAqBX,EAAc,CAEnC,GAAIoB,EAAGC,SAAU,CACb,MAAMC,EAAWpB,aAAAA,EAAAA,EAAKqB,cAChBC,EAAiCF,aAAAA,EAAAA,EAAUG,cAAc,aAAaT,aAAAA,EAAAA,EAAaU,kBACzFC,EAAeH,EACnB,CAEAtB,SAAAA,EAAK0B,WAAWZ,aAAAA,EAAAA,EAAaU,aACjC,CAEAG,WAAW,KAGP5B,GAAgB,IACjB,KACH,MAEJ,KAAK6B,EAA4B,CAE7B,MAAMC,EAAaC,EAAoBf,EAA6BX,EAAsB,SACpF2B,EAAiBF,aAAAA,EAAAA,EAAa,GAEpC,GAAIE,EAAgB,CAEhB,MACMC,GADmB,EACgBD,EAAeE,aAAe,KACvE1B,EAAyByB,EAC7B,MAEIxB,IAEJ,KACJ,EAER,CAAE,MAAO0B,GAET,GACD,CAACrC"}
@@ -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';\n\nimport type { AddressData, BrowserInfo, RawPaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\nimport { AnalyticsInfoEvent, InfoEventType, UiTarget } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { mapGooglePayBrands } from './utils/map-adyen-brands-to-googlepay-brands';\n\nconst DEFAULT_ALLOWED_CARD_NETWORKS: google.payments.api.CardNetwork[] = ['AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA'];\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 this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.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 if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, this.analytics, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @param paymentMethodId - Unique internal payment method ID\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string, paymentMethodId?: string): RawPaymentMethod {\n if (paymentMethodId) return this.core.paymentMethodsResponse.findById(paymentMethodId);\n\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props: GooglePayConfiguration): 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 const allowedCardNetworks = this.createAllowedCardNetworksValues({\n allowedCardNetworks: props.allowedCardNetworks,\n brands: props.brands\n });\n\n return {\n ...props,\n allowedCardNetworks,\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 /**\n * Generate the 'allowedCardNetworks' value used by Google Pay\n *\n * If the 'allowedCardNetworks' is defined in the Component configuration, it will be used. Otherwise we fallback\n * to use the 'brands' returned by the backoffice. It can be that 'brands' is not returned, which in this case we\n * set default values\n *\n * @param {object} brandsConfig\n * @param brandsConfig.allowedCardNetworks - Brands set in the component config\n * @param brandsConfig.brands - Brands returned by backend\n * @private\n */\n private createAllowedCardNetworksValues({\n allowedCardNetworks,\n brands\n }: {\n allowedCardNetworks?: google.payments.api.CardNetwork[];\n brands?: string[];\n }): google.payments.api.CardNetwork[] {\n if (allowedCardNetworks?.length > 0) return allowedCardNetworks;\n if (brands?.length > 0) return mapGooglePayBrands(brands);\n\n return DEFAULT_ALLOWED_CARD_NETWORKS;\n }\n\n protected override beforeRender(configSetByMerchant?: GooglePayConfiguration) {\n // We don't send 'rendered' events when rendering actions\n if (configSetByMerchant?.originalAction) {\n return;\n }\n\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.selected,\n target: UiTarget.instantPaymentButton\n });\n\n this.submitAnalytics(event);\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\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 public get isValid(): boolean {\n return true;\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 protected override componentToRender(): h.JSX.Element {\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":["DEFAULT_ALLOWED_CARD_NETWORKS","GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","paymentMethodId","this","core","paymentMethodsResponse","findById","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","allowedCardNetworks","createAllowedCardNetworksValues","brands","_object_spread_props","_object_spread","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","length","mapGooglePayBrands","beforeRender","configSetByMerchant","originalAction","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","expressPage","analytics","sendAnalytics","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","_this_props_icon","resources","getImage","componentToRender","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","super","_define_property","isInstantPayment","selected","target","UiTarget","instantPaymentButton","submitAnalytics","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","merchantId","GooglePayService","environment","googlepay","txVariants","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';\n\nimport type { AddressData, BrowserInfo, RawPaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\nimport { AnalyticsInfoEvent, InfoEventType, UiTarget } from '../../core/Analytics/events/AnalyticsInfoEvent';\nimport { mapGooglePayBrands } from './utils/map-adyen-brands-to-googlepay-brands';\n\nconst DEFAULT_ALLOWED_CARD_NETWORKS: google.payments.api.CardNetwork[] = ['AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA'];\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 this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.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 if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, this.analytics, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @param paymentMethodId - Unique internal payment method ID\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string, paymentMethodId?: string): RawPaymentMethod {\n if (paymentMethodId) return this.core.paymentMethodsResponse.findById(paymentMethodId);\n\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props: GooglePayConfiguration): 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 const allowedCardNetworks = this.createAllowedCardNetworksValues({\n allowedCardNetworks: props.allowedCardNetworks,\n brands: props.brands\n });\n\n return {\n ...props,\n allowedCardNetworks,\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 /**\n * Generate the 'allowedCardNetworks' value used by Google Pay\n *\n * If the 'allowedCardNetworks' is defined in the Component configuration, it will be used. Otherwise we fallback\n * to use the 'brands' returned by the backoffice. It can be that 'brands' is not returned, which in this case we\n * set default values\n *\n * @param {object} brandsConfig\n * @param brandsConfig.allowedCardNetworks - Brands set in the component config\n * @param brandsConfig.brands - Brands returned by backend\n * @private\n */\n private createAllowedCardNetworksValues({\n allowedCardNetworks,\n brands\n }: {\n allowedCardNetworks?: google.payments.api.CardNetwork[];\n brands?: string[];\n }): google.payments.api.CardNetwork[] {\n if (allowedCardNetworks?.length > 0) return allowedCardNetworks;\n if (brands?.length > 0) return mapGooglePayBrands(brands);\n\n return DEFAULT_ALLOWED_CARD_NETWORKS;\n }\n\n protected override beforeRender(configSetByMerchant?: GooglePayConfiguration) {\n // We don't send 'rendered' events when rendering actions\n if (configSetByMerchant?.originalAction) {\n return;\n }\n\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n const event = new AnalyticsInfoEvent({\n component: this.type,\n type: InfoEventType.selected,\n target: UiTarget.instantPaymentButton\n });\n\n this.submitAnalytics(event);\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\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 public get isValid(): boolean {\n return true;\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 protected override componentToRender(): h.JSX.Element {\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":["DEFAULT_ALLOWED_CARD_NETWORKS","GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","paymentMethodId","this","core","paymentMethodsResponse","findById","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","allowedCardNetworks","createAllowedCardNetworksValues","brands","_object_spread_props","_object_spread","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","length","mapGooglePayBrands","beforeRender","configSetByMerchant","originalAction","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","expressPage","analytics","sendAnalytics","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","_this_props_icon","resources","getImage","componentToRender","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","super","_define_property","isInstantPayment","selected","target","UiTarget","instantPaymentButton","submitAnalytics","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","merchantId","GooglePayService","environment","googlepay","txVariants","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GooglePayService.js","sources":["../../../../src/components/GooglePay/GooglePayService.ts"],"sourcesContent":["import { isReadyToPayRequest, initiatePaymentRequest } from './requests';\nimport { resolveEnvironment } from './utils';\nimport Script from '../../utils/Script';\nimport config from './config';\nimport type { GooglePayConfiguration } from './types';\nimport type { IAnalytics } from '../../core/Analytics/Analytics';\n\nclass GooglePayService {\n private readonly analytics: IAnalytics;\n\n public readonly paymentsClient: Promise<google.payments.api.PaymentsClient>;\n\n constructor(environment: string, analytics: IAnalytics, paymentDataCallbacks: google.payments.api.PaymentDataCallbacks) {\n const googlePayEnvironment = resolveEnvironment(environment);\n\n this.analytics = analytics;\n this.paymentsClient = this.getGooglePaymentsClient({\n environment: googlePayEnvironment,\n paymentDataCallbacks\n });\n }\n\n /**\n * Initialize a Google Pay API client\n *\n * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}\n * @returns Google Pay API client\n */\n async getGooglePaymentsClient(paymentOptions: google.payments.api.PaymentOptions): Promise<google.payments.api.PaymentsClient> {\n if (!window.google?.payments) {\n const script = new Script({ src: config.URL, component: 'googlepay', analytics: this.analytics });\n await script.load();\n }\n\n return new google.payments.api.PaymentsClient(paymentOptions);\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n * @see {@link https://developers.google.com/pay/api/web/reference/client#isReadyToPay|isReadyToPay}\n */\n isReadyToPay(props): Promise<google.payments.api.IsReadyToPayResponse> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.paymentsClient) return Promise.reject(new Error('Google Pay is not available'));\n\n return this.paymentsClient.then(client => client.isReadyToPay(isReadyToPayRequest(props)));\n }\n\n prefetchPaymentData(props: GooglePayConfiguration, countryCode: string): void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.paymentsClient) throw new Error('Google Pay is not available');\n\n const paymentDataRequest = initiatePaymentRequest(props, countryCode);\n void this.paymentsClient.then(client => client.prefetchPaymentData(paymentDataRequest));\n }\n\n /**\n * Show Google Pay payment sheet when Google Pay payment button is clicked\n * @returns paymentData response from Google Pay API after user approves payment\n * @see {@link https://developers.google.com/pay/api/web/reference/object#PaymentData|PaymentData object reference}\n */\n initiatePayment(props: GooglePayConfiguration, countryCode: string): Promise<google.payments.api.PaymentData> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.paymentsClient) throw new Error('Google Pay is not available');\n\n const paymentDataRequest = initiatePaymentRequest(props, countryCode);\n return this.paymentsClient.then(client => client.loadPaymentData(paymentDataRequest));\n }\n}\n\nexport default GooglePayService;\n"],"names":["GooglePayService","getGooglePaymentsClient","paymentOptions","window","google","payments","script","Script","src","config","URL","component","analytics","this","load","api","PaymentsClient","isReadyToPay","props","paymentsClient","then","client","isReadyToPayRequest","Promise","reject","Error","prefetchPaymentData","countryCode","paymentDataRequest","initiatePaymentRequest","initiatePayment","loadPaymentData","constructor","environment","paymentDataCallbacks","_define_property","googlePayEnvironment","resolveEnvironment"],"mappings":"wTAOA,MAAMA,EAqBF,6BAAMC,CAAwBC,GACrBC,IAAAA,EAAL,aAAKA,EAAAA,OAAOC,cAAPD,IAAAA,OAAAA,EAAAA,EAAeE,UAAU,CAC1B,MAAMC,EAAS,IAAIC,EAAO,CAAEC,IAAKC,EAAOC,IAAKC,UAAW,YAAaC,UAAWC,KAAKD,kBAC/EN,EAAOQ,MACjB,CAEA,OAAO,IAAIV,OAAOC,SAASU,IAAIC,eAAed,EAClD,CAMAe,YAAAA,CAAaC,GAET,OAAKL,KAAKM,eAEHN,KAAKM,eAAeC,KAAKC,GAAUA,EAAOJ,aAAaK,EAAoBJ,KAFjDK,QAAQC,OAAO,IAAIC,MAAM,+BAG9D,CAEAC,mBAAAA,CAAoBR,EAA+BS,GAE/C,IAAKd,KAAKM,eAAgB,MAAM,IAAIM,MAAM,+BAE1C,MAAMG,EAAqBC,EAAuBX,EAAOS,GACpDd,KAAKM,eAAeC,KAAKC,GAAUA,EAAOK,oBAAoBE,GACvE,CAOAE,eAAAA,CAAgBZ,EAA+BS,GAE3C,IAAKd,KAAKM,eAAgB,MAAM,IAAIM,MAAM,+BAE1C,MAAMG,EAAqBC,EAAuBX,EAAOS,GACzD,OAAOd,KAAKM,eAAeC,KAAKC,GAAUA,EAAOU,gBAAgBH,GACrE,CAvDA,WAAAI,CAAYC,EAAqBrB,EAAuBsB,GAJxDC,EAAAtB,KAAiBD,iBAAjB,GAEAuB,EAAAtB,KAAgBM,sBAAhB,GAGI,MAAMiB,EAAuBC,EAAmBJ,GAEhDpB,KAAKD,UAAYA,EACjBC,KAAKM,eAAiBN,KAAKZ,wBAAwB,CAC/CgC,YAAaG,EACbF,wBAER"}
1
+ {"version":3,"file":"GooglePayService.js","sources":["../../../../src/components/GooglePay/GooglePayService.ts"],"sourcesContent":["import { isReadyToPayRequest, initiatePaymentRequest } from './requests';\nimport { resolveEnvironment } from './utils';\nimport Script from '../../utils/Script';\nimport config from './config';\nimport type { GooglePayConfiguration } from './types';\nimport type { IAnalytics } from '../../core/Analytics/Analytics';\n\nclass GooglePayService {\n private readonly analytics: IAnalytics;\n\n public readonly paymentsClient: Promise<google.payments.api.PaymentsClient>;\n\n constructor(environment: string, analytics: IAnalytics, paymentDataCallbacks: google.payments.api.PaymentDataCallbacks) {\n const googlePayEnvironment = resolveEnvironment(environment);\n\n this.analytics = analytics;\n this.paymentsClient = this.getGooglePaymentsClient({\n environment: googlePayEnvironment,\n paymentDataCallbacks\n });\n }\n\n /**\n * Initialize a Google Pay API client\n *\n * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}\n * @returns Google Pay API client\n */\n async getGooglePaymentsClient(paymentOptions: google.payments.api.PaymentOptions): Promise<google.payments.api.PaymentsClient> {\n if (!window.google?.payments) {\n const script = new Script({ src: config.URL, component: 'googlepay', analytics: this.analytics });\n await script.load();\n }\n\n return new google.payments.api.PaymentsClient(paymentOptions);\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n * @see {@link https://developers.google.com/pay/api/web/reference/client#isReadyToPay|isReadyToPay}\n */\n isReadyToPay(props): Promise<google.payments.api.IsReadyToPayResponse> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.paymentsClient) return Promise.reject(new Error('Google Pay is not available'));\n\n return this.paymentsClient.then(client => client.isReadyToPay(isReadyToPayRequest(props)));\n }\n\n prefetchPaymentData(props: GooglePayConfiguration, countryCode: string): void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.paymentsClient) throw new Error('Google Pay is not available');\n\n const paymentDataRequest = initiatePaymentRequest(props, countryCode);\n void this.paymentsClient.then(client => client.prefetchPaymentData(paymentDataRequest));\n }\n\n /**\n * Show Google Pay payment sheet when Google Pay payment button is clicked\n * @returns paymentData response from Google Pay API after user approves payment\n * @see {@link https://developers.google.com/pay/api/web/reference/object#PaymentData|PaymentData object reference}\n */\n initiatePayment(props: GooglePayConfiguration, countryCode: string): Promise<google.payments.api.PaymentData> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.paymentsClient) throw new Error('Google Pay is not available');\n\n const paymentDataRequest = initiatePaymentRequest(props, countryCode);\n return this.paymentsClient.then(client => client.loadPaymentData(paymentDataRequest));\n }\n}\n\nexport default GooglePayService;\n"],"names":["GooglePayService","getGooglePaymentsClient","paymentOptions","window","google","payments","script","Script","src","config","URL","component","analytics","this","load","api","PaymentsClient","isReadyToPay","props","paymentsClient","then","client","isReadyToPayRequest","Promise","reject","Error","prefetchPaymentData","countryCode","paymentDataRequest","initiatePaymentRequest","initiatePayment","loadPaymentData","constructor","environment","paymentDataCallbacks","_define_property","googlePayEnvironment","resolveEnvironment"],"mappings":"wTAOA,MAAMA,EAqBF,6BAAMC,CAAwBC,GACrBC,IAAAA,EAAL,aAAKA,EAAAA,OAAOC,kBAAPD,OAAAA,EAAAA,EAAeE,UAAU,CAC1B,MAAMC,EAAS,IAAIC,EAAO,CAAEC,IAAKC,EAAOC,IAAKC,UAAW,YAAaC,UAAWC,KAAKD,kBAC/EN,EAAOQ,MACjB,CAEA,OAAO,IAAIV,OAAOC,SAASU,IAAIC,eAAed,EAClD,CAMAe,YAAAA,CAAaC,GAET,OAAKL,KAAKM,eAEHN,KAAKM,eAAeC,KAAKC,GAAUA,EAAOJ,aAAaK,EAAoBJ,KAFjDK,QAAQC,OAAO,IAAIC,MAAM,+BAG9D,CAEAC,mBAAAA,CAAoBR,EAA+BS,GAE/C,IAAKd,KAAKM,eAAgB,MAAM,IAAIM,MAAM,+BAE1C,MAAMG,EAAqBC,EAAuBX,EAAOS,GACpDd,KAAKM,eAAeC,KAAKC,GAAUA,EAAOK,oBAAoBE,GACvE,CAOAE,eAAAA,CAAgBZ,EAA+BS,GAE3C,IAAKd,KAAKM,eAAgB,MAAM,IAAIM,MAAM,+BAE1C,MAAMG,EAAqBC,EAAuBX,EAAOS,GACzD,OAAOd,KAAKM,eAAeC,KAAKC,GAAUA,EAAOU,gBAAgBH,GACrE,CAvDA,WAAAI,CAAYC,EAAqBrB,EAAuBsB,GAJxDC,EAAAtB,KAAiBD,oBAEjBuB,EAAAtB,KAAgBM,yBAGZ,MAAMiB,EAAuBC,EAAmBJ,GAEhDpB,KAAKD,UAAYA,EACjBC,KAAKM,eAAiBN,KAAKZ,wBAAwB,CAC/CgC,YAAaG,EACbF,wBAER"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import e from"../../utils/isMobile.js";import o from"../helpers/IssuerListContainer/IssuerListContainer.js";import{QRLoader as r}from"../internal/QRLoader/QRLoader.js";import"../../core/Context/CoreProvider.js";import"../../external/preact/hooks/dist/hooks.js";import"../../core/Errors/AdyenCheckoutError.js";import"../../core/Errors/SRPanelContext.js";import"../internal/Button/Button.js";import"../internal/QRLoader/QRLoaderDetailsProvider.js";import{TxVariants as n}from"../tx-variants.js";import s from"./components/IrisComponent.js";import{IrisQrCodeInstructions as i}from"./components/IrisQrCodeInstructions.js";import{IrisMode as p}from"./types.js";import{DEFAULT_IRIS_COUNTDOWN_TIME as a}from"./constants.js";function u(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function m(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}class c extends o{renderIssuerList(){return super.componentToRender()}formatData(){var t,e;return this.mode===p.BANK_LIST?{paymentMethod:{type:this.type,issuer:null===(e=this.state)||void 0===e||null===(t=e.data)||void 0===t?void 0:t.issuer}}:{paymentMethod:{type:this.type}}}formatProps(t){var e;return m(function(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),r.forEach(function(e){u(t,e,o[e])})}return t}({},super.formatProps(t)),{countdownTime:null!==(e=t.countdownTime)&&void 0!==e?e:a})}get isValid(){return this.mode!==p.BANK_LIST||super.isValid}componentToRender(){return"qrCode"===this.props.type?t(r,{type:n.iris,brandLogo:this.icon,clientKey:this.props.clientKey,qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,countdownTime:this.props.countdownTime,paymentData:this.props.paymentData,amount:this.props.amount,delay:this.props.delay,onActionHandled:this.onActionHandled,onError:this.props.onError,onComplete:this.onComplete,introduction:i,showAmount:!0,copyBtn:!1}):t(s,{setComponentRef:this.setComponentRef,defaultMode:this.mode,onUpdateMode:this.onUpdateMode,issuerListUI:this.renderIssuerList(),showPayButton:this.props.showPayButton,payButton:this.payButton,issuers:this.props.issuers})}constructor(t,o){super(t,o),u(this,"mode",void 0),u(this,"onUpdateMode",t=>{this.mode=t}),this.mode=e()?p.BANK_LIST:p.QR_CODE}}u(c,"type",n.iris);export{c as Iris,c as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import e from"../../utils/isMobile.js";import o from"../helpers/IssuerListContainer/IssuerListContainer.js";import{QRLoader as r}from"../internal/QRLoader/QRLoader.js";import"../../core/Context/CoreProvider.js";import"../../external/preact/hooks/dist/hooks.js";import"../../core/Errors/AdyenCheckoutError.js";import"../../core/Errors/SRPanelContext.js";import"../internal/Button/Button.js";import"../internal/QRLoader/QRLoaderDetailsProvider.js";import{TxVariants as n}from"../tx-variants.js";import s from"./components/IrisComponent.js";import{IrisQrCodeInstructions as i}from"./components/IrisQrCodeInstructions.js";import{IrisMode as p}from"./types.js";import{DEFAULT_IRIS_COUNTDOWN_TIME as a}from"./constants.js";function c(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function d(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}class u extends o{renderIssuerList(){return super.componentToRender()}formatData(){var t,e;return this.mode===p.BANK_LIST?{paymentMethod:{type:this.type,issuer:null===(e=this.state)||void 0===e||null===(t=e.data)||void 0===t?void 0:t.issuer}}:{paymentMethod:{type:this.type}}}formatProps(t){var e;return d(function(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),r.forEach(function(e){c(t,e,o[e])})}return t}({},super.formatProps(t)),{countdownTime:null!==(e=t.countdownTime)&&void 0!==e?e:a})}get isValid(){return this.mode!==p.BANK_LIST||super.isValid}componentToRender(){return"qrCode"===this.props.type?t(r,{type:n.iris,brandLogo:this.icon,clientKey:this.props.clientKey,qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,countdownTime:this.props.countdownTime,paymentData:this.props.paymentData,delay:this.props.delay,onActionHandled:this.onActionHandled,onError:this.props.onError,onComplete:this.onComplete,introduction:i,showAmount:!0,copyBtn:!1}):t(s,{setComponentRef:this.setComponentRef,defaultMode:this.mode,onUpdateMode:this.onUpdateMode,issuerListUI:this.renderIssuerList(),showPayButton:this.props.showPayButton,payButton:this.payButton,issuers:this.props.issuers})}constructor(t,o){super(t,o),c(this,"mode",void 0),c(this,"onUpdateMode",t=>{this.mode=t}),this.mode=e()?p.BANK_LIST:p.QR_CODE}}c(u,"type",n.iris);export{u as Iris,u as default};
2
2
  //# sourceMappingURL=Iris.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Iris.js","sources":["../../../../src/components/Iris/Iris.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { ICore } from '../../types';\nimport isMobile from '../../utils/isMobile';\nimport IssuerListContainer from '../helpers/IssuerListContainer/IssuerListContainer';\nimport { QRLoader } from '../internal/QRLoader';\nimport { TxVariants } from '../tx-variants';\nimport IrisComponent from './components/IrisComponent';\nimport { IrisQrCodeInstructions } from './components/IrisQrCodeInstructions';\nimport { IrisConfiguration, IrisData, IrisMode } from './types';\nimport { DEFAULT_IRIS_COUNTDOWN_TIME } from './constants';\n\nexport class Iris extends IssuerListContainer<IrisConfiguration, IrisData> {\n public static readonly type = TxVariants.iris;\n\n private mode: IrisMode;\n\n constructor(checkout: ICore, props: IrisConfiguration) {\n super(checkout, props);\n this.mode = isMobile() ? IrisMode.BANK_LIST : IrisMode.QR_CODE;\n }\n\n private readonly onUpdateMode = (mode: IrisMode): void => {\n this.mode = mode;\n };\n\n private renderIssuerList(): h.JSX.Element {\n return super.componentToRender();\n }\n\n formatData(): IrisData {\n if (this.mode === IrisMode.BANK_LIST) {\n return {\n paymentMethod: {\n type: this.type,\n issuer: this.state?.data?.issuer\n }\n };\n }\n\n return {\n paymentMethod: {\n type: this.type\n }\n };\n }\n\n formatProps(props: IrisConfiguration): IrisConfiguration {\n return {\n ...super.formatProps(props),\n countdownTime: props.countdownTime ?? DEFAULT_IRIS_COUNTDOWN_TIME\n };\n }\n\n get isValid() {\n if (this.mode === IrisMode.BANK_LIST) {\n return super.isValid;\n }\n\n return true;\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (this.props.type === 'qrCode') {\n return (\n <QRLoader\n type={TxVariants.iris}\n brandLogo={this.icon}\n clientKey={this.props.clientKey}\n qrCodeData={this.props.qrCodeData ? encodeURIComponent(this.props.qrCodeData) : null}\n countdownTime={this.props.countdownTime}\n paymentData={this.props.paymentData}\n amount={this.props.amount}\n delay={this.props.delay}\n onActionHandled={this.onActionHandled}\n onError={this.props.onError}\n onComplete={this.onComplete}\n introduction={IrisQrCodeInstructions}\n showAmount\n copyBtn={false}\n />\n );\n }\n\n return (\n <IrisComponent\n setComponentRef={this.setComponentRef}\n defaultMode={this.mode}\n onUpdateMode={this.onUpdateMode}\n issuerListUI={this.renderIssuerList()}\n showPayButton={this.props.showPayButton}\n payButton={this.payButton}\n issuers={this.props.issuers}\n />\n );\n }\n}\n\nexport default Iris;\n"],"names":["Iris","IssuerListContainer","renderIssuerList","super","componentToRender","formatData","_this_state_data","_this_state","this","mode","IrisMode","BANK_LIST","paymentMethod","type","issuer","state","data","formatProps","props","_object_spread_props","_object_spread","countdownTime","DEFAULT_IRIS_COUNTDOWN_TIME","isValid","h","QRLoader","TxVariants","iris","brandLogo","icon","clientKey","qrCodeData","encodeURIComponent","paymentData","amount","delay","onActionHandled","onError","onComplete","introduction","IrisQrCodeInstructions","showAmount","copyBtn","IrisComponent","setComponentRef","defaultMode","onUpdateMode","issuerListUI","showPayButton","payButton","issuers","constructor","checkout","_define_property","isMobile","QR_CODE"],"mappings":"uvCAWO,MAAMA,UAAaC,EAcdC,gBAAAA,GACJ,OAAOC,MAAMC,mBACjB,CAEAC,UAAAA,OAKwBC,EAAAC,EAJpB,OAAIC,KAAKC,OAASC,EAASC,UAChB,CACHC,cAAe,CACXC,KAAML,KAAKK,KACXC,OAAkB,QAAVP,EAAAC,KAAKO,aAAL,IAAAR,GAAgB,QAAhBD,EAAAC,EAAYS,YAAZ,IAAAV,OAAA,EAAAA,EAAkBQ,SAK/B,CACHF,cAAe,CACXC,KAAML,KAAKK,MAGvB,CAEAI,WAAAA,CAAYC,GAGWA,IAAAA,EAFnB,OAAOC,oUAAAC,CAAA,CAAA,EACAjB,MAAMc,YAAYC,IAAAA,CACrBG,cAAkC,QAAnBH,EAAAA,EAAMG,yBAANH,EAAAA,EAAuBI,GAE9C,CAEA,WAAIC,GACA,OAAIf,KAAKC,OAASC,EAASC,WAChBR,MAAMoB,OAIrB,CAEmBnB,iBAAAA,GACf,MAAwB,WAApBI,KAAKU,MAAML,KAEPW,EAACC,EAAAA,CACGZ,KAAMa,EAAWC,KACjBC,UAAWpB,KAAKqB,KAChBC,UAAWtB,KAAKU,MAAMY,UACtBC,WAAYvB,KAAKU,MAAMa,WAAaC,mBAAmBxB,KAAKU,MAAMa,YAAc,KAChFV,cAAeb,KAAKU,MAAMG,cAC1BY,YAAazB,KAAKU,MAAMe,YACxBC,OAAQ1B,KAAKU,MAAMgB,OACnBC,MAAO3B,KAAKU,MAAMiB,MAClBC,gBAAiB5B,KAAK4B,gBACtBC,QAAS7B,KAAKU,MAAMmB,QACpBC,WAAY9B,KAAK8B,WACjBC,aAAcC,EACdC,YAAAA,EACAC,SAAS,IAMjBlB,EAACmB,EAAAA,CACGC,gBAAiBpC,KAAKoC,gBACtBC,YAAarC,KAAKC,KAClBqC,aAActC,KAAKsC,aACnBC,aAAcvC,KAAKN,mBACnB8C,cAAexC,KAAKU,MAAM8B,cAC1BC,UAAWzC,KAAKyC,UAChBC,QAAS1C,KAAKU,MAAMgC,SAGhC,CA9EA,WAAAC,CAAYC,EAAiBlC,GACzBf,MAAMiD,EAAUlC,GAHpBmC,EAAA7C,KAAQC,YAAR,GAOA4C,EAAA7C,KAAiBsC,eAAgBrC,IAC7BD,KAAKC,KAAOA,IAJZD,KAAKC,KAAO6C,IAAa5C,EAASC,UAAYD,EAAS6C,OAC3D,EAPAF,EADSrD,EACca,OAAOa,EAAWC"}
1
+ {"version":3,"file":"Iris.js","sources":["../../../../src/components/Iris/Iris.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { ICore } from '../../types';\nimport isMobile from '../../utils/isMobile';\nimport IssuerListContainer from '../helpers/IssuerListContainer/IssuerListContainer';\nimport { QRLoader } from '../internal/QRLoader';\nimport { TxVariants } from '../tx-variants';\nimport IrisComponent from './components/IrisComponent';\nimport { IrisQrCodeInstructions } from './components/IrisQrCodeInstructions';\nimport { IrisConfiguration, IrisData, IrisMode } from './types';\nimport { DEFAULT_IRIS_COUNTDOWN_TIME } from './constants';\n\nexport class Iris extends IssuerListContainer<IrisConfiguration, IrisData> {\n public static readonly type = TxVariants.iris;\n\n private mode: IrisMode;\n\n constructor(checkout: ICore, props: IrisConfiguration) {\n super(checkout, props);\n this.mode = isMobile() ? IrisMode.BANK_LIST : IrisMode.QR_CODE;\n }\n\n private readonly onUpdateMode = (mode: IrisMode): void => {\n this.mode = mode;\n };\n\n private renderIssuerList(): h.JSX.Element {\n return super.componentToRender();\n }\n\n formatData(): IrisData {\n if (this.mode === IrisMode.BANK_LIST) {\n return {\n paymentMethod: {\n type: this.type,\n issuer: this.state?.data?.issuer\n }\n };\n }\n\n return {\n paymentMethod: {\n type: this.type\n }\n };\n }\n\n formatProps(props: IrisConfiguration): IrisConfiguration {\n return {\n ...super.formatProps(props),\n countdownTime: props.countdownTime ?? DEFAULT_IRIS_COUNTDOWN_TIME\n };\n }\n\n get isValid() {\n if (this.mode === IrisMode.BANK_LIST) {\n return super.isValid;\n }\n\n return true;\n }\n\n protected override componentToRender(): h.JSX.Element {\n if (this.props.type === 'qrCode') {\n return (\n <QRLoader\n type={TxVariants.iris}\n brandLogo={this.icon}\n clientKey={this.props.clientKey}\n qrCodeData={this.props.qrCodeData ? encodeURIComponent(this.props.qrCodeData) : null}\n countdownTime={this.props.countdownTime}\n paymentData={this.props.paymentData}\n delay={this.props.delay}\n onActionHandled={this.onActionHandled}\n onError={this.props.onError}\n onComplete={this.onComplete}\n introduction={IrisQrCodeInstructions}\n showAmount\n copyBtn={false}\n />\n );\n }\n\n return (\n <IrisComponent\n setComponentRef={this.setComponentRef}\n defaultMode={this.mode}\n onUpdateMode={this.onUpdateMode}\n issuerListUI={this.renderIssuerList()}\n showPayButton={this.props.showPayButton}\n payButton={this.payButton}\n issuers={this.props.issuers}\n />\n );\n }\n}\n\nexport default Iris;\n"],"names":["Iris","IssuerListContainer","renderIssuerList","super","componentToRender","formatData","_this_state_data","_this_state","this","mode","IrisMode","BANK_LIST","paymentMethod","type","issuer","state","data","formatProps","props","_object_spread_props","_object_spread","countdownTime","DEFAULT_IRIS_COUNTDOWN_TIME","isValid","h","QRLoader","TxVariants","iris","brandLogo","icon","clientKey","qrCodeData","encodeURIComponent","paymentData","delay","onActionHandled","onError","onComplete","introduction","IrisQrCodeInstructions","showAmount","copyBtn","IrisComponent","setComponentRef","defaultMode","onUpdateMode","issuerListUI","showPayButton","payButton","issuers","constructor","checkout","_define_property","isMobile","QR_CODE"],"mappings":"uvCAWO,MAAMA,UAAaC,EAcdC,gBAAAA,GACJ,OAAOC,MAAMC,mBACjB,CAEAC,UAAAA,OAKwBC,EAAAC,EAJpB,OAAIC,KAAKC,OAASC,EAASC,UAChB,CACHC,cAAe,CACXC,KAAML,KAAKK,KACXC,OAAkB,QAAVP,EAAAC,KAAKO,iBAALR,GAAgB,QAAhBD,EAAAC,EAAYS,YAAZ,IAAAV,OAAA,EAAAA,EAAkBQ,SAK/B,CACHF,cAAe,CACXC,KAAML,KAAKK,MAGvB,CAEAI,WAAAA,CAAYC,GAGWA,IAAAA,EAFnB,OAAOC,oUAAAC,CAAA,CAAA,EACAjB,MAAMc,YAAYC,IAAAA,CACrBG,cAAkC,QAAnBH,EAAAA,EAAMG,yBAANH,EAAAA,EAAuBI,GAE9C,CAEA,WAAIC,GACA,OAAIf,KAAKC,OAASC,EAASC,WAChBR,MAAMoB,OAIrB,CAEmBnB,iBAAAA,GACf,MAAwB,WAApBI,KAAKU,MAAML,KAEPW,EAACC,EAAAA,CACGZ,KAAMa,EAAWC,KACjBC,UAAWpB,KAAKqB,KAChBC,UAAWtB,KAAKU,MAAMY,UACtBC,WAAYvB,KAAKU,MAAMa,WAAaC,mBAAmBxB,KAAKU,MAAMa,YAAc,KAChFV,cAAeb,KAAKU,MAAMG,cAC1BY,YAAazB,KAAKU,MAAMe,YACxBC,MAAO1B,KAAKU,MAAMgB,MAClBC,gBAAiB3B,KAAK2B,gBACtBC,QAAS5B,KAAKU,MAAMkB,QACpBC,WAAY7B,KAAK6B,WACjBC,aAAcC,EACdC,YAAAA,EACAC,SAAS,IAMjBjB,EAACkB,EAAAA,CACGC,gBAAiBnC,KAAKmC,gBACtBC,YAAapC,KAAKC,KAClBoC,aAAcrC,KAAKqC,aACnBC,aAActC,KAAKN,mBACnB6C,cAAevC,KAAKU,MAAM6B,cAC1BC,UAAWxC,KAAKwC,UAChBC,QAASzC,KAAKU,MAAM+B,SAGhC,CA7EA,WAAAC,CAAYC,EAAiBjC,GACzBf,MAAMgD,EAAUjC,GAHpBkC,EAAA5C,KAAQC,YAAR,GAOA2C,EAAA5C,KAAiBqC,eAAgBpC,IAC7BD,KAAKC,KAAOA,IAJZD,KAAKC,KAAO4C,IAAa3C,EAASC,UAAYD,EAAS4C,OAC3D,EAPAF,EADSpD,EACca,OAAOa,EAAWC"}
@@ -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 n from"../internal/PayButton/PayButton.js";import{KlarnaContainer as o}from"./components/KlarnaContainer/KlarnaContainer.js";import{TxVariants as r}from"../tx-variants.js";function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.forEach(function(e){i(t,e,n[e])})}return t}function s(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e.push.apply(e,n)}return e}(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}class p extends e{get isValid(){return!0}formatData(){return{paymentMethod:a({type:this.type},this.props.useKlarnaWidget?{subtype:"sdk"}:{})}}handleAction(t,e={}){if("sdk"!==t.type)return super.handleAction(t,e);this.updateWithAction(t)}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)}componentToRender(){return t(o,s(a({},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),i(this,"componentRef",void 0),i(this,"payButton",e=>t(n,a({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)}}i(p,"type",r.klarna),i(p,"txVariants",[r.klarna,r.klarna_account,r.klarna_paynow,r.klarna_b2b]),i(p,"defaultProps",{useKlarnaWidget:!1});export{p as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import n from"../internal/PayButton/PayButton.js";import{KlarnaContainer as o}from"./components/KlarnaContainer/KlarnaContainer.js";import{TxVariants as r}from"../tx-variants.js";function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.forEach(function(e){i(t,e,n[e])})}return t}function s(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e.push.apply(e,n)}return e}(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}class p extends e{get isValid(){return!0}formatData(){return{paymentMethod:a({type:this.type},this.props.useKlarnaWidget?{subtype:"sdk"}:{})}}handleAction(t,e={}){if("sdk"!==t.type)return super.handleAction(t,e);this.updateWithAction(t)}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)}componentToRender(){return t(o,s(a({},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),i(this,"componentRef",void 0),i(this,"payButton",e=>t(n,a({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)}}i(p,"type",r.klarna),i(p,"txVariants",[r.klarna,r.klarna_account,r.klarna_paynow,r.klarna_b2b]),i(p,"defaultProps",{useKlarnaWidget:!1});export{p 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 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';\nimport { PayButtonFunctionProps } from '../internal/UIElement/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: PayButtonFunctionProps) => {\n return <PayButton amount={this.props.amount} onClick={this.submit} {...props} />;\n };\n\n public override handleAction(action: KlarnaAction, props = {}): UIElement | null {\n if (action.type === 'sdk') {\n this.updateWithAction(action);\n return;\n }\n return super.handleAction(action, 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 protected override componentToRender(): h.JSX.Element {\n return (\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 );\n }\n}\n\nexport default KlarnaPayments;\n"],"names":["KlarnaPayments","UIElement","isValid","formatData","paymentMethod","_object_spread","type","this","props","useKlarnaWidget","subtype","handleAction","action","super","updateWithAction","paymentMethodType","Error","componentRef","setAction","onLoaded","setElementStatus","activate","reinitializeWidget","onComplete","details","handleAdditionalDetails","componentToRender","h","KlarnaContainer","setComponentRef","displayName","onError","payButton","showPayButton","onActionHandled","constructor","checkout","_define_property","PayButton","amount","onClick","submit","bind","TxVariants","klarna","txVariants","klarna_account","klarna_paynow","klarna_b2b","defaultProps"],"mappings":"gmCASA,MAAMA,UAAuBC,EAkBzB,WAAIC,GACA,OAAO,CACX,CAEUC,UAAAA,GACN,MAAO,CACHC,cAAeC,EAAA,CACXC,KAAMC,KAAKD,MACPC,KAAKC,MAAMC,gBAAkB,CAAEC,QAAS,OAAU,CAAA,GAGlE,CAMgBC,YAAAA,CAAaC,EAAsBJ,EAAQ,IACvD,GAAoB,QAAhBI,EAAON,KAIX,OAAOO,MAAMF,aAAaC,EAAQJ,GAH9BD,KAAKO,iBAAiBF,EAI9B,CAEAE,gBAAAA,CAAiBF,GACb,GAAIA,EAAOG,oBAAsBR,KAAKD,KAAM,MAAM,IAAIU,MAAM,kBAC5DT,KAAKU,aAAaC,UAAUN,EAChC,CAEQO,QAAAA,GAEJZ,KAAKa,iBAAiB,QAC1B,CAEgBC,QAAAA,GACZd,KAAKU,aAAaK,oBACtB,CAEUC,UAAAA,CAAWC,GACjBjB,KAAKkB,wBAAwBD,EACjC,CAEmBE,iBAAAA,GACf,OACIC,EAACC,EAAAA,EAAAA,EAAAA,GACOrB,KAAKC,OAAK,CACdqB,gBAAiBtB,KAAKsB,gBACtBC,YAAavB,KAAKuB,YAClBP,WAAYhB,KAAKgB,WACjBQ,QAASxB,KAAKC,MAAMuB,QACpBC,UAAWzB,KAAKyB,UAChBb,SAAUZ,KAAKY,SACfc,cAAe1B,KAAKC,MAAMyB,cAC1BC,gBAAiB3B,KAAK2B,gBACtB5B,KAAMC,KAAKC,MAAMF,OAG7B,CAlEA,WAAA6B,CAAYC,EAAiB5B,GACzBK,MAAMuB,EAAU5B,GAPpB6B,EAAA9B,KAAOU,oBAAP,GA2BAoB,EAAA9B,KAAOyB,YAAaxB,GACTmB,EAACW,EAAAA,EAAAA,CAAUC,OAAQhC,KAAKC,MAAM+B,OAAQC,QAASjC,KAAKkC,QAAYjC,KAnBvED,KAAKgB,WAAahB,KAAKgB,WAAWmB,KAAKnC,MACvCA,KAAKO,iBAAmBP,KAAKO,iBAAiB4B,KAAKnC,MACnDA,KAAKkC,OAASlC,KAAKkC,OAAOC,KAAKnC,MAC/BA,KAAKY,SAAWZ,KAAKY,SAASuB,KAAKnC,KACvC,EAhBA8B,EADErC,EACYM,OAAOqC,EAAWC,QAChCP,EAFErC,EAEY6C,aAAa,CAACF,EAAWC,OAAQD,EAAWG,eAAgBH,EAAWI,cAAeJ,EAAWK,aAI/GX,EANErC,EAMeiD,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 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';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\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: PayButtonProps) => {\n return <PayButton onClick={this.submit} {...props} />;\n };\n\n public override handleAction(action: KlarnaAction, props = {}): UIElement | null {\n if (action.type === 'sdk') {\n this.updateWithAction(action);\n return;\n }\n return super.handleAction(action, 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 protected override componentToRender(): h.JSX.Element {\n return (\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 );\n }\n}\n\nexport default KlarnaPayments;\n"],"names":["KlarnaPayments","UIElement","isValid","formatData","paymentMethod","_object_spread","type","this","props","useKlarnaWidget","subtype","handleAction","action","super","updateWithAction","paymentMethodType","Error","componentRef","setAction","onLoaded","setElementStatus","activate","reinitializeWidget","onComplete","details","handleAdditionalDetails","componentToRender","h","KlarnaContainer","setComponentRef","displayName","onError","payButton","showPayButton","onActionHandled","constructor","checkout","_define_property","PayButton","onClick","submit","bind","TxVariants","klarna","txVariants","klarna_account","klarna_paynow","klarna_b2b","defaultProps"],"mappings":"gmCASA,MAAMA,UAAuBC,EAkBzB,WAAIC,GACA,OAAO,CACX,CAEUC,UAAAA,GACN,MAAO,CACHC,cAAeC,EAAA,CACXC,KAAMC,KAAKD,MACPC,KAAKC,MAAMC,gBAAkB,CAAEC,QAAS,OAAU,CAAA,GAGlE,CAMgBC,YAAAA,CAAaC,EAAsBJ,EAAQ,IACvD,GAAoB,QAAhBI,EAAON,KAIX,OAAOO,MAAMF,aAAaC,EAAQJ,GAH9BD,KAAKO,iBAAiBF,EAI9B,CAEAE,gBAAAA,CAAiBF,GACb,GAAIA,EAAOG,oBAAsBR,KAAKD,KAAM,MAAM,IAAIU,MAAM,kBAC5DT,KAAKU,aAAaC,UAAUN,EAChC,CAEQO,QAAAA,GAEJZ,KAAKa,iBAAiB,QAC1B,CAEgBC,QAAAA,GACZd,KAAKU,aAAaK,oBACtB,CAEUC,UAAAA,CAAWC,GACjBjB,KAAKkB,wBAAwBD,EACjC,CAEmBE,iBAAAA,GACf,OACIC,EAACC,EAAAA,EAAAA,EAAAA,GACOrB,KAAKC,OAAK,CACdqB,gBAAiBtB,KAAKsB,gBACtBC,YAAavB,KAAKuB,YAClBP,WAAYhB,KAAKgB,WACjBQ,QAASxB,KAAKC,MAAMuB,QACpBC,UAAWzB,KAAKyB,UAChBb,SAAUZ,KAAKY,SACfc,cAAe1B,KAAKC,MAAMyB,cAC1BC,gBAAiB3B,KAAK2B,gBACtB5B,KAAMC,KAAKC,MAAMF,OAG7B,CAlEA,WAAA6B,CAAYC,EAAiB5B,GACzBK,MAAMuB,EAAU5B,GAPpB6B,EAAA9B,KAAOU,oBAAP,GA2BAoB,EAAA9B,KAAOyB,YAAaxB,GACTmB,EAACW,EAAAA,EAAAA,CAAUC,QAAShC,KAAKiC,QAAYhC,KAnB5CD,KAAKgB,WAAahB,KAAKgB,WAAWkB,KAAKlC,MACvCA,KAAKO,iBAAmBP,KAAKO,iBAAiB2B,KAAKlC,MACnDA,KAAKiC,OAASjC,KAAKiC,OAAOC,KAAKlC,MAC/BA,KAAKY,SAAWZ,KAAKY,SAASsB,KAAKlC,KACvC,EAhBA8B,EADErC,EACYM,OAAOoC,EAAWC,QAChCN,EAFErC,EAEY4C,aAAa,CAACF,EAAWC,OAAQD,EAAWG,eAAgBH,EAAWI,cAAeJ,EAAWK,aAI/GV,EANErC,EAMegD,eAAe,CAC5BvC,iBAAiB"}
@@ -1 +1 @@
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","_0","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","_object_spread_props","_object_spread","disabled","classNameModifiers","label","this","i18n","get","displayName"],"mappings":"s0CAmBO,SAASA,EAAgBC,OAAAC,gBAAEA,GAAiDD,EAA7BE,EAAAA,EAAAA,EAAAA,qBAClD,MAAOC,EAA0BC,GAA+BC,EAAiB,OAC1EC,EAAQC,GAAaF,KACrBG,EAAQC,GAAaJ,EAAS,SAC/BK,EAAYC,EAA2B,CACzCJ,UAAYD,IACRC,EAAUD,GACVF,GAA4B,IAAIQ,MAAOC,YAE3CJ,UAAYD,GAA4BC,EAAUD,GAClDM,mBAAoB,KAChBV,GAA4B,IAAIQ,MAAOC,cAQ/C,OAJAE,EAAU,KACNd,EAAgBS,EAAUM,UAC3B,CAACf,KAEAK,aAAAA,EAAAA,EAAQW,SAEJC,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,IAAAA,EAAqB,QAArBA,EAAAA,EAAMwB,uBAANxB,IAAAA,GAAAA,OAAAA,EAAwB,CAAEyB,cAAezB,EAAM0B,KAAMC,kBAAmB,aAAcC,eAAgBxB,IACtGJ,EAAMuB,cAMlBvB,EAAM6B,cACC7B,EAAMoB,UAAUU,oUAAAC,CAAA,CAAA,EAChB/B,GAAAA,CACHM,SACA0B,SAAqB,YAAX1B,EACV2B,mBAAoB,CAAC,cACrBC,MAAO,GAAGC,KAAKnC,MAAMoC,KAAKC,IAAI,iBAAiBrC,EAAMsC,iBAItD,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, UIElementStatus } from '../../../internal/UIElement/types';\nimport type { ActionHandledReturnObject } from '../../../../types/global-types';\nimport type { AdyenCheckoutError, KlarnaAction, KlarnaAdditionalDetailsData, KlarnaComponentRef } from '../../../../types';\nimport { PayButtonProps } from '../../../internal/PayButton/PayButton';\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: PayButtonProps): 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","_0","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","_object_spread_props","_object_spread","disabled","classNameModifiers","label","this","i18n","get","displayName"],"mappings":"s0CAoBO,SAASA,EAAgBC,OAAAC,gBAAEA,GAAiDD,EAA7BE,EAAAA,EAAAA,EAAAA,qBAClD,MAAOC,EAA0BC,GAA+BC,EAAiB,OAC1EC,EAAQC,GAAaF,KACrBG,EAAQC,GAAaJ,EAAS,SAC/BK,EAAYC,EAA2B,CACzCJ,UAAYD,IACRC,EAAUD,GACVF,GAA4B,IAAIQ,MAAOC,YAE3CJ,UAAYD,GAA4BC,EAAUD,GAClDM,mBAAoB,KAChBV,GAA4B,IAAIQ,MAAOC,cAQ/C,OAJAE,EAAU,KACNd,EAAgBS,EAAUM,UAC3B,CAACf,KAEAK,aAAAA,EAAAA,EAAQW,SAEJC,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,IAAAA,EAAqB,QAArBA,EAAAA,EAAMwB,uBAANxB,IAAAA,GAAAA,OAAAA,EAAwB,CAAEyB,cAAezB,EAAM0B,KAAMC,kBAAmB,aAAcC,eAAgBxB,IACtGJ,EAAMuB,cAMlBvB,EAAM6B,cACC7B,EAAMoB,UAAUU,oUAAAC,CAAA,CAAA,EAChB/B,GAAAA,CACHM,SACA0B,SAAqB,YAAX1B,EACV2B,mBAAoB,CAAC,cACrBC,MAAO,GAAGC,KAAKnC,MAAMoC,KAAKC,IAAI,iBAAiBrC,EAAMsC,iBAItD,IACX"}
@@ -1 +1 @@
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, KLARNA_REFUSED_RESULT_CODE } from '../../constants';\nimport type { KlarnaWidgetAuthorizeResponse, KlarnaWidgetProps } from '../../types';\nimport './KlarnaWidget.scss';\nimport useAnalytics from '../../../../core/Analytics/useAnalytics';\n\nexport function KlarnaWidget({ sdkData, paymentMethodType, widgetInitializationTime, payButton, ...props }: KlarnaWidgetProps) {\n const klarnaWidgetRef = useRef(null);\n const [status, setStatus] = useState('ready');\n const { analytics } = useAnalytics();\n\n const handleError = useCallback(() => {\n setStatus('error');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: { resultCode: KLARNA_REFUSED_RESULT_CODE }\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: { show_form: boolean; error: unknown }) {\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 // Workaround: See ADR-0001-uielement-keyboard-event-propagation-workaround\n const handleKeyDown = (e: h.JSX.TargetedKeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.code === 'Enter') {\n e.preventDefault();\n authorizeKlarna();\n }\n };\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({\n src: KLARNA_WIDGET_URL,\n component: 'klarna',\n analytics\n });\n\n void script.load();\n\n return () => {\n script.remove();\n };\n }, [initializeKlarnaWidget, analytics]);\n\n if (status !== 'error' && status !== 'success') {\n return (\n <div className=\"adyen-checkout__klarna-widget\">\n <div ref={klarnaWidgetRef} />\n {payButton({\n status,\n disabled: status === 'loading',\n onClick: authorizeKlarna,\n onKeyDown: handleKeyDown\n })}\n </div>\n );\n }\n\n return null;\n}\n"],"names":["KlarnaWidget","_0","sdkData","paymentMethodType","widgetInitializationTime","payButton","props","klarnaWidgetRef","useRef","status","setStatus","useState","analytics","useAnalytics","handleError","useCallback","onComplete","data","paymentData","details","resultCode","KLARNA_REFUSED_RESULT_CODE","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","handleKeyDown","key","code","preventDefault","useEffect","klarnaAsyncCallback","script","Script","src","KLARNA_WIDGET_URL","component","remove","h","div","className","ref","disabled","onClick","onKeyDown"],"mappings":"++BAQO,SAASA,EAAaC,OAAAC,QAAEA,EAAOC,kBAAEA,EAAiBC,yBAAEA,EAAwBC,UAAEA,GAAwCJ,EAA1BK,EAAAA,EAAAA,EAAAA,wEAC/F,MAAMC,EAAkBC,EAAO,OACxBC,EAAQC,GAAaC,EAAS,UAC/BC,UAAEA,GAAcC,IAEhBC,EAAcC,EAAY,KAC5BL,EAAU,SACVJ,EAAMU,WAAW,CACbC,KAAM,CACFC,YAAaZ,EAAMY,YACnBC,QAAS,CAAEC,WAAYC,OAGhC,CAACf,EAAMY,YAAaZ,EAAMU,aAEvBM,EAAyBP,EAAY,KACvCQ,OAAOC,OAAOC,SAASC,KAAK,CACxBC,aAAczB,EAAQyB,eAG1BJ,OAAOC,OAAOC,SAASG,KACnB,CACIC,UAAWtB,EAAgBuB,QAC3BC,wBAAyB7B,EAAQ6B,yBAErC,SAAUC,IAKDA,EAAIC,WAAeD,EAAIE,MACxBpB,IAEAR,EAAM6B,UAEd,IAEL,CAACjC,EAAQyB,aAAczB,EAAQ6B,0BAE5BK,EAAkBrB,EAAY,KAChCL,EAAU,WACV,IACIa,OAAOC,OAAOC,SAASY,UACnB,CACIN,wBAAyB7B,EAAQ6B,yBAErC,SAAUC,IACe,IAAjBA,EAAIM,WAAuC,IAAlBN,EAAIC,WAE7BvB,EAAU,WACVJ,EAAMU,WAAW,CACbC,KAAM,CACFC,YAAaZ,EAAMY,YACnBC,QAAS,CACLoB,oBAAqBP,EAAIO,yBAI7BP,EAAIM,WAA8B,IAAlBN,EAAIC,UAO5BnB,KALAJ,EAAU,SACVJ,EAAMkC,QAAQR,GAMtB,EAER,CAAE,MAAOS,GACL3B,GACJ,GACD,CAACZ,EAAQ6B,wBAAyBzB,EAAMU,WAAYV,EAAMkC,UAGvDE,EAAiBD,IACL,UAAVA,EAAEE,KAA8B,UAAXF,EAAEG,OACvBH,EAAEI,iBACFT,MAgCR,OAxBAU,EAAU,SACoBvB,EAAAA,GAAa,QAAbA,EAAAA,OAAOC,cAAPD,IAAAA,GAAuB,QAAvBA,EAAAA,EAAeE,gBAAfF,IAAAA,OAAAA,EAAAA,EAAyBG,OAE/CJ,KAEL,CAAClB,IAEJ0C,EAAU,KACNvB,OAAOwB,oBAAsB,WACzBzB,GACJ,EACA,MAAM0B,EAAS,IAAIC,EAAO,CACtBC,IAAKC,EACLC,UAAW,SACXxC,cAKJ,OAFKoC,EAAOpB,OAEL,KACHoB,EAAOK,WAEZ,CAAC/B,EAAwBV,IAEb,UAAXH,GAAiC,YAAXA,EAElB6C,EAACC,MAAAA,CAAIC,UAAU,iCACXF,EAACC,MAAAA,CAAIE,IAAKlD,IACTF,EAAU,CACPI,SACAiD,SAAqB,YAAXjD,EACVkD,QAASvB,EACTwB,UAAWlB,KAMpB,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, KLARNA_REFUSED_RESULT_CODE } from '../../constants';\nimport type { KlarnaWidgetAuthorizeResponse, KlarnaWidgetProps } from '../../types';\nimport './KlarnaWidget.scss';\nimport useAnalytics from '../../../../core/Analytics/useAnalytics';\n\nexport function KlarnaWidget({ sdkData, paymentMethodType, widgetInitializationTime, payButton, ...props }: KlarnaWidgetProps) {\n const klarnaWidgetRef = useRef(null);\n const [status, setStatus] = useState('ready');\n const { analytics } = useAnalytics();\n\n const handleError = useCallback(() => {\n setStatus('error');\n props.onComplete({\n data: {\n paymentData: props.paymentData,\n details: { resultCode: KLARNA_REFUSED_RESULT_CODE }\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: { show_form: boolean; error: unknown }) {\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 // Workaround: See ADR-0001-uielement-keyboard-event-propagation-workaround\n const handleKeyDown = (e: h.JSX.TargetedKeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.code === 'Enter') {\n e.preventDefault();\n authorizeKlarna();\n }\n };\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({\n src: KLARNA_WIDGET_URL,\n component: 'klarna',\n analytics\n });\n\n void script.load();\n\n return () => {\n script.remove();\n };\n }, [initializeKlarnaWidget, analytics]);\n\n if (status !== 'error' && status !== 'success') {\n return (\n <div className=\"adyen-checkout__klarna-widget\">\n <div ref={klarnaWidgetRef} />\n {payButton({\n status,\n disabled: status === 'loading',\n onClick: authorizeKlarna,\n onKeyDown: handleKeyDown\n })}\n </div>\n );\n }\n\n return null;\n}\n"],"names":["KlarnaWidget","_0","sdkData","paymentMethodType","widgetInitializationTime","payButton","props","klarnaWidgetRef","useRef","status","setStatus","useState","analytics","useAnalytics","handleError","useCallback","onComplete","data","paymentData","details","resultCode","KLARNA_REFUSED_RESULT_CODE","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","handleKeyDown","key","code","preventDefault","useEffect","klarnaAsyncCallback","script","Script","src","KLARNA_WIDGET_URL","component","remove","h","div","className","ref","disabled","onClick","onKeyDown"],"mappings":"++BAQO,SAASA,EAAaC,OAAAC,QAAEA,EAAOC,kBAAEA,EAAiBC,yBAAEA,EAAwBC,UAAEA,GAAwCJ,EAA1BK,EAAAA,EAAAA,EAAAA,wEAC/F,MAAMC,EAAkBC,EAAO,OACxBC,EAAQC,GAAaC,EAAS,UAC/BC,UAAEA,GAAcC,IAEhBC,EAAcC,EAAY,KAC5BL,EAAU,SACVJ,EAAMU,WAAW,CACbC,KAAM,CACFC,YAAaZ,EAAMY,YACnBC,QAAS,CAAEC,WAAYC,OAGhC,CAACf,EAAMY,YAAaZ,EAAMU,aAEvBM,EAAyBP,EAAY,KACvCQ,OAAOC,OAAOC,SAASC,KAAK,CACxBC,aAAczB,EAAQyB,eAG1BJ,OAAOC,OAAOC,SAASG,KACnB,CACIC,UAAWtB,EAAgBuB,QAC3BC,wBAAyB7B,EAAQ6B,yBAErC,SAAUC,IAKDA,EAAIC,WAAeD,EAAIE,MACxBpB,IAEAR,EAAM6B,UAEd,IAEL,CAACjC,EAAQyB,aAAczB,EAAQ6B,0BAE5BK,EAAkBrB,EAAY,KAChCL,EAAU,WACV,IACIa,OAAOC,OAAOC,SAASY,UACnB,CACIN,wBAAyB7B,EAAQ6B,yBAErC,SAAUC,IACe,IAAjBA,EAAIM,WAAuC,IAAlBN,EAAIC,WAE7BvB,EAAU,WACVJ,EAAMU,WAAW,CACbC,KAAM,CACFC,YAAaZ,EAAMY,YACnBC,QAAS,CACLoB,oBAAqBP,EAAIO,yBAI7BP,EAAIM,WAA8B,IAAlBN,EAAIC,UAO5BnB,KALAJ,EAAU,SACVJ,EAAMkC,QAAQR,GAMtB,EAER,CAAE,MAAOS,GACL3B,GACJ,GACD,CAACZ,EAAQ6B,wBAAyBzB,EAAMU,WAAYV,EAAMkC,UAGvDE,EAAiBD,IACL,UAAVA,EAAEE,KAA8B,UAAXF,EAAEG,OACvBH,EAAEI,iBACFT,MAgCR,OAxBAU,EAAU,SACoBvB,EAAAA,GAAa,QAAbA,EAAAA,OAAOC,kBAAPD,GAAuB,QAAvBA,EAAAA,EAAeE,oBAAfF,OAAAA,EAAAA,EAAyBG,OAE/CJ,KAEL,CAAClB,IAEJ0C,EAAU,KACNvB,OAAOwB,oBAAsB,WACzBzB,GACJ,EACA,MAAM0B,EAAS,IAAIC,EAAO,CACtBC,IAAKC,EACLC,UAAW,SACXxC,cAKJ,OAFKoC,EAAOpB,OAEL,KACHoB,EAAOK,WAEZ,CAAC/B,EAAwBV,IAEb,UAAXH,GAAiC,YAAXA,EAElB6C,EAACC,MAAAA,CAAIC,UAAU,iCACXF,EAACC,MAAAA,CAAIE,IAAKlD,IACTF,EAAU,CACPI,SACAiD,SAAqB,YAAXjD,EACVkD,QAASvB,EACTwB,UAAWlB,KAMpB,IACX"}