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

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 (130) hide show
  1. package/auto/auto.js +2 -0
  2. package/dist/cjs/adyen.css +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +161 -248
  6. package/dist/es/adyen.css +1 -1
  7. package/dist/es/components/ApplePay/ApplePay.js +1 -1
  8. package/dist/es/components/ApplePay/ApplePay.js.map +1 -1
  9. package/dist/es/components/Dropin/Dropin.js +1 -1
  10. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  11. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  12. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  13. package/dist/es/components/Dropin/defaultProps.js +1 -1
  14. package/dist/es/components/Dropin/defaultProps.js.map +1 -1
  15. package/dist/es/components/GooglePay/GooglePay.js +1 -1
  16. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  17. package/dist/es/components/PayPal/Paypal.js +1 -1
  18. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  19. package/dist/es/components/PayPal/components/PaypalButtons.js +1 -1
  20. package/dist/es/components/PayPal/components/PaypalButtons.js.map +1 -1
  21. package/dist/es/components/PayPal/components/PaypalComponent.js +1 -1
  22. package/dist/es/components/PayPal/components/PaypalComponent.js.map +1 -1
  23. package/dist/es/components/PayPal/defaultProps.js +1 -1
  24. package/dist/es/components/PayPal/defaultProps.js.map +1 -1
  25. package/dist/es/components/PayPal/utils/format-paypal-order-contact-to-adyen-format.js +1 -1
  26. package/dist/es/components/PayPal/utils/format-paypal-order-contact-to-adyen-format.js.map +1 -1
  27. package/dist/es/components/PayPal/utils/get-paypal-locale.js +2 -0
  28. package/dist/es/components/PayPal/utils/get-paypal-locale.js.map +1 -0
  29. package/dist/es/components/PayPal/utils/get-paypal-settings.js +2 -0
  30. package/dist/es/components/PayPal/utils/get-paypal-settings.js.map +1 -0
  31. package/dist/es/components/PayPal/utils/get-paypal-styles.js +2 -0
  32. package/dist/es/components/PayPal/utils/get-paypal-styles.js.map +1 -0
  33. package/dist/es/components/PayPal/utils/get-paypal-url.js +2 -0
  34. package/dist/es/components/PayPal/utils/get-paypal-url.js.map +1 -0
  35. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  36. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  37. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  38. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  39. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  40. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  41. package/dist/es/components/internal/UIElement/utils.js.map +1 -1
  42. package/dist/es/core/AdyenCheckout.js +1 -1
  43. package/dist/es/core/AdyenCheckout.js.map +1 -1
  44. package/dist/es/core/Analytics/Analytics.js +1 -1
  45. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  46. package/dist/es/core/Analytics/EventsQueue.js +1 -1
  47. package/dist/es/core/Analytics/EventsQueue.js.map +1 -1
  48. package/dist/es/core/Analytics/utils.js +1 -1
  49. package/dist/es/core/Analytics/utils.js.map +1 -1
  50. package/dist/es/core/Errors/AdyenCheckoutError.js +1 -1
  51. package/dist/es/core/Errors/AdyenCheckoutError.js.map +1 -1
  52. package/dist/es/core/Errors/utils.js +1 -1
  53. package/dist/es/core/Errors/utils.js.map +1 -1
  54. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  55. package/dist/es/core/Services/analytics/collect-id.js.map +1 -1
  56. package/dist/es/core/Services/analytics/log-event.js +1 -1
  57. package/dist/es/core/config.js +1 -1
  58. package/dist/es/core/config.js.map +1 -1
  59. package/dist/es/core/core.js +1 -1
  60. package/dist/es/core/core.js.map +1 -1
  61. package/dist/es/index.d.ts +161 -248
  62. package/dist/es/language/locales/en-US.json.js +1 -1
  63. package/dist/es/utils/Script.js +1 -1
  64. package/dist/es/utils/Script.js.map +1 -1
  65. package/dist/es-legacy/adyen.css +1 -1
  66. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  67. package/dist/es-legacy/components/ApplePay/ApplePay.js.map +1 -1
  68. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  69. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  70. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  71. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  72. package/dist/es-legacy/components/Dropin/defaultProps.js +1 -1
  73. package/dist/es-legacy/components/Dropin/defaultProps.js.map +1 -1
  74. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  75. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  76. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  77. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  78. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
  79. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
  80. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
  81. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
  82. package/dist/es-legacy/components/PayPal/defaultProps.js +1 -1
  83. package/dist/es-legacy/components/PayPal/defaultProps.js.map +1 -1
  84. package/dist/es-legacy/components/PayPal/utils/format-paypal-order-contact-to-adyen-format.js +1 -1
  85. package/dist/es-legacy/components/PayPal/utils/format-paypal-order-contact-to-adyen-format.js.map +1 -1
  86. package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js +2 -0
  87. package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js.map +1 -0
  88. package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js +2 -0
  89. package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js.map +1 -0
  90. package/dist/es-legacy/components/PayPal/utils/get-paypal-styles.js +2 -0
  91. package/dist/es-legacy/components/PayPal/utils/get-paypal-styles.js.map +1 -0
  92. package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js +2 -0
  93. package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js.map +1 -0
  94. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  95. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  96. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  97. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  98. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  99. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  100. package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
  101. package/dist/es-legacy/core/AdyenCheckout.js +1 -1
  102. package/dist/es-legacy/core/AdyenCheckout.js.map +1 -1
  103. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  104. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  105. package/dist/es-legacy/core/Analytics/EventsQueue.js +1 -1
  106. package/dist/es-legacy/core/Analytics/EventsQueue.js.map +1 -1
  107. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  108. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  109. package/dist/es-legacy/core/Errors/AdyenCheckoutError.js +1 -1
  110. package/dist/es-legacy/core/Errors/AdyenCheckoutError.js.map +1 -1
  111. package/dist/es-legacy/core/Errors/utils.js +1 -1
  112. package/dist/es-legacy/core/Errors/utils.js.map +1 -1
  113. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  114. package/dist/es-legacy/core/Services/analytics/collect-id.js.map +1 -1
  115. package/dist/es-legacy/core/Services/analytics/log-event.js +1 -1
  116. package/dist/es-legacy/core/config.js +1 -1
  117. package/dist/es-legacy/core/config.js.map +1 -1
  118. package/dist/es-legacy/core/core.js +1 -1
  119. package/dist/es-legacy/core/core.js.map +1 -1
  120. package/dist/es-legacy/language/locales/en-US.json.js +1 -1
  121. package/dist/es-legacy/utils/Script.js +1 -1
  122. package/dist/es-legacy/utils/Script.js.map +1 -1
  123. package/dist/umd/adyen.css +1 -1
  124. package/dist/umd/adyen.js +2 -2
  125. package/dist/umd/adyen.js.map +1 -1
  126. package/package.json +2 -2
  127. package/dist/es/components/PayPal/utils.js +0 -2
  128. package/dist/es/components/PayPal/utils.js.map +0 -1
  129. package/dist/es-legacy/components/PayPal/utils.js +0 -2
  130. package/dist/es-legacy/components/PayPal/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { PayPalButtonsProps, FundingSource } from '../types';\nimport { getStyle } from '../utils';\nimport Spinner from '../../internal/Spinner';\nimport useCoreContext from '../../../core/Context/useCoreContext';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingChange,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: PayPalButtonsProps) {\n const { i18n } = useCoreContext();\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: FundingSource, buttonRef) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingChange && { onShippingChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef.Buttons(configuration);\n\n if (button.isEligible()) {\n button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n if (onShippingChange && onShippingAddressChange) {\n console.warn(\n 'PayPal - \"onShippingChange\" and \"onShippingAddressChange\" are defined. It is recommended to only use \"onShippingAddressChange\", as \"onShippingChange\" is getting deprecated'\n );\n }\n }, [onShippingChange, onShippingAddressChange]);\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef.FUNDING;\n createButton(PAYPAL, paypalButtonRef);\n\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n const isProcessingPaymentWithoutReviewPage = props.commit === true;\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\">\n <Spinner size=\"medium\" inline />\n {isProcessingPaymentWithoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","onInit","onApprove","onClick","onCancel","onError","onShippingChange","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","props","i18n","useCoreContext","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","render","current","useEffect","console","warn","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","isProcessingPaymentWithoutReviewPage","commit","h","div","className","classnames","ref","Spinner","size","inline","get"],"mappings":"iWAQe,SAASA,GAAcC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,iBACPA,EAAgBC,wBAChBA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,KACGC,IAEH,MAAMC,KAAEA,GAASC,IACXC,EAA6C,aAAhCH,EAAMI,eAAeC,OAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8BC,KAChD,MAAMT,EAAgB,IACdD,GAAc,CAAEW,uBAAwBlB,OACvCO,GAAc,CAAEY,YAAanB,OAC7BO,GAAgC,UAAlBS,GAA6BnB,GAAoB,CAAEA,wBACjEU,GAAgC,UAAlBS,GAA6BlB,GAA2B,CAAEA,+BACxES,GAAgC,UAAlBS,GAA6BjB,GAA2B,CAAEA,2BAC7EiB,gBACAb,MAAOiB,EAASJ,EAAeb,GAC/BX,SACAE,UACAC,WACAC,UACAH,aAGE4B,EAASnB,EAAUoB,QAAQd,GAE7Ba,EAAOE,cACPF,EAAOG,OAAOP,EAAUQ,QAC5B,EAGJC,GAAU,KACF7B,GAAoBC,GACpB6B,QAAQC,KACJ,8KAER,GACD,CAAC/B,EAAkBC,IAEtB4B,GAAU,KACN,MAAMG,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU9B,EAAU+B,QACtDlB,EAAac,EAAQnB,GAEhBN,EAAM8B,yBAAyBnB,EAAae,EAAQlB,GACpDR,EAAM+B,2BAA2BpB,EAAagB,EAAUlB,GACxDT,EAAMgC,wBAAwBrB,EAAaiB,EAAOlB,EAAAA,GACxD,IAEH,MAAMuB,GAAwD,IAAjBjC,EAAMkC,OAEnD,OACIC,EAACC,MAAAA,CAAIC,UAAWC,EAAW,kCAAmC,CAAE,oCAAqCzC,KACjGsC,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAKjC,IAC5F6B,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK/B,IAC5F2B,EAACC,MAAAA,CAAIC,UAAU,2EAA2EE,IAAK9B,IAC/F0B,EAACC,MAAAA,CAAIC,UAAU,uEAAuEE,IAAK7B,IAE1Fb,GACGsC,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACC,MAAAA,CAAIC,UAAU,6EACXF,EAACK,EAAAA,CAAQC,KAAK,SAASC,QAAAA,IACtBT,GAAwChC,EAAK0C,IAAI,8BAM1E"}
1
+ {"version":3,"file":"PaypalButtons.js","sources":["../../../../../src/components/PayPal/components/PaypalButtons.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport classnames from 'classnames';\nimport { getStyle } from '../utils/get-paypal-styles';\nimport Spinner from '../../internal/Spinner';\nimport useCoreContext from '../../../core/Context/useCoreContext';\n\nimport type { PayPalButtonsProps } from './types';\nimport type { FundingSource } from '../types';\n\nexport default function PaypalButtons({\n onInit,\n onApprove,\n onClick,\n onCancel,\n onError,\n onShippingAddressChange,\n onShippingOptionsChange,\n onSubmit,\n isProcessingPayment,\n paypalRef,\n style,\n ...props\n}: PayPalButtonsProps) {\n const { i18n } = useCoreContext();\n const isTokenize = props.configuration?.intent === 'tokenize';\n const paypalButtonRef = useRef<HTMLDivElement>(null);\n const creditButtonRef = useRef<HTMLDivElement>(null);\n const payLaterButtonRef = useRef<HTMLDivElement>(null);\n const venmoButtonRef = useRef<HTMLDivElement>(null);\n\n const createButton = (fundingSource: FundingSource, buttonRef) => {\n const configuration = {\n ...(isTokenize && { createBillingAgreement: onSubmit }),\n ...(!isTokenize && { createOrder: onSubmit }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingAddressChange && { onShippingAddressChange }),\n ...(!isTokenize && fundingSource !== 'venmo' && onShippingOptionsChange && { onShippingOptionsChange }),\n fundingSource,\n style: getStyle(fundingSource, style),\n onInit,\n onClick,\n onCancel,\n onError,\n onApprove\n };\n\n const button = paypalRef.Buttons(configuration);\n\n if (button.isEligible()) {\n button.render(buttonRef.current);\n }\n };\n\n useEffect(() => {\n const { PAYPAL, CREDIT, PAYLATER, VENMO } = paypalRef.FUNDING;\n createButton(PAYPAL, paypalButtonRef);\n\n if (!props.blockPayPalCreditButton) createButton(CREDIT, creditButtonRef);\n if (!props.blockPayPalPayLaterButton) createButton(PAYLATER, payLaterButtonRef);\n if (!props.blockPayPalVenmoButton) createButton(VENMO, venmoButtonRef);\n }, []);\n\n const isProcessingPaymentWithoutReviewPage = props.commit === true;\n\n return (\n <div className={classnames('adyen-checkout__paypal__buttons', { 'adyen-checkout__paypal-processing': isProcessingPayment })}>\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--paypal\" ref={paypalButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--credit\" ref={creditButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--pay-later\" ref={payLaterButtonRef} />\n <div className=\"adyen-checkout__paypal__button adyen-checkout__paypal__button--venmo\" ref={venmoButtonRef} />\n\n {isProcessingPayment && (\n <div className=\"adyen-checkout__paypal\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--processing\">\n <Spinner size=\"medium\" inline />\n {isProcessingPaymentWithoutReviewPage && i18n.get('paypal.processingPayment')}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["PaypalButtons","onInit","onApprove","onClick","onCancel","onError","onShippingAddressChange","onShippingOptionsChange","onSubmit","isProcessingPayment","paypalRef","style","props","i18n","useCoreContext","isTokenize","configuration","intent","paypalButtonRef","useRef","creditButtonRef","payLaterButtonRef","venmoButtonRef","createButton","fundingSource","buttonRef","createBillingAgreement","createOrder","getStyle","button","Buttons","isEligible","render","current","useEffect","PAYPAL","CREDIT","PAYLATER","VENMO","FUNDING","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton","isProcessingPaymentWithoutReviewPage","commit","h","div","className","classnames","ref","Spinner","size","inline","get"],"mappings":"mXAUe,SAASA,GAAcC,OAClCA,EAAMC,UACNA,EAASC,QACTA,EAAOC,SACPA,EAAQC,QACRA,EAAOC,wBACPA,EAAuBC,wBACvBA,EAAuBC,SACvBA,EAAQC,oBACRA,EAAmBC,UACnBA,EAASC,MACTA,KACGC,IAEH,MAAMC,KAAEA,GAASC,IACXC,EAA6C,aAAhCH,EAAMI,eAAeC,OAClCC,EAAkBC,EAAuB,MACzCC,EAAkBD,EAAuB,MACzCE,EAAoBF,EAAuB,MAC3CG,EAAiBH,EAAuB,MAExCI,EAAe,CAACC,EAA8BC,KAChD,MAAMT,EAAgB,IACdD,GAAc,CAAEW,uBAAwBlB,OACvCO,GAAc,CAAEY,YAAanB,OAC7BO,GAAgC,UAAlBS,GAA6BlB,GAA2B,CAAEA,+BACxES,GAAgC,UAAlBS,GAA6BjB,GAA2B,CAAEA,2BAC7EiB,gBACAb,MAAOiB,EAASJ,EAAeb,GAC/BV,SACAE,UACAC,WACAC,UACAH,aAGE2B,EAASnB,EAAUoB,QAAQd,GAE7Ba,EAAOE,cACPF,EAAOG,OAAOP,EAAUQ,QAC5B,EAGJC,GAAU,KACN,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,SAAEA,EAAQC,MAAEA,GAAU5B,EAAU6B,QACtDhB,EAAaY,EAAQjB,GAEhBN,EAAM4B,yBAAyBjB,EAAaa,EAAQhB,GACpDR,EAAM6B,2BAA2BlB,EAAac,EAAUhB,GACxDT,EAAM8B,wBAAwBnB,EAAae,EAAOhB,EAAAA,GACxD,IAEH,MAAMqB,GAAwD,IAAjB/B,EAAMgC,OAEnD,OACIC,EAACC,MAAAA,CAAIC,UAAWC,EAAW,kCAAmC,CAAE,oCAAqCvC,KACjGoC,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK/B,IAC5F2B,EAACC,MAAAA,CAAIC,UAAU,wEAAwEE,IAAK7B,IAC5FyB,EAACC,MAAAA,CAAIC,UAAU,2EAA2EE,IAAK5B,IAC/FwB,EAACC,MAAAA,CAAIC,UAAU,uEAAuEE,IAAK3B,IAE1Fb,GACGoC,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACC,MAAAA,CAAIC,UAAU,6EACXF,EAACK,EAAAA,CAAQC,KAAK,SAASC,QAAAA,IACtBT,GAAwC9B,EAAKwC,IAAI,8BAM1E"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as n,useCallback as a,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import s from"./PaypalButtons.js";import t from"../../internal/Spinner/Spinner.js";import{getPaypalUrl as r}from"../utils.js";import p from"../../../utils/Script.js";function c({onApprove:c,onCancel:i,onChange:l,onError:u,onSubmit:m,...d}){const[y,_]=n("pending");this.setStatus=_;const f=a(((e,n)=>{_("processing"),c(e,n)}),[c]),h=()=>{_("ready")};return o((()=>{const e=r(d),n={...d.cspNonce&&{nonce:d.cspNonce}},a={...d.cspNonce&&{cspNonce:d.cspNonce}},o=new p(e,"body",n,a);return o.load().then(h),()=>{o.remove()}}),[]),"pending"===y?e("div",{className:"adyen-checkout__paypal","aria-live":"polite","aria-busy":"true"},e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending"},e(t,null))):e("div",{className:"adyen-checkout__paypal"},e(s,{...d,onCancel:i,onChange:l,onError:u,onSubmit:m,onApprove:f,isProcessingPayment:"processing"===y,paypalRef:window.paypal}))}export{c as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as a,useCallback as n,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import t from"./PaypalButtons.js";import s from"../../internal/Spinner/Spinner.js";import{getPaypalUrl as r}from"../utils/get-paypal-url.js";import p from"../../../utils/Script.js";function c({onApprove:c,onCancel:i,onChange:l,onError:u,onSubmit:m,onScriptLoadFailure:d,...y}){const[_,f]=a("pending");this.setStatus=f;const h=n(((e,a)=>{f("processing"),c(e,a)}),[c]),g=()=>{f("ready")},N=e=>{d(e)};return o((()=>{const e=r(y),a={...y.cspNonce&&{nonce:y.cspNonce}},n={...y.cspNonce&&{cspNonce:y.cspNonce}},o=new p(e,"body",a,n);return o.load().then(g).catch(N),()=>{o.remove()}}),[]),"pending"===_?e("div",{className:"adyen-checkout__paypal","aria-live":"polite","aria-busy":"true"},e("div",{className:"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending"},e(s,null))):e("div",{className:"adyen-checkout__paypal"},e(t,{...y,onCancel:i,onChange:l,onError:u,onSubmit:m,onApprove:h,isProcessingPayment:"processing"===_,paypalRef:window.paypal}))}export{c as default};
2
2
  //# sourceMappingURL=PaypalComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaypalComponent.js","sources":["../../../../../src/components/PayPal/components/PaypalComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useCallback } from 'preact/hooks';\nimport PaypalButtons from './PaypalButtons';\nimport Spinner from '../../internal/Spinner';\nimport { getPaypalUrl } from '../utils';\nimport { PayPalComponentProps } from '../types';\nimport Script from '../../../utils/Script';\n\nexport default function PaypalComponent({ onApprove, onCancel, onChange, onError, onSubmit, ...props }: PayPalComponentProps) {\n const [status, setStatus] = useState('pending');\n\n this.setStatus = setStatus;\n\n const handleOnApprove = useCallback(\n (data: any, actions: any) => {\n setStatus('processing');\n onApprove(data, actions);\n },\n [onApprove]\n );\n\n const handlePaypalLoad = () => {\n setStatus('ready');\n };\n\n useEffect(() => {\n const src = getPaypalUrl(props);\n\n const attributes = { ...(props.cspNonce && { nonce: props.cspNonce }) },\n dataAttributes = { ...(props.cspNonce && { cspNonce: props.cspNonce }) };\n\n const script = new Script(src, 'body', attributes, dataAttributes);\n\n script.load().then(handlePaypalLoad);\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__paypal\" aria-live=\"polite\" aria-busy=\"true\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending\">\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__paypal\">\n <PaypalButtons\n {...props}\n onCancel={onCancel}\n onChange={onChange}\n onError={onError}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n isProcessingPayment={status === 'processing'}\n paypalRef={window.paypal}\n />\n </div>\n );\n}\n"],"names":["PaypalComponent","onApprove","onCancel","onChange","onError","onSubmit","props","status","setStatus","useState","this","handleOnApprove","useCallback","data","actions","handlePaypalLoad","useEffect","src","getPaypalUrl","attributes","cspNonce","nonce","dataAttributes","script","Script","load","then","remove","h","div","className","aria-live","aria-busy","Spinner","PaypalButtons","isProcessingPayment","paypalRef","window","paypal"],"mappings":"sVAQe,SAASA,GAAgBC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,QAAEA,EAAOC,SAAEA,KAAaC,IAC3F,MAAOC,EAAQC,GAAaC,EAAS,WAErCC,KAAKF,UAAYA,EAEjB,MAAMG,EAAkBC,GACpB,CAACC,EAAWC,KACRN,EAAU,cACVP,EAAUY,EAAMC,EAAAA,GAEpB,CAACb,IAGCc,EAAmB,KACrBP,EAAU,QAAA,EAkBd,OAfAQ,GAAU,KACN,MAAMC,EAAMC,EAAaZ,GAEnBa,EAAa,IAAMb,EAAMc,UAAY,CAAEC,MAAOf,EAAMc,WACtDE,EAAiB,IAAMhB,EAAMc,UAAY,CAAEA,SAAUd,EAAMc,WAEzDG,EAAS,IAAIC,EAAOP,EAAK,OAAQE,EAAYG,GAInD,OAFAC,EAAOE,OAAOC,KAAKX,GAEZ,KACHQ,EAAOI,QAAM,CACjB,GACD,IAEY,YAAXpB,EAEIqB,EAACC,MAAAA,CAAIC,UAAU,yBAAyBC,YAAU,SAASC,YAAU,QACjEJ,EAACC,MAAAA,CAAIC,UAAU,0EACXF,EAACK,EAAAA,QAObL,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACM,EAAAA,IACO5B,EACJJ,SAAUA,EACVC,SAAUA,EACVC,QAASA,EACTC,SAAUA,EACVJ,UAAWU,EACXwB,oBAAgC,eAAX5B,EACrB6B,UAAWC,OAAOC,SAIlC"}
1
+ {"version":3,"file":"PaypalComponent.js","sources":["../../../../../src/components/PayPal/components/PaypalComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useCallback } from 'preact/hooks';\nimport PaypalButtons from './PaypalButtons';\nimport Spinner from '../../internal/Spinner';\nimport { getPaypalUrl } from '../utils/get-paypal-url';\nimport Script from '../../../utils/Script';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport type { PayPalComponentProps } from './types';\n\nexport default function PaypalComponent({ onApprove, onCancel, onChange, onError, onSubmit, onScriptLoadFailure, ...props }: PayPalComponentProps) {\n const [status, setStatus] = useState('pending');\n\n this.setStatus = setStatus;\n\n const handleOnApprove = useCallback(\n (data: any, actions: any) => {\n setStatus('processing');\n onApprove(data, actions);\n },\n [onApprove]\n );\n\n const handlePaypalLoad = () => {\n setStatus('ready');\n };\n\n const handlePaypalLoadFailure = (error: AdyenCheckoutError) => {\n onScriptLoadFailure(error);\n };\n\n useEffect(() => {\n const src = getPaypalUrl(props);\n\n const attributes = { ...(props.cspNonce && { nonce: props.cspNonce }) },\n dataAttributes = { ...(props.cspNonce && { cspNonce: props.cspNonce }) };\n\n const script = new Script(src, 'body', attributes, dataAttributes);\n\n script.load().then(handlePaypalLoad).catch(handlePaypalLoadFailure);\n\n return () => {\n script.remove();\n };\n }, []);\n\n if (status === 'pending') {\n return (\n <div className=\"adyen-checkout__paypal\" aria-live=\"polite\" aria-busy=\"true\">\n <div className=\"adyen-checkout__paypal__status adyen-checkout__paypal__status--pending\">\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"adyen-checkout__paypal\">\n <PaypalButtons\n {...props}\n onCancel={onCancel}\n onChange={onChange}\n onError={onError}\n onSubmit={onSubmit}\n onApprove={handleOnApprove}\n isProcessingPayment={status === 'processing'}\n paypalRef={window.paypal}\n />\n </div>\n );\n}\n"],"names":["PaypalComponent","onApprove","onCancel","onChange","onError","onSubmit","onScriptLoadFailure","props","status","setStatus","useState","this","handleOnApprove","useCallback","data","actions","handlePaypalLoad","handlePaypalLoadFailure","error","useEffect","src","getPaypalUrl","attributes","cspNonce","nonce","dataAttributes","script","Script","load","then","catch","remove","h","div","className","aria-live","aria-busy","Spinner","PaypalButtons","isProcessingPayment","paypalRef","window","paypal"],"mappings":"qWASe,SAASA,GAAgBC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,QAAEA,EAAOC,SAAEA,EAAQC,oBAAEA,KAAwBC,IAChH,MAAOC,EAAQC,GAAaC,EAAS,WAErCC,KAAKF,UAAYA,EAEjB,MAAMG,EAAkBC,GACpB,CAACC,EAAWC,KACRN,EAAU,cACVR,EAAUa,EAAMC,EAAAA,GAEpB,CAACd,IAGCe,EAAmB,KACrBP,EAAU,QAAA,EAGRQ,EAA2BC,IAC7BZ,EAAoBY,EAAAA,EAkBxB,OAfAC,GAAU,KACN,MAAMC,EAAMC,EAAad,GAEnBe,EAAa,IAAMf,EAAMgB,UAAY,CAAEC,MAAOjB,EAAMgB,WACtDE,EAAiB,IAAMlB,EAAMgB,UAAY,CAAEA,SAAUhB,EAAMgB,WAEzDG,EAAS,IAAIC,EAAOP,EAAK,OAAQE,EAAYG,GAInD,OAFAC,EAAOE,OAAOC,KAAKb,GAAkBc,MAAMb,GAEpC,KACHS,EAAOK,QAAM,CACjB,GACD,IAEY,YAAXvB,EAEIwB,EAACC,MAAAA,CAAIC,UAAU,yBAAyBC,YAAU,SAASC,YAAU,QACjEJ,EAACC,MAAAA,CAAIC,UAAU,0EACXF,EAACK,EAAAA,QAObL,EAACC,MAAAA,CAAIC,UAAU,0BACXF,EAACM,EAAAA,IACO/B,EACJL,SAAUA,EACVC,SAAUA,EACVC,QAASA,EACTC,SAAUA,EACVJ,UAAWW,EACX2B,oBAAgC,eAAX/B,EACrBgC,UAAWC,OAAOC,SAIlC"}
@@ -1,2 +1,2 @@
1
- const n={environment:"TEST",status:"loading",userAction:"pay",merchantId:"",cspNonce:null,intent:null,commit:!0,vault:!1,style:{height:48},blockPayPalCreditButton:!1,blockPayPalPayLaterButton:!1,enableMessages:!1,blockPayPalVenmoButton:!1,isExpress:!1,configuration:{merchantId:"",intent:null},onInit:()=>{},onClick:()=>{},onError:()=>{},onShippingChange:()=>{}};export{n as default};
1
+ const t={isExpress:!1,userAction:"pay",commit:!0,vault:!1,enableMessages:!1,style:{height:50},blockPayPalCreditButton:!1,blockPayPalPayLaterButton:!1,blockPayPalVenmoButton:!1};export{t as default};
2
2
  //# sourceMappingURL=defaultProps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultProps.js","sources":["../../../../src/components/PayPal/defaultProps.ts"],"sourcesContent":["import { PayPalConfiguration } from './types';\n\nconst defaultProps: Partial<PayPalConfiguration> = {\n environment: 'TEST',\n status: 'loading',\n\n userAction: 'pay',\n\n // Config\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/#merchant-id}\n */\n merchantId: '',\n\n /**\n * @see {@link https://developer.paypal.com/docs/business/javascript-sdk/javascript-sdk-configuration/#csp-nonce}\n */\n cspNonce: null,\n\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/#intent}\n */\n intent: null,\n\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/#commit}\n */\n commit: true,\n\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/#vault}\n */\n vault: false,\n\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/integration-features/customize-button/}\n */\n style: {\n /**\n * The height of the buttons is set to 48px to align with the default size of our Pay buttons.\n */\n height: 48\n },\n\n blockPayPalCreditButton: false,\n\n blockPayPalPayLaterButton: false,\n\n enableMessages: false,\n\n blockPayPalVenmoButton: false,\n\n isExpress: false,\n\n configuration: {\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/#merchant-id}\n */\n merchantId: '',\n /**\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/#intent}\n */\n intent: null\n },\n\n // Events\n onInit: () => {},\n onClick: () => {},\n onError: () => {},\n onShippingChange: () => {}\n};\n\nexport default defaultProps;\n"],"names":["defaultProps","environment","status","userAction","merchantId","cspNonce","intent","commit","vault","style","height","blockPayPalCreditButton","blockPayPalPayLaterButton","enableMessages","blockPayPalVenmoButton","isExpress","configuration","onInit","onClick","onError","onShippingChange"],"mappings":"AAEA,MAAMA,EAA6C,CAC/CC,YAAa,OACbC,OAAQ,UAERC,WAAY,MAMZC,WAAY,GAKZC,SAAU,KAKVC,OAAQ,KAKRC,QAAQ,EAKRC,OAAO,EAKPC,MAAO,CAIHC,OAAQ,IAGZC,yBAAyB,EAEzBC,2BAA2B,EAE3BC,gBAAgB,EAEhBC,wBAAwB,EAExBC,WAAW,EAEXC,cAAe,CAIXZ,WAAY,GAIZE,OAAQ,MAIZW,OAAQ,OACRC,QAAS,OACTC,QAAS,OACTC,iBAAkB"}
1
+ {"version":3,"file":"defaultProps.js","sources":["../../../../src/components/PayPal/defaultProps.ts"],"sourcesContent":["import { PayPalConfiguration } from './types';\n\nconst defaultProps: Partial<PayPalConfiguration> = {\n isExpress: false,\n userAction: 'pay',\n commit: true,\n vault: false,\n enableMessages: false,\n style: {\n height: 50 // The height of the buttons is set to 50px to align with the default size of our Pay buttons.\n },\n blockPayPalCreditButton: false,\n blockPayPalPayLaterButton: false,\n blockPayPalVenmoButton: false\n};\n\nexport default defaultProps;\n"],"names":["defaultProps","isExpress","userAction","commit","vault","enableMessages","style","height","blockPayPalCreditButton","blockPayPalPayLaterButton","blockPayPalVenmoButton"],"mappings":"AAEA,MAAMA,EAA6C,CAC/CC,WAAW,EACXC,WAAY,MACZC,QAAQ,EACRC,OAAO,EACPC,gBAAgB,EAChBC,MAAO,CACHC,OAAQ,IAEZC,yBAAyB,EACzBC,2BAA2B,EAC3BC,wBAAwB"}
@@ -1,2 +1,2 @@
1
- const e=(e,a)=>{if(void 0===e?.address)return null;const{address:r,name:n}=e,d=((e=null,a=null)=>e&&a?`${e}, ${a}`:e||(a||null))(r.address_line_1,r.address_line_2);return{houseNumberOrName:"ZZ",...d&&{street:d},...r.admin_area_1&&{stateOrProvince:r.admin_area_1},...r.admin_area_2&&{city:r.admin_area_2},...r.postal_code&&{postalCode:r.postal_code},...r.country_code&&{country:r.country_code},...a&&{firstName:n.full_name}}};export{e as formatPaypalOrderContatcToAdyenFormat};
1
+ const e=(e,a)=>{if(void 0===e?.address)return null;const{address:r,name:n}=e,d=((e=null,a=null)=>e&&a?`${e}, ${a}`:e||(a||null))(r.address_line_1,r.address_line_2);return{houseNumberOrName:"ZZ",...d&&{street:d},...r.admin_area_1&&{stateOrProvince:r.admin_area_1},...r.admin_area_2&&{city:r.admin_area_2},...r.postal_code&&{postalCode:r.postal_code},...r.country_code&&{country:r.country_code},...a&&{firstName:n.full_name}}};export{e as formatPaypalOrderContactToAdyenFormat};
2
2
  //# sourceMappingURL=format-paypal-order-contact-to-adyen-format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-paypal-order-contact-to-adyen-format.js","sources":["../../../../../src/components/PayPal/utils/format-paypal-order-contact-to-adyen-format.ts"],"sourcesContent":["import { AddressData } from '../../../types/global-types';\n\n/**\n * This function formats PayPal contact format to Adyen address format\n */\nexport const formatPaypalOrderContatcToAdyenFormat = (paymentContact: any, isDeliveryAddress?: boolean): AddressData | null => {\n const getStreet = (addressPart1 = null, addressPart2 = null): string | null => {\n if (addressPart1 && addressPart2) return `${addressPart1}, ${addressPart2}`;\n if (addressPart1) return addressPart1;\n if (addressPart2) return addressPart2;\n return null;\n };\n\n if (paymentContact?.address === undefined) return null;\n\n const { address, name } = paymentContact;\n const street = getStreet(address.address_line_1, address.address_line_2);\n\n return {\n houseNumberOrName: 'ZZ',\n ...(street && { street }),\n ...(address.admin_area_1 && { stateOrProvince: address.admin_area_1 }),\n ...(address.admin_area_2 && { city: address.admin_area_2 }),\n ...(address.postal_code && { postalCode: address.postal_code }),\n ...(address.country_code && { country: address.country_code }),\n ...(isDeliveryAddress && {\n firstName: name.full_name\n })\n };\n};\n"],"names":["formatPaypalOrderContatcToAdyenFormat","paymentContact","isDeliveryAddress","undefined","address","name","street","addressPart1","addressPart2","getStreet","address_line_1","address_line_2","houseNumberOrName","admin_area_1","stateOrProvince","admin_area_2","city","postal_code","postalCode","country_code","country","firstName","full_name"],"mappings":"AAKO,MAAMA,EAAwC,CAACC,EAAqBC,KAQvE,QAAgCC,IAA5BF,GAAgBG,QAAuB,OAAO,KAElD,MAAMA,QAAEA,EAAOC,KAAEA,GAASJ,EACpBK,EAVY,EAACC,EAAe,KAAMC,EAAe,OAC/CD,GAAgBC,EAAqB,GAAGD,MAAiBC,IACzDD,IACAC,GACG,MAMIC,CAAUL,EAAQM,eAAgBN,EAAQO,gBAEzD,MAAO,CACHC,kBAAmB,QACfN,GAAU,CAAEA,aACZF,EAAQS,cAAgB,CAAEC,gBAAiBV,EAAQS,iBACnDT,EAAQW,cAAgB,CAAEC,KAAMZ,EAAQW,iBACxCX,EAAQa,aAAe,CAAEC,WAAYd,EAAQa,gBAC7Cb,EAAQe,cAAgB,CAAEC,QAAShB,EAAQe,iBAC3CjB,GAAqB,CACrBmB,UAAWhB,EAAKiB,WAExB"}
1
+ {"version":3,"file":"format-paypal-order-contact-to-adyen-format.js","sources":["../../../../../src/components/PayPal/utils/format-paypal-order-contact-to-adyen-format.ts"],"sourcesContent":["import { AddressData } from '../../../types/global-types';\n\n/**\n * This function formats PayPal contact format to Adyen address format\n */\nexport const formatPaypalOrderContactToAdyenFormat = (paymentContact: any, isDeliveryAddress?: boolean): AddressData | null => {\n const getStreet = (addressPart1 = null, addressPart2 = null): string | null => {\n if (addressPart1 && addressPart2) return `${addressPart1}, ${addressPart2}`;\n if (addressPart1) return addressPart1;\n if (addressPart2) return addressPart2;\n return null;\n };\n\n if (paymentContact?.address === undefined) return null;\n\n const { address, name } = paymentContact;\n const street = getStreet(address.address_line_1, address.address_line_2);\n\n return {\n houseNumberOrName: 'ZZ',\n ...(street && { street }),\n ...(address.admin_area_1 && { stateOrProvince: address.admin_area_1 }),\n ...(address.admin_area_2 && { city: address.admin_area_2 }),\n ...(address.postal_code && { postalCode: address.postal_code }),\n ...(address.country_code && { country: address.country_code }),\n ...(isDeliveryAddress && {\n firstName: name.full_name\n })\n };\n};\n"],"names":["formatPaypalOrderContactToAdyenFormat","paymentContact","isDeliveryAddress","undefined","address","name","street","addressPart1","addressPart2","getStreet","address_line_1","address_line_2","houseNumberOrName","admin_area_1","stateOrProvince","admin_area_2","city","postal_code","postalCode","country_code","country","firstName","full_name"],"mappings":"AAKO,MAAMA,EAAwC,CAACC,EAAqBC,KAQvE,QAAgCC,IAA5BF,GAAgBG,QAAuB,OAAO,KAElD,MAAMA,QAAEA,EAAOC,KAAEA,GAASJ,EACpBK,EAVY,EAACC,EAAe,KAAMC,EAAe,OAC/CD,GAAgBC,EAAqB,GAAGD,MAAiBC,IACzDD,IACAC,GACG,MAMIC,CAAUL,EAAQM,eAAgBN,EAAQO,gBAEzD,MAAO,CACHC,kBAAmB,QACfN,GAAU,CAAEA,aACZF,EAAQS,cAAgB,CAAEC,gBAAiBV,EAAQS,iBACnDT,EAAQW,cAAgB,CAAEC,KAAMZ,EAAQW,iBACxCX,EAAQa,aAAe,CAAEC,WAAYd,EAAQa,gBAC7Cb,EAAQe,cAAgB,CAAEC,QAAShB,EAAQe,iBAC3CjB,GAAqB,CACrBmB,UAAWhB,EAAKiB,WAExB"}
@@ -0,0 +1,2 @@
1
+ import{SUPPORTED_LOCALES as n}from"../config.js";const l=l=>{const o=l?l.replace("-","_"):null;return n.includes(o)?o:null};export{l as getSupportedLocale};
2
+ //# sourceMappingURL=get-paypal-locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-paypal-locale.js","sources":["../../../../../src/components/PayPal/utils/get-paypal-locale.ts"],"sourcesContent":["import { SUPPORTED_LOCALES } from '../config';\nimport type { PayPalSupportedLocale } from './types';\n\n/**\n * Returns either a locale supported by PayPal or null, in order to let the PayPal SDK auto-detect the shopper locale.\n */\nexport const getSupportedLocale = (locale: string): PayPalSupportedLocale => {\n const formattedLocale = locale ? locale.replace('-', '_') : null;\n const supportedLocale = SUPPORTED_LOCALES.includes(formattedLocale as PayPalSupportedLocale) ? formattedLocale : null;\n return supportedLocale as PayPalSupportedLocale;\n};\n"],"names":["getSupportedLocale","locale","formattedLocale","replace","SUPPORTED_LOCALES","includes","supportedLocale"],"mappings":"iDAMaA,MAAAA,EAAsBC,IAC/B,MAAMC,EAAkBD,EAASA,EAAOE,QAAQ,IAAK,KAAO,KAE5D,OADwBC,EAAkBC,SAASH,GAA4CA,EAAkB,IAC1GI"}
@@ -0,0 +1,2 @@
1
+ import{getSupportedLocale as e}from"./get-paypal-locale.js";import{ADYEN_CLIENTID_TEST as n,ADYEN_CLIENTID_LIVE as t,INTEGRATION_DATE as o}from"../config.js";const i=({amount:i,countryCode:r,debug:a,environment:c="",locale:l,configuration:u,commit:m,vault:s,enableMessages:g})=>{const d=e(l),y=i?i.currency:null,b="test"===c.toLowerCase(),p=b?n:t,{merchantId:f,intent:v}=u;return{...f&&{"merchant-id":f},...d&&{locale:d},...r&&b&&{"buyer-country":r},...a&&b&&{debug:a},...y&&{currency:y},...v&&{intent:v},commit:m,vault:s,"client-id":p,"integration-date":o,"enable-funding":"paylater,venmo",components:"buttons,funding-eligibility"+(g?",messages":"")}};export{i as getPaypalSettings};
2
+ //# sourceMappingURL=get-paypal-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-paypal-settings.js","sources":["../../../../../src/components/PayPal/utils/get-paypal-settings.ts"],"sourcesContent":["import { getSupportedLocale } from './get-paypal-locale';\nimport { ADYEN_CLIENTID_LIVE, ADYEN_CLIENTID_TEST, INTEGRATION_DATE } from '../config';\nimport type { PaypalSettings, PayPalSupportedLocale } from './types';\nimport type { PayPalComponentProps } from '../components/types';\n\n/**\n * Returns an object of settings for the PayPal SDK\n */\nexport const getPaypalSettings = ({\n amount,\n countryCode,\n debug,\n environment = '',\n locale,\n configuration,\n commit,\n vault,\n enableMessages\n}: Partial<PayPalComponentProps>): PaypalSettings => {\n const shopperLocale: PayPalSupportedLocale = getSupportedLocale(locale);\n const currency: string = amount ? amount.currency : null;\n const isTestEnvironment: boolean = environment.toLowerCase() === 'test';\n const clientId: string = isTestEnvironment ? ADYEN_CLIENTID_TEST : ADYEN_CLIENTID_LIVE;\n const { merchantId, intent } = configuration;\n const components = `buttons,funding-eligibility${enableMessages ? ',messages' : ''}`;\n\n return {\n ...(merchantId && { 'merchant-id': merchantId }),\n ...(shopperLocale && { locale: shopperLocale }),\n ...(countryCode && isTestEnvironment && { 'buyer-country': countryCode }),\n ...(debug && isTestEnvironment && { debug }),\n ...(currency && { currency }),\n ...(intent && { intent }),\n commit,\n vault,\n 'client-id': clientId,\n 'integration-date': INTEGRATION_DATE,\n 'enable-funding': 'paylater,venmo',\n components\n };\n};\n"],"names":["getPaypalSettings","amount","countryCode","debug","environment","locale","configuration","commit","vault","enableMessages","shopperLocale","getSupportedLocale","currency","isTestEnvironment","toLowerCase","clientId","ADYEN_CLIENTID_TEST","ADYEN_CLIENTID_LIVE","merchantId","intent","INTEGRATION_DATE","components"],"mappings":"oKAQaA,EAAoB,EAC7BC,SACAC,cACAC,QACAC,cAAc,GACdC,SACAC,gBACAC,SACAC,QACAC,qBAEA,MAAMC,EAAuCC,EAAmBN,GAC1DO,EAAmBX,EAASA,EAAOW,SAAW,KAC9CC,EAA2D,SAA9BT,EAAYU,cACzCC,EAAmBF,EAAoBG,EAAsBC,GAC7DC,WAAEA,EAAUC,OAAEA,GAAWb,EAG/B,MAAO,IACCY,GAAc,CAAE,cAAeA,MAC/BR,GAAiB,CAAEL,OAAQK,MAC3BR,GAAeW,GAAqB,CAAE,gBAAiBX,MACvDC,GAASU,GAAqB,CAAEV,YAChCS,GAAY,CAAEA,eACdO,GAAU,CAAEA,UAChBZ,SACAC,QACA,YAAaO,EACb,mBAAoBK,EACpB,iBAAkB,iBAClBC,WAde,+BAA8BZ,EAAiB,YAAc,IAehF"}
@@ -0,0 +1,2 @@
1
+ import{SUPPORTED_COLORS_FOR_CREDIT as o}from"../config.js";const c=(c,e={})=>"paypal"===c?{...e}:Object.keys(e).reduce(((c,r)=>{const t=e[r];return("color"!==r||o.includes(t))&&(c[r]=t),c}),{});export{c as getStyle};
2
+ //# sourceMappingURL=get-paypal-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-paypal-styles.js","sources":["../../../../../src/components/PayPal/utils/get-paypal-styles.ts"],"sourcesContent":["import { SUPPORTED_COLORS_FOR_CREDIT } from '../config';\nimport type { FundingSource } from '../types';\n\n/**\n * Processes and returns a new style object.\n */\nexport const getStyle = (fundingSource: FundingSource, style = {}) => {\n if (fundingSource === 'paypal') return { ...style };\n\n return Object.keys(style).reduce((acc, prop) => {\n const value = style[prop];\n if (prop !== 'color' || SUPPORTED_COLORS_FOR_CREDIT.includes(value)) {\n acc[prop] = value;\n }\n return acc;\n }, {});\n};\n"],"names":["getStyle","fundingSource","style","Object","keys","reduce","acc","prop","value","SUPPORTED_COLORS_FOR_CREDIT","includes"],"mappings":"2DAMaA,MAAAA,EAAW,CAACC,EAA8BC,EAAQ,CAAA,IACrC,WAAlBD,EAAmC,IAAKC,GAErCC,OAAOC,KAAKF,GAAOG,QAAO,CAACC,EAAKC,KACnC,MAAMC,EAAQN,EAAMK,GAIpB,OAHa,UAATA,GAAoBE,EAA4BC,SAASF,MACzDF,EAAIC,GAAQC,GAETF,CAAAA,GACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{getPaypalSettings as o}from"./get-paypal-settings.js";import{PAYPAL_JS_URL as t}from"../config.js";const e=e=>{const n=o(e),p=decodeURIComponent(Object.keys(n).map((o=>`${o}=${n[o]}`)).join("&"));return`${t}?${p}`};export{e as getPaypalUrl};
2
+ //# sourceMappingURL=get-paypal-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-paypal-url.js","sources":["../../../../../src/components/PayPal/utils/get-paypal-url.ts"],"sourcesContent":["import { getPaypalSettings } from './get-paypal-settings';\nimport { PAYPAL_JS_URL } from '../config';\nimport type { PayPalComponentProps } from '../components/types';\n\n/**\n * Returns the PayPal SDK script URL with query parameters\n * @see {@link https://developer.paypal.com/docs/checkout/reference/customize-sdk/}\n */\nexport const getPaypalUrl = (props: Partial<PayPalComponentProps>): string => {\n const settings = getPaypalSettings(props);\n const params = decodeURIComponent(\n Object.keys(settings)\n .map(key => `${key}=${settings[key]}`)\n .join('&')\n );\n return `${PAYPAL_JS_URL}?${params}`;\n};\n"],"names":["getPaypalUrl","props","settings","getPaypalSettings","params","decodeURIComponent","Object","keys","map","key","join","PAYPAL_JS_URL"],"mappings":"0GAQaA,MAAAA,EAAgBC,IACzB,MAAMC,EAAWC,EAAkBF,GAC7BG,EAASC,mBACXC,OAAOC,KAAKL,GACPM,KAAIC,GAAO,GAAGA,KAAOP,EAASO,OAC9BC,KAAK,MAEd,MAAO,GAAGC,KAAiBP,GAAQ"}
@@ -1,2 +1,2 @@
1
- import{createElement as s}from"../../../external/preact/dist/preact.js";import{UIElement as t}from"../../internal/UIElement/UIElement.js";import e from"../../internal/IssuerList/IssuerList.js";import i from"../../../utils/get-issuer-image.js";import{FALLBACK_CONTEXT as r}from"../../../core/config.js";import o from"../../../core/Context/CoreProvider.js";import n from"../../internal/RedirectButton/RedirectButton.js";import p from"../../../core/Errors/SRPanelProvider.js";class a extends t{static defaultProps={showImage:!0,onValid:()=>{},issuers:[],highlightedIssuers:[],loadingContext:r,showPaymentMethodItemImages:!1};constructor(s,t){super(s,t);const e=s=>this.resources.getImage(s);if(this.props.showImage){const s=i({loadingContext:this.props.loadingContext},this.constructor.type,e);this.props.issuers=this.props.issuers.map((t=>({...t,icon:s(t.id)})))}}formatProps(s){const t=s.details&&s.details.length&&(s.details.find((s=>"issuer"===s.key))||{}).items||s.issuers||[];return{...s,issuers:t}}formatData(){return{paymentMethod:{type:this.type,issuer:this.state?.data?.issuer}}}get isValid(){return 0===this.props.issuers.length||!!this.state?.isValid}get brands(){return this.props.showPaymentMethodItemImages?this.props.issuers.map((s=>({icon:s.icon,name:s.id}))):[]}render(){return s(o,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},this.props.issuers.length>0?s(p,{srPanel:this.props.modules.srPanel},s(e,{ref:s=>{this.componentRef=s},items:this.props.issuers,highlightedIds:this.props.highlightedIssuers,...this.props,...this.state,showImage:this.props.showImage,type:this.constructor.type,onChange:this.setState,onSubmit:this.submit,payButton:this.payButton,contextualText:this.props.i18n.get("issuerList.selectField.contextualText"),onSubmitAnalytics:this.submitAnalytics})):this.props.showPayButton&&s(n,{name:this.props.name,...this.props,onSubmit:this.submit,payButton:this.payButton,ref:s=>{this.componentRef=s}}))}}export{a as default};
1
+ import{createElement as s}from"../../../external/preact/dist/preact.js";import{UIElement as t}from"../../internal/UIElement/UIElement.js";import e from"../../internal/IssuerList/IssuerList.js";import i from"../../../utils/get-issuer-image.js";import{FALLBACK_CONTEXT as r}from"../../../core/config.js";import o from"../../../core/Context/CoreProvider.js";import n from"../../internal/RedirectButton/RedirectButton.js";import p from"../../../core/Errors/SRPanelProvider.js";class a extends t{static defaultProps={showImage:!0,issuers:[],highlightedIssuers:[],loadingContext:r,showPaymentMethodItemImages:!1};constructor(s,t){super(s,t);const e=s=>this.resources.getImage(s);if(this.props.showImage){const s=i({loadingContext:this.props.loadingContext},this.constructor.type,e);this.props.issuers=this.props.issuers.map((t=>({...t,icon:s(t.id)})))}}formatProps(s){const t=s.details&&s.details.length&&(s.details.find((s=>"issuer"===s.key))||{}).items||s.issuers||[];return{...s,issuers:t}}formatData(){return{paymentMethod:{type:this.type,issuer:this.state?.data?.issuer}}}get isValid(){return 0===this.props.issuers.length||!!this.state?.isValid}get brands(){return this.props.showPaymentMethodItemImages?this.props.issuers.map((s=>({icon:s.icon,name:s.id}))):[]}render(){return s(o,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},this.props.issuers.length>0?s(p,{srPanel:this.props.modules.srPanel},s(e,{ref:s=>{this.componentRef=s},items:this.props.issuers,highlightedIds:this.props.highlightedIssuers,...this.props,...this.state,showImage:this.props.showImage,type:this.constructor.type,onChange:this.setState,onSubmit:this.submit,payButton:this.payButton,contextualText:this.props.i18n.get("issuerList.selectField.contextualText"),onSubmitAnalytics:this.submitAnalytics})):this.props.showPayButton&&s(n,{name:this.props.name,...this.props,onSubmit:this.submit,payButton:this.payButton,ref:s=>{this.componentRef=s}}))}}export{a as default};
2
2
  //# sourceMappingURL=IssuerListContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IssuerListContainer.js","sources":["../../../../../src/components/helpers/IssuerListContainer/IssuerListContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport IssuerList from '../../internal/IssuerList';\nimport getIssuerImageUrl from '../../../utils/get-issuer-image';\nimport { FALLBACK_CONTEXT } from '../../../core/config';\nimport CoreProvider from '../../../core/Context/CoreProvider';\nimport RedirectButton from '../../internal/RedirectButton';\nimport SRPanelProvider from '../../../core/Errors/SRPanelProvider';\nimport { IssuerListConfiguration, IssuerListData } from './types';\nimport type { ICore } from '../../../core/types';\n\nclass IssuerListContainer extends UIElement<IssuerListConfiguration> {\n protected static defaultProps = {\n showImage: true,\n onValid: () => {},\n issuers: [],\n highlightedIssuers: [],\n loadingContext: FALLBACK_CONTEXT,\n showPaymentMethodItemImages: false\n };\n\n constructor(checkout: ICore, props?: IssuerListConfiguration) {\n super(checkout, props);\n\n const getImage = props => this.resources.getImage(props);\n\n if (this.props.showImage) {\n const getIssuerIcon = getIssuerImageUrl({ loadingContext: this.props.loadingContext }, this.constructor['type'], getImage);\n\n this.props.issuers = this.props.issuers.map(item => ({\n ...item,\n icon: getIssuerIcon(item.id)\n }));\n }\n }\n\n formatProps(props) {\n const issuers = (props.details && props.details.length && (props.details.find(d => d.key === 'issuer') || {}).items) || props.issuers || [];\n return { ...props, issuers };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): IssuerListData {\n return {\n paymentMethod: {\n type: this.type,\n issuer: this.state?.data?.issuer\n }\n };\n }\n\n /**\n * Returns whether the component state is valid or not\n */\n get isValid() {\n if (this.props.issuers.length === 0) {\n return true;\n }\n return !!this.state?.isValid;\n }\n\n /**\n * Returns brands array (similar to card) depending on showPaymentMethodItemImages\n * This is used to show the brands in the PaymentMethodItem\n * Requires brands icons to be loaded in the payment method\n */\n get brands(): { icon: any; name: string }[] {\n if (this.props.showPaymentMethodItemImages) {\n return this.props.issuers.map(brand => {\n const brandIcon = brand.icon;\n return { icon: brandIcon, name: brand.id };\n });\n }\n\n return [];\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.issuers.length > 0 ? (\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <IssuerList\n ref={ref => {\n this.componentRef = ref;\n }}\n items={this.props.issuers}\n highlightedIds={this.props.highlightedIssuers}\n {...this.props}\n {...this.state}\n showImage={this.props.showImage}\n type={this.constructor['type']}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n contextualText={this.props.i18n.get('issuerList.selectField.contextualText')}\n onSubmitAnalytics={this.submitAnalytics}\n />\n </SRPanelProvider>\n ) : (\n this.props.showPayButton && (\n <RedirectButton\n name={this.props.name}\n {...this.props}\n onSubmit={this.submit}\n payButton={this.payButton}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n )\n )}\n </CoreProvider>\n );\n }\n}\n\nexport default IssuerListContainer;\n"],"names":["IssuerListContainer","UIElement","static","showImage","onValid","issuers","highlightedIssuers","loadingContext","FALLBACK_CONTEXT","showPaymentMethodItemImages","constructor","checkout","props","super","getImage","this","resources","getIssuerIcon","getIssuerImageUrl","map","item","icon","id","formatProps","details","length","find","d","key","items","formatData","paymentMethod","type","issuer","state","data","isValid","brands","brand","name","render","h","CoreProvider","i18n","SRPanelProvider","srPanel","modules","IssuerList","ref","componentRef","highlightedIds","onChange","setState","onSubmit","submit","payButton","contextualText","get","onSubmitAnalytics","submitAnalytics","showPayButton","RedirectButton"],"mappings":"ydAWA,MAAMA,UAA4BC,EAC9BC,oBAAgC,CAC5BC,WAAW,EACXC,QAAS,OACTC,QAAS,GACTC,mBAAoB,GACpBC,eAAgBC,EAChBC,6BAA6B,GAGjCC,WAAAA,CAAYC,EAAiBC,GACzBC,MAAMF,EAAUC,GAEhB,MAAME,EAAWF,GAASG,KAAKC,UAAUF,SAASF,GAElD,GAAIG,KAAKH,MAAMT,UAAW,CACtB,MAAMc,EAAgBC,EAAkB,CAAEX,eAAgBQ,KAAKH,MAAML,gBAAkBQ,KAAKL,iBAAqBI,GAEjHC,KAAKH,MAAMP,QAAUU,KAAKH,MAAMP,QAAQc,KAAIC,IAAS,IAC9CA,EACHC,KAAMJ,EAAcG,EAAKE,OAEjC,CACJ,CAEAC,WAAAA,CAAYX,GACR,MAAMP,EAAWO,EAAMY,SAAWZ,EAAMY,QAAQC,SAAWb,EAAMY,QAAQE,MAAKC,GAAe,WAAVA,EAAEC,OAAqB,CAAC,GAAGC,OAAUjB,EAAMP,SAAW,GACzI,MAAO,IAAKO,EAAOP,UACvB,CAKAyB,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMjB,KAAKiB,KACXC,OAAQlB,KAAKmB,OAAOC,MAAMF,QAGtC,CAKA,WAAIG,GACA,OAAkC,IAA9BrB,KAAKH,MAAMP,QAAQoB,UAGdV,KAAKmB,OAAOE,OACzB,CAOA,UAAIC,GACA,OAAItB,KAAKH,MAAMH,4BACJM,KAAKH,MAAMP,QAAQc,KAAImB,IAEnB,CAAEjB,KADSiB,EAAMjB,KACEkB,KAAMD,EAAMhB,OAIvC,EACX,CAEAkB,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaC,KAAM5B,KAAKH,MAAM+B,KAAMpC,eAAgBQ,KAAKH,MAAML,eAAgBS,UAAWD,KAAKC,WAC3FD,KAAKH,MAAMP,QAAQoB,OAAS,EACzBgB,EAACG,EAAAA,CAAgBC,QAAS9B,KAAKH,MAAMkC,QAAQD,SACzCJ,EAACM,EAAAA,CACGC,IAAKA,IACDjC,KAAKkC,aAAeD,CAAAA,EAExBnB,MAAOd,KAAKH,MAAMP,QAClB6C,eAAgBnC,KAAKH,MAAMN,sBACvBS,KAAKH,SACLG,KAAKmB,MACT/B,UAAWY,KAAKH,MAAMT,UACtB6B,KAAMjB,KAAKL,YAAmB,KAC9ByC,SAAUpC,KAAKqC,SACfC,SAAUtC,KAAKuC,OACfC,UAAWxC,KAAKwC,UAChBC,eAAgBzC,KAAKH,MAAM+B,KAAKc,IAAI,yCACpCC,kBAAmB3C,KAAK4C,mBAIhC5C,KAAKH,MAAMgD,eACPnB,EAACoB,EAAAA,CACGtB,KAAMxB,KAAKH,MAAM2B,QACbxB,KAAKH,MACTyC,SAAUtC,KAAKuC,OACfC,UAAWxC,KAAKwC,UAChBP,IAAKA,IACDjC,KAAKkC,aAAeD,CAAAA,IAOhD"}
1
+ {"version":3,"file":"IssuerListContainer.js","sources":["../../../../../src/components/helpers/IssuerListContainer/IssuerListContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport IssuerList from '../../internal/IssuerList';\nimport getIssuerImageUrl from '../../../utils/get-issuer-image';\nimport { FALLBACK_CONTEXT } from '../../../core/config';\nimport CoreProvider from '../../../core/Context/CoreProvider';\nimport RedirectButton from '../../internal/RedirectButton';\nimport SRPanelProvider from '../../../core/Errors/SRPanelProvider';\nimport { IssuerListConfiguration, IssuerListData } from './types';\nimport type { ICore } from '../../../core/types';\n\nclass IssuerListContainer extends UIElement<IssuerListConfiguration> {\n protected static defaultProps = {\n showImage: true,\n issuers: [],\n highlightedIssuers: [],\n loadingContext: FALLBACK_CONTEXT,\n showPaymentMethodItemImages: false\n };\n\n constructor(checkout: ICore, props?: IssuerListConfiguration) {\n super(checkout, props);\n\n const getImage = props => this.resources.getImage(props);\n\n if (this.props.showImage) {\n const getIssuerIcon = getIssuerImageUrl({ loadingContext: this.props.loadingContext }, this.constructor['type'], getImage);\n\n this.props.issuers = this.props.issuers.map(item => ({\n ...item,\n icon: getIssuerIcon(item.id)\n }));\n }\n }\n\n formatProps(props) {\n const issuers = (props.details && props.details.length && (props.details.find(d => d.key === 'issuer') || {}).items) || props.issuers || [];\n return { ...props, issuers };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): IssuerListData {\n return {\n paymentMethod: {\n type: this.type,\n issuer: this.state?.data?.issuer\n }\n };\n }\n\n /**\n * Returns whether the component state is valid or not\n */\n get isValid() {\n if (this.props.issuers.length === 0) {\n return true;\n }\n return !!this.state?.isValid;\n }\n\n /**\n * Returns brands array (similar to card) depending on showPaymentMethodItemImages\n * This is used to show the brands in the PaymentMethodItem\n * Requires brands icons to be loaded in the payment method\n */\n get brands(): { icon: any; name: string }[] {\n if (this.props.showPaymentMethodItemImages) {\n return this.props.issuers.map(brand => {\n const brandIcon = brand.icon;\n return { icon: brandIcon, name: brand.id };\n });\n }\n\n return [];\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.issuers.length > 0 ? (\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <IssuerList\n ref={ref => {\n this.componentRef = ref;\n }}\n items={this.props.issuers}\n highlightedIds={this.props.highlightedIssuers}\n {...this.props}\n {...this.state}\n showImage={this.props.showImage}\n type={this.constructor['type']}\n onChange={this.setState}\n onSubmit={this.submit}\n payButton={this.payButton}\n contextualText={this.props.i18n.get('issuerList.selectField.contextualText')}\n onSubmitAnalytics={this.submitAnalytics}\n />\n </SRPanelProvider>\n ) : (\n this.props.showPayButton && (\n <RedirectButton\n name={this.props.name}\n {...this.props}\n onSubmit={this.submit}\n payButton={this.payButton}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n )\n )}\n </CoreProvider>\n );\n }\n}\n\nexport default IssuerListContainer;\n"],"names":["IssuerListContainer","UIElement","static","showImage","issuers","highlightedIssuers","loadingContext","FALLBACK_CONTEXT","showPaymentMethodItemImages","constructor","checkout","props","super","getImage","this","resources","getIssuerIcon","getIssuerImageUrl","map","item","icon","id","formatProps","details","length","find","d","key","items","formatData","paymentMethod","type","issuer","state","data","isValid","brands","brand","name","render","h","CoreProvider","i18n","SRPanelProvider","srPanel","modules","IssuerList","ref","componentRef","highlightedIds","onChange","setState","onSubmit","submit","payButton","contextualText","get","onSubmitAnalytics","submitAnalytics","showPayButton","RedirectButton"],"mappings":"ydAWA,MAAMA,UAA4BC,EAC9BC,oBAAgC,CAC5BC,WAAW,EACXC,QAAS,GACTC,mBAAoB,GACpBC,eAAgBC,EAChBC,6BAA6B,GAGjCC,WAAAA,CAAYC,EAAiBC,GACzBC,MAAMF,EAAUC,GAEhB,MAAME,EAAWF,GAASG,KAAKC,UAAUF,SAASF,GAElD,GAAIG,KAAKH,MAAMR,UAAW,CACtB,MAAMa,EAAgBC,EAAkB,CAAEX,eAAgBQ,KAAKH,MAAML,gBAAkBQ,KAAKL,iBAAqBI,GAEjHC,KAAKH,MAAMP,QAAUU,KAAKH,MAAMP,QAAQc,KAAIC,IAAS,IAC9CA,EACHC,KAAMJ,EAAcG,EAAKE,OAEjC,CACJ,CAEAC,WAAAA,CAAYX,GACR,MAAMP,EAAWO,EAAMY,SAAWZ,EAAMY,QAAQC,SAAWb,EAAMY,QAAQE,MAAKC,GAAe,WAAVA,EAAEC,OAAqB,CAAC,GAAGC,OAAUjB,EAAMP,SAAW,GACzI,MAAO,IAAKO,EAAOP,UACvB,CAKAyB,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMjB,KAAKiB,KACXC,OAAQlB,KAAKmB,OAAOC,MAAMF,QAGtC,CAKA,WAAIG,GACA,OAAkC,IAA9BrB,KAAKH,MAAMP,QAAQoB,UAGdV,KAAKmB,OAAOE,OACzB,CAOA,UAAIC,GACA,OAAItB,KAAKH,MAAMH,4BACJM,KAAKH,MAAMP,QAAQc,KAAImB,IAEnB,CAAEjB,KADSiB,EAAMjB,KACEkB,KAAMD,EAAMhB,OAIvC,EACX,CAEAkB,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaC,KAAM5B,KAAKH,MAAM+B,KAAMpC,eAAgBQ,KAAKH,MAAML,eAAgBS,UAAWD,KAAKC,WAC3FD,KAAKH,MAAMP,QAAQoB,OAAS,EACzBgB,EAACG,EAAAA,CAAgBC,QAAS9B,KAAKH,MAAMkC,QAAQD,SACzCJ,EAACM,EAAAA,CACGC,IAAKA,IACDjC,KAAKkC,aAAeD,CAAAA,EAExBnB,MAAOd,KAAKH,MAAMP,QAClB6C,eAAgBnC,KAAKH,MAAMN,sBACvBS,KAAKH,SACLG,KAAKmB,MACT9B,UAAWW,KAAKH,MAAMR,UACtB4B,KAAMjB,KAAKL,YAAmB,KAC9ByC,SAAUpC,KAAKqC,SACfC,SAAUtC,KAAKuC,OACfC,UAAWxC,KAAKwC,UAChBC,eAAgBzC,KAAKH,MAAM+B,KAAKc,IAAI,yCACpCC,kBAAmB3C,KAAK4C,mBAIhC5C,KAAKH,MAAMgD,eACPnB,EAACoB,EAAAA,CACGtB,KAAMxB,KAAKH,MAAM2B,QACbxB,KAAKH,MACTyC,SAAUtC,KAAKuC,OACfC,UAAWxC,KAAKwC,UAChBP,IAAKA,IACDjC,KAAKkC,aAAeD,CAAAA,IAOhD"}
@@ -1,2 +1,2 @@
1
- import{render as t}from"../../../external/preact/dist/preact.js";import o from"../../../utils/getProp.js";import e from"../../../utils/uuid.js";import r from"../../../core/Errors/AdyenCheckoutError.js";import{ANALYTICS_RENDERED_STR as s}from"../../../core/Analytics/constants.js";class n{_id=`${this.constructor.type}-${e()}`;props;state={};_component;_node=null;core;static defaultProps={};constructor(t,o){const e=function(t){return!!t&&("function"==typeof t.initialize&&"function"==typeof t.createFromAction)}(t);if(!e)throw new r("IMPLEMENTATION_ERROR",`Trying to initialise the component '${this.constructor.type}' without a reference to an instance of AdyenCheckout`);this.core=t,this.buildElementProps(o)}buildElementProps(t){this.props=this.formatProps({...this.constructor.defaultProps,...t})}formatProps(t){return t}formatData(){return{}}setUpAnalytics(t){return null}submitAnalytics(t){return null}setState(t){this.state={...this.state,...t}}get data(){const t=o(this.props,"modules.risk.data"),e=!!o(this.props,"modules.analytics.getEnabled")?.()?o(this.props,"modules.analytics.getCheckoutAttemptId")?.():"do-not-track",r=this.state.order||this.props.order,s=this.formatData();return s.paymentMethod&&e&&(s.paymentMethod.checkoutAttemptId=e),{...t&&{riskData:{clientData:t}},...r&&{order:{orderData:r.orderData,pspReference:r.pspReference}},...s,clientStateDataIndicator:!0}}render(){throw new Error("Payment method cannot be rendered.")}mount(o){const e="string"==typeof o?document.querySelector(o):o;if(!e)throw new Error("Component could not mount. Root node was not found.");const r=!this._node;return this._node&&this.unmount(),this._node=e,this._component=this.render(),t(this._component,e),r&&this.props.modules&&this.props.modules.analytics&&this.setUpAnalytics({containerWidth:e&&e.offsetWidth,component:this.props.isDropin?"dropin":this.constructor.analyticsType??this.constructor.type,flavor:this.props.isDropin?"dropin":"components"}).then((()=>{this.props.isDropin||this.submitAnalytics({type:s})})),this}update(t){return this.props=this.formatProps({...this.props,...t}),this.state={},this.unmount().mount(this._node)}remount(o){if(!this._node)throw new Error("Component is not mounted.");const e=o||this.render();return t(e,this._node,null),this}unmount(){return this._node&&t(null,this._node),this}remove(){this.unmount(),this.core&&this.core.remove(this)}}export{n as default};
1
+ import{render as t}from"../../../external/preact/dist/preact.js";import o from"../../../utils/getProp.js";import e from"../../../utils/uuid.js";import r from"../../../core/Errors/AdyenCheckoutError.js";import{ANALYTICS_RENDERED_STR as s}from"../../../core/Analytics/constants.js";class n{_id=`${this.constructor.type}-${e()}`;props;state={};_component;_node=null;core;static defaultProps={};constructor(t,o){const e=function(t){return!!t&&("function"==typeof t.initialize&&"function"==typeof t.createFromAction)}(t);if(!e)throw new r("IMPLEMENTATION_ERROR",`Trying to initialise the component '${this.constructor.type}' without a reference to an instance of AdyenCheckout`);this.core=t,this.buildElementProps(o)}buildElementProps(t){this.props=this.formatProps({...this.constructor.defaultProps,...t})}formatProps(t){return t}formatData(){return{}}setUpAnalytics(t){return null}submitAnalytics(t){return null}setState(t){this.state={...this.state,...t}}get data(){const t=o(this.props,"modules.risk.data"),e=!!o(this.props,"modules.analytics.getEnabled")?.()?o(this.props,"modules.analytics.getCheckoutAttemptId")?.():"do-not-track",r=this.state.order||this.props.order,s=this.formatData();return s.paymentMethod&&e&&(s.paymentMethod.checkoutAttemptId=e),{...t&&{riskData:{clientData:t}},...r&&{order:{orderData:r.orderData,pspReference:r.pspReference}},...s,clientStateDataIndicator:!0}}render(){throw new Error("Payment method cannot be rendered.")}mount(o){const e="string"==typeof o?document.querySelector(o):o;if(!e)throw new Error("Component could not mount. Root node was not found.");const r=!this._node;return this._node&&this.unmount(),this._node=e,this._component=this.render(),t(this._component,e),r&&this.props.modules&&this.props.modules.analytics&&this.setUpAnalytics({containerWidth:e&&e.offsetWidth,component:this.props.isDropin?"dropin":this.constructor.analyticsType??this.constructor.type,flavor:this.props.isDropin?"dropin":"components"}).then((()=>{this.props.isDropin||this.submitAnalytics({type:s})})),this}update(t){return this.props=this.formatProps({...this.props,...t}),this.state={},this.unmount().mount(this._node)}unmount(){return this._node&&t(null,this._node),this}remove(){this.unmount(),this.core&&this.core.remove(this)}}export{n as default};
2
2
  //# sourceMappingURL=BaseElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseElement.js","sources":["../../../../../src/components/internal/BaseElement/BaseElement.ts"],"sourcesContent":["import { ComponentChild, render } from 'preact';\nimport getProp from '../../../utils/getProp';\nimport uuid from '../../../utils/uuid';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\n\nimport type { ICore } from '../../../core/types';\nimport type { BaseElementProps, IBaseElement } from './types';\nimport type { PaymentData } from '../../../types/global-types';\nimport { AnalyticsInitialEvent, SendAnalyticsObject } from '../../../core/Analytics/types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\n\n/**\n * Verify if the first parameter is instance of Core.\n * We do not use 'instanceof' to avoid importing the Core class directly into this class.\n * @param checkout\n */\nfunction assertIsCoreInstance(checkout: ICore): checkout is ICore {\n if (!checkout) return false;\n const isCoreObject = typeof checkout.initialize === 'function' && typeof checkout.createFromAction === 'function';\n return isCoreObject;\n}\n\nclass BaseElement<P extends BaseElementProps> implements IBaseElement {\n public readonly _id = `${this.constructor['type']}-${uuid()}`;\n\n public props: P;\n public state: any = {};\n public _component;\n\n protected _node: HTMLElement = null;\n protected readonly core: ICore;\n\n protected static defaultProps = {};\n\n constructor(checkout: ICore, props?: P) {\n const isCoreInstance = assertIsCoreInstance(checkout);\n\n if (!isCoreInstance) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `Trying to initialise the component '${this.constructor['type']}' without a reference to an instance of AdyenCheckout`\n );\n }\n\n this.core = checkout;\n this.buildElementProps(props);\n }\n\n protected buildElementProps(componentProps?: P) {\n this.props = this.formatProps({ ...this.constructor['defaultProps'], ...componentProps });\n }\n\n /**\n * Executed during creation of any payment element.\n * Gives a chance to any paymentMethod to format the props we're receiving.\n */\n protected formatProps(props: P) {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for the /payments request\n *\n * TODO: Replace 'any' by type PaymentMethodData<T> - this change requires updating all payment methods,\n * properly adding the type of the formatData function\n */\n protected formatData(): any {\n return {};\n }\n\n /* eslint-disable-next-line */\n protected setUpAnalytics(setUpAnalyticsObj: AnalyticsInitialEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj?: SendAnalyticsObject) {\n return null;\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component payment data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n public get data(): PaymentData {\n const clientData = getProp(this.props, 'modules.risk.data');\n const useAnalytics = !!getProp(this.props, 'modules.analytics.getEnabled')?.();\n const checkoutAttemptId = useAnalytics ? getProp(this.props, 'modules.analytics.getCheckoutAttemptId')?.() : 'do-not-track';\n const order = this.state.order || this.props.order;\n\n const componentData = this.formatData();\n if (componentData.paymentMethod && checkoutAttemptId) {\n componentData.paymentMethod.checkoutAttemptId = checkoutAttemptId;\n }\n\n return {\n ...(clientData && { riskData: { clientData } }),\n ...(order && { order: { orderData: order.orderData, pspReference: order.pspReference } }),\n ...componentData,\n clientStateDataIndicator: true\n };\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Payment method cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the payment element\n * @returns this - the payment element instance we mounted\n */\n public mount(domNode: HTMLElement | string): this {\n const node = typeof domNode === 'string' ? document.querySelector<HTMLElement>(domNode) : domNode;\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n const setupAnalytics = !this._node;\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n }\n\n this._node = node;\n\n this._component = this.render();\n\n render(this._component, node);\n\n // Set up analytics (once, since this._node is currently undefined) now that we have mounted and rendered\n if (setupAnalytics) {\n if (this.props.modules && this.props.modules.analytics) {\n this.setUpAnalytics({\n containerWidth: node && (node as HTMLElement).offsetWidth,\n component: !this.props.isDropin ? this.constructor['analyticsType'] ?? this.constructor['type'] : 'dropin',\n flavor: !this.props.isDropin ? 'components' : 'dropin'\n }).then(() => {\n // Once the initial analytics set up call has been made...\n // ...create an analytics event declaring that the component has been rendered\n // (The dropin will do this itself from DropinComponent once the PM list has rendered)\n if (!this.props.isDropin) {\n this.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n });\n }\n }\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: Partial<P>): this {\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n }\n\n /**\n * Unmounts an element and mounts it again on the same node i.e. allows mount w/o having to pass a node.\n * Should be \"private\" & undocumented (although being a public function is useful for testing).\n * Left in for legacy reasons\n */\n public remount(component?): this {\n if (!this._node) {\n throw new Error('Component is not mounted.');\n }\n\n const newComponent = component || this.render();\n\n render(newComponent, this._node, null);\n\n return this;\n }\n\n /**\n * Unmounts a payment element from the DOM\n */\n public unmount(): this {\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this.core) {\n this.core.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n"],"names":["BaseElement","_id","this","constructor","uuid","props","state","_component","_node","core","static","checkout","isCoreInstance","initialize","createFromAction","assertIsCoreInstance","AdyenCheckoutError","buildElementProps","componentProps","formatProps","formatData","setUpAnalytics","setUpAnalyticsObj","submitAnalytics","analyticsObj","setState","newState","data","clientData","getProp","checkoutAttemptId","order","componentData","paymentMethod","riskData","orderData","pspReference","clientStateDataIndicator","render","Error","mount","domNode","node","document","querySelector","setupAnalytics","unmount","modules","analytics","containerWidth","offsetWidth","component","isDropin","flavor","then","type","ANALYTICS_RENDERED_STR","update","remount","newComponent","remove"],"mappings":"wRAsBA,MAAMA,EACcC,IAAM,GAAGC,KAAKC,YAAmB,QAAIC,MAE9CC,MACAC,MAAa,CAAA,EACbC,WAEGC,MAAqB,KACZC,KAEnBC,oBAAgC,CAAA,EAEhCP,WAAAA,CAAYQ,EAAiBN,GACzB,MAAMO,EAnBd,SAA8BD,GAC1B,QAAKA,IAC+C,mBAAxBA,EAASE,YAAkE,mBAA9BF,EAASG,iBAEtF,CAe+BC,CAAqBJ,GAE5C,IAAKC,EACD,MAAM,IAAII,EACN,uBACA,uCAAuCd,KAAKC,YAAmB,6DAIvED,KAAKO,KAAOE,EACZT,KAAKe,kBAAkBZ,EAC3B,CAEUY,iBAAAA,CAAkBC,GACxBhB,KAAKG,MAAQH,KAAKiB,YAAY,IAAKjB,KAAKC,YAA2B,gBAAKe,GAC5E,CAMUC,WAAAA,CAAYd,GAClB,OAAOA,CACX,CASA,UAAAe,GACI,MAAO,EACX,CAGUC,cAAAA,CAAeC,GACrB,OAAO,IACX,CAGUC,eAAAA,CAAgBC,GACtB,OAAO,IACX,CAEUC,QAAAA,CAASC,GACfxB,KAAKI,MAAQ,IAAKJ,KAAKI,SAAUoB,EACrC,CAMA,QAAWC,GACP,MAAMC,EAAaC,EAAQ3B,KAAKG,MAAO,qBAEjCyB,IADiBD,EAAQ3B,KAAKG,MAAO,+BAApBwB,KACkBA,EAAQ3B,KAAKG,MAAO,yCAApBwB,KAAoE,eACvGE,EAAQ7B,KAAKI,MAAMyB,OAAS7B,KAAKG,MAAM0B,MAEvCC,EAAgB9B,KAAKkB,aAK3B,OAJIY,EAAcC,eAAiBH,IAC/BE,EAAcC,cAAcH,kBAAoBA,GAG7C,IACCF,GAAc,CAAEM,SAAU,CAAEN,kBAC5BG,GAAS,CAAEA,MAAO,CAAEI,UAAWJ,EAAMI,UAAWC,aAAcL,EAAMK,kBACrEJ,EACHK,0BAA0B,EAElC,CAEOC,MAAAA,GAEH,MAAM,IAAIC,MAAM,qCACpB,CAOOC,KAAAA,CAAMC,GACT,MAAMC,EAA0B,iBAAZD,EAAuBE,SAASC,cAA2BH,GAAWA,EAE1F,IAAKC,EACD,MAAM,IAAIH,MAAM,uDAGpB,MAAMM,GAAkB3C,KAAKM,MA8B7B,OA5BIN,KAAKM,OACLN,KAAK4C,UAGT5C,KAAKM,MAAQkC,EAEbxC,KAAKK,WAAaL,KAAKoC,SAEvBA,EAAOpC,KAAKK,WAAYmC,GAGpBG,GACI3C,KAAKG,MAAM0C,SAAW7C,KAAKG,MAAM0C,QAAQC,WACzC9C,KAAKmB,eAAe,CAChB4B,eAAgBP,GAAQA,EAAsBQ,YAC9CC,UAAYjD,KAAKG,MAAM+C,SAA2E,SAAhElD,KAAKC,2BAAgCD,KAAKC,iBAC5EkD,OAASnD,KAAKG,MAAM+C,SAA0B,SAAf,eAChCE,MAAK,KAICpD,KAAKG,MAAM+C,UACZlD,KAAKqB,gBAAgB,CAAEgC,KAAMC,GACjC,IAKLtD,IACX,CAQOuD,MAAAA,CAAOpD,GAIV,OAHAH,KAAKG,MAAQH,KAAKiB,YAAY,IAAKjB,KAAKG,SAAUA,IAClDH,KAAKI,MAAQ,GAENJ,KAAK4C,UAAUN,MAAMtC,KAAKM,MACrC,CAOOkD,OAAAA,CAAQP,GACX,IAAKjD,KAAKM,MACN,MAAM,IAAI+B,MAAM,6BAGpB,MAAMoB,EAAeR,GAAajD,KAAKoC,SAIvC,OAFAA,EAAOqB,EAAczD,KAAKM,MAAO,MAE1BN,IACX,CAKA,OAAA4C,GAKI,OAJI5C,KAAKM,OACL8B,EAAO,KAAMpC,KAAKM,OAGfN,IACX,CAMA,MAAA0D,GACI1D,KAAK4C,UAED5C,KAAKO,MACLP,KAAKO,KAAKmD,OAAO1D,KAEzB"}
1
+ {"version":3,"file":"BaseElement.js","sources":["../../../../../src/components/internal/BaseElement/BaseElement.ts"],"sourcesContent":["import { ComponentChild, render } from 'preact';\nimport getProp from '../../../utils/getProp';\nimport uuid from '../../../utils/uuid';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\n\nimport type { ICore } from '../../../core/types';\nimport type { BaseElementProps, IBaseElement } from './types';\nimport type { PaymentData } from '../../../types/global-types';\nimport { AnalyticsInitialEvent, SendAnalyticsObject } from '../../../core/Analytics/types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\n\n/**\n * Verify if the first parameter is instance of Core.\n * We do not use 'instanceof' to avoid importing the Core class directly into this class.\n * @param checkout\n */\nfunction assertIsCoreInstance(checkout: ICore): checkout is ICore {\n if (!checkout) return false;\n const isCoreObject = typeof checkout.initialize === 'function' && typeof checkout.createFromAction === 'function';\n return isCoreObject;\n}\n\nclass BaseElement<P extends BaseElementProps> implements IBaseElement {\n public readonly _id = `${this.constructor['type']}-${uuid()}`;\n\n public props: P;\n public state: any = {};\n public _component;\n\n protected _node: HTMLElement = null;\n protected readonly core: ICore;\n\n protected static defaultProps = {};\n\n constructor(checkout: ICore, props?: P) {\n const isCoreInstance = assertIsCoreInstance(checkout);\n\n if (!isCoreInstance) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `Trying to initialise the component '${this.constructor['type']}' without a reference to an instance of AdyenCheckout`\n );\n }\n\n this.core = checkout;\n this.buildElementProps(props);\n }\n\n protected buildElementProps(componentProps?: P) {\n this.props = this.formatProps({ ...this.constructor['defaultProps'], ...componentProps });\n }\n\n /**\n * Executed during creation of any payment element.\n * Gives a chance to any paymentMethod to format the props we're receiving.\n */\n protected formatProps(props: P) {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for the /payments request\n *\n * TODO: Replace 'any' by type PaymentMethodData<T> - this change requires updating all payment methods,\n * properly adding the type of the formatData function\n */\n protected formatData(): any {\n return {};\n }\n\n /* eslint-disable-next-line */\n protected setUpAnalytics(setUpAnalyticsObj: AnalyticsInitialEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj?: SendAnalyticsObject) {\n return null;\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component payment data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n public get data(): PaymentData {\n const clientData = getProp(this.props, 'modules.risk.data');\n const useAnalytics = !!getProp(this.props, 'modules.analytics.getEnabled')?.();\n const checkoutAttemptId = useAnalytics ? getProp(this.props, 'modules.analytics.getCheckoutAttemptId')?.() : 'do-not-track';\n const order = this.state.order || this.props.order;\n\n const componentData = this.formatData();\n if (componentData.paymentMethod && checkoutAttemptId) {\n componentData.paymentMethod.checkoutAttemptId = checkoutAttemptId;\n }\n\n return {\n ...(clientData && { riskData: { clientData } }),\n ...(order && { order: { orderData: order.orderData, pspReference: order.pspReference } }),\n ...componentData,\n clientStateDataIndicator: true\n };\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Payment method cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the payment element\n * @returns this - the payment element instance we mounted\n */\n public mount(domNode: HTMLElement | string): this {\n const node = typeof domNode === 'string' ? document.querySelector<HTMLElement>(domNode) : domNode;\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n const setupAnalytics = !this._node;\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n }\n\n this._node = node;\n\n this._component = this.render();\n\n render(this._component, node);\n\n // Set up analytics (once, since this._node is currently undefined) now that we have mounted and rendered\n if (setupAnalytics) {\n if (this.props.modules && this.props.modules.analytics) {\n this.setUpAnalytics({\n containerWidth: node && (node as HTMLElement).offsetWidth,\n component: !this.props.isDropin ? this.constructor['analyticsType'] ?? this.constructor['type'] : 'dropin',\n flavor: !this.props.isDropin ? 'components' : 'dropin'\n }).then(() => {\n // Once the initial analytics set up call has been made...\n // ...create an analytics event declaring that the component has been rendered\n // (The dropin will do this itself from DropinComponent once the PM list has rendered)\n if (!this.props.isDropin) {\n this.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n });\n }\n }\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: Partial<P>): this {\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n }\n\n /**\n * Unmounts a payment element from the DOM\n */\n public unmount(): this {\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this.core) {\n this.core.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n"],"names":["BaseElement","_id","this","constructor","uuid","props","state","_component","_node","core","static","checkout","isCoreInstance","initialize","createFromAction","assertIsCoreInstance","AdyenCheckoutError","buildElementProps","componentProps","formatProps","formatData","setUpAnalytics","setUpAnalyticsObj","submitAnalytics","analyticsObj","setState","newState","data","clientData","getProp","checkoutAttemptId","order","componentData","paymentMethod","riskData","orderData","pspReference","clientStateDataIndicator","render","Error","mount","domNode","node","document","querySelector","setupAnalytics","unmount","modules","analytics","containerWidth","offsetWidth","component","isDropin","flavor","then","type","ANALYTICS_RENDERED_STR","update","remove"],"mappings":"wRAsBA,MAAMA,EACcC,IAAM,GAAGC,KAAKC,YAAmB,QAAIC,MAE9CC,MACAC,MAAa,CAAA,EACbC,WAEGC,MAAqB,KACZC,KAEnBC,oBAAgC,CAAA,EAEhCP,WAAAA,CAAYQ,EAAiBN,GACzB,MAAMO,EAnBd,SAA8BD,GAC1B,QAAKA,IAC+C,mBAAxBA,EAASE,YAAkE,mBAA9BF,EAASG,iBAEtF,CAe+BC,CAAqBJ,GAE5C,IAAKC,EACD,MAAM,IAAII,EACN,uBACA,uCAAuCd,KAAKC,YAAmB,6DAIvED,KAAKO,KAAOE,EACZT,KAAKe,kBAAkBZ,EAC3B,CAEUY,iBAAAA,CAAkBC,GACxBhB,KAAKG,MAAQH,KAAKiB,YAAY,IAAKjB,KAAKC,YAA2B,gBAAKe,GAC5E,CAMUC,WAAAA,CAAYd,GAClB,OAAOA,CACX,CASA,UAAAe,GACI,MAAO,EACX,CAGUC,cAAAA,CAAeC,GACrB,OAAO,IACX,CAGUC,eAAAA,CAAgBC,GACtB,OAAO,IACX,CAEUC,QAAAA,CAASC,GACfxB,KAAKI,MAAQ,IAAKJ,KAAKI,SAAUoB,EACrC,CAMA,QAAWC,GACP,MAAMC,EAAaC,EAAQ3B,KAAKG,MAAO,qBAEjCyB,IADiBD,EAAQ3B,KAAKG,MAAO,+BAApBwB,KACkBA,EAAQ3B,KAAKG,MAAO,yCAApBwB,KAAoE,eACvGE,EAAQ7B,KAAKI,MAAMyB,OAAS7B,KAAKG,MAAM0B,MAEvCC,EAAgB9B,KAAKkB,aAK3B,OAJIY,EAAcC,eAAiBH,IAC/BE,EAAcC,cAAcH,kBAAoBA,GAG7C,IACCF,GAAc,CAAEM,SAAU,CAAEN,kBAC5BG,GAAS,CAAEA,MAAO,CAAEI,UAAWJ,EAAMI,UAAWC,aAAcL,EAAMK,kBACrEJ,EACHK,0BAA0B,EAElC,CAEOC,MAAAA,GAEH,MAAM,IAAIC,MAAM,qCACpB,CAOOC,KAAAA,CAAMC,GACT,MAAMC,EAA0B,iBAAZD,EAAuBE,SAASC,cAA2BH,GAAWA,EAE1F,IAAKC,EACD,MAAM,IAAIH,MAAM,uDAGpB,MAAMM,GAAkB3C,KAAKM,MA8B7B,OA5BIN,KAAKM,OACLN,KAAK4C,UAGT5C,KAAKM,MAAQkC,EAEbxC,KAAKK,WAAaL,KAAKoC,SAEvBA,EAAOpC,KAAKK,WAAYmC,GAGpBG,GACI3C,KAAKG,MAAM0C,SAAW7C,KAAKG,MAAM0C,QAAQC,WACzC9C,KAAKmB,eAAe,CAChB4B,eAAgBP,GAAQA,EAAsBQ,YAC9CC,UAAYjD,KAAKG,MAAM+C,SAA2E,SAAhElD,KAAKC,2BAAgCD,KAAKC,iBAC5EkD,OAASnD,KAAKG,MAAM+C,SAA0B,SAAf,eAChCE,MAAK,KAICpD,KAAKG,MAAM+C,UACZlD,KAAKqB,gBAAgB,CAAEgC,KAAMC,GACjC,IAKLtD,IACX,CAQOuD,MAAAA,CAAOpD,GAIV,OAHAH,KAAKG,MAAQH,KAAKiB,YAAY,IAAKjB,KAAKG,SAAUA,IAClDH,KAAKI,MAAQ,GAENJ,KAAK4C,UAAUN,MAAMtC,KAAKM,MACrC,CAKA,OAAAsC,GAKI,OAJI5C,KAAKM,OACL8B,EAAO,KAAMpC,KAAKM,OAGfN,IACX,CAMA,MAAAwD,GACIxD,KAAK4C,UAED5C,KAAKO,MACLP,KAAKO,KAAKiD,OAAOxD,KAEzB"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../../external/preact/dist/preact.js";import e from"../BaseElement/BaseElement.js";import s from"../PayButton/PayButton.js";import{assertIsDropin as i,getRegulatoryDefaults as o,sanitizeResponse as n,verifyPaymentDidNotFail as a,cleanupFinalResult as r}from"./utils.js";import h from"../../../core/Errors/AdyenCheckoutError.js";import{hasOwnProperty as l}from"../../../utils/hasOwnProperty.js";import{ANALYTICS_SUBMIT_STR as d}from"../../../core/Analytics/constants.js";class p extends e{componentRef;resources;elementRef;static type=void 0;static txVariants=[];constructor(t,e){super(t,e),this.constructor.type&&this.core.register(this.constructor),this.submit=this.submit.bind(this),this.setState=this.setState.bind(this),this.onValid=this.onValid.bind(this),this.onComplete=this.onComplete.bind(this),this.handleAction=this.handleAction.bind(this),this.handleOrder=this.handleOrder.bind(this),this.handleAdditionalDetails=this.handleAdditionalDetails.bind(this),this.handleResponse=this.handleResponse.bind(this),this.setElementStatus=this.setElementStatus.bind(this),this.submitAnalytics=this.submitAnalytics.bind(this),this.makePaymentsCall=this.makePaymentsCall.bind(this),this.makeAdditionalDetailsCall=this.makeAdditionalDetailsCall.bind(this),this.submitUsingSessionsFlow=this.submitUsingSessionsFlow.bind(this),this.elementRef=e&&e.elementRef||this,this.resources=this.props.modules?this.props.modules.resources:void 0,this.storeElementRefOnCore(this.props)}buildElementProps(t){const e={showPayButton:!0,setStatusAutomatically:!0,...this.core.getCorePropsForComponent(),...!!t?.isStoredPaymentMethod?{}:this.core.paymentMethodsResponse.find(t?.type||this.constructor.type),...t},s=i(this);this.props=this.formatProps({...this.constructor.defaultProps,...o(this.core.options.countryCode,s),...e})}storeElementRefOnCore(t){t?.isDropin||this.core.storeElementReference(this)}isAvailable(){return Promise.resolve()}setState(t){this.state={...this.state,...t},this.onChange()}showValidation(){return this.componentRef&&this.componentRef.showValidation&&this.componentRef.showValidation(),this}setElementStatus(t,e){return this.elementRef?.setStatus(t,e),this}setStatus(t,e){return this.componentRef?.setStatus&&this.componentRef.setStatus(t,e),this}onChange(){const t=this.isValid,e={data:this.data,errors:this.state.errors,valid:this.state.valid,isValid:t};return this.props.onChange&&this.props.onChange(e,this.elementRef),t&&this.onValid(),e}setUpAnalytics(t){const e=this.props.session?.id;return this.props.modules.analytics.setUp({...t,...e&&{sessionId:e}})}submitAnalytics(t){try{let e=this.constructor.analyticsType;e||(e="scheme"===this.constructor.type||"bcmc"===this.constructor.type?this.constructor.type:this.props.type),this.props.modules.analytics.sendAnalytics(e,t)}catch(t){console.warn("Failed to submit the analytics event")}}submit(){this.isValid?this.makePaymentsCall().then(n).then(a).then(this.handleResponse).catch(this.handleFailedResult):this.showValidation()}makePaymentsCall(){if(this.props.setStatusAutomatically&&this.setElementStatus("loading"),this.props.onSubmit)return this.submitUsingAdvancedFlow();if(this.core.session){return(this.props.beforeSubmit?new Promise(((t,e)=>this.props.beforeSubmit(this.data,this.elementRef,{resolve:t,reject:e}))):Promise.resolve(this.data)).then(this.submitUsingSessionsFlow)}this.handleError(new h("IMPLEMENTATION_ERROR",'It can not perform /payments call. Callback "onSubmit" is missing or Checkout session is not available'))}async submitUsingAdvancedFlow(){return new Promise(((t,e)=>{this.submitAnalytics({type:d}),this.props.onSubmit({data:this.data,isValid:this.isValid},this.elementRef,{resolve:t,reject:e})}))}async submitUsingSessionsFlow(t){this.submitAnalytics({type:d});try{return await this.core.session.submitPayment(t)}catch(t){return this.handleError(t),Promise.reject(t)}}onValid(){const t={data:this.data};return this.props.onValid&&this.props.onValid(t,this.elementRef),t}onComplete(t){this.props.onComplete&&this.props.onComplete(t,this.elementRef)}handleError=t=>{this.setElementStatus("ready"),this.props.onError&&this.props.onError(t,this.elementRef)};handleAdditionalDetails(t){this.makeAdditionalDetailsCall(t).then(n).then(a).then(this.handleResponse).catch(this.handleFailedResult)}makeAdditionalDetailsCall(t){return this.props.setStatusAutomatically&&this.setElementStatus("loading"),this.props.onAdditionalDetails?new Promise(((e,s)=>{this.props.onAdditionalDetails(t,this.elementRef,{resolve:e,reject:s})})):this.core.session?this.submitAdditionalDetailsUsingSessionsFlow(t.data):void this.handleError(new h("IMPLEMENTATION_ERROR",'It can not perform /payments/details call. Callback "onAdditionalDetails" is missing or Checkout session is not available'))}async submitAdditionalDetailsUsingSessionsFlow(t){try{return await this.core.session.submitDetails(t)}catch(t){return this.handleError(t),Promise.reject(t)}}handleAction(t,e={}){if(!t||!t.type){if(l(t,"action")&&l(t,"resultCode"))throw new Error('handleAction::Invalid Action - the passed action object itself has an "action" property and a "resultCode": have you passed in the whole response object by mistake?');throw new Error('handleAction::Invalid Action - the passed action object does not have a "type" property')}const s=this.core.createFromAction(t,{...this.elementRef.props,...e,onAdditionalDetails:this.handleAdditionalDetails});return s?(this.unmount(),s.mount(this._node)):null}handleOrder=t=>{const{order:e}=t;(this.core.session?this.core.update({order:e}):this.handleAdvanceFlowPaymentMethodsUpdate(e)).then((()=>{this.props.onOrderUpdated?.({order:e})}))};handleFailedResult=t=>{this.props.setStatusAutomatically&&this.setElementStatus("error"),r(t),this.props.onPaymentFailed?.(t,this.elementRef)};handleSuccessResult=t=>{this.props.setStatusAutomatically&&this.setElementStatus("success"),r(t),this.props.onPaymentCompleted?.(t,this.elementRef)};handleResponse(t){const e=n(t);e.action?this.elementRef.handleAction(e.action):e.order?.remainingAmount?.value>0?this.handleOrder(e):this.handleSuccessResult(e)}updateParent(t={}){return this.elementRef.core.update(t)}setComponentRef=t=>{this.componentRef=t};get isValid(){return!1}get icon(){const t=this.props.paymentMethodType||this.type;return this.props.icon??this.resources.getImage()(t)}get displayName(){const t=this.core.paymentMethodsResponse?.paymentMethods?.find((t=>t.type===this.type));return this.props.name||t?.name||this.type}get accessibleName(){return this.displayName}get additionalInfo(){return null}get type(){return this.props.type||this.constructor.type}payButton=e=>t(s,{...e,amount:this.props.amount,secondaryAmount:this.props.secondaryAmount,onClick:this.submit});async handleAdvanceFlowPaymentMethodsUpdate(t){return new Promise(((e,s)=>{if(!this.props.onPaymentMethodsRequest)return s(new Error("onPaymentMethodsRequest is not implemented"));this.props.onPaymentMethodsRequest({order:{orderData:t.orderData,pspReference:t.pspReference},locale:this.core.options.locale},{resolve:e,reject:s})})).catch((t=>{this.handleError(new h("IMPLEMENTATION_ERROR","Something failed during payment methods update or onPaymentMethodsRequest was not implemented",{cause:t}))})).then((e=>this.core.update({...e&&{paymentMethodsResponse:e},order:t,amount:t.remainingAmount})))}}export{p as UIElement,p as default};
1
+ import{createElement as t}from"../../../external/preact/dist/preact.js";import e from"../BaseElement/BaseElement.js";import s from"../PayButton/PayButton.js";import{assertIsDropin as i,getRegulatoryDefaults as n,sanitizeResponse as o,verifyPaymentDidNotFail as a,cleanupFinalResult as r}from"./utils.js";import h from"../../../core/Errors/AdyenCheckoutError.js";import{hasOwnProperty as l}from"../../../utils/hasOwnProperty.js";import{ANALYTICS_SUBMIT_STR as d}from"../../../core/Analytics/constants.js";class p extends e{componentRef;resources;elementRef;static type=void 0;static txVariants=[];constructor(t,e){super(t,e),this.constructor.type&&this.core.register(this.constructor),this.submit=this.submit.bind(this),this.setState=this.setState.bind(this),this.onComplete=this.onComplete.bind(this),this.handleAction=this.handleAction.bind(this),this.handleOrder=this.handleOrder.bind(this),this.handleAdditionalDetails=this.handleAdditionalDetails.bind(this),this.handleResponse=this.handleResponse.bind(this),this.setElementStatus=this.setElementStatus.bind(this),this.submitAnalytics=this.submitAnalytics.bind(this),this.makePaymentsCall=this.makePaymentsCall.bind(this),this.makeAdditionalDetailsCall=this.makeAdditionalDetailsCall.bind(this),this.submitUsingSessionsFlow=this.submitUsingSessionsFlow.bind(this),this.elementRef=e&&e.elementRef||this,this.resources=this.props.modules?this.props.modules.resources:void 0,this.storeElementRefOnCore(this.props)}buildElementProps(t){const e={showPayButton:!0,...this.core.getCorePropsForComponent(),...!!t?.isStoredPaymentMethod?{}:this.core.paymentMethodsResponse.find(t?.type||this.constructor.type),...t},s=i(this);this.props=this.formatProps({...this.constructor.defaultProps,...n(this.core.options.countryCode,s),...e})}storeElementRefOnCore(t){t?.isDropin||this.core.storeElementReference(this)}isAvailable(){return Promise.resolve()}setState(t){this.state={...this.state,...t},this.onChange()}showValidation(){return this.componentRef&&this.componentRef.showValidation&&this.componentRef.showValidation(),this}setElementStatus(t,e){return this.elementRef?.setStatus(t,e),this}setStatus(t,e){return this.componentRef?.setStatus&&this.componentRef.setStatus(t,e),this}onChange(){const t=this.isValid,e={data:this.data,errors:this.state.errors,valid:this.state.valid,isValid:t};return this.props.onChange?.(e,this.elementRef),e}setUpAnalytics(t){const e=this.props.session?.id;return this.props.modules.analytics.setUp({...t,...e&&{sessionId:e}})}submitAnalytics(t){try{let e=this.constructor.analyticsType;e||(e="scheme"===this.constructor.type||"bcmc"===this.constructor.type?this.constructor.type:this.props.type),this.props.modules.analytics.sendAnalytics(e,t)}catch(t){console.warn("Failed to submit the analytics event")}}submit(){this.isValid?this.makePaymentsCall().then(o).then(a).then(this.handleResponse).catch(this.handleFailedResult):this.showValidation()}makePaymentsCall(){if(this.setElementStatus("loading"),this.props.onSubmit)return this.submitUsingAdvancedFlow();if(this.core.session){return(this.props.beforeSubmit?new Promise(((t,e)=>this.props.beforeSubmit(this.data,this.elementRef,{resolve:t,reject:e}))):Promise.resolve(this.data)).then(this.submitUsingSessionsFlow)}this.handleError(new h("IMPLEMENTATION_ERROR",'It can not perform /payments call. Callback "onSubmit" is missing or Checkout session is not available'))}async submitUsingAdvancedFlow(){return new Promise(((t,e)=>{this.submitAnalytics({type:d}),this.props.onSubmit({data:this.data,isValid:this.isValid},this.elementRef,{resolve:t,reject:e})}))}async submitUsingSessionsFlow(t){this.submitAnalytics({type:d});try{return await this.core.session.submitPayment(t)}catch(t){return this.handleError(t),Promise.reject(t)}}onComplete(t){this.props.onComplete&&this.props.onComplete(t,this.elementRef)}handleError=t=>{this.setElementStatus("ready"),this.props.onError&&this.props.onError(t,this.elementRef)};handleAdditionalDetails(t){this.makeAdditionalDetailsCall(t).then(o).then(a).then(this.handleResponse).catch(this.handleFailedResult)}makeAdditionalDetailsCall(t){return this.setElementStatus("loading"),this.props.onAdditionalDetails?new Promise(((e,s)=>{this.props.onAdditionalDetails(t,this.elementRef,{resolve:e,reject:s})})):this.core.session?this.submitAdditionalDetailsUsingSessionsFlow(t.data):void this.handleError(new h("IMPLEMENTATION_ERROR",'It can not perform /payments/details call. Callback "onAdditionalDetails" is missing or Checkout session is not available'))}async submitAdditionalDetailsUsingSessionsFlow(t){try{return await this.core.session.submitDetails(t)}catch(t){return this.handleError(t),Promise.reject(t)}}handleAction(t,e={}){if(!t||!t.type){if(l(t,"action")&&l(t,"resultCode"))throw new Error('handleAction::Invalid Action - the passed action object itself has an "action" property and a "resultCode": have you passed in the whole response object by mistake?');throw new Error('handleAction::Invalid Action - the passed action object does not have a "type" property')}const s=this.core.createFromAction(t,{...this.elementRef.props,...e,onAdditionalDetails:this.handleAdditionalDetails});return s?(this.unmount(),s.mount(this._node)):null}handleOrder=t=>{const{order:e}=t;(this.core.session?this.core.update({order:e}):this.handleAdvanceFlowPaymentMethodsUpdate(e)).then((()=>{this.props.onOrderUpdated?.({order:e})}))};handleFailedResult=t=>{i(this.elementRef)&&this.elementRef.displayFinalAnimation("error"),r(t),this.props.onPaymentFailed?.(t,this.elementRef)};handleSuccessResult=t=>{i(this.elementRef)&&this.elementRef.displayFinalAnimation("success"),r(t),this.props.onPaymentCompleted?.(t,this.elementRef)};handleResponse(t){const e=o(t);e.action?this.elementRef.handleAction(e.action):e.order?.remainingAmount?.value>0?this.handleOrder(e):this.handleSuccessResult(e)}updateParent(t={}){return this.elementRef.core.update(t)}setComponentRef=t=>{this.componentRef=t};get isValid(){return!1}get icon(){const t=this.props.paymentMethodType||this.type;return this.props.icon??this.resources.getImage()(t)}get displayName(){const t=this.core.paymentMethodsResponse?.paymentMethods?.find((t=>t.type===this.type));return this.props.name||t?.name||this.type}get accessibleName(){return this.displayName}get additionalInfo(){return null}get type(){return this.props.type||this.constructor.type}payButton=e=>t(s,{...e,amount:this.props.amount,secondaryAmount:this.props.secondaryAmount,onClick:this.submit});async handleAdvanceFlowPaymentMethodsUpdate(t){return new Promise(((e,s)=>{if(!this.props.onPaymentMethodsRequest)return s(new Error("onPaymentMethodsRequest is not implemented"));this.props.onPaymentMethodsRequest({order:{orderData:t.orderData,pspReference:t.pspReference},locale:this.core.options.locale},{resolve:e,reject:s})})).catch((t=>{this.handleError(new h("IMPLEMENTATION_ERROR","Something failed during payment methods update or onPaymentMethodsRequest was not implemented",{cause:t}))})).then((e=>this.core.update({...e&&{paymentMethodsResponse:e},order:t,amount:t.remainingAmount})))}}export{p as UIElement,p as default};
2
2
  //# sourceMappingURL=UIElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UIElement.js","sources":["../../../../../src/components/internal/UIElement/UIElement.tsx"],"sourcesContent":["import { h } from 'preact';\nimport BaseElement from '../BaseElement/BaseElement';\nimport PayButton from '../PayButton';\nimport { assertIsDropin, cleanupFinalResult, getRegulatoryDefaults, sanitizeResponse, verifyPaymentDidNotFail } from './utils';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { hasOwnProperty } from '../../../utils/hasOwnProperty';\nimport { Resources } from '../../../core/Context/Resources';\n\nimport type { CoreConfiguration, ICore } from '../../../core/types';\nimport type { NewableComponent } from '../../../core/core.registry';\nimport type { ComponentMethodsRef, IUIElement, PayButtonFunctionProps, UIElementProps, UIElementStatus } from './types';\nimport type { CheckoutSessionDetailsResponse, CheckoutSessionPaymentResponse } from '../../../core/CheckoutSession/types';\nimport type {\n AdditionalDetailsStateData,\n CheckoutAdvancedFlowResponse,\n Order,\n PaymentAction,\n PaymentData,\n PaymentMethodsResponse,\n PaymentResponseData,\n RawPaymentResponse\n} from '../../../types/global-types';\nimport { ANALYTICS_SUBMIT_STR } from '../../../core/Analytics/constants';\nimport { AnalyticsInitialEvent, SendAnalyticsObject } from '../../../core/Analytics/types';\nimport { IDropin } from '../../Dropin/types';\n\nimport './UIElement.scss';\n\nexport abstract class UIElement<P extends UIElementProps = UIElementProps> extends BaseElement<P> implements IUIElement {\n protected componentRef: any;\n\n protected resources: Resources;\n\n public elementRef: UIElement;\n\n public static type = undefined;\n\n /**\n * Defines all txVariants that the Component supports (in case it support multiple ones besides the 'type' one)\n */\n public static txVariants: string[] = [];\n\n constructor(checkout: ICore, props?: P) {\n super(checkout, props);\n\n // Only register UIElements that have the 'type' set. Drop-in for example does not have.\n if (this.constructor['type']) {\n this.core.register(this.constructor as NewableComponent);\n }\n\n this.submit = this.submit.bind(this);\n this.setState = this.setState.bind(this);\n this.onValid = this.onValid.bind(this);\n this.onComplete = this.onComplete.bind(this);\n this.handleAction = this.handleAction.bind(this);\n this.handleOrder = this.handleOrder.bind(this);\n this.handleAdditionalDetails = this.handleAdditionalDetails.bind(this);\n this.handleResponse = this.handleResponse.bind(this);\n this.setElementStatus = this.setElementStatus.bind(this);\n this.submitAnalytics = this.submitAnalytics.bind(this);\n\n this.makePaymentsCall = this.makePaymentsCall.bind(this);\n this.makeAdditionalDetailsCall = this.makeAdditionalDetailsCall.bind(this);\n\n this.submitUsingSessionsFlow = this.submitUsingSessionsFlow.bind(this);\n\n this.elementRef = (props && props.elementRef) || this;\n this.resources = this.props.modules ? this.props.modules.resources : undefined;\n\n this.storeElementRefOnCore(this.props);\n }\n\n protected override buildElementProps(componentProps?: P) {\n const globalCoreProps = this.core.getCorePropsForComponent();\n const isStoredPaymentMethod = !!componentProps?.isStoredPaymentMethod;\n const paymentMethodsResponseProps = isStoredPaymentMethod\n ? {}\n : this.core.paymentMethodsResponse.find(componentProps?.type || this.constructor['type']);\n\n const finalProps = {\n showPayButton: true,\n setStatusAutomatically: true,\n ...globalCoreProps,\n ...paymentMethodsResponseProps,\n ...componentProps\n };\n\n const isDropin = assertIsDropin(this as unknown as IDropin);\n\n this.props = this.formatProps({\n ...this.constructor['defaultProps'], // component defaults\n ...getRegulatoryDefaults(this.core.options.countryCode, isDropin), // regulatory defaults\n ...finalProps // the rest (inc. merchant defined config)\n });\n }\n\n protected storeElementRefOnCore(props?: P) {\n if (!props?.isDropin) {\n this.core.storeElementReference(this);\n }\n }\n\n public isAvailable(): Promise<void> {\n return Promise.resolve();\n }\n\n public setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n this.onChange();\n }\n\n public showValidation(): this {\n if (this.componentRef && this.componentRef.showValidation) this.componentRef.showValidation();\n return this;\n }\n\n public setElementStatus(status: UIElementStatus, props?: any): this {\n this.elementRef?.setStatus(status, props);\n return this;\n }\n\n public setStatus(status: UIElementStatus, props?): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n }\n return this;\n }\n\n protected onChange(): object {\n const isValid = this.isValid;\n const state = { data: this.data, errors: this.state.errors, valid: this.state.valid, isValid };\n if (this.props.onChange) this.props.onChange(state, this.elementRef);\n if (isValid) this.onValid();\n\n return state;\n }\n\n // Only called once, for UIElements (including Dropin), as they are being mounted\n protected setUpAnalytics(setUpAnalyticsObj: AnalyticsInitialEvent) {\n const sessionId = this.props.session?.id;\n\n return this.props.modules.analytics.setUp({\n ...setUpAnalyticsObj,\n ...(sessionId && { sessionId })\n });\n }\n\n /**\n * A function for all UIElements, or BaseElement, to use to create an analytics action for when it's been:\n * - mounted,\n * - a PM has been selected\n * - onSubmit has been called (as a result of the pay button being pressed)\n *\n * In some other cases e.g. 3DS2 components, this function is overridden to allow more specific analytics actions to be created\n */\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n /** Work out what the component's \"type\" is:\n * - first check for a dedicated \"analyticsType\" (currently only applies to custom-cards)\n * - otherwise, distinguish cards from non-cards: cards will use their static type property, everything else will use props.type\n */\n try {\n let component = this.constructor['analyticsType'];\n if (!component) {\n component = this.constructor['type'] === 'scheme' || this.constructor['type'] === 'bcmc' ? this.constructor['type'] : this.props.type;\n }\n\n this.props.modules.analytics.sendAnalytics(component, analyticsObj);\n } catch (error) {\n console.warn('Failed to submit the analytics event');\n }\n }\n\n public submit(): void {\n if (!this.isValid) {\n this.showValidation();\n return;\n }\n\n this.makePaymentsCall().then(sanitizeResponse).then(verifyPaymentDidNotFail).then(this.handleResponse).catch(this.handleFailedResult);\n }\n\n protected makePaymentsCall(): Promise<CheckoutAdvancedFlowResponse | CheckoutSessionPaymentResponse> {\n if (this.props.setStatusAutomatically) {\n this.setElementStatus('loading');\n }\n\n if (this.props.onSubmit) {\n return this.submitUsingAdvancedFlow();\n }\n\n if (this.core.session) {\n const beforeSubmitEvent: Promise<PaymentData> = this.props.beforeSubmit\n ? new Promise((resolve, reject) =>\n this.props.beforeSubmit(this.data, this.elementRef, {\n resolve,\n reject\n })\n )\n : Promise.resolve(this.data);\n\n return beforeSubmitEvent.then(this.submitUsingSessionsFlow);\n }\n\n this.handleError(\n new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'It can not perform /payments call. Callback \"onSubmit\" is missing or Checkout session is not available'\n )\n );\n }\n\n private async submitUsingAdvancedFlow(): Promise<CheckoutAdvancedFlowResponse> {\n return new Promise<CheckoutAdvancedFlowResponse>((resolve, reject) => {\n // Call analytics endpoint\n this.submitAnalytics({ type: ANALYTICS_SUBMIT_STR });\n\n this.props.onSubmit(\n {\n data: this.data,\n isValid: this.isValid\n },\n this.elementRef,\n { resolve, reject }\n );\n });\n }\n\n private async submitUsingSessionsFlow(data: PaymentData): Promise<CheckoutSessionPaymentResponse> {\n // Call analytics endpoint\n this.submitAnalytics({ type: ANALYTICS_SUBMIT_STR });\n\n try {\n return await this.core.session.submitPayment(data);\n } catch (error) {\n this.handleError(error);\n return Promise.reject(error);\n }\n\n // // Uncomment to simulate failed\n // return {\n // resultCode: 'Refused',\n // sessionData:\n // 'Ab02b4c0!BQABAgBKGgqfEz8uQlU4yCIOWjA8bkEwmbJ7Qt4r+x5IPXREu1rMjwNk5MDoHFNlv+MWvinS6nXIDniXgRzXCdSC4ksw9CNDBAjOa+B88wRoj/rLTieuWh/0leR88qkV24vtIkjsIsbJTDB78Pd8wX8MEDsXhaAdEIyX9E8eqxuQ3bwPbvLs1Dlgo1ZrfkQRzaNiuVM8ejRG0IWE1bGThJzY+sJvZZHvlDMXIlxhZcDoQvsMj/WwE6+nFJxBiC3oRzmvVn3AbkLQGtvwq16UUSfYbPzG9dXypJMtcrZAQYq2g/2+BSibCcmee9AXq/wij11BERrYmjbDt5NkkdUnDVgAB7pdqbnWX0A2sxBKeYtLSP2kxp+5LoU/Wty3fmcVA3VKVkHfgmIihkeL8lY++5hvHjnkzOE4tyx/sheiKS4zqoWE43TD6n8mpFskAzwMHq4G2o6vkXqvaKFEq7y/R2fVrCypenmRhkPASizpM265rKLU+L4E/C+LMHfN0LYKRMCrLr0gI2GAp+1PZLHgh0tCtiJC/zcJJtJs6sHNQxLUN+kxJuELUHOcuL3ivjG+mWteUnBENZu7KqOSZYetiWYRiyLOXDiBHqbxuQwTuO54L15VLkS/mYB20etibM1nn+fRmbo+1IJkCSalhwi5D7fSrpjbQTmAsOpJT1N8lC1MSNmAvAwG1kWL4JxYwXDKYyYASnsia2V5IjoiQUYwQUFBMTAzQ0E1MzdFQUVEODdDMjRERDUzOTA5QjgwQTc4QTkyM0UzODIzRDY4REFDQzk0QjlGRjgzMDVEQyJ98uZI4thGveOByYbomCeeP2Gy2rzs99FOBoDYVeWIUjyM+gfnW89DdJZAhxe74Tv0TnL5DRQYPCTRQPOoLbQ21NaeSho70FNE+n8XYKlVK5Ore6BoB6IVCaal5MkM27VmZPMmGflgcPx+pakx+EmRsYGdvYNImYxJYrRk3CI+l3T3ZiVpPPqebaVSLaSkEfu0iOFPjjLUhWN6QW6c18heE5vq/pcoeBf7p0Jgr9I5aBFY0avYG57BDGHzU1ZiQ9LLMTis2BA7Ap9pdNq8FVXL4fnoVHNZiiANOf3uvSknPKBID8sdOXUStA0crmO322FYjDqh1n6FG+D7+OJSayNsXIz6Zoy0eFn4HbT8nt8L2X2tdzkMayCYHXRwKh13Xyleqxt4WoEZmhwTmB3p9d1F0SylWnjcC6o/DnshJ9mMW/8D3oWS30Z7BwRODqKGVahRD0YGRzwMbVnEe5JFRfNvJZdLGl35L9632DVmuFQ0lr/8WNL/NrAJNtI6PXrZMNiza0/omPwPfe5ZYuD1Jgq59TX4h9d+3fdkArcJYL7AdoMZON1YEiWY5EzazQwtHd9yzdty9ZHPxAfuOfCh4OhbhFNp+v5YQ+PzKZ+UpM1VxV863+9XgWEURPNvX7qq1cpUSRzrSGq01QBBM3MKzRh5mAgqIdXgtl7L0EXAep0MECc7QY0/o3tW3VR8eEJGsSzrNxpFItqj0SEaIWo25dRfkl5zuw47GQrN9Qzxl2WV3A38MQPUqFtIr/71Rjkphgg49ZGWEYCwgFmm8jJc2/5qTabSGk4bzwiETCTzeydq30bUGqCwglj8CrFViAuQeTJm7dp+PYKMkUNvQRpnSXMj6Kz7rvAMzhzJgK62ltN2idqKxLC7WtivCUgejuQUvNreCYBQCaKwTwP02lZsJpGF9yw8gbyuoB+2aB7IZmgIB8GP4qVQ/ht5B9z/FLohK/8cSPV/4i32SNNdcwhV',\n // sessionResult:\n // 'X3XtfGC7!H4sIAAAAAAAA/6tWykxRslJyDjaxNDMyM3E2MXIyNDUys3RU0lHKTS1KzkjMK3FMTs4vzSsBKgtJLS7xhYo6Z6QmZ+eXlgAVFpcklpQWA+WLUtNKi1NTlGoBMEEbz1cAAAA=iMsCaEJ5LcnsqIUtmNxjm8HtfQ8gZW8JewEU3wHz4qg='\n // };\n }\n\n private onValid() {\n const state = { data: this.data };\n if (this.props.onValid) this.props.onValid(state, this.elementRef);\n return state;\n }\n\n protected onComplete(state): void {\n if (this.props.onComplete) this.props.onComplete(state, this.elementRef);\n }\n\n protected handleError = (error: AdyenCheckoutError): void => {\n /**\n * Set status using elementRef, which:\n * - If Drop-in, will set status for Dropin component, and then it will propagate the new status for the active payment method component\n * - If Component, it will set its own status\n */\n this.setElementStatus('ready');\n\n if (this.props.onError) {\n this.props.onError(error, this.elementRef);\n }\n };\n\n protected handleAdditionalDetails(state: AdditionalDetailsStateData): void {\n this.makeAdditionalDetailsCall(state)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then(this.handleResponse)\n .catch(this.handleFailedResult);\n }\n\n private makeAdditionalDetailsCall(state: AdditionalDetailsStateData): Promise<CheckoutSessionDetailsResponse | CheckoutAdvancedFlowResponse> {\n if (this.props.setStatusAutomatically) {\n this.setElementStatus('loading');\n }\n\n if (this.props.onAdditionalDetails) {\n return new Promise<CheckoutAdvancedFlowResponse>((resolve, reject) => {\n this.props.onAdditionalDetails(state, this.elementRef, { resolve, reject });\n });\n }\n\n if (this.core.session) {\n return this.submitAdditionalDetailsUsingSessionsFlow(state.data);\n }\n\n this.handleError(\n new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'It can not perform /payments/details call. Callback \"onAdditionalDetails\" is missing or Checkout session is not available'\n )\n );\n }\n\n private async submitAdditionalDetailsUsingSessionsFlow(data: any): Promise<CheckoutSessionDetailsResponse> {\n try {\n return await this.core.session.submitDetails(data);\n } catch (error) {\n this.handleError(error);\n return Promise.reject(error);\n }\n }\n\n public handleAction(action: PaymentAction, props = {}): UIElement<P> | null {\n if (!action || !action.type) {\n if (hasOwnProperty(action, 'action') && hasOwnProperty(action, 'resultCode')) {\n throw new Error(\n 'handleAction::Invalid Action - the passed action object itself has an \"action\" property and ' +\n 'a \"resultCode\": have you passed in the whole response object by mistake?'\n );\n }\n throw new Error('handleAction::Invalid Action - the passed action object does not have a \"type\" property');\n }\n\n const paymentAction = this.core.createFromAction(action, {\n ...this.elementRef.props,\n ...props,\n onAdditionalDetails: this.handleAdditionalDetails\n });\n\n if (paymentAction) {\n this.unmount();\n return paymentAction.mount(this._node);\n }\n\n return null;\n }\n\n protected handleOrder = (response: PaymentResponseData): void => {\n const { order } = response;\n\n const updateCorePromise = this.core.session ? this.core.update({ order }) : this.handleAdvanceFlowPaymentMethodsUpdate(order);\n\n updateCorePromise.then(() => {\n this.props.onOrderUpdated?.({ order });\n });\n };\n\n /**\n * Handles when the payment fails. The payment fails when:\n * - adv flow: the merchant rejects the payment due to a critical error\n * - adv flow: the merchant resolves the payment with a failed resultCode\n * - sessions: a network error occurs when making the payment\n * - sessions: the payment fails with a failed resultCode\n *\n * @param result\n */\n protected handleFailedResult = (result?: PaymentResponseData): void => {\n if (this.props.setStatusAutomatically) {\n this.setElementStatus('error');\n }\n\n cleanupFinalResult(result);\n this.props.onPaymentFailed?.(result, this.elementRef);\n };\n\n protected handleSuccessResult = (result: PaymentResponseData): void => {\n if (this.props.setStatusAutomatically) {\n this.setElementStatus('success');\n }\n\n cleanupFinalResult(result);\n this.props.onPaymentCompleted?.(result, this.elementRef);\n };\n\n /**\n * Handles a session /payments or /payments/details response.\n * The component will handle automatically actions, orders, and final results.\n *\n * @param rawResponse -\n */\n protected handleResponse(rawResponse: RawPaymentResponse): void {\n const response = sanitizeResponse(rawResponse);\n\n if (response.action) {\n this.elementRef.handleAction(response.action);\n return;\n }\n\n if (response.order?.remainingAmount?.value > 0) {\n // we don't want to call elementRef here, use the component handler\n // we do this way so the logic on handlingOrder is associated with payment method\n this.handleOrder(response);\n return;\n }\n\n this.handleSuccessResult(response);\n }\n\n /**\n * Call update on parent instance\n * This function exist to make safe access to the protect _parentInstance\n * @param options - CoreOptions\n */\n public updateParent(options: CoreConfiguration = {}): Promise<ICore> {\n return this.elementRef.core.update(options);\n }\n\n public setComponentRef = (ref: ComponentMethodsRef) => {\n this.componentRef = ref;\n };\n\n /**\n * Get the current validation status of the element\n */\n public get isValid(): boolean {\n return false;\n }\n\n /**\n * Get the element icon URL for the current environment\n */\n\n public get icon(): string {\n const type = this.props.paymentMethodType || this.type;\n return this.props.icon ?? this.resources.getImage()(type);\n }\n\n /**\n * Get the element's displayable name\n */\n public get displayName(): string {\n const paymentMethodFromResponse = this.core.paymentMethodsResponse?.paymentMethods?.find(pm => pm.type === this.type);\n return this.props.name || paymentMethodFromResponse?.name || this.type;\n }\n\n /**\n * Get the element accessible name, used in the aria-label of the button that controls selected payment method\n */\n public get accessibleName(): string {\n return this.displayName;\n }\n\n /**\n * Used to display the second line of a payment method item\n */\n get additionalInfo(): string {\n return null;\n }\n\n /**\n * Return the type of an element\n */\n public get type(): string {\n return this.props.type || this.constructor['type'];\n }\n\n /**\n * Get the payButton component for the current element\n */\n protected payButton = (props: PayButtonFunctionProps) => {\n return <PayButton {...props} amount={this.props.amount} secondaryAmount={this.props.secondaryAmount} onClick={this.submit} />;\n };\n\n /**\n * Used in the Partial Orders flow.\n * When the Order is updated, the merchant can request new payment methods based on the new remaining amount\n *\n * @private\n */\n private async handleAdvanceFlowPaymentMethodsUpdate(order: Order) {\n return new Promise<PaymentMethodsResponse>((resolve, reject) => {\n if (!this.props.onPaymentMethodsRequest) {\n return reject(new Error('onPaymentMethodsRequest is not implemented'));\n }\n\n this.props.onPaymentMethodsRequest(\n {\n order: {\n orderData: order.orderData,\n pspReference: order.pspReference\n },\n locale: this.core.options.locale\n },\n { resolve, reject }\n );\n })\n .catch(error => {\n this.handleError(\n new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'Something failed during payment methods update or onPaymentMethodsRequest was not implemented',\n {\n cause: error\n }\n )\n );\n })\n .then(paymentMethodsResponse => {\n return this.core.update({\n ...(paymentMethodsResponse && { paymentMethodsResponse }),\n order,\n amount: order.remainingAmount\n });\n });\n }\n}\n\nexport default UIElement;\n"],"names":["UIElement","BaseElement","componentRef","resources","elementRef","static","undefined","constructor","checkout","props","super","this","core","register","submit","bind","setState","onValid","onComplete","handleAction","handleOrder","handleAdditionalDetails","handleResponse","setElementStatus","submitAnalytics","makePaymentsCall","makeAdditionalDetailsCall","submitUsingSessionsFlow","modules","storeElementRefOnCore","buildElementProps","componentProps","finalProps","showPayButton","setStatusAutomatically","getCorePropsForComponent","isStoredPaymentMethod","paymentMethodsResponse","find","type","isDropin","assertIsDropin","formatProps","getRegulatoryDefaults","options","countryCode","storeElementReference","isAvailable","Promise","resolve","newState","state","onChange","showValidation","status","setStatus","isValid","data","errors","valid","setUpAnalytics","setUpAnalyticsObj","sessionId","session","id","analytics","setUp","analyticsObj","component","sendAnalytics","error","console","warn","then","sanitizeResponse","verifyPaymentDidNotFail","catch","handleFailedResult","onSubmit","submitUsingAdvancedFlow","beforeSubmit","reject","handleError","AdyenCheckoutError","ANALYTICS_SUBMIT_STR","submitPayment","onError","onAdditionalDetails","submitAdditionalDetailsUsingSessionsFlow","submitDetails","action","hasOwnProperty","Error","paymentAction","createFromAction","unmount","mount","_node","response","order","update","handleAdvanceFlowPaymentMethodsUpdate","onOrderUpdated","result","cleanupFinalResult","onPaymentFailed","handleSuccessResult","onPaymentCompleted","rawResponse","remainingAmount","value","updateParent","setComponentRef","ref","icon","paymentMethodType","getImage","displayName","paymentMethodFromResponse","paymentMethods","pm","name","accessibleName","additionalInfo","payButton","h","PayButton","amount","secondaryAmount","onClick","onPaymentMethodsRequest","orderData","pspReference","locale","cause"],"mappings":"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"}
1
+ {"version":3,"file":"UIElement.js","sources":["../../../../../src/components/internal/UIElement/UIElement.tsx"],"sourcesContent":["import { h } from 'preact';\nimport BaseElement from '../BaseElement/BaseElement';\nimport PayButton from '../PayButton';\nimport { assertIsDropin, cleanupFinalResult, getRegulatoryDefaults, sanitizeResponse, verifyPaymentDidNotFail } from './utils';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { hasOwnProperty } from '../../../utils/hasOwnProperty';\nimport { Resources } from '../../../core/Context/Resources';\nimport { ANALYTICS_SUBMIT_STR } from '../../../core/Analytics/constants';\n\nimport type { AnalyticsInitialEvent, SendAnalyticsObject } from '../../../core/Analytics/types';\nimport type { CoreConfiguration, ICore } from '../../../core/types';\nimport type { NewableComponent } from '../../../core/core.registry';\nimport type { ComponentMethodsRef, IUIElement, PayButtonFunctionProps, UIElementProps, UIElementStatus } from './types';\nimport type { CheckoutSessionDetailsResponse, CheckoutSessionPaymentResponse } from '../../../core/CheckoutSession/types';\nimport type {\n AdditionalDetailsStateData,\n CheckoutAdvancedFlowResponse,\n Order,\n PaymentAction,\n PaymentData,\n PaymentMethodsResponse,\n PaymentResponseData,\n RawPaymentResponse\n} from '../../../types/global-types';\nimport type { IDropin } from '../../Dropin/types';\n\nimport './UIElement.scss';\n\nexport abstract class UIElement<P extends UIElementProps = UIElementProps> extends BaseElement<P> implements IUIElement {\n protected componentRef: any;\n\n protected resources: Resources;\n\n public elementRef: UIElement;\n\n public static type = undefined;\n\n /**\n * Defines all txVariants that the Component supports (in case it support multiple ones besides the 'type' one)\n */\n public static txVariants: string[] = [];\n\n constructor(checkout: ICore, props?: P) {\n super(checkout, props);\n\n // Only register UIElements that have the 'type' set. Drop-in for example does not have.\n if (this.constructor['type']) {\n this.core.register(this.constructor as NewableComponent);\n }\n\n this.submit = this.submit.bind(this);\n this.setState = this.setState.bind(this);\n this.onComplete = this.onComplete.bind(this);\n this.handleAction = this.handleAction.bind(this);\n this.handleOrder = this.handleOrder.bind(this);\n this.handleAdditionalDetails = this.handleAdditionalDetails.bind(this);\n this.handleResponse = this.handleResponse.bind(this);\n this.setElementStatus = this.setElementStatus.bind(this);\n this.submitAnalytics = this.submitAnalytics.bind(this);\n this.makePaymentsCall = this.makePaymentsCall.bind(this);\n this.makeAdditionalDetailsCall = this.makeAdditionalDetailsCall.bind(this);\n this.submitUsingSessionsFlow = this.submitUsingSessionsFlow.bind(this);\n\n this.elementRef = (props && props.elementRef) || this;\n this.resources = this.props.modules ? this.props.modules.resources : undefined;\n\n this.storeElementRefOnCore(this.props);\n }\n\n protected override buildElementProps(componentProps?: P) {\n const globalCoreProps = this.core.getCorePropsForComponent();\n const isStoredPaymentMethod = !!componentProps?.isStoredPaymentMethod;\n const paymentMethodsResponseProps = isStoredPaymentMethod\n ? {}\n : this.core.paymentMethodsResponse.find(componentProps?.type || this.constructor['type']);\n\n const finalProps = {\n showPayButton: true,\n ...globalCoreProps,\n ...paymentMethodsResponseProps,\n ...componentProps\n };\n\n const isDropin = assertIsDropin(this as unknown as IDropin);\n\n this.props = this.formatProps({\n ...this.constructor['defaultProps'], // component defaults\n ...getRegulatoryDefaults(this.core.options.countryCode, isDropin), // regulatory defaults\n ...finalProps // the rest (inc. merchant defined config)\n });\n }\n\n protected storeElementRefOnCore(props?: P) {\n if (!props?.isDropin) {\n this.core.storeElementReference(this);\n }\n }\n\n public isAvailable(): Promise<void> {\n return Promise.resolve();\n }\n\n public setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n this.onChange();\n }\n\n public showValidation(): this {\n if (this.componentRef && this.componentRef.showValidation) this.componentRef.showValidation();\n return this;\n }\n\n public setElementStatus(status: UIElementStatus, props?: any): this {\n this.elementRef?.setStatus(status, props);\n return this;\n }\n\n public setStatus(status: UIElementStatus, props?): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n }\n return this;\n }\n\n protected onChange(): object {\n const isValid = this.isValid;\n const state = { data: this.data, errors: this.state.errors, valid: this.state.valid, isValid };\n\n this.props.onChange?.(state, this.elementRef);\n\n return state;\n }\n\n // Only called once, for UIElements (including Dropin), as they are being mounted\n protected setUpAnalytics(setUpAnalyticsObj: AnalyticsInitialEvent) {\n const sessionId = this.props.session?.id;\n\n return this.props.modules.analytics.setUp({\n ...setUpAnalyticsObj,\n ...(sessionId && { sessionId })\n });\n }\n\n /**\n * A function for all UIElements, or BaseElement, to use to create an analytics action for when it's been:\n * - mounted,\n * - a PM has been selected\n * - onSubmit has been called (as a result of the pay button being pressed)\n *\n * In some other cases e.g. 3DS2 components, this function is overridden to allow more specific analytics actions to be created\n */\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n /** Work out what the component's \"type\" is:\n * - first check for a dedicated \"analyticsType\" (currently only applies to custom-cards)\n * - otherwise, distinguish cards from non-cards: cards will use their static type property, everything else will use props.type\n */\n try {\n let component = this.constructor['analyticsType'];\n if (!component) {\n component = this.constructor['type'] === 'scheme' || this.constructor['type'] === 'bcmc' ? this.constructor['type'] : this.props.type;\n }\n\n this.props.modules.analytics.sendAnalytics(component, analyticsObj);\n } catch (error) {\n console.warn('Failed to submit the analytics event');\n }\n }\n\n public submit(): void {\n if (!this.isValid) {\n this.showValidation();\n return;\n }\n\n this.makePaymentsCall().then(sanitizeResponse).then(verifyPaymentDidNotFail).then(this.handleResponse).catch(this.handleFailedResult);\n }\n\n protected makePaymentsCall(): Promise<CheckoutAdvancedFlowResponse | CheckoutSessionPaymentResponse> {\n this.setElementStatus('loading');\n\n if (this.props.onSubmit) {\n return this.submitUsingAdvancedFlow();\n }\n\n if (this.core.session) {\n const beforeSubmitEvent: Promise<PaymentData> = this.props.beforeSubmit\n ? new Promise((resolve, reject) =>\n this.props.beforeSubmit(this.data, this.elementRef, {\n resolve,\n reject\n })\n )\n : Promise.resolve(this.data);\n\n return beforeSubmitEvent.then(this.submitUsingSessionsFlow);\n }\n\n this.handleError(\n new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'It can not perform /payments call. Callback \"onSubmit\" is missing or Checkout session is not available'\n )\n );\n }\n\n private async submitUsingAdvancedFlow(): Promise<CheckoutAdvancedFlowResponse> {\n return new Promise<CheckoutAdvancedFlowResponse>((resolve, reject) => {\n // Call analytics endpoint\n this.submitAnalytics({ type: ANALYTICS_SUBMIT_STR });\n\n this.props.onSubmit(\n {\n data: this.data,\n isValid: this.isValid\n },\n this.elementRef,\n { resolve, reject }\n );\n });\n }\n\n private async submitUsingSessionsFlow(data: PaymentData): Promise<CheckoutSessionPaymentResponse> {\n // Call analytics endpoint\n this.submitAnalytics({ type: ANALYTICS_SUBMIT_STR });\n\n try {\n return await this.core.session.submitPayment(data);\n } catch (error) {\n this.handleError(error);\n return Promise.reject(error);\n }\n\n // // Uncomment to simulate failed\n // return {\n // resultCode: 'Refused',\n // sessionData:\n // 'Ab02b4c0!BQABAgBKGgqfEz8uQlU4yCIOWjA8bkEwmbJ7Qt4r+x5IPXREu1rMjwNk5MDoHFNlv+MWvinS6nXIDniXgRzXCdSC4ksw9CNDBAjOa+B88wRoj/rLTieuWh/0leR88qkV24vtIkjsIsbJTDB78Pd8wX8MEDsXhaAdEIyX9E8eqxuQ3bwPbvLs1Dlgo1ZrfkQRzaNiuVM8ejRG0IWE1bGThJzY+sJvZZHvlDMXIlxhZcDoQvsMj/WwE6+nFJxBiC3oRzmvVn3AbkLQGtvwq16UUSfYbPzG9dXypJMtcrZAQYq2g/2+BSibCcmee9AXq/wij11BERrYmjbDt5NkkdUnDVgAB7pdqbnWX0A2sxBKeYtLSP2kxp+5LoU/Wty3fmcVA3VKVkHfgmIihkeL8lY++5hvHjnkzOE4tyx/sheiKS4zqoWE43TD6n8mpFskAzwMHq4G2o6vkXqvaKFEq7y/R2fVrCypenmRhkPASizpM265rKLU+L4E/C+LMHfN0LYKRMCrLr0gI2GAp+1PZLHgh0tCtiJC/zcJJtJs6sHNQxLUN+kxJuELUHOcuL3ivjG+mWteUnBENZu7KqOSZYetiWYRiyLOXDiBHqbxuQwTuO54L15VLkS/mYB20etibM1nn+fRmbo+1IJkCSalhwi5D7fSrpjbQTmAsOpJT1N8lC1MSNmAvAwG1kWL4JxYwXDKYyYASnsia2V5IjoiQUYwQUFBMTAzQ0E1MzdFQUVEODdDMjRERDUzOTA5QjgwQTc4QTkyM0UzODIzRDY4REFDQzk0QjlGRjgzMDVEQyJ98uZI4thGveOByYbomCeeP2Gy2rzs99FOBoDYVeWIUjyM+gfnW89DdJZAhxe74Tv0TnL5DRQYPCTRQPOoLbQ21NaeSho70FNE+n8XYKlVK5Ore6BoB6IVCaal5MkM27VmZPMmGflgcPx+pakx+EmRsYGdvYNImYxJYrRk3CI+l3T3ZiVpPPqebaVSLaSkEfu0iOFPjjLUhWN6QW6c18heE5vq/pcoeBf7p0Jgr9I5aBFY0avYG57BDGHzU1ZiQ9LLMTis2BA7Ap9pdNq8FVXL4fnoVHNZiiANOf3uvSknPKBID8sdOXUStA0crmO322FYjDqh1n6FG+D7+OJSayNsXIz6Zoy0eFn4HbT8nt8L2X2tdzkMayCYHXRwKh13Xyleqxt4WoEZmhwTmB3p9d1F0SylWnjcC6o/DnshJ9mMW/8D3oWS30Z7BwRODqKGVahRD0YGRzwMbVnEe5JFRfNvJZdLGl35L9632DVmuFQ0lr/8WNL/NrAJNtI6PXrZMNiza0/omPwPfe5ZYuD1Jgq59TX4h9d+3fdkArcJYL7AdoMZON1YEiWY5EzazQwtHd9yzdty9ZHPxAfuOfCh4OhbhFNp+v5YQ+PzKZ+UpM1VxV863+9XgWEURPNvX7qq1cpUSRzrSGq01QBBM3MKzRh5mAgqIdXgtl7L0EXAep0MECc7QY0/o3tW3VR8eEJGsSzrNxpFItqj0SEaIWo25dRfkl5zuw47GQrN9Qzxl2WV3A38MQPUqFtIr/71Rjkphgg49ZGWEYCwgFmm8jJc2/5qTabSGk4bzwiETCTzeydq30bUGqCwglj8CrFViAuQeTJm7dp+PYKMkUNvQRpnSXMj6Kz7rvAMzhzJgK62ltN2idqKxLC7WtivCUgejuQUvNreCYBQCaKwTwP02lZsJpGF9yw8gbyuoB+2aB7IZmgIB8GP4qVQ/ht5B9z/FLohK/8cSPV/4i32SNNdcwhV',\n // sessionResult:\n // 'X3XtfGC7!H4sIAAAAAAAA/6tWykxRslJyDjaxNDMyM3E2MXIyNDUys3RU0lHKTS1KzkjMK3FMTs4vzSsBKgtJLS7xhYo6Z6QmZ+eXlgAVFpcklpQWA+WLUtNKi1NTlGoBMEEbz1cAAAA=iMsCaEJ5LcnsqIUtmNxjm8HtfQ8gZW8JewEU3wHz4qg='\n // };\n }\n\n protected onComplete(state): void {\n if (this.props.onComplete) this.props.onComplete(state, this.elementRef);\n }\n\n protected handleError = (error: AdyenCheckoutError): void => {\n /**\n * Set status using elementRef, which:\n * - If Drop-in, will set status for Dropin component, and then it will propagate the new status for the active payment method component\n * - If Component, it will set its own status\n */\n this.setElementStatus('ready');\n\n if (this.props.onError) {\n this.props.onError(error, this.elementRef);\n }\n };\n\n protected handleAdditionalDetails(state: AdditionalDetailsStateData): void {\n this.makeAdditionalDetailsCall(state)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then(this.handleResponse)\n .catch(this.handleFailedResult);\n }\n\n private makeAdditionalDetailsCall(state: AdditionalDetailsStateData): Promise<CheckoutSessionDetailsResponse | CheckoutAdvancedFlowResponse> {\n this.setElementStatus('loading');\n\n if (this.props.onAdditionalDetails) {\n return new Promise<CheckoutAdvancedFlowResponse>((resolve, reject) => {\n this.props.onAdditionalDetails(state, this.elementRef, { resolve, reject });\n });\n }\n\n if (this.core.session) {\n return this.submitAdditionalDetailsUsingSessionsFlow(state.data);\n }\n\n this.handleError(\n new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'It can not perform /payments/details call. Callback \"onAdditionalDetails\" is missing or Checkout session is not available'\n )\n );\n }\n\n private async submitAdditionalDetailsUsingSessionsFlow(data: any): Promise<CheckoutSessionDetailsResponse> {\n try {\n return await this.core.session.submitDetails(data);\n } catch (error) {\n this.handleError(error);\n return Promise.reject(error);\n }\n }\n\n public handleAction(action: PaymentAction, props = {}): UIElement<P> | null {\n if (!action || !action.type) {\n if (hasOwnProperty(action, 'action') && hasOwnProperty(action, 'resultCode')) {\n throw new Error(\n 'handleAction::Invalid Action - the passed action object itself has an \"action\" property and ' +\n 'a \"resultCode\": have you passed in the whole response object by mistake?'\n );\n }\n throw new Error('handleAction::Invalid Action - the passed action object does not have a \"type\" property');\n }\n\n const paymentAction = this.core.createFromAction(action, {\n ...this.elementRef.props,\n ...props,\n onAdditionalDetails: this.handleAdditionalDetails\n });\n\n if (paymentAction) {\n this.unmount();\n return paymentAction.mount(this._node);\n }\n\n return null;\n }\n\n protected handleOrder = (response: PaymentResponseData): void => {\n const { order } = response;\n\n const updateCorePromise = this.core.session ? this.core.update({ order }) : this.handleAdvanceFlowPaymentMethodsUpdate(order);\n\n updateCorePromise.then(() => {\n this.props.onOrderUpdated?.({ order });\n });\n };\n\n /**\n * Handles when the payment fails. The payment fails when:\n * - adv flow: the merchant rejects the payment due to a critical error\n * - adv flow: the merchant resolves the payment with a failed resultCode\n * - sessions: a network error occurs when making the payment\n * - sessions: the payment fails with a failed resultCode\n *\n * @param result\n */\n protected handleFailedResult = (result?: PaymentResponseData): void => {\n if (assertIsDropin(this.elementRef)) {\n this.elementRef.displayFinalAnimation('error');\n }\n\n cleanupFinalResult(result);\n this.props.onPaymentFailed?.(result, this.elementRef);\n };\n\n protected handleSuccessResult = (result: PaymentResponseData): void => {\n if (assertIsDropin(this.elementRef)) {\n this.elementRef.displayFinalAnimation('success');\n }\n\n cleanupFinalResult(result);\n this.props.onPaymentCompleted?.(result, this.elementRef);\n };\n\n /**\n * Handles a session /payments or /payments/details response.\n * The component will handle automatically actions, orders, and final results.\n *\n * @param rawResponse -\n */\n protected handleResponse(rawResponse: RawPaymentResponse): void {\n const response = sanitizeResponse(rawResponse);\n\n if (response.action) {\n this.elementRef.handleAction(response.action);\n return;\n }\n\n if (response.order?.remainingAmount?.value > 0) {\n // we don't want to call elementRef here, use the component handler\n // we do this way so the logic on handlingOrder is associated with payment method\n this.handleOrder(response);\n return;\n }\n\n this.handleSuccessResult(response);\n }\n\n /**\n * Call update on parent instance\n * This function exist to make safe access to the protect _parentInstance\n * @param options - CoreOptions\n */\n public updateParent(options: CoreConfiguration = {}): Promise<ICore> {\n return this.elementRef.core.update(options);\n }\n\n public setComponentRef = (ref: ComponentMethodsRef) => {\n this.componentRef = ref;\n };\n\n /**\n * Get the current validation status of the element\n */\n public get isValid(): boolean {\n return false;\n }\n\n /**\n * Get the element icon URL for the current environment\n */\n\n public get icon(): string {\n const type = this.props.paymentMethodType || this.type;\n return this.props.icon ?? this.resources.getImage()(type);\n }\n\n /**\n * Get the element's displayable name\n */\n public get displayName(): string {\n const paymentMethodFromResponse = this.core.paymentMethodsResponse?.paymentMethods?.find(pm => pm.type === this.type);\n return this.props.name || paymentMethodFromResponse?.name || this.type;\n }\n\n /**\n * Get the element accessible name, used in the aria-label of the button that controls selected payment method\n */\n public get accessibleName(): string {\n return this.displayName;\n }\n\n /**\n * Used to display the second line of a payment method item\n */\n get additionalInfo(): string {\n return null;\n }\n\n /**\n * Return the type of an element\n */\n public get type(): string {\n return this.props.type || this.constructor['type'];\n }\n\n /**\n * Get the payButton component for the current element\n */\n protected payButton = (props: PayButtonFunctionProps) => {\n return <PayButton {...props} amount={this.props.amount} secondaryAmount={this.props.secondaryAmount} onClick={this.submit} />;\n };\n\n /**\n * Used in the Partial Orders flow.\n * When the Order is updated, the merchant can request new payment methods based on the new remaining amount\n *\n * @private\n */\n private async handleAdvanceFlowPaymentMethodsUpdate(order: Order) {\n return new Promise<PaymentMethodsResponse>((resolve, reject) => {\n if (!this.props.onPaymentMethodsRequest) {\n return reject(new Error('onPaymentMethodsRequest is not implemented'));\n }\n\n this.props.onPaymentMethodsRequest(\n {\n order: {\n orderData: order.orderData,\n pspReference: order.pspReference\n },\n locale: this.core.options.locale\n },\n { resolve, reject }\n );\n })\n .catch(error => {\n this.handleError(\n new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'Something failed during payment methods update or onPaymentMethodsRequest was not implemented',\n {\n cause: error\n }\n )\n );\n })\n .then(paymentMethodsResponse => {\n return this.core.update({\n ...(paymentMethodsResponse && { paymentMethodsResponse }),\n order,\n amount: order.remainingAmount\n });\n });\n }\n}\n\nexport default UIElement;\n"],"names":["UIElement","BaseElement","componentRef","resources","elementRef","static","undefined","constructor","checkout","props","super","this","core","register","submit","bind","setState","onComplete","handleAction","handleOrder","handleAdditionalDetails","handleResponse","setElementStatus","submitAnalytics","makePaymentsCall","makeAdditionalDetailsCall","submitUsingSessionsFlow","modules","storeElementRefOnCore","buildElementProps","componentProps","finalProps","showPayButton","getCorePropsForComponent","isStoredPaymentMethod","paymentMethodsResponse","find","type","isDropin","assertIsDropin","formatProps","getRegulatoryDefaults","options","countryCode","storeElementReference","isAvailable","Promise","resolve","newState","state","onChange","showValidation","status","setStatus","isValid","data","errors","valid","setUpAnalytics","setUpAnalyticsObj","sessionId","session","id","analytics","setUp","analyticsObj","component","sendAnalytics","error","console","warn","then","sanitizeResponse","verifyPaymentDidNotFail","catch","handleFailedResult","onSubmit","submitUsingAdvancedFlow","beforeSubmit","reject","handleError","AdyenCheckoutError","ANALYTICS_SUBMIT_STR","submitPayment","onError","onAdditionalDetails","submitAdditionalDetailsUsingSessionsFlow","submitDetails","action","hasOwnProperty","Error","paymentAction","createFromAction","unmount","mount","_node","response","order","update","handleAdvanceFlowPaymentMethodsUpdate","onOrderUpdated","result","displayFinalAnimation","cleanupFinalResult","onPaymentFailed","handleSuccessResult","onPaymentCompleted","rawResponse","remainingAmount","value","updateParent","setComponentRef","ref","icon","paymentMethodType","getImage","displayName","paymentMethodFromResponse","paymentMethods","pm","name","accessibleName","additionalInfo","payButton","h","PayButton","amount","secondaryAmount","onClick","onPaymentMethodsRequest","orderData","pspReference","locale","cause"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../src/components/internal/UIElement/utils.ts"],"sourcesContent":["import { UIElementStatus } from './types';\nimport { RawPaymentResponse, PaymentResponseData } from '../../../types/global-types';\nimport { IDropin } from '../../Dropin/types';\n\nconst ALLOWED_PROPERTIES = ['action', 'resultCode', 'sessionData', 'order', 'sessionResult', 'donationToken', 'error'];\n\nexport function sanitizeResponse(response: RawPaymentResponse): PaymentResponseData {\n const removedProperties = [];\n\n const sanitizedObject = Object.keys(response).reduce((acc, cur) => {\n if (!ALLOWED_PROPERTIES.includes(cur)) {\n removedProperties.push(cur);\n } else {\n acc[cur] = response[cur];\n }\n return acc;\n }, {});\n\n if (removedProperties.length) console.warn(`The following properties should not be passed to the client: ${removedProperties.join(', ')}`);\n\n return sanitizedObject as PaymentResponseData;\n}\n\n/**\n * Remove not relevant properties in the final payment result object\n *\n * @param paymentResponse\n */\nexport function cleanupFinalResult(paymentResponse?: PaymentResponseData): void {\n if (!paymentResponse) return;\n\n delete paymentResponse.order;\n delete paymentResponse.action;\n if (!paymentResponse.donationToken || paymentResponse.donationToken.length === 0) {\n delete paymentResponse.donationToken;\n }\n}\n\nexport function resolveFinalResult(result: PaymentResponseData): [status: UIElementStatus, statusProps?: any] {\n switch (result.resultCode) {\n case 'Authorised':\n case 'Received':\n return ['success'];\n case 'Pending':\n return ['success'];\n case 'Cancelled':\n case 'Error':\n case 'Refused':\n return ['error'];\n default:\n }\n}\n\nexport function verifyPaymentDidNotFail(response: PaymentResponseData): Promise<PaymentResponseData> {\n if (['Cancelled', 'Error', 'Refused'].includes(response.resultCode)) {\n return Promise.reject(response);\n }\n\n return Promise.resolve(response);\n}\n\nexport function assertIsDropin(dropin: IDropin) {\n if (!dropin) return false;\n\n const isDropin = typeof dropin.activePaymentMethod === 'object' && typeof dropin.closeActivePaymentMethod === 'function';\n return isDropin;\n}\n\nexport function getRegulatoryDefaults(countryCode: string, isDropin: boolean): Record<string, any> {\n switch (countryCode) {\n // Finnish regulations state that no payment method can be open by default\n case 'FI':\n return isDropin\n ? {\n openFirstPaymentMethod: false,\n openFirstStoredPaymentMethod: false\n }\n : {};\n default:\n return {};\n }\n}\n"],"names":["ALLOWED_PROPERTIES","sanitizeResponse","response","removedProperties","sanitizedObject","Object","keys","reduce","acc","cur","includes","push","length","console","warn","join","cleanupFinalResult","paymentResponse","order","action","donationToken","verifyPaymentDidNotFail","resultCode","Promise","reject","resolve","assertIsDropin","dropin","activePaymentMethod","closeActivePaymentMethod","getRegulatoryDefaults","countryCode","isDropin","openFirstPaymentMethod","openFirstStoredPaymentMethod"],"mappings":"AAIA,MAAMA,EAAqB,CAAC,SAAU,aAAc,cAAe,QAAS,gBAAiB,gBAAiB,SAEvG,SAASC,EAAiBC,GAC7B,MAAMC,EAAoB,GAEpBC,EAAkBC,OAAOC,KAAKJ,GAAUK,QAAO,CAACC,EAAKC,KAClDT,EAAmBU,SAASD,GAG7BD,EAAIC,GAAOP,EAASO,GAFpBN,EAAkBQ,KAAKF,GAIpBD,IACR,CAAC,GAIJ,OAFIL,EAAkBS,QAAQC,QAAQC,KAAK,gEAAgEX,EAAkBY,KAAK,SAE3HX,CACX,CAOO,SAASY,EAAmBC,GAC1BA,WAEEA,EAAgBC,aAChBD,EAAgBE,OAClBF,EAAgBG,eAA0D,IAAzCH,EAAgBG,cAAcR,eACzDK,EAAgBG,cAE/B,CAiBO,SAASC,EAAwBnB,GACpC,MAAI,CAAC,YAAa,QAAS,WAAWQ,SAASR,EAASoB,YAC7CC,QAAQC,OAAOtB,GAGnBqB,QAAQE,QAAQvB,EAC3B,CAEO,SAASwB,EAAeC,GAC3B,IAAKA,EAAQ,OAAO,EAGpB,MADuD,iBAA/BA,EAAOC,qBAA+E,mBAApCD,EAAOE,wBAErF,CAEO,SAASC,EAAsBC,EAAqBC,GACvD,MAES,OAFDD,GAGOC,EACD,CACIC,wBAAwB,EACxBC,8BAA8B,GAIjC,EAEnB"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../src/components/internal/UIElement/utils.ts"],"sourcesContent":["import { UIElementStatus } from './types';\nimport { RawPaymentResponse, PaymentResponseData } from '../../../types/global-types';\nimport { IDropin } from '../../Dropin/types';\n\nconst ALLOWED_PROPERTIES = ['action', 'resultCode', 'sessionData', 'order', 'sessionResult', 'donationToken', 'error'];\n\nexport function sanitizeResponse(response: RawPaymentResponse): PaymentResponseData {\n const removedProperties = [];\n\n const sanitizedObject = Object.keys(response).reduce((acc, cur) => {\n if (!ALLOWED_PROPERTIES.includes(cur)) {\n removedProperties.push(cur);\n } else {\n acc[cur] = response[cur];\n }\n return acc;\n }, {});\n\n if (removedProperties.length) console.warn(`The following properties should not be passed to the client: ${removedProperties.join(', ')}`);\n\n return sanitizedObject as PaymentResponseData;\n}\n\n/**\n * Remove not relevant properties in the final payment result object\n *\n * @param paymentResponse\n */\nexport function cleanupFinalResult(paymentResponse?: PaymentResponseData): void {\n if (!paymentResponse) return;\n\n delete paymentResponse.order;\n delete paymentResponse.action;\n if (!paymentResponse.donationToken || paymentResponse.donationToken.length === 0) {\n delete paymentResponse.donationToken;\n }\n}\n\nexport function resolveFinalResult(result: PaymentResponseData): [status: UIElementStatus, statusProps?: any] {\n switch (result.resultCode) {\n case 'Authorised':\n case 'Received':\n return ['success'];\n case 'Pending':\n return ['success'];\n case 'Cancelled':\n case 'Error':\n case 'Refused':\n return ['error'];\n default:\n }\n}\n\nexport function verifyPaymentDidNotFail(response: PaymentResponseData): Promise<PaymentResponseData> {\n if (['Cancelled', 'Error', 'Refused'].includes(response.resultCode)) {\n return Promise.reject(response);\n }\n\n return Promise.resolve(response);\n}\n\nexport function assertIsDropin(element: any): element is IDropin {\n if (!element) return false;\n\n const isDropin = typeof element.activePaymentMethod === 'object' && typeof element.closeActivePaymentMethod === 'function';\n return isDropin;\n}\n\nexport function getRegulatoryDefaults(countryCode: string, isDropin: boolean): Record<string, any> {\n switch (countryCode) {\n // Finnish regulations state that no payment method can be open by default\n case 'FI':\n return isDropin\n ? {\n openFirstPaymentMethod: false,\n openFirstStoredPaymentMethod: false\n }\n : {};\n default:\n return {};\n }\n}\n"],"names":["ALLOWED_PROPERTIES","sanitizeResponse","response","removedProperties","sanitizedObject","Object","keys","reduce","acc","cur","includes","push","length","console","warn","join","cleanupFinalResult","paymentResponse","order","action","donationToken","verifyPaymentDidNotFail","resultCode","Promise","reject","resolve","assertIsDropin","element","activePaymentMethod","closeActivePaymentMethod","getRegulatoryDefaults","countryCode","isDropin","openFirstPaymentMethod","openFirstStoredPaymentMethod"],"mappings":"AAIA,MAAMA,EAAqB,CAAC,SAAU,aAAc,cAAe,QAAS,gBAAiB,gBAAiB,SAEvG,SAASC,EAAiBC,GAC7B,MAAMC,EAAoB,GAEpBC,EAAkBC,OAAOC,KAAKJ,GAAUK,QAAO,CAACC,EAAKC,KAClDT,EAAmBU,SAASD,GAG7BD,EAAIC,GAAOP,EAASO,GAFpBN,EAAkBQ,KAAKF,GAIpBD,IACR,CAAC,GAIJ,OAFIL,EAAkBS,QAAQC,QAAQC,KAAK,gEAAgEX,EAAkBY,KAAK,SAE3HX,CACX,CAOO,SAASY,EAAmBC,GAC1BA,WAEEA,EAAgBC,aAChBD,EAAgBE,OAClBF,EAAgBG,eAA0D,IAAzCH,EAAgBG,cAAcR,eACzDK,EAAgBG,cAE/B,CAiBO,SAASC,EAAwBnB,GACpC,MAAI,CAAC,YAAa,QAAS,WAAWQ,SAASR,EAASoB,YAC7CC,QAAQC,OAAOtB,GAGnBqB,QAAQE,QAAQvB,EAC3B,CAEO,SAASwB,EAAeC,GAC3B,IAAKA,EAAS,OAAO,EAGrB,MADwD,iBAAhCA,EAAQC,qBAAgF,mBAArCD,EAAQE,wBAEvF,CAEO,SAASC,EAAsBC,EAAqBC,GACvD,MAES,OAFDD,GAGOC,EACD,CACIC,wBAAwB,EACxBC,8BAA8B,GAIjC,EAEnB"}
@@ -1,2 +1,2 @@
1
- import r from"./core.js";async function e(e){const i=new r(e);return await i.initialize()}e.register=(...e)=>{r.register(...e)};export{e as AdyenCheckout};
1
+ import e from"./core.js";async function t(t){const r=new e(t);return await r.initialize()}t.register=(...t)=>{e.register(...t)},t.setBundleType=t=>{e.setBundleType(t)};export{t as AdyenCheckout};
2
2
  //# sourceMappingURL=AdyenCheckout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdyenCheckout.js","sources":["../../../src/core/AdyenCheckout.ts"],"sourcesContent":["import Checkout from './index';\nimport type { CoreConfiguration, ICore } from './types';\nimport type { IUIElement } from '../components/internal/UIElement/types';\n\nasync function AdyenCheckout(props: CoreConfiguration): Promise<Checkout> {\n const checkout = new Checkout(props);\n return await checkout.initialize();\n}\n\nAdyenCheckout.register = (...items: (new (checkout: ICore, props) => IUIElement)[]) => {\n Checkout.register(...items);\n};\n\nexport { AdyenCheckout };\n"],"names":["async","AdyenCheckout","props","checkout","Checkout","initialize","register","items"],"mappings":"yBAIAA,eAAeC,EAAcC,GACzB,MAAMC,EAAW,IAAIC,EAASF,GAC9B,aAAaC,EAASE,YAC1B,CAEAJ,EAAcK,SAAW,IAAIC,KACzBH,EAASE,YAAYC,EAAAA"}
1
+ {"version":3,"file":"AdyenCheckout.js","sources":["../../../src/core/AdyenCheckout.ts"],"sourcesContent":["import Core from './core';\nimport type { CoreConfiguration, ICore } from './types';\nimport type { IUIElement } from '../components/internal/UIElement/types';\n\nasync function AdyenCheckout(props: CoreConfiguration): Promise<Core> {\n const checkout = new Core(props);\n return await checkout.initialize();\n}\n\nAdyenCheckout.register = (...items: (new (checkout: ICore, props) => IUIElement)[]) => {\n Core.register(...items);\n};\n\n/**\n * Function used by the 'auto' package to insert its bundle type information in the Core.\n * We can't inject its bundle type when bundling with Rollup (as done with the other bundle types), since 'auto' uses ES-LEGACY bundle type under the hood.\n */\nAdyenCheckout.setBundleType = (type: string) => {\n Core.setBundleType(type);\n};\n\nexport { AdyenCheckout };\n"],"names":["async","AdyenCheckout","props","checkout","Core","initialize","register","items","setBundleType","type"],"mappings":"yBAIAA,eAAeC,EAAcC,GACzB,MAAMC,EAAW,IAAIC,EAAKF,GAC1B,aAAaC,EAASE,YAC1B,CAEAJ,EAAcK,SAAW,IAAIC,KACzBH,EAAKE,YAAYC,EAAAA,EAOrBN,EAAcO,cAAiBC,IAC3BL,EAAKI,cAAcC,EAAAA"}
@@ -1,2 +1,2 @@
1
- import t from"../Services/analytics/log-event.js";import e from"../Services/analytics/collect-id.js";import n from"./EventsQueue.js";import{ANALYTICS_EVENT_INFO as l,ANALYTICS_INFO_TIMER_INTERVAL as o,ANALYTICS_EVENT_LOG as a,ANALYTICS_EVENT_ERROR as c,ANALYTICS_PATH as s}from"./constants.js";import{debounce as i}from"../../utils/debounce.js";import{createAnalyticsObject as r}from"./utils.js";import{analyticsPreProcessor as m}from"./analyticsPreProcessor.js";let u=null,d=!1,y=null;const p=({loadingContext:p,locale:f,clientKey:h,analytics:v,amount:g,analyticsContext:A})=>{const b={enabled:!0,telemetry:!0,checkoutAttemptId:null,...v},{telemetry:j,enabled:x}=b;!0===j&&!0===x&&b.checkoutAttemptId&&(u=b.checkoutAttemptId);const C=t({loadingContext:p,locale:f}),k=e({analyticsContext:A,clientKey:h,locale:f,amount:g,analyticsPath:s}),E=n({analyticsContext:A,clientKey:h,analyticsPath:s}),I=()=>u?E.run(u):Promise.resolve(null),P={setUp:async t=>{const{enabled:e,payload:n,telemetry:l}=b;if(!0===e){if(!0===l&&!u)try{const e=await k({...t,...n&&{...n}});u=e}catch(t){console.debug("Fetching checkoutAttemptId failed."+(t?` Error=${t}`:""))}d||(C(t),d=!0)}},getCheckoutAttemptId:()=>u,getEventsQueue:()=>E,createAnalyticsEvent:({event:t,data:e})=>{((t,e)=>{const n=t===l?t:`${t}s`;E.add(`${n}`,e),t===l&&(clearTimeout(y),y=setTimeout(I,o)),t!==a&&t!==c||(clearTimeout(y),i(I)())})(t,r({event:t,...e}))},getEnabled:()=>b.enabled,sendAnalytics:null};return P.sendAnalytics=m(P),P};export{p as default};
1
+ import t from"../Services/analytics/log-event.js";import e from"../Services/analytics/collect-id.js";import n from"./EventsQueue.js";import{ANALYTICS_EVENT_INFO as l,ANALYTICS_INFO_TIMER_INTERVAL as o,ANALYTICS_EVENT_LOG as a,ANALYTICS_EVENT_ERROR as c,ANALYTICS_PATH as s}from"./constants.js";import{debounce as i}from"../../utils/debounce.js";import{createAnalyticsObject as r}from"./utils.js";import{analyticsPreProcessor as m}from"./analyticsPreProcessor.js";let u=null,d=!1,y=null;const p=({loadingContext:p,locale:f,clientKey:h,analytics:v,amount:b,analyticsContext:A,bundleType:g})=>{const j={enabled:!0,telemetry:!0,checkoutAttemptId:null,...v},{telemetry:x,enabled:C}=j;!0===x&&!0===C&&j.checkoutAttemptId&&(u=j.checkoutAttemptId);const k=t({loadingContext:p,locale:f}),E=e({analyticsContext:A,clientKey:h,locale:f,amount:b,analyticsPath:s,bundleType:g}),I=n({analyticsContext:A,clientKey:h,analyticsPath:s}),P=()=>u?I.run(u):Promise.resolve(null),T={setUp:async t=>{const{enabled:e,payload:n,telemetry:l}=j;if(!0===e){if(!0===l&&!u)try{const e=await E({...t,...n&&{...n}});u=e}catch(t){console.warn("Fetching checkoutAttemptId failed."+(t?` Error=${t}`:""))}d||(k(t),d=!0)}},getCheckoutAttemptId:()=>u,getEventsQueue:()=>I,createAnalyticsEvent:({event:t,data:e})=>{((t,e)=>{const n=t===l?t:`${t}s`;I.add(`${n}`,e),t===l&&(clearTimeout(y),y=setTimeout(P,o)),t!==a&&t!==c||(clearTimeout(y),i(P)())})(t,r({event:t,...e}))},getEnabled:()=>j.enabled,sendAnalytics:null};return T.sendAnalytics=m(T),T};export{p as default};
2
2
  //# sourceMappingURL=Analytics.js.map