@adyen/adyen-web 6.0.3 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/adyen.css +1 -1
  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 +14 -4
  6. package/dist/es/adyen.css +1 -1
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/Card/Card.js +1 -1
  9. package/dist/es/components/Card/Card.js.map +1 -1
  10. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  11. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  12. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  13. package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
  14. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  15. package/dist/es/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js +1 -1
  16. package/dist/es/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js.map +1 -1
  17. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  18. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  19. package/dist/es/components/internal/Address/validate.js +1 -1
  20. package/dist/es/components/internal/Address/validate.js.map +1 -1
  21. package/dist/es/components/internal/Button/Button.js +1 -1
  22. package/dist/es/components/internal/Button/Button.js.map +1 -1
  23. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  24. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  25. package/dist/es/core/Analytics/analyticsPreProcessor.js +1 -1
  26. package/dist/es/core/Analytics/analyticsPreProcessor.js.map +1 -1
  27. package/dist/es/core/Analytics/utils.js +1 -1
  28. package/dist/es/core/Analytics/utils.js.map +1 -1
  29. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  30. package/dist/es/core/core.js +1 -1
  31. package/dist/es/index.d.ts +14 -4
  32. package/dist/es/utils/constants/currency-decimals.js +1 -1
  33. package/dist/es/utils/constants/currency-decimals.js.map +1 -1
  34. package/dist/es-legacy/adyen.css +1 -1
  35. package/dist/es-legacy/adyen.css.map +1 -1
  36. package/dist/es-legacy/components/Card/Card.js +1 -1
  37. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  38. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  39. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  40. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  41. package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
  42. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  43. package/dist/es-legacy/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js +1 -1
  44. package/dist/es-legacy/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js.map +1 -1
  45. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  46. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  47. package/dist/es-legacy/components/internal/Address/validate.js +1 -1
  48. package/dist/es-legacy/components/internal/Address/validate.js.map +1 -1
  49. package/dist/es-legacy/components/internal/Button/Button.js +1 -1
  50. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  51. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  52. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  53. package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js +1 -1
  54. package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js.map +1 -1
  55. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  56. package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
  57. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  58. package/dist/es-legacy/core/core.js +1 -1
  59. package/dist/es-legacy/utils/constants/currency-decimals.js +1 -1
  60. package/dist/es-legacy/utils/constants/currency-decimals.js.map +1 -1
  61. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../../src/components/internal/Button/Button.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport Spinner from '../Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport './Button.scss';\nimport { ButtonProps, ButtonState } from './types';\n\nclass Button extends Component<ButtonProps, ButtonState> {\n public static defaultProps = {\n status: 'default',\n variant: 'primary',\n disabled: false,\n label: '',\n inline: false,\n target: '_self',\n onClick: () => {}\n };\n\n public onClick = e => {\n e.preventDefault();\n\n if (!this.props.disabled) {\n this.props.onClick(e, { complete: this.complete });\n }\n };\n\n public complete = (delay = 1000) => {\n this.setState({ completed: true });\n setTimeout(() => {\n this.setState({ completed: false });\n }, delay);\n };\n\n render({ classNameModifiers = [], disabled, href, icon, inline, label, status, variant }, { completed }) {\n const { i18n } = useCoreContext();\n\n const buttonIcon = icon ? <img className=\"adyen-checkout__button__icon\" src={icon} alt=\"\" aria-hidden=\"true\" /> : '';\n\n const modifiers = [\n ...classNameModifiers,\n ...(variant !== 'primary' ? [variant] : []),\n ...(inline ? ['inline'] : []),\n ...(completed ? ['completed'] : []),\n ...(status === 'loading' || status === 'redirect' ? ['loading'] : [])\n ];\n\n const buttonClasses = classNames(['adyen-checkout__button', ...modifiers.map(m => `adyen-checkout__button--${m}`)]);\n\n const buttonStates = {\n loading: <Spinner size=\"medium\" />,\n redirect: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n {i18n.get('payButton.redirecting')}\n </span>\n ),\n default: (\n <span className=\"adyen-checkout__button__content\">\n {buttonIcon}\n <span className=\"adyen-checkout__button__text\">{label}</span>\n </span>\n )\n };\n\n const buttonText = buttonStates[status] || buttonStates.default;\n\n if (href) {\n return (\n <a className={buttonClasses} href={href} disabled={disabled} target={this.props.target} rel={this.props.rel}>\n {buttonText}\n </a>\n );\n }\n\n return (\n <button className={buttonClasses} type=\"button\" disabled={disabled} onClick={this.onClick}>\n {buttonText}\n {status !== 'loading' && status !== 'redirect' && this.props.children}\n </button>\n );\n }\n}\n\nexport default Button;\n"],"names":["Button","Component","static","status","variant","disabled","label","inline","target","onClick","e","preventDefault","this","props","complete","delay","setState","completed","setTimeout","render","classNameModifiers","href","icon","i18n","useCoreContext","buttonIcon","h","img","className","src","alt","aria-hidden","modifiers","buttonClasses","classNames","map","m","buttonStates","loading","Spinner","size","redirect","span","get","default","buttonText","a","rel","button","type","children"],"mappings":"wPAOA,MAAMA,UAAeC,EACjBC,oBAA6B,CACzBC,OAAQ,UACRC,QAAS,UACTC,UAAU,EACVC,MAAO,GACPC,QAAQ,EACRC,OAAQ,QACRC,QAAS,QAGNA,QAAUC,IACbA,EAAEC,iBAEGC,KAAKC,MAAMR,UACZO,KAAKC,MAAMJ,QAAQC,EAAG,CAAEI,SAAUF,KAAKE,UAC3C,EAGGA,SAAW,CAACC,EAAQ,OACvBH,KAAKI,SAAS,CAAEC,WAAW,IAC3BC,YAAW,KACPN,KAAKI,SAAS,CAAEC,WAAW,GAAM,GAClCF,EAAAA,EAGPI,MAAAA,EAAOC,mBAAEA,EAAqB,GAAEf,SAAEA,EAAQgB,KAAEA,EAAIC,KAAEA,EAAIf,OAAEA,EAAMD,MAAEA,EAAKH,OAAEA,EAAMC,QAAEA,IAAWa,UAAEA,IACxF,MAAMM,KAAEA,GAASC,IAEXC,EAAaH,EAAOI,EAACC,MAAAA,CAAIC,UAAU,+BAA+BC,IAAKP,EAAMQ,IAAI,GAAGC,cAAY,SAAY,GAE5GC,EAAY,IACXZ,KACa,YAAZhB,EAAwB,CAACA,GAAW,MACpCG,EAAS,CAAC,UAAY,MACtBU,EAAY,CAAC,aAAe,MACjB,YAAXd,GAAmC,aAAXA,EAAwB,CAAC,WAAa,IAGhE8B,EAAgBC,EAAW,CAAC,4BAA6BF,EAAUG,KAAIC,GAAK,2BAA2BA,QAEvGC,EAAe,CACjBC,QAASZ,EAACa,EAAAA,CAAQC,KAAK,WACvBC,SACIf,EAACgB,OAAAA,CAAKd,UAAU,mCACZF,EAACa,EAAAA,CAAQC,KAAK,SAASjC,QAAAA,IACtBgB,EAAKoB,IAAI,0BAGlBC,QACIlB,EAACgB,OAAAA,CAAKd,UAAU,mCACXH,EACDC,EAACgB,OAAAA,CAAKd,UAAU,gCAAgCtB,KAKtDuC,EAAaR,EAAalC,IAAWkC,EAAaO,QAExD,OAAIvB,EAEIK,EAACoB,IAAAA,CAAElB,UAAWK,EAAeZ,KAAMA,EAAMhB,SAAUA,EAAUG,OAAQI,KAAKC,MAAML,OAAQuC,IAAKnC,KAAKC,MAAMkC,KACnGF,GAMTnB,EAACsB,SAAAA,CAAOpB,UAAWK,EAAegB,KAAK,SAAS5C,SAAUA,EAAUI,QAASG,KAAKH,SAC7EoC,EACW,YAAX1C,GAAmC,aAAXA,GAAyBS,KAAKC,MAAMqC,SAGzE"}
1
+ {"version":3,"file":"Button.js","sources":["../../../../../src/components/internal/Button/Button.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport Spinner from '../Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport './Button.scss';\nimport { ButtonProps, ButtonState } from './types';\n\nclass Button extends Component<ButtonProps, ButtonState> {\n public static defaultProps = {\n status: 'default',\n variant: 'primary',\n disabled: false,\n label: '',\n inline: false,\n target: '_self',\n onClick: () => {}\n };\n\n public onClick = e => {\n e.preventDefault();\n\n if (!this.props.disabled) {\n this.props.onClick(e, { complete: this.complete });\n }\n };\n\n public complete = (delay = 1000) => {\n this.setState({ completed: true });\n setTimeout(() => {\n this.setState({ completed: false });\n }, delay);\n };\n\n render({ classNameModifiers = [], disabled, href, icon, inline, label, status, variant }, { completed }) {\n const { i18n } = useCoreContext();\n\n const buttonIcon = icon ? <img className=\"adyen-checkout__button__icon\" src={icon} alt=\"\" aria-hidden=\"true\" /> : '';\n\n const modifiers = [\n ...classNameModifiers,\n ...(variant !== 'primary' ? [variant] : []),\n ...(inline ? ['inline'] : []),\n ...(completed ? ['completed'] : []),\n ...(status === 'loading' || status === 'redirect' ? ['loading'] : [])\n ];\n\n const buttonClasses = classNames(['adyen-checkout__button', ...modifiers.map(m => `adyen-checkout__button--${m}`)]);\n\n const buttonStates = {\n loading: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n <span className={'adyen-checkout__button__text--sr-only'}>{i18n.get('loading')}</span>\n </span>\n ),\n redirect: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n {i18n.get('payButton.redirecting')}\n </span>\n ),\n default: (\n <span className=\"adyen-checkout__button__content\">\n {buttonIcon}\n <span className=\"adyen-checkout__button__text\">{label}</span>\n </span>\n )\n };\n\n const buttonText = buttonStates[status] || buttonStates.default;\n\n if (href) {\n return (\n <a className={buttonClasses} href={href} disabled={disabled} target={this.props.target} rel={this.props.rel}>\n {buttonText}\n </a>\n );\n }\n\n return (\n <button className={buttonClasses} type=\"button\" disabled={disabled} onClick={this.onClick}>\n {buttonText}\n {status !== 'loading' && status !== 'redirect' && this.props.children}\n </button>\n );\n }\n}\n\nexport default Button;\n"],"names":["Button","Component","static","status","variant","disabled","label","inline","target","onClick","e","preventDefault","this","props","complete","delay","setState","completed","setTimeout","render","classNameModifiers","href","icon","i18n","useCoreContext","buttonIcon","h","img","className","src","alt","aria-hidden","modifiers","buttonClasses","classNames","map","m","buttonStates","loading","span","Spinner","size","get","redirect","default","buttonText","a","rel","button","type","children"],"mappings":"wPAOA,MAAMA,UAAeC,EACjBC,oBAA6B,CACzBC,OAAQ,UACRC,QAAS,UACTC,UAAU,EACVC,MAAO,GACPC,QAAQ,EACRC,OAAQ,QACRC,QAAS,QAGNA,QAAUC,IACbA,EAAEC,iBAEGC,KAAKC,MAAMR,UACZO,KAAKC,MAAMJ,QAAQC,EAAG,CAAEI,SAAUF,KAAKE,UAC3C,EAGGA,SAAW,CAACC,EAAQ,OACvBH,KAAKI,SAAS,CAAEC,WAAW,IAC3BC,YAAW,KACPN,KAAKI,SAAS,CAAEC,WAAW,GAAM,GAClCF,EAAAA,EAGPI,MAAAA,EAAOC,mBAAEA,EAAqB,GAAEf,SAAEA,EAAQgB,KAAEA,EAAIC,KAAEA,EAAIf,OAAEA,EAAMD,MAAEA,EAAKH,OAAEA,EAAMC,QAAEA,IAAWa,UAAEA,IACxF,MAAMM,KAAEA,GAASC,IAEXC,EAAaH,EAAOI,EAACC,MAAAA,CAAIC,UAAU,+BAA+BC,IAAKP,EAAMQ,IAAI,GAAGC,cAAY,SAAY,GAE5GC,EAAY,IACXZ,KACa,YAAZhB,EAAwB,CAACA,GAAW,MACpCG,EAAS,CAAC,UAAY,MACtBU,EAAY,CAAC,aAAe,MACjB,YAAXd,GAAmC,aAAXA,EAAwB,CAAC,WAAa,IAGhE8B,EAAgBC,EAAW,CAAC,4BAA6BF,EAAUG,KAAIC,GAAK,2BAA2BA,QAEvGC,EAAe,CACjBC,QACIZ,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASlC,QAAAA,IACvBmB,EAACa,OAAAA,CAAKX,UAAW,yCAA0CL,EAAKmB,IAAI,aAG5EC,SACIjB,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASlC,QAAAA,IACtBgB,EAAKmB,IAAI,0BAGlBE,QACIlB,EAACa,OAAAA,CAAKX,UAAU,mCACXH,EACDC,EAACa,OAAAA,CAAKX,UAAU,gCAAgCtB,KAKtDuC,EAAaR,EAAalC,IAAWkC,EAAaO,QAExD,OAAIvB,EAEIK,EAACoB,IAAAA,CAAElB,UAAWK,EAAeZ,KAAMA,EAAMhB,SAAUA,EAAUG,OAAQI,KAAKC,MAAML,OAAQuC,IAAKnC,KAAKC,MAAMkC,KACnGF,GAMTnB,EAACsB,SAAAA,CAAOpB,UAAWK,EAAegB,KAAK,SAAS5C,SAAUA,EAAUI,QAASG,KAAKH,SAC7EoC,EACW,YAAX1C,GAAmC,aAAXA,GAAyBS,KAAKC,MAAMqC,SAGzE"}
@@ -1,2 +1,2 @@
1
- const e="encrypted",r="encryptedCardNumber",c="encryptedExpiryDate",t="encryptedExpiryMonth",a="encryptedExpiryYear",d="encryptedSecurityCode",i="encryptedPassword",n="encryptedBankAccountNumber",o="encryptedBankLocationId",s="encryptedSecurityCode3digits",y="encryptedSecurityCode4digits",p="giftcard",u="5.2.1",m=["amex","mc","visa"],C=["ach",p],b=[r,c,t,a,d,i],x=[n,o],h=b.concat(x),D=["bcmc"],g="required",k="optional",B="hidden",l=g,v=k,A=B,E=g,M=k,N=B,S="data-cse",f="data-info",j="data-uid",I=["accel","pulse","star","nyce"],w={visa:"VISA",mc:"MasterCard",amex:"American Express",discover:"Discover",cup:"China Union Pay",jcb:"JCB",diners:"Diners Club",maestro:"Maestro",bcmc:"Bancontact card",bijcard:"de Bijenkorf Card"},L={[r]:"cardNumber",[c]:"expiryDate",[d]:"securityCode",[t]:"expiryMonth",[a]:"expiryYear",[i]:"password",[n]:"bankAccountNumber",[o]:"bankLocationId",[s]:"securityCodeThreeDigits",[y]:"securityCodeFourDigits"},P=6e3;export{h as ALL_SECURED_FIELDS,I as BRAND_ICON_UI_EXCLUSION_LIST,w as BRAND_READABLE_NAME_MAP,b as CREDIT_CARD_SF_FIELDS,A as CVC_POLICY_HIDDEN,v as CVC_POLICY_OPTIONAL,l as CVC_POLICY_REQUIRED,S as DATA_ENCRYPTED_FIELD_ATTR,f as DATA_INFO,j as DATA_UID,N as DATE_POLICY_HIDDEN,M as DATE_POLICY_OPTIONAL,E as DATE_POLICY_REQUIRED,D as DEDICATED_CARD_COMPONENTS,m as DEFAULT_CARD_GROUP_TYPES,e as ENCRYPTED,n as ENCRYPTED_BANK_ACCNT_NUMBER_FIELD,o as ENCRYPTED_BANK_LOCATION_FIELD,r as ENCRYPTED_CARD_NUMBER,c as ENCRYPTED_EXPIRY_DATE,t as ENCRYPTED_EXPIRY_MONTH,a as ENCRYPTED_EXPIRY_YEAR,i as ENCRYPTED_PWD_FIELD,d as ENCRYPTED_SECURITY_CODE,s as ENCRYPTED_SECURITY_CODE_3_DIGITS,y as ENCRYPTED_SECURITY_CODE_4_DIGITS,p as GIFT_CARD,B as HIDDEN,C as NON_CREDIT_CARD_TYPE_SECURED_FIELDS,k as OPTIONAL,x as OTHER_SF_FIELDS,g as REQUIRED,P as SF_CONFIG_TIMEOUT,L as SF_FIELDS_MAP,u as SF_VERSION};
1
+ const e="encrypted",r="encryptedCardNumber",c="encryptedExpiryDate",t="encryptedExpiryMonth",a="encryptedExpiryYear",d="encryptedSecurityCode",i="encryptedPassword",n="encryptedBankAccountNumber",o="encryptedBankLocationId",s="encryptedSecurityCode3digits",y="encryptedSecurityCode4digits",p="giftcard",u="5.3.0",m=["amex","mc","visa"],C=["ach",p],b=[r,c,t,a,d,i],x=[n,o],h=b.concat(x),D=["bcmc"],g="required",k="optional",B="hidden",l=g,v=k,A=B,E=g,M=k,N=B,S="data-cse",f="data-info",j="data-uid",I=["accel","pulse","star","nyce"],w={visa:"VISA",mc:"MasterCard",amex:"American Express",discover:"Discover",cup:"China Union Pay",jcb:"JCB",diners:"Diners Club",maestro:"Maestro",bcmc:"Bancontact card",bijcard:"de Bijenkorf Card"},L={[r]:"cardNumber",[c]:"expiryDate",[d]:"securityCode",[t]:"expiryMonth",[a]:"expiryYear",[i]:"password",[n]:"bankAccountNumber",[o]:"bankLocationId",[s]:"securityCodeThreeDigits",[y]:"securityCodeFourDigits"},P=6e3;export{h as ALL_SECURED_FIELDS,I as BRAND_ICON_UI_EXCLUSION_LIST,w as BRAND_READABLE_NAME_MAP,b as CREDIT_CARD_SF_FIELDS,A as CVC_POLICY_HIDDEN,v as CVC_POLICY_OPTIONAL,l as CVC_POLICY_REQUIRED,S as DATA_ENCRYPTED_FIELD_ATTR,f as DATA_INFO,j as DATA_UID,N as DATE_POLICY_HIDDEN,M as DATE_POLICY_OPTIONAL,E as DATE_POLICY_REQUIRED,D as DEDICATED_CARD_COMPONENTS,m as DEFAULT_CARD_GROUP_TYPES,e as ENCRYPTED,n as ENCRYPTED_BANK_ACCNT_NUMBER_FIELD,o as ENCRYPTED_BANK_LOCATION_FIELD,r as ENCRYPTED_CARD_NUMBER,c as ENCRYPTED_EXPIRY_DATE,t as ENCRYPTED_EXPIRY_MONTH,a as ENCRYPTED_EXPIRY_YEAR,i as ENCRYPTED_PWD_FIELD,d as ENCRYPTED_SECURITY_CODE,s as ENCRYPTED_SECURITY_CODE_3_DIGITS,y as ENCRYPTED_SECURITY_CODE_4_DIGITS,p as GIFT_CARD,B as HIDDEN,C as NON_CREDIT_CARD_TYPE_SECURED_FIELDS,k as OPTIONAL,x as OTHER_SF_FIELDS,g as REQUIRED,P as SF_CONFIG_TIMEOUT,L as SF_FIELDS_MAP,u as SF_VERSION};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../../../src/components/internal/SecuredFields/lib/constants.ts"],"sourcesContent":["import { CVCPolicyType, DatePolicyType } from './types';\n\nexport const ENCRYPTED = 'encrypted';\n\nexport const ENCRYPTED_CARD_NUMBER = 'encryptedCardNumber';\nexport const ENCRYPTED_EXPIRY_DATE = 'encryptedExpiryDate';\nexport const ENCRYPTED_EXPIRY_MONTH = 'encryptedExpiryMonth';\nexport const ENCRYPTED_EXPIRY_YEAR = 'encryptedExpiryYear';\nexport const ENCRYPTED_SECURITY_CODE = 'encryptedSecurityCode';\nexport const ENCRYPTED_PWD_FIELD = 'encryptedPassword';\nexport const ENCRYPTED_PIN_FIELD = 'encryptedPin';\nexport const ENCRYPTED_BANK_ACCNT_NUMBER_FIELD = 'encryptedBankAccountNumber';\nexport const ENCRYPTED_BANK_LOCATION_FIELD = 'encryptedBankLocationId';\n\nexport const ENCRYPTED_SECURITY_CODE_3_DIGITS = 'encryptedSecurityCode3digits';\nexport const ENCRYPTED_SECURITY_CODE_4_DIGITS = 'encryptedSecurityCode4digits';\n\nexport const GIFT_CARD = 'giftcard';\n\nexport const SF_VERSION = '5.2.1';\n\nexport const DEFAULT_CARD_GROUP_TYPES = ['amex', 'mc', 'visa'];\n\nexport const NON_CREDIT_CARD_TYPE_SECURED_FIELDS = ['ach', GIFT_CARD]; // Maybe, sometime in the future will include 'sepa' & 'sepadirectdebit'\n\n// Credit card (CardInput) related securedFields (based on the data-cse attribute)\nexport const CREDIT_CARD_SF_FIELDS = [\n ENCRYPTED_CARD_NUMBER,\n ENCRYPTED_EXPIRY_DATE,\n ENCRYPTED_EXPIRY_MONTH,\n ENCRYPTED_EXPIRY_YEAR,\n ENCRYPTED_SECURITY_CODE,\n ENCRYPTED_PWD_FIELD\n // ENCRYPTED_PIN_FIELD,// probably redundant - it was an alt. name for KCP's encryptedPassword. But maybe has a role to play if we ever encrypt ibans.\n];\n\nexport const OTHER_SF_FIELDS = [ENCRYPTED_BANK_ACCNT_NUMBER_FIELD, ENCRYPTED_BANK_LOCATION_FIELD]; // ACH fields\n\n/** A list of all the data-cse attributes that relate to securedFields (as found in card, giftcard or ach) */\nexport const ALL_SECURED_FIELDS = CREDIT_CARD_SF_FIELDS.concat(OTHER_SF_FIELDS);\n\n// Card components created as: checkout.create({BRAND}) e.g. checkout.create('bcmc')\n// - which are dedicated to a single, core, brand e.g. 'bcmc' BUT which can in effect handle multiple brands e.g. \"bcmc\", \"maestro\", \"visa\"\nexport const DEDICATED_CARD_COMPONENTS = ['bcmc'];\n\nexport const REQUIRED = 'required';\nexport const OPTIONAL = 'optional';\nexport const HIDDEN = 'hidden';\n\nexport const CVC_POLICY_REQUIRED: CVCPolicyType = REQUIRED;\nexport const CVC_POLICY_OPTIONAL: CVCPolicyType = OPTIONAL;\nexport const CVC_POLICY_HIDDEN: CVCPolicyType = HIDDEN;\n\nexport const DATE_POLICY_REQUIRED: DatePolicyType = REQUIRED;\nexport const DATE_POLICY_OPTIONAL: DatePolicyType = OPTIONAL;\nexport const DATE_POLICY_HIDDEN: DatePolicyType = HIDDEN;\n\nexport const DATA_ENCRYPTED_FIELD_ATTR = 'data-cse';\nexport const DATA_INFO = 'data-info';\nexport const DATA_UID = 'data-uid';\n\nexport const BRAND_ICON_UI_EXCLUSION_LIST = ['accel', 'pulse', 'star', 'nyce'];\n\nexport const BRAND_READABLE_NAME_MAP = {\n visa: 'VISA',\n mc: 'MasterCard',\n amex: 'American Express',\n discover: 'Discover',\n cup: 'China Union Pay',\n jcb: 'JCB',\n diners: 'Diners Club',\n maestro: 'Maestro',\n bcmc: 'Bancontact card',\n bijcard: 'de Bijenkorf Card'\n};\n\nexport const SF_FIELDS_MAP = {\n [ENCRYPTED_CARD_NUMBER]: 'cardNumber', // ph\n [ENCRYPTED_EXPIRY_DATE]: 'expiryDate', // ph\n [ENCRYPTED_SECURITY_CODE]: 'securityCode',\n [ENCRYPTED_EXPIRY_MONTH]: 'expiryMonth', // ph\n [ENCRYPTED_EXPIRY_YEAR]: 'expiryYear', // ph\n //\n [ENCRYPTED_PWD_FIELD]: 'password',\n [ENCRYPTED_BANK_ACCNT_NUMBER_FIELD]: 'bankAccountNumber',\n [ENCRYPTED_BANK_LOCATION_FIELD]: 'bankLocationId',\n //\n [ENCRYPTED_SECURITY_CODE_3_DIGITS]: 'securityCodeThreeDigits', // ph\n [ENCRYPTED_SECURITY_CODE_4_DIGITS]: 'securityCodeFourDigits' // ph\n};\n\n/** time within which we expect to receive a \"configured\" message from a securedField iframe, once it has registered as having loaded */\nexport const SF_CONFIG_TIMEOUT = 6000;\n"],"names":["ENCRYPTED","ENCRYPTED_CARD_NUMBER","ENCRYPTED_EXPIRY_DATE","ENCRYPTED_EXPIRY_MONTH","ENCRYPTED_EXPIRY_YEAR","ENCRYPTED_SECURITY_CODE","ENCRYPTED_PWD_FIELD","ENCRYPTED_BANK_ACCNT_NUMBER_FIELD","ENCRYPTED_BANK_LOCATION_FIELD","ENCRYPTED_SECURITY_CODE_3_DIGITS","ENCRYPTED_SECURITY_CODE_4_DIGITS","GIFT_CARD","SF_VERSION","DEFAULT_CARD_GROUP_TYPES","NON_CREDIT_CARD_TYPE_SECURED_FIELDS","CREDIT_CARD_SF_FIELDS","OTHER_SF_FIELDS","ALL_SECURED_FIELDS","concat","DEDICATED_CARD_COMPONENTS","REQUIRED","OPTIONAL","HIDDEN","CVC_POLICY_REQUIRED","CVC_POLICY_OPTIONAL","CVC_POLICY_HIDDEN","DATE_POLICY_REQUIRED","DATE_POLICY_OPTIONAL","DATE_POLICY_HIDDEN","DATA_ENCRYPTED_FIELD_ATTR","DATA_INFO","DATA_UID","BRAND_ICON_UI_EXCLUSION_LIST","BRAND_READABLE_NAME_MAP","visa","mc","amex","discover","cup","jcb","diners","maestro","bcmc","bijcard","SF_FIELDS_MAP","SF_CONFIG_TIMEOUT"],"mappings":"AAEO,MAAMA,EAAY,YAEZC,EAAwB,sBACxBC,EAAwB,sBACxBC,EAAyB,uBACzBC,EAAwB,sBACxBC,EAA0B,wBAC1BC,EAAsB,oBAEtBC,EAAoC,6BACpCC,EAAgC,0BAEhCC,EAAmC,+BACnCC,EAAmC,+BAEnCC,EAAY,WAEZC,EAAa,QAEbC,EAA2B,CAAC,OAAQ,KAAM,QAE1CC,EAAsC,CAAC,MAAOH,GAG9CI,EAAwB,CACjCd,EACAC,EACAC,EACAC,EACAC,EACAC,GAISU,EAAkB,CAACT,EAAmCC,GAGtDS,EAAqBF,EAAsBG,OAAOF,GAIlDG,EAA4B,CAAC,QAE7BC,EAAW,WACXC,EAAW,WACXC,EAAS,SAETC,EAAqCH,EACrCI,EAAqCH,EACrCI,EAAmCH,EAEnCI,EAAuCN,EACvCO,EAAuCN,EACvCO,EAAqCN,EAErCO,EAA4B,WAC5BC,EAAY,YACZC,EAAW,WAEXC,EAA+B,CAAC,QAAS,QAAS,OAAQ,QAE1DC,EAA0B,CACnCC,KAAM,OACNC,GAAI,aACJC,KAAM,mBACNC,SAAU,WACVC,IAAK,kBACLC,IAAK,MACLC,OAAQ,cACRC,QAAS,UACTC,KAAM,kBACNC,QAAS,qBAGAC,EAAgB,CACzB3C,CAACA,GAAwB,aACzBC,CAACA,GAAwB,aACzBG,CAACA,GAA0B,eAC3BF,CAACA,GAAyB,cAC1BC,CAACA,GAAwB,aAEzBE,CAACA,GAAsB,WACvBC,CAACA,GAAoC,oBACrCC,CAACA,GAAgC,iBAEjCC,CAACA,GAAmC,0BACpCC,CAACA,GAAmC,0BAI3BmC,EAAoB"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../../../src/components/internal/SecuredFields/lib/constants.ts"],"sourcesContent":["import { CVCPolicyType, DatePolicyType } from './types';\n\nexport const ENCRYPTED = 'encrypted';\n\nexport const ENCRYPTED_CARD_NUMBER = 'encryptedCardNumber';\nexport const ENCRYPTED_EXPIRY_DATE = 'encryptedExpiryDate';\nexport const ENCRYPTED_EXPIRY_MONTH = 'encryptedExpiryMonth';\nexport const ENCRYPTED_EXPIRY_YEAR = 'encryptedExpiryYear';\nexport const ENCRYPTED_SECURITY_CODE = 'encryptedSecurityCode';\nexport const ENCRYPTED_PWD_FIELD = 'encryptedPassword';\nexport const ENCRYPTED_PIN_FIELD = 'encryptedPin';\nexport const ENCRYPTED_BANK_ACCNT_NUMBER_FIELD = 'encryptedBankAccountNumber';\nexport const ENCRYPTED_BANK_LOCATION_FIELD = 'encryptedBankLocationId';\n\nexport const ENCRYPTED_SECURITY_CODE_3_DIGITS = 'encryptedSecurityCode3digits';\nexport const ENCRYPTED_SECURITY_CODE_4_DIGITS = 'encryptedSecurityCode4digits';\n\nexport const GIFT_CARD = 'giftcard';\n\nexport const SF_VERSION = '5.3.0';\n\nexport const DEFAULT_CARD_GROUP_TYPES = ['amex', 'mc', 'visa'];\n\nexport const NON_CREDIT_CARD_TYPE_SECURED_FIELDS = ['ach', GIFT_CARD]; // Maybe, sometime in the future will include 'sepa' & 'sepadirectdebit'\n\n// Credit card (CardInput) related securedFields (based on the data-cse attribute)\nexport const CREDIT_CARD_SF_FIELDS = [\n ENCRYPTED_CARD_NUMBER,\n ENCRYPTED_EXPIRY_DATE,\n ENCRYPTED_EXPIRY_MONTH,\n ENCRYPTED_EXPIRY_YEAR,\n ENCRYPTED_SECURITY_CODE,\n ENCRYPTED_PWD_FIELD\n // ENCRYPTED_PIN_FIELD,// probably redundant - it was an alt. name for KCP's encryptedPassword. But maybe has a role to play if we ever encrypt ibans.\n];\n\nexport const OTHER_SF_FIELDS = [ENCRYPTED_BANK_ACCNT_NUMBER_FIELD, ENCRYPTED_BANK_LOCATION_FIELD]; // ACH fields\n\n/** A list of all the data-cse attributes that relate to securedFields (as found in card, giftcard or ach) */\nexport const ALL_SECURED_FIELDS = CREDIT_CARD_SF_FIELDS.concat(OTHER_SF_FIELDS);\n\n// Card components created as: checkout.create({BRAND}) e.g. checkout.create('bcmc')\n// - which are dedicated to a single, core, brand e.g. 'bcmc' BUT which can in effect handle multiple brands e.g. \"bcmc\", \"maestro\", \"visa\"\nexport const DEDICATED_CARD_COMPONENTS = ['bcmc'];\n\nexport const REQUIRED = 'required';\nexport const OPTIONAL = 'optional';\nexport const HIDDEN = 'hidden';\n\nexport const CVC_POLICY_REQUIRED: CVCPolicyType = REQUIRED;\nexport const CVC_POLICY_OPTIONAL: CVCPolicyType = OPTIONAL;\nexport const CVC_POLICY_HIDDEN: CVCPolicyType = HIDDEN;\n\nexport const DATE_POLICY_REQUIRED: DatePolicyType = REQUIRED;\nexport const DATE_POLICY_OPTIONAL: DatePolicyType = OPTIONAL;\nexport const DATE_POLICY_HIDDEN: DatePolicyType = HIDDEN;\n\nexport const DATA_ENCRYPTED_FIELD_ATTR = 'data-cse';\nexport const DATA_INFO = 'data-info';\nexport const DATA_UID = 'data-uid';\n\nexport const BRAND_ICON_UI_EXCLUSION_LIST = ['accel', 'pulse', 'star', 'nyce'];\n\nexport const BRAND_READABLE_NAME_MAP = {\n visa: 'VISA',\n mc: 'MasterCard',\n amex: 'American Express',\n discover: 'Discover',\n cup: 'China Union Pay',\n jcb: 'JCB',\n diners: 'Diners Club',\n maestro: 'Maestro',\n bcmc: 'Bancontact card',\n bijcard: 'de Bijenkorf Card'\n};\n\nexport const SF_FIELDS_MAP = {\n [ENCRYPTED_CARD_NUMBER]: 'cardNumber', // ph\n [ENCRYPTED_EXPIRY_DATE]: 'expiryDate', // ph\n [ENCRYPTED_SECURITY_CODE]: 'securityCode',\n [ENCRYPTED_EXPIRY_MONTH]: 'expiryMonth', // ph\n [ENCRYPTED_EXPIRY_YEAR]: 'expiryYear', // ph\n //\n [ENCRYPTED_PWD_FIELD]: 'password',\n [ENCRYPTED_BANK_ACCNT_NUMBER_FIELD]: 'bankAccountNumber',\n [ENCRYPTED_BANK_LOCATION_FIELD]: 'bankLocationId',\n //\n [ENCRYPTED_SECURITY_CODE_3_DIGITS]: 'securityCodeThreeDigits', // ph\n [ENCRYPTED_SECURITY_CODE_4_DIGITS]: 'securityCodeFourDigits' // ph\n};\n\n/** time within which we expect to receive a \"configured\" message from a securedField iframe, once it has registered as having loaded */\nexport const SF_CONFIG_TIMEOUT = 6000;\n"],"names":["ENCRYPTED","ENCRYPTED_CARD_NUMBER","ENCRYPTED_EXPIRY_DATE","ENCRYPTED_EXPIRY_MONTH","ENCRYPTED_EXPIRY_YEAR","ENCRYPTED_SECURITY_CODE","ENCRYPTED_PWD_FIELD","ENCRYPTED_BANK_ACCNT_NUMBER_FIELD","ENCRYPTED_BANK_LOCATION_FIELD","ENCRYPTED_SECURITY_CODE_3_DIGITS","ENCRYPTED_SECURITY_CODE_4_DIGITS","GIFT_CARD","SF_VERSION","DEFAULT_CARD_GROUP_TYPES","NON_CREDIT_CARD_TYPE_SECURED_FIELDS","CREDIT_CARD_SF_FIELDS","OTHER_SF_FIELDS","ALL_SECURED_FIELDS","concat","DEDICATED_CARD_COMPONENTS","REQUIRED","OPTIONAL","HIDDEN","CVC_POLICY_REQUIRED","CVC_POLICY_OPTIONAL","CVC_POLICY_HIDDEN","DATE_POLICY_REQUIRED","DATE_POLICY_OPTIONAL","DATE_POLICY_HIDDEN","DATA_ENCRYPTED_FIELD_ATTR","DATA_INFO","DATA_UID","BRAND_ICON_UI_EXCLUSION_LIST","BRAND_READABLE_NAME_MAP","visa","mc","amex","discover","cup","jcb","diners","maestro","bcmc","bijcard","SF_FIELDS_MAP","SF_CONFIG_TIMEOUT"],"mappings":"AAEO,MAAMA,EAAY,YAEZC,EAAwB,sBACxBC,EAAwB,sBACxBC,EAAyB,uBACzBC,EAAwB,sBACxBC,EAA0B,wBAC1BC,EAAsB,oBAEtBC,EAAoC,6BACpCC,EAAgC,0BAEhCC,EAAmC,+BACnCC,EAAmC,+BAEnCC,EAAY,WAEZC,EAAa,QAEbC,EAA2B,CAAC,OAAQ,KAAM,QAE1CC,EAAsC,CAAC,MAAOH,GAG9CI,EAAwB,CACjCd,EACAC,EACAC,EACAC,EACAC,EACAC,GAISU,EAAkB,CAACT,EAAmCC,GAGtDS,EAAqBF,EAAsBG,OAAOF,GAIlDG,EAA4B,CAAC,QAE7BC,EAAW,WACXC,EAAW,WACXC,EAAS,SAETC,EAAqCH,EACrCI,EAAqCH,EACrCI,EAAmCH,EAEnCI,EAAuCN,EACvCO,EAAuCN,EACvCO,EAAqCN,EAErCO,EAA4B,WAC5BC,EAAY,YACZC,EAAW,WAEXC,EAA+B,CAAC,QAAS,QAAS,OAAQ,QAE1DC,EAA0B,CACnCC,KAAM,OACNC,GAAI,aACJC,KAAM,mBACNC,SAAU,WACVC,IAAK,kBACLC,IAAK,MACLC,OAAQ,cACRC,QAAS,UACTC,KAAM,kBACNC,QAAS,qBAGAC,EAAgB,CACzB3C,CAACA,GAAwB,aACzBC,CAACA,GAAwB,aACzBG,CAACA,GAA0B,eAC3BF,CAACA,GAAyB,cAC1BC,CAACA,GAAwB,aAEzBE,CAACA,GAAsB,WACvBC,CAACA,GAAoC,oBACrCC,CAACA,GAAgC,iBAEjCC,CAACA,GAAmC,0BACpCC,CAACA,GAAmC,0BAI3BmC,EAAoB"}
@@ -1,2 +1,2 @@
1
- import{ANALYTICS_EVENT_ERROR as e,ANALYTICS_EVENT_LOG as t,ANALYTICS_ACTION_STR as a,ANALYTICS_SUBMIT_STR as s,ANALYTICS_VALIDATION_ERROR_STR as n,ANALYTICS_EVENT_INFO as o,ANALYTICS_SELECTED_STR as r,ANALYTICS_DOWNLOAD_STR as c,ANALYTICS_INPUT_STR as p,ANALYTICS_DISPLAYED_STR as i,ANALYTICS_UNFOCUS_STR as y,ANALYTICS_FOCUS_STR as d,ANALYTICS_CONFIGURED_STR as m,ANALYTICS_RENDERED_STR as l,ANALYTICS_EXPRESS_PAGES_ARRAY as v}from"./constants.js";import{THREEDS2_ERROR as b,THREEDS2_FULL as E}from"../../components/ThreeDS2/constants.js";import g,{SDK_ERROR as u}from"../Errors/AdyenCheckoutError.js";import{getCardConfigData as h}from"./utils.js";const k=k=>(A,f,M={})=>{const{type:P,target:S}=f;if(!P)throw new g(u,"You are trying to create an analytics event without a type");switch(P){case l:{const{isStoredPaymentMethod:e,brand:t}=f,{isExpress:a,expressPage:s}=M,n=s&&v.includes(s),{type:r}=M;let c=null;"scheme"!==r&&"bcmc"!==r&&"customcard"!==r||(c=h(M));const p={component:A,type:P,..."boolean"==typeof e&&{isStoredPaymentMethod:e},...t&&{brand:t},..."boolean"==typeof a&&{isExpress:a},...!0===a&&n&&{expressPage:s},...c&&{configData:c}};k.createAnalyticsEvent({event:o,data:p});break}case m:{const{isStoredPaymentMethod:e,brand:t}=f,a={component:A,type:P,isStoredPaymentMethod:e,brand:t};k.createAnalyticsEvent({event:o,data:a});break}case d:case y:case i:case p:case c:k.createAnalyticsEvent({event:o,data:{component:A,type:P,target:S}});break;case r:{const{issuer:e}=f;k.createAnalyticsEvent({event:o,data:{component:A,type:P,target:S,issuer:e}});break}case n:{const{validationErrorCode:e,validationErrorMessage:t}=f;k.createAnalyticsEvent({event:o,data:{component:A,type:P,target:S,validationErrorCode:e,validationErrorMessage:t}});break}case s:k.createAnalyticsEvent({event:t,data:{component:A,type:P,message:"Shopper clicked pay"}});break;case a:{const{subtype:e,message:a}=f;k.createAnalyticsEvent({event:t,data:{component:A,type:P,subtype:e,message:a}});break}case E:{const{message:e,metadata:a,subtype:s,result:n}=f;k.createAnalyticsEvent({event:t,data:{component:A,type:P,message:e,metadata:a,subtype:s,result:n}});break}case b:{const{message:t,code:a,errorType:s}=f;k.createAnalyticsEvent({event:e,data:{component:A,type:P,message:t,code:a,errorType:s}});break}default:k.createAnalyticsEvent(f)}};export{k as analyticsPreProcessor};
1
+ import{ANALYTICS_EVENT_ERROR as e,ANALYTICS_EVENT_LOG as t,ANALYTICS_ACTION_STR as a,ANALYTICS_SUBMIT_STR as s,ANALYTICS_VALIDATION_ERROR_STR as n,ANALYTICS_EVENT_INFO as o,ANALYTICS_SELECTED_STR as r,ANALYTICS_DOWNLOAD_STR as c,ANALYTICS_INPUT_STR as p,ANALYTICS_DISPLAYED_STR as i,ANALYTICS_UNFOCUS_STR as y,ANALYTICS_FOCUS_STR as d,ANALYTICS_CONFIGURED_STR as m,ANALYTICS_RENDERED_STR as l,ANALYTICS_EXPRESS_PAGES_ARRAY as v}from"./constants.js";import{THREEDS2_ERROR as b,THREEDS2_FULL as g}from"../../components/ThreeDS2/constants.js";import E,{SDK_ERROR as u}from"../Errors/AdyenCheckoutError.js";import{getCardConfigData as f}from"./utils.js";const h=h=>(k,A,M={})=>{const{type:P,target:S}=A;if(!P)throw new E(u,"You are trying to create an analytics event without a type");switch(P){case l:{const{isStoredPaymentMethod:e,brand:t,configData:a}=A,{isExpress:s,expressPage:n}=M,r=n&&v.includes(n),{type:c}=M;let p=null;"scheme"!==c&&"bcmc"!==c&&"customcard"!==c||(p=f(M));const i={component:k,type:P,..."boolean"==typeof e&&{isStoredPaymentMethod:e},...t&&{brand:t},..."boolean"==typeof s&&{isExpress:s},...!0===s&&r&&{expressPage:n},...p&&{configData:p},...a&&{configData:a}};h.createAnalyticsEvent({event:o,data:i});break}case m:{const{isStoredPaymentMethod:e,brand:t}=A,a={component:k,type:P,isStoredPaymentMethod:e,brand:t};h.createAnalyticsEvent({event:o,data:a});break}case d:case y:case i:case p:case c:h.createAnalyticsEvent({event:o,data:{component:k,type:P,target:S}});break;case r:{const{issuer:e}=A;h.createAnalyticsEvent({event:o,data:{component:k,type:P,target:S,issuer:e}});break}case n:{const{validationErrorCode:e,validationErrorMessage:t}=A;h.createAnalyticsEvent({event:o,data:{component:k,type:P,target:S,validationErrorCode:e,validationErrorMessage:t}});break}case s:h.createAnalyticsEvent({event:t,data:{component:k,type:P,message:"Shopper clicked pay"}});break;case a:{const{subtype:e,message:a}=A;h.createAnalyticsEvent({event:t,data:{component:k,type:P,subtype:e,message:a}});break}case g:{const{message:e,metadata:a,subtype:s,result:n}=A;h.createAnalyticsEvent({event:t,data:{component:k,type:P,message:e,metadata:a,subtype:s,result:n}});break}case b:{const{message:t,code:a,errorType:s}=A;h.createAnalyticsEvent({event:e,data:{component:k,type:P,message:t,code:a,errorType:s}});break}default:h.createAnalyticsEvent(A)}};export{h as analyticsPreProcessor};
2
2
  //# sourceMappingURL=analyticsPreProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyticsPreProcessor.js","sources":["../../../../src/core/Analytics/analyticsPreProcessor.ts"],"sourcesContent":["import { AnalyticsModule } from '../../types/global-types';\nimport { ConfigData, CreateAnalyticsEventObject, SendAnalyticsObject } from './types';\nimport {\n ANALYTICS_ACTION_STR,\n ANALYTICS_CONFIGURED_STR,\n ANALYTICS_DISPLAYED_STR,\n ANALYTICS_DOWNLOAD_STR,\n ANALYTICS_EVENT_ERROR,\n ANALYTICS_EVENT_INFO,\n ANALYTICS_EVENT_LOG,\n ANALYTICS_FOCUS_STR,\n ANALYTICS_INPUT_STR,\n ANALYTICS_RENDERED_STR,\n ANALYTICS_SELECTED_STR,\n ANALYTICS_SUBMIT_STR,\n ANALYTICS_UNFOCUS_STR,\n ANALYTICS_VALIDATION_ERROR_STR,\n ANALYTICS_EXPRESS_PAGES_ARRAY\n} from './constants';\nimport { THREEDS2_ERROR, THREEDS2_FULL } from '../../components/ThreeDS2/constants';\nimport AdyenCheckoutError, { SDK_ERROR } from '../Errors/AdyenCheckoutError';\nimport { getCardConfigData } from './utils';\n\nexport const analyticsPreProcessor = (analyticsModule: AnalyticsModule) => {\n // return function with an analyticsModule reference\n return (component: string, analyticsObj: SendAnalyticsObject, uiElementProps = {} as any) => {\n const { type, target } = analyticsObj;\n\n if (!type) {\n throw new AdyenCheckoutError(SDK_ERROR, 'You are trying to create an analytics event without a type');\n }\n\n switch (type) {\n /**\n * INFO\n */\n // Called from BaseElement (when component mounted) or, from DropinComponent (after mounting, when it has finished resolving all the PM promises)\n // &/or, from DropinComponent when a PM is selected\n case ANALYTICS_RENDERED_STR: {\n const { isStoredPaymentMethod, brand } = analyticsObj;\n\n // Expected from Wallet PMs\n const { isExpress, expressPage } = uiElementProps;\n\n const hasExpressPage = expressPage && ANALYTICS_EXPRESS_PAGES_ARRAY.includes(expressPage);\n\n const { type: componentType } = uiElementProps;\n let configData: ConfigData = null;\n\n if (componentType === 'scheme' || componentType === 'bcmc' || componentType === 'customcard') {\n // Expected from Card related PMs\n configData = getCardConfigData(uiElementProps);\n }\n\n const data = {\n component,\n type,\n ...(typeof isStoredPaymentMethod === 'boolean' && { isStoredPaymentMethod }), // if defined and a boolean...\n ...(brand && { brand }),\n ...(typeof isExpress === 'boolean' && { isExpress }),\n ...(isExpress === true && hasExpressPage && { expressPage }), // We only care about the expressPage value if isExpress is true\n ...(configData && { configData })\n };\n\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data\n });\n\n break;\n }\n\n case ANALYTICS_CONFIGURED_STR: {\n const { isStoredPaymentMethod, brand } = analyticsObj;\n const data = { component, type, isStoredPaymentMethod, brand };\n\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data\n });\n break;\n }\n\n case ANALYTICS_FOCUS_STR:\n case ANALYTICS_UNFOCUS_STR:\n case ANALYTICS_DISPLAYED_STR: // issuerList\n case ANALYTICS_INPUT_STR: // issuerList\n case ANALYTICS_DOWNLOAD_STR: // QR codes\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data: { component, type, target }\n });\n break;\n\n // - ApplePay & GooglePay when instant PMs\n // - issuerList buttons\n case ANALYTICS_SELECTED_STR: {\n const { issuer } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data: { component, type, target, issuer }\n });\n break;\n }\n\n case ANALYTICS_VALIDATION_ERROR_STR: {\n const { validationErrorCode, validationErrorMessage } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data: { component, type, target, validationErrorCode, validationErrorMessage }\n });\n break;\n }\n\n /**\n * LOGS\n */\n case ANALYTICS_SUBMIT_STR:\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_LOG,\n data: { component, type, message: 'Shopper clicked pay' }\n });\n break;\n\n case ANALYTICS_ACTION_STR: {\n const { subtype, message } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_LOG,\n data: { component, type, subtype, message }\n });\n break;\n }\n\n // General 3DS2 log events: \"action handled\" (i.e. iframe loaded), data sent, process completed\n case THREEDS2_FULL: {\n const { message, metadata, subtype, result } = analyticsObj;\n\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_LOG,\n data: { component, type, message, metadata, subtype, result }\n });\n break;\n }\n\n /**\n * ERRORS\n */\n case THREEDS2_ERROR: {\n const { message, code, errorType } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_ERROR,\n data: { component, type, message, code, errorType }\n });\n break;\n }\n\n default: {\n analyticsModule.createAnalyticsEvent(analyticsObj as CreateAnalyticsEventObject);\n }\n }\n };\n};\n"],"names":["analyticsPreProcessor","analyticsModule","component","analyticsObj","uiElementProps","type","target","AdyenCheckoutError","SDK_ERROR","ANALYTICS_RENDERED_STR","isStoredPaymentMethod","brand","isExpress","expressPage","hasExpressPage","ANALYTICS_EXPRESS_PAGES_ARRAY","includes","componentType","configData","getCardConfigData","data","createAnalyticsEvent","event","ANALYTICS_EVENT_INFO","ANALYTICS_CONFIGURED_STR","ANALYTICS_FOCUS_STR","ANALYTICS_UNFOCUS_STR","ANALYTICS_DISPLAYED_STR","ANALYTICS_INPUT_STR","ANALYTICS_DOWNLOAD_STR","ANALYTICS_SELECTED_STR","issuer","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","validationErrorMessage","ANALYTICS_SUBMIT_STR","ANALYTICS_EVENT_LOG","message","ANALYTICS_ACTION_STR","subtype","THREEDS2_FULL","metadata","result","THREEDS2_ERROR","code","errorType","ANALYTICS_EVENT_ERROR"],"mappings":"0oBAuBO,MAAMA,EAAyBC,GAE3B,CAACC,EAAmBC,EAAmCC,EAAiB,CAAA,KAC3E,MAAMC,KAAEA,EAAIC,OAAEA,GAAWH,EAEzB,IAAKE,EACD,MAAM,IAAIE,EAAmBC,EAAW,8DAG5C,OAAQH,GAMJ,KAAKI,EAAwB,CACzB,MAAMC,sBAAEA,EAAqBC,MAAEA,GAAUR,GAGnCS,UAAEA,EAASC,YAAEA,GAAgBT,EAE7BU,EAAiBD,GAAeE,EAA8BC,SAASH,IAErER,KAAMY,GAAkBb,EAChC,IAAIc,EAAyB,KAEP,WAAlBD,GAAgD,SAAlBA,GAA8C,eAAlBA,IAE1DC,EAAaC,EAAkBf,IAGnC,MAAMgB,EAAO,CACTlB,YACAG,UACqC,kBAA1BK,GAAuC,CAAEA,4BAChDC,GAAS,CAAEA,YACU,kBAAdC,GAA2B,CAAEA,iBACtB,IAAdA,GAAsBE,GAAkB,CAAED,kBAC1CK,GAAc,CAAEA,eAGxBjB,EAAgBoB,qBAAqB,CACjCC,MAAOC,EACPH,SAGJ,KACJ,CAEA,KAAKI,EAA0B,CAC3B,MAAMd,sBAAEA,EAAqBC,MAAEA,GAAUR,EACnCiB,EAAO,CAAElB,YAAWG,OAAMK,wBAAuBC,SAEvDV,EAAgBoB,qBAAqB,CACjCC,MAAOC,EACPH,SAEJ,KACJ,CAEA,KAAKK,EACL,KAAKC,EACL,KAAKC,EACL,KAAKC,EACL,KAAKC,EACD5B,EAAgBoB,qBAAqB,CACjCC,MAAOC,EACPH,KAAM,CAAElB,YAAWG,OAAMC,YAE7B,MAIJ,KAAKwB,EAAwB,CACzB,MAAMC,OAAEA,GAAW5B,EACnBF,EAAgBoB,qBAAqB,CACjCC,MAAOC,EACPH,KAAM,CAAElB,YAAWG,OAAMC,SAAQyB,YAErC,KACJ,CAEA,KAAKC,EAAgC,CACjC,MAAMC,oBAAEA,EAAmBC,uBAAEA,GAA2B/B,EACxDF,EAAgBoB,qBAAqB,CACjCC,MAAOC,EACPH,KAAM,CAAElB,YAAWG,OAAMC,SAAQ2B,sBAAqBC,4BAE1D,KACJ,CAKA,KAAKC,EACDlC,EAAgBoB,qBAAqB,CACjCC,MAAOc,EACPhB,KAAM,CAAElB,YAAWG,OAAMgC,QAAS,yBAEtC,MAEJ,KAAKC,EAAsB,CACvB,MAAMC,QAAEA,EAAOF,QAAEA,GAAYlC,EAC7BF,EAAgBoB,qBAAqB,CACjCC,MAAOc,EACPhB,KAAM,CAAElB,YAAWG,OAAMkC,UAASF,aAEtC,KACJ,CAGA,KAAKG,EAAe,CAChB,MAAMH,QAAEA,EAAOI,SAAEA,EAAQF,QAAEA,EAAOG,OAAEA,GAAWvC,EAE/CF,EAAgBoB,qBAAqB,CACjCC,MAAOc,EACPhB,KAAM,CAAElB,YAAWG,OAAMgC,UAASI,WAAUF,UAASG,YAEzD,KACJ,CAKA,KAAKC,EAAgB,CACjB,MAAMN,QAAEA,EAAOO,KAAEA,EAAIC,UAAEA,GAAc1C,EACrCF,EAAgBoB,qBAAqB,CACjCC,MAAOwB,EACP1B,KAAM,CAAElB,YAAWG,OAAMgC,UAASO,OAAMC,eAE5C,KACJ,CAEA,QACI5C,EAAgBoB,qBAAqBlB,GAE7C"}
1
+ {"version":3,"file":"analyticsPreProcessor.js","sources":["../../../../src/core/Analytics/analyticsPreProcessor.ts"],"sourcesContent":["import { AnalyticsModule } from '../../types/global-types';\nimport { ConfigData, CreateAnalyticsEventObject, SendAnalyticsObject } from './types';\nimport {\n ANALYTICS_ACTION_STR,\n ANALYTICS_CONFIGURED_STR,\n ANALYTICS_DISPLAYED_STR,\n ANALYTICS_DOWNLOAD_STR,\n ANALYTICS_EVENT_ERROR,\n ANALYTICS_EVENT_INFO,\n ANALYTICS_EVENT_LOG,\n ANALYTICS_FOCUS_STR,\n ANALYTICS_INPUT_STR,\n ANALYTICS_RENDERED_STR,\n ANALYTICS_SELECTED_STR,\n ANALYTICS_SUBMIT_STR,\n ANALYTICS_UNFOCUS_STR,\n ANALYTICS_VALIDATION_ERROR_STR,\n ANALYTICS_EXPRESS_PAGES_ARRAY\n} from './constants';\nimport { THREEDS2_ERROR, THREEDS2_FULL } from '../../components/ThreeDS2/constants';\nimport AdyenCheckoutError, { SDK_ERROR } from '../Errors/AdyenCheckoutError';\nimport { getCardConfigData } from './utils';\n\nexport const analyticsPreProcessor = (analyticsModule: AnalyticsModule) => {\n // return function with an analyticsModule reference\n return (component: string, analyticsObj: SendAnalyticsObject, uiElementProps = {} as any) => {\n const { type, target } = analyticsObj;\n\n if (!type) {\n throw new AdyenCheckoutError(SDK_ERROR, 'You are trying to create an analytics event without a type');\n }\n\n switch (type) {\n /**\n * INFO\n */\n // Called from BaseElement (when component mounted) or, from DropinComponent (after mounting, when it has finished resolving all the PM promises)\n // &/or, from DropinComponent when a PM is selected\n // Only Drop-in sends the configData directly, if it happens the configData from the component(drop-in atm) will take over the internal configData below.\n case ANALYTICS_RENDERED_STR: {\n const { isStoredPaymentMethod, brand, configData: originalConfigData } = analyticsObj;\n\n // Expected from Wallet PMs\n const { isExpress, expressPage } = uiElementProps;\n\n const hasExpressPage = expressPage && ANALYTICS_EXPRESS_PAGES_ARRAY.includes(expressPage);\n\n const { type: componentType } = uiElementProps;\n let configData: ConfigData = null;\n\n if (componentType === 'scheme' || componentType === 'bcmc' || componentType === 'customcard') {\n // Expected from Card related PMs\n configData = getCardConfigData(uiElementProps);\n }\n\n const data = {\n component,\n type,\n ...(typeof isStoredPaymentMethod === 'boolean' && { isStoredPaymentMethod }), // if defined and a boolean...\n ...(brand && { brand }),\n ...(typeof isExpress === 'boolean' && { isExpress }),\n ...(isExpress === true && hasExpressPage && { expressPage }), // We only care about the expressPage value if isExpress is true\n ...(configData && { configData }),\n ...(originalConfigData && { configData: originalConfigData })\n };\n\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data\n });\n\n break;\n }\n\n case ANALYTICS_CONFIGURED_STR: {\n const { isStoredPaymentMethod, brand } = analyticsObj;\n const data = { component, type, isStoredPaymentMethod, brand };\n\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data\n });\n break;\n }\n\n case ANALYTICS_FOCUS_STR:\n case ANALYTICS_UNFOCUS_STR:\n case ANALYTICS_DISPLAYED_STR: // issuerList\n case ANALYTICS_INPUT_STR: // issuerList\n case ANALYTICS_DOWNLOAD_STR: // QR codes\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data: { component, type, target }\n });\n break;\n\n // - ApplePay & GooglePay when instant PMs\n // - issuerList buttons\n case ANALYTICS_SELECTED_STR: {\n const { issuer } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data: { component, type, target, issuer }\n });\n break;\n }\n\n case ANALYTICS_VALIDATION_ERROR_STR: {\n const { validationErrorCode, validationErrorMessage } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_INFO,\n data: { component, type, target, validationErrorCode, validationErrorMessage }\n });\n break;\n }\n\n /**\n * LOGS\n */\n case ANALYTICS_SUBMIT_STR:\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_LOG,\n data: { component, type, message: 'Shopper clicked pay' }\n });\n break;\n\n case ANALYTICS_ACTION_STR: {\n const { subtype, message } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_LOG,\n data: { component, type, subtype, message }\n });\n break;\n }\n\n // General 3DS2 log events: \"action handled\" (i.e. iframe loaded), data sent, process completed\n case THREEDS2_FULL: {\n const { message, metadata, subtype, result } = analyticsObj;\n\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_LOG,\n data: { component, type, message, metadata, subtype, result }\n });\n break;\n }\n\n /**\n * ERRORS\n */\n case THREEDS2_ERROR: {\n const { message, code, errorType } = analyticsObj;\n analyticsModule.createAnalyticsEvent({\n event: ANALYTICS_EVENT_ERROR,\n data: { component, type, message, code, errorType }\n });\n break;\n }\n\n default: {\n analyticsModule.createAnalyticsEvent(analyticsObj as CreateAnalyticsEventObject);\n }\n }\n };\n};\n"],"names":["analyticsPreProcessor","analyticsModule","component","analyticsObj","uiElementProps","type","target","AdyenCheckoutError","SDK_ERROR","ANALYTICS_RENDERED_STR","isStoredPaymentMethod","brand","configData","originalConfigData","isExpress","expressPage","hasExpressPage","ANALYTICS_EXPRESS_PAGES_ARRAY","includes","componentType","getCardConfigData","data","createAnalyticsEvent","event","ANALYTICS_EVENT_INFO","ANALYTICS_CONFIGURED_STR","ANALYTICS_FOCUS_STR","ANALYTICS_UNFOCUS_STR","ANALYTICS_DISPLAYED_STR","ANALYTICS_INPUT_STR","ANALYTICS_DOWNLOAD_STR","ANALYTICS_SELECTED_STR","issuer","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","validationErrorMessage","ANALYTICS_SUBMIT_STR","ANALYTICS_EVENT_LOG","message","ANALYTICS_ACTION_STR","subtype","THREEDS2_FULL","metadata","result","THREEDS2_ERROR","code","errorType","ANALYTICS_EVENT_ERROR"],"mappings":"0oBAuBO,MAAMA,EAAyBC,GAE3B,CAACC,EAAmBC,EAAmCC,EAAiB,CAAA,KAC3E,MAAMC,KAAEA,EAAIC,OAAEA,GAAWH,EAEzB,IAAKE,EACD,MAAM,IAAIE,EAAmBC,EAAW,8DAG5C,OAAQH,GAOJ,KAAKI,EAAwB,CACzB,MAAMC,sBAAEA,EAAqBC,MAAEA,EAAOC,WAAYC,GAAuBV,GAGnEW,UAAEA,EAASC,YAAEA,GAAgBX,EAE7BY,EAAiBD,GAAeE,EAA8BC,SAASH,IAErEV,KAAMc,GAAkBf,EAChC,IAAIQ,EAAyB,KAEP,WAAlBO,GAAgD,SAAlBA,GAA8C,eAAlBA,IAE1DP,EAAaQ,EAAkBhB,IAGnC,MAAMiB,EAAO,CACTnB,YACAG,UACqC,kBAA1BK,GAAuC,CAAEA,4BAChDC,GAAS,CAAEA,YACU,kBAAdG,GAA2B,CAAEA,iBACtB,IAAdA,GAAsBE,GAAkB,CAAED,kBAC1CH,GAAc,CAAEA,iBAChBC,GAAsB,CAAED,WAAYC,IAG5CZ,EAAgBqB,qBAAqB,CACjCC,MAAOC,EACPH,SAGJ,KACJ,CAEA,KAAKI,EAA0B,CAC3B,MAAMf,sBAAEA,EAAqBC,MAAEA,GAAUR,EACnCkB,EAAO,CAAEnB,YAAWG,OAAMK,wBAAuBC,SAEvDV,EAAgBqB,qBAAqB,CACjCC,MAAOC,EACPH,SAEJ,KACJ,CAEA,KAAKK,EACL,KAAKC,EACL,KAAKC,EACL,KAAKC,EACL,KAAKC,EACD7B,EAAgBqB,qBAAqB,CACjCC,MAAOC,EACPH,KAAM,CAAEnB,YAAWG,OAAMC,YAE7B,MAIJ,KAAKyB,EAAwB,CACzB,MAAMC,OAAEA,GAAW7B,EACnBF,EAAgBqB,qBAAqB,CACjCC,MAAOC,EACPH,KAAM,CAAEnB,YAAWG,OAAMC,SAAQ0B,YAErC,KACJ,CAEA,KAAKC,EAAgC,CACjC,MAAMC,oBAAEA,EAAmBC,uBAAEA,GAA2BhC,EACxDF,EAAgBqB,qBAAqB,CACjCC,MAAOC,EACPH,KAAM,CAAEnB,YAAWG,OAAMC,SAAQ4B,sBAAqBC,4BAE1D,KACJ,CAKA,KAAKC,EACDnC,EAAgBqB,qBAAqB,CACjCC,MAAOc,EACPhB,KAAM,CAAEnB,YAAWG,OAAMiC,QAAS,yBAEtC,MAEJ,KAAKC,EAAsB,CACvB,MAAMC,QAAEA,EAAOF,QAAEA,GAAYnC,EAC7BF,EAAgBqB,qBAAqB,CACjCC,MAAOc,EACPhB,KAAM,CAAEnB,YAAWG,OAAMmC,UAASF,aAEtC,KACJ,CAGA,KAAKG,EAAe,CAChB,MAAMH,QAAEA,EAAOI,SAAEA,EAAQF,QAAEA,EAAOG,OAAEA,GAAWxC,EAE/CF,EAAgBqB,qBAAqB,CACjCC,MAAOc,EACPhB,KAAM,CAAEnB,YAAWG,OAAMiC,UAASI,WAAUF,UAASG,YAEzD,KACJ,CAKA,KAAKC,EAAgB,CACjB,MAAMN,QAAEA,EAAOO,KAAEA,EAAIC,UAAEA,GAAc3C,EACrCF,EAAgBqB,qBAAqB,CACjCC,MAAOwB,EACP1B,KAAM,CAAEnB,YAAWG,OAAMiC,UAASO,OAAMC,eAE5C,KACJ,CAEA,QACI7C,EAAgBqB,qBAAqBnB,GAE7C"}
@@ -1,2 +1,2 @@
1
- import{ANALYTICS_ACTION_STR as e,ANALYTICS_VALIDATION_ERROR_STR as o,errorCodeMapping as s,ALLOWED_ANALYTICS_DATA as n}from"./constants.js";import t from"../../utils/uuid.js";import{digitsOnlyFormatter as r}from"../../utils/Formatters/formatters.js";import{ERROR_FIELD_REQUIRED as a,ERROR_INVALID_FORMAT_EXPECTS as i}from"../Errors/constants.js";import{THREEDS2_FULL as d,DEFAULT_CHALLENGE_WINDOW_SIZE as l}from"../../components/ThreeDS2/constants.js";import u from"../../components/Card/components/CardInput/defaultProps.js";import{DEFAULT_CARD_GROUP_TYPES as m}from"../../components/internal/SecuredFields/lib/constants.js";import{notFalsy as p}from"../../utils/commonUtils.js";const c=()=>Date.now(),g=s=>({timestamp:String(c()),component:s.component,id:t(),..."error"===s.event&&{code:s.code,errorType:s.errorType,message:s.message},..."log"===s.event&&{type:s.type,message:s.message},..."log"===s.event&&(s.type===e||s.type===d)&&{subType:s.subtype},..."log"===s.event&&s.type===d&&{result:s.result},..."info"===s.event&&{type:s.type,target:s.target},..."info"===s.event&&s.issuer&&{issuer:s.issuer},..."info"===s.event&&{isExpress:s.isExpress,expressPage:s.expressPage},..."info"===s.event&&s.isStoredPaymentMethod&&{isStoredPaymentMethod:s.isStoredPaymentMethod,brand:s.brand},..."info"===s.event&&s.type===o&&{validationErrorCode:y(s.validationErrorCode,s.target),validationErrorMessage:s.validationErrorMessage},...s.configData&&{configData:s.configData},...s.metadata&&{metadata:s.metadata}}),y=(e,o)=>{if(e===a||e===i)return s[`${e}.${o}`]??e;let n=s[e]??e;return isNaN(Number(n))&&(n=r(n)),n},h=e=>Object.keys(e).reduce(((o,s)=>(n.includes(s)&&(o[s]=e[s]),o)),{}),f=e=>{const{autoFocus:o,billingAddressAllowedCountries:s,billingAddressMode:n,billingAddressRequired:t,billingAddressRequiredFields:r,brands:a=m,brandsConfiguration:i,challengeWindowSize:d=l,configuration:c,countryCode:g,data:y,disclaimerMessage:h,disableIOSArrowKeys:f,doBinLookup:b,enableStoreDetails:S,exposeExpiryDate:O,forceCompat:C,hasHolderName:A,hideCVC:B,holderNameRequired:k,installmentOptions:P,keypadFix:E,legacyInputMode:F,maskSecurityCode:N,minimumExpiryDate:v,name:w,placeholders:M,positionHolderNameOnTop:x,showBrandIcon:D,showInstallmentAmounts:j,showPayButton:V=!1,styles:I,onAllValid:L,onBinLookup:q,onBinValue:R,onBlur:T,onBrand:K,onConfigSuccess:J,onEnterKeyPressed:H,onFieldValid:z,onFocus:W,onLoad:$}=e,U=JSON.stringify(u.data),G=e.modules?.srPanel?.enabled,Q=e.modules?.srPanel?.moveFocus,X=e.modules?.risk?.enabled,Y=e.onAddressLookup?"lookup":n;let Z="none";!0===c?.koreanAuthenticationRequired&&(Z="kr"===g?.toLowerCase()?"atStart":"auto");let _=JSON.stringify(a);_.length>128&&(_=_.substring(0,124)+"...]");const ee={autoFocus:o,billingAddressAllowedCountries:JSON.stringify(s),billingAddressMode:Y,billingAddressRequired:t,billingAddressRequiredFields:JSON.stringify(r),brands:_,challengeWindowSize:d,disableIOSArrowKeys:f,doBinLookup:b,enableStoreDetails:S,exposeExpiryDate:O,forceCompat:C,hasBrandsConfiguration:p(i),hasData:y&&JSON.stringify(e.data)!==U,hasDisclaimerMessage:!!h,hasHolderName:A,hasInstallmentOptions:p(P),hasPlaceholders:p(M),hasStylesConfigured:p(I),hideCVC:B,holderNameRequired:k,keypadFix:E,legacyInputMode:F,maskSecurityCode:N,minimumExpiryDate:!!v,name:w,positionHolderNameOnTop:x,riskEnabled:X,showBrandIcon:D,showInstallmentAmounts:!!j,showKCPType:Z,showPayButton:V,socialSecurityNumberMode:c?.socialSecurityNumberMode,srPanelEnabled:G,srPanelMoveFocus:Q,hasOnAllValid:L!==u.onAllValid,hasOnBinLookup:q!==u.onBinLookup,hasOnBinValue:R!==u.onBinValue,hasOnBlur:T!==u.onBlur,hasOnBrand:K!==u.onBrand,hasOnConfigSuccess:J!==u.onConfigSuccess,hasOnEnterKeyPressed:H!==u.onEnterKeyPressed,hasOnFieldValid:z!==u.onFieldValid,hasOnFocus:W!==u.onFocus,hasOnLoad:$!==u.onLoad};if(Object.keys(ee).length>32){return Object.entries(ee).reduce(((e,[o,s],n)=>(n<32&&(e[o]=s),e)),{})}return ee};export{g as createAnalyticsObject,f as getCardConfigData,c as getUTCTimestamp,h as processAnalyticsData};
1
+ import{ANALYTICS_ACTION_STR as e,ANALYTICS_VALIDATION_ERROR_STR as o,errorCodeMapping as s,ALLOWED_ANALYTICS_DATA as n}from"./constants.js";import t from"../../utils/uuid.js";import{digitsOnlyFormatter as r}from"../../utils/Formatters/formatters.js";import{ERROR_FIELD_REQUIRED as a,ERROR_INVALID_FORMAT_EXPECTS as i}from"../Errors/constants.js";import{THREEDS2_FULL as d,DEFAULT_CHALLENGE_WINDOW_SIZE as l}from"../../components/ThreeDS2/constants.js";import u from"../../components/Card/components/CardInput/defaultProps.js";import{DEFAULT_CARD_GROUP_TYPES as m}from"../../components/internal/SecuredFields/lib/constants.js";import{notFalsy as p}from"../../utils/commonUtils.js";const c=()=>Date.now(),g=s=>({timestamp:String(c()),component:s.component,id:t(),..."error"===s.event&&{code:s.code,errorType:s.errorType,message:s.message},..."log"===s.event&&{type:s.type,message:s.message},..."log"===s.event&&(s.type===e||s.type===d)&&{subType:s.subtype},..."log"===s.event&&s.type===d&&{result:s.result},..."info"===s.event&&{type:s.type,target:s.target},..."info"===s.event&&s.issuer&&{issuer:s.issuer},..."info"===s.event&&{isExpress:s.isExpress,expressPage:s.expressPage},..."info"===s.event&&s.isStoredPaymentMethod&&{isStoredPaymentMethod:s.isStoredPaymentMethod,brand:s.brand},..."info"===s.event&&s.type===o&&{validationErrorCode:y(s.validationErrorCode,s.target),validationErrorMessage:s.validationErrorMessage},...s.configData&&{configData:s.configData},...s.metadata&&{metadata:s.metadata}}),y=(e,o)=>{if(e===a||e===i)return s[`${e}.${o}`]??e;let n=s[e]??e;return isNaN(Number(n))&&(n=r(n)),n},h=e=>Object.keys(e).reduce(((o,s)=>(n.includes(s)&&(o[s]=e[s]),o)),{}),b=e=>{const{autoFocus:o,billingAddressAllowedCountries:s,billingAddressMode:n,billingAddressRequired:t,billingAddressRequiredFields:r,brands:a=m,brandsConfiguration:i,challengeWindowSize:d=l,configuration:c,countryCode:g,data:y,disclaimerMessage:h,disableIOSArrowKeys:b,doBinLookup:f,enableStoreDetails:S,exposeExpiryDate:C,forceCompat:O,hasHolderName:A,hideCVC:B,holderNameRequired:k,installmentOptions:P,keypadFix:E,legacyInputMode:F,maskSecurityCode:v,minimumExpiryDate:w,name:M,placeholders:x,positionHolderNameOnTop:D,showBrandIcon:N,showInstallmentAmounts:j,showPayButton:V=!1,styles:I,onAllValid:L,onBinLookup:q,onBinValue:R,onBlur:T,onBrand:K,onConfigSuccess:H,onEnterKeyPressed:z,onFieldValid:J,onFocus:W,onLoad:$}=e,U=JSON.stringify(u.data),G=e.modules?.srPanel?.enabled,Q=e.modules?.srPanel?.moveFocus,X=e.modules?.risk?.enabled,Y=e.onAddressLookup?"lookup":n;let Z="none";!0===c?.koreanAuthenticationRequired&&(Z="kr"===g?.toLowerCase()?"atStart":"auto");const _={autoFocus:o,...s?.length>0&&{billingAddressAllowedCountries:s.toString().substring(0,128)},billingAddressMode:Y,billingAddressRequired:t,billingAddressRequiredFields:r?.toString()?.substring(0,128),brands:a?.toString()?.substring(0,128),challengeWindowSize:d,disableIOSArrowKeys:b,doBinLookup:f,enableStoreDetails:S,exposeExpiryDate:C,forceCompat:O,hasBrandsConfiguration:p(i),hasData:y&&JSON.stringify(e.data)!==U,hasDisclaimerMessage:!!h,hasHolderName:A,hasInstallmentOptions:p(P),hasPlaceholders:p(x),hasStylesConfigured:p(I),hideCVC:B,holderNameRequired:k,keypadFix:E,legacyInputMode:F,maskSecurityCode:v,minimumExpiryDate:!!w,name:M,positionHolderNameOnTop:D,riskEnabled:X,showBrandIcon:N,showInstallmentAmounts:!!j,showKCPType:Z,showPayButton:V,socialSecurityNumberMode:c?.socialSecurityNumberMode,srPanelEnabled:G,srPanelMoveFocus:Q,hasOnAllValid:L!==u.onAllValid,hasOnBinLookup:q!==u.onBinLookup,hasOnBinValue:R!==u.onBinValue,hasOnBlur:T!==u.onBlur,hasOnBrand:K!==u.onBrand,hasOnConfigSuccess:H!==u.onConfigSuccess,hasOnEnterKeyPressed:z!==u.onEnterKeyPressed,hasOnFieldValid:J!==u.onFieldValid,hasOnFocus:W!==u.onFocus,hasOnLoad:$!==u.onLoad};if(Object.keys(_).length>32){return Object.entries(_).reduce(((e,[o,s],n)=>(n<32&&(e[o]=s),e)),{})}return _};export{g as createAnalyticsObject,b as getCardConfigData,c as getUTCTimestamp,h as processAnalyticsData};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/core/Analytics/utils.ts"],"sourcesContent":["import { AnalyticsObject, CreateAnalyticsObject, CardConfigData, AnalyticsData } from './types';\nimport { ANALYTICS_ACTION_STR, ANALYTICS_VALIDATION_ERROR_STR, errorCodeMapping, ALLOWED_ANALYTICS_DATA } from './constants';\nimport uuid from '../../utils/uuid';\nimport { digitsOnlyFormatter } from '../../utils/Formatters/formatters';\nimport { ERROR_FIELD_REQUIRED, ERROR_INVALID_FORMAT_EXPECTS } from '../Errors/constants';\nimport { DEFAULT_CHALLENGE_WINDOW_SIZE, THREEDS2_FULL } from '../../components/ThreeDS2/constants';\nimport { CardConfiguration } from '../../components/Card/types';\nimport CardInputDefaultProps from '../../components/Card/components/CardInput/defaultProps';\nimport { DEFAULT_CARD_GROUP_TYPES } from '../../components/internal/SecuredFields/lib/constants';\nimport { notFalsy } from '../../utils/commonUtils';\n\nexport const getUTCTimestamp = () => Date.now();\n\n/**\n * All objects for the /checkoutanalytics endpoint have base props:\n * \"timestamp\" & \"component\"\n *\n * Error objects have, in addition to the base props:\n * \"code\", \"errorType\" & \"message\"\n *\n * Log objects have, in addition to the base props:\n * \"message\" & \"type\" &\n * \"subtype\" (e.g. when an action is handled)\n *\n * Info objects have, in addition to the base props:\n * \"type\" & \"target\" &\n * \"isStoredPaymentMethod\" & \"brand\" (when a storedCard is \"selected\"), or,\n * \"validationErrorCode\" & \"validationErrorMessage\" (when the event is describing a validation error)\n *\n * All objects can also have a \"metadata\" object of key-value pairs\n */\nexport const createAnalyticsObject = (aObj: CreateAnalyticsObject): AnalyticsObject => ({\n timestamp: String(getUTCTimestamp()),\n component: aObj.component,\n id: uuid(),\n /** ERROR */\n ...(aObj.event === 'error' && { code: aObj.code, errorType: aObj.errorType, message: aObj.message }), // error event\n /** LOG */\n ...(aObj.event === 'log' && { type: aObj.type, message: aObj.message }), // log event\n ...(aObj.event === 'log' && (aObj.type === ANALYTICS_ACTION_STR || aObj.type === THREEDS2_FULL) && { subType: aObj.subtype }), // only added if we have a log event of Action type or ThreeDS2\n ...(aObj.event === 'log' && aObj.type === THREEDS2_FULL && { result: aObj.result }), // only added if we have a log event of ThreeDS2 type\n /** INFO */\n ...(aObj.event === 'info' && { type: aObj.type, target: aObj.target }), // info event\n ...(aObj.event === 'info' && aObj.issuer && { issuer: aObj.issuer }), // relates to issuerLists\n ...(aObj.event === 'info' && { isExpress: aObj.isExpress, expressPage: aObj.expressPage }), // relates to Plugins & detecting Express PMs\n ...(aObj.event === 'info' && aObj.isStoredPaymentMethod && { isStoredPaymentMethod: aObj.isStoredPaymentMethod, brand: aObj.brand }), // only added if we have an info event about a storedPM\n ...(aObj.event === 'info' &&\n aObj.type === ANALYTICS_VALIDATION_ERROR_STR && {\n validationErrorCode: mapErrorCodesForAnalytics(aObj.validationErrorCode, aObj.target),\n validationErrorMessage: aObj.validationErrorMessage\n }), // only added if we have an info event describing a validation error\n ...(aObj.configData && { configData: aObj.configData }),\n /** All */\n ...(aObj.metadata && { metadata: aObj.metadata })\n});\n\nconst mapErrorCodesForAnalytics = (errorCode: string, target: string) => {\n // Some of the more generic error codes required combination with target to retrieve a specific code\n if (errorCode === ERROR_FIELD_REQUIRED || errorCode === ERROR_INVALID_FORMAT_EXPECTS) {\n return errorCodeMapping[`${errorCode}.${target}`] ?? errorCode;\n }\n\n let errCode = errorCodeMapping[errorCode] ?? errorCode;\n\n // If errCode isn't now a number - then we just need to remove any non-digits\n // since the correct error code is already contained within the string e.g. securedField related errors\n if (isNaN(Number(errCode))) {\n errCode = digitsOnlyFormatter(errCode);\n }\n\n return errCode;\n};\n\nexport const processAnalyticsData = (analyticsData: AnalyticsData): AnalyticsData => {\n return Object.keys(analyticsData).reduce((acc, prop) => {\n if (ALLOWED_ANALYTICS_DATA.includes(prop)) acc[prop] = analyticsData[prop];\n return acc;\n }, {});\n};\n\nexport const getCardConfigData = (cardProps: CardConfiguration): CardConfigData => {\n // Extract props from cardProps - mostly setting a default value, if prop not found\n const {\n autoFocus,\n billingAddressAllowedCountries,\n billingAddressMode,\n billingAddressRequired,\n billingAddressRequiredFields,\n brands = DEFAULT_CARD_GROUP_TYPES,\n brandsConfiguration,\n challengeWindowSize = DEFAULT_CHALLENGE_WINDOW_SIZE,\n configuration,\n countryCode,\n data,\n disclaimerMessage,\n disableIOSArrowKeys,\n doBinLookup,\n enableStoreDetails,\n exposeExpiryDate,\n forceCompat,\n hasHolderName,\n hideCVC,\n holderNameRequired,\n installmentOptions,\n keypadFix,\n legacyInputMode,\n maskSecurityCode,\n minimumExpiryDate,\n name, // = 'none',\n placeholders,\n positionHolderNameOnTop,\n showBrandIcon,\n showInstallmentAmounts,\n showPayButton = false, // hard coded default\n styles,\n onAllValid,\n onBinLookup,\n onBinValue,\n onBlur,\n onBrand,\n onConfigSuccess,\n onEnterKeyPressed,\n onFieldValid,\n onFocus,\n onLoad\n } = cardProps;\n\n const dataString = JSON.stringify(CardInputDefaultProps.data);\n\n const srPanelEnabled = cardProps.modules?.srPanel?.enabled;\n const srPanelMoveFocus = cardProps.modules?.srPanel?.moveFocus;\n\n const riskEnabled = cardProps.modules?.risk?.enabled;\n\n const billingAddressModeValue = cardProps.onAddressLookup ? 'lookup' : billingAddressMode;\n\n let showKCPType: 'none' | 'auto' | 'atStart' = 'none';\n if (configuration?.koreanAuthenticationRequired === true) {\n showKCPType = countryCode?.toLowerCase() === 'kr' ? 'atStart' : 'auto';\n }\n\n // Probably just for development - in real life we wouldn't expect the number of supported brands to push the endpoint limit on 128 chars\n let brandsStr = JSON.stringify(brands);\n if (brandsStr.length > 128) {\n brandsStr = brandsStr.substring(0, 124) + '...]';\n }\n\n // @ts-ignore commenting out props until endpoint is ready\n const configData: CardConfigData = {\n autoFocus,\n billingAddressAllowedCountries: JSON.stringify(billingAddressAllowedCountries),\n billingAddressMode: billingAddressModeValue,\n billingAddressRequired,\n billingAddressRequiredFields: JSON.stringify(billingAddressRequiredFields),\n brands: brandsStr,\n challengeWindowSize,\n disableIOSArrowKeys,\n doBinLookup,\n enableStoreDetails,\n exposeExpiryDate,\n forceCompat,\n hasBrandsConfiguration: notFalsy(brandsConfiguration),\n hasData: data && JSON.stringify(cardProps.data) !== dataString,\n hasDisclaimerMessage: !!disclaimerMessage,\n hasHolderName,\n hasInstallmentOptions: notFalsy(installmentOptions),\n hasPlaceholders: notFalsy(placeholders), // has merchant defined placeholders\n hasStylesConfigured: notFalsy(styles),\n hideCVC,\n holderNameRequired,\n keypadFix,\n legacyInputMode,\n maskSecurityCode,\n minimumExpiryDate: !!minimumExpiryDate, // Potentially, in the future, we can send the actual string value\n name,\n positionHolderNameOnTop,\n riskEnabled,\n showBrandIcon,\n showInstallmentAmounts: !!showInstallmentAmounts,\n showKCPType,\n showPayButton,\n socialSecurityNumberMode: configuration?.socialSecurityNumberMode,\n srPanelEnabled,\n srPanelMoveFocus,\n /** callbacks */\n // We need to detect if the merchant themselves has defined these, not if we've set them as a default\n hasOnAllValid: onAllValid !== CardInputDefaultProps.onAllValid,\n hasOnBinLookup: onBinLookup !== CardInputDefaultProps.onBinLookup,\n hasOnBinValue: onBinValue !== CardInputDefaultProps.onBinValue,\n hasOnBlur: onBlur !== CardInputDefaultProps.onBlur,\n hasOnBrand: onBrand !== CardInputDefaultProps.onBrand,\n hasOnConfigSuccess: onConfigSuccess !== CardInputDefaultProps.onConfigSuccess,\n hasOnEnterKeyPressed: onEnterKeyPressed !== CardInputDefaultProps.onEnterKeyPressed,\n hasOnFieldValid: onFieldValid !== CardInputDefaultProps.onFieldValid,\n hasOnFocus: onFocus !== CardInputDefaultProps.onFocus,\n hasOnLoad: onLoad !== CardInputDefaultProps.onLoad\n };\n\n // TODO - keep until endpoint can accept more entries in the configData object (current limit: 32);\n if (Object.keys(configData).length > 32) {\n const strippedConfigData = Object.entries(configData).reduce((acc, [key, value], index) => {\n if (index < 32) {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n return strippedConfigData as CardConfigData;\n }\n\n return configData;\n};\n"],"names":["getUTCTimestamp","Date","now","createAnalyticsObject","aObj","timestamp","String","component","id","uuid","event","code","errorType","message","type","ANALYTICS_ACTION_STR","THREEDS2_FULL","subType","subtype","result","target","issuer","isExpress","expressPage","isStoredPaymentMethod","brand","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","mapErrorCodesForAnalytics","validationErrorMessage","configData","metadata","errorCode","ERROR_FIELD_REQUIRED","ERROR_INVALID_FORMAT_EXPECTS","errorCodeMapping","errCode","isNaN","Number","digitsOnlyFormatter","processAnalyticsData","analyticsData","Object","keys","reduce","acc","prop","ALLOWED_ANALYTICS_DATA","includes","getCardConfigData","cardProps","autoFocus","billingAddressAllowedCountries","billingAddressMode","billingAddressRequired","billingAddressRequiredFields","brands","DEFAULT_CARD_GROUP_TYPES","brandsConfiguration","challengeWindowSize","DEFAULT_CHALLENGE_WINDOW_SIZE","configuration","countryCode","data","disclaimerMessage","disableIOSArrowKeys","doBinLookup","enableStoreDetails","exposeExpiryDate","forceCompat","hasHolderName","hideCVC","holderNameRequired","installmentOptions","keypadFix","legacyInputMode","maskSecurityCode","minimumExpiryDate","name","placeholders","positionHolderNameOnTop","showBrandIcon","showInstallmentAmounts","showPayButton","styles","onAllValid","onBinLookup","onBinValue","onBlur","onBrand","onConfigSuccess","onEnterKeyPressed","onFieldValid","onFocus","onLoad","dataString","JSON","stringify","CardInputDefaultProps","srPanelEnabled","modules","srPanel","enabled","srPanelMoveFocus","moveFocus","riskEnabled","risk","billingAddressModeValue","onAddressLookup","showKCPType","koreanAuthenticationRequired","toLowerCase","brandsStr","length","substring","hasBrandsConfiguration","notFalsy","hasData","hasDisclaimerMessage","hasInstallmentOptions","hasPlaceholders","hasStylesConfigured","socialSecurityNumberMode","hasOnAllValid","hasOnBinLookup","hasOnBinValue","hasOnBlur","hasOnBrand","hasOnConfigSuccess","hasOnEnterKeyPressed","hasOnFieldValid","hasOnFocus","hasOnLoad","entries","key","value","index"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/core/Analytics/utils.ts"],"sourcesContent":["import { AnalyticsObject, CreateAnalyticsObject, CardConfigData, AnalyticsData } from './types';\nimport { ANALYTICS_ACTION_STR, ANALYTICS_VALIDATION_ERROR_STR, errorCodeMapping, ALLOWED_ANALYTICS_DATA } from './constants';\nimport uuid from '../../utils/uuid';\nimport { digitsOnlyFormatter } from '../../utils/Formatters/formatters';\nimport { ERROR_FIELD_REQUIRED, ERROR_INVALID_FORMAT_EXPECTS } from '../Errors/constants';\nimport { DEFAULT_CHALLENGE_WINDOW_SIZE, THREEDS2_FULL } from '../../components/ThreeDS2/constants';\nimport { CardConfiguration } from '../../components/Card/types';\nimport CardInputDefaultProps from '../../components/Card/components/CardInput/defaultProps';\nimport { DEFAULT_CARD_GROUP_TYPES } from '../../components/internal/SecuredFields/lib/constants';\nimport { notFalsy } from '../../utils/commonUtils';\n\nconst MAX_LENGTH = 128;\nexport const getUTCTimestamp = () => Date.now();\n\n/**\n * All objects for the /checkoutanalytics endpoint have base props:\n * \"timestamp\" & \"component\"\n *\n * Error objects have, in addition to the base props:\n * \"code\", \"errorType\" & \"message\"\n *\n * Log objects have, in addition to the base props:\n * \"message\" & \"type\" &\n * \"subtype\" (e.g. when an action is handled)\n *\n * Info objects have, in addition to the base props:\n * \"type\" & \"target\" &\n * \"isStoredPaymentMethod\" & \"brand\" (when a storedCard is \"selected\"), or,\n * \"validationErrorCode\" & \"validationErrorMessage\" (when the event is describing a validation error)\n *\n * All objects can also have a \"metadata\" object of key-value pairs\n */\nexport const createAnalyticsObject = (aObj: CreateAnalyticsObject): AnalyticsObject => ({\n timestamp: String(getUTCTimestamp()),\n component: aObj.component,\n id: uuid(),\n /** ERROR */\n ...(aObj.event === 'error' && { code: aObj.code, errorType: aObj.errorType, message: aObj.message }), // error event\n /** LOG */\n ...(aObj.event === 'log' && { type: aObj.type, message: aObj.message }), // log event\n ...(aObj.event === 'log' && (aObj.type === ANALYTICS_ACTION_STR || aObj.type === THREEDS2_FULL) && { subType: aObj.subtype }), // only added if we have a log event of Action type or ThreeDS2\n ...(aObj.event === 'log' && aObj.type === THREEDS2_FULL && { result: aObj.result }), // only added if we have a log event of ThreeDS2 type\n /** INFO */\n ...(aObj.event === 'info' && { type: aObj.type, target: aObj.target }), // info event\n ...(aObj.event === 'info' && aObj.issuer && { issuer: aObj.issuer }), // relates to issuerLists\n ...(aObj.event === 'info' && { isExpress: aObj.isExpress, expressPage: aObj.expressPage }), // relates to Plugins & detecting Express PMs\n ...(aObj.event === 'info' && aObj.isStoredPaymentMethod && { isStoredPaymentMethod: aObj.isStoredPaymentMethod, brand: aObj.brand }), // only added if we have an info event about a storedPM\n ...(aObj.event === 'info' &&\n aObj.type === ANALYTICS_VALIDATION_ERROR_STR && {\n validationErrorCode: mapErrorCodesForAnalytics(aObj.validationErrorCode, aObj.target),\n validationErrorMessage: aObj.validationErrorMessage\n }), // only added if we have an info event describing a validation error\n ...(aObj.configData && { configData: aObj.configData }),\n /** All */\n ...(aObj.metadata && { metadata: aObj.metadata })\n});\n\nconst mapErrorCodesForAnalytics = (errorCode: string, target: string) => {\n // Some of the more generic error codes required combination with target to retrieve a specific code\n if (errorCode === ERROR_FIELD_REQUIRED || errorCode === ERROR_INVALID_FORMAT_EXPECTS) {\n return errorCodeMapping[`${errorCode}.${target}`] ?? errorCode;\n }\n\n let errCode = errorCodeMapping[errorCode] ?? errorCode;\n\n // If errCode isn't now a number - then we just need to remove any non-digits\n // since the correct error code is already contained within the string e.g. securedField related errors\n if (isNaN(Number(errCode))) {\n errCode = digitsOnlyFormatter(errCode);\n }\n\n return errCode;\n};\n\nexport const processAnalyticsData = (analyticsData: AnalyticsData): AnalyticsData => {\n return Object.keys(analyticsData).reduce((acc, prop) => {\n if (ALLOWED_ANALYTICS_DATA.includes(prop)) acc[prop] = analyticsData[prop];\n return acc;\n }, {});\n};\n\nexport const getCardConfigData = (cardProps: CardConfiguration): CardConfigData => {\n // Extract props from cardProps - mostly setting a default value, if prop not found\n const {\n autoFocus,\n billingAddressAllowedCountries,\n billingAddressMode,\n billingAddressRequired,\n billingAddressRequiredFields,\n brands = DEFAULT_CARD_GROUP_TYPES,\n brandsConfiguration,\n challengeWindowSize = DEFAULT_CHALLENGE_WINDOW_SIZE,\n configuration,\n countryCode,\n data,\n disclaimerMessage,\n disableIOSArrowKeys,\n doBinLookup,\n enableStoreDetails,\n exposeExpiryDate,\n forceCompat,\n hasHolderName,\n hideCVC,\n holderNameRequired,\n installmentOptions,\n keypadFix,\n legacyInputMode,\n maskSecurityCode,\n minimumExpiryDate,\n name, // = 'none',\n placeholders,\n positionHolderNameOnTop,\n showBrandIcon,\n showInstallmentAmounts,\n showPayButton = false, // hard coded default\n styles,\n onAllValid,\n onBinLookup,\n onBinValue,\n onBlur,\n onBrand,\n onConfigSuccess,\n onEnterKeyPressed,\n onFieldValid,\n onFocus,\n onLoad\n } = cardProps;\n\n const dataString = JSON.stringify(CardInputDefaultProps.data);\n\n const srPanelEnabled = cardProps.modules?.srPanel?.enabled;\n const srPanelMoveFocus = cardProps.modules?.srPanel?.moveFocus;\n\n const riskEnabled = cardProps.modules?.risk?.enabled;\n\n const billingAddressModeValue = cardProps.onAddressLookup ? 'lookup' : billingAddressMode;\n\n let showKCPType: 'none' | 'auto' | 'atStart' = 'none';\n if (configuration?.koreanAuthenticationRequired === true) {\n showKCPType = countryCode?.toLowerCase() === 'kr' ? 'atStart' : 'auto';\n }\n\n // @ts-ignore commenting out props until endpoint is ready\n const configData: CardConfigData = {\n autoFocus,\n ...(billingAddressAllowedCountries?.length > 0 && {\n billingAddressAllowedCountries: billingAddressAllowedCountries.toString().substring(0, MAX_LENGTH)\n }),\n billingAddressMode: billingAddressModeValue,\n billingAddressRequired,\n billingAddressRequiredFields: billingAddressRequiredFields?.toString()?.substring(0, MAX_LENGTH),\n // Probably just for development - in real life we wouldn't expect the number of supported brands to push the endpoint limit on 128 chars\n brands: brands?.toString()?.substring(0, MAX_LENGTH),\n challengeWindowSize,\n disableIOSArrowKeys,\n doBinLookup,\n enableStoreDetails,\n exposeExpiryDate,\n forceCompat,\n hasBrandsConfiguration: notFalsy(brandsConfiguration),\n hasData: data && JSON.stringify(cardProps.data) !== dataString,\n hasDisclaimerMessage: !!disclaimerMessage,\n hasHolderName,\n hasInstallmentOptions: notFalsy(installmentOptions),\n hasPlaceholders: notFalsy(placeholders), // has merchant defined placeholders\n hasStylesConfigured: notFalsy(styles),\n hideCVC,\n holderNameRequired,\n keypadFix,\n legacyInputMode,\n maskSecurityCode,\n minimumExpiryDate: !!minimumExpiryDate, // Potentially, in the future, we can send the actual string value\n name,\n positionHolderNameOnTop,\n riskEnabled,\n showBrandIcon,\n showInstallmentAmounts: !!showInstallmentAmounts,\n showKCPType,\n showPayButton,\n socialSecurityNumberMode: configuration?.socialSecurityNumberMode,\n srPanelEnabled,\n srPanelMoveFocus,\n /** callbacks */\n // We need to detect if the merchant themselves has defined these, not if we've set them as a default\n hasOnAllValid: onAllValid !== CardInputDefaultProps.onAllValid,\n hasOnBinLookup: onBinLookup !== CardInputDefaultProps.onBinLookup,\n hasOnBinValue: onBinValue !== CardInputDefaultProps.onBinValue,\n hasOnBlur: onBlur !== CardInputDefaultProps.onBlur,\n hasOnBrand: onBrand !== CardInputDefaultProps.onBrand,\n hasOnConfigSuccess: onConfigSuccess !== CardInputDefaultProps.onConfigSuccess,\n hasOnEnterKeyPressed: onEnterKeyPressed !== CardInputDefaultProps.onEnterKeyPressed,\n hasOnFieldValid: onFieldValid !== CardInputDefaultProps.onFieldValid,\n hasOnFocus: onFocus !== CardInputDefaultProps.onFocus,\n hasOnLoad: onLoad !== CardInputDefaultProps.onLoad\n };\n\n // TODO - keep until endpoint can accept more entries in the configData object (current limit: 32);\n if (Object.keys(configData).length > 32) {\n const strippedConfigData = Object.entries(configData).reduce((acc, [key, value], index) => {\n if (index < 32) {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n return strippedConfigData as CardConfigData;\n }\n\n return configData;\n};\n"],"names":["getUTCTimestamp","Date","now","createAnalyticsObject","aObj","timestamp","String","component","id","uuid","event","code","errorType","message","type","ANALYTICS_ACTION_STR","THREEDS2_FULL","subType","subtype","result","target","issuer","isExpress","expressPage","isStoredPaymentMethod","brand","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","mapErrorCodesForAnalytics","validationErrorMessage","configData","metadata","errorCode","ERROR_FIELD_REQUIRED","ERROR_INVALID_FORMAT_EXPECTS","errorCodeMapping","errCode","isNaN","Number","digitsOnlyFormatter","processAnalyticsData","analyticsData","Object","keys","reduce","acc","prop","ALLOWED_ANALYTICS_DATA","includes","getCardConfigData","cardProps","autoFocus","billingAddressAllowedCountries","billingAddressMode","billingAddressRequired","billingAddressRequiredFields","brands","DEFAULT_CARD_GROUP_TYPES","brandsConfiguration","challengeWindowSize","DEFAULT_CHALLENGE_WINDOW_SIZE","configuration","countryCode","data","disclaimerMessage","disableIOSArrowKeys","doBinLookup","enableStoreDetails","exposeExpiryDate","forceCompat","hasHolderName","hideCVC","holderNameRequired","installmentOptions","keypadFix","legacyInputMode","maskSecurityCode","minimumExpiryDate","name","placeholders","positionHolderNameOnTop","showBrandIcon","showInstallmentAmounts","showPayButton","styles","onAllValid","onBinLookup","onBinValue","onBlur","onBrand","onConfigSuccess","onEnterKeyPressed","onFieldValid","onFocus","onLoad","dataString","JSON","stringify","CardInputDefaultProps","srPanelEnabled","modules","srPanel","enabled","srPanelMoveFocus","moveFocus","riskEnabled","risk","billingAddressModeValue","onAddressLookup","showKCPType","koreanAuthenticationRequired","toLowerCase","length","toString","substring","hasBrandsConfiguration","notFalsy","hasData","hasDisclaimerMessage","hasInstallmentOptions","hasPlaceholders","hasStylesConfigured","socialSecurityNumberMode","hasOnAllValid","hasOnBinLookup","hasOnBinValue","hasOnBlur","hasOnBrand","hasOnConfigSuccess","hasOnEnterKeyPressed","hasOnFieldValid","hasOnFocus","hasOnLoad","entries","key","value","index"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{httpPost as e}from"../http.js";import t from"../../../utils/Storage.js";const o='WARNING: Failed to retrieve "checkoutAttemptId". Consequently, analytics will not be available for this payment. The payment process, however, will not be affected.';const n=({analyticsContext:n,clientKey:r,locale:i,analyticsPath:c,bundleType:a})=>{let l;const s={errorLevel:"fatal",loadingContext:n,path:`${c}?clientKey=${r}`};return n=>{const c={version:"6.0.3",channel:"Web",platform:"Web",buildType:a,locale:i,referrer:window.location.href,screenWidth:window.screen.width,...n};if(l)return l;if(!r)return Promise.reject("no-client-key");const m=new t("checkout-attempt-id","sessionStorage"),d=m.get();return function(e){if(!e?.id)return!1;const t=Date.now()-9e5;return e.timestamp>t}(d)?Promise.resolve(d.id):(l=e(s,c).then((e=>{if(e?.checkoutAttemptId)return m.set({id:e.checkoutAttemptId,timestamp:Date.now()}),e.checkoutAttemptId})).catch((()=>Promise.reject(o))),l)}};export{o as FAILURE_MSG,n as default};
1
+ import{httpPost as e}from"../http.js";import t from"../../../utils/Storage.js";const o='WARNING: Failed to retrieve "checkoutAttemptId". Consequently, analytics will not be available for this payment. The payment process, however, will not be affected.';const n=({analyticsContext:n,clientKey:r,locale:i,analyticsPath:c,bundleType:a})=>{let l;const s={errorLevel:"fatal",loadingContext:n,path:`${c}?clientKey=${r}`};return n=>{const c={version:"6.1.1",channel:"Web",platform:"Web",buildType:a,locale:i,referrer:window.location.href,screenWidth:window.screen.width,...n};if(l)return l;if(!r)return Promise.reject("no-client-key");const m=new t("checkout-attempt-id","sessionStorage"),d=m.get();return function(e){if(!e?.id)return!1;const t=Date.now()-9e5;return e.timestamp>t}(d)?Promise.resolve(d.id):(l=e(s,c).then((e=>{if(e?.checkoutAttemptId)return m.set({id:e.checkoutAttemptId,timestamp:Date.now()}),e.checkoutAttemptId})).catch((()=>Promise.reject(o))),l)}};export{o as FAILURE_MSG,n as default};
2
2
  //# sourceMappingURL=collect-id.js.map
@@ -1,2 +1,2 @@
1
- import{Language as t}from"../language/Language.js";import o from"./RiskModule/RiskModule.js";import s from"./ProcessResponse/PaymentMethods/PaymentMethods.js";import{getComponentForAction as e}from"./ProcessResponse/PaymentAction/PaymentAction.js";import i from"./Analytics/Analytics.js";import{assertConfigurationPropertiesAreValid as n,processGlobalOptions as a}from"./utils.js";import r from"./CheckoutSession/CheckoutSession.js";import{hasOwnProperty as h}from"../utils/hasOwnProperty.js";import{Resources as l}from"./Context/Resources.js";import{SRPanel as c}from"./Errors/SRPanel.js";import p from"./core.registry.js";import{sanitizeResponse as m,verifyPaymentDidNotFail as d,cleanupFinalResult as u}from"../components/internal/UIElement/utils.js";import y,{IMPLEMENTATION_ERROR as g}from"./Errors/AdyenCheckoutError.js";import{ANALYTICS_ACTION_STR as f}from"./Analytics/constants.js";import{THREEDS2_FULL as C}from"../components/ThreeDS2/constants.js";import{DEFAULT_LOCALE as w}from"../language/constants.js";import j from"./Services/get-translations.js";import{defaultProps as E}from"./core.defaultProps.js";import{formatLocale as v,formatCustomTranslations as A}from"../language/utils.js";import{resolveEnvironments as b}from"./Environment/Environment.js";class P{session;paymentMethodsResponse;modules;options;analyticsContext;loadingContext;cdnImagesUrl;cdnTranslationsUrl;components=[];static metadata={version:"6.0.3",bundleType:"esm"};static registry=p;static setBundleType(t){P.metadata.bundleType=t}static register(...t){p.add(...t)}register(...t){p.add(...t)}getComponent(t){return p.getComponent(t)}constructor(t){n(t),this.createFromAction=this.createFromAction.bind(this),this.setOptions({...E,...t});const{apiUrl:o,analyticsUrl:s,cdnImagesUrl:e,cdnTranslationsUrl:i}=b(this.options.environment,this.options._environmentUrls);this.loadingContext=o,this.analyticsContext=s,this.cdnImagesUrl=e,this.cdnTranslationsUrl=i,this.session=this.options.session&&new r(this.options.session,this.options.clientKey,this.loadingContext);const a=this.options.clientKey?.substring(0,4);if(("test"===a||"live"===a)&&!this.loadingContext.includes(a))throw new y("IMPLEMENTATION_ERROR",`Error: you are using a ${a} clientKey against the ${this.options._environmentUrls?.api||this.options.environment} environment`);"pub."===a&&console.debug(`The value you are passing as your "clientKey" looks like an originKey (${this.options.clientKey?.substring(0,12)}..). Although this is supported it is not the recommended way to integrate. To generate a clientKey, see the documentation (https://docs.adyen.com/development-resources/client-side-authentication/migrate-from-origin-key-to-client-key/) for more details.`),this.options.exposeLibraryMetadata&&(window.AdyenWebMetadata=P.metadata)}async initialize(){return await this.initializeCore(),this.validateCoreConfiguration(),await this.createCoreModules(),this}async initializeCore(){return this.session?this.session.setupSession(this.options).then((t=>{const{amount:o,shopperLocale:s,countryCode:e,paymentMethods:i,...n}=t;return this.setOptions({...n,amount:this.options.order?this.options.order.remainingAmount:o,locale:this.options.locale||s,countryCode:this.options.countryCode||e}),this.createPaymentMethodsList(i),this})).catch((t=>(this.options.onError&&this.options.onError(t),Promise.reject(t)))):(this.createPaymentMethodsList(),Promise.resolve(this))}async fetchLocaleTranslations(){try{return await j(this.cdnTranslationsUrl,P.metadata.version,this.options.locale)}catch(t){t instanceof y?this.options.onError?.(t):this.options.onError?.(new y("ERROR","Failed to fetch translation",{cause:t}))}}validateCoreConfiguration(){if(this.options.paymentMethodsConfiguration&&console.warn('WARNING: "paymentMethodsConfiguration" is supported only by Drop-in.'),!this.options.countryCode)throw new y(g,"You must specify a countryCode when initializing checkout.");this.options.locale||this.setOptions({locale:w}),this.options.locale=v(this.options.locale),this.options.translations=A(this.options.translations)}submitDetails(t){let o=null;this.options.onAdditionalDetails&&(o=new Promise(((o,s)=>{this.options.onAdditionalDetails({data:t},void 0,{resolve:o,reject:s})}))),this.session&&(o=this.session.submitDetails(t).catch((t=>(this.options.onError?.(t),Promise.reject(t))))),o?o.then(m).then(d).then((t=>{u(t),this.options.onPaymentCompleted?.(t)})).catch((t=>{u(t),this.options.onPaymentFailed?.(t)})):this.options.onError?.(new y("IMPLEMENTATION_ERROR",'It can not submit the details. The callback "onAdditionalDetails" or the Session is not setup correctly.'))}createFromAction(t,o={}){if(!t||!t.type){if(h(t,"action")&&h(t,"resultCode"))throw new Error('createFromAction::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('createFromAction::Invalid Action - the passed action object does not have a "type" property')}if(t.type){const s=t.type===C?`${t.type}${t.subtype}`:t.paymentMethodType;this.modules.analytics.sendAnalytics(s,{type:f,subtype:t.type,message:`${s} action was handled by the SDK`});const i={...this.getCorePropsForComponent(),...o};return e(this,p,t,i)}return this.handleCreateError()}update=(t={})=>(this.setOptions(t),this.initialize().then((()=>(this.components.forEach((o=>{const s={...t,...this.session&&{session:this.session}};o.update(s)})),this))));remove=t=>(this.components=this.components.filter((o=>o._id!==t._id)),t.unmount(),this);setOptions=t=>{this.options={...this.options,...t,locale:t?.locale||this.options?.locale}};getCorePropsForComponent(){return{...a(this.options),core:this,i18n:this.modules.i18n,modules:this.modules,session:this.session,loadingContext:this.loadingContext,cdnContext:this.cdnImagesUrl,createFromAction:this.createFromAction}}storeElementReference(t){t&&this.components.push(t)}handleCreateError(t){const o=t?`${t?.name??"The passed payment method"} is not a valid Checkout Component. What was passed as a txVariant was: ${JSON.stringify(t)}. Check if this payment method is configured in the Backoffice or if the txVariant is a valid one`:"No Payment Method component was passed";throw new Error(o)}createPaymentMethodsList(t){this.paymentMethodsResponse=new s(this.options.paymentMethodsResponse||t,this.options)}async createCoreModules(){if(this.modules)return;const s=await this.fetchLocaleTranslations();this.modules=Object.freeze({risk:new o(this,{...this.options,loadingContext:this.loadingContext}),analytics:i({loadingContext:this.loadingContext,analyticsContext:this.analyticsContext,clientKey:this.options.clientKey,locale:this.options.locale,analytics:this.options.analytics,amount:this.options.amount,bundleType:P.metadata.bundleType}),resources:new l(this.cdnImagesUrl),i18n:new t({locale:this.options.locale,translations:s,customTranslations:this.options.translations}),srPanel:new c(this,{...this.options.srConfig})})}}export{P as default};
1
+ import{Language as t}from"../language/Language.js";import o from"./RiskModule/RiskModule.js";import s from"./ProcessResponse/PaymentMethods/PaymentMethods.js";import{getComponentForAction as e}from"./ProcessResponse/PaymentAction/PaymentAction.js";import i from"./Analytics/Analytics.js";import{assertConfigurationPropertiesAreValid as n,processGlobalOptions as a}from"./utils.js";import r from"./CheckoutSession/CheckoutSession.js";import{hasOwnProperty as h}from"../utils/hasOwnProperty.js";import{Resources as l}from"./Context/Resources.js";import{SRPanel as c}from"./Errors/SRPanel.js";import p from"./core.registry.js";import{sanitizeResponse as m,verifyPaymentDidNotFail as d,cleanupFinalResult as u}from"../components/internal/UIElement/utils.js";import y,{IMPLEMENTATION_ERROR as g}from"./Errors/AdyenCheckoutError.js";import{ANALYTICS_ACTION_STR as f}from"./Analytics/constants.js";import{THREEDS2_FULL as C}from"../components/ThreeDS2/constants.js";import{DEFAULT_LOCALE as w}from"../language/constants.js";import j from"./Services/get-translations.js";import{defaultProps as E}from"./core.defaultProps.js";import{formatLocale as v,formatCustomTranslations as A}from"../language/utils.js";import{resolveEnvironments as b}from"./Environment/Environment.js";class P{session;paymentMethodsResponse;modules;options;analyticsContext;loadingContext;cdnImagesUrl;cdnTranslationsUrl;components=[];static metadata={version:"6.1.1",bundleType:"esm"};static registry=p;static setBundleType(t){P.metadata.bundleType=t}static register(...t){p.add(...t)}register(...t){p.add(...t)}getComponent(t){return p.getComponent(t)}constructor(t){n(t),this.createFromAction=this.createFromAction.bind(this),this.setOptions({...E,...t});const{apiUrl:o,analyticsUrl:s,cdnImagesUrl:e,cdnTranslationsUrl:i}=b(this.options.environment,this.options._environmentUrls);this.loadingContext=o,this.analyticsContext=s,this.cdnImagesUrl=e,this.cdnTranslationsUrl=i,this.session=this.options.session&&new r(this.options.session,this.options.clientKey,this.loadingContext);const a=this.options.clientKey?.substring(0,4);if(("test"===a||"live"===a)&&!this.loadingContext.includes(a))throw new y("IMPLEMENTATION_ERROR",`Error: you are using a ${a} clientKey against the ${this.options._environmentUrls?.api||this.options.environment} environment`);"pub."===a&&console.debug(`The value you are passing as your "clientKey" looks like an originKey (${this.options.clientKey?.substring(0,12)}..). Although this is supported it is not the recommended way to integrate. To generate a clientKey, see the documentation (https://docs.adyen.com/development-resources/client-side-authentication/migrate-from-origin-key-to-client-key/) for more details.`),this.options.exposeLibraryMetadata&&(window.AdyenWebMetadata=P.metadata)}async initialize(){return await this.initializeCore(),this.validateCoreConfiguration(),await this.createCoreModules(),this}async initializeCore(){return this.session?this.session.setupSession(this.options).then((t=>{const{amount:o,shopperLocale:s,countryCode:e,paymentMethods:i,...n}=t;return this.setOptions({...n,amount:this.options.order?this.options.order.remainingAmount:o,locale:this.options.locale||s,countryCode:this.options.countryCode||e}),this.createPaymentMethodsList(i),this})).catch((t=>(this.options.onError&&this.options.onError(t),Promise.reject(t)))):(this.createPaymentMethodsList(),Promise.resolve(this))}async fetchLocaleTranslations(){try{return await j(this.cdnTranslationsUrl,P.metadata.version,this.options.locale)}catch(t){t instanceof y?this.options.onError?.(t):this.options.onError?.(new y("ERROR","Failed to fetch translation",{cause:t}))}}validateCoreConfiguration(){if(this.options.paymentMethodsConfiguration&&console.warn('WARNING: "paymentMethodsConfiguration" is supported only by Drop-in.'),!this.options.countryCode)throw new y(g,"You must specify a countryCode when initializing checkout.");this.options.locale||this.setOptions({locale:w}),this.options.locale=v(this.options.locale),this.options.translations=A(this.options.translations)}submitDetails(t){let o=null;this.options.onAdditionalDetails&&(o=new Promise(((o,s)=>{this.options.onAdditionalDetails({data:t},void 0,{resolve:o,reject:s})}))),this.session&&(o=this.session.submitDetails(t).catch((t=>(this.options.onError?.(t),Promise.reject(t))))),o?o.then(m).then(d).then((t=>{u(t),this.options.onPaymentCompleted?.(t)})).catch((t=>{u(t),this.options.onPaymentFailed?.(t)})):this.options.onError?.(new y("IMPLEMENTATION_ERROR",'It can not submit the details. The callback "onAdditionalDetails" or the Session is not setup correctly.'))}createFromAction(t,o={}){if(!t||!t.type){if(h(t,"action")&&h(t,"resultCode"))throw new Error('createFromAction::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('createFromAction::Invalid Action - the passed action object does not have a "type" property')}if(t.type){const s=t.type===C?`${t.type}${t.subtype}`:t.paymentMethodType;this.modules.analytics.sendAnalytics(s,{type:f,subtype:t.type,message:`${s} action was handled by the SDK`});const i={...this.getCorePropsForComponent(),...o};return e(this,p,t,i)}return this.handleCreateError()}update=(t={})=>(this.setOptions(t),this.initialize().then((()=>(this.components.forEach((o=>{const s={...t,...this.session&&{session:this.session}};o.update(s)})),this))));remove=t=>(this.components=this.components.filter((o=>o._id!==t._id)),t.unmount(),this);setOptions=t=>{this.options={...this.options,...t,locale:t?.locale||this.options?.locale}};getCorePropsForComponent(){return{...a(this.options),core:this,i18n:this.modules.i18n,modules:this.modules,session:this.session,loadingContext:this.loadingContext,cdnContext:this.cdnImagesUrl,createFromAction:this.createFromAction}}storeElementReference(t){t&&this.components.push(t)}handleCreateError(t){const o=t?`${t?.name??"The passed payment method"} is not a valid Checkout Component. What was passed as a txVariant was: ${JSON.stringify(t)}. Check if this payment method is configured in the Backoffice or if the txVariant is a valid one`:"No Payment Method component was passed";throw new Error(o)}createPaymentMethodsList(t){this.paymentMethodsResponse=new s(this.options.paymentMethodsResponse||t,this.options)}async createCoreModules(){if(this.modules)return;const s=await this.fetchLocaleTranslations();this.modules=Object.freeze({risk:new o(this,{...this.options,loadingContext:this.loadingContext}),analytics:i({loadingContext:this.loadingContext,analyticsContext:this.analyticsContext,clientKey:this.options.clientKey,locale:this.options.locale,analytics:this.options.analytics,amount:this.options.amount,bundleType:P.metadata.bundleType}),resources:new l(this.cdnImagesUrl),i18n:new t({locale:this.options.locale,translations:s,customTranslations:this.options.translations}),srPanel:new c(this,{...this.options.srConfig})})}}export{P as default};
2
2
  //# sourceMappingURL=core.js.map
@@ -767,6 +767,11 @@ interface CardConfiguration extends UIElementProps {
767
767
  * - merchant set config option
768
768
  */
769
769
  hasHolderName?: boolean;
770
+ /**
771
+ * holderName coming from a stored card in /paymentMethods response
772
+ * @internal
773
+ */
774
+ holderName?: string;
770
775
  /**
771
776
  * Show/hide the Security Code field
772
777
  * - merchant set config option
@@ -818,7 +823,7 @@ interface CardConfiguration extends UIElementProps {
818
823
  *
819
824
  * - merchant set config option
820
825
  */
821
- minimumExpiryDate?: string[];
826
+ minimumExpiryDate?: string;
822
827
  /**
823
828
  * When in Dropin this is the name shown in the paymentMethods list
824
829
  * @defaultValue - derived from PaymentMethods response
@@ -3278,6 +3283,7 @@ declare class BancontactElement extends CardElement {
3278
3283
  fundingSource?: "debit" | "credit";
3279
3284
  hasCVC?: boolean;
3280
3285
  hasHolderName?: boolean;
3286
+ holderName?: string;
3281
3287
  hideCVC?: boolean;
3282
3288
  holderNameRequired?: boolean;
3283
3289
  id?: string;
@@ -3286,7 +3292,7 @@ declare class BancontactElement extends CardElement {
3286
3292
  lastFour?: string;
3287
3293
  legacyInputMode?: boolean;
3288
3294
  maskSecurityCode?: boolean;
3289
- minimumExpiryDate?: string[];
3295
+ minimumExpiryDate?: string;
3290
3296
  name?: string;
3291
3297
  onAddressLookup?: OnAddressLookupType;
3292
3298
  onBinLookup?: (event: CbObjOnBinLookup) => void;
@@ -3551,6 +3557,7 @@ declare class CustomCard extends UIElement<CustomCardConfiguration> {
3551
3557
  onLoad?: (event: CbObjOnLoad) => void;
3552
3558
  placeholders?: Placeholders$1;
3553
3559
  onAddressLookup?: OnAddressLookupType;
3560
+ holderName?: string;
3554
3561
  expiryMonth?: string;
3555
3562
  billingAddressMode?: "full" | "partial" | "none";
3556
3563
  brands?: string[];
@@ -3563,7 +3570,7 @@ declare class CustomCard extends UIElement<CustomCardConfiguration> {
3563
3570
  lastFour?: string;
3564
3571
  legacyInputMode?: boolean;
3565
3572
  maskSecurityCode?: boolean;
3566
- minimumExpiryDate?: string[];
3573
+ minimumExpiryDate?: string;
3567
3574
  onBinLookup?: (event: CbObjOnBinLookup) => void;
3568
3575
  onBinValue?: (event: CbObjOnBinValue) => void;
3569
3576
  onBrand?: (event: CbObjOnBrand) => void;
@@ -3581,6 +3588,7 @@ declare class CustomCard extends UIElement<CustomCardConfiguration> {
3581
3588
  formatData(): {
3582
3589
  paymentMethod: any;
3583
3590
  browserInfo: BrowserInfo;
3591
+ origin: string;
3584
3592
  };
3585
3593
  protected submitAnalytics(analyticsObj: SendAnalyticsObject): void;
3586
3594
  updateStyles(stylesObj: any): this;
@@ -5718,8 +5726,10 @@ interface OrderStatus {
5718
5726
  expiresAt: string;
5719
5727
  paymentMethods: {
5720
5728
  amount?: PaymentAmount;
5721
- lastFour: string;
5729
+ lastFour?: string;
5722
5730
  type: string;
5731
+ name?: string;
5732
+ label?: string;
5723
5733
  }[];
5724
5734
  pspReference: string;
5725
5735
  reference: string;
@@ -1,2 +1,2 @@
1
- const e={IDR:1,JPY:1,KRW:1,VND:1,BYR:1,CVE:1,DJF:1,GHC:1,GNF:1,KMF:1,PYG:1,RWF:1,UGX:1,VUV:1,XAF:1,XOF:1,XPF:1,MRO:10,BHD:1e3,IQD:1e3,JOD:1e3,KWD:1e3,OMR:1e3,LYD:1e3,TND:1e3};export{e as default};
1
+ const e={IDR:1,JPY:1,KRW:1,VND:1,BYR:1,CVE:1,DJF:1,GHC:1,GNF:1,KMF:1,ISK:1,PYG:1,RWF:1,UGX:1,VUV:1,XAF:1,XOF:1,XPF:1,MRO:10,BHD:1e3,IQD:1e3,JOD:1e3,KWD:1e3,OMR:1e3,LYD:1e3,TND:1e3};export{e as default};
2
2
  //# sourceMappingURL=currency-decimals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency-decimals.js","sources":["../../../../src/utils/constants/currency-decimals.ts"],"sourcesContent":["const CURRENCY_DECIMALS = {\n // ZERO_DECIMAL_CURRENCIES\n IDR: 1,\n JPY: 1,\n KRW: 1,\n VND: 1,\n BYR: 1,\n CVE: 1,\n DJF: 1,\n GHC: 1,\n GNF: 1,\n KMF: 1,\n PYG: 1,\n RWF: 1,\n UGX: 1,\n VUV: 1,\n XAF: 1,\n XOF: 1,\n XPF: 1,\n\n // ONE_DECIMAL_CURRENCIES\n MRO: 10,\n\n // THREE_DECIMAL_CURRENCIES\n BHD: 1000,\n IQD: 1000,\n JOD: 1000,\n KWD: 1000,\n OMR: 1000,\n LYD: 1000,\n TND: 1000\n};\n\nexport default CURRENCY_DECIMALS;\n"],"names":["CURRENCY_DECIMALS","IDR","JPY","KRW","VND","BYR","CVE","DJF","GHC","GNF","KMF","PYG","RWF","UGX","VUV","XAF","XOF","XPF","MRO","BHD","IQD","JOD","KWD","OMR","LYD","TND"],"mappings":"AAAA,MAAMA,EAAoB,CAEtBC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EAGLC,IAAK,GAGLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK"}
1
+ {"version":3,"file":"currency-decimals.js","sources":["../../../../src/utils/constants/currency-decimals.ts"],"sourcesContent":["const CURRENCY_DECIMALS = {\n // ZERO_DECIMAL_CURRENCIES\n IDR: 1,\n JPY: 1,\n KRW: 1,\n VND: 1,\n BYR: 1,\n CVE: 1,\n DJF: 1,\n GHC: 1,\n GNF: 1,\n KMF: 1,\n ISK: 1,\n PYG: 1,\n RWF: 1,\n UGX: 1,\n VUV: 1,\n XAF: 1,\n XOF: 1,\n XPF: 1,\n\n // ONE_DECIMAL_CURRENCIES\n MRO: 10,\n\n // THREE_DECIMAL_CURRENCIES\n BHD: 1000,\n IQD: 1000,\n JOD: 1000,\n KWD: 1000,\n OMR: 1000,\n LYD: 1000,\n TND: 1000\n};\n\nexport default CURRENCY_DECIMALS;\n"],"names":["CURRENCY_DECIMALS","IDR","JPY","KRW","VND","BYR","CVE","DJF","GHC","GNF","KMF","ISK","PYG","RWF","UGX","VUV","XAF","XOF","XPF","MRO","BHD","IQD","JOD","KWD","OMR","LYD","TND"],"mappings":"AAAA,MAAMA,EAAoB,CAEtBC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EAGLC,IAAK,GAGLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK"}
@@ -15,7 +15,7 @@
15
15
  .adyen-checkout__checkbox{display:flex;width:100%}.adyen-checkout__checkbox__label{color:var(--adyen-sdk-color-label-primary,#00112c);cursor:pointer;display:inline-block;flex:1;font-size:var(--adyen-sdk-text-body-font-size,14px);font-weight:400;line-height:var(--adyen-sdk-text-caption-line-height,18px);padding-left:var(--adyen-sdk-spacer-090,24px);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}[dir=rtl] .adyen-checkout__checkbox__label{padding-left:0;padding-right:var(--adyen-sdk-spacer-090,24px)}.adyen-checkout__checkbox__input{opacity:0;pointer-events:none;position:absolute}.adyen-checkout__checkbox__input:checked+.adyen-checkout__checkbox__label:before{opacity:1}.adyen-checkout__checkbox__input:checked+.adyen-checkout__checkbox__label:after{background-color:var(--adyen-sdk-color-label-primary,#00112c);border:var(--adyen-sdk-border-width-s,1px) solid var(--adyen-sdk-color-label-primary,#00112c)}.adyen-checkout__checkbox__input:checked:hover+.adyen-checkout__checkbox__label:after{border-color:var(--adyen-sdk-color-label-primary,#00112c);box-shadow:0 0 0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-color-outline-tertiary,#8d95a3)}.adyen-checkout__checkbox__input:focus+.adyen-checkout__checkbox__label:after{border:var(--adyen-sdk-border-width-s,1px) solid var(--adyen-sdk-color-label-primary,#00112c);box-shadow:0 0 0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-color-outline-tertiary,#8d95a3)}.adyen-checkout__checkbox__input:hover:not(:focus)+.adyen-checkout__checkbox__label:after{border-color:var(--adyen-sdk-color-outline-tertiary,#8d95a3);box-shadow:0 0 0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-color-outline-primary-hover,#c9cdd3)}.adyen-checkout__checkbox__input+.adyen-checkout__checkbox__label:before{border-bottom:var(--adyen-sdk-spacer-010,2px) solid var(--adyen-sdk-color-label-on-color,#ffffff);border-left:1px solid transparent;border-radius:0 var(--adyen-sdk-spacer-010,2px) 1px;border-right:var(--adyen-sdk-spacer-010,2px) solid var(--adyen-sdk-color-label-on-color,#ffffff);border-top:1px solid transparent;content:"";height:11px;left:1px;opacity:0;position:absolute;top:var(--adyen-sdk-spacer-010,2px);transform:rotate(37deg);transform-origin:100% 100%;transition:opacity .2s ease-out;width:var(--adyen-sdk-spacer-030,6px);z-index:1}[dir=rtl] .adyen-checkout__checkbox__input+.adyen-checkout__checkbox__label:before{left:auto;right:var(--adyen-sdk-spacer-040,8px)}.adyen-checkout__checkbox__input+.adyen-checkout__checkbox__label:after{background-color:var(--adyen-sdk-color-background-primary,#ffffff);border:var(--adyen-sdk-border-width-s,1px) solid var(--adyen-sdk-color-outline-primary,#dbdee2);border-radius:var(--adyen-sdk-border-radius-s,4px);content:"";height:var(--adyen-sdk-spacer-070,16px);left:0;position:absolute;top:0;transition:background .15s ease-out,border .05s ease-out,box-shadow .1s ease-out;width:var(--adyen-sdk-spacer-070,16px);z-index:0}[dir=rtl] .adyen-checkout__checkbox__input+.adyen-checkout__checkbox__label:after{left:auto;right:0}.adyen-checkout__field--consentCheckbox{align-items:center;background:var(--adyen-sdk-color-background-primary,#ffffff);border:var(--adyen-sdk-border-width-s,1px) solid var(--adyen-sdk-color-outline-primary,#dbdee2);border-radius:var(--adyen-sdk-border-radius-m,8px);display:flex}.adyen-checkout__field--consentCheckbox,[dir=rtl] .adyen-checkout__field--consentCheckbox{padding:var(--adyen-sdk-spacer-060,12px) var(--adyen-sdk-spacer-070,16px)}.adyen-checkout__field--consentCheckbox .adyen-checkout__input-wrapper{background-color:transparent;border:none;box-shadow:none;flex:1;justify-content:space-between}.adyen-checkout__field--consentCheckbox .adyen-checkout__input-wrapper:active,.adyen-checkout__field--consentCheckbox .adyen-checkout__input-wrapper:active:hover,.adyen-checkout__field--consentCheckbox .adyen-checkout__input-wrapper:focus-within,.adyen-checkout__field--consentCheckbox .adyen-checkout__input-wrapper:focus-within:hover{box-shadow:none}.adyen-checkout__field--consentCheckbox.adyen-checkout__field--error{border-color:var(--adyen-sdk-color-outline-critical,#e22d2d)}.adyen-checkout__field--consentCheckbox .adyen-checkout-input__inline-validation{margin-right:0}[dir=rtl] .adyen-checkout__field--consentCheckbox .adyen-checkout-input__inline-validation{margin-left:0}
16
16
  .adyen-checkout__address-search{position:relative}.adyen-checkout__address-search .adyen-checkout__dropdown__button:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%23687282' d='M6.5 11.9a4.5 4.5 0 0 0 2.6-.83l2.77 2.74c.13.13.3.19.48.19.38 0 .65-.29.65-.66a.63.63 0 0 0-.19-.46l-2.75-2.73a4.4 4.4 0 0 0 .92-2.7 4.48 4.48 0 0 0-8.98 0 4.48 4.48 0 0 0 4.5 4.45m0-.96a3.53 3.53 0 0 1-3.53-3.49 3.52 3.52 0 0 1 7.04 0c0 1.9-1.59 3.49-3.52 3.49Z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;content:"";height:var(--adyen-sdk-spacer-070,16px);left:var(--adyen-sdk-spacer-060,12px);position:absolute;width:var(--adyen-sdk-spacer-070,16px)}.adyen-checkout__address-search .adyen-checkout__dropdown__button--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%2300112C' d='M6.5 11.9a4.5 4.5 0 0 0 2.6-.83l2.77 2.74c.13.13.3.19.48.19.38 0 .65-.29.65-.66a.63.63 0 0 0-.19-.46l-2.75-2.73a4.4 4.4 0 0 0 .92-2.7 4.48 4.48 0 0 0-8.98 0 4.48 4.48 0 0 0 4.5 4.45m0-.96a3.53 3.53 0 0 1-3.53-3.49 3.52 3.52 0 0 1 7.04 0c0 1.9-1.59 3.49-3.52 3.49Z'/%3E%3C/svg%3E");transform:none}.adyen-checkout__address-search .adyen-checkout__filter-input{padding-left:calc(var(--adyen-sdk-spacer-040, 8px) + var(--adyen-sdk-spacer-070, 16px));position:relative}.adyen-checkout__address-search__manual-add{position:absolute;right:0;top:0}.adyen-checkout__address-search__manual-add .adyen-checkout__address-search__manual-add__button{border:0;padding:0}
17
17
  .adyen-checkout-form-instruction{color:var(--adyen-sdk-color-label-primary,#00112c);font-size:var(--adyen-sdk-text-caption-font-size,12px);font-weight:var(--adyen-sdk-text-body-font-weight,400);line-height:var(--adyen-sdk-text-caption-line-height,18px);margin-bottom:var(--adyen-sdk-spacer-070,16px);margin-top:0}[dir=rtl] .adyen-checkout-form-instruction{padding-right:0}
18
- .adyen-checkout__button{background:var(--adyen-sdk-color-background-always-dark,#00112c);border:0;border-radius:var(--adyen-sdk-border-radius-m,8px);color:var(--adyen-sdk-color-label-on-color,#ffffff);cursor:pointer;font-size:var(--adyen-sdk-text-title-font-size,16px);font-weight:var(--adyen-sdk-text-body-stronger-font-weight,500);height:var(--adyen-sdk-spacer-120,48px);margin:0;padding:var(--adyen-sdk-spacer-060,12px) var(--adyen-sdk-spacer-000,0);text-decoration:none;transition:background .3s ease-out,box-shadow .3s ease-out;width:100%}.adyen-checkout__button:focus{box-shadow:0 0 0 1px var(--adyen-sdk-color-outline-tertiary,#8d95a3);outline:0}.adyen-checkout__button:hover{background:var(--adyen-sdk-color-background-inverse-primary-hover,#5c687c);box-shadow:0 0,0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-spacer-020,4px) -1px rgba(0,0,0,.2),0 var(--adyen-sdk-spacer-020,4px) 5px 0 rgba(0,0,0,.14)}.adyen-checkout__button:active{background:var(--adyen-sdk-color-background-always-dark-active,#8d95a3)}.adyen-checkout__button:hover:focus{box-shadow:0 0 0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-color-outline-tertiary,#8d95a3),0 3px var(--adyen-sdk-spacer-020,4px) rgba(0,15,45,.2)}.adyen-checkout__button:disabled,.adyen-checkout__button:disabled:hover{box-shadow:none;cursor:not-allowed;opacity:.4;-webkit-user-select:all;-moz-user-select:all;user-select:all}.adyen-checkout__button.adyen-checkout__button--loading{background:var(--adyen-sdk-color-label-disabled,#8d95a3);box-shadow:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.adyen-checkout__button.adyen-checkout__button--pay{display:flex;justify-content:center;margin-top:var(--adyen-sdk-spacer-090,24px)}.adyen-checkout__button.adyen-checkout__button--pay:disabled{opacity:.4}.adyen-checkout__button.adyen-checkout__button--standalone{margin-top:0}.adyen-checkout__button.adyen-checkout__button--inline{display:block;font-size:.81em;height:auto;padding:var(--adyen-sdk-spacer-050,10px) var(--adyen-sdk-spacer-040,8px);width:auto}.adyen-checkout__button.adyen-checkout__button--ghost{background:none;border:0;color:var(--adyen-sdk-color-label-primary,#00112c)}.adyen-checkout__button.adyen-checkout__button--ghost .adyen-checkout__spinner:before{border-color:var(--adyen-sdk-color-background-inverse-primary,#00112c);border-top-color:transparent;opacity:.1}.adyen-checkout__button.adyen-checkout__button--ghost .adyen-checkout__spinner:after{border-color:transparent;border-top-color:var(--adyen-sdk-color-outline-primary-active,#00112c)}.adyen-checkout__button.adyen-checkout__button--ghost:hover{background:var(--adyen-sdk-color-background-secondary-hover,#eeeff1);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--ghost:active{background:var(--adyen-sdk-color-background-secondary-active,#e3e5e9);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--secondary{background:var(--adyen-sdk-color-background-primary,#ffffff);border:var(--adyen-sdk-border-width-s,1px) solid var(--adyen-sdk-color-label-primary,#00112c);color:var(--adyen-sdk-color-label-primary,#00112c);padding:var(--adyen-sdk-spacer-050,10px) var(--adyen-sdk-spacer-060,12px)}.adyen-checkout__button.adyen-checkout__button--secondary .adyen-checkout__spinner:before{border-color:var(--adyen-sdk-color-background-inverse-primary,#00112c);border-top-color:transparent;opacity:.1}.adyen-checkout__button.adyen-checkout__button--secondary .adyen-checkout__spinner:after{border-color:transparent;border-top-color:var(--adyen-sdk-color-outline-primary-active,#00112c)}.adyen-checkout__button.adyen-checkout__button--secondary:hover{background:var(--adyen-sdk-color-background-secondary,#f7f7f8);box-shadow:0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-spacer-020,4px) rgba(27,42,60,.2),0 var(--adyen-sdk-spacer-020,4px) 5px rgba(27,42,60,.14)}.adyen-checkout__button.adyen-checkout__button--secondary:active,.adyen-checkout__button.adyen-checkout__button--secondary:active:hover{background:var(--adyen-sdk-color-background-secondary,#f7f7f8);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--secondary:focus{box-shadow:0 0 0 .5px var(--adyen-sdk-color-outline-tertiary,#8d95a3);outline:0}.adyen-checkout__button.adyen-checkout__button--secondary:disabled,.adyen-checkout__button.adyen-checkout__button--secondary:disabled:hover{background-color:var(--adyen-sdk-color-background-secondary,#f7f7f8);border-color:var(--adyen-sdk-color-outline-disabled,#dbdee2);box-shadow:none;cursor:not-allowed;opacity:.5;-webkit-user-select:all;-moz-user-select:all;user-select:all}.adyen-checkout__button.adyen-checkout__button--action{background:var(--adyen-sdk-color-background-always-dark,#00112c);border:var(--adyen-sdk-border-width-s,1px) solid transparent;color:var(--adyen-sdk-color-label-on-color,#ffffff);padding:var(--adyen-sdk-spacer-050,10px) var(--adyen-sdk-spacer-060,12px)}.adyen-checkout__button.adyen-checkout__button--action:hover{background:var(--adyen-sdk-color-background-inverse-primary-hover,#5c687c);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--action:active,.adyen-checkout__button.adyen-checkout__button--action:active:hover{background:var(--adyen-sdk-color-background-always-dark-active,#8d95a3);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--link{background:transparent;border:var(--adyen-sdk-border-width-s,1px) solid transparent;border-radius:var(--adyen-sdk-border-radius-s,4px);color:var(--adyen-sdk-color-label-highlight,#0070f5);font-weight:var(--adyen-sdk-text-body-font-weight,400);padding:var(--adyen-sdk-spacer-010,2px);text-decoration:none}.adyen-checkout__button.adyen-checkout__button--link:hover{background:transparent;box-shadow:none;text-decoration:underline}.adyen-checkout__button.adyen-checkout__button--completed,.adyen-checkout__button.adyen-checkout__button--completed:active,.adyen-checkout__button.adyen-checkout__button--completed:active:hover,.adyen-checkout__button.adyen-checkout__button--completed:hover{background:var(--adyen-sdk-color-label-success,#07893c);color:var(--adyen-sdk-color-label-on-color,#ffffff)}.adyen-checkout__button.adyen-checkout__button--completed .adyen-checkout__button__icon{filter:brightness(0) invert(1)}.adyen-checkout__button__content{align-items:center;display:flex;height:100%;justify-content:center}.adyen-checkout__button__icon{margin-right:var(--adyen-sdk-spacer-040,8px)}[dir=rtl] .adyen-checkout__button__icon{margin-left:var(--adyen-sdk-spacer-040,8px);margin-right:0}.adyen-checkout__button__text{display:block;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adyen-checkout__button .adyen-checkout__spinner:before{border-color:var(--adyen-sdk-color-label-on-color,#ffffff);border-top-color:transparent;opacity:.1}.adyen-checkout__button .adyen-checkout__spinner:after{border-color:transparent;border-top-color:var(--adyen-sdk-color-label-on-color,#ffffff)}
18
+ .adyen-checkout__button{background:var(--adyen-sdk-color-background-always-dark,#00112c);border:0;border-radius:var(--adyen-sdk-border-radius-m,8px);color:var(--adyen-sdk-color-label-on-color,#ffffff);cursor:pointer;font-size:var(--adyen-sdk-text-title-font-size,16px);font-weight:var(--adyen-sdk-text-body-stronger-font-weight,500);height:var(--adyen-sdk-spacer-120,48px);margin:0;padding:var(--adyen-sdk-spacer-060,12px) var(--adyen-sdk-spacer-000,0);text-decoration:none;transition:background .3s ease-out,box-shadow .3s ease-out;width:100%}.adyen-checkout__button:focus{box-shadow:0 0 0 1px var(--adyen-sdk-color-outline-tertiary,#8d95a3);outline:0}.adyen-checkout__button:hover{background:var(--adyen-sdk-color-background-inverse-primary-hover,#5c687c);box-shadow:0 0,0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-spacer-020,4px) -1px rgba(0,0,0,.2),0 var(--adyen-sdk-spacer-020,4px) 5px 0 rgba(0,0,0,.14)}.adyen-checkout__button:active{background:var(--adyen-sdk-color-background-always-dark-active,#8d95a3)}.adyen-checkout__button:hover:focus{box-shadow:0 0 0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-color-outline-tertiary,#8d95a3),0 3px var(--adyen-sdk-spacer-020,4px) rgba(0,15,45,.2)}.adyen-checkout__button:disabled,.adyen-checkout__button:disabled:hover{box-shadow:none;cursor:not-allowed;opacity:.4;-webkit-user-select:all;-moz-user-select:all;user-select:all}.adyen-checkout__button.adyen-checkout__button--loading{background:var(--adyen-sdk-color-label-disabled,#8d95a3);box-shadow:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.adyen-checkout__button.adyen-checkout__button--pay{display:flex;justify-content:center;margin-top:var(--adyen-sdk-spacer-090,24px)}.adyen-checkout__button.adyen-checkout__button--pay:disabled{opacity:.4}.adyen-checkout__button.adyen-checkout__button--standalone{margin-top:0}.adyen-checkout__button.adyen-checkout__button--inline{display:block;font-size:.81em;height:auto;padding:var(--adyen-sdk-spacer-050,10px) var(--adyen-sdk-spacer-040,8px);width:auto}.adyen-checkout__button.adyen-checkout__button--ghost{background:none;border:0;color:var(--adyen-sdk-color-label-primary,#00112c)}.adyen-checkout__button.adyen-checkout__button--ghost .adyen-checkout__spinner:before{border-color:var(--adyen-sdk-color-background-inverse-primary,#00112c);border-top-color:transparent;opacity:.1}.adyen-checkout__button.adyen-checkout__button--ghost .adyen-checkout__spinner:after{border-color:transparent;border-top-color:var(--adyen-sdk-color-outline-primary-active,#00112c)}.adyen-checkout__button.adyen-checkout__button--ghost:hover{background:var(--adyen-sdk-color-background-secondary-hover,#eeeff1);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--ghost:active{background:var(--adyen-sdk-color-background-secondary-active,#e3e5e9);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--secondary{background:var(--adyen-sdk-color-background-primary,#ffffff);border:var(--adyen-sdk-border-width-s,1px) solid var(--adyen-sdk-color-label-primary,#00112c);color:var(--adyen-sdk-color-label-primary,#00112c);padding:var(--adyen-sdk-spacer-050,10px) var(--adyen-sdk-spacer-060,12px)}.adyen-checkout__button.adyen-checkout__button--secondary .adyen-checkout__spinner:before{border-color:var(--adyen-sdk-color-background-inverse-primary,#00112c);border-top-color:transparent;opacity:.1}.adyen-checkout__button.adyen-checkout__button--secondary .adyen-checkout__spinner:after{border-color:transparent;border-top-color:var(--adyen-sdk-color-outline-primary-active,#00112c)}.adyen-checkout__button.adyen-checkout__button--secondary:hover{background:var(--adyen-sdk-color-background-secondary,#f7f7f8);box-shadow:0 var(--adyen-sdk-spacer-010,2px) var(--adyen-sdk-spacer-020,4px) rgba(27,42,60,.2),0 var(--adyen-sdk-spacer-020,4px) 5px rgba(27,42,60,.14)}.adyen-checkout__button.adyen-checkout__button--secondary:active,.adyen-checkout__button.adyen-checkout__button--secondary:active:hover{background:var(--adyen-sdk-color-background-secondary,#f7f7f8);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--secondary:focus{box-shadow:0 0 0 .5px var(--adyen-sdk-color-outline-tertiary,#8d95a3);outline:0}.adyen-checkout__button.adyen-checkout__button--secondary:disabled,.adyen-checkout__button.adyen-checkout__button--secondary:disabled:hover{background-color:var(--adyen-sdk-color-background-secondary,#f7f7f8);border-color:var(--adyen-sdk-color-outline-disabled,#dbdee2);box-shadow:none;cursor:not-allowed;opacity:.5;-webkit-user-select:all;-moz-user-select:all;user-select:all}.adyen-checkout__button.adyen-checkout__button--action{background:var(--adyen-sdk-color-background-always-dark,#00112c);border:var(--adyen-sdk-border-width-s,1px) solid transparent;color:var(--adyen-sdk-color-label-on-color,#ffffff);padding:var(--adyen-sdk-spacer-050,10px) var(--adyen-sdk-spacer-060,12px)}.adyen-checkout__button.adyen-checkout__button--action:hover{background:var(--adyen-sdk-color-background-inverse-primary-hover,#5c687c);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--action:active,.adyen-checkout__button.adyen-checkout__button--action:active:hover{background:var(--adyen-sdk-color-background-always-dark-active,#8d95a3);box-shadow:none}.adyen-checkout__button.adyen-checkout__button--link{background:transparent;border:var(--adyen-sdk-border-width-s,1px) solid transparent;border-radius:var(--adyen-sdk-border-radius-s,4px);color:var(--adyen-sdk-color-label-highlight,#0070f5);font-weight:var(--adyen-sdk-text-body-font-weight,400);padding:var(--adyen-sdk-spacer-010,2px);text-decoration:none}.adyen-checkout__button.adyen-checkout__button--link:hover{background:transparent;box-shadow:none;text-decoration:underline}.adyen-checkout__button.adyen-checkout__button--completed,.adyen-checkout__button.adyen-checkout__button--completed:active,.adyen-checkout__button.adyen-checkout__button--completed:active:hover,.adyen-checkout__button.adyen-checkout__button--completed:hover{background:var(--adyen-sdk-color-label-success,#07893c);color:var(--adyen-sdk-color-label-on-color,#ffffff)}.adyen-checkout__button.adyen-checkout__button--completed .adyen-checkout__button__icon{filter:brightness(0) invert(1)}.adyen-checkout__button__content{align-items:center;display:flex;height:100%;justify-content:center}.adyen-checkout__button__icon{margin-right:var(--adyen-sdk-spacer-040,8px)}[dir=rtl] .adyen-checkout__button__icon{margin-left:var(--adyen-sdk-spacer-040,8px);margin-right:0}.adyen-checkout__button__text{display:block;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adyen-checkout__button__text--sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.adyen-checkout__button .adyen-checkout__spinner:before{border-color:var(--adyen-sdk-color-label-on-color,#ffffff);border-top-color:transparent;opacity:.1}.adyen-checkout__button .adyen-checkout__spinner:after{border-color:transparent;border-top-color:var(--adyen-sdk-color-label-on-color,#ffffff)}
19
19
  .adyen-checkout-ctp__otp-resend-code{color:var(--adyen-sdk-color-label-primary,#00112c);cursor:pointer;font-size:13px;font-weight:var(--adyen-sdk-text-body-font-weight,400);margin-left:auto;text-decoration:underline}.adyen-checkout-ctp__otp-resend-code--confirmation,.adyen-checkout-ctp__otp-resend-code--disabled{color:var(--adyen-sdk-color-label-tertiary,#8d95a3);cursor:default;font-size:13px;font-weight:var(--adyen-sdk-text-body-font-weight,400);margin-left:auto;pointer-events:none}.adyen-checkout-ctp__otp-resend-code--confirmation{align-items:center;display:flex}.adyen-checkout-ctp__otp-resend-code--confirmation>img{margin-left:var(--adyen-sdk-spacer-020,4px)}.adyen-checkout-ctp__otp-resend-code-counter{color:var(--adyen-sdk-color-label-primary,#00112c);cursor:default;display:inline-block;font-size:13px;font-weight:var(--adyen-sdk-text-body-font-weight,400);margin-left:auto;text-align:right}.adyen-checkout-ctp__section>.adyen-checkout__field.adyen-checkout__field--otp{margin-bottom:var(--adyen-sdk-spacer-060,12px)}
20
20
  .adyen_checkout-ctp__brand-wrapper{align-items:center;display:flex;height:18px}.adyen_checkout-ctp__brand-logo{margin-right:var(--adyen-sdk-spacer-030,6px);width:var(--adyen-sdk-spacer-090,24px)}.adyen_checkout-ctp__brand-pipe{height:15px;margin-right:var(--adyen-sdk-spacer-030,6px)}.adyen_checkout-ctp__brand-scheme{margin-right:var(--adyen-sdk-spacer-030,6px);-o-object-fit:none;object-fit:none}.adyen_checkout-ctp__brand-scheme-mc{width:27px}.adyen_checkout-ctp__brand-scheme-visa{width:35px}
21
21
  .adyen-checkout__modal-wrapper{align-items:center;display:flex;height:100%;left:0;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--adyen-sdk-spacer-090,24px);position:fixed;top:0;visibility:hidden;width:100%;z-index:10}.adyen-checkout__modal-wrapper:before{background:rgba(0,17,44,.5);content:"";height:100%;left:0;opacity:0;position:fixed;top:0;transition:opacity .3s linear;width:100%;z-index:10}.adyen-checkout__modal-wrapper--open{visibility:visible}.adyen-checkout__modal-wrapper--open .adyen-checkout__modal,.adyen-checkout__modal-wrapper--open:before{opacity:1}.adyen-checkout__modal{background-color:var(--adyen-sdk-color-background-primary,#ffffff);border-radius:var(--adyen-sdk-border-radius-m,8px);box-shadow:0 var(--adyen-sdk-spacer-040,8px) var(--adyen-sdk-spacer-090,24px) rgba(0,17,44,.15);margin:auto;opacity:0;padding:var(--adyen-sdk-spacer-070,16px);position:relative;transition:opacity .2s ease,visibility .2s ease;z-index:11}@media (max-width:480px){.adyen-checkout__modal-wrapper{padding:0}.adyen-checkout__modal{border-radius:0;height:100%}}