@adyen/adyen-web 6.12.0 → 6.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/cjs/adyen.css +10 -5
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +759 -407
  6. package/dist/es/adyen.css +10 -5
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ApplePay/utils/payment-request.js +1 -1
  9. package/dist/es/components/ApplePay/utils/payment-request.js.map +1 -1
  10. package/dist/es/components/Card/Card.js +1 -1
  11. package/dist/es/components/Card/Card.js.map +1 -1
  12. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  13. package/dist/es/components/Card/components/CardInput/CardInput.js.map +1 -1
  14. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  15. package/dist/es/components/Card/components/Fastlane/FastlaneSignup.js +2 -0
  16. package/dist/es/components/Card/components/Fastlane/FastlaneSignup.js.map +1 -0
  17. package/dist/es/components/Card/components/Fastlane/InfoButton.js +2 -0
  18. package/dist/es/components/Card/components/Fastlane/InfoButton.js.map +1 -0
  19. package/dist/es/components/Card/components/Fastlane/InfoModal.js +2 -0
  20. package/dist/es/components/Card/components/Fastlane/InfoModal.js.map +1 -0
  21. package/dist/es/components/Card/components/Fastlane/USOnlyPhoneInput.js +2 -0
  22. package/dist/es/components/Card/components/Fastlane/USOnlyPhoneInput.js.map +1 -0
  23. package/dist/es/components/Card/components/Fastlane/utils/mobile-number-formatter.js +2 -0
  24. package/dist/es/components/Card/components/Fastlane/utils/mobile-number-formatter.js.map +1 -0
  25. package/dist/es/components/Card/components/Fastlane/utils/validate-configuration.js +2 -0
  26. package/dist/es/components/Card/components/Fastlane/utils/validate-configuration.js.map +1 -0
  27. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  28. package/dist/es/components/Dropin/Dropin.js +1 -1
  29. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  30. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  31. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  32. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  33. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  34. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js +1 -1
  35. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  36. package/dist/es/components/Dropin/elements/splitPaymentMethods.js +1 -1
  37. package/dist/es/components/Dropin/elements/splitPaymentMethods.js.map +1 -1
  38. package/dist/es/components/GooglePay/GooglePay.js +1 -1
  39. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  40. package/dist/es/components/PayPalFastlane/Fastlane.js +2 -0
  41. package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -0
  42. package/dist/es/components/PayPalFastlane/FastlaneSDK.js +2 -0
  43. package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -0
  44. package/dist/es/components/PayPalFastlane/components/FaslaneCardBrandIcon.js +2 -0
  45. package/dist/es/components/PayPalFastlane/components/FaslaneCardBrandIcon.js.map +1 -0
  46. package/dist/es/components/PayPalFastlane/components/FastlaneComponent.js +2 -0
  47. package/dist/es/components/PayPalFastlane/components/FastlaneComponent.js.map +1 -0
  48. package/dist/es/components/PayPalFastlane/initializeFastlane.js +2 -0
  49. package/dist/es/components/PayPalFastlane/initializeFastlane.js.map +1 -0
  50. package/dist/es/components/PayPalFastlane/services/request-fastlane-token.js +2 -0
  51. package/dist/es/components/PayPalFastlane/services/request-fastlane-token.js.map +1 -0
  52. package/dist/es/components/PayPalFastlane/utils/convert-locale.js +2 -0
  53. package/dist/es/components/PayPalFastlane/utils/convert-locale.js.map +1 -0
  54. package/dist/es/components/components-name-map.js +1 -1
  55. package/dist/es/components/components-name-map.js.map +1 -1
  56. package/dist/es/components/index.js +1 -1
  57. package/dist/es/components/internal/Button/Button.js +1 -1
  58. package/dist/es/components/internal/Button/Button.js.map +1 -1
  59. package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js +1 -1
  60. package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
  61. package/dist/es/components/internal/FormFields/Field/Field.js +1 -1
  62. package/dist/es/components/internal/FormFields/Field/Field.js.map +1 -1
  63. package/dist/es/components/internal/Link/Link.js +2 -0
  64. package/dist/es/components/internal/Link/Link.js.map +1 -0
  65. package/dist/es/components/internal/Modal/Modal.js +1 -1
  66. package/dist/es/components/internal/Modal/Modal.js.map +1 -1
  67. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  68. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  69. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  70. package/dist/es/components/internal/Toggle/Toggle.js +2 -0
  71. package/dist/es/components/internal/Toggle/Toggle.js.map +1 -0
  72. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  73. package/dist/es/components/tx-variants.js +1 -1
  74. package/dist/es/components/tx-variants.js.map +1 -1
  75. package/dist/es/core/Analytics/analyticsPreProcessor.js +1 -1
  76. package/dist/es/core/Analytics/analyticsPreProcessor.js.map +1 -1
  77. package/dist/es/core/Analytics/constants.js +1 -1
  78. package/dist/es/core/Analytics/constants.js.map +1 -1
  79. package/dist/es/core/Analytics/utils.js +1 -1
  80. package/dist/es/core/Analytics/utils.js.map +1 -1
  81. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  82. package/dist/es/core/core.js +1 -1
  83. package/dist/es/index.d.ts +759 -407
  84. package/dist/es/index.js +1 -1
  85. package/dist/es-legacy/adyen.css +10 -5
  86. package/dist/es-legacy/adyen.css.map +1 -1
  87. package/dist/es-legacy/components/ApplePay/utils/payment-request.js +1 -1
  88. package/dist/es-legacy/components/ApplePay/utils/payment-request.js.map +1 -1
  89. package/dist/es-legacy/components/Card/Card.js +1 -1
  90. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  91. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  92. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  93. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  94. package/dist/es-legacy/components/Card/components/Fastlane/FastlaneSignup.js +2 -0
  95. package/dist/es-legacy/components/Card/components/Fastlane/FastlaneSignup.js.map +1 -0
  96. package/dist/es-legacy/components/Card/components/Fastlane/InfoButton.js +2 -0
  97. package/dist/es-legacy/components/Card/components/Fastlane/InfoButton.js.map +1 -0
  98. package/dist/es-legacy/components/Card/components/Fastlane/InfoModal.js +2 -0
  99. package/dist/es-legacy/components/Card/components/Fastlane/InfoModal.js.map +1 -0
  100. package/dist/es-legacy/components/Card/components/Fastlane/USOnlyPhoneInput.js +2 -0
  101. package/dist/es-legacy/components/Card/components/Fastlane/USOnlyPhoneInput.js.map +1 -0
  102. package/dist/es-legacy/components/Card/components/Fastlane/utils/mobile-number-formatter.js +2 -0
  103. package/dist/es-legacy/components/Card/components/Fastlane/utils/mobile-number-formatter.js.map +1 -0
  104. package/dist/es-legacy/components/Card/components/Fastlane/utils/validate-configuration.js +2 -0
  105. package/dist/es-legacy/components/Card/components/Fastlane/utils/validate-configuration.js.map +1 -0
  106. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  107. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  108. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  109. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  110. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  111. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js +1 -1
  112. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodList.js.map +1 -1
  113. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js +1 -1
  114. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.js.map +1 -1
  115. package/dist/es-legacy/components/Dropin/elements/splitPaymentMethods.js +1 -1
  116. package/dist/es-legacy/components/Dropin/elements/splitPaymentMethods.js.map +1 -1
  117. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  118. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  119. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js +2 -0
  120. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -0
  121. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js +2 -0
  122. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -0
  123. package/dist/es-legacy/components/PayPalFastlane/components/FaslaneCardBrandIcon.js +2 -0
  124. package/dist/es-legacy/components/PayPalFastlane/components/FaslaneCardBrandIcon.js.map +1 -0
  125. package/dist/es-legacy/components/PayPalFastlane/components/FastlaneComponent.js +2 -0
  126. package/dist/es-legacy/components/PayPalFastlane/components/FastlaneComponent.js.map +1 -0
  127. package/dist/es-legacy/components/PayPalFastlane/initializeFastlane.js +2 -0
  128. package/dist/es-legacy/components/PayPalFastlane/initializeFastlane.js.map +1 -0
  129. package/dist/es-legacy/components/PayPalFastlane/services/request-fastlane-token.js +2 -0
  130. package/dist/es-legacy/components/PayPalFastlane/services/request-fastlane-token.js.map +1 -0
  131. package/dist/es-legacy/components/PayPalFastlane/utils/convert-locale.js +2 -0
  132. package/dist/es-legacy/components/PayPalFastlane/utils/convert-locale.js.map +1 -0
  133. package/dist/es-legacy/components/components-name-map.js +1 -1
  134. package/dist/es-legacy/components/components-name-map.js.map +1 -1
  135. package/dist/es-legacy/components/index.js +1 -1
  136. package/dist/es-legacy/components/internal/Button/Button.js +1 -1
  137. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  138. package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js +1 -1
  139. package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
  140. package/dist/es-legacy/components/internal/FormFields/Field/Field.js +1 -1
  141. package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
  142. package/dist/es-legacy/components/internal/Link/Link.js +2 -0
  143. package/dist/es-legacy/components/internal/Link/Link.js.map +1 -0
  144. package/dist/es-legacy/components/internal/Modal/Modal.js +1 -1
  145. package/dist/es-legacy/components/internal/Modal/Modal.js.map +1 -1
  146. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  147. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  148. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  149. package/dist/es-legacy/components/internal/Toggle/Toggle.js +2 -0
  150. package/dist/es-legacy/components/internal/Toggle/Toggle.js.map +1 -0
  151. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  152. package/dist/es-legacy/components/tx-variants.js +1 -1
  153. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  154. package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js +1 -1
  155. package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js.map +1 -1
  156. package/dist/es-legacy/core/Analytics/constants.js +1 -1
  157. package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
  158. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  159. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  160. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  161. package/dist/es-legacy/core/core.js +1 -1
  162. package/dist/es-legacy/index.js +1 -1
  163. package/package.json +14 -14
  164. package/styles/adyen.css +10 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"USOnlyPhoneInput.js","sources":["../../../../../../src/components/Card/components/Fastlane/USOnlyPhoneInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useRef } from 'preact/hooks';\nimport Field from '../../../internal/FormFields/Field';\nimport useForm from '../../../../utils/useForm';\nimport InputTelephone from '../../../internal/FormFields/InputTelephone';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport mobileNumberFormatter from './utils/mobile-number-formatter';\n\ninterface USOnlyPhoneInputStateData {\n mobileNumber?: string;\n}\n\ninterface USOnlyPhoneInputProps {\n onChange(mobileNumber: string): void;\n initialValue?: string;\n}\n\nconst USOnlyPhoneInput = ({ initialValue, onChange }: USOnlyPhoneInputProps) => {\n const { i18n } = useCoreContext();\n const formSchema = ['mobileNumber'];\n const { handleChangeFor, data } = useForm<USOnlyPhoneInputStateData>({\n schema: formSchema,\n defaultData: {\n mobileNumber: initialValue\n },\n formatters: {\n mobileNumber: mobileNumberFormatter\n }\n });\n const inputRef = useRef<HTMLInputElement>(null);\n\n const focusInput = useCallback(() => {\n inputRef.current?.focus();\n }, [inputRef.current]);\n\n useEffect(() => {\n onChange(data.mobileNumber?.replaceAll(' ', ''));\n }, [data.mobileNumber, onChange]);\n\n return (\n <Field name=\"mobile-number\" label={i18n.get('card.fastlane.mobileInputLabel')} staticValue=\"+1\" onInputContainerClick={focusInput}>\n <InputTelephone\n name={'mobile-number'}\n autocorrect={'off'}\n spellcheck={false}\n maxlength={12}\n value={data.mobileNumber}\n onInput={handleChangeFor('mobileNumber', 'input')}\n onBlur={handleChangeFor('mobileNumber', 'blur')}\n setRef={inputRef}\n />\n </Field>\n );\n};\n\nexport default USOnlyPhoneInput;\n"],"names":["USOnlyPhoneInput","initialValue","onChange","i18n","useCoreContext","handleChangeFor","data","useForm","schema","defaultData","mobileNumber","formatters","mobileNumberFormatter","inputRef","useRef","focusInput","useCallback","current","focus","useEffect","replaceAll","h","Field","name","label","get","staticValue","onInputContainerClick","InputTelephone","autocorrect","spellcheck","maxlength","value","onInput","onBlur","setRef"],"mappings":"6dAiBA,MAAMA,EAAmB,EAAGC,eAAcC,eACtC,MAAMC,KAAEA,GAASC,KAEXC,gBAAEA,EAAeC,KAAEA,GAASC,EAAmC,CACjEC,OAFe,CAAC,gBAGhBC,YAAa,CACTC,aAAcT,GAElBU,WAAY,CACRD,aAAcE,KAGhBC,EAAWC,EAAyB,MAEpCC,EAAaC,GAAY,KAC3BH,EAASI,SAASC,OAAAA,GACnB,CAACL,EAASI,UAMb,OAJAE,GAAU,KACNjB,EAASI,EAAKI,cAAcU,WAAW,IAAK,IAAA,GAC7C,CAACd,EAAKI,aAAcR,IAGnBmB,EAACC,EAAAA,CAAMC,KAAK,gBAAgBC,MAAOrB,EAAKsB,IAAI,kCAAmCC,YAAY,KAAKC,sBAAuBZ,GACnHM,EAACO,EAAAA,CACGL,KAAM,gBACNM,YAAa,MACbC,YAAY,EACZC,UAAW,GACXC,MAAO1B,EAAKI,aACZuB,QAAS5B,EAAgB,eAAgB,SACzC6B,OAAQ7B,EAAgB,eAAgB,QACxC8B,OAAQtB"}
@@ -0,0 +1,2 @@
1
+ function e(e){if(!e)return"";let l=e;return l=l.replace(/\D/g,""),l.length>3&&l.length<=6?l=l.slice(0,3)+" "+l.slice(3):l.length>6&&(l=l.slice(0,3)+" "+l.slice(3,6)+" "+l.slice(6,10)),l}export{e as default};
2
+ //# sourceMappingURL=mobile-number-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-number-formatter.js","sources":["../../../../../../../src/components/Card/components/Fastlane/utils/mobile-number-formatter.ts"],"sourcesContent":["function mobileNumberFormatter(value: string): string {\n if (!value) {\n return '';\n }\n\n let input = value;\n // Allow only numbers\n input = input.replace(/\\D/g, '');\n\n // Add spaces at the appropriate positions\n if (input.length > 3 && input.length <= 6) {\n input = input.slice(0, 3) + ' ' + input.slice(3);\n } else if (input.length > 6) {\n input = input.slice(0, 3) + ' ' + input.slice(3, 6) + ' ' + input.slice(6, 10);\n }\n return input;\n}\n\nexport default mobileNumberFormatter;\n"],"names":["mobileNumberFormatter","value","input","replace","length","slice"],"mappings":"AAAA,SAASA,EAAsBC,GAC3B,IAAKA,EACD,MAAO,GAGX,IAAIC,EAAQD,EAUZ,OARAC,EAAQA,EAAMC,QAAQ,MAAO,IAGzBD,EAAME,OAAS,GAAKF,EAAME,QAAU,EACpCF,EAAQA,EAAMG,MAAM,EAAG,GAAK,IAAMH,EAAMG,MAAM,GACvCH,EAAME,OAAS,IACtBF,EAAQA,EAAMG,MAAM,EAAG,GAAK,IAAMH,EAAMG,MAAM,EAAG,GAAK,IAAMH,EAAMG,MAAM,EAAG,KAExEH,CACX"}
@@ -0,0 +1,2 @@
1
+ import{isValidHttpUrl as n}from"../../../../../utils/isValidURL.js";const o=["showConsent","defaultToggleState","termsAndConditionsLink","privacyPolicyLink","termsAndConditionsVersion","fastlaneSessionId"],e=e=>{if(!e)return!1;Object.keys(e).forEach((n=>!o.includes(n)&&console.warn(`Fastlane: '${n}' is not valid Fastlane config property`)));const{showConsent:t,defaultToggleState:i,termsAndConditionsLink:s,privacyPolicyLink:a,termsAndConditionsVersion:l}=e;let r=!1;return r=t?n(a)&&n(s)&&"boolean"==typeof t&&"boolean"==typeof i&&!!l:"boolean"==typeof t,r||console.warn("Fastlane: Component configuration is not valid. Fastlane will not be displayed"),r};export{e as isConfigurationValid};
2
+ //# sourceMappingURL=validate-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-configuration.js","sources":["../../../../../../../src/components/Card/components/Fastlane/utils/validate-configuration.ts"],"sourcesContent":["import { isValidHttpUrl } from '../../../../../utils/isValidURL';\nimport type { FastlaneSignupConfiguration } from '../../../../PayPalFastlane/types';\n\ntype ConfigurationKey = keyof FastlaneSignupConfiguration;\n\nconst VALID_KEYS: ConfigurationKey[] = [\n 'showConsent',\n 'defaultToggleState',\n 'termsAndConditionsLink',\n 'privacyPolicyLink',\n 'termsAndConditionsVersion',\n 'fastlaneSessionId'\n];\n\n/**\n * Verifies that Fastlane configuration for Card component is valid\n * - If the consent can be shown, then validate that all required fields are valid\n * - If the consent should not be shown, then validate the showConsent is valid boolean\n *\n * @param config\n */\nconst isConfigurationValid = (config: FastlaneSignupConfiguration): boolean => {\n if (!config) {\n return false;\n }\n\n Object.keys(config).forEach(\n (key: keyof FastlaneSignupConfiguration) =>\n !VALID_KEYS.includes(key) && console.warn(`Fastlane: '${key}' is not valid Fastlane config property`)\n );\n\n const { showConsent, defaultToggleState, termsAndConditionsLink, privacyPolicyLink, termsAndConditionsVersion } = config;\n\n let isValid: boolean = false;\n\n if (showConsent) {\n isValid =\n isValidHttpUrl(privacyPolicyLink) &&\n isValidHttpUrl(termsAndConditionsLink) &&\n typeof showConsent === 'boolean' &&\n typeof defaultToggleState === 'boolean' &&\n !!termsAndConditionsVersion;\n } else {\n isValid = typeof showConsent === 'boolean';\n }\n\n if (!isValid) {\n console.warn('Fastlane: Component configuration is not valid. Fastlane will not be displayed');\n }\n\n return isValid;\n};\n\nexport { isConfigurationValid };\n"],"names":["VALID_KEYS","isConfigurationValid","config","Object","keys","forEach","key","includes","console","warn","showConsent","defaultToggleState","termsAndConditionsLink","privacyPolicyLink","termsAndConditionsVersion","isValid","isValidHttpUrl"],"mappings":"oEAKA,MAAMA,EAAiC,CACnC,cACA,qBACA,yBACA,oBACA,4BACA,qBAUEC,EAAwBC,IAC1B,IAAKA,EACD,OAAO,EAGXC,OAAOC,KAAKF,GAAQG,SACfC,IACIN,EAAWO,SAASD,IAAQE,QAAQC,KAAK,cAAcH,8CAGhE,MAAMI,YAAEA,EAAWC,mBAAEA,EAAkBC,uBAAEA,EAAsBC,kBAAEA,EAAiBC,0BAAEA,GAA8BZ,EAElH,IAAIa,GAAmB,EAiBvB,OAdIA,EADAL,EAEIM,EAAeH,IACfG,EAAeJ,IACQ,kBAAhBF,GACuB,kBAAvBC,KACLG,EAE2B,kBAAhBJ,EAGhBK,GACDP,QAAQC,KAAK,kFAGVM,CAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomCardInput.js","sources":["../../../../../src/components/CustomCard/CustomCardInput/CustomCardInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef, useMemo } from 'preact/hooks';\nimport Language from '../../../language/Language';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport { SFPState } from '../../internal/SecuredFields/SFP/types';\nimport { BinLookupResponse, CardBrandsConfiguration } from '../../Card/types';\nimport SFExtensions from '../../internal/SecuredFields/binLookup/extensions';\nimport { StylesObject } from '../../internal/SecuredFields/lib/types';\nimport { Resources } from '../../../core/Context/Resources';\nimport { Placeholders, SFError } from '../../Card/components/CardInput/types';\nimport { ValidationError } from '../types';\n\ninterface SecuredFieldsProps {\n autoFocus?: boolean;\n brand?: string;\n brands?: string[];\n brandsConfiguration?: CardBrandsConfiguration;\n clientKey?: string;\n countryCode?: string;\n forceCompat?: boolean;\n i18n: Language;\n implementationType?: string;\n keypadFix?: boolean;\n loadingContext?: string;\n legacyInputMode?: boolean;\n minimumExpiryDate?: string;\n onAdditionalSFConfig?: () => {};\n onAdditionalSFRemoved?: () => {};\n onAllValid?: () => {};\n onAutoComplete?: () => {};\n onBinValue?: () => {};\n onBrand?: () => {};\n onConfigSuccess?: () => {};\n onChange: (data) => void;\n handleKeyPress?: (obj: KeyboardEvent) => void;\n onError?: () => {};\n onFieldValid?: () => {};\n onFocus?: (e) => {};\n onLoad?: () => {};\n placeholders?: Placeholders;\n rootNode: HTMLElement;\n resources: Resources;\n showWarnings?: boolean;\n styles?: StylesObject;\n trimTrailingSeparator?: boolean;\n type: string;\n maskSecurityCode?: boolean;\n}\n\nconst defaultProps = {\n onChange: () => {},\n onError: () => {},\n onValidationError: () => {}\n};\n\nfunction CustomCardInput(props: SecuredFieldsProps) {\n const sfp = useRef(null);\n\n const [errors, setErrors] = useState({});\n const [valid, setValid] = useState({});\n const [data, setData] = useState({});\n\n const [isSfpValid, setIsSfpValid] = useState(false);\n\n const [issuingCountryCode, setIssuingCountryCode] = useState(null);\n\n const [dualBrandSelectElements, setDualBrandSelectElements] = useState([]);\n const [selectedBrandValue, setSelectedBrandValue] = useState('');\n\n const handleSecuredFieldsChange = (sfState: SFPState): void => {\n setData({ ...data, ...sfState.data });\n setErrors({ ...errors, ...sfState.errors });\n setValid({ ...valid, ...sfState.valid });\n\n setIsSfpValid(sfState.isSfpValid);\n };\n\n // Farm the handlers for binLookup related functionality out to another 'extensions' file\n const extensions = useMemo(\n () =>\n SFExtensions(\n props,\n { sfp },\n { dualBrandSelectElements, setDualBrandSelectElements, setSelectedBrandValue, issuingCountryCode, setIssuingCountryCode }\n ),\n [dualBrandSelectElements, issuingCountryCode]\n );\n\n /**\n * EXPECTED METHODS ON SecuredFields.this\n */\n this.processBinLookupResponse = (binLookupResponse: BinLookupResponse, isReset: boolean) => {\n extensions.processBinLookup(binLookupResponse, isReset);\n };\n\n this.dualBrandingChangeHandler = extensions.handleDualBrandSelection;\n\n /**\n * EFFECT HOOKS\n */\n useEffect(() => {\n // componentDidMount\n this.setFocusOn = sfp.current.setFocusOn;\n this.updateStyles = sfp.current.updateStyles;\n this.showValidation = sfp.current.showValidation;\n this.handleUnsupportedCard = sfp.current.handleUnsupportedCard;\n\n // componentWillUnmount\n return () => {\n sfp.current.destroy();\n };\n }, []);\n\n /**\n * Main 'componentDidUpdate' handler\n */\n useEffect(() => {\n const sfStateErrorsObj = sfp.current.mapErrorsToValidationRuleResult();\n\n const mappedErrors = { ...errors, ...sfStateErrorsObj }; // maps sfErrors\n\n props.onChange({\n data,\n valid,\n errors: mappedErrors,\n isValid: isSfpValid,\n selectedBrandValue\n });\n\n // Create an array of Validation error objects and send to callback\n if (Object.keys(mappedErrors).length) {\n const validationErrors: ValidationError[] = Object.entries(mappedErrors).map(([fieldType, error]) => {\n const valErr: ValidationError = {\n fieldType,\n ...(error ? (error as SFError) : { error: '', rootNode: this.props.rootNode })\n };\n return valErr;\n });\n this.props.onValidationError?.(validationErrors);\n }\n }, [data, valid, errors, selectedBrandValue]);\n\n /**\n * RENDER\n */\n // prettier-ignore\n return (\n <SecuredFieldsProvider\n ref={sfp}\n {...extractPropsForSFP(props)}\n type={props.brand}\n onChange={handleSecuredFieldsChange}\n render={() => null}\n />\n );\n}\n\nCustomCardInput.defaultProps = defaultProps;\n\nexport default CustomCardInput;\n\nconst extractPropsForSFP = (props: SecuredFieldsProps) => {\n return {\n autoFocus: props.autoFocus,\n brands: props.brands,\n brandsConfiguration: props.brandsConfiguration,\n clientKey: props.clientKey,\n forceCompat: props.forceCompat,\n // countryCode: props.countryCode, // only used for korean cards when koreanAuthenticationRequired is true\n i18n: props.i18n,\n implementationType: props.implementationType,\n keypadFix: props.keypadFix,\n legacyInputMode: props.legacyInputMode,\n loadingContext: props.loadingContext,\n minimumExpiryDate: props.minimumExpiryDate,\n onAdditionalSFConfig: props.onAdditionalSFConfig,\n onAdditionalSFRemoved: props.onAdditionalSFRemoved,\n onAllValid: props.onAllValid,\n onAutoComplete: props.onAutoComplete,\n onBinValue: props.onBinValue,\n onBrand: props.onBrand,\n // onChange // set directly\n onConfigSuccess: props.onConfigSuccess,\n handleKeyPress: props.handleKeyPress,\n onError: props.onError,\n onFieldValid: props.onFieldValid,\n onFocus: props.onFocus,\n onLoad: props.onLoad,\n // render // set directly\n rootNode: props.rootNode,\n showWarnings: props.showWarnings,\n styles: props.styles,\n trimTrailingSeparator: props.trimTrailingSeparator,\n resources: props.resources,\n maskSecurityCode: props.maskSecurityCode,\n placeholders: props.placeholders\n };\n};\n"],"names":["CustomCardInput","props","sfp","useRef","errors","setErrors","useState","valid","setValid","data","setData","isSfpValid","setIsSfpValid","issuingCountryCode","setIssuingCountryCode","dualBrandSelectElements","setDualBrandSelectElements","selectedBrandValue","setSelectedBrandValue","extensions","useMemo","SFExtensions","this","processBinLookupResponse","binLookupResponse","isReset","processBinLookup","dualBrandingChangeHandler","handleDualBrandSelection","useEffect","setFocusOn","current","updateStyles","showValidation","handleUnsupportedCard","destroy","sfStateErrorsObj","mapErrorsToValidationRuleResult","mappedErrors","onChange","isValid","Object","keys","length","validationErrors","entries","map","fieldType","error","rootNode","onValidationError","h","SecuredFieldsProvider","ref","extractPropsForSFP","type","brand","sfState","render","defaultProps","onError","autoFocus","brands","brandsConfiguration","clientKey","forceCompat","i18n","implementationType","keypadFix","legacyInputMode","loadingContext","minimumExpiryDate","onAdditionalSFConfig","onAdditionalSFRemoved","onAllValid","onAutoComplete","onBinValue","onBrand","onConfigSuccess","handleKeyPress","onFieldValid","onFocus","onLoad","showWarnings","styles","trimTrailingSeparator","resources","maskSecurityCode","placeholders"],"mappings":"qUAuDA,SAASA,EAAgBC,GACrB,MAAMC,EAAMC,EAAO,OAEZC,EAAQC,GAAaC,EAAS,CAAA,IAC9BC,EAAOC,GAAYF,EAAS,CAAA,IAC5BG,EAAMC,GAAWJ,EAAS,CAAA,IAE1BK,EAAYC,GAAiBN,GAAS,IAEtCO,EAAoBC,GAAyBR,EAAS,OAEtDS,EAAyBC,GAA8BV,EAAS,KAChEW,EAAoBC,GAAyBZ,EAAS,IAWvDa,EAAaC,GACf,IACIC,EACIpB,EACA,CAAEC,OACF,CAAEa,0BAAyBC,6BAA4BE,wBAAuBL,qBAAoBC,2BAE1G,CAACC,EAAyBF,IA6D9B,OAvDAS,KAAKC,yBAA2B,CAACC,EAAsCC,KACnEN,EAAWO,iBAAiBF,EAAmBC,EAAAA,EAGnDH,KAAKK,0BAA4BR,EAAWS,yBAK5CC,GAAU,KAENP,KAAKQ,WAAa5B,EAAI6B,QAAQD,WAC9BR,KAAKU,aAAe9B,EAAI6B,QAAQC,aAChCV,KAAKW,eAAiB/B,EAAI6B,QAAQE,eAClCX,KAAKY,sBAAwBhC,EAAI6B,QAAQG,sBAGlC,KACHhC,EAAI6B,QAAQI,SAAO,IAExB,IAKHN,GAAU,KACN,MAAMO,EAAmBlC,EAAI6B,QAAQM,kCAE/BC,EAAe,IAAKlC,KAAWgC,GAWrC,GATAnC,EAAMsC,SAAS,CACX9B,OACAF,QACAH,OAAQkC,EACRE,QAAS7B,EACTM,uBAIAwB,OAAOC,KAAKJ,GAAcK,OAAQ,CAClC,MAAMC,EAAsCH,OAAOI,QAAQP,GAAcQ,KAAI,EAAEC,EAAWC,MACtD,CAC5BD,eACIC,GAA6B,CAAEA,MAAO,GAAIC,SAAU3B,KAAKrB,MAAMgD,cAI3E3B,KAAKrB,MAAMiD,oBAAoBN,EACnC,IACD,CAACnC,EAAMF,EAAOH,EAAQa,IAOrBkC,EAACC,EAAAA,CACGC,IAAKnD,KACDoD,EAAmBrD,GACvBsD,KAAMtD,EAAMuD,MACZjB,SAlF2BkB,IAC/B/C,EAAQ,IAAKD,KAASgD,EAAQhD,OAC9BJ,EAAU,IAAKD,KAAWqD,EAAQrD,SAClCI,EAAS,IAAKD,KAAUkD,EAAQlD,QAEhCK,EAAc6C,EAAQ9C,WAAU,EA8E5B+C,OAAQ,IAAM,MAG1B,CAEA1D,EAAgB2D,aA5GK,CACjBpB,SAAU,OACVqB,QAAS,OACTV,kBAAmB,QA6GvB,MAAMI,EAAsBrD,IACjB,CACH4D,UAAW5D,EAAM4D,UACjBC,OAAQ7D,EAAM6D,OACdC,oBAAqB9D,EAAM8D,oBAC3BC,UAAW/D,EAAM+D,UACjBC,YAAahE,EAAMgE,YAEnBC,KAAMjE,EAAMiE,KACZC,mBAAoBlE,EAAMkE,mBAC1BC,UAAWnE,EAAMmE,UACjBC,gBAAiBpE,EAAMoE,gBACvBC,eAAgBrE,EAAMqE,eACtBC,kBAAmBtE,EAAMsE,kBACzBC,qBAAsBvE,EAAMuE,qBAC5BC,sBAAuBxE,EAAMwE,sBAC7BC,WAAYzE,EAAMyE,WAClBC,eAAgB1E,EAAM0E,eACtBC,WAAY3E,EAAM2E,WAClBC,QAAS5E,EAAM4E,QAEfC,gBAAiB7E,EAAM6E,gBACvBC,eAAgB9E,EAAM8E,eACtBnB,QAAS3D,EAAM2D,QACfoB,aAAc/E,EAAM+E,aACpBC,QAAShF,EAAMgF,QACfC,OAAQjF,EAAMiF,OAEdjC,SAAUhD,EAAMgD,SAChBkC,aAAclF,EAAMkF,aACpBC,OAAQnF,EAAMmF,OACdC,sBAAuBpF,EAAMoF,sBAC7BC,UAAWrF,EAAMqF,UACjBC,iBAAkBtF,EAAMsF,iBACxBC,aAAcvF,EAAMuF"}
1
+ {"version":3,"file":"CustomCardInput.js","sources":["../../../../../src/components/CustomCard/CustomCardInput/CustomCardInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef, useMemo } from 'preact/hooks';\nimport Language from '../../../language/Language';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport { SFPState } from '../../internal/SecuredFields/SFP/types';\nimport { BinLookupResponse, CardBrandsConfiguration, CardPlaceholders } from '../../Card/types';\nimport SFExtensions from '../../internal/SecuredFields/binLookup/extensions';\nimport { StylesObject } from '../../internal/SecuredFields/lib/types';\nimport { Resources } from '../../../core/Context/Resources';\nimport { SFError } from '../../Card/components/CardInput/types';\nimport { ValidationError } from '../types';\n\ninterface SecuredFieldsProps {\n autoFocus?: boolean;\n brand?: string;\n brands?: string[];\n brandsConfiguration?: CardBrandsConfiguration;\n clientKey?: string;\n countryCode?: string;\n forceCompat?: boolean;\n i18n: Language;\n implementationType?: string;\n keypadFix?: boolean;\n loadingContext?: string;\n legacyInputMode?: boolean;\n minimumExpiryDate?: string;\n onAdditionalSFConfig?: () => {};\n onAdditionalSFRemoved?: () => {};\n onAllValid?: () => {};\n onAutoComplete?: () => {};\n onBinValue?: () => {};\n onBrand?: () => {};\n onConfigSuccess?: () => {};\n onChange: (data) => void;\n handleKeyPress?: (obj: KeyboardEvent) => void;\n onError?: () => {};\n onFieldValid?: () => {};\n onFocus?: (e) => {};\n onLoad?: () => {};\n placeholders?: CardPlaceholders;\n rootNode: HTMLElement;\n resources: Resources;\n showWarnings?: boolean;\n styles?: StylesObject;\n trimTrailingSeparator?: boolean;\n type: string;\n maskSecurityCode?: boolean;\n}\n\nconst defaultProps = {\n onChange: () => {},\n onError: () => {},\n onValidationError: () => {}\n};\n\nfunction CustomCardInput(props: SecuredFieldsProps) {\n const sfp = useRef(null);\n\n const [errors, setErrors] = useState({});\n const [valid, setValid] = useState({});\n const [data, setData] = useState({});\n\n const [isSfpValid, setIsSfpValid] = useState(false);\n\n const [issuingCountryCode, setIssuingCountryCode] = useState(null);\n\n const [dualBrandSelectElements, setDualBrandSelectElements] = useState([]);\n const [selectedBrandValue, setSelectedBrandValue] = useState('');\n\n const handleSecuredFieldsChange = (sfState: SFPState): void => {\n setData({ ...data, ...sfState.data });\n setErrors({ ...errors, ...sfState.errors });\n setValid({ ...valid, ...sfState.valid });\n\n setIsSfpValid(sfState.isSfpValid);\n };\n\n // Farm the handlers for binLookup related functionality out to another 'extensions' file\n const extensions = useMemo(\n () =>\n SFExtensions(\n props,\n { sfp },\n { dualBrandSelectElements, setDualBrandSelectElements, setSelectedBrandValue, issuingCountryCode, setIssuingCountryCode }\n ),\n [dualBrandSelectElements, issuingCountryCode]\n );\n\n /**\n * EXPECTED METHODS ON SecuredFields.this\n */\n this.processBinLookupResponse = (binLookupResponse: BinLookupResponse, isReset: boolean) => {\n extensions.processBinLookup(binLookupResponse, isReset);\n };\n\n this.dualBrandingChangeHandler = extensions.handleDualBrandSelection;\n\n /**\n * EFFECT HOOKS\n */\n useEffect(() => {\n // componentDidMount\n this.setFocusOn = sfp.current.setFocusOn;\n this.updateStyles = sfp.current.updateStyles;\n this.showValidation = sfp.current.showValidation;\n this.handleUnsupportedCard = sfp.current.handleUnsupportedCard;\n\n // componentWillUnmount\n return () => {\n sfp.current.destroy();\n };\n }, []);\n\n /**\n * Main 'componentDidUpdate' handler\n */\n useEffect(() => {\n const sfStateErrorsObj = sfp.current.mapErrorsToValidationRuleResult();\n\n const mappedErrors = { ...errors, ...sfStateErrorsObj }; // maps sfErrors\n\n props.onChange({\n data,\n valid,\n errors: mappedErrors,\n isValid: isSfpValid,\n selectedBrandValue\n });\n\n // Create an array of Validation error objects and send to callback\n if (Object.keys(mappedErrors).length) {\n const validationErrors: ValidationError[] = Object.entries(mappedErrors).map(([fieldType, error]) => {\n const valErr: ValidationError = {\n fieldType,\n ...(error ? (error as SFError) : { error: '', rootNode: this.props.rootNode })\n };\n return valErr;\n });\n this.props.onValidationError?.(validationErrors);\n }\n }, [data, valid, errors, selectedBrandValue]);\n\n /**\n * RENDER\n */\n // prettier-ignore\n return (\n <SecuredFieldsProvider\n ref={sfp}\n {...extractPropsForSFP(props)}\n type={props.brand}\n onChange={handleSecuredFieldsChange}\n render={() => null}\n />\n );\n}\n\nCustomCardInput.defaultProps = defaultProps;\n\nexport default CustomCardInput;\n\nconst extractPropsForSFP = (props: SecuredFieldsProps) => {\n return {\n autoFocus: props.autoFocus,\n brands: props.brands,\n brandsConfiguration: props.brandsConfiguration,\n clientKey: props.clientKey,\n forceCompat: props.forceCompat,\n // countryCode: props.countryCode, // only used for korean cards when koreanAuthenticationRequired is true\n i18n: props.i18n,\n implementationType: props.implementationType,\n keypadFix: props.keypadFix,\n legacyInputMode: props.legacyInputMode,\n loadingContext: props.loadingContext,\n minimumExpiryDate: props.minimumExpiryDate,\n onAdditionalSFConfig: props.onAdditionalSFConfig,\n onAdditionalSFRemoved: props.onAdditionalSFRemoved,\n onAllValid: props.onAllValid,\n onAutoComplete: props.onAutoComplete,\n onBinValue: props.onBinValue,\n onBrand: props.onBrand,\n // onChange // set directly\n onConfigSuccess: props.onConfigSuccess,\n handleKeyPress: props.handleKeyPress,\n onError: props.onError,\n onFieldValid: props.onFieldValid,\n onFocus: props.onFocus,\n onLoad: props.onLoad,\n // render // set directly\n rootNode: props.rootNode,\n showWarnings: props.showWarnings,\n styles: props.styles,\n trimTrailingSeparator: props.trimTrailingSeparator,\n resources: props.resources,\n maskSecurityCode: props.maskSecurityCode,\n placeholders: props.placeholders\n };\n};\n"],"names":["CustomCardInput","props","sfp","useRef","errors","setErrors","useState","valid","setValid","data","setData","isSfpValid","setIsSfpValid","issuingCountryCode","setIssuingCountryCode","dualBrandSelectElements","setDualBrandSelectElements","selectedBrandValue","setSelectedBrandValue","extensions","useMemo","SFExtensions","this","processBinLookupResponse","binLookupResponse","isReset","processBinLookup","dualBrandingChangeHandler","handleDualBrandSelection","useEffect","setFocusOn","current","updateStyles","showValidation","handleUnsupportedCard","destroy","sfStateErrorsObj","mapErrorsToValidationRuleResult","mappedErrors","onChange","isValid","Object","keys","length","validationErrors","entries","map","fieldType","error","rootNode","onValidationError","h","SecuredFieldsProvider","ref","extractPropsForSFP","type","brand","sfState","render","defaultProps","onError","autoFocus","brands","brandsConfiguration","clientKey","forceCompat","i18n","implementationType","keypadFix","legacyInputMode","loadingContext","minimumExpiryDate","onAdditionalSFConfig","onAdditionalSFRemoved","onAllValid","onAutoComplete","onBinValue","onBrand","onConfigSuccess","handleKeyPress","onFieldValid","onFocus","onLoad","showWarnings","styles","trimTrailingSeparator","resources","maskSecurityCode","placeholders"],"mappings":"qUAuDA,SAASA,EAAgBC,GACrB,MAAMC,EAAMC,EAAO,OAEZC,EAAQC,GAAaC,EAAS,CAAA,IAC9BC,EAAOC,GAAYF,EAAS,CAAA,IAC5BG,EAAMC,GAAWJ,EAAS,CAAA,IAE1BK,EAAYC,GAAiBN,GAAS,IAEtCO,EAAoBC,GAAyBR,EAAS,OAEtDS,EAAyBC,GAA8BV,EAAS,KAChEW,EAAoBC,GAAyBZ,EAAS,IAWvDa,EAAaC,GACf,IACIC,EACIpB,EACA,CAAEC,OACF,CAAEa,0BAAyBC,6BAA4BE,wBAAuBL,qBAAoBC,2BAE1G,CAACC,EAAyBF,IA6D9B,OAvDAS,KAAKC,yBAA2B,CAACC,EAAsCC,KACnEN,EAAWO,iBAAiBF,EAAmBC,EAAAA,EAGnDH,KAAKK,0BAA4BR,EAAWS,yBAK5CC,GAAU,KAENP,KAAKQ,WAAa5B,EAAI6B,QAAQD,WAC9BR,KAAKU,aAAe9B,EAAI6B,QAAQC,aAChCV,KAAKW,eAAiB/B,EAAI6B,QAAQE,eAClCX,KAAKY,sBAAwBhC,EAAI6B,QAAQG,sBAGlC,KACHhC,EAAI6B,QAAQI,SAAO,IAExB,IAKHN,GAAU,KACN,MAAMO,EAAmBlC,EAAI6B,QAAQM,kCAE/BC,EAAe,IAAKlC,KAAWgC,GAWrC,GATAnC,EAAMsC,SAAS,CACX9B,OACAF,QACAH,OAAQkC,EACRE,QAAS7B,EACTM,uBAIAwB,OAAOC,KAAKJ,GAAcK,OAAQ,CAClC,MAAMC,EAAsCH,OAAOI,QAAQP,GAAcQ,KAAI,EAAEC,EAAWC,MACtD,CAC5BD,eACIC,GAA6B,CAAEA,MAAO,GAAIC,SAAU3B,KAAKrB,MAAMgD,cAI3E3B,KAAKrB,MAAMiD,oBAAoBN,EACnC,IACD,CAACnC,EAAMF,EAAOH,EAAQa,IAOrBkC,EAACC,EAAAA,CACGC,IAAKnD,KACDoD,EAAmBrD,GACvBsD,KAAMtD,EAAMuD,MACZjB,SAlF2BkB,IAC/B/C,EAAQ,IAAKD,KAASgD,EAAQhD,OAC9BJ,EAAU,IAAKD,KAAWqD,EAAQrD,SAClCI,EAAS,IAAKD,KAAUkD,EAAQlD,QAEhCK,EAAc6C,EAAQ9C,WAAU,EA8E5B+C,OAAQ,IAAM,MAG1B,CAEA1D,EAAgB2D,aA5GK,CACjBpB,SAAU,OACVqB,QAAS,OACTV,kBAAmB,QA6GvB,MAAMI,EAAsBrD,IACjB,CACH4D,UAAW5D,EAAM4D,UACjBC,OAAQ7D,EAAM6D,OACdC,oBAAqB9D,EAAM8D,oBAC3BC,UAAW/D,EAAM+D,UACjBC,YAAahE,EAAMgE,YAEnBC,KAAMjE,EAAMiE,KACZC,mBAAoBlE,EAAMkE,mBAC1BC,UAAWnE,EAAMmE,UACjBC,gBAAiBpE,EAAMoE,gBACvBC,eAAgBrE,EAAMqE,eACtBC,kBAAmBtE,EAAMsE,kBACzBC,qBAAsBvE,EAAMuE,qBAC5BC,sBAAuBxE,EAAMwE,sBAC7BC,WAAYzE,EAAMyE,WAClBC,eAAgB1E,EAAM0E,eACtBC,WAAY3E,EAAM2E,WAClBC,QAAS5E,EAAM4E,QAEfC,gBAAiB7E,EAAM6E,gBACvBC,eAAgB9E,EAAM8E,eACtBnB,QAAS3D,EAAM2D,QACfoB,aAAc/E,EAAM+E,aACpBC,QAAShF,EAAMgF,QACfC,OAAQjF,EAAMiF,OAEdjC,SAAUhD,EAAMgD,SAChBkC,aAAclF,EAAMkF,aACpBC,OAAQnF,EAAMmF,OACdC,sBAAuBpF,EAAMoF,sBAC7BC,UAAWrF,EAAMqF,UACjBC,iBAAkBtF,EAAMsF,iBACxBC,aAAcvF,EAAMuF"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./defaultProps.js";import{DropinComponent as i}from"./components/DropinComponent.js";import{CoreProvider as n}from"../../core/Context/CoreProvider.js";import{getCommonProps as s}from"./components/utils.js";import r from"./elements/createElements.js";import a from"./elements/createStoredElements.js";import h from"./elements/createInstantPaymentElements.js";import{hasOwnProperty as d}from"../../utils/hasOwnProperty.js";import m from"../../core/Errors/SRPanelProvider.js";import p from"./elements/splitPaymentMethods.js";import{TxVariants as l}from"../tx-variants.js";function c(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}const y=["paywithgoogle","googlepay","applepay"];class f extends e{storeElementRefOnCore(){this.core.storeElementReference(this)}formatProps(t){return{type:"dropin",...super.formatProps(t),instantPaymentTypes:Array.from(new Set(t.instantPaymentTypes)).filter((t=>y.includes(t)))}}get isValid(){return!!this.dropinRef&&!!this.dropinRef.state.activePaymentMethod&&!!this.dropinRef.state.activePaymentMethod.isValid}showValidation(){return this.dropinRef.state.activePaymentMethod&&this.dropinRef.state.activePaymentMethod.showValidation(),this}setStatus(t,e={}){return this.dropinRef?.setStatus(t,e),this}get activePaymentMethod(){return this.dropinRef?.state||this.dropinRef?.state.activePaymentMethod?this.dropinRef.state.activePaymentMethod:null}get data(){return this.activePaymentMethod?this.dropinRef.state.activePaymentMethod.data:null}displayFinalAnimation(t){this.props.disableFinalAnimation||this.dropinRef.setStatus(t)}submit(){if(!this.activePaymentMethod)throw new Error("No active payment method.");this.activePaymentMethod.isValid||this.activePaymentMethod.showValidation(),this.activePaymentMethod.isInstantPayment&&this.closeActivePaymentMethod(),this.activePaymentMethod.submit()}handleAction(t,e={}){if(!t||!t.type){if(d(t,"action")&&d(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')}if("redirect"!==t.type&&this.activePaymentMethod?.updateWithAction)return this.activePaymentMethod.updateWithAction(t);this.elementRef instanceof f&&(e={...this.elementRef.activePaymentMethod?.props,...e});const o=this.core.createFromAction(t,{...e,elementRef:this.elementRef,onAdditionalDetails:this.handleAdditionalDetails,isDropin:!0});return o?(this.setStatus(o.props.statusType,{component:o}),this.componentFromAction=o,this):null}closeActivePaymentMethod(){this.dropinRef.closeActivePaymentMethod()}handleKeyPress(t){if("Enter"===t.key||"Enter"===t.code){if("radio"===document?.activeElement?.getAttribute("role"))return;super.handleKeyPress(t)}}onEnterKeyPressed(t,e){const o=this.activePaymentMethod??e;this.activePaymentMethod?.onEnterKeyPressed(t,o)}render(){return t(n,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(m,{srPanel:this.props.modules.srPanel},t(i,{...this.props,core:this.core,elementRef:this.elementRef,onCreateElements:this.handleCreate,ref:t=>{this.dropinRef=t}})))}constructor(t,e){super(t,e),c(this,"dropinRef",null),c(this,"paymentMethodsConfiguration",void 0),c(this,"componentFromAction",void 0),c(this,"handleCreate",(()=>{const{paymentMethodsConfiguration:t,showStoredPaymentMethods:e,showPaymentMethods:o,instantPaymentTypes:i}=this.props,{paymentMethods:n,storedPaymentMethods:d,instantPaymentMethods:m}=p(this.core.paymentMethodsResponse,i),l=s({...this.props,elementRef:this.elementRef});return[e?a(d,t,l,this.core):[],o?r(n,t,l,this.core):[],h(m,t,l,this.core)]})),c(this,"handleOrder",(({order:t})=>{this.updateParent({order:t})})),this.submit=this.submit.bind(this),this.handleAction=this.handleAction.bind(this),this.props.paymentMethodComponents.forEach((t=>this.core.register(t))),this.paymentMethodsConfiguration=this.props.paymentMethodsConfiguration||{}}}c(f,"type",l.dropin),c(f,"defaultProps",o);export{f as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./defaultProps.js";import{DropinComponent as n}from"./components/DropinComponent.js";import{CoreProvider as i}from"../../core/Context/CoreProvider.js";import{getCommonProps as s}from"./components/utils.js";import r from"./elements/createElements.js";import a from"./elements/createStoredElements.js";import h from"./elements/createInstantPaymentElements.js";import{hasOwnProperty as d}from"../../utils/hasOwnProperty.js";import m from"../../core/Errors/SRPanelProvider.js";import p from"./elements/splitPaymentMethods.js";import{TxVariants as l}from"../tx-variants.js";function c(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}const y=["paywithgoogle","googlepay","applepay"];class f extends e{storeElementRefOnCore(){this.core.storeElementReference(this)}formatProps(t){return{type:"dropin",...super.formatProps(t),instantPaymentTypes:Array.from(new Set(t.instantPaymentTypes)).filter((t=>y.includes(t)))}}get isValid(){return!!this.dropinRef&&!!this.dropinRef.state.activePaymentMethod&&!!this.dropinRef.state.activePaymentMethod.isValid}showValidation(){return this.dropinRef.state.activePaymentMethod&&this.dropinRef.state.activePaymentMethod.showValidation(),this}setStatus(t,e={}){return this.dropinRef?.setStatus(t,e),this}get activePaymentMethod(){return this.dropinRef?.state||this.dropinRef?.state.activePaymentMethod?this.dropinRef.state.activePaymentMethod:null}get data(){return this.activePaymentMethod?this.dropinRef.state.activePaymentMethod.data:null}displayFinalAnimation(t){this.props.disableFinalAnimation||this.dropinRef.setStatus(t)}submit(){if(!this.activePaymentMethod)throw new Error("No active payment method.");this.activePaymentMethod.isValid||this.activePaymentMethod.showValidation(),this.activePaymentMethod.isInstantPayment&&this.closeActivePaymentMethod(),this.activePaymentMethod.submit()}handleAction(t,e={}){if(!t||!t.type){if(d(t,"action")&&d(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')}if("redirect"!==t.type&&this.activePaymentMethod?.updateWithAction)return this.activePaymentMethod.updateWithAction(t);this.elementRef instanceof f&&(e={...this.elementRef.activePaymentMethod?.props,...e});const o=this.core.createFromAction(t,{...e,elementRef:this.elementRef,onAdditionalDetails:this.handleAdditionalDetails,isDropin:!0});return o?(this.setStatus(o.props.statusType,{component:o}),this.componentFromAction=o,this):null}closeActivePaymentMethod(){this.dropinRef.closeActivePaymentMethod()}handleKeyPress(t){if("Enter"===t.key||"Enter"===t.code){if("radio"===document?.activeElement?.getAttribute("role"))return;super.handleKeyPress(t)}}onEnterKeyPressed(t,e){const o=this.activePaymentMethod??e;this.activePaymentMethod?.onEnterKeyPressed(t,o)}render(){return t(i,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(m,{srPanel:this.props.modules.srPanel},t(n,{...this.props,core:this.core,elementRef:this.elementRef,onCreateElements:this.handleCreate,ref:t=>{this.dropinRef=t}})))}constructor(t,e){super(t,e),c(this,"dropinRef",null),c(this,"paymentMethodsConfiguration",void 0),c(this,"componentFromAction",void 0),c(this,"handleCreate",(()=>{const{paymentMethodsConfiguration:t,showStoredPaymentMethods:e,showPaymentMethods:o,instantPaymentTypes:n}=this.props,{paymentMethods:i,storedPaymentMethods:d,instantPaymentMethods:m,fastlanePaymentMethod:l}=p(this.core.paymentMethodsResponse,n),c=s({...this.props,elementRef:this.elementRef}),y=o?r(i,t,c,this.core):[],f=h(m,t,c,this.core);return[e?a(d,t,c,this.core):[],y,f,l?r([l],t,c,this.core):[]]})),c(this,"handleOrder",(({order:t})=>{this.updateParent({order:t})})),this.submit=this.submit.bind(this),this.handleAction=this.handleAction.bind(this),this.props.paymentMethodComponents.forEach((t=>this.core.register(t))),this.paymentMethodsConfiguration=this.props.paymentMethodsConfiguration||{}}}c(f,"type",l.dropin),c(f,"defaultProps",o);export{f as default};
2
2
  //# sourceMappingURL=Dropin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropin.js","sources":["../../../../src/components/Dropin/Dropin.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport defaultProps from './defaultProps';\nimport DropinComponent from '../../components/Dropin/components/DropinComponent';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport { getCommonProps } from './components/utils';\nimport { createElements, createStoredElements } from './elements';\nimport createInstantPaymentElements from './elements/createInstantPaymentElements';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport splitPaymentMethods from './elements/splitPaymentMethods';\nimport { TxVariants } from '../tx-variants';\n\nimport type { DropinConfiguration, InstantPaymentTypes, PaymentMethodsConfiguration } from './types';\nimport type { PaymentAction, PaymentResponseData } from '../../types/global-types';\nimport type { ICore } from '../../core/types';\nimport type { IDropin } from './types';\n\nconst SUPPORTED_INSTANT_PAYMENTS = ['paywithgoogle', 'googlepay', 'applepay'];\n\nclass DropinElement extends UIElement<DropinConfiguration> implements IDropin {\n public static type = TxVariants.dropin;\n\n protected static defaultProps = defaultProps;\n\n public dropinRef = null;\n\n private paymentMethodsConfiguration: PaymentMethodsConfiguration;\n /**\n * Reference to the component created from `handleAction` (Ex.: ThreeDS2Challenge)\n */\n public componentFromAction?: UIElement;\n\n constructor(checkout: ICore, props?: DropinConfiguration) {\n super(checkout, props);\n this.submit = this.submit.bind(this);\n this.handleAction = this.handleAction.bind(this);\n\n this.props.paymentMethodComponents.forEach(PaymentMethod => this.core.register(PaymentMethod));\n this.paymentMethodsConfiguration = this.props.paymentMethodsConfiguration || {};\n }\n\n protected override storeElementRefOnCore() {\n this.core.storeElementReference(this);\n }\n\n formatProps(props) {\n return {\n type: 'dropin', // for analytics\n ...super.formatProps(props),\n instantPaymentTypes: Array.from<InstantPaymentTypes>(new Set(props.instantPaymentTypes)).filter(value =>\n SUPPORTED_INSTANT_PAYMENTS.includes(value)\n )\n };\n }\n\n get isValid() {\n return !!this.dropinRef && !!this.dropinRef.state.activePaymentMethod && !!this.dropinRef.state.activePaymentMethod.isValid;\n }\n\n showValidation() {\n if (this.dropinRef.state.activePaymentMethod) {\n this.dropinRef.state.activePaymentMethod.showValidation();\n }\n\n return this;\n }\n\n public setStatus(status, props = {}): this {\n this.dropinRef?.setStatus(status, props);\n return this;\n }\n\n get activePaymentMethod() {\n if (!this.dropinRef?.state && !this.dropinRef?.state.activePaymentMethod) {\n return null;\n }\n\n return this.dropinRef.state.activePaymentMethod;\n }\n\n get data() {\n if (!this.activePaymentMethod) {\n return null;\n }\n\n return this.dropinRef.state.activePaymentMethod.data;\n }\n\n public displayFinalAnimation(type: 'success' | 'error') {\n if (this.props.disableFinalAnimation) return;\n\n this.dropinRef.setStatus(type);\n }\n\n /**\n * Calls the onSubmit event with the state of the activePaymentMethod\n */\n public override submit(): void {\n if (!this.activePaymentMethod) {\n throw new Error('No active payment method.');\n }\n\n if (!this.activePaymentMethod.isValid) {\n this.activePaymentMethod.showValidation();\n }\n\n if (this.activePaymentMethod.isInstantPayment) {\n this.closeActivePaymentMethod();\n }\n\n this.activePaymentMethod.submit();\n }\n\n /**\n * Creates the Drop-in elements\n */\n private handleCreate = () => {\n const { paymentMethodsConfiguration, showStoredPaymentMethods, showPaymentMethods, instantPaymentTypes } = this.props;\n\n const { paymentMethods, storedPaymentMethods, instantPaymentMethods } = splitPaymentMethods(\n this.core.paymentMethodsResponse,\n instantPaymentTypes\n );\n\n const commonProps = getCommonProps({ ...this.props, elementRef: this.elementRef });\n\n const storedElements = showStoredPaymentMethods\n ? createStoredElements(storedPaymentMethods, paymentMethodsConfiguration, commonProps, this.core)\n : [];\n const elements = showPaymentMethods ? createElements(paymentMethods, paymentMethodsConfiguration, commonProps, this.core) : [];\n const instantPaymentElements = createInstantPaymentElements(instantPaymentMethods, paymentMethodsConfiguration, commonProps, this.core);\n\n return [storedElements, elements, instantPaymentElements];\n };\n\n public handleAction(action: PaymentAction, props = {}): this | 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 if (action.type !== 'redirect' && this.activePaymentMethod?.updateWithAction) {\n return this.activePaymentMethod.updateWithAction(action);\n }\n\n if (this.elementRef instanceof DropinElement) {\n props = {\n ...this.elementRef.activePaymentMethod?.props,\n ...props\n };\n }\n\n const paymentAction: UIElement = this.core.createFromAction(action, {\n ...props,\n elementRef: this.elementRef, // maintain elementRef for 3DS2 flow\n onAdditionalDetails: this.handleAdditionalDetails,\n isDropin: true\n });\n\n if (paymentAction) {\n this.setStatus(paymentAction.props.statusType, { component: paymentAction });\n this.componentFromAction = paymentAction;\n return this;\n }\n\n return null;\n }\n\n /**\n * handleOrder is implemented so we don't trigger a callback like in the components\n * @param response - PaymentResponse\n */\n protected handleOrder = ({ order }: PaymentResponseData): void => {\n void this.updateParent({ order });\n };\n\n closeActivePaymentMethod() {\n this.dropinRef.closeActivePaymentMethod();\n }\n\n protected handleKeyPress(e: h.JSX.TargetedKeyboardEvent<HTMLInputElement> | KeyboardEvent) {\n if (e.key === 'Enter' || e.code === 'Enter') {\n // If the active element has role=\"radio\", we're on a header in the PMList, in which case we don't want to validate the form, or, prevent the default behaviour\n const isPMHeader = document?.activeElement?.getAttribute('role') === 'radio';\n if (isPMHeader) {\n return;\n }\n super.handleKeyPress(e);\n }\n }\n\n protected onEnterKeyPressed(activeElement: Element, component: UIElement) {\n // We want to have a ref to the activePM, if we can; not a ref to the Dropin\n const pmComponent = this.activePaymentMethod ?? component;\n this.activePaymentMethod?.onEnterKeyPressed(activeElement, pmComponent);\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <DropinComponent\n {...this.props}\n core={this.core}\n elementRef={this.elementRef}\n onCreateElements={this.handleCreate}\n ref={dropinRef => {\n this.dropinRef = dropinRef;\n }}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default DropinElement;\n"],"names":["SUPPORTED_INSTANT_PAYMENTS","DropinElement","UIElement","storeElementRefOnCore","this","core","storeElementReference","formatProps","props","type","super","instantPaymentTypes","Array","from","Set","filter","value","includes","isValid","dropinRef","state","activePaymentMethod","showValidation","setStatus","status","data","displayFinalAnimation","disableFinalAnimation","submit","Error","isInstantPayment","closeActivePaymentMethod","handleAction","action","hasOwnProperty","updateWithAction","elementRef","paymentAction","createFromAction","onAdditionalDetails","handleAdditionalDetails","isDropin","statusType","component","componentFromAction","handleKeyPress","e","key","code","document","activeElement","getAttribute","onEnterKeyPressed","pmComponent","render","h","CoreProvider","i18n","loadingContext","resources","SRPanelProvider","srPanel","modules","DropinComponent","onCreateElements","handleCreate","ref","constructor","checkout","_define_property","paymentMethodsConfiguration","showStoredPaymentMethods","showPaymentMethods","paymentMethods","storedPaymentMethods","instantPaymentMethods","splitPaymentMethods","paymentMethodsResponse","commonProps","getCommonProps","createStoredElements","createElements","createInstantPaymentElements","handleOrder","order","updateParent","bind","paymentMethodComponents","forEach","PaymentMethod","register","TxVariants","dropin","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"Dropin.js","sources":["../../../../src/components/Dropin/Dropin.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport defaultProps from './defaultProps';\nimport DropinComponent from '../../components/Dropin/components/DropinComponent';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport { getCommonProps } from './components/utils';\nimport { createElements, createStoredElements } from './elements';\nimport createInstantPaymentElements from './elements/createInstantPaymentElements';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport splitPaymentMethods from './elements/splitPaymentMethods';\nimport { TxVariants } from '../tx-variants';\n\nimport type { DropinConfiguration, InstantPaymentTypes, PaymentMethodsConfiguration } from './types';\nimport type { PaymentAction, PaymentResponseData } from '../../types/global-types';\nimport type { ICore } from '../../core/types';\nimport type { IDropin } from './types';\n\nconst SUPPORTED_INSTANT_PAYMENTS = ['paywithgoogle', 'googlepay', 'applepay'];\n\nclass DropinElement extends UIElement<DropinConfiguration> implements IDropin {\n public static type = TxVariants.dropin;\n\n protected static defaultProps = defaultProps;\n\n public dropinRef = null;\n\n private paymentMethodsConfiguration: PaymentMethodsConfiguration;\n /**\n * Reference to the component created from `handleAction` (Ex.: ThreeDS2Challenge)\n */\n public componentFromAction?: UIElement;\n\n constructor(checkout: ICore, props?: DropinConfiguration) {\n super(checkout, props);\n this.submit = this.submit.bind(this);\n this.handleAction = this.handleAction.bind(this);\n\n this.props.paymentMethodComponents.forEach(PaymentMethod => this.core.register(PaymentMethod));\n this.paymentMethodsConfiguration = this.props.paymentMethodsConfiguration || {};\n }\n\n protected override storeElementRefOnCore() {\n this.core.storeElementReference(this);\n }\n\n formatProps(props) {\n return {\n type: 'dropin', // for analytics\n ...super.formatProps(props),\n instantPaymentTypes: Array.from<InstantPaymentTypes>(new Set(props.instantPaymentTypes)).filter(value =>\n SUPPORTED_INSTANT_PAYMENTS.includes(value)\n )\n };\n }\n\n get isValid() {\n return !!this.dropinRef && !!this.dropinRef.state.activePaymentMethod && !!this.dropinRef.state.activePaymentMethod.isValid;\n }\n\n showValidation() {\n if (this.dropinRef.state.activePaymentMethod) {\n this.dropinRef.state.activePaymentMethod.showValidation();\n }\n\n return this;\n }\n\n public setStatus(status, props = {}): this {\n this.dropinRef?.setStatus(status, props);\n return this;\n }\n\n get activePaymentMethod() {\n if (!this.dropinRef?.state && !this.dropinRef?.state.activePaymentMethod) {\n return null;\n }\n\n return this.dropinRef.state.activePaymentMethod;\n }\n\n get data() {\n if (!this.activePaymentMethod) {\n return null;\n }\n\n return this.dropinRef.state.activePaymentMethod.data;\n }\n\n public displayFinalAnimation(type: 'success' | 'error') {\n if (this.props.disableFinalAnimation) return;\n\n this.dropinRef.setStatus(type);\n }\n\n /**\n * Calls the onSubmit event with the state of the activePaymentMethod\n */\n public override submit(): void {\n if (!this.activePaymentMethod) {\n throw new Error('No active payment method.');\n }\n\n if (!this.activePaymentMethod.isValid) {\n this.activePaymentMethod.showValidation();\n }\n\n if (this.activePaymentMethod.isInstantPayment) {\n this.closeActivePaymentMethod();\n }\n\n this.activePaymentMethod.submit();\n }\n\n /**\n * Creates the Drop-in elements\n */\n private handleCreate = () => {\n const { paymentMethodsConfiguration, showStoredPaymentMethods, showPaymentMethods, instantPaymentTypes } = this.props;\n\n const { paymentMethods, storedPaymentMethods, instantPaymentMethods, fastlanePaymentMethod } = splitPaymentMethods(\n this.core.paymentMethodsResponse,\n instantPaymentTypes\n );\n\n const commonProps = getCommonProps({ ...this.props, elementRef: this.elementRef });\n\n const elements = showPaymentMethods ? createElements(paymentMethods, paymentMethodsConfiguration, commonProps, this.core) : [];\n const instantPaymentElements = createInstantPaymentElements(instantPaymentMethods, paymentMethodsConfiguration, commonProps, this.core);\n const storedElements = showStoredPaymentMethods\n ? createStoredElements(storedPaymentMethods, paymentMethodsConfiguration, commonProps, this.core)\n : [];\n const fastlanePaymentElement = fastlanePaymentMethod\n ? createElements([fastlanePaymentMethod], paymentMethodsConfiguration, commonProps, this.core)\n : [];\n\n return [storedElements, elements, instantPaymentElements, fastlanePaymentElement];\n };\n\n public handleAction(action: PaymentAction, props = {}): this | 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 if (action.type !== 'redirect' && this.activePaymentMethod?.updateWithAction) {\n return this.activePaymentMethod.updateWithAction(action);\n }\n\n if (this.elementRef instanceof DropinElement) {\n props = {\n ...this.elementRef.activePaymentMethod?.props,\n ...props\n };\n }\n\n const paymentAction: UIElement = this.core.createFromAction(action, {\n ...props,\n elementRef: this.elementRef, // maintain elementRef for 3DS2 flow\n onAdditionalDetails: this.handleAdditionalDetails,\n isDropin: true\n });\n\n if (paymentAction) {\n this.setStatus(paymentAction.props.statusType, { component: paymentAction });\n this.componentFromAction = paymentAction;\n return this;\n }\n\n return null;\n }\n\n /**\n * handleOrder is implemented so we don't trigger a callback like in the components\n * @param response - PaymentResponse\n */\n protected handleOrder = ({ order }: PaymentResponseData): void => {\n void this.updateParent({ order });\n };\n\n closeActivePaymentMethod() {\n this.dropinRef.closeActivePaymentMethod();\n }\n\n protected handleKeyPress(e: h.JSX.TargetedKeyboardEvent<HTMLInputElement> | KeyboardEvent) {\n if (e.key === 'Enter' || e.code === 'Enter') {\n // If the active element has role=\"radio\", we're on a header in the PMList, in which case we don't want to validate the form, or, prevent the default behaviour\n const isPMHeader = document?.activeElement?.getAttribute('role') === 'radio';\n if (isPMHeader) {\n return;\n }\n super.handleKeyPress(e);\n }\n }\n\n protected onEnterKeyPressed(activeElement: Element, component: UIElement) {\n // We want to have a ref to the activePM, if we can; not a ref to the Dropin\n const pmComponent = this.activePaymentMethod ?? component;\n this.activePaymentMethod?.onEnterKeyPressed(activeElement, pmComponent);\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <DropinComponent\n {...this.props}\n core={this.core}\n elementRef={this.elementRef}\n onCreateElements={this.handleCreate}\n ref={dropinRef => {\n this.dropinRef = dropinRef;\n }}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default DropinElement;\n"],"names":["SUPPORTED_INSTANT_PAYMENTS","DropinElement","UIElement","storeElementRefOnCore","this","core","storeElementReference","formatProps","props","type","super","instantPaymentTypes","Array","from","Set","filter","value","includes","isValid","dropinRef","state","activePaymentMethod","showValidation","setStatus","status","data","displayFinalAnimation","disableFinalAnimation","submit","Error","isInstantPayment","closeActivePaymentMethod","handleAction","action","hasOwnProperty","updateWithAction","elementRef","paymentAction","createFromAction","onAdditionalDetails","handleAdditionalDetails","isDropin","statusType","component","componentFromAction","handleKeyPress","e","key","code","document","activeElement","getAttribute","onEnterKeyPressed","pmComponent","render","h","CoreProvider","i18n","loadingContext","resources","SRPanelProvider","srPanel","modules","DropinComponent","onCreateElements","handleCreate","ref","constructor","checkout","_define_property","paymentMethodsConfiguration","showStoredPaymentMethods","showPaymentMethods","paymentMethods","storedPaymentMethods","instantPaymentMethods","fastlanePaymentMethod","splitPaymentMethods","paymentMethodsResponse","commonProps","getCommonProps","elements","createElements","instantPaymentElements","createInstantPaymentElements","createStoredElements","handleOrder","order","updateParent","bind","paymentMethodComponents","forEach","PaymentMethod","register","TxVariants","dropin","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import s from"./PaymentMethod/PaymentMethodList.js";import o from"./status/index.js";import n from"../../../core/Services/order-status.js";import{sanitizeOrder as a}from"../../internal/UIElement/utils.js";import{ANALYTICS_RENDERED_STR as r}from"../../../core/Analytics/constants.js";import i from"../../../core/Errors/AdyenCheckoutError.js";function d(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class h extends t{componentDidMount(){this.prepareDropinData()}get analyticConfigData(){return{openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,showStoredPaymentMethods:this.props.showStoredPaymentMethods}}componentDidUpdate(t,e){e.status.type!==this.state.status.type&&this.state.activePaymentMethod&&this.state.activePaymentMethod.setStatus(this.state.status.type),"ready"===this.state.status.type&&"ready"!==e.status.type&&this.props.onReady&&this.props.onReady()}closeActivePaymentMethod(){this.setState({activePaymentMethod:null})}render(t,{elements:n,instantPaymentElements:a,storedPaymentElements:r,status:i,activePaymentMethod:d,cachedPaymentMethods:h}){const p="loading"===i.type,m="redirect"===i.type,c=n?.length||a?.length||r?.length;switch(i.type){case"success":return e(o.Success,{message:0===t?.amount?.value?"resultMessages.preauthorized":i.props?.message});case"error":return e(o.Error,{message:i.props?.message});case"custom":return i.props?.component?.render();default:return e("div",{className:`adyen-checkout__dropin adyen-checkout__dropin--${i.type}`},m&&i.props.component&&i.props.component.render(),p&&i.props&&i.props.component&&i.props.component.render(),!!c&&e(s,{isLoading:p||m,isDisablingPaymentMethod:this.state.isDisabling,paymentMethods:n,instantPaymentMethods:a,storedPaymentMethods:r,activePaymentMethod:d,cachedPaymentMethods:h,order:this.props.order,orderStatus:this.state.orderStatus,onOrderCancel:this.onOrderCancel,onSelect:this.handleOnSelectPaymentMethod,openPaymentMethod:this.props.openPaymentMethod,openFirstPaymentMethod:this.props.openFirstPaymentMethod,openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,onDisableStoredPaymentMethod:this.handleDisableStoredPaymentMethod,showRemovePaymentMethodButton:this.props.showRemovePaymentMethodButton,showRadioButton:this.props.showRadioButton}))}}constructor(...t){super(...t),d(this,"state",{elements:[],instantPaymentElements:[],storedPaymentElements:[],orderStatus:null,isDisabling:!1,status:{type:"loading",props:void 0},activePaymentMethod:null,cachedPaymentMethods:{}}),d(this,"prepareDropinData",(()=>{const{order:t,clientKey:e,loadingContext:s}=this.props,[o,a,i]=this.props.onCreateElements(),d=t?n({clientKey:e,loadingContext:s},t):null;Promise.all([o,a,i,d]).then((([t,e,s,o])=>{this.setState({instantPaymentElements:s,elements:e,storedPaymentElements:t,orderStatus:o}),this.setStatus("ready"),this.props.modules?.analytics.sendAnalytics("dropin",{type:r,configData:this.analyticConfigData})})),this.onOrderCancel=this.getOnOrderCancel()})),d(this,"setStatus",((t,e={})=>{this.setState({status:{type:t,props:e}})})),d(this,"setActivePaymentMethod",(t=>{t!==this.state.activePaymentMethod&&(this.setState((e=>({activePaymentMethod:t,cachedPaymentMethods:{...e.cachedPaymentMethods,[t._id]:!0}}))),this.state.cachedPaymentMethods[t._id]&&t.activate())})),d(this,"handleOnSelectPaymentMethod",(t=>{const{activePaymentMethod:e}=this.state;this.setActivePaymentMethod(t),(e&&e._id!==t._id||!e)&&(this.props.onSelect?.(t),t.submitAnalytics({type:r}))})),d(this,"handleDisableStoredPaymentMethod",(t=>{this.setState({isDisabling:!0}),new Promise(((e,s)=>this.props.onDisableStoredPaymentMethod(t.props.storedPaymentMethodId,e,s))).then((()=>{this.setState((e=>({storedPaymentElements:e.storedPaymentElements.filter((e=>e._id!==t._id))}))),this.setState({isDisabling:!1})})).catch((()=>{this.setState({isDisabling:!1})}))})),d(this,"getOnOrderCancel",(()=>this.props.onOrderCancel?t=>{const e=a(t.order);new Promise(((t,s)=>{this.props.onOrderCancel({order:e},{resolve:t,reject:s})})).then((({amount:t})=>this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null,t))).catch((t=>{throw new i("NETWORK_ERROR",t)}))}:this.props.session?t=>this.props.session.cancelOrder(t).then((()=>this.props.core.update({order:null}))).catch((t=>{console.error(t),this.setStatus(t?.message||"error")})):null)),d(this,"onOrderCancel",void 0)}}export{h as DropinComponent,h as default};
1
+ import{Component as t,createElement as e,Fragment as s}from"../../../external/preact/dist/preact.js";import o from"./PaymentMethod/PaymentMethodList.js";import n from"./status/index.js";import a from"../../../core/Services/order-status.js";import{sanitizeOrder as r}from"../../internal/UIElement/utils.js";import{ANALYTICS_RENDERED_STR as i,InfoEventTypes as h,ANALYTICS_EVENT as d}from"../../../core/Analytics/constants.js";import p from"../../../core/Errors/AdyenCheckoutError.js";import m from"../../internal/Button/Button.js";function l(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class c extends t{componentDidMount(){this.prepareDropinData()}get analyticConfigData(){return{openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,showStoredPaymentMethods:this.props.showStoredPaymentMethods}}componentDidUpdate(t,e){e.status.type!==this.state.status.type&&this.state.activePaymentMethod&&this.state.activePaymentMethod.setStatus(this.state.status.type),"ready"===this.state.status.type&&"ready"!==e.status.type&&this.props.onReady&&this.props.onReady()}closeActivePaymentMethod(){this.setState({activePaymentMethod:null})}render(){const{elements:t,fastlanePaymentElement:a,instantPaymentElements:r,storedPaymentElements:i,status:h,activePaymentMethod:d,cachedPaymentMethods:p,showDefaultPaymentMethodList:l}=this.state,c="loading"===h.type,y="redirect"===h.type,u=!!(t?.length||r?.length||i?.length);switch(h.type){case"success":return e(n.Success,{message:0===this.props?.amount?.value?"resultMessages.preauthorized":h.props?.message});case"error":return e(n.Error,{message:h.props?.message});case"custom":return h.props?.component?.render();default:return e("div",{className:`adyen-checkout__dropin adyen-checkout__dropin--${h.type}`},y&&h.props.component&&h.props.component.render(),c&&h.props&&h.props.component&&h.props.component.render(),!l&&e(s,null,e(o,{isLoading:c,paymentMethods:a,activePaymentMethod:d,cachedPaymentMethods:p,onSelect:this.handleOnSelectPaymentMethod,openFirstPaymentMethod:!0,showRadioButton:this.props.showRadioButton}),u&&e(m,{classNameModifiers:["dropin-show-paymentmethods"],variant:"link",inline:!0,label:"Other payment methods",onClick:this.onShowDefaultPaymentMethodListClick})),u&&l&&e(o,{isLoading:c||y,isDisablingPaymentMethod:this.state.isDisabling,paymentMethods:t,instantPaymentMethods:r,storedPaymentMethods:i,activePaymentMethod:d,cachedPaymentMethods:p,order:this.props.order,orderStatus:this.state.orderStatus,onOrderCancel:this.onOrderCancel,onSelect:this.handleOnSelectPaymentMethod,openPaymentMethod:this.props.openPaymentMethod,openFirstPaymentMethod:this.props.openFirstPaymentMethod,openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,onDisableStoredPaymentMethod:this.handleDisableStoredPaymentMethod,showRemovePaymentMethodButton:this.props.showRemovePaymentMethodButton,showRadioButton:this.props.showRadioButton}))}}constructor(...t){super(...t),l(this,"state",{elements:[],fastlanePaymentElement:[],instantPaymentElements:[],storedPaymentElements:[],orderStatus:null,isDisabling:!1,status:{type:"loading",props:void 0},activePaymentMethod:null,cachedPaymentMethods:{},showDefaultPaymentMethodList:!0}),l(this,"prepareDropinData",(()=>{const{order:t,clientKey:e,loadingContext:s}=this.props,[o,n,r,h]=this.props.onCreateElements(),d=t?a({clientKey:e,loadingContext:s},t):null;Promise.all([o,n,r,h,d]).then((([t,e,s,o,n])=>{this.setState({orderStatus:n,elements:e,instantPaymentElements:s,storedPaymentElements:t,fastlanePaymentElement:o,showDefaultPaymentMethodList:0===o.length}),this.setStatus("ready"),this.props.modules?.analytics.sendAnalytics("dropin",{type:i,configData:this.analyticConfigData})})),this.onOrderCancel=this.getOnOrderCancel()})),l(this,"setStatus",((t,e={})=>{this.setState({status:{type:t,props:e}})})),l(this,"setActivePaymentMethod",(t=>{t!==this.state.activePaymentMethod&&(this.setState((e=>({activePaymentMethod:t,cachedPaymentMethods:{...e.cachedPaymentMethods,[t._id]:!0}}))),this.state.cachedPaymentMethods[t._id]&&t.activate())})),l(this,"handleOnSelectPaymentMethod",(t=>{const{activePaymentMethod:e}=this.state;this.setActivePaymentMethod(t),(e&&e._id!==t._id||!e)&&(this.props.onSelect?.(t),t.submitAnalytics({type:i}))})),l(this,"handleDisableStoredPaymentMethod",(t=>{this.setState({isDisabling:!0}),new Promise(((e,s)=>this.props.onDisableStoredPaymentMethod(t.props.storedPaymentMethodId,e,s))).then((()=>{this.setState((e=>({storedPaymentElements:e.storedPaymentElements.filter((e=>e._id!==t._id))}))),this.setState({isDisabling:!1})})).catch((()=>{this.setState({isDisabling:!1})}))})),l(this,"onShowDefaultPaymentMethodListClick",(()=>{this.setState({showDefaultPaymentMethodList:!0}),this.props.modules?.analytics.sendAnalytics("dropin",{type:d.info,infoType:h.clicked,target:"otherpaymentmethod_button"})})),l(this,"getOnOrderCancel",(()=>this.props.onOrderCancel?t=>{const e=r(t.order);new Promise(((t,s)=>{this.props.onOrderCancel({order:e},{resolve:t,reject:s})})).then((({amount:t})=>this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null,t))).catch((t=>{throw new p("NETWORK_ERROR",t)}))}:this.props.session?t=>this.props.session.cancelOrder(t).then((()=>this.props.core.update({order:null}))).catch((t=>{console.error(t),this.setStatus(t?.message||"error")})):null)),l(this,"onOrderCancel",void 0)}}export{c as DropinComponent,c as default};
2
2
  //# sourceMappingURL=DropinComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropinComponent.js","sources":["../../../../../src/components/Dropin/components/DropinComponent.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport PaymentMethodList from './PaymentMethod/PaymentMethodList';\nimport Status from './status';\nimport getOrderStatus from '../../../core/Services/order-status';\nimport { DropinComponentProps, DropinComponentState, DropinStatusProps, onOrderCancelData } from '../types';\nimport './DropinComponent.scss';\nimport { UIElementStatus } from '../../internal/UIElement/types';\nimport { sanitizeOrder } from '../../internal/UIElement/utils';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport UIElement from '../../internal/UIElement';\n\nexport class DropinComponent extends Component<DropinComponentProps, DropinComponentState> {\n public state: DropinComponentState = {\n elements: [],\n instantPaymentElements: [],\n storedPaymentElements: [],\n orderStatus: null,\n isDisabling: false,\n status: { type: 'loading', props: undefined },\n activePaymentMethod: null,\n cachedPaymentMethods: {}\n };\n\n componentDidMount() {\n this.prepareDropinData();\n }\n\n public prepareDropinData = () => {\n const { order, clientKey, loadingContext } = this.props;\n const [storedElementsPromises, elementsPromises, instantPaymentsPromises] = this.props.onCreateElements();\n const orderStatusPromise = order ? getOrderStatus({ clientKey, loadingContext }, order) : null;\n\n void Promise.all([storedElementsPromises, elementsPromises, instantPaymentsPromises, orderStatusPromise]).then(\n ([storedPaymentElements, elements, instantPaymentElements, orderStatus]) => {\n this.setState({ instantPaymentElements, elements, storedPaymentElements, orderStatus });\n this.setStatus('ready');\n\n this.props.modules?.analytics.sendAnalytics('dropin', {\n type: ANALYTICS_RENDERED_STR,\n configData: this.analyticConfigData\n });\n }\n );\n\n this.onOrderCancel = this.getOnOrderCancel();\n };\n\n get analyticConfigData() {\n return {\n openFirstStoredPaymentMethod: this.props.openFirstStoredPaymentMethod,\n showStoredPaymentMethods: this.props.showStoredPaymentMethods\n };\n }\n\n public setStatus = (status: UIElementStatus, props: DropinStatusProps = {}) => {\n this.setState({ status: { type: status, props } });\n };\n\n private setActivePaymentMethod = (paymentMethod: UIElement): void => {\n if (paymentMethod === this.state.activePaymentMethod) {\n return;\n }\n\n this.setState(prevState => ({\n activePaymentMethod: paymentMethod,\n cachedPaymentMethods: { ...prevState.cachedPaymentMethods, [paymentMethod._id]: true }\n }));\n\n if (this.state.cachedPaymentMethods[paymentMethod._id]) {\n paymentMethod.activate();\n }\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.status.type !== this.state.status.type && this.state.activePaymentMethod) {\n this.state.activePaymentMethod.setStatus(this.state.status.type);\n }\n\n if (this.state.status.type === 'ready' && prevState.status.type !== 'ready' && this.props.onReady) {\n this.props.onReady();\n }\n }\n\n private handleOnSelectPaymentMethod = paymentMethod => {\n const { activePaymentMethod } = this.state;\n\n this.setActivePaymentMethod(paymentMethod);\n\n // onSelect event\n if ((activePaymentMethod && activePaymentMethod._id !== paymentMethod._id) || !activePaymentMethod) {\n this.props.onSelect?.(paymentMethod);\n\n paymentMethod.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n };\n\n private handleDisableStoredPaymentMethod = storedPaymentMethod => {\n this.setState({ isDisabling: true });\n\n new Promise((resolve, reject) => this.props.onDisableStoredPaymentMethod(storedPaymentMethod.props.storedPaymentMethodId, resolve, reject))\n .then(() => {\n this.setState(prevState => ({\n storedPaymentElements: prevState.storedPaymentElements.filter(pm => pm._id !== storedPaymentMethod._id)\n }));\n this.setState({ isDisabling: false });\n })\n .catch(() => {\n this.setState({ isDisabling: false });\n });\n };\n\n closeActivePaymentMethod() {\n this.setState({ activePaymentMethod: null });\n }\n\n /**\n * getOnOrderCancel decides which onOrderCancel logic should be used, manual or sessions\n */\n private getOnOrderCancel = () => {\n if (this.props.onOrderCancel) {\n return (data: onOrderCancelData) => {\n const order = sanitizeOrder(data.order);\n new Promise<{ amount: PaymentAmount }>((resolve, reject) => {\n this.props.onOrderCancel({ order }, { resolve, reject });\n })\n .then(({ amount }) => this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null, amount))\n .catch(error => {\n throw new AdyenCheckoutError('NETWORK_ERROR', error);\n });\n };\n }\n if (this.props.session) {\n return (data: onOrderCancelData) =>\n this.props.session\n .cancelOrder(data)\n .then(() => this.props.core.update({ order: null }))\n .catch(error => {\n console.error(error);\n this.setStatus(error?.message || 'error');\n });\n }\n return null;\n };\n\n private onOrderCancel: (data: onOrderCancelData) => void;\n\n render(props, { elements, instantPaymentElements, storedPaymentElements, status, activePaymentMethod, cachedPaymentMethods }) {\n const isLoading = status.type === 'loading';\n const isRedirecting = status.type === 'redirect';\n const hasPaymentMethodsToBeDisplayed = elements?.length || instantPaymentElements?.length || storedPaymentElements?.length;\n\n switch (status.type) {\n case 'success':\n return <Status.Success message={props?.amount?.value === 0 ? 'resultMessages.preauthorized' : status.props?.message} />;\n\n case 'error':\n return <Status.Error message={status.props?.message} />;\n\n case 'custom':\n return status.props?.component?.render();\n\n default:\n return (\n <div className={`adyen-checkout__dropin adyen-checkout__dropin--${status.type}`}>\n {isRedirecting && status.props.component && status.props.component.render()}\n {isLoading && status.props && status.props.component && status.props.component.render()}\n {!!hasPaymentMethodsToBeDisplayed && (\n <PaymentMethodList\n isLoading={isLoading || isRedirecting}\n isDisablingPaymentMethod={this.state.isDisabling}\n paymentMethods={elements}\n instantPaymentMethods={instantPaymentElements}\n storedPaymentMethods={storedPaymentElements}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n order={this.props.order}\n orderStatus={this.state.orderStatus}\n onOrderCancel={this.onOrderCancel}\n onSelect={this.handleOnSelectPaymentMethod}\n openPaymentMethod={this.props.openPaymentMethod}\n openFirstPaymentMethod={this.props.openFirstPaymentMethod}\n openFirstStoredPaymentMethod={this.props.openFirstStoredPaymentMethod}\n onDisableStoredPaymentMethod={this.handleDisableStoredPaymentMethod}\n showRemovePaymentMethodButton={this.props.showRemovePaymentMethodButton}\n showRadioButton={this.props.showRadioButton}\n />\n )}\n </div>\n );\n }\n }\n}\n\nexport default DropinComponent;\n"],"names":["DropinComponent","Component","componentDidMount","this","prepareDropinData","analyticConfigData","openFirstStoredPaymentMethod","props","showStoredPaymentMethods","componentDidUpdate","prevProps","prevState","status","type","state","activePaymentMethod","setStatus","onReady","closeActivePaymentMethod","setState","render","elements","instantPaymentElements","storedPaymentElements","cachedPaymentMethods","isLoading","isRedirecting","hasPaymentMethodsToBeDisplayed","length","h","Status","Success","message","amount","value","Error","component","div","className","PaymentMethodList","isDisablingPaymentMethod","isDisabling","paymentMethods","instantPaymentMethods","storedPaymentMethods","order","orderStatus","onOrderCancel","onSelect","handleOnSelectPaymentMethod","openPaymentMethod","openFirstPaymentMethod","onDisableStoredPaymentMethod","handleDisableStoredPaymentMethod","showRemovePaymentMethodButton","showRadioButton","super","args","_define_property","undefined","clientKey","loadingContext","storedElementsPromises","elementsPromises","instantPaymentsPromises","onCreateElements","orderStatusPromise","getOrderStatus","Promise","all","then","modules","analytics","sendAnalytics","ANALYTICS_RENDERED_STR","configData","getOnOrderCancel","setActivePaymentMethod","paymentMethod","_id","activate","submitAnalytics","storedPaymentMethod","resolve","reject","storedPaymentMethodId","filter","pm","catch","data","sanitizeOrder","elementRef","handleAdvanceFlowPaymentMethodsUpdate","error","AdyenCheckoutError","session","cancelOrder","core","update","console"],"mappings":"oiBAaO,MAAMA,UAAwBC,EAYjCC,iBAAAA,GACIC,KAAKC,mBACT,CAsBA,sBAAIC,GACA,MAAO,CACHC,6BAA8BH,KAAKI,MAAMD,6BACzCE,yBAA0BL,KAAKI,MAAMC,yBAE7C,CAqBAC,kBAAAA,CAAmBC,EAAWC,GACtBA,EAAUC,OAAOC,OAASV,KAAKW,MAAMF,OAAOC,MAAQV,KAAKW,MAAMC,qBAC/DZ,KAAKW,MAAMC,oBAAoBC,UAAUb,KAAKW,MAAMF,OAAOC,MAGhC,UAA3BV,KAAKW,MAAMF,OAAOC,MAA8C,UAA1BF,EAAUC,OAAOC,MAAoBV,KAAKI,MAAMU,SACtFd,KAAKI,MAAMU,SAEnB,CA8BAC,wBAAAA,GACIf,KAAKgB,SAAS,CAAEJ,oBAAqB,MACzC,CAiCAK,MAAAA,CAAOb,GAAOc,SAAEA,EAAQC,uBAAEA,EAAsBC,sBAAEA,EAAqBX,OAAEA,EAAMG,oBAAEA,EAAmBS,qBAAEA,IAClG,MAAMC,EAA4B,YAAhBb,EAAOC,KACnBa,EAAgC,aAAhBd,EAAOC,KACvBc,EAAiCN,GAAUO,QAAUN,GAAwBM,QAAUL,GAAuBK,OAEpH,OAAQhB,EAAOC,MACX,IAAK,UACD,OAAOgB,EAACC,EAAOC,QAAO,CAACC,QAAkC,IAAzBzB,GAAO0B,QAAQC,MAAc,+BAAiCtB,EAAOL,OAAOyB,UAEhH,IAAK,QACD,OAAOH,EAACC,EAAOK,MAAK,CAACH,QAASpB,EAAOL,OAAOyB,UAEhD,IAAK,SACD,OAAOpB,EAAOL,OAAO6B,WAAWhB,SAEpC,QACI,OACIS,EAACQ,MAAAA,CAAIC,UAAW,kDAAkD1B,EAAOC,QACpEa,GAAiBd,EAAOL,MAAM6B,WAAaxB,EAAOL,MAAM6B,UAAUhB,SAClEK,GAAab,EAAOL,OAASK,EAAOL,MAAM6B,WAAaxB,EAAOL,MAAM6B,UAAUhB,WAC5EO,GACCE,EAACU,EAAAA,CACGd,UAAWA,GAAaC,EACxBc,yBAA0BrC,KAAKW,MAAM2B,YACrCC,eAAgBrB,EAChBsB,sBAAuBrB,EACvBsB,qBAAsBrB,EACtBR,oBAAqBA,EACrBS,qBAAsBA,EACtBqB,MAAO1C,KAAKI,MAAMsC,MAClBC,YAAa3C,KAAKW,MAAMgC,YACxBC,cAAe5C,KAAK4C,cACpBC,SAAU7C,KAAK8C,4BACfC,kBAAmB/C,KAAKI,MAAM2C,kBAC9BC,uBAAwBhD,KAAKI,MAAM4C,uBACnC7C,6BAA8BH,KAAKI,MAAMD,6BACzC8C,6BAA8BjD,KAAKkD,iCACnCC,8BAA+BnD,KAAKI,MAAM+C,8BAC1CC,gBAAiBpD,KAAKI,MAAMgD,mBAMxD,mBAnLGC,SAAAC,GACHC,OAAO5C,QAA8B,CACjCO,SAAU,GACVC,uBAAwB,GACxBC,sBAAuB,GACvBuB,YAAa,KACbL,aAAa,EACb7B,OAAQ,CAAEC,KAAM,UAAWN,WAAOoD,GAClC5C,oBAAqB,KACrBS,qBAAsB,CAAA,IAO1BkC,OAAOtD,qBAAoB,KACvB,MAAMyC,MAAEA,EAAKe,UAAEA,EAASC,eAAEA,GAAmB1D,KAAKI,OAC3CuD,EAAwBC,EAAkBC,GAA2B7D,KAAKI,MAAM0D,mBACjFC,EAAqBrB,EAAQsB,EAAe,CAAEP,YAAWC,kBAAkBhB,GAAS,KAErFuB,QAAQC,IAAI,CAACP,EAAwBC,EAAkBC,EAAyBE,IAAqBI,MACtG,EAAE/C,EAAuBF,EAAUC,EAAwBwB,MACvD3C,KAAKgB,SAAS,CAAEG,yBAAwBD,WAAUE,wBAAuBuB,gBACzE3C,KAAKa,UAAU,SAEfb,KAAKI,MAAMgE,SAASC,UAAUC,cAAc,SAAU,CAClD5D,KAAM6D,EACNC,WAAYxE,KAAKE,oBACrB,IAIRF,KAAK4C,cAAgB5C,KAAKyE,kBAAgB,IAU9ClB,OAAO1C,aAAY,CAACJ,EAAyBL,EAA2B,MACpEJ,KAAKgB,SAAS,CAAEP,OAAQ,CAAEC,KAAMD,EAAQL,UAAQ,IAGpDmD,EAAAvD,KAAQ0E,0BAA0BC,IAC1BA,IAAkB3E,KAAKW,MAAMC,sBAIjCZ,KAAKgB,UAASR,IAAc,CACxBI,oBAAqB+D,EACrBtD,qBAAsB,IAAKb,EAAUa,qBAAsB,CAACsD,EAAcC,MAAM,OAGhF5E,KAAKW,MAAMU,qBAAqBsD,EAAcC,MAC9CD,EAAcE,WAClB,IAaJtB,EAAAvD,KAAQ8C,+BAA8B6B,IAClC,MAAM/D,oBAAEA,GAAwBZ,KAAKW,MAErCX,KAAK0E,uBAAuBC,IAGvB/D,GAAuBA,EAAoBgE,MAAQD,EAAcC,MAAShE,KAC3EZ,KAAKI,MAAMyC,WAAW8B,GAEtBA,EAAcG,gBAAgB,CAAEpE,KAAM6D,IAC1C,IAGJhB,EAAAvD,KAAQkD,oCAAmC6B,IACvC/E,KAAKgB,SAAS,CAAEsB,aAAa,IAE7B,IAAI2B,SAAQ,CAACe,EAASC,IAAWjF,KAAKI,MAAM6C,6BAA6B8B,EAAoB3E,MAAM8E,sBAAuBF,EAASC,KAC9Hd,MAAK,KACFnE,KAAKgB,UAASR,IAAc,CACxBY,sBAAuBZ,EAAUY,sBAAsB+D,QAAOC,GAAMA,EAAGR,MAAQG,EAAoBH,UAEvG5E,KAAKgB,SAAS,CAAEsB,aAAa,GAAM,IAEtC+C,OAAM,KACHrF,KAAKgB,SAAS,CAAEsB,aAAa,GAAM,GACvC,IAURiB,OAAQkB,oBAAmB,IACnBzE,KAAKI,MAAMwC,cACH0C,IACJ,MAAM5C,EAAQ6C,EAAcD,EAAK5C,OACjC,IAAIuB,SAAmC,CAACe,EAASC,KAC7CjF,KAAKI,MAAMwC,cAAc,CAAEF,SAAS,CAAEsC,UAASC,UAAO,IAErDd,MAAK,EAAGrC,YAAa9B,KAAKI,MAAMoF,WAAWC,sCAAsC,KAAM3D,KACvFuD,OAAMK,IACH,MAAM,IAAIC,EAAmB,gBAAiBD,EAAAA,GAClD,EAGR1F,KAAKI,MAAMwF,QACHN,GACJtF,KAAKI,MAAMwF,QACNC,YAAYP,GACZnB,MAAK,IAAMnE,KAAKI,MAAM0F,KAAKC,OAAO,CAAErD,MAAO,SAC3C2C,OAAMK,IACHM,QAAQN,MAAMA,GACd1F,KAAKa,UAAU6E,GAAO7D,SAAW,QAAA,IAG1C,OAGX0B,EAAAvD,KAAQ4C,qBAAR"}
1
+ {"version":3,"file":"DropinComponent.js","sources":["../../../../../src/components/Dropin/components/DropinComponent.tsx"],"sourcesContent":["import { Component, Fragment, h } from 'preact';\nimport PaymentMethodList from './PaymentMethod/PaymentMethodList';\nimport Status from './status';\nimport getOrderStatus from '../../../core/Services/order-status';\nimport './DropinComponent.scss';\nimport { sanitizeOrder } from '../../internal/UIElement/utils';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { ANALYTICS_EVENT, ANALYTICS_RENDERED_STR, InfoEventTypes } from '../../../core/Analytics/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport Button from '../../internal/Button';\nimport type { DropinComponentProps, DropinComponentState, DropinStatus, DropinStatusProps, onOrderCancelData } from '../types';\nimport UIElement from '../../internal/UIElement';\n\nexport class DropinComponent extends Component<DropinComponentProps, DropinComponentState> {\n public state: DropinComponentState = {\n elements: [],\n fastlanePaymentElement: [],\n instantPaymentElements: [],\n storedPaymentElements: [],\n orderStatus: null,\n isDisabling: false,\n status: { type: 'loading', props: undefined },\n activePaymentMethod: null,\n cachedPaymentMethods: {},\n showDefaultPaymentMethodList: true\n };\n\n componentDidMount() {\n this.prepareDropinData();\n }\n\n public prepareDropinData = () => {\n const { order, clientKey, loadingContext } = this.props;\n const [storedElementsPromises, elementsPromises, instantPaymentsPromises, fastlanePaymentElementPromise] = this.props.onCreateElements();\n const orderStatusPromise = order ? getOrderStatus({ clientKey, loadingContext }, order) : null;\n\n void Promise.all([storedElementsPromises, elementsPromises, instantPaymentsPromises, fastlanePaymentElementPromise, orderStatusPromise]).then(\n ([storedPaymentElements, elements, instantPaymentElements, fastlanePaymentElement, orderStatus]) => {\n this.setState({\n orderStatus,\n elements,\n instantPaymentElements,\n storedPaymentElements,\n fastlanePaymentElement,\n showDefaultPaymentMethodList: fastlanePaymentElement.length === 0\n });\n\n this.setStatus('ready');\n\n this.props.modules?.analytics.sendAnalytics('dropin', {\n type: ANALYTICS_RENDERED_STR,\n configData: this.analyticConfigData\n });\n }\n );\n\n this.onOrderCancel = this.getOnOrderCancel();\n };\n\n get analyticConfigData() {\n return {\n openFirstStoredPaymentMethod: this.props.openFirstStoredPaymentMethod,\n showStoredPaymentMethods: this.props.showStoredPaymentMethods\n };\n }\n\n public setStatus = (status: DropinStatus['type'], props: DropinStatusProps = {}) => {\n this.setState({ status: { type: status, props } });\n };\n\n private setActivePaymentMethod = (paymentMethod: UIElement): void => {\n if (paymentMethod === this.state.activePaymentMethod) {\n return;\n }\n\n this.setState(prevState => ({\n activePaymentMethod: paymentMethod,\n cachedPaymentMethods: { ...prevState.cachedPaymentMethods, [paymentMethod._id]: true }\n }));\n\n if (this.state.cachedPaymentMethods[paymentMethod._id]) {\n paymentMethod.activate();\n }\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.status.type !== this.state.status.type && this.state.activePaymentMethod) {\n // @ts-ignore TODO: Drop-in has its own 'status' values ('custom' for ex) which differs from regular UIElementStatus. Need to investigate best way to define/use this status variable\n this.state.activePaymentMethod.setStatus(this.state.status.type);\n }\n\n if (this.state.status.type === 'ready' && prevState.status.type !== 'ready' && this.props.onReady) {\n this.props.onReady();\n }\n }\n\n private handleOnSelectPaymentMethod = paymentMethod => {\n const { activePaymentMethod } = this.state;\n\n this.setActivePaymentMethod(paymentMethod);\n\n // onSelect event\n if ((activePaymentMethod && activePaymentMethod._id !== paymentMethod._id) || !activePaymentMethod) {\n this.props.onSelect?.(paymentMethod);\n\n paymentMethod.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n };\n\n private handleDisableStoredPaymentMethod = storedPaymentMethod => {\n this.setState({ isDisabling: true });\n\n new Promise((resolve, reject) => this.props.onDisableStoredPaymentMethod(storedPaymentMethod.props.storedPaymentMethodId, resolve, reject))\n .then(() => {\n this.setState(prevState => ({\n storedPaymentElements: prevState.storedPaymentElements.filter(pm => pm._id !== storedPaymentMethod._id)\n }));\n this.setState({ isDisabling: false });\n })\n .catch(() => {\n this.setState({ isDisabling: false });\n });\n };\n\n private readonly onShowDefaultPaymentMethodListClick = () => {\n this.setState({\n showDefaultPaymentMethodList: true\n });\n\n this.props.modules?.analytics.sendAnalytics('dropin', {\n type: ANALYTICS_EVENT.info,\n infoType: InfoEventTypes.clicked,\n target: 'otherpaymentmethod_button'\n });\n };\n\n closeActivePaymentMethod() {\n this.setState({ activePaymentMethod: null });\n }\n\n /**\n * getOnOrderCancel decides which onOrderCancel logic should be used, manual or sessions\n */\n private getOnOrderCancel = () => {\n if (this.props.onOrderCancel) {\n return (data: onOrderCancelData) => {\n const order = sanitizeOrder(data.order);\n new Promise<{ amount: PaymentAmount }>((resolve, reject) => {\n this.props.onOrderCancel({ order }, { resolve, reject });\n })\n .then(({ amount }) => this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null, amount))\n .catch(error => {\n throw new AdyenCheckoutError('NETWORK_ERROR', error);\n });\n };\n }\n if (this.props.session) {\n return (data: onOrderCancelData) =>\n this.props.session\n .cancelOrder(data)\n .then(() => this.props.core.update({ order: null }))\n .catch(error => {\n console.error(error);\n this.setStatus(error?.message || 'error');\n });\n }\n return null;\n };\n\n private onOrderCancel: (data: onOrderCancelData) => void;\n\n render() {\n const {\n elements,\n fastlanePaymentElement,\n instantPaymentElements,\n storedPaymentElements,\n status,\n activePaymentMethod,\n cachedPaymentMethods,\n showDefaultPaymentMethodList\n } = this.state;\n\n const isLoading = status.type === 'loading';\n const isRedirecting = status.type === 'redirect';\n const hasPaymentMethodsToBeDisplayed = !!(elements?.length || instantPaymentElements?.length || storedPaymentElements?.length);\n\n switch (status.type) {\n case 'success':\n return <Status.Success message={this.props?.amount?.value === 0 ? 'resultMessages.preauthorized' : status.props?.message} />;\n\n case 'error':\n return <Status.Error message={status.props?.message} />;\n\n case 'custom':\n return status.props?.component?.render();\n\n default:\n return (\n <div className={`adyen-checkout__dropin adyen-checkout__dropin--${status.type}`}>\n {isRedirecting && status.props.component && status.props.component.render()}\n {isLoading && status.props && status.props.component && status.props.component.render()}\n\n {!showDefaultPaymentMethodList && (\n <Fragment>\n <PaymentMethodList\n isLoading={isLoading}\n paymentMethods={fastlanePaymentElement}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n onSelect={this.handleOnSelectPaymentMethod}\n openFirstPaymentMethod\n showRadioButton={this.props.showRadioButton}\n />\n\n {hasPaymentMethodsToBeDisplayed && (\n <Button\n classNameModifiers={['dropin-show-paymentmethods']}\n variant=\"link\"\n inline\n label=\"Other payment methods\"\n onClick={this.onShowDefaultPaymentMethodListClick}\n />\n )}\n </Fragment>\n )}\n\n {hasPaymentMethodsToBeDisplayed && showDefaultPaymentMethodList && (\n <PaymentMethodList\n isLoading={isLoading || isRedirecting}\n isDisablingPaymentMethod={this.state.isDisabling}\n paymentMethods={elements}\n instantPaymentMethods={instantPaymentElements}\n storedPaymentMethods={storedPaymentElements}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n order={this.props.order}\n orderStatus={this.state.orderStatus}\n onOrderCancel={this.onOrderCancel}\n onSelect={this.handleOnSelectPaymentMethod}\n openPaymentMethod={this.props.openPaymentMethod}\n openFirstPaymentMethod={this.props.openFirstPaymentMethod}\n openFirstStoredPaymentMethod={this.props.openFirstStoredPaymentMethod}\n onDisableStoredPaymentMethod={this.handleDisableStoredPaymentMethod}\n showRemovePaymentMethodButton={this.props.showRemovePaymentMethodButton}\n showRadioButton={this.props.showRadioButton}\n />\n )}\n </div>\n );\n }\n }\n}\n\nexport default DropinComponent;\n"],"names":["DropinComponent","Component","componentDidMount","this","prepareDropinData","analyticConfigData","openFirstStoredPaymentMethod","props","showStoredPaymentMethods","componentDidUpdate","prevProps","prevState","status","type","state","activePaymentMethod","setStatus","onReady","closeActivePaymentMethod","setState","render","elements","fastlanePaymentElement","instantPaymentElements","storedPaymentElements","cachedPaymentMethods","showDefaultPaymentMethodList","isLoading","isRedirecting","hasPaymentMethodsToBeDisplayed","length","h","Status","Success","message","amount","value","Error","component","div","className","Fragment","PaymentMethodList","paymentMethods","onSelect","handleOnSelectPaymentMethod","openFirstPaymentMethod","showRadioButton","Button","classNameModifiers","variant","inline","label","onClick","onShowDefaultPaymentMethodListClick","isDisablingPaymentMethod","isDisabling","instantPaymentMethods","storedPaymentMethods","order","orderStatus","onOrderCancel","openPaymentMethod","onDisableStoredPaymentMethod","handleDisableStoredPaymentMethod","showRemovePaymentMethodButton","super","args","_define_property","undefined","clientKey","loadingContext","storedElementsPromises","elementsPromises","instantPaymentsPromises","fastlanePaymentElementPromise","onCreateElements","orderStatusPromise","getOrderStatus","Promise","all","then","modules","analytics","sendAnalytics","ANALYTICS_RENDERED_STR","configData","getOnOrderCancel","setActivePaymentMethod","paymentMethod","_id","activate","submitAnalytics","storedPaymentMethod","resolve","reject","storedPaymentMethodId","filter","pm","catch","ANALYTICS_EVENT","info","infoType","InfoEventTypes","clicked","target","data","sanitizeOrder","elementRef","handleAdvanceFlowPaymentMethodsUpdate","error","AdyenCheckoutError","session","cancelOrder","core","update","console"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import o from"../../../../utils/getProp.js";import{OrderPaymentMethods as n}from"./OrderPaymentMethods.js";import r from"./InstantPaymentMethods.js";import{useCoreContext as s}from"../../../../core/Context/CoreProvider.js";import{useBrandLogoConfiguration as a}from"./useBrandLogoConfiguration.js";import m from"./PaymentMethodsContainer.js";import{useEffect as d}from"../../../../external/preact/hooks/dist/hooks.js";const i=({paymentMethods:i=[],instantPaymentMethods:p=[],storedPaymentMethods:l=[],openFirstStoredPaymentMethod:y,openFirstPaymentMethod:h,openPaymentMethod:f,order:c,orderStatus:M=null,onOrderCancel:u,onSelect:P=()=>{},...g})=>{const{i18n:j}=s(),C=a(i),S=p.length>0,b=l.length>0,x=S||b?j.get("paymentMethodsList.otherPayments.label"):"";return d((()=>{if(f?.type){const e=i.find((e=>e.type===f?.type));if(e)return void P(e);console.warn(`Drop-in: payment method type "${f?.type}" not found`)}const e=l[0],t=i[0];if(e||t){if(y&&!0===o(e,"props.oneClick"))return void P(e);h&&P(t)}}),[l,i,y,h,f]),e(t,null,M&&e(n,{order:c,orderStatus:M,onOrderCancel:u,brandLogoConfiguration:C}),S&&e(r,{paymentMethods:p,onSelect:P}),b&&e(m,{...g,label:j.get("paymentMethodsList.storedPayments.label"),classNameModifiers:["storedPayments"],paymentMethods:l,onSelect:P}),!!i.length&&e(m,{...g,label:x,classNameModifiers:["otherPayments"],paymentMethods:i,onSelect:P}))};export{i as default};
1
+ import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import o from"../../../../utils/getProp.js";import{OrderPaymentMethods as n}from"./OrderPaymentMethods.js";import r from"./InstantPaymentMethods.js";import{useCoreContext as s}from"../../../../core/Context/CoreProvider.js";import{useBrandLogoConfiguration as a}from"./useBrandLogoConfiguration.js";import m from"./PaymentMethodsContainer.js";import{useEffect as d}from"../../../../external/preact/hooks/dist/hooks.js";const i=({paymentMethods:i,instantPaymentMethods:p,storedPaymentMethods:l,openFirstStoredPaymentMethod:y,openFirstPaymentMethod:h,openPaymentMethod:f,order:c,orderStatus:M=null,onOrderCancel:u,onSelect:P=()=>{},...g})=>{const{i18n:j}=s(),C=a(i),S=p?.length>0,b=l?.length>0,x=S||b?j.get("paymentMethodsList.otherPayments.label"):"";return d((()=>{if(f?.type){const e=i?.find((e=>e.type===f?.type));if(e)return void P(e);console.warn(`Drop-in: payment method type "${f?.type}" not found`)}const e=l?.[0],t=i?.[0];if(e||t){if(y&&!0===o(e,"props.oneClick"))return void P(e);h&&P(t)}}),[l,i,y,h,f]),e(t,null,M&&e(n,{order:c,orderStatus:M,onOrderCancel:u,brandLogoConfiguration:C}),S&&e(r,{paymentMethods:p,onSelect:P}),b&&e(m,{...g,label:j.get("paymentMethodsList.storedPayments.label"),classNameModifiers:["storedPayments"],paymentMethods:l,onSelect:P}),!!i.length&&e(m,{...g,label:x,classNameModifiers:["otherPayments"],paymentMethods:i,onSelect:P}))};export{i as default};
2
2
  //# sourceMappingURL=PaymentMethodList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentMethodList.js","sources":["../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodList.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport getProp from '../../../../utils/getProp';\nimport UIElement from '../../../internal/UIElement/UIElement';\nimport { Order, OrderStatus } from '../../../../types/global-types';\nimport OrderPaymentMethods from './OrderPaymentMethods';\nimport InstantPaymentMethods from './InstantPaymentMethods';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { useBrandLogoConfiguration } from './useBrandLogoConfiguration';\nimport PaymentMethodsContainer, { PaymentMethodsContainerProps } from './PaymentMethodsContainer';\nimport { useEffect } from 'preact/hooks';\n\ninterface PaymentMethodListProps extends Omit<PaymentMethodsContainerProps, 'label' | 'classNameModifiers'> {\n instantPaymentMethods?: UIElement[];\n storedPaymentMethods?: UIElement[];\n openFirstStoredPaymentMethod?: boolean;\n openFirstPaymentMethod?: boolean;\n openPaymentMethod?: {\n type: string;\n };\n order?: Order;\n orderStatus?: OrderStatus;\n onOrderCancel?: (order) => void;\n}\n\nconst PaymentMethodList = ({\n paymentMethods = [], // Non-stored payments\n instantPaymentMethods = [],\n storedPaymentMethods = [],\n openFirstStoredPaymentMethod,\n openFirstPaymentMethod,\n openPaymentMethod,\n order,\n orderStatus = null,\n onOrderCancel,\n onSelect = () => {},\n ...rest\n}: PaymentMethodListProps) => {\n const { i18n } = useCoreContext();\n const brandLogoConfiguration = useBrandLogoConfiguration(paymentMethods);\n const hasInstantPaymentMethods = instantPaymentMethods.length > 0;\n const hasStoredPaymentMethods = storedPaymentMethods.length > 0;\n const pmListLabel = hasInstantPaymentMethods || hasStoredPaymentMethods ? i18n.get('paymentMethodsList.otherPayments.label') : '';\n\n useEffect(() => {\n if (openPaymentMethod?.type) {\n const paymentMethod = paymentMethods.find(paymentMethod => paymentMethod.type === openPaymentMethod?.type);\n if (!paymentMethod) {\n console.warn(`Drop-in: payment method type \"${openPaymentMethod?.type}\" not found`);\n } else {\n onSelect(paymentMethod);\n return;\n }\n }\n\n // Open first PaymentMethodItem\n const firstStoredPayment = storedPaymentMethods[0];\n const firstNonStoredPayment = paymentMethods[0];\n\n if (firstStoredPayment || firstNonStoredPayment) {\n const shouldOpenFirstStored = openFirstStoredPaymentMethod && getProp(firstStoredPayment, 'props.oneClick') === true;\n if (shouldOpenFirstStored) {\n onSelect(firstStoredPayment);\n return;\n }\n\n if (openFirstPaymentMethod) {\n onSelect(firstNonStoredPayment);\n }\n }\n }, [storedPaymentMethods, paymentMethods, openFirstStoredPaymentMethod, openFirstPaymentMethod, openPaymentMethod]);\n\n return (\n <Fragment>\n {orderStatus && (\n <OrderPaymentMethods\n order={order}\n orderStatus={orderStatus}\n onOrderCancel={onOrderCancel}\n brandLogoConfiguration={brandLogoConfiguration}\n />\n )}\n\n {hasInstantPaymentMethods && <InstantPaymentMethods paymentMethods={instantPaymentMethods} onSelect={onSelect} />}\n\n {hasStoredPaymentMethods && (\n <PaymentMethodsContainer\n {...rest}\n label={i18n.get('paymentMethodsList.storedPayments.label')}\n classNameModifiers={['storedPayments']}\n paymentMethods={storedPaymentMethods}\n onSelect={onSelect}\n ></PaymentMethodsContainer>\n )}\n\n {!!paymentMethods.length && (\n <PaymentMethodsContainer\n {...rest}\n label={pmListLabel}\n classNameModifiers={['otherPayments']}\n paymentMethods={paymentMethods}\n onSelect={onSelect}\n ></PaymentMethodsContainer>\n )}\n </Fragment>\n );\n};\n\nexport default PaymentMethodList;\n"],"names":["PaymentMethodList","paymentMethods","instantPaymentMethods","storedPaymentMethods","openFirstStoredPaymentMethod","openFirstPaymentMethod","openPaymentMethod","order","orderStatus","onOrderCancel","onSelect","rest","i18n","useCoreContext","brandLogoConfiguration","useBrandLogoConfiguration","hasInstantPaymentMethods","length","hasStoredPaymentMethods","pmListLabel","get","useEffect","type","paymentMethod","find","console","warn","firstStoredPayment","firstNonStoredPayment","getProp","h","Fragment","OrderPaymentMethods","InstantPaymentMethods","PaymentMethodsContainer","label","classNameModifiers"],"mappings":"2fAwBA,MAAMA,EAAoB,EACtBC,iBAAiB,GACjBC,wBAAwB,GACxBC,uBAAuB,GACvBC,+BACAC,yBACAC,oBACAC,QACAC,cAAc,KACdC,gBACAC,WAAW,UACRC,MAEH,MAAMC,KAAEA,GAASC,IACXC,EAAyBC,EAA0Bd,GACnDe,EAA2Bd,EAAsBe,OAAS,EAC1DC,EAA0Bf,EAAqBc,OAAS,EACxDE,EAAcH,GAA4BE,EAA0BN,EAAKQ,IAAI,0CAA4C,GA8B/H,OA5BAC,GAAU,KACN,GAAIf,GAAmBgB,KAAM,CACzB,MAAMC,EAAgBtB,EAAeuB,MAAKD,GAAiBA,EAAcD,OAAShB,GAAmBgB,OACrG,GAAKC,EAID,YADAb,EAASa,GAFTE,QAAQC,KAAK,iCAAiCpB,GAAmBgB,kBAKzE,CAGA,MAAMK,EAAqBxB,EAAqB,GAC1CyB,EAAwB3B,EAAe,GAE7C,GAAI0B,GAAsBC,EAAuB,CAE7C,GAD8BxB,IAAkF,IAAlDyB,EAAQF,EAAoB,kBAGtF,YADAjB,EAASiB,GAITtB,GACAK,EAASkB,EAEjB,IACD,CAACzB,EAAsBF,EAAgBG,EAA8BC,EAAwBC,IAG5FwB,EAACC,EACIvB,KAAAA,GACGsB,EAACE,EAAAA,CACGzB,MAAOA,EACPC,YAAaA,EACbC,cAAeA,EACfK,uBAAwBA,IAI/BE,GAA4Bc,EAACG,EAAAA,CAAsBhC,eAAgBC,EAAuBQ,SAAUA,IAEpGQ,GACGY,EAACI,EAAAA,IACOvB,EACJwB,MAAOvB,EAAKQ,IAAI,2CAChBgB,mBAAoB,CAAC,kBACrBnC,eAAgBE,EAChBO,SAAUA,MAIfT,EAAegB,QACda,EAACI,EAAAA,IACOvB,EACJwB,MAAOhB,EACPiB,mBAAoB,CAAC,iBACrBnC,eAAgBA,EAChBS,SAAUA"}
1
+ {"version":3,"file":"PaymentMethodList.js","sources":["../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodList.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport getProp from '../../../../utils/getProp';\nimport UIElement from '../../../internal/UIElement/UIElement';\nimport { Order, OrderStatus } from '../../../../types/global-types';\nimport OrderPaymentMethods from './OrderPaymentMethods';\nimport InstantPaymentMethods from './InstantPaymentMethods';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { useBrandLogoConfiguration } from './useBrandLogoConfiguration';\nimport PaymentMethodsContainer, { PaymentMethodsContainerProps } from './PaymentMethodsContainer';\nimport { useEffect } from 'preact/hooks';\n\ninterface PaymentMethodListProps extends Omit<PaymentMethodsContainerProps, 'label' | 'classNameModifiers'> {\n instantPaymentMethods?: UIElement[];\n storedPaymentMethods?: UIElement[];\n openFirstStoredPaymentMethod?: boolean;\n openFirstPaymentMethod?: boolean;\n openPaymentMethod?: {\n type: string;\n };\n order?: Order;\n orderStatus?: OrderStatus;\n onOrderCancel?: (order) => void;\n}\n\nconst PaymentMethodList = ({\n paymentMethods,\n instantPaymentMethods,\n storedPaymentMethods,\n openFirstStoredPaymentMethod,\n openFirstPaymentMethod,\n openPaymentMethod,\n order,\n orderStatus = null,\n onOrderCancel,\n onSelect = () => {},\n ...rest\n}: PaymentMethodListProps) => {\n const { i18n } = useCoreContext();\n const brandLogoConfiguration = useBrandLogoConfiguration(paymentMethods);\n const hasInstantPaymentMethods = instantPaymentMethods?.length > 0;\n const hasStoredPaymentMethods = storedPaymentMethods?.length > 0;\n const pmListLabel = hasInstantPaymentMethods || hasStoredPaymentMethods ? i18n.get('paymentMethodsList.otherPayments.label') : '';\n\n useEffect(() => {\n if (openPaymentMethod?.type) {\n const paymentMethod = paymentMethods?.find(paymentMethod => paymentMethod.type === openPaymentMethod?.type);\n if (!paymentMethod) {\n console.warn(`Drop-in: payment method type \"${openPaymentMethod?.type}\" not found`);\n } else {\n onSelect(paymentMethod);\n return;\n }\n }\n\n // Open first PaymentMethodItem\n const firstStoredPayment = storedPaymentMethods?.[0];\n const firstNonStoredPayment = paymentMethods?.[0];\n\n if (firstStoredPayment || firstNonStoredPayment) {\n const shouldOpenFirstStored = openFirstStoredPaymentMethod && getProp(firstStoredPayment, 'props.oneClick') === true;\n if (shouldOpenFirstStored) {\n onSelect(firstStoredPayment);\n return;\n }\n\n if (openFirstPaymentMethod) {\n onSelect(firstNonStoredPayment);\n }\n }\n }, [storedPaymentMethods, paymentMethods, openFirstStoredPaymentMethod, openFirstPaymentMethod, openPaymentMethod]);\n\n return (\n <Fragment>\n {orderStatus && (\n <OrderPaymentMethods\n order={order}\n orderStatus={orderStatus}\n onOrderCancel={onOrderCancel}\n brandLogoConfiguration={brandLogoConfiguration}\n />\n )}\n\n {hasInstantPaymentMethods && <InstantPaymentMethods paymentMethods={instantPaymentMethods} onSelect={onSelect} />}\n\n {hasStoredPaymentMethods && (\n <PaymentMethodsContainer\n {...rest}\n label={i18n.get('paymentMethodsList.storedPayments.label')}\n classNameModifiers={['storedPayments']}\n paymentMethods={storedPaymentMethods}\n onSelect={onSelect}\n ></PaymentMethodsContainer>\n )}\n\n {!!paymentMethods.length && (\n <PaymentMethodsContainer\n {...rest}\n label={pmListLabel}\n classNameModifiers={['otherPayments']}\n paymentMethods={paymentMethods}\n onSelect={onSelect}\n ></PaymentMethodsContainer>\n )}\n </Fragment>\n );\n};\n\nexport default PaymentMethodList;\n"],"names":["PaymentMethodList","paymentMethods","instantPaymentMethods","storedPaymentMethods","openFirstStoredPaymentMethod","openFirstPaymentMethod","openPaymentMethod","order","orderStatus","onOrderCancel","onSelect","rest","i18n","useCoreContext","brandLogoConfiguration","useBrandLogoConfiguration","hasInstantPaymentMethods","length","hasStoredPaymentMethods","pmListLabel","get","useEffect","type","paymentMethod","find","console","warn","firstStoredPayment","firstNonStoredPayment","getProp","h","Fragment","OrderPaymentMethods","InstantPaymentMethods","PaymentMethodsContainer","label","classNameModifiers"],"mappings":"2fAwBMA,MAAAA,EAAoB,EACtBC,iBACAC,wBACAC,uBACAC,+BACAC,yBACAC,oBACAC,QACAC,cAAc,KACdC,gBACAC,WAAW,UACRC,MAEH,MAAMC,KAAEA,GAASC,IACXC,EAAyBC,EAA0Bd,GACnDe,EAA2Bd,GAAuBe,OAAS,EAC3DC,EAA0Bf,GAAsBc,OAAS,EACzDE,EAAcH,GAA4BE,EAA0BN,EAAKQ,IAAI,0CAA4C,GA8B/H,OA5BAC,GAAU,KACN,GAAIf,GAAmBgB,KAAM,CACzB,MAAMC,EAAgBtB,GAAgBuB,MAAKD,GAAiBA,EAAcD,OAAShB,GAAmBgB,OACtG,GAAKC,EAID,YADAb,EAASa,GAFTE,QAAQC,KAAK,iCAAiCpB,GAAmBgB,kBAKzE,CAGA,MAAMK,EAAqBxB,IAAuB,GAC5CyB,EAAwB3B,IAAiB,GAE/C,GAAI0B,GAAsBC,EAAuB,CAE7C,GAD8BxB,IAAkF,IAAlDyB,EAAQF,EAAoB,kBAGtF,YADAjB,EAASiB,GAITtB,GACAK,EAASkB,EAEjB,IACD,CAACzB,EAAsBF,EAAgBG,EAA8BC,EAAwBC,IAG5FwB,EAACC,EACIvB,KAAAA,GACGsB,EAACE,EAAAA,CACGzB,MAAOA,EACPC,YAAaA,EACbC,cAAeA,EACfK,uBAAwBA,IAI/BE,GAA4Bc,EAACG,EAAAA,CAAsBhC,eAAgBC,EAAuBQ,SAAUA,IAEpGQ,GACGY,EAACI,EAAAA,IACOvB,EACJwB,MAAOvB,EAAKQ,IAAI,2CAChBgB,mBAAoB,CAAC,kBACrBnC,eAAgBE,EAChBO,SAAUA,MAIfT,EAAegB,QACda,EAACI,EAAAA,IACOvB,EACJwB,MAAOhB,EACPiB,mBAAoB,CAAC,iBACrBnC,eAAgBA,EAChBS,SAAUA"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../../external/preact/dist/preact.js";import t from"./PaymentMethodItem/PaymentMethodItem.js";import{useCoreContext as o}from"../../../../core/Context/CoreProvider.js";import{useMemo as a}from"../../../../external/preact/hooks/dist/hooks.js";import n from"../../../../utils/uuid.js";import s from"../../../../_virtual/index.js";function d({label:d,classNameModifiers:i=[],paymentMethods:m=[],activePaymentMethod:l=null,cachedPaymentMethods:r={},isLoading:h=!1,isDisablingPaymentMethod:c=!1,showRemovePaymentMethodButton:y,onDisableStoredPaymentMethod:p=()=>{},onSelect:u,showRadioButton:M}){const{i18n:_}=o(),P=a((()=>`select-${n()}`),[]),b=s(["adyen-checkout__payment-methods-list",{"adyen-checkout__payment-methods-list--loading":h},...i.map((e=>`adyen-checkout__payment-methods-list--${e}`))]);return e("div",{className:"adyen-checkout-payment-methods-container"},!!d.length&&e("label",{htmlFor:P,className:"adyen-checkout-payment-methods-list-label"},d),e("div",{id:P,className:b,role:"radiogroup","aria-label":_.get("paymentMethodsList.aria.label"),required:!0},m.map(((o,a,n)=>{const d=l&&l._id===o._id,i=o._id in r,_=l&&n[a+1]&&l._id===n[a+1]._id;return e(t,{className:s({"adyen-checkout__payment-method--next-selected":_}),standalone:1===m.length,paymentMethod:o,isSelected:d,isDisablingPaymentMethod:d&&c,isLoaded:i,isLoading:h,onSelect:u,key:o._id,showRemovePaymentMethodButton:y,showRadioButton:M,onDisableStoredPaymentMethod:p})}))))}export{d as default};
1
+ import{createElement as e}from"../../../../external/preact/dist/preact.js";import t from"./PaymentMethodItem/PaymentMethodItem.js";import{useCoreContext as o}from"../../../../core/Context/CoreProvider.js";import{useMemo as a}from"../../../../external/preact/hooks/dist/hooks.js";import n from"../../../../utils/uuid.js";import s from"../../../../_virtual/index.js";function d({label:d,classNameModifiers:i=[],paymentMethods:m=[],activePaymentMethod:l=null,cachedPaymentMethods:r={},isLoading:c=!1,isDisablingPaymentMethod:h=!1,showRemovePaymentMethodButton:y,onDisableStoredPaymentMethod:p=()=>{},onSelect:u,showRadioButton:M}){const{i18n:_}=o(),P=a((()=>`select-${n()}`),[]),b=s(["adyen-checkout__payment-methods-list",{"adyen-checkout__payment-methods-list--loading":c},...i.map((e=>`adyen-checkout__payment-methods-list--${e}`))]);return e("div",{className:"adyen-checkout-payment-methods-container"},!!d&&e("label",{htmlFor:P,className:"adyen-checkout-payment-methods-list-label"},d),e("div",{id:P,className:b,role:"radiogroup","aria-label":_.get("paymentMethodsList.aria.label"),required:!0},m.map(((o,a,n)=>{const d=l&&l._id===o._id,i=o._id in r,_=l&&n[a+1]&&l._id===n[a+1]._id;return e(t,{className:s({"adyen-checkout__payment-method--next-selected":_}),standalone:1===m.length,paymentMethod:o,isSelected:d,isDisablingPaymentMethod:d&&h,isLoaded:i,isLoading:c,onSelect:u,key:o._id,showRemovePaymentMethodButton:y,showRadioButton:M,onDisableStoredPaymentMethod:p})}))))}export{d as default};
2
2
  //# sourceMappingURL=PaymentMethodsContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentMethodsContainer.js","sources":["../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport PaymentMethodItem from './PaymentMethodItem/PaymentMethodItem';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { useMemo } from 'preact/hooks';\nimport uuid from '../../../../utils/uuid';\nimport classNames from 'classnames';\nimport UIElement from '../../../internal/UIElement';\n\nexport interface PaymentMethodsContainerProps {\n label: string;\n classNameModifiers?: string[];\n paymentMethods: UIElement[];\n activePaymentMethod?: UIElement;\n /**\n * Map that keeps track of which Payment methods (UIElements) already got rendered in the UI\n */\n cachedPaymentMethods: Record<string, boolean>;\n showRemovePaymentMethodButton?: boolean;\n onSelect?: (paymentMethod: UIElement) => void;\n onDisableStoredPaymentMethod?: (storedPaymentMethod) => void;\n isDisablingPaymentMethod?: boolean;\n isLoading: boolean;\n showRadioButton?: boolean;\n}\n\nfunction PaymentMethodsContainer({\n label,\n classNameModifiers = [],\n paymentMethods = [],\n activePaymentMethod = null,\n cachedPaymentMethods = {},\n isLoading = false,\n isDisablingPaymentMethod = false,\n showRemovePaymentMethodButton,\n onDisableStoredPaymentMethod = () => {},\n onSelect,\n showRadioButton\n}: Readonly<PaymentMethodsContainerProps>) {\n const { i18n } = useCoreContext();\n const selectListId: string = useMemo(() => `select-${uuid()}`, []);\n const paymentMethodListClassnames = classNames([\n 'adyen-checkout__payment-methods-list',\n { 'adyen-checkout__payment-methods-list--loading': isLoading },\n ...classNameModifiers.map(m => `adyen-checkout__payment-methods-list--${m}`)\n ]);\n\n return (\n <div className=\"adyen-checkout-payment-methods-container\">\n {!!label.length && (\n <label htmlFor={selectListId} className=\"adyen-checkout-payment-methods-list-label\">\n {label}\n </label>\n )}\n <div\n id={selectListId}\n className={paymentMethodListClassnames}\n role=\"radiogroup\"\n aria-label={i18n.get('paymentMethodsList.aria.label')}\n required\n >\n {paymentMethods.map((paymentMethod, index, paymentMethodsCollection) => {\n const isSelected = activePaymentMethod && activePaymentMethod._id === paymentMethod._id;\n const isLoaded = paymentMethod._id in cachedPaymentMethods;\n const isNextOneSelected =\n activePaymentMethod &&\n paymentMethodsCollection[index + 1] &&\n activePaymentMethod._id === paymentMethodsCollection[index + 1]._id;\n\n return (\n <PaymentMethodItem\n className={classNames({ 'adyen-checkout__payment-method--next-selected': isNextOneSelected })}\n standalone={paymentMethods.length === 1}\n paymentMethod={paymentMethod}\n isSelected={isSelected}\n isDisablingPaymentMethod={isSelected && isDisablingPaymentMethod}\n isLoaded={isLoaded}\n isLoading={isLoading}\n onSelect={onSelect}\n key={paymentMethod._id}\n showRemovePaymentMethodButton={showRemovePaymentMethodButton}\n showRadioButton={showRadioButton}\n onDisableStoredPaymentMethod={onDisableStoredPaymentMethod}\n />\n );\n })}\n </div>\n </div>\n );\n}\n\nexport default PaymentMethodsContainer;\n"],"names":["PaymentMethodsContainer","label","classNameModifiers","paymentMethods","activePaymentMethod","cachedPaymentMethods","isLoading","isDisablingPaymentMethod","showRemovePaymentMethodButton","onDisableStoredPaymentMethod","onSelect","showRadioButton","i18n","useCoreContext","selectListId","useMemo","uuid","paymentMethodListClassnames","classNames","map","m","h","div","className","length","htmlFor","id","role","aria-label","get","required","paymentMethod","index","paymentMethodsCollection","isSelected","_id","isLoaded","isNextOneSelected","PaymentMethodItem","standalone","key"],"mappings":"6WAyBA,SAASA,GAAwBC,MAC7BA,EAAKC,mBACLA,EAAqB,GAAEC,eACvBA,EAAiB,GAAEC,oBACnBA,EAAsB,KAAIC,qBAC1BA,EAAuB,CAAA,EAAEC,UACzBA,GAAY,EAAKC,yBACjBA,GAA2B,EAAKC,8BAChCA,EAA6BC,6BAC7BA,EAA+B,OAAQC,SACvCA,EAAQC,gBACRA,IAEA,MAAMC,KAAEA,GAASC,IACXC,EAAuBC,GAAQ,IAAM,UAAUC,OAAU,IACzDC,EAA8BC,EAAW,CAC3C,uCACA,CAAE,gDAAiDZ,MAChDJ,EAAmBiB,KAAIC,GAAK,yCAAyCA,QAG5E,OACIC,EAACC,MAAAA,CAAIC,UAAU,8CACRtB,EAAMuB,QACLH,EAACpB,QAAAA,CAAMwB,QAASX,EAAcS,UAAU,6CACnCtB,GAGToB,EAACC,MAAAA,CACGI,GAAIZ,EACJS,UAAWN,EACXU,KAAK,aACLC,aAAYhB,EAAKiB,IAAI,iCACrBC,UAAAA,GAEC3B,EAAegB,KAAI,CAACY,EAAeC,EAAOC,KACvC,MAAMC,EAAa9B,GAAuBA,EAAoB+B,MAAQJ,EAAcI,IAC9EC,EAAWL,EAAcI,OAAO9B,EAChCgC,EACFjC,GACA6B,EAAyBD,EAAQ,IACjC5B,EAAoB+B,MAAQF,EAAyBD,EAAQ,GAAGG,IAEpE,OACId,EAACiB,EAAAA,CACGf,UAAWL,EAAW,CAAE,gDAAiDmB,IACzEE,WAAsC,IAA1BpC,EAAeqB,OAC3BO,cAAeA,EACfG,WAAYA,EACZ3B,yBAA0B2B,GAAc3B,EACxC6B,SAAUA,EACV9B,UAAWA,EACXI,SAAUA,EACV8B,IAAKT,EAAcI,IACnB3B,8BAA+BA,EAC/BG,gBAAiBA,EACjBF,6BAA8BA,QAO1D"}
1
+ {"version":3,"file":"PaymentMethodsContainer.js","sources":["../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodsContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport PaymentMethodItem from './PaymentMethodItem/PaymentMethodItem';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { useMemo } from 'preact/hooks';\nimport uuid from '../../../../utils/uuid';\nimport classNames from 'classnames';\nimport UIElement from '../../../internal/UIElement';\n\nexport interface PaymentMethodsContainerProps {\n label?: string;\n classNameModifiers?: string[];\n paymentMethods: UIElement[];\n activePaymentMethod?: UIElement;\n /**\n * Map that keeps track of which Payment methods (UIElements) already got rendered in the UI\n */\n cachedPaymentMethods: Record<string, boolean>;\n showRemovePaymentMethodButton?: boolean;\n onSelect?: (paymentMethod: UIElement) => void;\n onDisableStoredPaymentMethod?: (storedPaymentMethod) => void;\n isDisablingPaymentMethod?: boolean;\n isLoading: boolean;\n showRadioButton?: boolean;\n}\n\nfunction PaymentMethodsContainer({\n label,\n classNameModifiers = [],\n paymentMethods = [],\n activePaymentMethod = null,\n cachedPaymentMethods = {},\n isLoading = false,\n isDisablingPaymentMethod = false,\n showRemovePaymentMethodButton,\n onDisableStoredPaymentMethod = () => {},\n onSelect,\n showRadioButton\n}: Readonly<PaymentMethodsContainerProps>) {\n const { i18n } = useCoreContext();\n const selectListId: string = useMemo(() => `select-${uuid()}`, []);\n const paymentMethodListClassnames = classNames([\n 'adyen-checkout__payment-methods-list',\n { 'adyen-checkout__payment-methods-list--loading': isLoading },\n ...classNameModifiers.map(m => `adyen-checkout__payment-methods-list--${m}`)\n ]);\n\n return (\n <div className=\"adyen-checkout-payment-methods-container\">\n {!!label && (\n <label htmlFor={selectListId} className=\"adyen-checkout-payment-methods-list-label\">\n {label}\n </label>\n )}\n <div\n id={selectListId}\n className={paymentMethodListClassnames}\n role=\"radiogroup\"\n aria-label={i18n.get('paymentMethodsList.aria.label')}\n required\n >\n {paymentMethods.map((paymentMethod, index, paymentMethodsCollection) => {\n const isSelected = activePaymentMethod && activePaymentMethod._id === paymentMethod._id;\n const isLoaded = paymentMethod._id in cachedPaymentMethods;\n const isNextOneSelected =\n activePaymentMethod &&\n paymentMethodsCollection[index + 1] &&\n activePaymentMethod._id === paymentMethodsCollection[index + 1]._id;\n\n return (\n <PaymentMethodItem\n className={classNames({ 'adyen-checkout__payment-method--next-selected': isNextOneSelected })}\n standalone={paymentMethods.length === 1}\n paymentMethod={paymentMethod}\n isSelected={isSelected}\n isDisablingPaymentMethod={isSelected && isDisablingPaymentMethod}\n isLoaded={isLoaded}\n isLoading={isLoading}\n onSelect={onSelect}\n key={paymentMethod._id}\n showRemovePaymentMethodButton={showRemovePaymentMethodButton}\n showRadioButton={showRadioButton}\n onDisableStoredPaymentMethod={onDisableStoredPaymentMethod}\n />\n );\n })}\n </div>\n </div>\n );\n}\n\nexport default PaymentMethodsContainer;\n"],"names":["PaymentMethodsContainer","label","classNameModifiers","paymentMethods","activePaymentMethod","cachedPaymentMethods","isLoading","isDisablingPaymentMethod","showRemovePaymentMethodButton","onDisableStoredPaymentMethod","onSelect","showRadioButton","i18n","useCoreContext","selectListId","useMemo","uuid","paymentMethodListClassnames","classNames","map","m","h","div","className","htmlFor","id","role","aria-label","get","required","paymentMethod","index","paymentMethodsCollection","isSelected","_id","isLoaded","isNextOneSelected","PaymentMethodItem","standalone","length","key"],"mappings":"6WAyBA,SAASA,GAAwBC,MAC7BA,EAAKC,mBACLA,EAAqB,GAAEC,eACvBA,EAAiB,GAAEC,oBACnBA,EAAsB,KAAIC,qBAC1BA,EAAuB,CAAA,EAAEC,UACzBA,GAAY,EAAKC,yBACjBA,GAA2B,EAAKC,8BAChCA,EAA6BC,6BAC7BA,EAA+B,OAAQC,SACvCA,EAAQC,gBACRA,IAEA,MAAMC,KAAEA,GAASC,IACXC,EAAuBC,GAAQ,IAAM,UAAUC,OAAU,IACzDC,EAA8BC,EAAW,CAC3C,uCACA,CAAE,gDAAiDZ,MAChDJ,EAAmBiB,KAAIC,GAAK,yCAAyCA,QAG5E,OACIC,EAACC,MAAAA,CAAIC,UAAU,8CACRtB,GACCoB,EAACpB,QAAAA,CAAMuB,QAASV,EAAcS,UAAU,6CACnCtB,GAGToB,EAACC,MAAAA,CACGG,GAAIX,EACJS,UAAWN,EACXS,KAAK,aACLC,aAAYf,EAAKgB,IAAI,iCACrBC,UAAAA,GAEC1B,EAAegB,KAAI,CAACW,EAAeC,EAAOC,KACvC,MAAMC,EAAa7B,GAAuBA,EAAoB8B,MAAQJ,EAAcI,IAC9EC,EAAWL,EAAcI,OAAO7B,EAChC+B,EACFhC,GACA4B,EAAyBD,EAAQ,IACjC3B,EAAoB8B,MAAQF,EAAyBD,EAAQ,GAAGG,IAEpE,OACIb,EAACgB,EAAAA,CACGd,UAAWL,EAAW,CAAE,gDAAiDkB,IACzEE,WAAsC,IAA1BnC,EAAeoC,OAC3BT,cAAeA,EACfG,WAAYA,EACZ1B,yBAA0B0B,GAAc1B,EACxC4B,SAAUA,EACV7B,UAAWA,EACXI,SAAUA,EACV8B,IAAKV,EAAcI,IACnB1B,8BAA+BA,EAC/BG,gBAAiBA,EACjBF,6BAA8BA,QAO1D"}
@@ -1,2 +1,2 @@
1
- function t(t,e){return{instantPaymentMethods:t.paymentMethods.filter((({type:t})=>e.includes(t))),paymentMethods:t.paymentMethods.filter((({type:t})=>!e.includes(t))),storedPaymentMethods:t.storedPaymentMethods}}export{t as default};
1
+ function t(t,e){const n=({type:t})=>"fastlane"===t,a=({type:t})=>e.includes(t);return{fastlanePaymentMethod:t.paymentMethods.find(n),instantPaymentMethods:t.paymentMethods.filter(a),paymentMethods:t.paymentMethods.filter((t=>!a(t)&&!n(t))),storedPaymentMethods:t.storedPaymentMethods}}export{t as default};
2
2
  //# sourceMappingURL=splitPaymentMethods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"splitPaymentMethods.js","sources":["../../../../../src/components/Dropin/elements/splitPaymentMethods.ts"],"sourcesContent":["import { InstantPaymentTypes } from '../types';\nimport PaymentMethods from '../../../core/ProcessResponse/PaymentMethods';\n\nfunction splitPaymentMethods(paymentMethods: PaymentMethods, instantPaymentTypes: InstantPaymentTypes[]) {\n return {\n instantPaymentMethods: paymentMethods.paymentMethods.filter(({ type }) => instantPaymentTypes.includes(type as InstantPaymentTypes)),\n paymentMethods: paymentMethods.paymentMethods.filter(({ type }) => !instantPaymentTypes.includes(type as InstantPaymentTypes)),\n storedPaymentMethods: paymentMethods.storedPaymentMethods\n };\n}\n\nexport default splitPaymentMethods;\n"],"names":["splitPaymentMethods","paymentMethods","instantPaymentTypes","instantPaymentMethods","filter","type","includes","storedPaymentMethods"],"mappings":"AAGA,SAASA,EAAoBC,EAAgCC,GACzD,MAAO,CACHC,sBAAuBF,EAAeA,eAAeG,QAAO,EAAGC,UAAWH,EAAoBI,SAASD,KACvGJ,eAAgBA,EAAeA,eAAeG,QAAO,EAAGC,WAAYH,EAAoBI,SAASD,KACjGE,qBAAsBN,EAAeM,qBAE7C"}
1
+ {"version":3,"file":"splitPaymentMethods.js","sources":["../../../../../src/components/Dropin/elements/splitPaymentMethods.ts"],"sourcesContent":["import PaymentMethods from '../../../core/ProcessResponse/PaymentMethods';\nimport type { InstantPaymentTypes } from '../types';\nimport type { PaymentMethod, StoredPaymentMethod } from '../../../types/global-types';\n\ninterface SplitPaymentMethods {\n fastlanePaymentMethod: PaymentMethod | undefined;\n storedPaymentMethods: StoredPaymentMethod[];\n paymentMethods: PaymentMethod[];\n instantPaymentMethods: PaymentMethod[];\n}\n\nfunction splitPaymentMethods(paymentMethods: PaymentMethods, instantPaymentTypes: InstantPaymentTypes[]): SplitPaymentMethods {\n const isFastlane = ({ type }: PaymentMethod) => type === 'fastlane';\n const isInstantPaymentMethod = ({ type }: PaymentMethod) => instantPaymentTypes.includes(type as InstantPaymentTypes);\n\n return {\n fastlanePaymentMethod: paymentMethods.paymentMethods.find(isFastlane),\n instantPaymentMethods: paymentMethods.paymentMethods.filter(isInstantPaymentMethod),\n paymentMethods: paymentMethods.paymentMethods.filter(pm => !isInstantPaymentMethod(pm) && !isFastlane(pm)),\n storedPaymentMethods: paymentMethods.storedPaymentMethods\n };\n}\n\nexport default splitPaymentMethods;\n"],"names":["splitPaymentMethods","paymentMethods","instantPaymentTypes","isFastlane","type","isInstantPaymentMethod","includes","fastlanePaymentMethod","find","instantPaymentMethods","filter","pm","storedPaymentMethods"],"mappings":"AAWA,SAASA,EAAoBC,EAAgCC,GACzD,MAAMC,EAAa,EAAGC,UAAmC,aAATA,EAC1CC,EAAyB,EAAGD,UAA0BF,EAAoBI,SAASF,GAEzF,MAAO,CACHG,sBAAuBN,EAAeA,eAAeO,KAAKL,GAC1DM,sBAAuBR,EAAeA,eAAeS,OAAOL,GAC5DJ,eAAgBA,EAAeA,eAAeS,QAAOC,IAAON,EAAuBM,KAAQR,EAAWQ,KACtGC,qBAAsBX,EAAeW,qBAE7C"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./GooglePayService.js";import s from"./components/GooglePayButton.js";import r from"./defaultProps.js";import{getGooglePayLocale as n,formatGooglePayContactToAdyenAddressFormat as i}from"./utils.js";import a from"../../utils/browserInfo.js";import h from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as l}from"../tx-variants.js";import{sanitizeResponse as p,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import{ANALYTICS_INSTANT_PAYMENT_BUTTON as y,ANALYTICS_SELECTED_STR as u}from"../../core/Analytics/constants.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class c extends e{getPaymentMethodFromPaymentMethodsResponse(t){return this.core.paymentMethodsResponse.find(t||this.constructor.type)||this.core.paymentMethodsResponse.find(l.paywithgoogle)}formatProps(t){const e=t.buttonSizeMode??(t.isDropin?"fill":"static"),o=n(t.buttonLocale??t.i18n?.locale),s=[...t.callbackIntents,"PAYMENT_AUTHORIZATION"];return{...t,configuration:t.configuration,buttonSizeMode:e,buttonLocale:o,callbackIntents:s}}formatData(){const{googlePayCardNetwork:t,googlePayToken:e,billingAddress:o,deliveryAddress:s}=this.state,{isExpress:r}=this.props;return{paymentMethod:{type:this.type,googlePayCardNetwork:t,googlePayToken:e,...r&&{subtype:"express"}},browserInfo:this.browserInfo,origin:!!window&&window.location.origin,...o&&{billingAddress:o},...s&&{deliveryAddress:s}}}submitAnalytics(t){super.submitAnalytics({...t},this.props)}showGooglePayPaymentSheet(){this.googlePay.initiatePayment(this.props,this.core.options.countryCode).catch((t=>{this.handleError(new h("CANCELED"===t.statusCode?"CANCEL":"ERROR",t.toString(),{cause:t}))}))}async handleAuthorization(){return new Promise(((t,e)=>{this.props.onAuthorized||t();const{authorizedEvent:o,billingAddress:s,deliveryAddress:r}=this.state;this.props.onAuthorized({authorizedEvent:o,...s&&{billingAddress:s},...r&&{deliveryAddress:r}},{resolve:t,reject:e})})).catch((t=>{const e={error:{googlePayError:t}};return Promise.reject(e)}))}get isValid(){return!!this.state.googlePayToken}async isAvailable(){return this.isReadyToPay().then((t=>{if(!t.result)throw new h("ERROR","GooglePay is not available");if(!1===t.paymentMethodPresent)throw new h("ERROR","GooglePay - No paymentMethodPresent");return Promise.resolve()})).catch((t=>Promise.reject(t)))}get browserInfo(){return a()}get icon(){return this.props.icon??this.resources.getImage()("googlepay")}render(){return this.props.showPayButton?t(s,{buttonColor:this.props.buttonColor,buttonType:this.props.buttonType,buttonSizeMode:this.props.buttonSizeMode,buttonLocale:this.props.buttonLocale,buttonRootNode:this.props.buttonRootNode,buttonRadius:this.props.buttonRadius,paymentsClient:this.googlePay.paymentsClient,onClick:this.submit}):null}constructor(t,e){super(t,e),g(this,"googlePay",void 0),g(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:u,target:y}),new Promise(((t,e)=>this.props.onClick(t,e))).then(this.showGooglePayPaymentSheet).catch((()=>{}))})),g(this,"onPaymentAuthorized",(async t=>{const e=i(t.paymentMethodData.info.billingAddress),o=i(t.shippingAddress,!0);return this.setState({authorizedEvent:t,googlePayToken:t.paymentMethodData.tokenizationData.token,googlePayCardNetwork:t.paymentMethodData.info.cardNetwork,...e&&{billingAddress:e},...o&&{deliveryAddress:o}}),new Promise((t=>{this.handleAuthorization().then(this.makePaymentsCall).then(p).then(d).then((e=>(t({transactionState:"SUCCESS"}),e))).then((t=>{this.handleResponse(t)})).catch((e=>{this.setElementStatus("ready");const o=e?.error?.googlePayError,s=this.props.i18n.get("error.subtitle.payment"),r="string"==typeof o?{intent:"PAYMENT_AUTHORIZATION",reason:"OTHER_ERROR",message:o||s}:{intent:o?.intent||"PAYMENT_AUTHORIZATION",reason:o?.reason||"OTHER_ERROR",message:o?.message||s};t({transactionState:"ERROR",error:r});const n={...e,error:{googlePayError:r}};this.handleFailedResult(n)}))}))})),g(this,"isReadyToPay",(()=>this.googlePay.isReadyToPay(this.props))),g(this,"prefetch",(()=>this.googlePay.prefetchPaymentData(this.props,this.core.options.countryCode))),this.handleAuthorization=this.handleAuthorization.bind(this),this.showGooglePayPaymentSheet=this.showGooglePayPaymentSheet.bind(this);const{isExpress:s,paymentDataCallbacks:r}=this.props;if(!1===s&&r?.onPaymentDataChanged)throw new h("IMPLEMENTATION_ERROR",'GooglePay - You must set "isExpress" flag to "true" in order to use "onPaymentDataChanged" callback');if(!this.props.configuration.merchantId)throw new h("IMPLEMENTATION_ERROR","GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.");this.googlePay=new o(this.props.environment,{...s&&r?.onPaymentDataChanged&&{onPaymentDataChanged:r.onPaymentDataChanged},onPaymentAuthorized:this.onPaymentAuthorized})}}g(c,"type",l.googlepay),g(c,"txVariants",[l.googlepay,l.paywithgoogle]),g(c,"defaultProps",r);export{c as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./GooglePayService.js";import s from"./components/GooglePayButton.js";import r from"./defaultProps.js";import{getGooglePayLocale as n,formatGooglePayContactToAdyenAddressFormat as i}from"./utils.js";import a from"../../utils/browserInfo.js";import h from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as l}from"../tx-variants.js";import{sanitizeResponse as p,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import{ANALYTICS_INSTANT_PAYMENT_BUTTON as y,ANALYTICS_SELECTED_STR as u}from"../../core/Analytics/constants.js";function c(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class g extends e{getPaymentMethodFromPaymentMethodsResponse(t){return this.core.paymentMethodsResponse.find(t||this.constructor.type)||this.core.paymentMethodsResponse.find(l.paywithgoogle)}formatProps(t){const e=t.buttonSizeMode??(t.isDropin?"fill":"static"),o=n(t.buttonLocale??t.i18n?.locale),s=[...t.callbackIntents,"PAYMENT_AUTHORIZATION"];return{...t,configuration:t.configuration,buttonSizeMode:e,buttonLocale:o,callbackIntents:s}}formatData(){const{googlePayCardNetwork:t,googlePayToken:e,billingAddress:o,deliveryAddress:s}=this.state,{isExpress:r}=this.props;return{paymentMethod:{type:this.type,googlePayCardNetwork:t,googlePayToken:e,...r&&{subtype:"express"}},browserInfo:this.browserInfo,origin:!!window&&window.location.origin,...o&&{billingAddress:o},...s&&{deliveryAddress:s}}}submitAnalytics(t){super.submitAnalytics({...t},this.props)}showGooglePayPaymentSheet(){this.googlePay.initiatePayment(this.props,this.core.options.countryCode).catch((t=>{this.handleError(new h("CANCELED"===t.statusCode?"CANCEL":"ERROR",t.toString(),{cause:t}))}))}async handleAuthorization(){return new Promise(((t,e)=>{this.props.onAuthorized||t();const{authorizedEvent:o,billingAddress:s,deliveryAddress:r}=this.state;this.props.onAuthorized({authorizedEvent:o,...s&&{billingAddress:s},...r&&{deliveryAddress:r}},{resolve:t,reject:e})})).catch((t=>{const e={error:{googlePayError:t}};return Promise.reject(e)}))}get isValid(){return!0}async isAvailable(){return this.isReadyToPay().then((t=>{if(!t.result)throw new h("ERROR","GooglePay is not available");if(!1===t.paymentMethodPresent)throw new h("ERROR","GooglePay - No paymentMethodPresent");return Promise.resolve()})).catch((t=>Promise.reject(t)))}get browserInfo(){return a()}get icon(){return this.props.icon??this.resources.getImage()("googlepay")}render(){return this.props.showPayButton?t(s,{buttonColor:this.props.buttonColor,buttonType:this.props.buttonType,buttonSizeMode:this.props.buttonSizeMode,buttonLocale:this.props.buttonLocale,buttonRootNode:this.props.buttonRootNode,buttonRadius:this.props.buttonRadius,paymentsClient:this.googlePay.paymentsClient,onClick:this.submit}):null}constructor(t,e){super(t,e),c(this,"googlePay",void 0),c(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:u,target:y}),new Promise(((t,e)=>this.props.onClick(t,e))).then(this.showGooglePayPaymentSheet).catch((()=>{}))})),c(this,"onPaymentAuthorized",(async t=>{const e=i(t.paymentMethodData.info.billingAddress),o=i(t.shippingAddress,!0);return this.setState({authorizedEvent:t,googlePayToken:t.paymentMethodData.tokenizationData.token,googlePayCardNetwork:t.paymentMethodData.info.cardNetwork,...e&&{billingAddress:e},...o&&{deliveryAddress:o}}),new Promise((t=>{this.handleAuthorization().then(this.makePaymentsCall).then(p).then(d).then((e=>(t({transactionState:"SUCCESS"}),e))).then((t=>{this.handleResponse(t)})).catch((e=>{this.setElementStatus("ready");const o=e?.error?.googlePayError,s=this.props.i18n.get("error.subtitle.payment"),r="string"==typeof o?{intent:"PAYMENT_AUTHORIZATION",reason:"OTHER_ERROR",message:o||s}:{intent:o?.intent||"PAYMENT_AUTHORIZATION",reason:o?.reason||"OTHER_ERROR",message:o?.message||s};t({transactionState:"ERROR",error:r});const n={...e,error:{googlePayError:r}};this.handleFailedResult(n)}))}))})),c(this,"isReadyToPay",(()=>this.googlePay.isReadyToPay(this.props))),c(this,"prefetch",(()=>this.googlePay.prefetchPaymentData(this.props,this.core.options.countryCode))),this.handleAuthorization=this.handleAuthorization.bind(this),this.showGooglePayPaymentSheet=this.showGooglePayPaymentSheet.bind(this);const{isExpress:s,paymentDataCallbacks:r}=this.props;if(!1===s&&r?.onPaymentDataChanged)throw new h("IMPLEMENTATION_ERROR",'GooglePay - You must set "isExpress" flag to "true" in order to use "onPaymentDataChanged" callback');if(!this.props.configuration.merchantId)throw new h("IMPLEMENTATION_ERROR","GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.");this.googlePay=new o(this.props.environment,{...s&&r?.onPaymentDataChanged&&{onPaymentDataChanged:r.onPaymentDataChanged},onPaymentAuthorized:this.onPaymentAuthorized})}}c(g,"type",l.googlepay),c(g,"txVariants",[l.googlepay,l.paywithgoogle]),c(g,"defaultProps",r);export{g as default};
2
2
  //# sourceMappingURL=GooglePay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { SendAnalyticsObject } from '../../core/Analytics/types';\n\nimport type { AddressData, BrowserInfo, PaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static type = TxVariants.googlepay;\n public static txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string): PaymentMethod {\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n return {\n ...props,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Validation\n */\n get isValid(): boolean {\n return !!this.state.googlePayToken;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n render() {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","this","core","paymentMethodsResponse","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","submitAnalytics","analyticsObj","super","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","resources","getImage","render","showPayButton","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","merchantId","GooglePayService","environment","googlepay","txVariants","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { SendAnalyticsObject } from '../../core/Analytics/types';\n\nimport type { AddressData, BrowserInfo, PaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static type = TxVariants.googlepay;\n public static txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string): PaymentMethod {\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n return {\n ...props,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n public get isValid(): boolean {\n return true;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n render() {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","this","core","paymentMethodsResponse","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","submitAnalytics","analyticsObj","super","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","resources","getImage","render","showPayButton","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","merchantId","GooglePayService","environment","googlepay","txVariants","defaultProps"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import{CoreProvider as r}from"../../core/Context/CoreProvider.js";import{TxVariants as s}from"../tx-variants.js";import o from"./components/FastlaneComponent.js";function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class a extends e{formatData(){return{paymentMethod:{type:a.type,fastlaneData:btoa(JSON.stringify({fastlaneSessionId:this.props.fastlaneSessionId,tokenId:this.props.tokenId}))}}}async isAvailable(){const{tokenId:t,lastFour:e,brand:r,email:s}=this.props;return t&&e&&r&&s?Promise.resolve():Promise.reject()}get isValid(){return!0}get icon(){return this.props.icon??this.resources.getImage()("card")}get brands(){const{brands:t}=this.props;return t.map((t=>({icon:this.props.modules.resources.getImage()(t),name:t})))}render(){return t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(o,{lastFour:this.props.lastFour,brand:this.props.brand,payButton:this.payButton,setComponentRef:this.setComponentRef,showPayButton:this.props.showPayButton}))}}n(a,"type",s.fastlane),n(a,"defaultProps",{keepBrandsVisible:!0});export{a as default};
2
+ //# sourceMappingURL=Fastlane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fastlane.js","sources":["../../../../src/components/PayPalFastlane/Fastlane.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport { TxVariants } from '../tx-variants';\nimport FastlaneComponent from './components/FastlaneComponent';\nimport type { FastlaneConfiguration } from './types';\n\nclass Fastlane extends UIElement<FastlaneConfiguration> {\n public static readonly type = TxVariants.fastlane;\n\n protected static defaultProps = {\n keepBrandsVisible: true\n };\n\n protected override formatData() {\n return {\n paymentMethod: {\n type: Fastlane.type,\n fastlaneData: btoa(\n JSON.stringify({\n fastlaneSessionId: this.props.fastlaneSessionId,\n tokenId: this.props.tokenId\n })\n )\n }\n };\n }\n\n public override async isAvailable(): Promise<void> {\n const { tokenId, lastFour, brand, email } = this.props;\n if (tokenId && lastFour && brand && email) {\n return Promise.resolve();\n }\n return Promise.reject();\n }\n\n public override get isValid(): boolean {\n return true;\n }\n\n /**\n * Used to display payment method logo within Drop-in\n */\n public override get icon(): string {\n return this.props.icon ?? this.resources.getImage()('card');\n }\n\n /**\n * Used to display the payment method supported brands within Drop-in\n */\n public get brands(): { icon: string; name: string }[] {\n const { brands } = this.props;\n return brands.map(brand => ({ icon: this.props.modules.resources.getImage()(brand), name: brand }));\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <FastlaneComponent\n lastFour={this.props.lastFour}\n brand={this.props.brand}\n payButton={this.payButton}\n setComponentRef={this.setComponentRef}\n showPayButton={this.props.showPayButton}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default Fastlane;\n"],"names":["Fastlane","UIElement","formatData","paymentMethod","type","fastlaneData","btoa","JSON","stringify","fastlaneSessionId","this","props","tokenId","isAvailable","lastFour","brand","email","Promise","resolve","reject","isValid","icon","resources","getImage","brands","map","modules","name","render","h","CoreProvider","i18n","loadingContext","FastlaneComponent","payButton","setComponentRef","showPayButton","_define_property","TxVariants","fastlane","defaultProps","keepBrandsVisible"],"mappings":"8ZAOA,MAAMA,UAAiBC,EAOAC,UAAAA,GACf,MAAO,CACHC,cAAe,CACXC,KAAMJ,EAASI,KACfC,aAAcC,KACVC,KAAKC,UAAU,CACXC,kBAAmBC,KAAKC,MAAMF,kBAC9BG,QAASF,KAAKC,MAAMC,YAKxC,CAEA,iBAAsBC,GAClB,MAAMD,QAAEA,EAAOE,SAAEA,EAAQC,MAAEA,EAAKC,MAAEA,GAAUN,KAAKC,MACjD,OAAIC,GAAWE,GAAYC,GAASC,EACzBC,QAAQC,UAEZD,QAAQE,QACnB,CAEA,WAAoBC,GAChB,OAAO,CACX,CAKA,QAAoBC,GAChB,OAAOX,KAAKC,MAAMU,MAAQX,KAAKY,UAAUC,UAAfb,CAA0B,OACxD,CAKA,UAAWc,GACP,MAAMA,OAAEA,GAAWd,KAAKC,MACxB,OAAOa,EAAOC,KAAIV,IAAU,CAAEM,KAAMX,KAAKC,MAAMe,QAAQJ,UAAUC,UAA7Bb,CAAwCK,GAAQY,KAAMZ,KAC9F,CAEAa,MAAAA,GACI,OACIC,EAACC,EAAAA,CAAaC,KAAMrB,KAAKC,MAAMoB,KAAMC,eAAgBtB,KAAKC,MAAMqB,eAAgBV,UAAWZ,KAAKY,WAC5FO,EAACI,EAAAA,CACGnB,SAAUJ,KAAKC,MAAMG,SACrBC,MAAOL,KAAKC,MAAMI,MAClBmB,UAAWxB,KAAKwB,UAChBC,gBAAiBzB,KAAKyB,gBACtBC,cAAe1B,KAAKC,MAAMyB,gBAI1C,EA3DAC,EADErC,EACqBI,OAAOkC,EAAWC,UAEzCF,EAHErC,EAGewC,eAAe,CAC5BC,mBAAmB"}