@adyen/adyen-web 6.29.0 → 6.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/cjs/adyen.css +7 -8
  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 +31 -40
  6. package/dist/es/adyen.css +7 -8
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  9. package/dist/es/components/Card/components/CardInput/CardInput.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/CustomCard/CustomCardInput/CustomCardInput.js +1 -1
  14. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  15. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  16. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  17. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  18. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  19. package/dist/es/components/Iris/components/IrisGenerateQRCode.js +1 -1
  20. package/dist/es/components/Iris/components/IrisGenerateQRCode.js.map +1 -1
  21. package/dist/es/components/Pix/components/PixQRDetails.js +1 -1
  22. package/dist/es/components/Pix/components/PixQRDetails.js.map +1 -1
  23. package/dist/es/components/UPI/UPI.js +1 -1
  24. package/dist/es/components/UPI/UPI.js.map +1 -1
  25. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  26. package/dist/es/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  27. package/dist/es/components/UPI/constants.js +1 -1
  28. package/dist/es/components/UPI/constants.js.map +1 -1
  29. package/dist/es/components/components-name-map.js +1 -1
  30. package/dist/es/components/components-name-map.js.map +1 -1
  31. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  32. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  33. package/dist/es/components/internal/Countdown/index.js +1 -1
  34. package/dist/es/components/internal/Countdown/index.js.map +1 -1
  35. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  36. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  37. package/dist/es/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  38. package/dist/es/components/internal/QRLoader/components/QRDetails.js +1 -1
  39. package/dist/es/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  40. package/dist/es/components/internal/QRLoader/components/QRImage.js +1 -1
  41. package/dist/es/components/internal/QRLoader/components/QRImage.js.map +1 -1
  42. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  43. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  44. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  45. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  46. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
  47. package/dist/es/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  48. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  49. package/dist/es/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  50. package/dist/es/components/tx-variants.js +1 -1
  51. package/dist/es/components/tx-variants.js.map +1 -1
  52. package/dist/es/core/Analytics/Analytics.js +1 -1
  53. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  54. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js +1 -1
  55. package/dist/es/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -1
  56. package/dist/es/core/config.js +1 -1
  57. package/dist/es/index.d.ts +31 -40
  58. package/dist/es-legacy/adyen.css +7 -8
  59. package/dist/es-legacy/adyen.css.map +1 -1
  60. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  61. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js.map +1 -1
  62. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  63. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  64. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  65. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js +1 -1
  66. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  67. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  68. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  69. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  70. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  71. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js +1 -1
  72. package/dist/es-legacy/components/Iris/components/IrisGenerateQRCode.js.map +1 -1
  73. package/dist/es-legacy/components/Pix/components/PixQRDetails.js +1 -1
  74. package/dist/es-legacy/components/Pix/components/PixQRDetails.js.map +1 -1
  75. package/dist/es-legacy/components/UPI/UPI.js +1 -1
  76. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  77. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js +1 -1
  78. package/dist/es-legacy/components/UPI/components/UPIComponent/UPIComponent.js.map +1 -1
  79. package/dist/es-legacy/components/UPI/constants.js +1 -1
  80. package/dist/es-legacy/components/UPI/constants.js.map +1 -1
  81. package/dist/es-legacy/components/components-name-map.js +1 -1
  82. package/dist/es-legacy/components/components-name-map.js.map +1 -1
  83. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  84. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  85. package/dist/es-legacy/components/internal/Countdown/index.js +1 -1
  86. package/dist/es-legacy/components/internal/Countdown/index.js.map +1 -1
  87. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  88. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  89. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  90. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js +1 -1
  91. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  92. package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js +1 -1
  93. package/dist/es-legacy/components/internal/QRLoader/components/QRImage.js.map +1 -1
  94. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  95. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  96. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  97. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  98. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js +1 -1
  99. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/AbstractSecuredField.js.map +1 -1
  100. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js +1 -1
  101. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/SecuredField.js.map +1 -1
  102. package/dist/es-legacy/components/tx-variants.js +1 -1
  103. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  104. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  105. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  106. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js +1 -1
  107. package/dist/es-legacy/core/Analytics/events/AnalyticsErrorEvent.js.map +1 -1
  108. package/dist/es-legacy/core/config.js +1 -1
  109. package/package.json +1 -1
  110. package/styles/adyen.css +7 -8
  111. package/dist/es/components/UPI/components/VpaInput/VpaInput.js +0 -2
  112. package/dist/es/components/UPI/components/VpaInput/VpaInput.js.map +0 -1
  113. package/dist/es/components/UPI/components/VpaInput/validate.js +0 -2
  114. package/dist/es/components/UPI/components/VpaInput/validate.js.map +0 -1
  115. package/dist/es-legacy/components/UPI/components/VpaInput/VpaInput.js +0 -2
  116. package/dist/es-legacy/components/UPI/components/VpaInput/VpaInput.js.map +0 -1
  117. package/dist/es-legacy/components/UPI/components/VpaInput/validate.js +0 -2
  118. package/dist/es-legacy/components/UPI/components/VpaInput/validate.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GiftcardComponent.js","sources":["../../../../../src/components/Giftcard/components/GiftcardComponent.tsx"],"sourcesContent":["import { Component, FunctionComponent, h } from 'preact';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport Alert from '../../internal/Alert';\nimport GiftcardResult from './GiftcardResult';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\nimport { useSRPanelForGiftcardErrors } from './useSRPanelForGiftcardErrors';\nimport { GiftCardBalanceCheckErrorType } from '../types';\n\ninterface GiftcardComponentProps {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n\n makeBalanceCheck: (event) => void;\n makePayment: (event) => void;\n\n amount?: PaymentAmount;\n showPayButton: boolean;\n payButton: (config) => any;\n\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyPress?: (o: KeyboardEvent) => void;\n}\n\nclass Giftcard extends Component<GiftcardComponentProps> {\n public state = {\n status: 'ready',\n data: {},\n balance: null,\n transactionLimit: null,\n focusedElement: false,\n isValid: false,\n sfpState: {},\n isValidating: false,\n transformedErrors: {}\n };\n\n public static defaultProps = {\n pinRequired: true,\n expiryDateRequired: false,\n onChange: () => {},\n onFocus: () => {},\n onBlur: () => {},\n fieldsLayoutComponent: GiftCardFields\n };\n\n public sfp: SecuredFieldsProvider;\n\n /**\n * Maps string error codes from SecuredFields to validation rule objects\n */\n public mapErrorsToValidationObjects = () => {\n // Use the sfp reference to call mapErrorsToValidationRuleResult\n if (!this.sfp) return {};\n return this.sfp.mapErrorsToValidationRuleResult();\n };\n\n private updateTransformedErrors = (balanceCheckErrors?: Record<string, any>) => {\n const transformedErrors = this.mapErrorsToValidationObjects();\n\n const mergedErrors = { ...transformedErrors, ...balanceCheckErrors };\n\n this.setState({ transformedErrors: mergedErrors });\n };\n\n public onChange = sfpState => {\n this.setState({ sfpState }, () => this.updateTransformedErrors());\n\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\n };\n\n public handleFocus = e => {\n this.setState({ focusedElement: e.currentFocusObject });\n\n const isFocused = e.focus === true;\n if (isFocused) {\n this.props.onFocus(e);\n } else {\n this.props.onBlur(e);\n }\n };\n\n public setBalance = ({ balance, transactionLimit }) => {\n this.setState({ balance, transactionLimit });\n };\n\n /**\n * Generates balance check errors in the same format as SFP errors\n * Compatible with the transformedErrors structure\n */\n private generateBalanceCheckErrors(errorType?: GiftCardBalanceCheckErrorType | null): Record<string, any> {\n const balanceCheckErrors: Record<string, any> = {};\n\n // This is the field that the error is associated with, only used for SR logic\n const fieldToAnnounce = 'encryptedCardNumber';\n\n // If errorType is null, clear errors\n if (errorType === null) {\n return balanceCheckErrors;\n }\n\n // Create error in the same format as SFP errors for consistency\n balanceCheckErrors[fieldToAnnounce] = {\n isValid: false,\n errorMessage: `error.giftcard.${errorType}`,\n error: errorType\n };\n\n return balanceCheckErrors;\n }\n\n /**\n * Checks if a status represents a balance check error\n */\n private isBalanceCheckError(status: string): boolean {\n return ['no-balance', 'card-error', 'currency-error'].includes(status);\n }\n\n /**\n * Method called by GiftcardElement to set balance check errors only\n */\n public setBalanceCheckErrors = (errorType: GiftCardBalanceCheckErrorType | null): void => {\n // Check if the errors should be displayed\n if (this.isBalanceCheckError(errorType)) {\n // Generate balance check errors in the style of useForm\n // This is usefull because then we can use the same logic for SF and balance check errors\n // Also we can use the same logic for SRPanel errors\n const balanceCheckErrors = this.generateBalanceCheckErrors(errorType);\n this.updateTransformedErrors(balanceCheckErrors);\n }\n };\n\n public showValidation = () => {\n this.setState({ isValidating: true });\n\n // Validate SecuredFields\n this.sfp?.showValidation();\n };\n\n render(props, { focusedElement, balance, transactionLimit, isValidating, transformedErrors }) {\n const { i18n } = useCoreContext();\n\n // Handle SRPanel errors in render with transformed error objects\n useSRPanelForGiftcardErrors({\n errors: transformedErrors,\n isValidating,\n sfp: this.sfp\n });\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= this.props.amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return (\n <GiftcardResult\n amount={this.props.amount}\n balance={balance}\n transactionLimit={transactionLimit}\n makePayment={props.makePayment}\n status={this.state.status}\n makeBalanceCheck={props.makeBalanceCheck}\n showPayButton={this.props.showPayButton}\n payButton={this.props.payButton}\n />\n );\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n // This logic is a bit of a hack, but it's the only way to get the error message for balance check errors\n // In the future we should move this logic to useForm\n if (transformedErrors.encryptedCardNumber) {\n return i18n.get(transformedErrors.encryptedCardNumber.errorMessage);\n }\n\n return null;\n };\n\n return (\n <div className=\"adyen-checkout__giftcard\">\n {this.state.status === 'error' && <Alert icon={'cross'}>{i18n.get('error.message.unknown')}</Alert>}\n\n <SecuredFieldsProvider\n {...this.props}\n ref={ref => {\n this.sfp = ref;\n }}\n onChange={this.onChange}\n onFocus={this.handleFocus}\n type={GIFT_CARD}\n render={({ setRootNode, setFocusOn }, sfpState) =>\n this.props.fieldsLayoutComponent({\n i18n: i18n,\n pinRequired: this.props.pinRequired,\n focusedElement: focusedElement,\n getCardErrorMessage: getCardErrorMessage,\n setRootNode: setRootNode,\n setFocusOn: setFocusOn,\n sfpState: sfpState\n })\n }\n />\n\n {this.props.showPayButton &&\n this.props.payButton({\n status: this.state.status,\n onClick: this.props.makeBalanceCheck,\n label: i18n.get('applyGiftcard')\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","generateBalanceCheckErrors","errorType","balanceCheckErrors","isValid","errorMessage","error","isBalanceCheckError","status","includes","render","props","focusedElement","balance","transactionLimit","isValidating","transformedErrors","i18n","useCoreContext","useSRPanelForGiftcardErrors","errors","sfp","this","transactionAmount","value","hasEnoughBalance","amount","h","GiftcardResult","makePayment","state","makeBalanceCheck","showPayButton","payButton","getCardErrorMessage","sfpState","encryptedCardNumber","get","div","className","Alert","icon","SecuredFieldsProvider","ref","onChange","onFocus","handleFocus","type","GIFT_CARD","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","onClick","label","super","args","_define_property","data","mapErrorsToValidationObjects","mapErrorsToValidationRuleResult","updateTransformedErrors","mergedErrors","setState","isSfpValid","e","currentFocusObject","focus","onBlur","setBalance","setBalanceCheckErrors","showValidation","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"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"}
1
+ {"version":3,"file":"GiftcardComponent.js","sources":["../../../../../src/components/Giftcard/components/GiftcardComponent.tsx"],"sourcesContent":["import { Component, FunctionComponent, h } from 'preact';\nimport SecuredFieldsProvider from '../../internal/SecuredFields/SFP/SecuredFieldsProvider';\nimport Alert from '../../internal/Alert';\nimport GiftcardResult from './GiftcardResult';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { GIFT_CARD } from '../../internal/SecuredFields/lib/constants';\nimport { GiftCardFields } from './GiftcardFields';\nimport { GiftcardFieldsProps, Placeholders } from './types';\nimport { useSRPanelForGiftcardErrors } from './useSRPanelForGiftcardErrors';\nimport { GiftCardBalanceCheckErrorType } from '../types';\nimport type { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\n\ninterface GiftcardComponentProps {\n onChange: (state) => void;\n onFocus: (event) => void;\n onBlur: (event) => void;\n\n makeBalanceCheck: (event) => void;\n makePayment: (event) => void;\n\n amount?: PaymentAmount;\n showPayButton: boolean;\n payButton: (config) => any;\n\n pinRequired: boolean;\n expiryDateRequired?: boolean;\n fieldsLayoutComponent: FunctionComponent<GiftcardFieldsProps>;\n placeholders?: Placeholders;\n handleKeyPress?: (o: KeyboardEvent) => void;\n onSubmitAnalytics?: (event: AbstractAnalyticsEvent) => void;\n}\n\nclass Giftcard extends Component<GiftcardComponentProps> {\n public state = {\n status: 'ready',\n data: {},\n balance: null,\n transactionLimit: null,\n focusedElement: false,\n isValid: false,\n sfpState: {},\n isValidating: false,\n transformedErrors: {}\n };\n\n public static defaultProps = {\n pinRequired: true,\n expiryDateRequired: false,\n onChange: () => {},\n onFocus: () => {},\n onBlur: () => {},\n fieldsLayoutComponent: GiftCardFields\n };\n\n public sfp: SecuredFieldsProvider;\n\n /**\n * Maps string error codes from SecuredFields to validation rule objects\n */\n public mapErrorsToValidationObjects = () => {\n // Use the sfp reference to call mapErrorsToValidationRuleResult\n if (!this.sfp) return {};\n return this.sfp.mapErrorsToValidationRuleResult();\n };\n\n private updateTransformedErrors = (balanceCheckErrors?: Record<string, any>) => {\n const transformedErrors = this.mapErrorsToValidationObjects();\n\n const mergedErrors = { ...transformedErrors, ...balanceCheckErrors };\n\n this.setState({ transformedErrors: mergedErrors });\n };\n\n public onChange = sfpState => {\n this.setState({ sfpState }, () => this.updateTransformedErrors());\n\n this.props.onChange({\n data: sfpState.data,\n isValid: sfpState.isSfpValid\n });\n };\n\n public handleFocus = e => {\n this.setState({ focusedElement: e.currentFocusObject });\n\n const isFocused = e.focus === true;\n if (isFocused) {\n this.props.onFocus(e);\n } else {\n this.props.onBlur(e);\n }\n };\n\n public setBalance = ({ balance, transactionLimit }) => {\n this.setState({ balance, transactionLimit });\n };\n\n /**\n * Generates balance check errors in the same format as SFP errors\n * Compatible with the transformedErrors structure\n */\n private generateBalanceCheckErrors(errorType?: GiftCardBalanceCheckErrorType | null): Record<string, any> {\n const balanceCheckErrors: Record<string, any> = {};\n\n // This is the field that the error is associated with, only used for SR logic\n const fieldToAnnounce = 'encryptedCardNumber';\n\n // If errorType is null, clear errors\n if (errorType === null) {\n return balanceCheckErrors;\n }\n\n // Create error in the same format as SFP errors for consistency\n balanceCheckErrors[fieldToAnnounce] = {\n isValid: false,\n errorMessage: `error.giftcard.${errorType}`,\n error: errorType\n };\n\n return balanceCheckErrors;\n }\n\n /**\n * Checks if a status represents a balance check error\n */\n private isBalanceCheckError(status: string): boolean {\n return ['no-balance', 'card-error', 'currency-error'].includes(status);\n }\n\n /**\n * Method called by GiftcardElement to set balance check errors only\n */\n public setBalanceCheckErrors = (errorType: GiftCardBalanceCheckErrorType | null): void => {\n // Check if the errors should be displayed\n if (this.isBalanceCheckError(errorType)) {\n // Generate balance check errors in the style of useForm\n // This is usefull because then we can use the same logic for SF and balance check errors\n // Also we can use the same logic for SRPanel errors\n const balanceCheckErrors = this.generateBalanceCheckErrors(errorType);\n this.updateTransformedErrors(balanceCheckErrors);\n }\n };\n\n public showValidation = () => {\n this.setState({ isValidating: true });\n\n // Validate SecuredFields\n this.sfp?.showValidation();\n };\n\n render(props, { focusedElement, balance, transactionLimit, isValidating, transformedErrors }) {\n const { i18n } = useCoreContext();\n\n // Handle SRPanel errors in render with transformed error objects\n useSRPanelForGiftcardErrors({\n errors: transformedErrors,\n isValidating,\n sfp: this.sfp\n });\n\n const transactionAmount = transactionLimit?.value < balance?.value ? transactionLimit : balance;\n const hasEnoughBalance = transactionAmount?.value >= this.props.amount?.value;\n\n if (transactionAmount && hasEnoughBalance) {\n return (\n <GiftcardResult\n amount={this.props.amount}\n balance={balance}\n transactionLimit={transactionLimit}\n makePayment={props.makePayment}\n status={this.state.status}\n makeBalanceCheck={props.makeBalanceCheck}\n showPayButton={this.props.showPayButton}\n payButton={this.props.payButton}\n />\n );\n }\n\n const getCardErrorMessage = sfpState => {\n if (sfpState.errors.encryptedCardNumber) return i18n.get(sfpState.errors.encryptedCardNumber);\n\n // This logic is a bit of a hack, but it's the only way to get the error message for balance check errors\n // In the future we should move this logic to useForm\n if (transformedErrors.encryptedCardNumber) {\n return i18n.get(transformedErrors.encryptedCardNumber.errorMessage);\n }\n\n return null;\n };\n\n return (\n <div className=\"adyen-checkout__giftcard\">\n {this.state.status === 'error' && <Alert icon={'cross'}>{i18n.get('error.message.unknown')}</Alert>}\n\n <SecuredFieldsProvider\n {...this.props}\n ref={ref => {\n this.sfp = ref;\n }}\n onChange={this.onChange}\n onFocus={this.handleFocus}\n onSubmitAnalytics={props.onSubmitAnalytics}\n type={GIFT_CARD}\n componentType={props.type}\n render={({ setRootNode, setFocusOn }, sfpState) =>\n this.props.fieldsLayoutComponent({\n i18n: i18n,\n pinRequired: this.props.pinRequired,\n focusedElement: focusedElement,\n getCardErrorMessage: getCardErrorMessage,\n setRootNode: setRootNode,\n setFocusOn: setFocusOn,\n sfpState: sfpState\n })\n }\n />\n\n {this.props.showPayButton &&\n this.props.payButton({\n status: this.state.status,\n onClick: this.props.makeBalanceCheck,\n label: i18n.get('applyGiftcard')\n })}\n </div>\n );\n }\n}\n\nexport default Giftcard;\n"],"names":["Giftcard","Component","generateBalanceCheckErrors","errorType","balanceCheckErrors","isValid","errorMessage","error","isBalanceCheckError","status","includes","render","props","focusedElement","balance","transactionLimit","isValidating","transformedErrors","i18n","useCoreContext","useSRPanelForGiftcardErrors","errors","sfp","this","transactionAmount","value","hasEnoughBalance","amount","h","GiftcardResult","makePayment","state","makeBalanceCheck","showPayButton","payButton","getCardErrorMessage","sfpState","encryptedCardNumber","get","div","className","Alert","icon","SecuredFieldsProvider","ref","onChange","onFocus","handleFocus","onSubmitAnalytics","type","GIFT_CARD","componentType","setRootNode","setFocusOn","fieldsLayoutComponent","pinRequired","onClick","label","super","args","_define_property","data","mapErrorsToValidationObjects","mapErrorsToValidationRuleResult","updateTransformedErrors","mergedErrors","setState","isSfpValid","e","currentFocusObject","focus","onBlur","setBalance","setBalanceCheckErrors","showValidation","defaultProps","expiryDateRequired","GiftCardFields"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import o from"../../../core/Context/useImage.js";import r from"./IrisGenerateQRCode.module.scss.js";function s(s){const{i18n:n}=t(),a=o();return e("div",null,e("p",{className:r.instruction},n.get("iris.instructions.generateQrCode")),s.showPayButton&&s.payButton({label:n.get("generateQRCode"),icon:a({imageFolder:"components/"})("qr"),status:s.status}))}export{s as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../../../core/Context/useImage.js";import o from"./IrisGenerateQRCode.module.scss.js";function s(s){const{i18n:a}=t(),n=r();return e("div",{"data-testid":"iris-generate-qr-code"},e("p",{className:o.instruction},a.get("iris.instructions.generateQrCode")),s.showPayButton&&s.payButton({label:a.get("generateQRCode"),icon:n({imageFolder:"components/"})("qr"),status:s.status}))}export{s as default};
2
2
  //# sourceMappingURL=IrisGenerateQRCode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGenerateQRCode.js","sources":["../../../../../src/components/Iris/components/IrisGenerateQRCode.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport useImage from '../../../core/Context/useImage';\nimport { UIElementStatus } from '../../types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport styles from './IrisGenerateQRCode.module.scss';\n\ninterface IrisGenerateQRCodeProps {\n showPayButton?: boolean;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n status: UIElementStatus;\n}\n\nexport default function IrisGenerateQRCode(props: Readonly<IrisGenerateQRCodeProps>) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n return (\n <div>\n <p className={styles.instruction}>{i18n.get('iris.instructions.generateQrCode')}</p>\n {props.showPayButton &&\n props.payButton({\n label: i18n.get('generateQRCode'),\n icon: getImage({ imageFolder: 'components/' })('qr'),\n status: props.status\n })}\n </div>\n );\n}\n"],"names":["IrisGenerateQRCode","props","i18n","useCoreContext","getImage","useImage","h","div","p","className","styles","instruction","get","showPayButton","payButton","label","icon","imageFolder","status"],"mappings":"mPAae,SAASA,EAAmBC,GACvC,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEjB,OACIC,EAACC,WACGD,EAACE,IAAAA,CAAEC,UAAWC,EAAOC,aAAcT,EAAKU,IAAI,qCAC3CX,EAAMY,eACHZ,EAAMa,UAAU,CACZC,MAAOb,EAAKU,IAAI,kBAChBI,KAAMZ,EAAS,CAAEa,YAAa,eAAxBb,CAAyC,MAC/Cc,OAAQjB,EAAMiB,SAIlC"}
1
+ {"version":3,"file":"IrisGenerateQRCode.js","sources":["../../../../../src/components/Iris/components/IrisGenerateQRCode.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport useImage from '../../../core/Context/useImage';\nimport { UIElementStatus } from '../../types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport styles from './IrisGenerateQRCode.module.scss';\n\ninterface IrisGenerateQRCodeProps {\n showPayButton?: boolean;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n status: UIElementStatus;\n}\n\nexport default function IrisGenerateQRCode(props: Readonly<IrisGenerateQRCodeProps>) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n return (\n <div data-testid=\"iris-generate-qr-code\">\n <p className={styles.instruction}>{i18n.get('iris.instructions.generateQrCode')}</p>\n {props.showPayButton &&\n props.payButton({\n label: i18n.get('generateQRCode'),\n icon: getImage({ imageFolder: 'components/' })('qr'),\n status: props.status\n })}\n </div>\n );\n}\n"],"names":["IrisGenerateQRCode","props","i18n","useCoreContext","getImage","useImage","h","div","data-testid","p","className","styles","instruction","get","showPayButton","payButton","label","icon","imageFolder","status"],"mappings":"mPAae,SAASA,EAAmBC,GACvC,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEjB,OACIC,EAACC,MAAAA,CAAIC,cAAY,yBACbF,EAACG,IAAAA,CAAEC,UAAWC,EAAOC,aAAcV,EAAKW,IAAI,qCAC3CZ,EAAMa,eACHb,EAAMc,UAAU,CACZC,MAAOd,EAAKW,IAAI,kBAChBI,KAAMb,EAAS,CAAEc,YAAa,eAAxBd,CAAyC,MAC/Ce,OAAQlB,EAAMkB,SAIlC"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import"../../internal/QRLoader/QRLoader.js";import{QRImage as o}from"../../internal/QRLoader/components/QRImage.js";import{QRProgressbar as r}from"../../internal/QRLoader/components/QRProgressbar.js";import{QRCountdown as a}from"../../internal/QRLoader/components/QRCountdown.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import{QRCodeCopyButton as n}from"../../internal/QRLoader/components/QRCodeCopyButton.js";import{useQRLoaderDetails as i}from"../../internal/QRLoader/QRLoaderDetailsProvider.js";import d from"../../internal/FormFields/Field/Field.js";import l from"../../internal/FormFields/InputText.js";const m=()=>{const{i18n:m}=t(),{qrCodeData:p,qrCodeImage:c,percentage:s,timeToPay:_,onTick:L,countdownTime:Q,onQRCodeLoad:R,onTimeUp:u,handleCopy:x}=i();return e("div",{className:"adyen-checkout__qr-loader--pix__qr_details"},e(o,{src:c,onLoad:R}),e("div",{className:"adyen-checkout__qr-loader--pix__qr_details__timer"},e(r,{percentage:s}),e(a,{countdownTime:Q,timeToPay:_,onTick:L,onCompleted:u})),e(d,{name:"pix-code",useLabelElement:!1},e(l,{className:"adyen-checkout__qr-loader--pix__qr_details__code",value:p,readonly:!0,"aria-label":m.get("pix.code.label")})),e(n,{text:p,copyLabel:m.get("pix.code.copy.label"),copiedLabel:m.get("pix.code.copied.label"),handleCopy:x}))};export{m as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import"../../internal/QRLoader/QRLoader.js";import{QRImage as o}from"../../internal/QRLoader/components/QRImage.js";import{QRProgressbar as r}from"../../internal/QRLoader/components/QRProgressbar.js";import{QRCountdown as a}from"../../internal/QRLoader/components/QRCountdown.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import{QRCodeCopyButton as n}from"../../internal/QRLoader/components/QRCodeCopyButton.js";import{useQRLoaderDetails as i}from"../../internal/QRLoader/QRLoaderDetailsProvider.js";import d from"../../internal/FormFields/Field/Field.js";import l from"../../internal/FormFields/InputText.js";import{TxVariants as m}from"../../tx-variants.js";const p=()=>{const{i18n:p}=t(),{qrCodeData:s,qrCodeImage:c,percentage:_,timeToPay:x,onTick:L,countdownTime:Q,onQRCodeLoad:R,onTimeUp:u,handleCopy:y}=i();return e("div",{className:"adyen-checkout__qr-loader--pix__qr_details"},e(o,{type:m.pix,src:c,onLoad:R}),e("div",{className:"adyen-checkout__qr-loader--pix__qr_details__timer"},e(r,{percentage:_}),e(a,{countdownTime:Q,timeToPay:x,onTick:L,onCompleted:u})),e(d,{name:"pix-code",useLabelElement:!1},e(l,{className:"adyen-checkout__qr-loader--pix__qr_details__code",value:s,readonly:!0,"aria-label":p.get("pix.code.label")})),e(n,{text:s,copyLabel:p.get("pix.code.copy.label"),copiedLabel:p.get("pix.code.copied.label"),handleCopy:y}))};export{p as default};
2
2
  //# sourceMappingURL=PixQRDetails.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PixQRDetails.js","sources":["../../../../../src/components/Pix/components/PixQRDetails.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { QRImage, QRProgressbar, QRCountdown, QRCodeCopyButton, useQRLoaderDetails } from '../../internal/QRLoader';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\n\nconst PixQRDetails = () => {\n const { i18n } = useCoreContext();\n const { qrCodeData, qrCodeImage, percentage, timeToPay, onTick, countdownTime, onQRCodeLoad, onTimeUp, handleCopy } = useQRLoaderDetails();\n\n return (\n <div className=\"adyen-checkout__qr-loader--pix__qr_details\">\n <QRImage src={qrCodeImage} onLoad={onQRCodeLoad} />\n <div className=\"adyen-checkout__qr-loader--pix__qr_details__timer\">\n <QRProgressbar percentage={percentage} />\n <QRCountdown countdownTime={countdownTime} timeToPay={timeToPay} onTick={onTick} onCompleted={onTimeUp} />\n </div>\n <Field name=\"pix-code\" useLabelElement={false}>\n <InputText\n className=\"adyen-checkout__qr-loader--pix__qr_details__code\"\n value={qrCodeData}\n readonly\n aria-label={i18n.get('pix.code.label')}\n />\n </Field>\n <QRCodeCopyButton\n text={qrCodeData}\n copyLabel={i18n.get('pix.code.copy.label')}\n copiedLabel={i18n.get('pix.code.copied.label')}\n handleCopy={handleCopy}\n />\n </div>\n );\n};\n\nexport default PixQRDetails;\n"],"names":["PixQRDetails","i18n","useCoreContext","qrCodeData","qrCodeImage","percentage","timeToPay","onTick","countdownTime","onQRCodeLoad","onTimeUp","handleCopy","useQRLoaderDetails","h","div","className","QRImage","src","onLoad","QRProgressbar","QRCountdown","onCompleted","Field","name","useLabelElement","InputText","value","readonly","aria-label","get","QRCodeCopyButton","text","copyLabel","copiedLabel"],"mappings":"usBAMA,MAAMA,EAAe,KACjB,MAAMC,KAAEA,GAASC,KACXC,WAAEA,EAAUC,YAAEA,EAAWC,WAAEA,EAAUC,UAAEA,EAASC,OAAEA,EAAMC,cAAEA,EAAaC,aAAEA,EAAYC,SAAEA,EAAQC,WAAEA,GAAeC,IAEtH,OACIC,EAACC,MAAAA,CAAIC,UAAU,8CACXF,EAACG,EAAAA,CAAQC,IAAKb,EAAac,OAAQT,IACnCI,EAACC,MAAAA,CAAIC,UAAU,qDACXF,EAACM,EAAAA,CAAcd,WAAYA,IAC3BQ,EAACO,EAAAA,CAAYZ,cAAeA,EAAeF,UAAWA,EAAWC,OAAQA,EAAQc,YAAaX,KAElGG,EAACS,EAAAA,CAAMC,KAAK,WAAWC,iBAAiB,GACpCX,EAACY,EAAAA,CACGV,UAAU,mDACVW,MAAOvB,EACPwB,UAAAA,EACAC,aAAY3B,EAAK4B,IAAI,qBAG7BhB,EAACiB,EAAAA,CACGC,KAAM5B,EACN6B,UAAW/B,EAAK4B,IAAI,uBACpBI,YAAahC,EAAK4B,IAAI,yBACtBlB,WAAYA"}
1
+ {"version":3,"file":"PixQRDetails.js","sources":["../../../../../src/components/Pix/components/PixQRDetails.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { QRImage, QRProgressbar, QRCountdown, QRCodeCopyButton, useQRLoaderDetails } from '../../internal/QRLoader';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\nimport { TxVariants } from '../../tx-variants';\n\nconst PixQRDetails = () => {\n const { i18n } = useCoreContext();\n const { qrCodeData, qrCodeImage, percentage, timeToPay, onTick, countdownTime, onQRCodeLoad, onTimeUp, handleCopy } = useQRLoaderDetails();\n\n return (\n <div className=\"adyen-checkout__qr-loader--pix__qr_details\">\n <QRImage type={TxVariants.pix} src={qrCodeImage} onLoad={onQRCodeLoad} />\n <div className=\"adyen-checkout__qr-loader--pix__qr_details__timer\">\n <QRProgressbar percentage={percentage} />\n <QRCountdown countdownTime={countdownTime} timeToPay={timeToPay} onTick={onTick} onCompleted={onTimeUp} />\n </div>\n <Field name=\"pix-code\" useLabelElement={false}>\n <InputText\n className=\"adyen-checkout__qr-loader--pix__qr_details__code\"\n value={qrCodeData}\n readonly\n aria-label={i18n.get('pix.code.label')}\n />\n </Field>\n <QRCodeCopyButton\n text={qrCodeData}\n copyLabel={i18n.get('pix.code.copy.label')}\n copiedLabel={i18n.get('pix.code.copied.label')}\n handleCopy={handleCopy}\n />\n </div>\n );\n};\n\nexport default PixQRDetails;\n"],"names":["PixQRDetails","i18n","useCoreContext","qrCodeData","qrCodeImage","percentage","timeToPay","onTick","countdownTime","onQRCodeLoad","onTimeUp","handleCopy","useQRLoaderDetails","h","div","className","QRImage","type","TxVariants","pix","src","onLoad","QRProgressbar","QRCountdown","onCompleted","Field","name","useLabelElement","InputText","value","readonly","aria-label","get","QRCodeCopyButton","text","copyLabel","copiedLabel"],"mappings":"yvBAOA,MAAMA,EAAe,KACjB,MAAMC,KAAEA,GAASC,KACXC,WAAEA,EAAUC,YAAEA,EAAWC,WAAEA,EAAUC,UAAEA,EAASC,OAAEA,EAAMC,cAAEA,EAAaC,aAAEA,EAAYC,SAAEA,EAAQC,WAAEA,GAAeC,IAEtH,OACIC,EAACC,MAAAA,CAAIC,UAAU,8CACXF,EAACG,EAAAA,CAAQC,KAAMC,EAAWC,IAAKC,IAAKhB,EAAaiB,OAAQZ,IACzDI,EAACC,MAAAA,CAAIC,UAAU,qDACXF,EAACS,EAAAA,CAAcjB,WAAYA,IAC3BQ,EAACU,EAAAA,CAAYf,cAAeA,EAAeF,UAAWA,EAAWC,OAAQA,EAAQiB,YAAad,KAElGG,EAACY,EAAAA,CAAMC,KAAK,WAAWC,iBAAiB,GACpCd,EAACe,EAAAA,CACGb,UAAU,mDACVc,MAAO1B,EACP2B,UAAAA,EACAC,aAAY9B,EAAK+B,IAAI,qBAG7BnB,EAACoB,EAAAA,CACGC,KAAM/B,EACNgC,UAAWlC,EAAK+B,IAAI,uBACpBI,YAAanC,EAAK+B,IAAI,yBACtBrB,WAAYA"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/UPIComponent/UPIComponent.js";import{Await as n}from"../internal/Await/Await.js";import{QRLoader as s}from"../internal/QRLoader/QRLoader.js";import"../../core/Context/CoreProvider.js";import"../../external/preact/hooks/dist/hooks.js";import"../../core/Errors/AdyenCheckoutError.js";import"../../core/Errors/SRPanelContext.js";import"../internal/Button/Button.js";import"../internal/QRLoader/QRLoaderDetailsProvider.js";import{TxVariants as r}from"../tx-variants.js";import i from"../../utils/isMobile.js";import{getQrOption as p,getVpaOption as a,getIntentOption as d}from"./constants.js";function m(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class u extends e{formatProps(t){if(!i())return{...super.formatProps(t),defaultMode:["qrCode","vpa"].includes(t?.defaultMode)?t.defaultMode:"qrCode",apps:[],segmentedControlOptions:[p(t.i18n),a(t.i18n)]};const{i18n:e,apps:o=[]}=t;if(o.length>0){const n=["intent","vpa"].includes(t.defaultMode)?t.defaultMode:"intent";return{...super.formatProps(t),defaultMode:n,apps:o,segmentedControlOptions:[d(e),a(e)]}}return{...super.formatProps(t),defaultMode:"vpa",apps:[],segmentedControlOptions:[]}}get isValid(){return this.state.isValid}formatData(){const{virtualPaymentAddress:t,app:e}=this.state.data||{};return{paymentMethod:{type:this.paymentType,...this.paymentType===r.upi_collect&&t&&{virtualPaymentAddress:t},...this.paymentType===r.upi_intent&&e?.id&&{appId:e.id}}}}get paymentType(){return"qrCode"===this.selectedMode?r.upi_qr:"vpa"===this.selectedMode?r.upi_collect:r.upi_intent}componentToRender(){const{type:e,url:i,paymentMethodType:p}=this.props,a=!!this.props.mandate;switch(e){case"qrCode":return t(s,{...this.props,qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,type:r.upi_qr,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,introduction:this.props.i18n.get("upi.qrCodeWaitingMessage"),countdownTime:this.props.countdownTime??5,onActionHandled:this.onActionHandled,showAmount:!a});case"await":return t(n,{url:i,type:p,showCountdownTimer:!0,shouldRedirectAutomatically:!0,showAmount:!a,countdownTime:this.props.countdownTime??5,clientKey:this.props.clientKey,paymentData:this.props.paymentData,onActionHandled:this.onActionHandled,onError:this.props.onError,messageText:this.props.i18n.get("upi.vpaWaitingMessage"),awaitText:this.props.i18n.get("await.waitForConfirmation"),onComplete:this.onComplete,brandLogo:this.icon,amount:this.props.amount});default:return t(o,{ref:t=>{this.componentRef=t},payButton:this.payButton,onChange:this.setState,onUpdateMode:this.onUpdateMode,apps:this.props.apps,segmentedControlOptions:this.props.segmentedControlOptions,defaultMode:this.props.defaultMode,showPayButton:this.props.showPayButton,amount:this.props.amount,mandate:this.props.mandate})}}constructor(t,e){super(t,e),m(this,"selectedMode",void 0),m(this,"onUpdateMode",t=>{this.selectedMode=t}),this.selectedMode=this.props.defaultMode}}m(u,"type",r.upi),m(u,"txVariants",[r.upi,r.upi_qr,r.upi_collect,r.upi_intent]);export{u as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as o}from"../internal/UIElement/UIElement.js";import e from"./components/UPIComponent/UPIComponent.js";import{Await as r}from"../internal/Await/Await.js";import{QRLoader as n}from"../internal/QRLoader/QRLoader.js";import"../../core/Context/CoreProvider.js";import"../../external/preact/hooks/dist/hooks.js";import"../../core/Errors/AdyenCheckoutError.js";import"../../core/Errors/SRPanelContext.js";import"../internal/Button/Button.js";import"../internal/QRLoader/QRLoaderDetailsProvider.js";import{TxVariants as i}from"../tx-variants.js";import s from"../../utils/isMobile.js";import{UPI_MODE as p}from"./constants.js";function a(t,o,e){return o in t?Object.defineProperty(t,o,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[o]=e,t}class m extends o{formatProps(t){const{apps:o=[]}=t,e=o.length>0;return s()&&e?{...super.formatProps(t),apps:o}:(this.mode=p.QR_CODE,{...super.formatProps(t),apps:[]})}get isValid(){return this.state.isValid}formatData(){const{app:t}=this.state.data||{};return{paymentMethod:{type:this.paymentType,...this.paymentType===i.upi_intent&&t?.id&&{appId:t.id}}}}get paymentType(){return this.mode===p.QR_CODE?i.upi_qr:i.upi_intent}componentToRender(){const{type:o,url:s,paymentMethodType:p}=this.props,a=!!this.props.mandate;switch(o){case"qrCode":return t(n,{...this.props,qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,type:i.upi_qr,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,introduction:this.props.i18n.get("upi.qrCodeWaitingMessage"),countdownTime:this.props.countdownTime??5,onActionHandled:this.onActionHandled,showAmount:!a});case"await":return t(r,{url:s,type:p,showCountdownTimer:!0,shouldRedirectAutomatically:!0,showAmount:!a,countdownTime:this.props.countdownTime??5,clientKey:this.props.clientKey,paymentData:this.props.paymentData,onActionHandled:this.onActionHandled,onError:this.props.onError,messageText:this.props.i18n.get("upi.vpaWaitingMessage"),awaitText:this.props.i18n.get("await.waitForConfirmation"),onComplete:this.onComplete,brandLogo:this.icon,amount:this.props.amount});default:return t(e,{ref:t=>{this.componentRef=t},payButton:this.payButton,onChange:this.setState,apps:this.props.apps,mode:this.mode,showPayButton:this.props.showPayButton,amount:this.props.amount,mandate:this.props.mandate})}}constructor(t,o){super(t,o),a(this,"mode",void 0);const{defaultMode:e}=o;e&&console.warn('[Adyen Checkout] UPI configuration property "defaultMode" is deprecated and will be removed in a future version.'),this.mode=s()?p.INTENT:p.QR_CODE}}a(m,"type",i.upi),a(m,"txVariants",[i.upi,i.upi_qr,i.upi_intent]);export{m as default};
2
2
  //# sourceMappingURL=UPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UPI.js","sources":["../../../../src/components/UPI/UPI.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport UPIComponent from './components/UPIComponent';\nimport { Await } from '../internal/Await';\nimport { QRLoader } from '../internal/QRLoader';\nimport { UPIConfiguration, UpiMode, UpiPaymentData, UpiType } from './types';\nimport { TxVariants } from '../tx-variants';\nimport isMobile from '../../utils/isMobile';\nimport type { ICore } from '../../core/types';\nimport { getIntentOption, getQrOption, getVpaOption } from './constants';\n\n/**\n * For mobile:\n * We should show upi_collect and upi_intent depending on if `apps` are returned in /paymentMethods response.\n * If there is no apps, hide segmented controls.\n * The upi_collect should always be on the second tab.\n * Never show QR code.\n *\n * For non-mobile:\n * We should never show the upi_intent (ignore `apps` in /paymentMethods response)\n * The upi_qr should be on the first tab and the upi_collect should be on second tab\n */\n\nclass UPI extends UIElement<UPIConfiguration> {\n public static type = TxVariants.upi;\n public static txVariants = [TxVariants.upi, TxVariants.upi_qr, TxVariants.upi_collect, TxVariants.upi_intent];\n\n private selectedMode: UpiMode;\n\n constructor(checkout: ICore, props: UPIConfiguration) {\n super(checkout, props);\n this.selectedMode = this.props.defaultMode;\n }\n\n formatProps(props: UPIConfiguration): UPIConfiguration {\n if (!isMobile()) {\n return {\n ...super.formatProps(props),\n defaultMode: ['qrCode', 'vpa'].includes(props?.defaultMode) ? props.defaultMode : 'qrCode',\n apps: [], // For desktop, ignore the apps\n segmentedControlOptions: [getQrOption(props.i18n), getVpaOption(props.i18n)]\n };\n }\n\n const { i18n, apps = [] } = props;\n const hasIntentApps = apps.length > 0;\n if (hasIntentApps) {\n // Mobile with UPI apps\n const allowedModes: UpiMode[] = ['intent', 'vpa'];\n const defaultMode = allowedModes.includes(props.defaultMode) ? props.defaultMode : 'intent';\n return {\n ...super.formatProps(props),\n defaultMode,\n apps,\n segmentedControlOptions: [getIntentOption(i18n), getVpaOption(i18n)]\n };\n }\n\n // Mobile, but no UPI apps\n return {\n ...super.formatProps(props),\n defaultMode: 'vpa', // Only VPA is possible\n apps: [],\n segmentedControlOptions: []\n };\n }\n\n public get isValid(): boolean {\n return this.state.isValid;\n }\n\n public formatData(): UpiPaymentData {\n const { virtualPaymentAddress, app } = this.state.data || {};\n\n return {\n paymentMethod: {\n type: this.paymentType,\n ...(this.paymentType === TxVariants.upi_collect && virtualPaymentAddress && { virtualPaymentAddress }),\n ...(this.paymentType === TxVariants.upi_intent && app?.id && { appId: app.id })\n }\n };\n }\n\n get paymentType(): UpiType {\n if (this.selectedMode === 'qrCode') {\n return TxVariants.upi_qr;\n }\n if (this.selectedMode === 'vpa') {\n return TxVariants.upi_collect;\n }\n return TxVariants.upi_intent;\n }\n\n private onUpdateMode = (mode: UpiMode): void => {\n this.selectedMode = mode;\n };\n\n protected override componentToRender(): h.JSX.Element {\n const { type, url, paymentMethodType } = this.props;\n\n const isAutoPay = !!this.props.mandate;\n\n switch (type) {\n case 'qrCode':\n return (\n <QRLoader\n {...this.props}\n qrCodeData={this.props.qrCodeData ? encodeURIComponent(this.props.qrCodeData) : null}\n type={TxVariants.upi_qr}\n brandLogo={this.props.brandLogo || this.icon}\n onComplete={this.onComplete}\n introduction={this.props.i18n.get('upi.qrCodeWaitingMessage')}\n countdownTime={this.props.countdownTime ?? 5}\n onActionHandled={this.onActionHandled}\n showAmount={!isAutoPay}\n />\n );\n case 'await':\n return (\n <Await\n url={url}\n type={paymentMethodType}\n showCountdownTimer\n shouldRedirectAutomatically\n showAmount={!isAutoPay}\n countdownTime={this.props.countdownTime ?? 5}\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onActionHandled={this.onActionHandled}\n onError={this.props.onError}\n messageText={this.props.i18n.get('upi.vpaWaitingMessage')}\n awaitText={this.props.i18n.get('await.waitForConfirmation')}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n amount={this.props.amount}\n />\n );\n default:\n return (\n <UPIComponent\n ref={(ref: RefObject<typeof UPIComponent>) => {\n this.componentRef = ref;\n }}\n payButton={this.payButton}\n onChange={this.setState}\n onUpdateMode={this.onUpdateMode}\n apps={this.props.apps}\n segmentedControlOptions={this.props.segmentedControlOptions}\n defaultMode={this.props.defaultMode}\n showPayButton={this.props.showPayButton}\n amount={this.props.amount}\n mandate={this.props.mandate}\n />\n );\n }\n }\n}\n\nexport default UPI;\n"],"names":["UPI","UIElement","formatProps","props","isMobile","super","defaultMode","includes","apps","segmentedControlOptions","getQrOption","i18n","getVpaOption","length","getIntentOption","isValid","this","state","formatData","virtualPaymentAddress","app","data","paymentMethod","type","paymentType","TxVariants","upi_collect","upi_intent","id","appId","selectedMode","upi_qr","componentToRender","url","paymentMethodType","isAutoPay","mandate","h","QRLoader","qrCodeData","encodeURIComponent","brandLogo","icon","onComplete","introduction","get","countdownTime","onActionHandled","showAmount","Await","showCountdownTimer","shouldRedirectAutomatically","clientKey","paymentData","onError","messageText","awaitText","amount","UPIComponent","ref","componentRef","payButton","onChange","setState","onUpdateMode","showPayButton","constructor","checkout","_define_property","mode","upi","txVariants"],"mappings":"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"}
1
+ {"version":3,"file":"UPI.js","sources":["../../../../src/components/UPI/UPI.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport UPIComponent from './components/UPIComponent';\nimport { Await } from '../internal/Await';\nimport { QRLoader } from '../internal/QRLoader';\nimport { UPIConfiguration, UpiMode, UpiPaymentData, UpiType } from './types';\nimport { TxVariants } from '../tx-variants';\nimport isMobile from '../../utils/isMobile';\nimport { UPI_MODE } from './constants';\nimport { ICore } from '../../types';\n\n/**\n * For mobile:\n * We should show upi_intent depending on if `apps` are returned in /paymentMethods response.\n *\n * For non-mobile:\n * We should never show the upi_intent (ignore `apps` in /paymentMethods response)\n * Show upi_qr as default\n */\n\nclass UPI extends UIElement<UPIConfiguration> {\n public static type = TxVariants.upi;\n public static readonly txVariants = [TxVariants.upi, TxVariants.upi_qr, TxVariants.upi_intent];\n private mode: UpiMode;\n constructor(checkout: ICore, props: UPIConfiguration) {\n super(checkout, props);\n // @ts-ignore: Accessing deprecated prop to provide migration warning\n const { defaultMode: deprecatedDefaultMode } = props;\n if (deprecatedDefaultMode) {\n console.warn('[Adyen Checkout] UPI configuration property \"defaultMode\" is deprecated and will be removed in a future version.');\n }\n this.mode = isMobile() ? UPI_MODE.INTENT : UPI_MODE.QR_CODE;\n }\n\n formatProps(props: UPIConfiguration): UPIConfiguration {\n const { apps = [] } = props;\n const hasIntentApps = apps.length > 0;\n if (isMobile() && hasIntentApps) {\n // Mobile with UPI apps\n return {\n ...super.formatProps(props),\n apps\n };\n }\n\n this.mode = UPI_MODE.QR_CODE;\n return {\n ...super.formatProps(props),\n apps: []\n };\n }\n\n public get isValid(): boolean {\n return this.state.isValid;\n }\n\n public formatData(): UpiPaymentData {\n const { app } = this.state.data || {};\n\n return {\n paymentMethod: {\n type: this.paymentType,\n ...(this.paymentType === TxVariants.upi_intent && app?.id && { appId: app.id })\n }\n };\n }\n\n get paymentType(): UpiType {\n if (this.mode === UPI_MODE.QR_CODE) {\n return TxVariants.upi_qr;\n }\n return TxVariants.upi_intent;\n }\n\n protected override componentToRender(): h.JSX.Element {\n const { type, url, paymentMethodType } = this.props;\n\n const isAutoPay = !!this.props.mandate;\n\n switch (type) {\n case 'qrCode':\n return (\n <QRLoader\n {...this.props}\n qrCodeData={this.props.qrCodeData ? encodeURIComponent(this.props.qrCodeData) : null}\n type={TxVariants.upi_qr}\n brandLogo={this.props.brandLogo || this.icon}\n onComplete={this.onComplete}\n introduction={this.props.i18n.get('upi.qrCodeWaitingMessage')}\n countdownTime={this.props.countdownTime ?? 5}\n onActionHandled={this.onActionHandled}\n showAmount={!isAutoPay}\n />\n );\n case 'await':\n return (\n <Await\n url={url}\n type={paymentMethodType}\n showCountdownTimer\n shouldRedirectAutomatically\n showAmount={!isAutoPay}\n countdownTime={this.props.countdownTime ?? 5}\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onActionHandled={this.onActionHandled}\n onError={this.props.onError}\n messageText={this.props.i18n.get('upi.vpaWaitingMessage')}\n awaitText={this.props.i18n.get('await.waitForConfirmation')}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n amount={this.props.amount}\n />\n );\n default:\n return (\n <UPIComponent\n ref={(ref: RefObject<typeof UPIComponent>) => {\n this.componentRef = ref;\n }}\n payButton={this.payButton}\n onChange={this.setState}\n apps={this.props.apps}\n mode={this.mode}\n showPayButton={this.props.showPayButton}\n amount={this.props.amount}\n mandate={this.props.mandate}\n />\n );\n }\n }\n}\n\nexport default UPI;\n"],"names":["UPI","UIElement","formatProps","props","apps","hasIntentApps","length","isMobile","super","this","mode","UPI_MODE","QR_CODE","isValid","state","formatData","app","data","paymentMethod","type","paymentType","TxVariants","upi_intent","id","appId","upi_qr","componentToRender","url","paymentMethodType","isAutoPay","mandate","h","QRLoader","qrCodeData","encodeURIComponent","brandLogo","icon","onComplete","introduction","i18n","get","countdownTime","onActionHandled","showAmount","Await","showCountdownTimer","shouldRedirectAutomatically","clientKey","paymentData","onError","messageText","awaitText","amount","UPIComponent","ref","componentRef","payButton","onChange","setState","showPayButton","constructor","checkout","_define_property","defaultMode","deprecatedDefaultMode","console","warn","INTENT","upi","txVariants"],"mappings":"0zBAoBA,MAAMA,UAAYC,EAcdC,WAAAA,CAAYC,GACR,MAAMC,KAAEA,EAAO,IAAOD,EAChBE,EAAgBD,EAAKE,OAAS,EACpC,OAAIC,KAAcF,EAEP,IACAG,MAAMN,YAAYC,GACrBC,SAIRK,KAAKC,KAAOC,EAASC,QACd,IACAJ,MAAMN,YAAYC,GACrBC,KAAM,IAEd,CAEA,WAAWS,GACP,OAAOJ,KAAKK,MAAMD,OACtB,CAEOE,UAAAA,GACH,MAAMC,IAAEA,GAAQP,KAAKK,MAAMG,MAAQ,CAAA,EAEnC,MAAO,CACHC,cAAe,CACXC,KAAMV,KAAKW,eACPX,KAAKW,cAAgBC,EAAWC,YAAcN,GAAKO,IAAM,CAAEC,MAAOR,EAAIO,KAGtF,CAEA,eAAIH,GACA,OAAIX,KAAKC,OAASC,EAASC,QAChBS,EAAWI,OAEfJ,EAAWC,UACtB,CAEmBI,iBAAAA,GACf,MAAMP,KAAEA,EAAIQ,IAAEA,EAAGC,kBAAEA,GAAsBnB,KAAKN,MAExC0B,IAAcpB,KAAKN,MAAM2B,QAE/B,OAAQX,GACJ,IAAK,SACD,OACIY,EAACC,EAAAA,IACOvB,KAAKN,MACT8B,WAAYxB,KAAKN,MAAM8B,WAAaC,mBAAmBzB,KAAKN,MAAM8B,YAAc,KAChFd,KAAME,EAAWI,OACjBU,UAAW1B,KAAKN,MAAMgC,WAAa1B,KAAK2B,KACxCC,WAAY5B,KAAK4B,WACjBC,aAAc7B,KAAKN,MAAMoC,KAAKC,IAAI,4BAClCC,cAAehC,KAAKN,MAAMsC,eAAiB,EAC3CC,gBAAiBjC,KAAKiC,gBACtBC,YAAad,IAGzB,IAAK,QACD,OACIE,EAACa,EAAAA,CACGjB,IAAKA,EACLR,KAAMS,EACNiB,oBAAAA,EACAC,6BAAAA,EACAH,YAAad,EACbY,cAAehC,KAAKN,MAAMsC,eAAiB,EAC3CM,UAAWtC,KAAKN,MAAM4C,UACtBC,YAAavC,KAAKN,MAAM6C,YACxBN,gBAAiBjC,KAAKiC,gBACtBO,QAASxC,KAAKN,MAAM8C,QACpBC,YAAazC,KAAKN,MAAMoC,KAAKC,IAAI,yBACjCW,UAAW1C,KAAKN,MAAMoC,KAAKC,IAAI,6BAC/BH,WAAY5B,KAAK4B,WACjBF,UAAW1B,KAAK2B,KAChBgB,OAAQ3C,KAAKN,MAAMiD,SAG/B,QACI,OACIrB,EAACsB,EAAAA,CACGC,IAAMA,IACF7C,KAAK8C,aAAeD,GAExBE,UAAW/C,KAAK+C,UAChBC,SAAUhD,KAAKiD,SACftD,KAAMK,KAAKN,MAAMC,KACjBM,KAAMD,KAAKC,KACXiD,cAAelD,KAAKN,MAAMwD,cAC1BP,OAAQ3C,KAAKN,MAAMiD,OACnBtB,QAASrB,KAAKN,MAAM2B,UAIxC,CA1GA,WAAA8B,CAAYC,EAAiB1D,GACzBK,MAAMqD,EAAU1D,GAFpB2D,EAAArD,KAAQC,YAAR,GAII,MAAQqD,YAAaC,GAA0B7D,EAC3C6D,GACAC,QAAQC,KAAK,oHAEjBzD,KAAKC,KAAOH,IAAaI,EAASwD,OAASxD,EAASC,OACxD,EAXAkD,EADE9D,EACYmB,OAAOE,EAAW+C,KAChCN,EAFE9D,EAEqBqE,aAAa,CAAChD,EAAW+C,IAAK/C,EAAWI,OAAQJ,EAAWC"}
@@ -1,2 +1,2 @@
1
- import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import{useState as a,useCallback as n,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../VpaInput/VpaInput.js";import i from"../../../../core/Context/useImage.js";import{A11Y as s}from"../../constants.js";import{SegmentedControl as d}from"../../../internal/SegmentedControl/SegmentedControl.js";import{SegmentedControlRegion as l}from"../../../internal/SegmentedControl/SegmentedControlRegion.js";import p from"../UPIIntentAppList/UPIIntentAppList.js";import{useCoreContext as c}from"../../../../core/Context/CoreProvider.js";import u from"../../../internal/Alert/Alert.js";import m from"../UPIMandate/UPIMandate.js";function g({defaultMode:g,onChange:I,payButton:f,showPayButton:h,mandate:C,amount:y,onUpdateMode:b=()=>{},apps:A=[],segmentedControlOptions:N=[]}){const{i18n:j}=c(),k=i(),[S,B]=a("ready"),[P,V]=a(g),[q,x]=a(null),[v,L]=a(null),[M,U]=a("qrCode"===g),E=C&&e(m,{mandate:C,amount:y});this.setStatus=e=>{B(e)},this.showValidation=()=>{q?.validateInput(),"intent"===P&&w()};const R=n(e=>{x(e)},[]),T=n(e=>{V(e),b(e)},[b]),Q=n(e=>{e?.id!==v?.id&&(L(e),U(!0),B("ready"))},[v]),w=n(()=>{v?(B("ready"),U(!0)):(B("error"),U(!1))},[v]);return o(()=>{I("qrCode"!==P?{data:{...v&&{app:v}},isValid:M}:{data:{},valid:{},errors:{},isValid:!0})},[v,M,P,I]),e(t,null,N.length>0&&e("p",{className:"adyen-checkout_upi-mode-selection-text"},j.get("upi.modeSelection")),e(d,{onChange:T,selectedValue:P,disabled:"loading"===S,classNameModifiers:["upi-margin-bottom"],options:N}),"intent"===P&&e(l,{id:s.AreaId.INTENT,ariaLabelledBy:s.ButtonId.INTENT,className:"adyen-checkout-upi-area-intent"},e("span",{className:"adyen-checkout-upi-instruction-label"},j.get("upi.intent.instruction")),"error"===S&&e(u,{icon:"cross"},j.get("upi.error.noAppSelected")),e(p,{disabled:"loading"===S,apps:A,selectedAppId:v?.id,onAppSelect:Q}),E,h&&f({label:j.get("continue"),status:S})),"vpa"===P&&e(l,{id:s.AreaId.VPA,ariaLabelledBy:s.ButtonId.VPA,className:"adyen-checkout-upi-area-vpa"},e("span",{className:"adyen-checkout-upi-instruction-label"},j.get("upi.collect.instruction")),e(r,{disabled:"loading"===S,onChange:I,onSetInputHandlers:R}),E,h&&f({label:j.get("continue"),status:S})),"qrCode"===P&&e(l,{id:s.AreaId.QR,ariaLabelledBy:s.ButtonId.QR,className:"adyen-checkout-upi-area-qr-code"},e("span",{className:"adyen-checkout-upi-instruction-label"},j.get("upi.qrCode.instruction")),E,h&&f({label:j.get("generateQRCode"),icon:k({imageFolder:"components/"})("qr"),status:S})))}export{g as default};
1
+ import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import{useState as a,useCallback as o,useEffect as r}from"../../../../external/preact/hooks/dist/hooks.js";import n from"../../../../core/Context/useImage.js";import{UPI_MODE as s,A11Y as i}from"../../constants.js";import"../../../../_virtual/index.js";import{SegmentedControlRegion as d}from"../../../internal/SegmentedControl/SegmentedControlRegion.js";import l from"../UPIIntentAppList/UPIIntentAppList.js";import{useCoreContext as p}from"../../../../core/Context/CoreProvider.js";import c from"../../../internal/Alert/Alert.js";import m from"../UPIMandate/UPIMandate.js";function u({mode:u,onChange:I,payButton:g,showPayButton:f,mandate:C,amount:N,apps:h=[]}){const{i18n:y}=p(),j=n(),[A,E]=a("ready"),[b,T]=a(null),[k,R]=a(u===s.QR_CODE),x=C&&e(m,{mandate:C,amount:N});this.setStatus=e=>{E(e)},this.showValidation=()=>{u===s.INTENT&&P()};const B=o(e=>{e?.id!==b?.id&&(T(e),R(!0),E("ready"))},[b]),P=o(()=>{b?(E("ready"),R(!0)):(E("error"),R(!1))},[b]);return r(()=>{u!==s.QR_CODE?I({data:{...b&&{app:b}},isValid:k}):I({data:{},valid:{},errors:{},isValid:!0})},[b,k,u,I]),e(t,null,u===s.INTENT&&e(d,{id:i.AreaId.INTENT,ariaLabelledBy:i.ButtonId.INTENT,className:"adyen-checkout-upi-area-intent"},e("span",{className:"adyen-checkout-upi-instruction-label"},y.get("upi.intent.instruction")),"error"===A&&e(c,{icon:"cross"},y.get("upi.error.noAppSelected")),e(l,{disabled:"loading"===A,apps:h,selectedAppId:b?.id,onAppSelect:B}),x,f&&g({label:y.get("continue"),status:A})),u===s.QR_CODE&&e(d,{id:i.AreaId.QR,ariaLabelledBy:i.ButtonId.QR,className:"adyen-checkout-upi-area-qr-code"},e("span",{className:"adyen-checkout-upi-instruction-label"},y.get("upi.qrCode.instruction")),x,f&&g({label:y.get("generateQRCode"),icon:j({imageFolder:"components/"})("qr"),status:A})))}export{u as default};
2
2
  //# sourceMappingURL=UPIComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UPIComponent.js","sources":["../../../../../../src/components/UPI/components/UPIComponent/UPIComponent.tsx"],"sourcesContent":["import { Fragment, h, RefObject } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport { PayButtonFunctionProps, UIElementStatus } from '../../../types';\nimport VpaInput, { VpaInputHandlers } from '../VpaInput/VpaInput';\nimport { App, UpiMode } from '../../types';\nimport useImage from '../../../../core/Context/useImage';\nimport { A11Y } from '../../constants';\nimport './UPIComponent.scss';\nimport { SegmentedControl, SegmentedControlRegion } from '../../../internal/SegmentedControl';\nimport UPIIntentAppList from '../UPIIntentAppList';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport Alert from '../../../internal/Alert';\nimport { SegmentedControlOption } from '../../../internal/SegmentedControl/SegmentedControl';\nimport UPIMandate, { Mandate } from '../UPIMandate/UPIMandate';\nimport type { PaymentAmount } from '../../../../types/global-types';\n\ntype UpiData = { app?: App; virtualPaymentAddress?: string };\n\ntype OnChangeProps = { data: UpiData; valid?: { [key: string]: boolean }; errors?: { [key: string]: any }; isValid: boolean };\n\ninterface UPIComponentProps {\n defaultMode: UpiMode;\n showPayButton: boolean;\n apps?: Array<App>;\n segmentedControlOptions?: Array<SegmentedControlOption<UpiMode>>;\n mandate?: Mandate;\n amount?: PaymentAmount;\n\n ref?(ref: RefObject<typeof UPIComponent>): void;\n\n payButton?(props: PayButtonFunctionProps): h.JSX.Element;\n\n onChange({ data, valid, errors, isValid }: OnChangeProps): void;\n\n onUpdateMode?(mode: UpiMode): void;\n}\n\nexport default function UPIComponent({\n defaultMode,\n onChange,\n payButton,\n showPayButton,\n mandate,\n amount,\n onUpdateMode = () => {},\n apps = [],\n segmentedControlOptions = []\n}: Readonly<UPIComponentProps>): h.JSX.Element {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const [status, setStatus] = useState<UIElementStatus>('ready');\n const [mode, setMode] = useState<UpiMode>(defaultMode);\n const [vpaInputHandlers, setVpaInputHandlers] = useState<VpaInputHandlers>(null);\n const [selectedApp, setSelectedApp] = useState<App>(null);\n const [isValid, setIsValid] = useState<boolean>(defaultMode === 'qrCode');\n const mandateComponent = mandate && <UPIMandate mandate={mandate} amount={amount} />;\n\n this.setStatus = (status: UIElementStatus) => {\n setStatus(status);\n };\n\n this.showValidation = () => {\n vpaInputHandlers?.validateInput();\n if (mode === 'intent') {\n validateIntentApp();\n }\n };\n\n const onSetVpaInputHandlers = useCallback((handlers: VpaInputHandlers) => {\n setVpaInputHandlers(handlers);\n }, []);\n\n const onChangeUpiMode = useCallback(\n (newMode: UpiMode) => {\n setMode(newMode);\n onUpdateMode(newMode);\n },\n [onUpdateMode]\n );\n\n const handleAppSelect = useCallback(\n (app: App) => {\n if (app?.id === selectedApp?.id) return;\n\n setSelectedApp(app);\n setIsValid(true);\n setStatus('ready');\n },\n [selectedApp]\n );\n\n const validateIntentApp = useCallback(() => {\n if (!selectedApp) {\n setStatus('error');\n setIsValid(false);\n } else {\n setStatus('ready');\n setIsValid(true);\n }\n }, [selectedApp]);\n\n useEffect(() => {\n if (mode !== 'qrCode') {\n onChange({\n data: { ...(selectedApp && { app: selectedApp }) },\n isValid\n });\n } else {\n /**\n * When selecting QR code mode, we need to clear the state data and trigger the 'onChange'.\n */\n onChange({ data: {}, valid: {}, errors: {}, isValid: true });\n }\n }, [selectedApp, isValid, mode, onChange]);\n\n return (\n <Fragment>\n {segmentedControlOptions.length > 0 && <p className=\"adyen-checkout_upi-mode-selection-text\">{i18n.get('upi.modeSelection')}</p>}\n <SegmentedControl\n onChange={onChangeUpiMode}\n selectedValue={mode}\n disabled={status === 'loading'}\n classNameModifiers={['upi-margin-bottom']}\n options={segmentedControlOptions}\n />\n\n {mode === 'intent' && (\n <SegmentedControlRegion id={A11Y.AreaId.INTENT} ariaLabelledBy={A11Y.ButtonId.INTENT} className=\"adyen-checkout-upi-area-intent\">\n <span className=\"adyen-checkout-upi-instruction-label\">{i18n.get('upi.intent.instruction')}</span>\n {status === 'error' && <Alert icon={'cross'}>{i18n.get('upi.error.noAppSelected')}</Alert>}\n <UPIIntentAppList disabled={status === 'loading'} apps={apps} selectedAppId={selectedApp?.id} onAppSelect={handleAppSelect} />\n {mandateComponent}\n {showPayButton &&\n payButton({\n label: i18n.get('continue'),\n status\n })}\n </SegmentedControlRegion>\n )}\n {mode === 'vpa' && (\n <SegmentedControlRegion id={A11Y.AreaId.VPA} ariaLabelledBy={A11Y.ButtonId.VPA} className=\"adyen-checkout-upi-area-vpa\">\n <span className=\"adyen-checkout-upi-instruction-label\">{i18n.get('upi.collect.instruction')}</span>\n <VpaInput disabled={status === 'loading'} onChange={onChange} onSetInputHandlers={onSetVpaInputHandlers} />\n {mandateComponent}\n {showPayButton &&\n payButton({\n label: i18n.get('continue'),\n status\n })}\n </SegmentedControlRegion>\n )}\n {mode === 'qrCode' && (\n <SegmentedControlRegion id={A11Y.AreaId.QR} ariaLabelledBy={A11Y.ButtonId.QR} className=\"adyen-checkout-upi-area-qr-code\">\n <span className=\"adyen-checkout-upi-instruction-label\">{i18n.get('upi.qrCode.instruction')}</span>\n {mandateComponent}\n {showPayButton &&\n payButton({\n label: i18n.get('generateQRCode'),\n icon: getImage({ imageFolder: 'components/' })('qr'),\n status\n })}\n </SegmentedControlRegion>\n )}\n </Fragment>\n );\n}\n"],"names":["UPIComponent","defaultMode","onChange","payButton","showPayButton","mandate","amount","onUpdateMode","apps","segmentedControlOptions","i18n","useCoreContext","getImage","useImage","status","setStatus","useState","mode","setMode","vpaInputHandlers","setVpaInputHandlers","selectedApp","setSelectedApp","isValid","setIsValid","mandateComponent","h","UPIMandate","this","showValidation","validateInput","validateIntentApp","onSetVpaInputHandlers","useCallback","handlers","onChangeUpiMode","newMode","handleAppSelect","app","id","useEffect","data","valid","errors","Fragment","length","p","className","get","SegmentedControl","selectedValue","disabled","classNameModifiers","options","SegmentedControlRegion","A11Y","AreaId","INTENT","ariaLabelledBy","ButtonId","span","Alert","icon","UPIIntentAppList","selectedAppId","onAppSelect","label","VPA","VpaInput","onSetInputHandlers","QR","imageFolder"],"mappings":"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"}
1
+ {"version":3,"file":"UPIComponent.js","sources":["../../../../../../src/components/UPI/components/UPIComponent/UPIComponent.tsx"],"sourcesContent":["import { Fragment, h, RefObject } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport { PayButtonFunctionProps, UIElementStatus } from '../../../types';\nimport { App, UpiMode } from '../../types';\nimport useImage from '../../../../core/Context/useImage';\nimport { A11Y, UPI_MODE } from '../../constants';\nimport './UPIComponent.scss';\nimport { SegmentedControlRegion } from '../../../internal/SegmentedControl';\nimport UPIIntentAppList from '../UPIIntentAppList';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport Alert from '../../../internal/Alert';\nimport UPIMandate, { Mandate } from '../UPIMandate/UPIMandate';\nimport type { PaymentAmount } from '../../../../types/global-types';\n\ntype UpiData = { app?: App };\n\ntype OnChangeProps = { data: UpiData; valid?: { [key: string]: boolean }; errors?: { [key: string]: any }; isValid: boolean };\n\ninterface UPIComponentProps {\n mode: UpiMode;\n showPayButton: boolean;\n apps?: Array<App>;\n mandate?: Mandate;\n amount?: PaymentAmount;\n\n ref?(ref: RefObject<typeof UPIComponent>): void;\n\n payButton?(props: PayButtonFunctionProps): h.JSX.Element;\n\n onChange({ data, valid, errors, isValid }: OnChangeProps): void;\n}\n\nexport default function UPIComponent({\n mode,\n onChange,\n payButton,\n showPayButton,\n mandate,\n amount,\n apps = []\n}: Readonly<UPIComponentProps>): h.JSX.Element {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n const [status, setStatus] = useState<UIElementStatus>('ready');\n const [selectedApp, setSelectedApp] = useState<App>(null);\n const [isValid, setIsValid] = useState<boolean>(mode === UPI_MODE.QR_CODE);\n const mandateComponent = mandate && <UPIMandate mandate={mandate} amount={amount} />;\n\n this.setStatus = (status: UIElementStatus) => {\n setStatus(status);\n };\n\n this.showValidation = () => {\n if (mode === UPI_MODE.INTENT) {\n validateIntentApp();\n }\n };\n\n const handleAppSelect = useCallback(\n (app: App) => {\n if (app?.id === selectedApp?.id) return;\n\n setSelectedApp(app);\n setIsValid(true);\n setStatus('ready');\n },\n [selectedApp]\n );\n\n const validateIntentApp = useCallback(() => {\n if (!selectedApp) {\n setStatus('error');\n setIsValid(false);\n } else {\n setStatus('ready');\n setIsValid(true);\n }\n }, [selectedApp]);\n\n useEffect(() => {\n if (mode === UPI_MODE.QR_CODE) {\n /**\n * When selecting QR code mode, we need to clear the state data and trigger the 'onChange'.\n */\n onChange({ data: {}, valid: {}, errors: {}, isValid: true });\n return;\n }\n onChange({\n data: { ...(selectedApp && { app: selectedApp }) },\n isValid\n });\n }, [selectedApp, isValid, mode, onChange]);\n\n return (\n <Fragment>\n {mode === UPI_MODE.INTENT && (\n <SegmentedControlRegion id={A11Y.AreaId.INTENT} ariaLabelledBy={A11Y.ButtonId.INTENT} className=\"adyen-checkout-upi-area-intent\">\n <span className=\"adyen-checkout-upi-instruction-label\">{i18n.get('upi.intent.instruction')}</span>\n {status === 'error' && <Alert icon={'cross'}>{i18n.get('upi.error.noAppSelected')}</Alert>}\n <UPIIntentAppList disabled={status === 'loading'} apps={apps} selectedAppId={selectedApp?.id} onAppSelect={handleAppSelect} />\n {mandateComponent}\n {showPayButton &&\n payButton({\n label: i18n.get('continue'),\n status\n })}\n </SegmentedControlRegion>\n )}\n {mode === UPI_MODE.QR_CODE && (\n <SegmentedControlRegion id={A11Y.AreaId.QR} ariaLabelledBy={A11Y.ButtonId.QR} className=\"adyen-checkout-upi-area-qr-code\">\n <span className=\"adyen-checkout-upi-instruction-label\">{i18n.get('upi.qrCode.instruction')}</span>\n {mandateComponent}\n {showPayButton &&\n payButton({\n label: i18n.get('generateQRCode'),\n icon: getImage({ imageFolder: 'components/' })('qr'),\n status\n })}\n </SegmentedControlRegion>\n )}\n </Fragment>\n );\n}\n"],"names":["UPIComponent","mode","onChange","payButton","showPayButton","mandate","amount","apps","i18n","useCoreContext","getImage","useImage","status","setStatus","useState","selectedApp","setSelectedApp","isValid","setIsValid","UPI_MODE","QR_CODE","mandateComponent","h","UPIMandate","this","showValidation","INTENT","validateIntentApp","handleAppSelect","useCallback","app","id","useEffect","data","valid","errors","Fragment","SegmentedControlRegion","A11Y","AreaId","ariaLabelledBy","ButtonId","className","span","get","Alert","icon","UPIIntentAppList","disabled","selectedAppId","onAppSelect","label","QR","imageFolder"],"mappings":"wpBAgCe,SAASA,GAAaC,KACjCA,EAAIC,SACJA,EAAQC,UACRA,EAASC,cACTA,EAAaC,QACbA,EAAOC,OACPA,EAAMC,KACNA,EAAO,KAEP,MAAMC,KAAEA,GAASC,IACXC,EAAWC,KACVC,EAAQC,GAAaC,EAA0B,UAC/CC,EAAaC,GAAkBF,EAAc,OAC7CG,EAASC,GAAcJ,EAAkBb,IAASkB,EAASC,SAC5DC,EAAmBhB,GAAWiB,EAACC,EAAAA,CAAWlB,QAASA,EAASC,OAAQA,IAE1EkB,KAAKX,UAAaD,IACdC,EAAUD,IAGdY,KAAKC,eAAiB,KACdxB,IAASkB,EAASO,QAClBC,KAIR,MAAMC,EAAkBC,EACnBC,IACOA,GAAKC,KAAOhB,GAAagB,KAE7Bf,EAAec,GACfZ,GAAW,GACXL,EAAU,WAEd,CAACE,IAGCY,EAAoBE,EAAY,KAC7Bd,GAIDF,EAAU,SACVK,GAAW,KAJXL,EAAU,SACVK,GAAW,KAKhB,CAACH,IAgBJ,OAdAiB,EAAU,KACF/B,IAASkB,EAASC,QAOtBlB,EAAS,CACL+B,KAAM,IAAMlB,GAAe,CAAEe,IAAKf,IAClCE,YALAf,EAAS,CAAE+B,KAAM,CAAA,EAAIC,MAAO,CAAA,EAAIC,OAAQ,CAAA,EAAIlB,SAAS,KAO1D,CAACF,EAAaE,EAAShB,EAAMC,IAG5BoB,EAACc,EAAAA,KACInC,IAASkB,EAASO,QACdJ,EAACe,EAAAA,CAAuBN,GAAIO,EAAKC,OAAOb,OAAQc,eAAgBF,EAAKG,SAASf,OAAQgB,UAAU,kCAC7FpB,EAACqB,OAAAA,CAAKD,UAAU,wCAAwClC,EAAKoC,IAAI,2BACrD,UAAXhC,GAAsBU,EAACuB,EAAAA,CAAMC,KAAM,SAAUtC,EAAKoC,IAAI,4BACvDtB,EAACyB,EAAAA,CAAiBC,SAAqB,YAAXpC,EAAsBL,KAAMA,EAAM0C,cAAelC,GAAagB,GAAImB,YAAatB,IAC1GP,EACAjB,GACGD,EAAU,CACNgD,MAAO3C,EAAKoC,IAAI,YAChBhC,YAIfX,IAASkB,EAASC,SACfE,EAACe,EAAAA,CAAuBN,GAAIO,EAAKC,OAAOa,GAAIZ,eAAgBF,EAAKG,SAASW,GAAIV,UAAU,mCACpFpB,EAACqB,OAAAA,CAAKD,UAAU,wCAAwClC,EAAKoC,IAAI,2BAChEvB,EACAjB,GACGD,EAAU,CACNgD,MAAO3C,EAAKoC,IAAI,kBAChBE,KAAMpC,EAAS,CAAE2C,YAAa,eAAxB3C,CAAyC,MAC/CE,YAM5B"}
@@ -1,2 +1,2 @@
1
- const e={ButtonId:{VPA:"upi-button-vpa",QR:"upi-button-qrCode",INTENT:"upi-button-intent"},AreaId:{VPA:"upi-area-vpa",QR:"upi-area-qrCode",INTENT:"upi-area-intent"}},t=t=>({label:t.get("upi.mode.payByAnyUpi"),value:"intent",id:e.ButtonId.INTENT,controls:e.AreaId.INTENT}),o=t=>({label:t.get("upi.mode.enterUpiId"),value:"vpa",id:e.ButtonId.VPA,controls:e.AreaId.VPA}),a=t=>({label:t.get("upi.mode.qrCode"),value:"qrCode",id:e.ButtonId.QR,controls:e.AreaId.QR});export{e as A11Y,t as getIntentOption,a as getQrOption,o as getVpaOption};
1
+ const t={QR_CODE:"qrCode",INTENT:"intent"},e={ButtonId:{QR:"upi-button-qrCode",INTENT:"upi-button-intent"},AreaId:{QR:"upi-area-qrCode",INTENT:"upi-area-intent"}};export{e as A11Y,t as UPI_MODE};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/components/UPI/constants.ts"],"sourcesContent":["import { SegmentedControlOption } from '../internal/SegmentedControl/SegmentedControl';\nimport { UpiMode } from './types';\nimport Language from '../../language';\n\nexport const A11Y = {\n ButtonId: {\n VPA: 'upi-button-vpa',\n QR: 'upi-button-qrCode',\n INTENT: 'upi-button-intent'\n },\n AreaId: {\n VPA: 'upi-area-vpa',\n QR: 'upi-area-qrCode',\n INTENT: 'upi-area-intent'\n }\n};\n\nexport const getIntentOption = (i18n: Language): SegmentedControlOption<UpiMode> => ({\n label: i18n.get('upi.mode.payByAnyUpi'),\n value: 'intent',\n id: A11Y.ButtonId.INTENT,\n controls: A11Y.AreaId.INTENT\n});\n\nexport const getVpaOption = (i18n: Language): SegmentedControlOption<UpiMode> => ({\n label: i18n.get('upi.mode.enterUpiId'),\n value: 'vpa',\n id: A11Y.ButtonId.VPA,\n controls: A11Y.AreaId.VPA\n});\n\nexport const getQrOption = (i18n: Language): SegmentedControlOption<UpiMode> => ({\n label: i18n.get('upi.mode.qrCode'),\n value: 'qrCode',\n id: A11Y.ButtonId.QR,\n controls: A11Y.AreaId.QR\n});\n"],"names":["A11Y","ButtonId","VPA","QR","INTENT","AreaId","getIntentOption","i18n","label","get","value","id","controls","getVpaOption","getQrOption"],"mappings":"MAIaA,EAAO,CAChBC,SAAU,CACNC,IAAK,iBACLC,GAAI,oBACJC,OAAQ,qBAEZC,OAAQ,CACJH,IAAK,eACLC,GAAI,kBACJC,OAAQ,oBAIHE,EAAmBC,IAAAA,CAC5BC,MAAOD,EAAKE,IAAI,wBAChBC,MAAO,SACPC,GAAIX,EAAKC,SAASG,OAClBQ,SAAUZ,EAAKK,OAAOD,SAGbS,EAAgBN,IAAAA,CACzBC,MAAOD,EAAKE,IAAI,uBAChBC,MAAO,MACPC,GAAIX,EAAKC,SAASC,IAClBU,SAAUZ,EAAKK,OAAOH,MAGbY,EAAeP,IAAAA,CACxBC,MAAOD,EAAKE,IAAI,mBAChBC,MAAO,SACPC,GAAIX,EAAKC,SAASE,GAClBS,SAAUZ,EAAKK,OAAOF"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/components/UPI/constants.ts"],"sourcesContent":["import { UpiMode } from './types';\n\nexport const UPI_MODE = {\n QR_CODE: 'qrCode' as UpiMode,\n INTENT: 'intent' as UpiMode\n} as const;\n\nexport const A11Y = {\n ButtonId: {\n QR: 'upi-button-qrCode',\n INTENT: 'upi-button-intent'\n },\n AreaId: {\n QR: 'upi-area-qrCode',\n INTENT: 'upi-area-intent'\n }\n};\n"],"names":["UPI_MODE","QR_CODE","INTENT","A11Y","ButtonId","QR","AreaId"],"mappings":"MAEaA,EAAW,CACpBC,QAAS,SACTC,OAAQ,UAGCC,EAAO,CAChBC,SAAU,CACNC,GAAI,oBACJH,OAAQ,qBAEZI,OAAQ,CACJD,GAAI,kBACJH,OAAQ"}
@@ -1,2 +1,2 @@
1
- import{TxVariants as a}from"./tx-variants.js";const n={[a.address]:"Address",[a.donation]:"Donation",[a.personal_details]:"PersonalDetails",[a.bankTransfer_IBAN]:"BankTransfer",[a.bankTransfer_BE]:"BankTransfer",[a.bankTransfer_NL]:"BankTransfer",[a.bankTransfer_PL]:"BankTransfer",[a.bankTransfer_FR]:"BankTransfer",[a.bankTransfer_CH]:"BankTransfer",[a.bankTransfer_IE]:"BankTransfer",[a.bankTransfer_GB]:"BankTransfer",[a.bankTransfer_DE]:"BankTransfer",[a.bcmc]:"Bancontact",[a.card]:"Card",[a.scheme]:"Card",[a.storedCard]:"Card",[a.customCard]:"CustomCard",[a.ach]:"Ach",[a.directdebit_GB]:"BacsDirectDebit",[a.sepadirectdebit]:"SepaDirectDebit",[a.eft_directdebit_CA]:"PreAuthorizedDebitCanada",[a.affirm]:"Affirm",[a.afterpay]:"AfterPay",[a.afterpay_default]:"AfterPay",[a.afterpay_b2b]:"AfterPayB2B",[a.atome]:"Atome",[a.facilypay_3x]:"FacilyPay3x",[a.facilypay_4x]:"FacilyPay4x",[a.facilypay_6x]:"FacilyPay6x",[a.facilypay_10x]:"FacilyPay10x",[a.facilypay_12x]:"FacilyPay12x",[a.ratepay]:"RatePay",[a.ratepay_directdebit]:"RatePayDirectDebit",[a.amazonpay]:"AmazonPay",[a.applepay]:"ApplePay",[a.cashapp]:"CashAppPay",[a.clicktopay]:"ClickToPay",[a.googlepay]:"GooglePay",[a.paypal]:"PayPal",[a.fastlane]:"Fastlane",[a.paywithgoogle]:"GooglePay",[a.boletobancario]:"Boleto",[a.boletobancario_itau]:"Boleto",[a.boletobancario_santander]:"Boleto",[a.doku]:"Doku",[a.doku_alfamart]:"Doku",[a.doku_permata_lite_atm]:"Doku",[a.doku_indomaret]:"Doku",[a.doku_atm_mandiri_va]:"Doku",[a.doku_sinarmas_va]:"Doku",[a.doku_mandiri_va]:"Doku",[a.doku_cimb_va]:"Doku",[a.doku_danamon_va]:"Doku",[a.doku_bri_va]:"Doku",[a.doku_bni_va]:"Doku",[a.doku_bca_va]:"Doku",[a.doku_wallet]:"Doku",[a.oxxo]:"Oxxo",[a.primeiropay_boleto]:"Boleto",[a.billdesk_online]:"BillDeskOnline",[a.billdesk_wallet]:"BillDeskWallet",[a.dotpay]:"Dotpay",[a.eps]:"Eps",[a.iris]:"Iris",[a.molpay_ebanking_fpx_MY]:"MolPayEBankingMY",[a.molpay_ebanking_TH]:"MolPayEBankingTH",[a.molpay_ebanking_VN]:"MolPayEBankingVN",[a.onlineBanking_CZ]:"OnlineBankingCZ",[a.onlinebanking_IN]:"OnlineBankingIN",[a.onlineBanking_PL]:"OnlineBankingPL",[a.onlineBanking_SK]:"OnlineBankingSK",[a.paybybank]:"PayByBank",[a.payu_IN_cashcard]:"PayuCashcard",[a.payu_IN_nb]:"PayuNetBanking",[a.wallet_IN]:"WalletINElement",[a.dragonpay_ebanking]:"Dragonpay",[a.dragonpay_otc_banking]:"Dragonpay",[a.dragonpay_otc_non_banking]:"Dragonpay",[a.dragonpay_otc_philippines]:"Dragonpay",[a.econtext_atm]:"Econtext",[a.econtext_online]:"Econtext",[a.econtext_seven_eleven]:"Econtext",[a.econtext_stores]:"Econtext",[a.giropay]:"Giropay",[a.multibanco]:"Multibanco",[a.redirect]:"Redirect",[a.twint]:"Twint",[a.vipps]:"Vipps",[a.trustly]:"Trustly",[a.paybybank_AIS_DD]:"PayByBankUS",[a.riverty]:"Riverty",[a.paybybank_pix]:"PayByBankPix",[a.klarna]:"Klarna",[a.klarna_account]:"Klarna",[a.klarna_paynow]:"Klarna",[a.klarna_b2b]:"Klarna",[a.bcmc_mobile]:"BcmcMobile",[a.bcmc_mobile_QR]:"BcmcMobile",[a.pix]:"Pix",[a.swish]:"Swish",[a.wechatpay]:"WeChat",[a.wechatpayQR]:"WeChat",[a.promptpay]:"PromptPay",[a.paynow]:"PayNow",[a.duitnow]:"DuitNow",[a.blik]:"Blik",[a.mbway]:"MBWay",[a.ancv]:"ANCV",[a.payto]:"PayTo",[a.upi]:"UPI",[a.upi_qr]:"UPI",[a.upi_collect]:"UPI",[a.upi_intent]:"UPI",[a.giftcard]:"Giftcard",[a.mealVoucher_FR_natixis]:"MealVoucherFR",[a.mealVoucher_FR_sodexo]:"MealVoucherFR",[a.mealVoucher_FR_groupeup]:"MealVoucherFR"};function e(a){return n[a]}export{e as default};
1
+ import{TxVariants as a}from"./tx-variants.js";const n={[a.address]:"Address",[a.donation]:"Donation",[a.personal_details]:"PersonalDetails",[a.bankTransfer_IBAN]:"BankTransfer",[a.bankTransfer_BE]:"BankTransfer",[a.bankTransfer_NL]:"BankTransfer",[a.bankTransfer_PL]:"BankTransfer",[a.bankTransfer_FR]:"BankTransfer",[a.bankTransfer_CH]:"BankTransfer",[a.bankTransfer_IE]:"BankTransfer",[a.bankTransfer_GB]:"BankTransfer",[a.bankTransfer_DE]:"BankTransfer",[a.bcmc]:"Bancontact",[a.card]:"Card",[a.scheme]:"Card",[a.storedCard]:"Card",[a.customCard]:"CustomCard",[a.ach]:"Ach",[a.directdebit_GB]:"BacsDirectDebit",[a.sepadirectdebit]:"SepaDirectDebit",[a.eft_directdebit_CA]:"PreAuthorizedDebitCanada",[a.affirm]:"Affirm",[a.afterpay]:"AfterPay",[a.afterpay_default]:"AfterPay",[a.afterpay_b2b]:"AfterPayB2B",[a.atome]:"Atome",[a.facilypay_3x]:"FacilyPay3x",[a.facilypay_4x]:"FacilyPay4x",[a.facilypay_6x]:"FacilyPay6x",[a.facilypay_10x]:"FacilyPay10x",[a.facilypay_12x]:"FacilyPay12x",[a.ratepay]:"RatePay",[a.ratepay_directdebit]:"RatePayDirectDebit",[a.amazonpay]:"AmazonPay",[a.applepay]:"ApplePay",[a.cashapp]:"CashAppPay",[a.clicktopay]:"ClickToPay",[a.googlepay]:"GooglePay",[a.paypal]:"PayPal",[a.fastlane]:"Fastlane",[a.paywithgoogle]:"GooglePay",[a.boletobancario]:"Boleto",[a.boletobancario_itau]:"Boleto",[a.boletobancario_santander]:"Boleto",[a.doku]:"Doku",[a.doku_alfamart]:"Doku",[a.doku_permata_lite_atm]:"Doku",[a.doku_indomaret]:"Doku",[a.doku_atm_mandiri_va]:"Doku",[a.doku_sinarmas_va]:"Doku",[a.doku_mandiri_va]:"Doku",[a.doku_cimb_va]:"Doku",[a.doku_danamon_va]:"Doku",[a.doku_bri_va]:"Doku",[a.doku_bni_va]:"Doku",[a.doku_bca_va]:"Doku",[a.doku_wallet]:"Doku",[a.oxxo]:"Oxxo",[a.primeiropay_boleto]:"Boleto",[a.billdesk_online]:"BillDeskOnline",[a.billdesk_wallet]:"BillDeskWallet",[a.dotpay]:"Dotpay",[a.eps]:"Eps",[a.iris]:"Iris",[a.molpay_ebanking_fpx_MY]:"MolPayEBankingMY",[a.molpay_ebanking_TH]:"MolPayEBankingTH",[a.molpay_ebanking_VN]:"MolPayEBankingVN",[a.onlineBanking_CZ]:"OnlineBankingCZ",[a.onlinebanking_IN]:"OnlineBankingIN",[a.onlineBanking_PL]:"OnlineBankingPL",[a.onlineBanking_SK]:"OnlineBankingSK",[a.paybybank]:"PayByBank",[a.payu_IN_cashcard]:"PayuCashcard",[a.payu_IN_nb]:"PayuNetBanking",[a.wallet_IN]:"WalletINElement",[a.dragonpay_ebanking]:"Dragonpay",[a.dragonpay_otc_banking]:"Dragonpay",[a.dragonpay_otc_non_banking]:"Dragonpay",[a.dragonpay_otc_philippines]:"Dragonpay",[a.econtext_atm]:"Econtext",[a.econtext_online]:"Econtext",[a.econtext_seven_eleven]:"Econtext",[a.econtext_stores]:"Econtext",[a.giropay]:"Giropay",[a.multibanco]:"Multibanco",[a.redirect]:"Redirect",[a.twint]:"Twint",[a.vipps]:"Vipps",[a.trustly]:"Trustly",[a.paybybank_AIS_DD]:"PayByBankUS",[a.riverty]:"Riverty",[a.paybybank_pix]:"PayByBankPix",[a.klarna]:"Klarna",[a.klarna_account]:"Klarna",[a.klarna_paynow]:"Klarna",[a.klarna_b2b]:"Klarna",[a.bcmc_mobile]:"BcmcMobile",[a.bcmc_mobile_QR]:"BcmcMobile",[a.pix]:"Pix",[a.swish]:"Swish",[a.wechatpay]:"WeChat",[a.wechatpayQR]:"WeChat",[a.promptpay]:"PromptPay",[a.paynow]:"PayNow",[a.duitnow]:"DuitNow",[a.blik]:"Blik",[a.mbway]:"MBWay",[a.ancv]:"ANCV",[a.payto]:"PayTo",[a.upi]:"UPI",[a.upi_qr]:"UPI",[a.upi_intent]:"UPI",[a.giftcard]:"Giftcard",[a.mealVoucher_FR_natixis]:"MealVoucherFR",[a.mealVoucher_FR_sodexo]:"MealVoucherFR",[a.mealVoucher_FR_groupeup]:"MealVoucherFR"};function e(a){return n[a]}export{e as default};
2
2
  //# sourceMappingURL=components-name-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-name-map.js","sources":["../../../src/components/components-name-map.ts"],"sourcesContent":["import { TxVariants } from './tx-variants';\n\n/**\n * Maps each payment type with the string name of its Component element.\n *\n * It is used to give nicer error messages when creating components using Drop-in.\n * Example: paymentMethods response contains blik, but Blik component is not configured. So it warns that 'Blik' must be imported and added to the Drop-in configuration.\n */\nconst ComponentsNameMap = {\n /** internal */\n [TxVariants.address]: 'Address',\n [TxVariants.donation]: 'Donation',\n [TxVariants.personal_details]: 'PersonalDetails',\n /** internal */\n\n /** Bank Transfer */\n [TxVariants.bankTransfer_IBAN]: 'BankTransfer',\n [TxVariants.bankTransfer_BE]: 'BankTransfer',\n [TxVariants.bankTransfer_NL]: 'BankTransfer',\n [TxVariants.bankTransfer_PL]: 'BankTransfer',\n [TxVariants.bankTransfer_FR]: 'BankTransfer',\n [TxVariants.bankTransfer_CH]: 'BankTransfer',\n [TxVariants.bankTransfer_IE]: 'BankTransfer',\n [TxVariants.bankTransfer_GB]: 'BankTransfer',\n [TxVariants.bankTransfer_DE]: 'BankTransfer',\n /** Bank Transfer */\n\n /** Card */\n [TxVariants.bcmc]: 'Bancontact',\n [TxVariants.card]: 'Card',\n [TxVariants.scheme]: 'Card',\n [TxVariants.storedCard]: 'Card',\n [TxVariants.customCard]: 'CustomCard',\n /** Card */\n\n /** Direct debit */\n [TxVariants.ach]: 'Ach',\n [TxVariants.directdebit_GB]: 'BacsDirectDebit',\n [TxVariants.sepadirectdebit]: 'SepaDirectDebit',\n [TxVariants.eft_directdebit_CA]: 'PreAuthorizedDebitCanada',\n /** Direct debit */\n\n /** Open Invoice */\n [TxVariants.affirm]: 'Affirm',\n [TxVariants.afterpay]: 'AfterPay',\n [TxVariants.afterpay_default]: 'AfterPay',\n [TxVariants.afterpay_b2b]: 'AfterPayB2B',\n [TxVariants.atome]: 'Atome',\n [TxVariants.facilypay_3x]: 'FacilyPay3x',\n [TxVariants.facilypay_4x]: 'FacilyPay4x',\n [TxVariants.facilypay_6x]: 'FacilyPay6x',\n [TxVariants.facilypay_10x]: 'FacilyPay10x',\n [TxVariants.facilypay_12x]: 'FacilyPay12x',\n [TxVariants.ratepay]: 'RatePay',\n [TxVariants.ratepay_directdebit]: 'RatePayDirectDebit',\n /** Open Invoice */\n\n /** Wallets */\n [TxVariants.amazonpay]: 'AmazonPay',\n [TxVariants.applepay]: 'ApplePay',\n [TxVariants.cashapp]: 'CashAppPay',\n [TxVariants.clicktopay]: 'ClickToPay',\n [TxVariants.googlepay]: 'GooglePay',\n [TxVariants.paypal]: 'PayPal',\n [TxVariants.fastlane]: 'Fastlane',\n [TxVariants.paywithgoogle]: 'GooglePay',\n /** Wallets */\n\n /** Voucher */\n [TxVariants.boletobancario]: 'Boleto',\n [TxVariants.boletobancario_itau]: 'Boleto',\n [TxVariants.boletobancario_santander]: 'Boleto',\n [TxVariants.doku]: 'Doku',\n [TxVariants.doku_alfamart]: 'Doku',\n [TxVariants.doku_permata_lite_atm]: 'Doku',\n [TxVariants.doku_indomaret]: 'Doku',\n [TxVariants.doku_atm_mandiri_va]: 'Doku',\n [TxVariants.doku_sinarmas_va]: 'Doku',\n [TxVariants.doku_mandiri_va]: 'Doku',\n [TxVariants.doku_cimb_va]: 'Doku',\n [TxVariants.doku_danamon_va]: 'Doku',\n [TxVariants.doku_bri_va]: 'Doku',\n [TxVariants.doku_bni_va]: 'Doku',\n [TxVariants.doku_bca_va]: 'Doku',\n [TxVariants.doku_wallet]: 'Doku',\n [TxVariants.oxxo]: 'Oxxo',\n [TxVariants.primeiropay_boleto]: 'Boleto',\n /** Voucher */\n\n /** issuerList */\n [TxVariants.billdesk_online]: 'BillDeskOnline',\n [TxVariants.billdesk_wallet]: 'BillDeskWallet',\n [TxVariants.dotpay]: 'Dotpay',\n [TxVariants.eps]: 'Eps',\n [TxVariants.iris]: 'Iris',\n [TxVariants.molpay_ebanking_fpx_MY]: 'MolPayEBankingMY',\n [TxVariants.molpay_ebanking_TH]: 'MolPayEBankingTH',\n [TxVariants.molpay_ebanking_VN]: 'MolPayEBankingVN',\n [TxVariants.onlineBanking_CZ]: 'OnlineBankingCZ',\n [TxVariants.onlinebanking_IN]: 'OnlineBankingIN', // NOTE: the txVariant does have a lowercase \"b\"\n [TxVariants.onlineBanking_PL]: 'OnlineBankingPL',\n [TxVariants.onlineBanking_SK]: 'OnlineBankingSK',\n [TxVariants.paybybank]: 'PayByBank',\n [TxVariants.payu_IN_cashcard]: 'PayuCashcard',\n [TxVariants.payu_IN_nb]: 'PayuNetBanking',\n [TxVariants.wallet_IN]: 'WalletINElement',\n /** issuerList */\n\n /** Dragonpay */\n [TxVariants.dragonpay_ebanking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_non_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_philippines]: 'Dragonpay',\n /** Dragonpay */\n\n /** Econtext */\n [TxVariants.econtext_atm]: 'Econtext',\n [TxVariants.econtext_online]: 'Econtext',\n [TxVariants.econtext_seven_eleven]: 'Econtext',\n [TxVariants.econtext_stores]: 'Econtext',\n /** Econtext */\n\n /** Redirect */\n [TxVariants.giropay]: 'Giropay',\n [TxVariants.multibanco]: 'Multibanco',\n [TxVariants.redirect]: 'Redirect',\n [TxVariants.twint]: 'Twint',\n [TxVariants.vipps]: 'Vipps',\n [TxVariants.trustly]: 'Trustly',\n [TxVariants.paybybank_AIS_DD]: 'PayByBankUS',\n [TxVariants.riverty]: 'Riverty',\n [TxVariants.paybybank_pix]: 'PayByBankPix',\n /** Redirect */\n\n /** Klarna */\n [TxVariants.klarna]: 'Klarna',\n [TxVariants.klarna_account]: 'Klarna',\n [TxVariants.klarna_paynow]: 'Klarna',\n [TxVariants.klarna_b2b]: 'Klarna',\n /** Klarna */\n\n /** QRLoader */\n [TxVariants.bcmc_mobile]: 'BcmcMobile',\n [TxVariants.bcmc_mobile_QR]: 'BcmcMobile',\n [TxVariants.pix]: 'Pix',\n [TxVariants.swish]: 'Swish',\n [TxVariants.wechatpay]: 'WeChat',\n [TxVariants.wechatpayQR]: 'WeChat',\n [TxVariants.promptpay]: 'PromptPay',\n [TxVariants.paynow]: 'PayNow',\n [TxVariants.duitnow]: 'DuitNow',\n /** QRLoader */\n\n /** Await */\n [TxVariants.blik]: 'Blik',\n [TxVariants.mbway]: 'MBWay',\n [TxVariants.ancv]: 'ANCV',\n [TxVariants.payto]: 'PayTo',\n [TxVariants.upi]: 'UPI', // also QR\n [TxVariants.upi_qr]: 'UPI', // also QR\n [TxVariants.upi_collect]: 'UPI', // also QR\n [TxVariants.upi_intent]: 'UPI',\n /** Await */\n\n /** Giftcard */\n [TxVariants.giftcard]: 'Giftcard',\n [TxVariants.mealVoucher_FR_natixis]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_sodexo]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_groupeup]: 'MealVoucherFR'\n /** Giftcard */\n};\n\n/**\n * Returns the Component name based on the payment type\n * @param paymentType\n */\nfunction getComponentNameOfPaymentType(paymentType: string): string {\n return ComponentsNameMap[paymentType];\n}\n\nexport default getComponentNameOfPaymentType;\n"],"names":["ComponentsNameMap","TxVariants","address","donation","personal_details","bankTransfer_IBAN","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","bcmc","card","scheme","storedCard","customCard","ach","directdebit_GB","sepadirectdebit","eft_directdebit_CA","affirm","afterpay","afterpay_default","afterpay_b2b","atome","facilypay_3x","facilypay_4x","facilypay_6x","facilypay_10x","facilypay_12x","ratepay","ratepay_directdebit","amazonpay","applepay","cashapp","clicktopay","googlepay","paypal","fastlane","paywithgoogle","boletobancario","boletobancario_itau","boletobancario_santander","doku","doku_alfamart","doku_permata_lite_atm","doku_indomaret","doku_atm_mandiri_va","doku_sinarmas_va","doku_mandiri_va","doku_cimb_va","doku_danamon_va","doku_bri_va","doku_bni_va","doku_bca_va","doku_wallet","oxxo","primeiropay_boleto","billdesk_online","billdesk_wallet","dotpay","eps","iris","molpay_ebanking_fpx_MY","molpay_ebanking_TH","molpay_ebanking_VN","onlineBanking_CZ","onlinebanking_IN","onlineBanking_PL","onlineBanking_SK","paybybank","payu_IN_cashcard","payu_IN_nb","wallet_IN","dragonpay_ebanking","dragonpay_otc_banking","dragonpay_otc_non_banking","dragonpay_otc_philippines","econtext_atm","econtext_online","econtext_seven_eleven","econtext_stores","giropay","multibanco","redirect","twint","vipps","trustly","paybybank_AIS_DD","riverty","paybybank_pix","klarna","klarna_account","klarna_paynow","klarna_b2b","bcmc_mobile","bcmc_mobile_QR","pix","swish","wechatpay","wechatpayQR","promptpay","paynow","duitnow","blik","mbway","ancv","payto","upi","upi_qr","upi_collect","upi_intent","giftcard","mealVoucher_FR_natixis","mealVoucher_FR_sodexo","mealVoucher_FR_groupeup","getComponentNameOfPaymentType","paymentType"],"mappings":"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"}
1
+ {"version":3,"file":"components-name-map.js","sources":["../../../src/components/components-name-map.ts"],"sourcesContent":["import { TxVariants } from './tx-variants';\n\n/**\n * Maps each payment type with the string name of its Component element.\n *\n * It is used to give nicer error messages when creating components using Drop-in.\n * Example: paymentMethods response contains blik, but Blik component is not configured. So it warns that 'Blik' must be imported and added to the Drop-in configuration.\n */\nconst ComponentsNameMap = {\n /** internal */\n [TxVariants.address]: 'Address',\n [TxVariants.donation]: 'Donation',\n [TxVariants.personal_details]: 'PersonalDetails',\n /** internal */\n\n /** Bank Transfer */\n [TxVariants.bankTransfer_IBAN]: 'BankTransfer',\n [TxVariants.bankTransfer_BE]: 'BankTransfer',\n [TxVariants.bankTransfer_NL]: 'BankTransfer',\n [TxVariants.bankTransfer_PL]: 'BankTransfer',\n [TxVariants.bankTransfer_FR]: 'BankTransfer',\n [TxVariants.bankTransfer_CH]: 'BankTransfer',\n [TxVariants.bankTransfer_IE]: 'BankTransfer',\n [TxVariants.bankTransfer_GB]: 'BankTransfer',\n [TxVariants.bankTransfer_DE]: 'BankTransfer',\n /** Bank Transfer */\n\n /** Card */\n [TxVariants.bcmc]: 'Bancontact',\n [TxVariants.card]: 'Card',\n [TxVariants.scheme]: 'Card',\n [TxVariants.storedCard]: 'Card',\n [TxVariants.customCard]: 'CustomCard',\n /** Card */\n\n /** Direct debit */\n [TxVariants.ach]: 'Ach',\n [TxVariants.directdebit_GB]: 'BacsDirectDebit',\n [TxVariants.sepadirectdebit]: 'SepaDirectDebit',\n [TxVariants.eft_directdebit_CA]: 'PreAuthorizedDebitCanada',\n /** Direct debit */\n\n /** Open Invoice */\n [TxVariants.affirm]: 'Affirm',\n [TxVariants.afterpay]: 'AfterPay',\n [TxVariants.afterpay_default]: 'AfterPay',\n [TxVariants.afterpay_b2b]: 'AfterPayB2B',\n [TxVariants.atome]: 'Atome',\n [TxVariants.facilypay_3x]: 'FacilyPay3x',\n [TxVariants.facilypay_4x]: 'FacilyPay4x',\n [TxVariants.facilypay_6x]: 'FacilyPay6x',\n [TxVariants.facilypay_10x]: 'FacilyPay10x',\n [TxVariants.facilypay_12x]: 'FacilyPay12x',\n [TxVariants.ratepay]: 'RatePay',\n [TxVariants.ratepay_directdebit]: 'RatePayDirectDebit',\n /** Open Invoice */\n\n /** Wallets */\n [TxVariants.amazonpay]: 'AmazonPay',\n [TxVariants.applepay]: 'ApplePay',\n [TxVariants.cashapp]: 'CashAppPay',\n [TxVariants.clicktopay]: 'ClickToPay',\n [TxVariants.googlepay]: 'GooglePay',\n [TxVariants.paypal]: 'PayPal',\n [TxVariants.fastlane]: 'Fastlane',\n [TxVariants.paywithgoogle]: 'GooglePay',\n /** Wallets */\n\n /** Voucher */\n [TxVariants.boletobancario]: 'Boleto',\n [TxVariants.boletobancario_itau]: 'Boleto',\n [TxVariants.boletobancario_santander]: 'Boleto',\n [TxVariants.doku]: 'Doku',\n [TxVariants.doku_alfamart]: 'Doku',\n [TxVariants.doku_permata_lite_atm]: 'Doku',\n [TxVariants.doku_indomaret]: 'Doku',\n [TxVariants.doku_atm_mandiri_va]: 'Doku',\n [TxVariants.doku_sinarmas_va]: 'Doku',\n [TxVariants.doku_mandiri_va]: 'Doku',\n [TxVariants.doku_cimb_va]: 'Doku',\n [TxVariants.doku_danamon_va]: 'Doku',\n [TxVariants.doku_bri_va]: 'Doku',\n [TxVariants.doku_bni_va]: 'Doku',\n [TxVariants.doku_bca_va]: 'Doku',\n [TxVariants.doku_wallet]: 'Doku',\n [TxVariants.oxxo]: 'Oxxo',\n [TxVariants.primeiropay_boleto]: 'Boleto',\n /** Voucher */\n\n /** issuerList */\n [TxVariants.billdesk_online]: 'BillDeskOnline',\n [TxVariants.billdesk_wallet]: 'BillDeskWallet',\n [TxVariants.dotpay]: 'Dotpay',\n [TxVariants.eps]: 'Eps',\n [TxVariants.iris]: 'Iris',\n [TxVariants.molpay_ebanking_fpx_MY]: 'MolPayEBankingMY',\n [TxVariants.molpay_ebanking_TH]: 'MolPayEBankingTH',\n [TxVariants.molpay_ebanking_VN]: 'MolPayEBankingVN',\n [TxVariants.onlineBanking_CZ]: 'OnlineBankingCZ',\n [TxVariants.onlinebanking_IN]: 'OnlineBankingIN', // NOTE: the txVariant does have a lowercase \"b\"\n [TxVariants.onlineBanking_PL]: 'OnlineBankingPL',\n [TxVariants.onlineBanking_SK]: 'OnlineBankingSK',\n [TxVariants.paybybank]: 'PayByBank',\n [TxVariants.payu_IN_cashcard]: 'PayuCashcard',\n [TxVariants.payu_IN_nb]: 'PayuNetBanking',\n [TxVariants.wallet_IN]: 'WalletINElement',\n /** issuerList */\n\n /** Dragonpay */\n [TxVariants.dragonpay_ebanking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_non_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_philippines]: 'Dragonpay',\n /** Dragonpay */\n\n /** Econtext */\n [TxVariants.econtext_atm]: 'Econtext',\n [TxVariants.econtext_online]: 'Econtext',\n [TxVariants.econtext_seven_eleven]: 'Econtext',\n [TxVariants.econtext_stores]: 'Econtext',\n /** Econtext */\n\n /** Redirect */\n [TxVariants.giropay]: 'Giropay',\n [TxVariants.multibanco]: 'Multibanco',\n [TxVariants.redirect]: 'Redirect',\n [TxVariants.twint]: 'Twint',\n [TxVariants.vipps]: 'Vipps',\n [TxVariants.trustly]: 'Trustly',\n [TxVariants.paybybank_AIS_DD]: 'PayByBankUS',\n [TxVariants.riverty]: 'Riverty',\n [TxVariants.paybybank_pix]: 'PayByBankPix',\n /** Redirect */\n\n /** Klarna */\n [TxVariants.klarna]: 'Klarna',\n [TxVariants.klarna_account]: 'Klarna',\n [TxVariants.klarna_paynow]: 'Klarna',\n [TxVariants.klarna_b2b]: 'Klarna',\n /** Klarna */\n\n /** QRLoader */\n [TxVariants.bcmc_mobile]: 'BcmcMobile',\n [TxVariants.bcmc_mobile_QR]: 'BcmcMobile',\n [TxVariants.pix]: 'Pix',\n [TxVariants.swish]: 'Swish',\n [TxVariants.wechatpay]: 'WeChat',\n [TxVariants.wechatpayQR]: 'WeChat',\n [TxVariants.promptpay]: 'PromptPay',\n [TxVariants.paynow]: 'PayNow',\n [TxVariants.duitnow]: 'DuitNow',\n /** QRLoader */\n\n /** Await */\n [TxVariants.blik]: 'Blik',\n [TxVariants.mbway]: 'MBWay',\n [TxVariants.ancv]: 'ANCV',\n [TxVariants.payto]: 'PayTo',\n [TxVariants.upi]: 'UPI', // also QR\n [TxVariants.upi_qr]: 'UPI', // also QR\n [TxVariants.upi_intent]: 'UPI',\n /** Await */\n\n /** Giftcard */\n [TxVariants.giftcard]: 'Giftcard',\n [TxVariants.mealVoucher_FR_natixis]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_sodexo]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_groupeup]: 'MealVoucherFR'\n /** Giftcard */\n};\n\n/**\n * Returns the Component name based on the payment type\n * @param paymentType\n */\nfunction getComponentNameOfPaymentType(paymentType: string): string {\n return ComponentsNameMap[paymentType];\n}\n\nexport default getComponentNameOfPaymentType;\n"],"names":["ComponentsNameMap","TxVariants","address","donation","personal_details","bankTransfer_IBAN","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","bcmc","card","scheme","storedCard","customCard","ach","directdebit_GB","sepadirectdebit","eft_directdebit_CA","affirm","afterpay","afterpay_default","afterpay_b2b","atome","facilypay_3x","facilypay_4x","facilypay_6x","facilypay_10x","facilypay_12x","ratepay","ratepay_directdebit","amazonpay","applepay","cashapp","clicktopay","googlepay","paypal","fastlane","paywithgoogle","boletobancario","boletobancario_itau","boletobancario_santander","doku","doku_alfamart","doku_permata_lite_atm","doku_indomaret","doku_atm_mandiri_va","doku_sinarmas_va","doku_mandiri_va","doku_cimb_va","doku_danamon_va","doku_bri_va","doku_bni_va","doku_bca_va","doku_wallet","oxxo","primeiropay_boleto","billdesk_online","billdesk_wallet","dotpay","eps","iris","molpay_ebanking_fpx_MY","molpay_ebanking_TH","molpay_ebanking_VN","onlineBanking_CZ","onlinebanking_IN","onlineBanking_PL","onlineBanking_SK","paybybank","payu_IN_cashcard","payu_IN_nb","wallet_IN","dragonpay_ebanking","dragonpay_otc_banking","dragonpay_otc_non_banking","dragonpay_otc_philippines","econtext_atm","econtext_online","econtext_seven_eleven","econtext_stores","giropay","multibanco","redirect","twint","vipps","trustly","paybybank_AIS_DD","riverty","paybybank_pix","klarna","klarna_account","klarna_paynow","klarna_b2b","bcmc_mobile","bcmc_mobile_QR","pix","swish","wechatpay","wechatpayQR","promptpay","paynow","duitnow","blik","mbway","ancv","payto","upi","upi_qr","upi_intent","giftcard","mealVoucher_FR_natixis","mealVoucher_FR_sodexo","mealVoucher_FR_groupeup","getComponentNameOfPaymentType","paymentType"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{render as t}from"../../../external/preact/dist/preact.js";import e from"../../../utils/getProp.js";import r from"../../../utils/uuid.js";import o from"../../../core/Errors/AdyenCheckoutError.js";import{NO_CHECKOUT_ATTEMPT_ID as s}from"../../../core/Analytics/constants.js";import{on as n,off as i}from"../../../utils/listenerUtils.js";import{createSdkData as a}from"../../../utils/createSdkData.js";function h(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class u{buildElementProps(t){this.props=this.formatProps({...this.constructor.defaultProps,...t})}formatProps(t){return t}formatData(){return{}}submitAnalytics(t){return null}handleKeyPress(t){return null}setState(t){this.state={...this.state,...t}}get data(){const t=e(this.props,"modules.risk.data"),r=e(this.props,"modules.analytics.getCheckoutAttemptId")?.()??s,o=this.state.order||this.props.order,n=this.formatData(),i=a(r,t);return n.paymentMethod&&r&&(n.paymentMethod.checkoutAttemptId=r),n.paymentMethod&&i&&(n.paymentMethod.sdkData=i),{...t&&{riskData:{clientData:t}},...o&&{order:{orderData:o.orderData,pspReference:o.pspReference}},...n,clientStateDataIndicator:!0}}activate(){}render(){throw new Error("Payment method cannot be rendered.")}mount(e){const r="string"==typeof e?document.querySelector(e):e;if(!r)throw new Error("Component could not mount. Root node was not found.");return this._node&&this.unmount(),this._node=r,n(this._node,"keypress",this.handleKeyPress,!1),this._component=this.render(),t(this._component,r),this}update(t){return this.props=this.formatProps({...this.props,...t}),this.state={},this.unmount().mount(this._node)}unmount(){return i(this._node,"keypress",this.handleKeyPress),this._node&&t(null,this._node),this}remove(){this.unmount(),this.core&&this.core.remove(this)}constructor(t,e){h(this,"_id",`${this.constructor.type}-${r()}`),h(this,"core",void 0),h(this,"props",void 0),h(this,"state",{}),h(this,"_component",void 0),h(this,"_node",null);const s=function(t){return!!t&&("function"==typeof t.initialize&&"function"==typeof t.createFromAction)}(t);if(!s)throw new o("IMPLEMENTATION_ERROR",`Trying to initialise the component '${this.constructor.type}' without a reference to an instance of AdyenCheckout`);this.core=t,this.buildElementProps(e),this.handleKeyPress=this.handleKeyPress.bind(this)}}h(u,"defaultProps",{});export{u as default};
1
+ import{render as t}from"../../../external/preact/dist/preact.js";import e from"../../../utils/uuid.js";import r from"../../../core/Errors/AdyenCheckoutError.js";import{NO_CHECKOUT_ATTEMPT_ID as o}from"../../../core/Analytics/constants.js";import{on as s,off as n}from"../../../utils/listenerUtils.js";import{createSdkData as i}from"../../../utils/createSdkData.js";function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class h{buildElementProps(t){this.props=this.formatProps({...this.constructor.defaultProps,...t})}formatProps(t){return t}formatData(){return{}}submitAnalytics(t){return null}handleKeyPress(t){return null}setState(t){this.state={...this.state,...t}}get data(){const t=this.state.order||this.props.order,e=this.formatData(),r=this.core.modules.risk.data,s=this.core.modules.analytics.checkoutAttemptId??o,n=i(s,r);return e.paymentMethod&&s&&(e.paymentMethod.checkoutAttemptId=s),e.paymentMethod&&n&&(e.paymentMethod.sdkData=n),{...r&&{riskData:{clientData:r}},...t&&{order:{orderData:t.orderData,pspReference:t.pspReference}},...e,clientStateDataIndicator:!0}}activate(){}render(){throw new Error("Payment method cannot be rendered.")}mount(e){const r="string"==typeof e?document.querySelector(e):e;if(!r)throw new Error("Component could not mount. Root node was not found.");return this._node&&this.unmount(),this._node=r,s(this._node,"keypress",this.handleKeyPress,!1),this._component=this.render(),t(this._component,r),this}update(t){return this.props=this.formatProps({...this.props,...t}),this.state={},this.unmount().mount(this._node)}unmount(){return n(this._node,"keypress",this.handleKeyPress),this._node&&t(null,this._node),this}remove(){this.unmount(),this.core&&this.core.remove(this)}constructor(t,o){a(this,"_id",`${this.constructor.type}-${e()}`),a(this,"core",void 0),a(this,"props",void 0),a(this,"state",{}),a(this,"_component",void 0),a(this,"_node",null);const s=function(t){return!!t&&("function"==typeof t.initialize&&"function"==typeof t.createFromAction)}(t);if(!s)throw new r("IMPLEMENTATION_ERROR",`Trying to initialise the component '${this.constructor.type}' without a reference to an instance of AdyenCheckout`);this.core=t,this.buildElementProps(o),this.handleKeyPress=this.handleKeyPress.bind(this)}}a(h,"defaultProps",{});export{h as default};
2
2
  //# sourceMappingURL=BaseElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseElement.js","sources":["../../../../../src/components/internal/BaseElement/BaseElement.ts"],"sourcesContent":["import { ComponentChild, h, render } from 'preact';\nimport getProp from '../../../utils/getProp';\nimport uuid from '../../../utils/uuid';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { NO_CHECKOUT_ATTEMPT_ID } from '../../../core/Analytics/constants';\nimport type { ICore } from '../../../core/types';\nimport type { BaseElementProps, IBaseElement } from './types';\nimport type { PaymentData } from '../../../types/global-types';\nimport { off, on } from '../../../utils/listenerUtils';\nimport { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\nimport { createSdkData } from '../../../utils/createSdkData';\n\n/**\n * Verify if the first parameter is instance of Core.\n * We do not use 'instanceof' to avoid importing the Core class directly into this class.\n * @param checkout\n */\nfunction assertIsCoreInstance(checkout: ICore): checkout is ICore {\n if (!checkout) return false;\n const isCoreObject = typeof checkout.initialize === 'function' && typeof checkout.createFromAction === 'function';\n return isCoreObject;\n}\n\nabstract class BaseElement<P extends BaseElementProps> implements IBaseElement {\n public readonly _id = `${this.constructor['type']}-${uuid()}`;\n public readonly core: ICore;\n\n public props: P;\n public state: any = {};\n public _component;\n\n protected _node: HTMLElement = null;\n\n protected static defaultProps = {};\n\n constructor(checkout: ICore, props?: P) {\n const isCoreInstance = assertIsCoreInstance(checkout);\n\n if (!isCoreInstance) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `Trying to initialise the component '${this.constructor['type']}' without a reference to an instance of AdyenCheckout`\n );\n }\n\n this.core = checkout;\n this.buildElementProps(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n }\n\n protected buildElementProps(componentProps?: P) {\n this.props = this.formatProps({ ...this.constructor['defaultProps'], ...componentProps });\n }\n\n /**\n * Executed during creation of any payment element.\n * Gives a chance to any paymentMethod to format the props we're receiving.\n */\n protected formatProps(props: P) {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for the /payments request\n */\n protected formatData(): any {\n return {};\n }\n\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj?: AbstractAnalyticsEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected handleKeyPress(e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) {\n return null;\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component payment data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n public get data(): PaymentData {\n // first one used for the clientData field in the payment request\n const clientData = getProp(this.props, 'modules.risk.data');\n const checkoutAttemptId = getProp(this.props, 'modules.analytics.getCheckoutAttemptId')?.() ?? NO_CHECKOUT_ATTEMPT_ID; // NOTE: we never expect to see this \"failed\" value, but, just in case...\n const order = this.state.order || this.props.order;\n const componentData = this.formatData();\n\n const sdkData = createSdkData(checkoutAttemptId, clientData);\n\n if (componentData.paymentMethod && checkoutAttemptId) {\n componentData.paymentMethod.checkoutAttemptId = checkoutAttemptId;\n }\n\n if (componentData.paymentMethod && sdkData) {\n componentData.paymentMethod.sdkData = sdkData;\n }\n\n return {\n ...(clientData && { riskData: { clientData } }),\n ...(order && { order: { orderData: order.orderData, pspReference: order.pspReference } }),\n ...componentData,\n clientStateDataIndicator: true\n };\n }\n\n /**\n * Method used to make the payment method active\n * (Useful when there are different payment methods available and activating one PM must trigger a specific task)\n */\n public activate(): void {\n return;\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Payment method cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the payment element\n * @returns this - the payment element instance we mounted\n */\n public mount(domNode: HTMLElement | string): this {\n const node = typeof domNode === 'string' ? document.querySelector<HTMLElement>(domNode) : domNode;\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n }\n\n this._node = node;\n\n // Add listener for key press events, notably 'Enter' key presses\n on(this._node, 'keypress', this.handleKeyPress, false);\n\n this._component = this.render();\n\n render(this._component, node);\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: Partial<P>): this {\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n }\n\n /**\n * Unmounts a payment element from the DOM\n */\n public unmount(): this {\n // Remove listener\n off(this._node, 'keypress', this.handleKeyPress);\n\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this.core) {\n this.core.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n"],"names":["BaseElement","buildElementProps","componentProps","this","props","formatProps","constructor","formatData","submitAnalytics","analyticsObj","handleKeyPress","e","setState","newState","state","data","clientData","getProp","checkoutAttemptId","NO_CHECKOUT_ATTEMPT_ID","order","componentData","sdkData","createSdkData","paymentMethod","riskData","orderData","pspReference","clientStateDataIndicator","activate","render","Error","mount","domNode","node","document","querySelector","_node","unmount","on","_component","update","off","remove","core","checkout","_define_property","_id","uuid","isCoreInstance","initialize","createFromAction","assertIsCoreInstance","AdyenCheckoutError","bind","defaultProps"],"mappings":"8gBAuBA,MAAeA,EA4BDC,iBAAAA,CAAkBC,GACxBC,KAAKC,MAAQD,KAAKE,YAAY,IAAKF,KAAKG,YAAY,gBAAoBJ,GAC5E,CAMUG,WAAAA,CAAYD,GAClB,OAAOA,CACX,CAMA,UAAAG,GACI,MAAO,CAAA,CACX,CAGUC,eAAAA,CAAgBC,GACtB,OAAO,IACX,CAGUC,cAAAA,CAAeC,GACrB,OAAO,IACX,CAEUC,QAAAA,CAASC,GACfV,KAAKW,MAAQ,IAAKX,KAAKW,SAAUD,EACrC,CAMA,QAAWE,GAEP,MAAMC,EAAaC,EAAQd,KAAKC,MAAO,qBACjCc,EAAoBD,EAAQd,KAAKC,MAAO,yCAApBa,MAAqEE,EACzFC,EAAQjB,KAAKW,MAAMM,OAASjB,KAAKC,MAAMgB,MACvCC,EAAgBlB,KAAKI,aAErBe,EAAUC,EAAcL,EAAmBF,GAUjD,OARIK,EAAcG,eAAiBN,IAC/BG,EAAcG,cAAcN,kBAAoBA,GAGhDG,EAAcG,eAAiBF,IAC/BD,EAAcG,cAAcF,QAAUA,GAGnC,IACCN,GAAc,CAAES,SAAU,CAAET,kBAC5BI,GAAS,CAAEA,MAAO,CAAEM,UAAWN,EAAMM,UAAWC,aAAcP,EAAMO,kBACrEN,EACHO,0BAA0B,EAElC,CAMA,QAAAC,GAEA,CAEOC,MAAAA,GAEH,MAAM,IAAIC,MAAM,qCACpB,CAOOC,KAAAA,CAAMC,GACT,MAAMC,EAA0B,iBAAZD,EAAuBE,SAASC,cAA2BH,GAAWA,EAE1F,IAAKC,EACD,MAAM,IAAIH,MAAM,uDAgBpB,OAbI5B,KAAKkC,OACLlC,KAAKmC,UAGTnC,KAAKkC,MAAQH,EAGbK,EAAGpC,KAAKkC,MAAO,WAAYlC,KAAKO,gBAAgB,GAEhDP,KAAKqC,WAAarC,KAAK2B,SAEvBA,EAAO3B,KAAKqC,WAAYN,GAEjB/B,IACX,CAQOsC,MAAAA,CAAOrC,GAIV,OAHAD,KAAKC,MAAQD,KAAKE,YAAY,IAAKF,KAAKC,SAAUA,IAClDD,KAAKW,MAAQ,CAAA,EAENX,KAAKmC,UAAUN,MAAM7B,KAAKkC,MACrC,CAKA,OAAAC,GAQI,OANAI,EAAIvC,KAAKkC,MAAO,WAAYlC,KAAKO,gBAE7BP,KAAKkC,OACLP,EAAO,KAAM3B,KAAKkC,OAGflC,IACX,CAMA,MAAAwC,GACIxC,KAAKmC,UAEDnC,KAAKyC,MACLzC,KAAKyC,KAAKD,OAAOxC,KAEzB,CA7JA,WAAAG,CAAYuC,EAAiBzC,GAX7B0C,EAAA3C,KAAgB4C,MAAM,GAAG5C,KAAKG,YAAY,QAAW0C,OACrDF,EAAA3C,KAAgByC,YAAhB,GAEAE,EAAA3C,KAAOC,aAAP,GACA0C,EAAA3C,KAAOW,QAAa,IACpBgC,EAAA3C,KAAOqC,kBAAP,GAEAM,EAAA3C,KAAUkC,QAAqB,MAK3B,MAAMY,EAnBd,SAA8BJ,GAC1B,QAAKA,IAC+C,mBAAxBA,EAASK,YAAkE,mBAA9BL,EAASM,iBAEtF,CAe+BC,CAAqBP,GAE5C,IAAKI,EACD,MAAM,IAAII,EACN,uBACA,uCAAuClD,KAAKG,YAAY,6DAIhEH,KAAKyC,KAAOC,EACZ1C,KAAKF,kBAAkBG,GAEvBD,KAAKO,eAAiBP,KAAKO,eAAe4C,KAAKnD,KACnD,EAhBA2C,EAVW9C,EAUMuD,eAAe"}
1
+ {"version":3,"file":"BaseElement.js","sources":["../../../../../src/components/internal/BaseElement/BaseElement.ts"],"sourcesContent":["import { ComponentChild, h, render } from 'preact';\nimport uuid from '../../../utils/uuid';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { NO_CHECKOUT_ATTEMPT_ID } from '../../../core/Analytics/constants';\nimport type { ICore } from '../../../core/types';\nimport type { BaseElementProps, IBaseElement } from './types';\nimport type { PaymentData } from '../../../types/global-types';\nimport { off, on } from '../../../utils/listenerUtils';\nimport { AbstractAnalyticsEvent } from '../../../core/Analytics/events/AbstractAnalyticsEvent';\nimport { createSdkData } from '../../../utils/createSdkData';\n\n/**\n * Verify if the first parameter is instance of Core.\n * We do not use 'instanceof' to avoid importing the Core class directly into this class.\n * @param checkout\n */\nfunction assertIsCoreInstance(checkout: ICore): checkout is ICore {\n if (!checkout) return false;\n const isCoreObject = typeof checkout.initialize === 'function' && typeof checkout.createFromAction === 'function';\n return isCoreObject;\n}\n\nabstract class BaseElement<P extends BaseElementProps> implements IBaseElement {\n public readonly _id = `${this.constructor['type']}-${uuid()}`;\n public readonly core: ICore;\n\n public props: P;\n public state: any = {};\n public _component;\n\n protected _node: HTMLElement = null;\n\n protected static defaultProps = {};\n\n constructor(checkout: ICore, props?: P) {\n const isCoreInstance = assertIsCoreInstance(checkout);\n\n if (!isCoreInstance) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n `Trying to initialise the component '${this.constructor['type']}' without a reference to an instance of AdyenCheckout`\n );\n }\n\n this.core = checkout;\n this.buildElementProps(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n }\n\n protected buildElementProps(componentProps?: P) {\n this.props = this.formatProps({ ...this.constructor['defaultProps'], ...componentProps });\n }\n\n /**\n * Executed during creation of any payment element.\n * Gives a chance to any paymentMethod to format the props we're receiving.\n */\n protected formatProps(props: P) {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for the /payments request\n */\n protected formatData(): any {\n return {};\n }\n\n /* eslint-disable-next-line */\n protected submitAnalytics(analyticsObj?: AbstractAnalyticsEvent) {\n return null;\n }\n\n /* eslint-disable-next-line */\n protected handleKeyPress(e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) {\n return null;\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component payment data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n public get data(): PaymentData {\n const order = this.state.order || this.props.order;\n const componentData = this.formatData();\n\n const clientData = this.core.modules.risk.data;\n const checkoutAttemptId = this.core.modules.analytics.checkoutAttemptId ?? NO_CHECKOUT_ATTEMPT_ID;\n\n const sdkData = createSdkData(checkoutAttemptId, clientData);\n\n if (componentData.paymentMethod && checkoutAttemptId) {\n componentData.paymentMethod.checkoutAttemptId = checkoutAttemptId;\n }\n\n if (componentData.paymentMethod && sdkData) {\n componentData.paymentMethod.sdkData = sdkData;\n }\n\n return {\n ...(clientData && { riskData: { clientData } }),\n ...(order && { order: { orderData: order.orderData, pspReference: order.pspReference } }),\n ...componentData,\n clientStateDataIndicator: true\n };\n }\n\n /**\n * Method used to make the payment method active\n * (Useful when there are different payment methods available and activating one PM must trigger a specific task)\n */\n public activate(): void {\n return;\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Payment method cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the payment element\n * @returns this - the payment element instance we mounted\n */\n public mount(domNode: HTMLElement | string): this {\n const node = typeof domNode === 'string' ? document.querySelector<HTMLElement>(domNode) : domNode;\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n }\n\n this._node = node;\n\n // Add listener for key press events, notably 'Enter' key presses\n on(this._node, 'keypress', this.handleKeyPress, false);\n\n this._component = this.render();\n\n render(this._component, node);\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n *\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: Partial<P>): this {\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n }\n\n /**\n * Unmounts a payment element from the DOM\n */\n public unmount(): this {\n // Remove listener\n off(this._node, 'keypress', this.handleKeyPress);\n\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this.core) {\n this.core.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n"],"names":["BaseElement","buildElementProps","componentProps","this","props","formatProps","constructor","formatData","submitAnalytics","analyticsObj","handleKeyPress","e","setState","newState","state","data","order","componentData","clientData","core","modules","risk","checkoutAttemptId","analytics","NO_CHECKOUT_ATTEMPT_ID","sdkData","createSdkData","paymentMethod","riskData","orderData","pspReference","clientStateDataIndicator","activate","render","Error","mount","domNode","node","document","querySelector","_node","unmount","on","_component","update","off","remove","checkout","_define_property","_id","uuid","isCoreInstance","initialize","createFromAction","assertIsCoreInstance","AdyenCheckoutError","bind","defaultProps"],"mappings":"qeAsBA,MAAeA,EA4BDC,iBAAAA,CAAkBC,GACxBC,KAAKC,MAAQD,KAAKE,YAAY,IAAKF,KAAKG,YAAY,gBAAoBJ,GAC5E,CAMUG,WAAAA,CAAYD,GAClB,OAAOA,CACX,CAMA,UAAAG,GACI,MAAO,CAAA,CACX,CAGUC,eAAAA,CAAgBC,GACtB,OAAO,IACX,CAGUC,cAAAA,CAAeC,GACrB,OAAO,IACX,CAEUC,QAAAA,CAASC,GACfV,KAAKW,MAAQ,IAAKX,KAAKW,SAAUD,EACrC,CAMA,QAAWE,GACP,MAAMC,EAAQb,KAAKW,MAAME,OAASb,KAAKC,MAAMY,MACvCC,EAAgBd,KAAKI,aAErBW,EAAaf,KAAKgB,KAAKC,QAAQC,KAAKN,KACpCO,EAAoBnB,KAAKgB,KAAKC,QAAQG,UAAUD,mBAAqBE,EAErEC,EAAUC,EAAcJ,EAAmBJ,GAUjD,OARID,EAAcU,eAAiBL,IAC/BL,EAAcU,cAAcL,kBAAoBA,GAGhDL,EAAcU,eAAiBF,IAC/BR,EAAcU,cAAcF,QAAUA,GAGnC,IACCP,GAAc,CAAEU,SAAU,CAAEV,kBAC5BF,GAAS,CAAEA,MAAO,CAAEa,UAAWb,EAAMa,UAAWC,aAAcd,EAAMc,kBACrEb,EACHc,0BAA0B,EAElC,CAMA,QAAAC,GAEA,CAEOC,MAAAA,GAEH,MAAM,IAAIC,MAAM,qCACpB,CAOOC,KAAAA,CAAMC,GACT,MAAMC,EAA0B,iBAAZD,EAAuBE,SAASC,cAA2BH,GAAWA,EAE1F,IAAKC,EACD,MAAM,IAAIH,MAAM,uDAgBpB,OAbI/B,KAAKqC,OACLrC,KAAKsC,UAGTtC,KAAKqC,MAAQH,EAGbK,EAAGvC,KAAKqC,MAAO,WAAYrC,KAAKO,gBAAgB,GAEhDP,KAAKwC,WAAaxC,KAAK8B,SAEvBA,EAAO9B,KAAKwC,WAAYN,GAEjBlC,IACX,CAQOyC,MAAAA,CAAOxC,GAIV,OAHAD,KAAKC,MAAQD,KAAKE,YAAY,IAAKF,KAAKC,SAAUA,IAClDD,KAAKW,MAAQ,CAAA,EAENX,KAAKsC,UAAUN,MAAMhC,KAAKqC,MACrC,CAKA,OAAAC,GAQI,OANAI,EAAI1C,KAAKqC,MAAO,WAAYrC,KAAKO,gBAE7BP,KAAKqC,OACLP,EAAO,KAAM9B,KAAKqC,OAGfrC,IACX,CAMA,MAAA2C,GACI3C,KAAKsC,UAEDtC,KAAKgB,MACLhB,KAAKgB,KAAK2B,OAAO3C,KAEzB,CA7JA,WAAAG,CAAYyC,EAAiB3C,GAX7B4C,EAAA7C,KAAgB8C,MAAM,GAAG9C,KAAKG,YAAY,QAAW4C,OACrDF,EAAA7C,KAAgBgB,YAAhB,GAEA6B,EAAA7C,KAAOC,aAAP,GACA4C,EAAA7C,KAAOW,QAAa,IACpBkC,EAAA7C,KAAOwC,kBAAP,GAEAK,EAAA7C,KAAUqC,QAAqB,MAK3B,MAAMW,EAnBd,SAA8BJ,GAC1B,QAAKA,IAC+C,mBAAxBA,EAASK,YAAkE,mBAA9BL,EAASM,iBAEtF,CAe+BC,CAAqBP,GAE5C,IAAKI,EACD,MAAM,IAAII,EACN,uBACA,uCAAuCpD,KAAKG,YAAY,6DAIhEH,KAAKgB,KAAO4B,EACZ5C,KAAKF,kBAAkBG,GAEvBD,KAAKO,eAAiBP,KAAKO,eAAe8C,KAAKrD,KACnD,EAhBA6C,EAVWhD,EAUMyD,eAAe"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{getTimeDifference as t}from"./utils.js";import{useRef as s,useState as n,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import{useCountdownA11yReporter as a}from"./useCountdownA11yReporter.js";function r({minutesFromNow:r,onTick:c=()=>{},onCompleted:m=()=>{}}){const u=s((e=>{const t=6e4*e,s=(new Date).getTime();return{startTime:new Date(s),endTime:new Date(s+t)}})(r)),{startTime:i,endTime:p}=u.current,[d,l]=n({minutes:"-",seconds:"-",percentage:0});return a(d),o(()=>{const e=setInterval(()=>{const{minutes:e,seconds:s,percentage:n,completed:o}=t(i,p);if(o)m();else{const t={minutes:e,seconds:s,percentage:n};l(t),c(t)}},1e3);return()=>{clearInterval(e)}},[]),e("span",{className:"adyen-checkout__countdown",role:"timer"},e("span",{className:"countdown__minutes"},d.minutes),e("span",{className:"countdown__separator"},":"),e("span",{className:"countdown__seconds"},d.seconds))}export{r as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{getTimeDifference as t}from"./utils.js";import{useRef as s,useState as n,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import{useCountdownA11yReporter as a}from"./useCountdownA11yReporter.js";function r({minutesFromNow:r,onTick:c=()=>{},onCompleted:m=()=>{}}){const u=s((e=>{const t=6e4*e,s=(new Date).getTime();return{startTime:new Date(s),endTime:new Date(s+t)}})(r)),{startTime:i,endTime:p}=u.current,[d,l]=n({minutes:"--",seconds:"--",percentage:0});return a(d),o(()=>{const e=setInterval(()=>{const{minutes:e,seconds:s,percentage:n,completed:o}=t(i,p);if(o)m();else{const t={minutes:e,seconds:s,percentage:n};l(t),c(t)}},1e3);return()=>{clearInterval(e)}},[]),e("span",{className:"adyen-checkout__countdown",role:"timer"},e("span",{className:"countdown__minutes"},d.minutes),e("span",{className:"countdown__separator"},":"),e("span",{className:"countdown__seconds"},d.seconds))}export{r as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/internal/Countdown/index.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { getTimeDifference } from './utils';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { CountdownProps, CountdownTime } from './types';\nimport { useCountdownA11yReporter } from './useCountdownA11yReporter';\n\nconst calculateStartAndEndTime = (minutesFromNow: number) => {\n const secondsFromNow = minutesFromNow * 60000;\n const nowTime = new Date().getTime();\n return { startTime: new Date(nowTime), endTime: new Date(nowTime + secondsFromNow) };\n};\n\nfunction Countdown({ minutesFromNow, onTick = () => {}, onCompleted = () => {} }: CountdownProps) {\n const startAndEndTime = useRef(calculateStartAndEndTime(minutesFromNow));\n const { startTime, endTime } = startAndEndTime.current;\n const [time, setTime] = useState<CountdownTime>({\n minutes: '-',\n seconds: '-',\n percentage: 0\n });\n useCountdownA11yReporter(time);\n\n useEffect(() => {\n const tick = () => {\n const { minutes, seconds, percentage, completed } = getTimeDifference(startTime, endTime);\n if (completed) {\n onCompleted();\n } else {\n const timeLeft = { minutes, seconds, percentage };\n setTime(timeLeft);\n onTick(timeLeft);\n }\n };\n const interval = setInterval(tick, 1000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n <span className=\"adyen-checkout__countdown\" role=\"timer\">\n <span className=\"countdown__minutes\">{time.minutes}</span>\n <span className=\"countdown__separator\">:</span>\n <span className=\"countdown__seconds\">{time.seconds}</span>\n </span>\n );\n}\n\nexport default Countdown;\n"],"names":["Countdown","minutesFromNow","onTick","onCompleted","startAndEndTime","useRef","secondsFromNow","nowTime","Date","getTime","startTime","endTime","calculateStartAndEndTime","current","time","setTime","useState","minutes","seconds","percentage","useCountdownA11yReporter","useEffect","interval","setInterval","completed","getTimeDifference","timeLeft","clearInterval","h","span","className","role"],"mappings":"mSAYA,SAASA,GAAUC,eAAEA,EAAcC,OAAEA,EAAS,OAAQC,YAAEA,EAAc,SAClE,MAAMC,EAAkBC,EAPK,CAACJ,IAC9B,MAAMK,EAAkC,IAAjBL,EACjBM,GAAU,IAAIC,MAAOC,UAC3B,MAAO,CAAEC,UAAW,IAAIF,KAAKD,GAAUI,QAAS,IAAIH,KAAKD,EAAUD,KAIpCM,CAAyBX,KAClDS,UAAEA,EAASC,QAAEA,GAAYP,EAAgBS,SACxCC,EAAMC,GAAWC,EAAwB,CAC5CC,QAAS,IACTC,QAAS,IACTC,WAAY,IAsBhB,OApBAC,EAAyBN,GAEzBO,EAAU,KACN,MAUMC,EAAWC,YAVJ,KACT,MAAMN,QAAEA,EAAOC,QAAEA,EAAOC,WAAEA,EAAUK,UAAEA,GAAcC,EAAkBf,EAAWC,GACjF,GAAIa,EACArB,QACG,CACH,MAAMuB,EAAW,CAAET,UAASC,UAASC,cACrCJ,EAAQW,GACRxB,EAAOwB,EACX,GAE+B,KAEnC,MAAO,KACHC,cAAcL,KAEnB,IAGCM,EAACC,OAAAA,CAAKC,UAAU,4BAA4BC,KAAK,SAC7CH,EAACC,OAAAA,CAAKC,UAAU,sBAAsBhB,EAAKG,SAC3CW,EAACC,OAAAA,CAAKC,UAAU,wBAAuB,KACvCF,EAACC,OAAAA,CAAKC,UAAU,sBAAsBhB,EAAKI,SAGvD"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/internal/Countdown/index.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { getTimeDifference } from './utils';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { CountdownProps, CountdownTime } from './types';\nimport { useCountdownA11yReporter } from './useCountdownA11yReporter';\n\nconst calculateStartAndEndTime = (minutesFromNow: number) => {\n const secondsFromNow = minutesFromNow * 60000;\n const nowTime = new Date().getTime();\n return { startTime: new Date(nowTime), endTime: new Date(nowTime + secondsFromNow) };\n};\n\nfunction Countdown({ minutesFromNow, onTick = () => {}, onCompleted = () => {} }: CountdownProps) {\n const startAndEndTime = useRef(calculateStartAndEndTime(minutesFromNow));\n const { startTime, endTime } = startAndEndTime.current;\n const [time, setTime] = useState<CountdownTime>({\n minutes: '--',\n seconds: '--',\n percentage: 0\n });\n useCountdownA11yReporter(time);\n\n useEffect(() => {\n const tick = () => {\n const { minutes, seconds, percentage, completed } = getTimeDifference(startTime, endTime);\n if (completed) {\n onCompleted();\n } else {\n const timeLeft = { minutes, seconds, percentage };\n setTime(timeLeft);\n onTick(timeLeft);\n }\n };\n const interval = setInterval(tick, 1000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n <span className=\"adyen-checkout__countdown\" role=\"timer\">\n <span className=\"countdown__minutes\">{time.minutes}</span>\n <span className=\"countdown__separator\">:</span>\n <span className=\"countdown__seconds\">{time.seconds}</span>\n </span>\n );\n}\n\nexport default Countdown;\n"],"names":["Countdown","minutesFromNow","onTick","onCompleted","startAndEndTime","useRef","secondsFromNow","nowTime","Date","getTime","startTime","endTime","calculateStartAndEndTime","current","time","setTime","useState","minutes","seconds","percentage","useCountdownA11yReporter","useEffect","interval","setInterval","completed","getTimeDifference","timeLeft","clearInterval","h","span","className","role"],"mappings":"mSAYA,SAASA,GAAUC,eAAEA,EAAcC,OAAEA,EAAS,OAAQC,YAAEA,EAAc,SAClE,MAAMC,EAAkBC,EAPK,CAACJ,IAC9B,MAAMK,EAAkC,IAAjBL,EACjBM,GAAU,IAAIC,MAAOC,UAC3B,MAAO,CAAEC,UAAW,IAAIF,KAAKD,GAAUI,QAAS,IAAIH,KAAKD,EAAUD,KAIpCM,CAAyBX,KAClDS,UAAEA,EAASC,QAAEA,GAAYP,EAAgBS,SACxCC,EAAMC,GAAWC,EAAwB,CAC5CC,QAAS,KACTC,QAAS,KACTC,WAAY,IAsBhB,OApBAC,EAAyBN,GAEzBO,EAAU,KACN,MAUMC,EAAWC,YAVJ,KACT,MAAMN,QAAEA,EAAOC,QAAEA,EAAOC,WAAEA,EAAUK,UAAEA,GAAcC,EAAkBf,EAAWC,GACjF,GAAIa,EACArB,QACG,CACH,MAAMuB,EAAW,CAAET,UAASC,UAASC,cACrCJ,EAAQW,GACRxB,EAAOwB,EACX,GAE+B,KAEnC,MAAO,KACHC,cAAcL,KAEnB,IAGCM,EAACC,OAAAA,CAAKC,UAAU,4BAA4BC,KAAK,SAC7CH,EAACC,OAAAA,CAAKC,UAAU,sBAAsBhB,EAAKG,SAC3CW,EAACC,OAAAA,CAAKC,UAAU,wBAAuB,KACvCF,EAACC,OAAAA,CAAKC,UAAU,sBAAsBhB,EAAKI,SAGvD"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import{usePaymentStatusTimer as o}from"../../../hooks/usePaymentStatusTimer/usePaymentStatusTimer.js";import{DEFAULT_PAYMENT_STATUS_TIMER_THROTTLE_INTERVAL_MS as r,DEFAULT_PAYMENT_STATUS_TIMER_THROTTLE_TIME_MS as a,DEFAULT_PAYMENT_STATUS_TIMER_DELAY_MS as n,DEFAULT_PAYMENT_STATUS_TIMER_COUNTDOWN_TIME_MIN as i}from"../../../hooks/usePaymentStatusTimer/constants.js";import c from"../../../utils/useAutoFocus.js";import l from"../Button/Button.js";import s from"../ContentSeparator/ContentSeparator.js";import{AnalyticsInfoEvent as d,UiTarget as m,InfoEventType as p}from"../../../core/Analytics/events/AnalyticsInfoEvent.js";import u from"../Spinner/Spinner.js";import{QRDetails as y}from"./components/QRDetails.js";import{QRFinalState as _}from"./components/QRFinalState.js";import{QRLoaderDetailsProvider as h}from"./QRLoaderDetailsProvider.js";import{redirectToApp as g}from"../../../utils/urls.js";function f(r){const{i18n:a,loadingContext:n}=t(),{state:i,actions:f}=o({loadingContext:n,paymentData:r.paymentData,clientKey:r.clientKey,delay:r.delay,throttleTime:r.throttleTime,throttleInterval:r.throttledInterval,type:r.type,onError:r.onError,onComplete:r.onComplete,onActionHandled:r.onActionHandled}),{completed:q,expired:C,loading:k,percentage:b}=i,{onTick:T,onTimeUp:v}=f,{amount:j,showAmount:N,url:w,brandLogo:A,brandName:D,countdownTime:I,type:P,onActionHandled:S}=r,x=r.qrCodeData?`${n}utility/v1/barcode.png?type=qrCode&data=${r.qrCodeData}&clientKey=${r.clientKey}`:r.qrCodeImage,$=c();if(C)return e(_,{image:"error",message:a.get("error.subtitle.payment")});if(q)return e(_,{image:"success",message:a.get("creditCard.success")});if(k)return e("div",{className:"adyen-checkout__qr-loader"},A&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{alt:D,src:A,className:"adyen-checkout__qr-loader__brand-logo"})),e(u,null));const B=r.classNameModifiers.map(e=>`adyen-checkout__qr-loader--${e}`);return e("div",{className:`adyen-checkout__qr-loader adyen-checkout__qr-loader--${P} ${B.join(" ")}`},A&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{src:A,alt:D,className:"adyen-checkout__qr-loader__brand-logo"})),N&&j&&null!==j.value&&!!j.currency&&e("h1",{className:"adyen-checkout__qr-loader__payment_amount"},a.amount(j.value,j.currency)),w&&e("div",{className:"adyen-checkout__qr-loader__app-link"},r.redirectIntroduction&&e("p",{className:"adyen-checkout__qr-loader__subtitle"},a.get(r.redirectIntroduction)),e(l,{classNameModifiers:["qr-loader"],onClick:()=>g(w),label:a.get(r.buttonLabel)}),e(s,null)),e("p",{ref:$,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},"string"==typeof r.introduction?a.get(r.introduction):r.introduction?.()),e(h,{qrCodeImage:x,qrCodeData:r.qrCodeData,percentage:b,timeToPay:r.timeToPay,copyBtn:r.copyBtn,instructions:r.instructions,countdownTime:I,onTick:e=>T(e),onQRCodeLoad:()=>{S?.({componentType:r.type,actionDescription:"qr-code-loaded"})},onTimeUp:()=>v(),handleCopy:()=>{const e=new d({component:r.type,type:p.download,target:m.qrDownloadButton});r.onSubmitAnalytics(e)}},r.children?r.children:e(y,null)))}f.defaultProps={countdownTime:i,delay:n,throttleTime:a,throttledInterval:r,onError:()=>{},onComplete:()=>{},classNameModifiers:[],introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp",showAmount:!0};export{f as QRLoader};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import{usePaymentStatusTimer as o}from"../../../hooks/usePaymentStatusTimer/usePaymentStatusTimer.js";import{DEFAULT_PAYMENT_STATUS_TIMER_THROTTLE_INTERVAL_MS as r,DEFAULT_PAYMENT_STATUS_TIMER_THROTTLE_TIME_MS as a,DEFAULT_PAYMENT_STATUS_TIMER_DELAY_MS as n,DEFAULT_PAYMENT_STATUS_TIMER_COUNTDOWN_TIME_MIN as i}from"../../../hooks/usePaymentStatusTimer/constants.js";import c from"../../../utils/useAutoFocus.js";import d from"../Button/Button.js";import l from"../ContentSeparator/ContentSeparator.js";import{AnalyticsInfoEvent as s,UiTarget as m,InfoEventType as p}from"../../../core/Analytics/events/AnalyticsInfoEvent.js";import u from"../Spinner/Spinner.js";import{QRDetails as y}from"./components/QRDetails.js";import{QRFinalState as _}from"./components/QRFinalState.js";import{QRLoaderDetailsProvider as h}from"./QRLoaderDetailsProvider.js";import{redirectToApp as g}from"../../../utils/urls.js";function f(r){const{i18n:a,loadingContext:n}=t(),{state:i,actions:f}=o({loadingContext:n,paymentData:r.paymentData,clientKey:r.clientKey,delay:r.delay,throttleTime:r.throttleTime,throttleInterval:r.throttledInterval,type:r.type,onError:r.onError,onComplete:r.onComplete,onActionHandled:r.onActionHandled}),{completed:q,expired:C,loading:k,percentage:b}=i,{onTick:T,onTimeUp:v}=f,{amount:j,showAmount:N,url:w,brandLogo:A,brandName:D,countdownTime:I,type:P,onActionHandled:S}=r,x=r.qrCodeData?`${n}utility/v1/barcode.png?type=qrCode&data=${r.qrCodeData}&clientKey=${r.clientKey}`:r.qrCodeImage,$=c();if(C)return e(_,{image:"error",message:a.get("error.subtitle.payment")});if(q)return e(_,{image:"success",message:a.get("creditCard.success")});if(k)return e("div",{className:"adyen-checkout__qr-loader"},A&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{alt:D,src:A,className:"adyen-checkout__qr-loader__brand-logo"})),e(u,null));const B=r.classNameModifiers.map(e=>`adyen-checkout__qr-loader--${e}`);return e("div",{className:`adyen-checkout__qr-loader adyen-checkout__qr-loader--${P} ${B.join(" ")}`,"data-testid":`${P}-qr-loader`},A&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{src:A,alt:D,className:"adyen-checkout__qr-loader__brand-logo"})),N&&j&&null!==j.value&&!!j.currency&&e("h1",{className:"adyen-checkout__qr-loader__payment_amount"},a.amount(j.value,j.currency)),w&&e("div",{className:"adyen-checkout__qr-loader__app-link"},r.redirectIntroduction&&e("p",{className:"adyen-checkout__qr-loader__subtitle"},a.get(r.redirectIntroduction)),e(d,{classNameModifiers:["qr-loader"],onClick:()=>g(w),label:a.get(r.buttonLabel)}),e(l,null)),e("p",{ref:$,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},"string"==typeof r.introduction?a.get(r.introduction):r.introduction?.()),e(h,{type:P,qrCodeImage:x,qrCodeData:r.qrCodeData,percentage:b,timeToPay:r.timeToPay,copyBtn:r.copyBtn,instructions:r.instructions,countdownTime:I,onTick:e=>T(e),onQRCodeLoad:()=>{S?.({componentType:r.type,actionDescription:"qr-code-loaded"})},onTimeUp:()=>v(),handleCopy:()=>{const e=new s({component:r.type,type:p.download,target:m.qrDownloadButton});r.onSubmitAnalytics(e)}},r.children?r.children:e(y,null)))}f.defaultProps={countdownTime:i,delay:n,throttleTime:a,throttledInterval:r,onError:()=>{},onComplete:()=>{},classNameModifiers:[],introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp",showAmount:!0};export{f as QRLoader};
2
2
  //# sourceMappingURL=QRLoader.js.map