@adyen/adyen-web 6.24.0 → 6.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/cjs/adyen.css +14 -13
  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 +215 -4
  6. package/dist/es/adyen.css +14 -13
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/ANCV.js +1 -1
  9. package/dist/es/components/ANCV/ANCV.js.map +1 -1
  10. package/dist/es/components/Blik/Blik.js +1 -1
  11. package/dist/es/components/Blik/Blik.js.map +1 -1
  12. package/dist/es/components/Card/components/CardInput/components/StoredCardFields.js.map +1 -1
  13. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  14. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  15. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  16. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  17. package/dist/es/components/MBWay/MBWay.js +1 -1
  18. package/dist/es/components/MBWay/MBWay.js.map +1 -1
  19. package/dist/es/components/PayByBankPix/components/Enrollment/components/PayByBankPixAwait.js.map +1 -1
  20. package/dist/es/components/PayTo/PayTo.js +1 -1
  21. package/dist/es/components/PayTo/PayTo.js.map +1 -1
  22. package/dist/es/components/Pix/Pix.js +1 -1
  23. package/dist/es/components/Pix/Pix.js.map +1 -1
  24. package/dist/es/components/Pix/components/PixQRDetails.js +1 -1
  25. package/dist/es/components/Pix/components/PixQRDetails.js.map +1 -1
  26. package/dist/es/components/PreAuthorizedDebitCanada/components/SettlementInfo.js +1 -1
  27. package/dist/es/components/PreAuthorizedDebitCanada/components/SettlementInfo.js.map +1 -1
  28. package/dist/es/components/UPI/UPI.js +1 -1
  29. package/dist/es/components/UPI/UPI.js.map +1 -1
  30. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  31. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  32. package/dist/es/components/internal/Await/Await.js +1 -1
  33. package/dist/es/components/internal/Await/Await.js.map +1 -1
  34. package/dist/es/components/internal/Button/Button.js.map +1 -1
  35. package/dist/es/components/internal/Button/CopyButton.js +2 -0
  36. package/dist/es/components/internal/Button/CopyButton.js.map +1 -0
  37. package/dist/es/components/internal/Button/CopyIconButton.js +1 -1
  38. package/dist/es/components/internal/Button/CopyIconButton.js.map +1 -1
  39. package/dist/es/components/internal/Button/stopPropagationForActionKeys.js +2 -0
  40. package/dist/es/components/internal/Button/stopPropagationForActionKeys.js.map +1 -0
  41. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  42. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  43. package/dist/es/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  44. package/dist/es/components/internal/QRLoader/components/QRCodeCopyButton.js +1 -1
  45. package/dist/es/components/internal/QRLoader/components/QRCodeCopyButton.js.map +1 -1
  46. package/dist/es/components/internal/QRLoader/components/QRCountdown.js +1 -1
  47. package/dist/es/components/internal/QRLoader/components/QRCountdown.js.map +1 -1
  48. package/dist/es/components/internal/QRLoader/components/QRDetails.js +1 -1
  49. package/dist/es/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  50. package/dist/es/components/internal/QRLoader/components/QRFinalState.js +2 -0
  51. package/dist/es/components/internal/QRLoader/components/QRFinalState.js.map +1 -0
  52. package/dist/es/components/internal/Voucher/Voucher.js +1 -1
  53. package/dist/es/components/internal/Voucher/Voucher.js.map +1 -1
  54. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
  55. package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  56. package/dist/es/core/config.js +1 -1
  57. package/dist/es/index.d.ts +215 -4
  58. package/dist/es-legacy/adyen.css +14 -13
  59. package/dist/es-legacy/adyen.css.map +1 -1
  60. package/dist/es-legacy/components/ANCV/ANCV.js +1 -1
  61. package/dist/es-legacy/components/ANCV/ANCV.js.map +1 -1
  62. package/dist/es-legacy/components/Blik/Blik.js +1 -1
  63. package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
  64. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFields.js.map +1 -1
  65. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  66. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  67. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  68. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  69. package/dist/es-legacy/components/MBWay/MBWay.js +1 -1
  70. package/dist/es-legacy/components/MBWay/MBWay.js.map +1 -1
  71. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/components/PayByBankPixAwait.js.map +1 -1
  72. package/dist/es-legacy/components/PayTo/PayTo.js +1 -1
  73. package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
  74. package/dist/es-legacy/components/Pix/Pix.js +1 -1
  75. package/dist/es-legacy/components/Pix/Pix.js.map +1 -1
  76. package/dist/es-legacy/components/Pix/components/PixQRDetails.js +1 -1
  77. package/dist/es-legacy/components/Pix/components/PixQRDetails.js.map +1 -1
  78. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/SettlementInfo.js +1 -1
  79. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/SettlementInfo.js.map +1 -1
  80. package/dist/es-legacy/components/UPI/UPI.js +1 -1
  81. package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
  82. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  83. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  84. package/dist/es-legacy/components/internal/Await/Await.js +1 -1
  85. package/dist/es-legacy/components/internal/Await/Await.js.map +1 -1
  86. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  87. package/dist/es-legacy/components/internal/Button/CopyButton.js +2 -0
  88. package/dist/es-legacy/components/internal/Button/CopyButton.js.map +1 -0
  89. package/dist/es-legacy/components/internal/Button/CopyIconButton.js +1 -1
  90. package/dist/es-legacy/components/internal/Button/CopyIconButton.js.map +1 -1
  91. package/dist/es-legacy/components/internal/Button/stopPropagationForActionKeys.js +2 -0
  92. package/dist/es-legacy/components/internal/Button/stopPropagationForActionKeys.js.map +1 -0
  93. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  94. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  95. package/dist/es-legacy/components/internal/QRLoader/QRLoaderDetailsProvider.js.map +1 -1
  96. package/dist/es-legacy/components/internal/QRLoader/components/QRCodeCopyButton.js +1 -1
  97. package/dist/es-legacy/components/internal/QRLoader/components/QRCodeCopyButton.js.map +1 -1
  98. package/dist/es-legacy/components/internal/QRLoader/components/QRCountdown.js +1 -1
  99. package/dist/es-legacy/components/internal/QRLoader/components/QRCountdown.js.map +1 -1
  100. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js +1 -1
  101. package/dist/es-legacy/components/internal/QRLoader/components/QRDetails.js.map +1 -1
  102. package/dist/es-legacy/components/internal/QRLoader/components/QRFinalState.js +2 -0
  103. package/dist/es-legacy/components/internal/QRLoader/components/QRFinalState.js.map +1 -0
  104. package/dist/es-legacy/components/internal/Voucher/Voucher.js +1 -1
  105. package/dist/es-legacy/components/internal/Voucher/Voucher.js.map +1 -1
  106. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
  107. package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
  108. package/dist/es-legacy/core/config.js +1 -1
  109. package/package.json +6 -6
  110. package/styles/adyen.css +14 -13
@@ -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 copyLabel={i18n.get('pix.code.copy.label')} copiedLabel={i18n.get('pix.code.copied.label')} handleCopy={handleCopy} />\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","copyLabel","copiedLabel"],"mappings":"woBAMA,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,CAAiBC,UAAW9B,EAAK4B,IAAI,uBAAwBG,YAAa/B,EAAK4B,IAAI,yBAA0BlB,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';\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":"woBAMA,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,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"../../internal/Img/Img.js";const a=()=>{const{i18n:a}=t(),n=o();return e("div",{className:"adyen-checkout__eftpad-canada-info"},e(r,{height:"18",width:"18",src:n({imageFolder:"components/"})("info_black"),alt:"",ariaHidden:!0}),e("div",null,a.get("eftpad-canada.settlement-info")))};export{a as SettlementInfo};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../../internal/Alert/Alert.js";const n=()=>{const{i18n:n}=t();return e(r,{classNames:["adyen-checkout__eftpad-canada-info"],icon:"info_black",type:"info"},e("div",null,n.get("eftpad-canada.settlement-info")))};export{n as SettlementInfo};
2
2
  //# sourceMappingURL=SettlementInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettlementInfo.js","sources":["../../../../../src/components/PreAuthorizedDebitCanada/components/SettlementInfo.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport useImage from '../../../core/Context/useImage';\nimport Img from '../../internal/Img';\n\nexport const SettlementInfo = () => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n return (\n <div className=\"adyen-checkout__eftpad-canada-info\">\n <Img height=\"18\" width=\"18\" src={getImage({ imageFolder: 'components/' })('info_black')} alt=\"\" ariaHidden={true} />\n <div>{i18n.get('eftpad-canada.settlement-info')}</div>\n </div>\n );\n};\n"],"names":["SettlementInfo","i18n","useCoreContext","getImage","useImage","h","div","className","Img","height","width","src","imageFolder","alt","ariaHidden","get"],"mappings":"+OAKaA,EAAiB,KAC1B,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEjB,OACIC,EAACC,MAAAA,CAAIC,UAAU,sCACXF,EAACG,EAAAA,CAAIC,OAAO,KAAKC,MAAM,KAAKC,IAAKR,EAAS,CAAES,YAAa,eAAxBT,CAAyC,cAAeU,IAAI,GAAGC,YAAY,IAC5GT,EAACC,MAAAA,KAAKL,EAAKc,IAAI"}
1
+ {"version":3,"file":"SettlementInfo.js","sources":["../../../../../src/components/PreAuthorizedDebitCanada/components/SettlementInfo.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Alert from '../../internal/Alert';\n\nexport const SettlementInfo = () => {\n const { i18n } = useCoreContext();\n\n return (\n <Alert classNames={['adyen-checkout__eftpad-canada-info']} icon=\"info_black\" type=\"info\">\n <div>{i18n.get('eftpad-canada.settlement-info')}</div>\n </Alert>\n );\n};\n"],"names":["SettlementInfo","i18n","useCoreContext","h","Alert","classNames","icon","type","div","get"],"mappings":"kMAIaA,EAAiB,KAC1B,MAAMC,KAAEA,GAASC,IAEjB,OACIC,EAACC,EAAAA,CAAMC,WAAY,CAAC,sCAAuCC,KAAK,aAAaC,KAAK,QAC9EJ,EAACK,MAAAA,KAAKP,EAAKQ,IAAI"}
@@ -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{CoreProvider as r}from"../../core/Context/CoreProvider.js";import n from"../internal/Await/Await.js";import"../../external/preact/hooks/dist/hooks.js";import"../../core/Errors/AdyenCheckoutError.js";import"../../core/Errors/SRPanelContext.js";import"../internal/Button/Button.js";import s from"../internal/QRLoader/QRLoader.js";import"../internal/QRLoader/QRLoaderDetailsProvider.js";import i from"../../core/Errors/SRPanelProvider.js";import{TxVariants as p}from"../tx-variants.js";import a from"../../utils/isMobile.js";import{getQrOption as d,getVpaOption as l,getIntentOption as u}from"./constants.js";function c(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function m(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),r.forEach(function(e){c(t,e,o[e])})}return t}function h(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}class f extends e{formatProps(t){if(!a())return h(m({},super.formatProps(t)),{defaultMode:["qrCode","vpa"].includes(null==t?void 0:t.defaultMode)?t.defaultMode:"qrCode",apps:[],segmentedControlOptions:[d(t.i18n),l(t.i18n)]});const{i18n:e,apps:o=[]}=t;if(o.length>0){const r=["intent","vpa"].includes(t.defaultMode)?t.defaultMode:"intent";return h(m({},super.formatProps(t)),{defaultMode:r,apps:o,segmentedControlOptions:[u(e),l(e)]})}return h(m({},super.formatProps(t)),{defaultMode:"vpa",apps:[],segmentedControlOptions:[]})}get isValid(){return this.state.isValid}formatData(){const{virtualPaymentAddress:t,app:e}=this.state.data||{};return{paymentMethod:m({type:this.paymentType},this.paymentType===p.upi_collect&&t&&{virtualPaymentAddress:t},this.paymentType===p.upi_intent&&(null==e?void 0:e.id)&&{appId:e.id})}}get paymentType(){return"qrCode"===this.selectedMode?p.upi_qr:"vpa"===this.selectedMode?p.upi_collect:p.upi_intent}renderContent(e,r,i){const a=!!this.props.mandate;switch(e){case"qrCode":var d;return t(s,h(m({ref:t=>{this.componentRef=t}},this.props),{qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,type:p.upi_qr,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,introduction:this.props.i18n.get("upi.qrCodeWaitingMessage"),countdownTime:null!==(d=this.props.countdownTime)&&void 0!==d?d:5,onActionHandled:this.onActionHandled,showAmount:!a}));case"await":var l;return t(n,{ref:t=>{this.componentRef=t},url:r,type:i,showCountdownTimer:!0,shouldRedirectAutomatically:!0,showAmount:!a,countdownTime:null!==(l=this.props.countdownTime)&&void 0!==l?l: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})}}render(){const{type:e,url:o,paymentMethodType:n}=this.props;return t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{srPanel:this.props.modules.srPanel},this.renderContent(e,o,n)))}constructor(t,e){super(t,e),c(this,"selectedMode",void 0),c(this,"onUpdateMode",t=>{this.selectedMode=t}),this.selectedMode=this.props.defaultMode}}c(f,"type",p.upi),c(f,"txVariants",[p.upi,p.upi_qr,p.upi_collect,p.upi_intent]);export{f as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/UPIComponent/UPIComponent.js";import{CoreProvider as r}from"../../core/Context/CoreProvider.js";import n from"../internal/Await/Await.js";import"../../external/preact/hooks/dist/hooks.js";import"../../core/Errors/AdyenCheckoutError.js";import"../../core/Errors/SRPanelContext.js";import"../internal/Button/Button.js";import s from"../internal/QRLoader/QRLoader.js";import"../internal/QRLoader/QRLoaderDetailsProvider.js";import i from"../../core/Errors/SRPanelProvider.js";import{TxVariants as p}from"../tx-variants.js";import a from"../../utils/isMobile.js";import{getQrOption as d,getVpaOption as l,getIntentOption as u}from"./constants.js";function c(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function m(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),r.forEach(function(e){c(t,e,o[e])})}return t}function h(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}class f extends e{formatProps(t){if(!a())return h(m({},super.formatProps(t)),{defaultMode:["qrCode","vpa"].includes(null==t?void 0:t.defaultMode)?t.defaultMode:"qrCode",apps:[],segmentedControlOptions:[d(t.i18n),l(t.i18n)]});const{i18n:e,apps:o=[]}=t;if(o.length>0){const r=["intent","vpa"].includes(t.defaultMode)?t.defaultMode:"intent";return h(m({},super.formatProps(t)),{defaultMode:r,apps:o,segmentedControlOptions:[u(e),l(e)]})}return h(m({},super.formatProps(t)),{defaultMode:"vpa",apps:[],segmentedControlOptions:[]})}get isValid(){return this.state.isValid}formatData(){const{virtualPaymentAddress:t,app:e}=this.state.data||{};return{paymentMethod:m({type:this.paymentType},this.paymentType===p.upi_collect&&t&&{virtualPaymentAddress:t},this.paymentType===p.upi_intent&&(null==e?void 0:e.id)&&{appId:e.id})}}get paymentType(){return"qrCode"===this.selectedMode?p.upi_qr:"vpa"===this.selectedMode?p.upi_collect:p.upi_intent}renderContent(e,r,i){const a=!!this.props.mandate;switch(e){case"qrCode":var d;return t(s,h(m({},this.props),{qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,type:p.upi_qr,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,introduction:this.props.i18n.get("upi.qrCodeWaitingMessage"),countdownTime:null!==(d=this.props.countdownTime)&&void 0!==d?d:5,onActionHandled:this.onActionHandled,showAmount:!a}));case"await":var l;return t(n,{url:r,type:i,showCountdownTimer:!0,shouldRedirectAutomatically:!0,showAmount:!a,countdownTime:null!==(l=this.props.countdownTime)&&void 0!==l?l: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})}}render(){const{type:e,url:o,paymentMethodType:n}=this.props;return t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(i,{srPanel:this.props.modules.srPanel},this.renderContent(e,o,n)))}constructor(t,e){super(t,e),c(this,"selectedMode",void 0),c(this,"onUpdateMode",t=>{this.selectedMode=t}),this.selectedMode=this.props.defaultMode}}c(f,"type",p.upi),c(f,"txVariants",[p.upi,p.upi_qr,p.upi_collect,p.upi_intent]);export{f 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 { CoreProvider } from '../../core/Context/CoreProvider';\nimport Await from '../internal/Await';\nimport QRLoader from '../internal/QRLoader';\nimport { UPIConfiguration, UpiMode, UpiPaymentData, UpiType } from './types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\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 private renderContent(type: string, url: string, paymentMethodType: string): h.JSX.Element {\n const isAutoPay = !!this.props.mandate;\n\n switch (type) {\n case 'qrCode':\n return (\n <QRLoader\n ref={ref => {\n this.componentRef = ref;\n }}\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 ref={ref => {\n this.componentRef = ref;\n }}\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 public render(): h.JSX.Element {\n const { type, url, paymentMethodType } = this.props;\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>{this.renderContent(type, url, paymentMethodType)}</SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default UPI;\n"],"names":["UPI","UIElement","formatProps","props","isMobile","_object_spread_props","_object_spread","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","renderContent","url","paymentMethodType","isAutoPay","mandate","_this_props_countdownTime","h","QRLoader","ref","componentRef","qrCodeData","encodeURIComponent","brandLogo","icon","onComplete","introduction","get","countdownTime","onActionHandled","showAmount","_this_props_countdownTime1","Await","showCountdownTimer","shouldRedirectAutomatically","clientKey","paymentData","onError","messageText","awaitText","amount","UPIComponent","payButton","onChange","setState","onUpdateMode","showPayButton","render","CoreProvider","loadingContext","resources","SRPanelProvider","srPanel","modules","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 { CoreProvider } from '../../core/Context/CoreProvider';\nimport Await from '../internal/Await';\nimport QRLoader from '../internal/QRLoader';\nimport { UPIConfiguration, UpiMode, UpiPaymentData, UpiType } from './types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\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 private renderContent(type: string, url: string, paymentMethodType: string): h.JSX.Element {\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 public render(): h.JSX.Element {\n const { type, url, paymentMethodType } = this.props;\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>{this.renderContent(type, url, paymentMethodType)}</SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default UPI;\n"],"names":["UPI","UIElement","formatProps","props","isMobile","_object_spread_props","_object_spread","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","renderContent","url","paymentMethodType","isAutoPay","mandate","_this_props_countdownTime","h","QRLoader","qrCodeData","encodeURIComponent","brandLogo","icon","onComplete","introduction","get","countdownTime","onActionHandled","showAmount","_this_props_countdownTime1","Await","showCountdownTimer","shouldRedirectAutomatically","clientKey","paymentData","onError","messageText","awaitText","amount","UPIComponent","ref","componentRef","payButton","onChange","setState","onUpdateMode","showPayButton","render","CoreProvider","loadingContext","resources","SRPanelProvider","srPanel","modules","constructor","checkout","_define_property","mode","upi","txVariants"],"mappings":"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"}
@@ -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{CoreProvider as r}from"../../../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 o from"../../internal/QRLoader/QRLoader.js";import"../../internal/QRLoader/QRLoaderDetailsProvider.js";import n from"../../internal/RedirectButton/RedirectButton.js";import s from"../../../core/Errors/SRPanelProvider.js";function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),o.forEach(function(e){i(t,e,r[e])})}return t}function p(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e.push.apply(e,r)}return e}(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}class c extends e{formatData(){return{paymentMethod:a({type:this.type},this.state.data)}}get isValid(){return!0}renderQRCode(){return t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(s,{srPanel:this.props.modules.srPanel},t(o,p(a({ref:t=>{this.componentRef=t}},this.props),{delay:this.props.delay,countdownTime:this.props.countdownTime,instructions:this.props.instructions,type:this.constructor.type,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,onActionHandled:this.onActionHandled,brandName:this.displayName,onSubmitAnalytics:this.submitAnalytics}))))}render(){return this.props.paymentData?this.renderQRCode():this.props.showPayButton?t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(n,{showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton,ref:t=>{this.componentRef=t}})):null}}i(c,"defaultProps",{qrCodeImage:"",amount:null,paymentData:null,onError:()=>{}});export{c as default};
1
+ import{createElement as t}from"../../../external/preact/dist/preact.js";import{UIElement as e}from"../../internal/UIElement/UIElement.js";import{CoreProvider as r}from"../../../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 o from"../../internal/QRLoader/QRLoader.js";import"../../internal/QRLoader/QRLoaderDetailsProvider.js";import n from"../../internal/RedirectButton/RedirectButton.js";import s from"../../../core/Errors/SRPanelProvider.js";function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),o.forEach(function(e){i(t,e,r[e])})}return t}function p(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e.push.apply(e,r)}return e}(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}class c extends e{formatData(){return{paymentMethod:a({type:this.type},this.state.data)}}get isValid(){return!0}renderQRCode(){return t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(s,{srPanel:this.props.modules.srPanel},t(o,p(a({},this.props),{delay:this.props.delay,countdownTime:this.props.countdownTime,instructions:this.props.instructions,type:this.constructor.type,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,onActionHandled:this.onActionHandled,brandName:this.displayName,onSubmitAnalytics:this.submitAnalytics}))))}render(){return this.props.paymentData?this.renderQRCode():this.props.showPayButton?t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(n,{showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton,ref:t=>{this.componentRef=t}})):null}}i(c,"defaultProps",{qrCodeImage:"",amount:null,paymentData:null,onError:()=>{}});export{c as default};
2
2
  //# sourceMappingURL=QRLoaderContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QRLoaderContainer.js","sources":["../../../../../src/components/helpers/QRLoaderContainer/QRLoaderContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport QRLoader from '../../internal/QRLoader';\nimport { CoreProvider } from '../../../core/Context/CoreProvider';\nimport RedirectButton from '../../internal/RedirectButton';\nimport SRPanelProvider from '../../../core/Errors/SRPanelProvider';\nimport { QRLoaderConfiguration } from './types';\n\nclass QRLoaderContainer<T extends QRLoaderConfiguration = QRLoaderConfiguration> extends UIElement<T> {\n // Using the generic here allow to fully extend the QRLoaderContainer (including it's props)\n protected static defaultProps = {\n qrCodeImage: '',\n amount: null,\n paymentData: null,\n onError: () => {}\n };\n\n formatData() {\n return {\n paymentMethod: {\n type: this.type,\n ...this.state.data\n }\n };\n }\n\n get isValid() {\n return true;\n }\n\n // Makes possible to extend the final QR code step\n public renderQRCode() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <QRLoader\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n delay={this.props.delay}\n countdownTime={this.props.countdownTime}\n instructions={this.props.instructions}\n type={this.constructor['type']}\n brandLogo={this.props.brandLogo || this.icon}\n onComplete={this.onComplete}\n onActionHandled={this.onActionHandled}\n brandName={this.displayName}\n onSubmitAnalytics={this.submitAnalytics}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n\n render() {\n if (this.props.paymentData) {\n return this.renderQRCode();\n }\n\n if (this.props.showPayButton) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </CoreProvider>\n );\n }\n\n return null;\n }\n}\n\nexport default QRLoaderContainer;\n"],"names":["QRLoaderContainer","UIElement","formatData","paymentMethod","_object_spread","type","this","state","data","isValid","renderQRCode","h","CoreProvider","i18n","props","loadingContext","resources","SRPanelProvider","srPanel","modules","QRLoader","ref","componentRef","delay","countdownTime","instructions","constructor","brandLogo","icon","onComplete","onActionHandled","brandName","displayName","onSubmitAnalytics","submitAnalytics","render","paymentData","showPayButton","RedirectButton","name","onSubmit","submit","payButton","_define_property","defaultProps","qrCodeImage","amount","onError"],"mappings":"25CAQA,MAAMA,UAAmFC,EASrFC,UAAAA,GACI,MAAO,CACHC,cAAeC,EAAA,CACXC,KAAMC,KAAKD,MACRC,KAAKC,MAAMC,MAG1B,CAEA,WAAIC,GACA,OAAO,CACX,CAGOC,YAAAA,GACH,OACIC,EAACC,EAAAA,CAAaC,KAAMP,KAAKQ,MAAMD,KAAME,eAAgBT,KAAKQ,MAAMC,eAAgBC,UAAWV,KAAKU,WAC5FL,EAACM,EAAAA,CAAgBC,QAASZ,KAAKQ,MAAMK,QAAQD,SACzCP,EAACS,EAAAA,EAAAA,EAAAA,CACGC,IAAKA,IACDf,KAAKgB,aAAeD,IAEpBf,KAAKQ,OAAK,CACdS,MAAOjB,KAAKQ,MAAMS,MAClBC,cAAelB,KAAKQ,MAAMU,cAC1BC,aAAcnB,KAAKQ,MAAMW,aACzBpB,KAAMC,KAAKoB,YAAY,KACvBC,UAAWrB,KAAKQ,MAAMa,WAAarB,KAAKsB,KACxCC,WAAYvB,KAAKuB,WACjBC,gBAAiBxB,KAAKwB,gBACtBC,UAAWzB,KAAK0B,YAChBC,kBAAmB3B,KAAK4B,oBAK5C,CAEAC,MAAAA,GACI,OAAI7B,KAAKQ,MAAMsB,YACJ9B,KAAKI,eAGZJ,KAAKQ,MAAMuB,cAEP1B,EAACC,EAAAA,CAAaC,KAAMP,KAAKQ,MAAMD,KAAME,eAAgBT,KAAKQ,MAAMC,eAAgBC,UAAWV,KAAKU,WAC5FL,EAAC2B,EAAAA,CACGD,cAAe/B,KAAKQ,MAAMuB,cAC1BE,KAAMjC,KAAK0B,YACXQ,SAAUlC,KAAKmC,OACfC,UAAWpC,KAAKoC,UAChBrB,IAAKA,IACDf,KAAKgB,aAAeD,MAOjC,IACX,EAnEAsB,EAFE3C,EAEe4C,eAAe,CAC5BC,YAAa,GACbC,OAAQ,KACRV,YAAa,KACbW,QAAS"}
1
+ {"version":3,"file":"QRLoaderContainer.js","sources":["../../../../../src/components/helpers/QRLoaderContainer/QRLoaderContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport QRLoader from '../../internal/QRLoader';\nimport { CoreProvider } from '../../../core/Context/CoreProvider';\nimport RedirectButton from '../../internal/RedirectButton';\nimport SRPanelProvider from '../../../core/Errors/SRPanelProvider';\nimport { QRLoaderConfiguration } from './types';\n\nclass QRLoaderContainer<T extends QRLoaderConfiguration = QRLoaderConfiguration> extends UIElement<T> {\n // Using the generic here allow to fully extend the QRLoaderContainer (including it's props)\n protected static defaultProps = {\n qrCodeImage: '',\n amount: null,\n paymentData: null,\n onError: () => {}\n };\n\n formatData() {\n return {\n paymentMethod: {\n type: this.type,\n ...this.state.data\n }\n };\n }\n\n get isValid() {\n return true;\n }\n\n // Makes possible to extend the final QR code step\n public renderQRCode() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <QRLoader\n {...this.props}\n delay={this.props.delay}\n countdownTime={this.props.countdownTime}\n instructions={this.props.instructions}\n type={this.constructor['type']}\n brandLogo={this.props.brandLogo || this.icon}\n onComplete={this.onComplete}\n onActionHandled={this.onActionHandled}\n brandName={this.displayName}\n onSubmitAnalytics={this.submitAnalytics}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n\n render() {\n if (this.props.paymentData) {\n return this.renderQRCode();\n }\n\n if (this.props.showPayButton) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </CoreProvider>\n );\n }\n\n return null;\n }\n}\n\nexport default QRLoaderContainer;\n"],"names":["QRLoaderContainer","UIElement","formatData","paymentMethod","_object_spread","type","this","state","data","isValid","renderQRCode","h","CoreProvider","i18n","props","loadingContext","resources","SRPanelProvider","srPanel","modules","QRLoader","delay","countdownTime","instructions","constructor","brandLogo","icon","onComplete","onActionHandled","brandName","displayName","onSubmitAnalytics","submitAnalytics","render","paymentData","showPayButton","RedirectButton","name","onSubmit","submit","payButton","ref","componentRef","_define_property","defaultProps","qrCodeImage","amount","onError"],"mappings":"25CAQA,MAAMA,UAAmFC,EASrFC,UAAAA,GACI,MAAO,CACHC,cAAeC,EAAA,CACXC,KAAMC,KAAKD,MACRC,KAAKC,MAAMC,MAG1B,CAEA,WAAIC,GACA,OAAO,CACX,CAGOC,YAAAA,GACH,OACIC,EAACC,EAAAA,CAAaC,KAAMP,KAAKQ,MAAMD,KAAME,eAAgBT,KAAKQ,MAAMC,eAAgBC,UAAWV,KAAKU,WAC5FL,EAACM,EAAAA,CAAgBC,QAASZ,KAAKQ,MAAMK,QAAQD,SACzCP,EAACS,EAAAA,EAAAA,EAAAA,GACOd,KAAKQ,OAAK,CACdO,MAAOf,KAAKQ,MAAMO,MAClBC,cAAehB,KAAKQ,MAAMQ,cAC1BC,aAAcjB,KAAKQ,MAAMS,aACzBlB,KAAMC,KAAKkB,YAAY,KACvBC,UAAWnB,KAAKQ,MAAMW,WAAanB,KAAKoB,KACxCC,WAAYrB,KAAKqB,WACjBC,gBAAiBtB,KAAKsB,gBACtBC,UAAWvB,KAAKwB,YAChBC,kBAAmBzB,KAAK0B,oBAK5C,CAEAC,MAAAA,GACI,OAAI3B,KAAKQ,MAAMoB,YACJ5B,KAAKI,eAGZJ,KAAKQ,MAAMqB,cAEPxB,EAACC,EAAAA,CAAaC,KAAMP,KAAKQ,MAAMD,KAAME,eAAgBT,KAAKQ,MAAMC,eAAgBC,UAAWV,KAAKU,WAC5FL,EAACyB,EAAAA,CACGD,cAAe7B,KAAKQ,MAAMqB,cAC1BE,KAAM/B,KAAKwB,YACXQ,SAAUhC,KAAKiC,OACfC,UAAWlC,KAAKkC,UAChBC,IAAKA,IACDnC,KAAKoC,aAAeD,MAOjC,IACX,EAhEAE,EAFE3C,EAEe4C,eAAe,CAC5BC,YAAa,GACbC,OAAQ,KACRZ,YAAa,KACba,QAAS"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import o from"../../../_virtual/index.js";import r from"../../../core/Services/payment-status.js";import{processResponse as n}from"../../../core/ProcessResponse/process-response.js";import s from"../Spinner/Spinner.js";import i from"../Countdown/index.js";import c from"../Button/Button.js";import{useCoreContext as l}from"../../../core/Context/CoreProvider.js";import u from"../../../core/Errors/AdyenCheckoutError.js";import d from"../ContentSeparator/ContentSeparator.js";import m from"../../../core/Context/useImage.js";function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function _(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{},o=Object.keys(a);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(a).filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),o.forEach(function(t){p(e,t,a[t])})}return e}function y(e,t){if(null==e)return{};var a,o,r=function(e,t){if(null==e)return{};var a,o,r={},n=Object.keys(e);for(o=0;o<n.length;o++)a=n[o],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)a=n[o],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}function w(p){var w;const{i18n:h,loadingContext:f}=l(),g=m(),[v,k]=t(!1),[b,N]=t(!1),[j,O]=t(!0),[C,T]=t(!1),[x,E]=t(p.delay),[R,S]=t(100),[P,A]=t(0),[D,I]=t(!1),[L,M]=t(null),{amount:$}=p,z=e=>{if(e.props.payload){k(!0);const t={data:{details:{payload:e.props.payload},paymentData:p.paymentData}};return p.onComplete(t,this)}N(!0),p.onError(new u("ERROR","successful result, but no payload in response"))},B=e=>{if(N(!0),e.props.payload){const t={data:{details:{payload:e.props.payload},paymentData:p.paymentData}};return p.onComplete(t,this)}p.onError(new u("ERROR","error result with no payload in response"))},F=async()=>{const{paymentData:e,clientKey:t,throttleInterval:a,pollStatus:o}=p,s=null!=o?o:()=>r(e,t,f,a);var i;C||(null===(i=p.onActionHandled)||void 0===i||i.call(p,{componentType:p.type,actionDescription:"polling-started"}),T(!0));return s().then(n).catch(e=>{var{message:t}=e,a=y(e,["message"]);return{type:"network-error",props:_({},t&&{message:h.get(t)},a)}}).then(e=>{switch(e.type){case"success":z(e);break;case"error":B(e);break;default:O(!1)}})},H=e=>{window.location.assign(e)};a(()=>{p.shouldRedirectAutomatically&&p.url&&H(p.url)},[p.shouldRedirectAutomatically,p.url]),a(()=>(F(),()=>{clearTimeout(L)}),[]),a(()=>{if(b)return clearTimeout(L);if(v)return clearTimeout(L);if(!j){const e=async()=>{await F();const e=P+x;A(e),e>=p.throttleTime&&!D&&(E(p.throttleInterval),I(!0))};M(setTimeout(()=>{e()},x))}},[j,b,v,P]);const K=(t,a)=>e("div",{className:"adyen-checkout__await adyen-checkout__await--result"},e("img",{className:"adyen-checkout__await__icon adyen-checkout__await__icon--result",src:g({imageFolder:"components/"})(t),alt:h.get(a)}),e("div",{className:"adyen-checkout__await__subtitle adyen-checkout__await__subtitle--result"},h.get(a)));if(b)return K("error","error.subtitle.payment");if(v)return K("success","creditCard.success");if(j)return e("div",{className:"adyen-checkout__await"},p.brandLogo&&e("img",{src:p.brandLogo,alt:p.type,className:"adyen-checkout__await__brand-logo"}),e(s,{inline:!1,size:"large"}));const q=h.get("wechatpay.timetopay").split("%@");return e("div",{className:o("adyen-checkout__await",`adyen-checkout__await--${p.type}`,p.classNameModifiers.map(e=>`adyen-checkout__await--${e}`))},p.brandLogo&&e("img",{src:p.brandLogo,alt:p.type,className:"adyen-checkout__await__brand-logo"}),!(!p.showAmount||null===(null==$?void 0:$.value)||!(null==$?void 0:$.currency))&&e("div",{className:"adyen-checkout__await__amount"},h.amount($.value,$.currency)),null!=p.messageText&&e("div",{className:"adyen-checkout__await__subtitle"},p.messageText),e("div",{className:"adyen-checkout__await__indicator-holder"},e("div",{className:"adyen-checkout__await__indicator-spinner"},e(s,{inline:!1,size:"medium"})),e("div",{className:"adyen-checkout__await__indicator-text"},p.awaitText)),p.showCountdownTimer&&e("div",{className:"adyen-checkout__await__countdown-holder"},e("div",{className:"adyen-checkout__await__progress"},e("span",{className:"adyen-checkout__await__percentage",style:{width:`${R}%`}})),e("div",{className:"adyen-checkout__await__countdown"},q[0]," ",e(i,{minutesFromNow:p.countdownTime,onTick:e=>{S(e.percentage)},onCompleted:()=>{N(!0),clearTimeout(L),p.onError(new u("ERROR","Payment Expired"))}})," ",q[1])),p.url&&!p.shouldRedirectAutomatically&&e("div",{className:"adyen-checkout__await__app-link"},e(d,null),e(c,{classNameModifiers:["await"],onClick:()=>H(p.url),label:h.get("openApp")})),p.instructions&&e("div",{className:"adyen-checkout__await__instructions"},"string"==typeof p.instructions?h.get(p.instructions):null===(w=p.instructions)||void 0===w?void 0:w.call(p)),p.endSlot&&e("div",{className:"adyen-checkout__await__end-slot"},p.endSlot()))}w.defaultProps={countdownTime:15,onError:()=>{},onComplete:()=>{},delay:2e3,throttleTime:6e4,throttleInterval:1e4,showCountdownTimer:!0,classNameModifiers:[],url:null};export{w as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import o from"../../../_virtual/index.js";import r from"../../../core/Services/payment-status.js";import{processResponse as n}from"../../../core/ProcessResponse/process-response.js";import s from"../Spinner/Spinner.js";import i from"../Countdown/index.js";import c from"../Button/Button.js";import{useCoreContext as l}from"../../../core/Context/CoreProvider.js";import u from"../../../core/Errors/AdyenCheckoutError.js";import d from"../ContentSeparator/ContentSeparator.js";import m from"../../../core/Context/useImage.js";function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function _(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{},o=Object.keys(a);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(a).filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),o.forEach(function(t){p(e,t,a[t])})}return e}function y(e,t){if(null==e)return{};var a,o,r=function(e,t){if(null==e)return{};var a,o,r={},n=Object.keys(e);for(o=0;o<n.length;o++)a=n[o],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)a=n[o],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}function w(p){var w;const{i18n:f,loadingContext:h}=l(),g=m(),[v,k]=t(!1),[b,N]=t(!1),[j,O]=t(!0),[C,T]=t(!1),[x,E]=t(p.delay),[R,S]=t(100),[P,A]=t(0),[D,I]=t(!1),[L,M]=t(null),{amount:$}=p,z=async()=>{const{paymentData:e,clientKey:t,throttleInterval:a,pollStatus:o}=p,s=null!=o?o:()=>r(e,t,h,a);var i;C||(null===(i=p.onActionHandled)||void 0===i||i.call(p,{componentType:p.type,actionDescription:"polling-started"}),T(!0));return s().then(n).catch(e=>{var{message:t}=e,a=y(e,["message"]);return{type:"network-error",props:_({},t&&{message:f.get(t)},a)}}).then(e=>{switch(e.type){case"success":(e=>{if(e.props.payload){k(!0);const t={data:{details:{payload:e.props.payload},paymentData:p.paymentData}};return p.onComplete(t)}N(!0),p.onError(new u("ERROR","successful result, but no payload in response"))})(e);break;case"error":(e=>{if(N(!0),e.props.payload){const t={data:{details:{payload:e.props.payload},paymentData:p.paymentData}};return p.onComplete(t)}p.onError(new u("ERROR","error result with no payload in response"))})(e);break;default:O(!1)}})},B=e=>{window.location.assign(e)};a(()=>{p.shouldRedirectAutomatically&&p.url&&B(p.url)},[p.shouldRedirectAutomatically,p.url]),a(()=>(z(),()=>{clearTimeout(L)}),[]),a(()=>{if(b)return clearTimeout(L);if(v)return clearTimeout(L);if(!j){const e=async()=>{await z();const e=P+x;A(e),e>=p.throttleTime&&!D&&(E(p.throttleInterval),I(!0))};M(setTimeout(()=>{e()},x))}},[j,b,v,P]);const F=(t,a)=>e("div",{className:"adyen-checkout__await adyen-checkout__await--result"},e("img",{className:"adyen-checkout__await__icon adyen-checkout__await__icon--result",src:g({imageFolder:"components/"})(t),alt:f.get(a)}),e("p",{className:"adyen-checkout__await__subtitle adyen-checkout__await__subtitle--result"},f.get(a)));if(b)return F("error","error.subtitle.payment");if(v)return F("success","creditCard.success");if(j)return e("div",{className:"adyen-checkout__await"},p.brandLogo&&e("img",{src:p.brandLogo,alt:p.type,className:"adyen-checkout__await__brand-logo"}),e(s,{inline:!1,size:"large"}));const H=f.get("wechatpay.timetopay").split("%@");return e("div",{className:o("adyen-checkout__await",`adyen-checkout__await--${p.type}`,p.classNameModifiers.map(e=>`adyen-checkout__await--${e}`))},p.brandLogo&&e("img",{src:p.brandLogo,alt:p.type,className:"adyen-checkout__await__brand-logo"}),!(!p.showAmount||null===(null==$?void 0:$.value)||!(null==$?void 0:$.currency))&&e("div",{className:"adyen-checkout__await__amount"},f.amount($.value,$.currency)),null!=p.messageText&&e("div",{className:"adyen-checkout__await__subtitle"},p.messageText),e("div",{className:"adyen-checkout__await__indicator-holder"},e("div",{className:"adyen-checkout__await__indicator-spinner"},e(s,{inline:!1,size:"medium"})),e("div",{className:"adyen-checkout__await__indicator-text"},p.awaitText)),p.showCountdownTimer&&e("div",{className:"adyen-checkout__await__countdown-holder"},e("div",{className:"adyen-checkout__await__progress"},e("span",{className:"adyen-checkout__await__percentage",style:{width:`${R}%`}})),e("div",{className:"adyen-checkout__await__countdown"},H[0]," ",e(i,{minutesFromNow:p.countdownTime,onTick:e=>{S(e.percentage)},onCompleted:()=>{N(!0),clearTimeout(L),p.onError(new u("ERROR","Payment Expired"))}})," ",H[1])),p.url&&!p.shouldRedirectAutomatically&&e("div",{className:"adyen-checkout__await__app-link"},e(d,null),e(c,{classNameModifiers:["await"],onClick:()=>B(p.url),label:f.get("openApp")})),p.instructions&&e("div",{className:"adyen-checkout__await__instructions"},"string"==typeof p.instructions?f.get(p.instructions):null===(w=p.instructions)||void 0===w?void 0:w.call(p)),p.endSlot&&e("div",{className:"adyen-checkout__await__end-slot"},p.endSlot()))}w.defaultProps={countdownTime:15,onError:()=>{},onComplete:()=>{},delay:2e3,throttleTime:6e4,throttleInterval:1e4,showCountdownTimer:!0,classNameModifiers:[],url:null};export{w as default};
2
2
  //# sourceMappingURL=Await.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Await.js","sources":["../../../../../src/components/internal/Await/Await.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport classnames from 'classnames';\nimport checkPaymentStatus from '../../../core/Services/payment-status';\nimport processResponse from '../../../core/ProcessResponse';\n\nimport Spinner from '../../internal/Spinner';\nimport Countdown from '../Countdown';\nimport Button from '../Button';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { AwaitComponentProps, StatusObject } from './types';\nimport './Await.scss';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport ContentSeparator from '../ContentSeparator';\nimport useImage from '../../../core/Context/useImage';\n\nfunction Await(props: AwaitComponentProps) {\n const { i18n, loadingContext } = useCoreContext();\n const getImage = useImage();\n const [completed, setCompleted] = useState(false);\n const [expired, setExpired] = useState(false);\n const [loading, setLoading] = useState(true);\n const [hasCalledActionHandled, setHasCalledActionHandled] = useState(false);\n const [delay, setDelay] = useState(props.delay);\n const [percentage, setPercentage] = useState(100);\n const [timePassed, setTimePassed] = useState(0);\n const [hasAdjustedTime, setHasAdjustedTime] = useState(false);\n const [storedTimeout, setStoredTimeout] = useState(null);\n const { amount } = props;\n\n const onTimeUp = (): void => {\n setExpired(true);\n clearTimeout(storedTimeout);\n props.onError(new AdyenCheckoutError('ERROR', 'Payment Expired'));\n };\n\n const onTick = (time): void => {\n setPercentage(time.percentage);\n };\n\n const onComplete = (status: StatusObject): void => {\n // Only make details call if we have a payload\n if (status.props.payload) {\n setCompleted(true);\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: props.paymentData\n }\n };\n // Send success response to onAdditionalDetails\n return props.onComplete(state, this);\n }\n\n // Show error state & call merchant defined error callback if we do not have a payload\n setExpired(true);\n props.onError(new AdyenCheckoutError('ERROR', 'successful result, but no payload in response'));\n };\n\n const onError = (status: StatusObject): void => {\n setExpired(true);\n\n // Only make details call if we have a payload\n if (status.props.payload) {\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: props.paymentData\n }\n };\n // Send error response to onAdditionalDetails\n return props.onComplete(state, this);\n }\n\n // Call merchant defined error callback if we do not have a payload\n props.onError(new AdyenCheckoutError('ERROR', 'error result with no payload in response'));\n };\n\n const checkStatus = async (): Promise<void> => {\n const { paymentData, clientKey, throttleInterval, pollStatus } = props;\n\n // If there's a custom pollStatus function, call it.\n // Otherwise, call the default one.\n const pollStatusFunction = pollStatus ?? (() => checkPaymentStatus(paymentData, clientKey, loadingContext, throttleInterval));\n\n if (!hasCalledActionHandled) {\n props.onActionHandled?.({ componentType: props.type, actionDescription: 'polling-started' });\n setHasCalledActionHandled(true);\n }\n\n return pollStatusFunction()\n .then(processResponse)\n .catch(({ message, ...response }) => ({\n type: 'network-error',\n props: {\n ...(message && { message: i18n.get(message) }),\n ...response\n }\n }))\n .then((status: StatusObject) => {\n switch (status.type) {\n case 'success':\n onComplete(status);\n break;\n\n case 'error':\n onError(status);\n break;\n\n default:\n setLoading(false);\n }\n });\n };\n\n const redirectToApp = (url): void => {\n window.location.assign(url);\n };\n\n useEffect(() => {\n if (props.shouldRedirectAutomatically && props.url) {\n redirectToApp(props.url);\n }\n }, [props.shouldRedirectAutomatically, props.url]);\n\n useEffect(() => {\n void checkStatus();\n return (): void => {\n clearTimeout(storedTimeout);\n };\n }, []);\n\n useEffect(() => {\n if (expired) return clearTimeout(storedTimeout);\n\n if (completed) return clearTimeout(storedTimeout);\n\n if (!loading) {\n // Retry until getting a complete response from the server OR it times out\n // Changes setTimeout time to new value (throttleInterval) after a certain amount of time (throttleTime) has passed\n const statusInterval = async (): Promise<void> => {\n await checkStatus();\n\n const actualTimePassed = timePassed + delay;\n // timePassed is the value that is the main \"engine\" that drives this useEffect/polling\n setTimePassed(actualTimePassed);\n\n if (actualTimePassed >= props.throttleTime && !hasAdjustedTime) {\n setDelay(props.throttleInterval);\n setHasAdjustedTime(true);\n }\n };\n\n // Create (another) interval to poll for a result\n setStoredTimeout(setTimeout(() => void statusInterval(), delay));\n }\n }, [loading, expired, completed, timePassed]);\n\n const finalState = (image, message) => (\n <div className=\"adyen-checkout__await adyen-checkout__await--result\">\n <img\n className=\"adyen-checkout__await__icon adyen-checkout__await__icon--result\"\n src={getImage({ imageFolder: 'components/' })(image)}\n alt={i18n.get(message)}\n />\n <div className=\"adyen-checkout__await__subtitle adyen-checkout__await__subtitle--result\">{i18n.get(message)}</div>\n </div>\n );\n\n if (expired) {\n return finalState('error', 'error.subtitle.payment');\n }\n\n if (completed) {\n return finalState('success', 'creditCard.success');\n }\n\n if (loading) {\n return (\n <div className=\"adyen-checkout__await\">\n {props.brandLogo && <img src={props.brandLogo} alt={props.type} className=\"adyen-checkout__await__brand-logo\" />}\n <Spinner inline={false} size=\"large\" />\n </div>\n );\n }\n\n const timeToPayString = i18n.get('wechatpay.timetopay').split('%@');\n\n return (\n <div\n className={classnames(\n 'adyen-checkout__await',\n `adyen-checkout__await--${props.type}`,\n props.classNameModifiers.map(m => `adyen-checkout__await--${m}`)\n )}\n >\n {props.brandLogo && <img src={props.brandLogo} alt={props.type} className=\"adyen-checkout__await__brand-logo\" />}\n\n {/* Everything is wrapped in !! so we evaluate the result as boolean,\n otherwise we might just print the value or object as mistake */}\n {!!(props.showAmount && amount?.value !== null && amount?.currency) && (\n <div className=\"adyen-checkout__await__amount\">{i18n.amount(amount.value, amount.currency)}</div>\n )}\n\n {props.messageText != null && <div className=\"adyen-checkout__await__subtitle\">{props.messageText}</div>}\n\n <div className=\"adyen-checkout__await__indicator-holder\">\n <div className=\"adyen-checkout__await__indicator-spinner\">\n <Spinner inline={false} size=\"medium\" />\n </div>\n <div className=\"adyen-checkout__await__indicator-text\">{props.awaitText}</div>\n </div>\n\n {props.showCountdownTimer && (\n <div className=\"adyen-checkout__await__countdown-holder\">\n <div className=\"adyen-checkout__await__progress\">\n <span className=\"adyen-checkout__await__percentage\" style={{ width: `${percentage}%` }} />\n </div>\n\n <div className=\"adyen-checkout__await__countdown\">\n {timeToPayString[0]}&nbsp;\n <Countdown minutesFromNow={props.countdownTime} onTick={onTick} onCompleted={onTimeUp} />\n &nbsp;{timeToPayString[1]}\n </div>\n </div>\n )}\n\n {props.url && !props.shouldRedirectAutomatically && (\n <div className=\"adyen-checkout__await__app-link\">\n <ContentSeparator />\n <Button classNameModifiers={['await']} onClick={() => redirectToApp(props.url)} label={i18n.get('openApp')} />\n </div>\n )}\n\n {props.instructions && (\n <div className=\"adyen-checkout__await__instructions\">\n {typeof props.instructions === 'string' ? i18n.get(props.instructions) : props.instructions?.()}\n </div>\n )}\n\n {props.endSlot && <div className=\"adyen-checkout__await__end-slot\">{props.endSlot()}</div>}\n </div>\n );\n}\n\nAwait.defaultProps = {\n countdownTime: 15,\n onError: () => {},\n onComplete: () => {},\n delay: 2000,\n throttleTime: 60000,\n throttleInterval: 10000,\n showCountdownTimer: true,\n classNameModifiers: [],\n url: null\n};\n\nexport default Await;\n"],"names":["Await","props","i18n","loadingContext","useCoreContext","getImage","useImage","completed","setCompleted","useState","expired","setExpired","loading","setLoading","hasCalledActionHandled","setHasCalledActionHandled","delay","setDelay","percentage","setPercentage","timePassed","setTimePassed","hasAdjustedTime","setHasAdjustedTime","storedTimeout","setStoredTimeout","amount","onComplete","status","payload","state","data","details","paymentData","this","onError","AdyenCheckoutError","checkStatus","async","clientKey","throttleInterval","pollStatus","pollStatusFunction","checkPaymentStatus","onActionHandled","componentType","type","actionDescription","then","processResponse","catch","_param","message","response","_object_spread","get","redirectToApp","url","window","location","assign","useEffect","shouldRedirectAutomatically","clearTimeout","statusInterval","actualTimePassed","throttleTime","setTimeout","finalState","image","h","div","className","img","src","imageFolder","alt","brandLogo","Spinner","inline","size","timeToPayString","split","classnames","classNameModifiers","map","m","showAmount","value","currency","messageText","awaitText","showCountdownTimer","span","style","width","Countdown","minutesFromNow","countdownTime","onTick","time","onCompleted","ContentSeparator","Button","onClick","label","instructions","endSlot","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"Await.js","sources":["../../../../../src/components/internal/Await/Await.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport classnames from 'classnames';\nimport checkPaymentStatus from '../../../core/Services/payment-status';\nimport processResponse from '../../../core/ProcessResponse';\nimport Spinner from '../../internal/Spinner';\nimport Countdown from '../Countdown';\nimport Button from '../Button';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { AwaitComponentProps, StatusObject } from './types';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport ContentSeparator from '../ContentSeparator';\nimport useImage from '../../../core/Context/useImage';\nimport { CountdownTime } from '../Countdown/types';\nimport './Await.scss';\n\nfunction Await(props: AwaitComponentProps) {\n const { i18n, loadingContext } = useCoreContext();\n const getImage = useImage();\n const [completed, setCompleted] = useState(false);\n const [expired, setExpired] = useState(false);\n const [loading, setLoading] = useState(true);\n const [hasCalledActionHandled, setHasCalledActionHandled] = useState(false);\n const [delay, setDelay] = useState(props.delay);\n const [percentage, setPercentage] = useState(100);\n const [timePassed, setTimePassed] = useState(0);\n const [hasAdjustedTime, setHasAdjustedTime] = useState(false);\n const [storedTimeout, setStoredTimeout] = useState<NodeJS.Timeout | number | null>(null);\n const { amount } = props;\n\n const onTimeUp = (): void => {\n setExpired(true);\n clearTimeout(storedTimeout);\n props.onError(new AdyenCheckoutError('ERROR', 'Payment Expired'));\n };\n\n const onTick = (time: CountdownTime): void => {\n setPercentage(time.percentage);\n };\n\n const onComplete = (status: StatusObject): void => {\n // Only make details call if we have a payload\n if (status.props.payload) {\n setCompleted(true);\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: props.paymentData\n }\n };\n // Send success response to onAdditionalDetails\n return props.onComplete(state);\n }\n\n // Show error state & call merchant defined error callback if we do not have a payload\n setExpired(true);\n props.onError(new AdyenCheckoutError('ERROR', 'successful result, but no payload in response'));\n };\n\n const onError = (status: StatusObject): void => {\n setExpired(true);\n\n // Only make details call if we have a payload\n if (status.props.payload) {\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: props.paymentData\n }\n };\n // Send error response to onAdditionalDetails\n return props.onComplete(state);\n }\n\n // Call merchant defined error callback if we do not have a payload\n props.onError(new AdyenCheckoutError('ERROR', 'error result with no payload in response'));\n };\n\n const checkStatus = async (): Promise<void> => {\n const { paymentData, clientKey, throttleInterval, pollStatus } = props;\n\n // If there's a custom pollStatus function, call it.\n // Otherwise, call the default one.\n const pollStatusFunction = pollStatus ?? (() => checkPaymentStatus(paymentData, clientKey, loadingContext, throttleInterval));\n\n if (!hasCalledActionHandled) {\n props.onActionHandled?.({ componentType: props.type, actionDescription: 'polling-started' });\n setHasCalledActionHandled(true);\n }\n\n return pollStatusFunction()\n .then(processResponse)\n .catch(({ message, ...response }) => ({\n type: 'network-error',\n props: {\n ...(message && { message: i18n.get(message) }),\n ...response\n }\n }))\n .then((status: StatusObject) => {\n switch (status.type) {\n case 'success':\n onComplete(status);\n break;\n\n case 'error':\n onError(status);\n break;\n\n default:\n setLoading(false);\n }\n });\n };\n\n const redirectToApp = (url: string): void => {\n window.location.assign(url);\n };\n\n useEffect(() => {\n if (props.shouldRedirectAutomatically && props.url) {\n redirectToApp(props.url);\n }\n }, [props.shouldRedirectAutomatically, props.url]);\n\n useEffect(() => {\n void checkStatus();\n return (): void => {\n clearTimeout(storedTimeout);\n };\n }, []);\n\n useEffect(() => {\n if (expired) return clearTimeout(storedTimeout);\n\n if (completed) return clearTimeout(storedTimeout);\n\n if (!loading) {\n // Retry until getting a complete response from the server OR it times out\n // Changes setTimeout time to new value (throttleInterval) after a certain amount of time (throttleTime) has passed\n const statusInterval = async (): Promise<void> => {\n await checkStatus();\n\n const actualTimePassed = timePassed + delay;\n // timePassed is the value that is the main \"engine\" that drives this useEffect/polling\n setTimePassed(actualTimePassed);\n\n if (actualTimePassed >= props.throttleTime && !hasAdjustedTime) {\n setDelay(props.throttleInterval);\n setHasAdjustedTime(true);\n }\n };\n\n // Create (another) interval to poll for a result\n setStoredTimeout(setTimeout(() => void statusInterval(), delay));\n }\n }, [loading, expired, completed, timePassed]);\n\n const finalState = (image: string, message: string) => (\n <div className=\"adyen-checkout__await adyen-checkout__await--result\">\n <img\n className=\"adyen-checkout__await__icon adyen-checkout__await__icon--result\"\n src={getImage({ imageFolder: 'components/' })(image)}\n alt={i18n.get(message)}\n />\n <p className=\"adyen-checkout__await__subtitle adyen-checkout__await__subtitle--result\">{i18n.get(message)}</p>\n </div>\n );\n\n if (expired) {\n return finalState('error', 'error.subtitle.payment');\n }\n\n if (completed) {\n return finalState('success', 'creditCard.success');\n }\n\n if (loading) {\n return (\n <div className=\"adyen-checkout__await\">\n {props.brandLogo && <img src={props.brandLogo} alt={props.type} className=\"adyen-checkout__await__brand-logo\" />}\n <Spinner inline={false} size=\"large\" />\n </div>\n );\n }\n\n const timeToPayString = i18n.get('wechatpay.timetopay').split('%@');\n\n return (\n <div\n className={classnames(\n 'adyen-checkout__await',\n `adyen-checkout__await--${props.type}`,\n props.classNameModifiers.map(m => `adyen-checkout__await--${m}`)\n )}\n >\n {props.brandLogo && <img src={props.brandLogo} alt={props.type} className=\"adyen-checkout__await__brand-logo\" />}\n\n {/* Everything is wrapped in !! so we evaluate the result as boolean,\n otherwise we might just print the value or object as mistake */}\n {!!(props.showAmount && amount?.value !== null && amount?.currency) && (\n <div className=\"adyen-checkout__await__amount\">{i18n.amount(amount.value, amount.currency)}</div>\n )}\n\n {props.messageText != null && <div className=\"adyen-checkout__await__subtitle\">{props.messageText}</div>}\n\n <div className=\"adyen-checkout__await__indicator-holder\">\n <div className=\"adyen-checkout__await__indicator-spinner\">\n <Spinner inline={false} size=\"medium\" />\n </div>\n <div className=\"adyen-checkout__await__indicator-text\">{props.awaitText}</div>\n </div>\n\n {props.showCountdownTimer && (\n <div className=\"adyen-checkout__await__countdown-holder\">\n <div className=\"adyen-checkout__await__progress\">\n <span className=\"adyen-checkout__await__percentage\" style={{ width: `${percentage}%` }} />\n </div>\n\n <div className=\"adyen-checkout__await__countdown\">\n {timeToPayString[0]}&nbsp;\n <Countdown minutesFromNow={props.countdownTime} onTick={onTick} onCompleted={onTimeUp} />\n &nbsp;{timeToPayString[1]}\n </div>\n </div>\n )}\n\n {props.url && !props.shouldRedirectAutomatically && (\n <div className=\"adyen-checkout__await__app-link\">\n <ContentSeparator />\n <Button classNameModifiers={['await']} onClick={() => redirectToApp(props.url)} label={i18n.get('openApp')} />\n </div>\n )}\n\n {props.instructions && (\n <div className=\"adyen-checkout__await__instructions\">\n {typeof props.instructions === 'string' ? i18n.get(props.instructions) : props.instructions?.()}\n </div>\n )}\n\n {props.endSlot && <div className=\"adyen-checkout__await__end-slot\">{props.endSlot()}</div>}\n </div>\n );\n}\n\nAwait.defaultProps = {\n countdownTime: 15,\n onError: () => {},\n onComplete: () => {},\n delay: 2000,\n throttleTime: 60000,\n throttleInterval: 10000,\n showCountdownTimer: true,\n classNameModifiers: [],\n url: null\n};\n\nexport default Await;\n"],"names":["Await","props","i18n","loadingContext","useCoreContext","getImage","useImage","completed","setCompleted","useState","expired","setExpired","loading","setLoading","hasCalledActionHandled","setHasCalledActionHandled","delay","setDelay","percentage","setPercentage","timePassed","setTimePassed","hasAdjustedTime","setHasAdjustedTime","storedTimeout","setStoredTimeout","amount","checkStatus","async","paymentData","clientKey","throttleInterval","pollStatus","pollStatusFunction","checkPaymentStatus","onActionHandled","componentType","type","actionDescription","then","processResponse","catch","_param","message","response","_object_spread","get","status","payload","state","data","details","onComplete","onError","AdyenCheckoutError","redirectToApp","url","window","location","assign","useEffect","shouldRedirectAutomatically","clearTimeout","statusInterval","actualTimePassed","throttleTime","setTimeout","finalState","image","h","div","className","img","src","imageFolder","alt","p","brandLogo","Spinner","inline","size","timeToPayString","split","classnames","classNameModifiers","map","m","showAmount","value","currency","messageText","awaitText","showCountdownTimer","span","style","width","Countdown","minutesFromNow","countdownTime","onTick","time","onCompleted","ContentSeparator","Button","onClick","label","instructions","endSlot","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../../src/components/internal/Button/Button.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport Spinner from '../Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport './Button.scss';\nimport { ButtonProps, ButtonState } from './types';\n\nclass Button extends Component<ButtonProps, ButtonState> {\n public static defaultProps = {\n status: 'default',\n variant: 'primary',\n disabled: false,\n label: '',\n inline: false,\n target: '_self'\n };\n\n public onClick = (e: h.JSX.TargetedMouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (!this.props.disabled) {\n this.props.onClick?.(e, { complete: this.complete });\n }\n };\n\n public complete = (delay = 1_000) => {\n this.setState({ completed: true });\n setTimeout(() => {\n this.setState({ completed: false });\n }, delay);\n };\n\n render() {\n const {\n classNameModifiers = [],\n disabled,\n href,\n icon,\n onClickCompletedIcon,\n inline,\n label,\n ariaLabel,\n ariaDescribedBy,\n status,\n variant,\n buttonRef,\n onClickCompletedLabel,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyPress\n }: ButtonProps = this.props;\n const { completed } = this.state;\n const { i18n } = useCoreContext();\n\n const buttonIcon =\n onClickCompletedIcon || icon ? (\n <img\n className=\"adyen-checkout__button__icon\"\n src={this.state.completed ? (onClickCompletedIcon ?? icon) : icon}\n alt=\"\"\n aria-hidden=\"true\"\n />\n ) : (\n ''\n );\n\n const modifiers = [\n ...classNameModifiers,\n ...(variant !== 'primary' ? [variant] : []),\n ...(inline ? ['inline'] : []),\n ...(completed ? ['completed'] : []),\n ...(status === 'loading' || status === 'redirect' ? ['loading'] : [])\n ];\n\n const buttonClasses = classNames(['adyen-checkout__button', ...modifiers.map(m => `adyen-checkout__button--${m}`)]);\n\n const buttonStates = {\n loading: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n <span className={'adyen-checkout__button__text--sr-only'}>{i18n.get('loading')}</span>\n </span>\n ),\n redirect: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n {i18n.get('payButton.redirecting')}\n </span>\n ),\n default: (\n <span className=\"adyen-checkout__button__content\">\n {buttonIcon}\n <span className=\"adyen-checkout__button__text\">{this.state.completed ? (onClickCompletedLabel ?? label) : label}</span>\n </span>\n )\n };\n\n const buttonText = buttonStates[status] || buttonStates.default;\n\n if (href) {\n return (\n <a className={buttonClasses} href={href} disabled={disabled} target={this.props.target} rel={this.props.rel}>\n {buttonText}\n </a>\n );\n }\n\n return (\n <button\n ref={buttonRef}\n className={buttonClasses}\n type=\"button\"\n disabled={disabled}\n onClick={this.onClick}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyPress={onKeyPress}\n >\n {buttonText}\n {status !== 'loading' && status !== 'redirect' && this.props.children}\n </button>\n );\n }\n}\n\nexport default Button;\n"],"names":["Button","Component","render","classNameModifiers","disabled","href","icon","onClickCompletedIcon","inline","label","ariaLabel","ariaDescribedBy","status","variant","buttonRef","onClickCompletedLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyDown","onKeyPress","this","props","completed","state","i18n","useCoreContext","buttonIcon","h","img","className","src","alt","aria-hidden","modifiers","buttonClasses","classNames","map","m","buttonStates","loading","span","Spinner","size","get","redirect","default","buttonText","a","target","rel","button","ref","type","onClick","aria-label","aria-describedby","children","super","args","_define_property","e","_this_props_onClick","_this_props","preventDefault","call","complete","delay","setState","setTimeout","defaultProps"],"mappings":"qWAOA,MAAMA,UAAeC,EAyBjBC,MAAAA,GACI,MAAMC,mBACFA,EAAqB,GAAEC,SACvBA,EAAQC,KACRA,EAAIC,KACJA,EAAIC,qBACJA,EAAoBC,OACpBA,EAAMC,MACNA,EAAKC,UACLA,EAASC,gBACTA,EAAeC,OACfA,EAAMC,QACNA,EAAOC,UACPA,EAASC,sBACTA,EAAqBC,aACrBA,EAAYC,aACZA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAASC,WACTA,GACaC,KAAKC,OAChBC,UAAEA,GAAcF,KAAKG,OACrBC,KAAEA,GAASC,IAEXC,EACFrB,GAAwBD,EACpBuB,EAACC,MAAAA,CACGC,UAAU,+BACVC,IAAKV,KAAKG,MAAMD,WAAajB,QAAAA,EAAgCD,EAC7D2B,IAAI,GACJC,cAAY,SAGhB,GAGFC,EAAY,IACXhC,KACa,YAAZU,EAAwB,CAACA,GAAW,MACpCL,EAAS,CAAC,UAAY,MACtBgB,EAAY,CAAC,aAAe,MACjB,YAAXZ,GAAmC,aAAXA,EAAwB,CAAC,WAAa,IAGhEwB,EAAgBC,EAAW,CAAC,4BAA6BF,EAAUG,IAAIC,GAAK,2BAA2BA,OAEvGC,EAAe,CACjBC,QACIZ,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASpC,QAAAA,IACvBqB,EAACa,OAAAA,CAAKX,UAAW,yCAA0CL,EAAKmB,IAAI,aAG5EC,SACIjB,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASpC,QAAAA,IACtBkB,EAAKmB,IAAI,0BAGlBE,QACIlB,EAACa,OAAAA,CAAKX,UAAU,mCACXH,EACDC,EAACa,OAAAA,CAAKX,UAAU,gCAAgCT,KAAKG,MAAMD,WAAaT,QAAAA,EAAkCN,KAKhHuC,EAAaR,EAAa5B,IAAW4B,EAAaO,QAExD,OAAI1C,EAEIwB,EAACoB,IAAAA,CAAElB,UAAWK,EAAe/B,KAAMA,EAAMD,SAAUA,EAAU8C,OAAQ5B,KAAKC,MAAM2B,OAAQC,IAAK7B,KAAKC,MAAM4B,KACnGH,GAMTnB,EAACuB,SAAAA,CACGC,IAAKvC,EACLiB,UAAWK,EACXkB,KAAK,SACLlD,SAAUA,EACVmD,QAASjC,KAAKiC,QACdC,aAAY9C,EACZ+C,mBAAkB9C,EAClBK,aAAcA,EACdC,aAAcA,EACdG,UAAWA,EACXF,QAASA,EACTC,OAAQA,EACRE,WAAYA,GAEX2B,EACW,YAAXpC,GAAmC,aAAXA,GAAyBU,KAAKC,MAAMmC,SAGzE,mBA3HJC,SAAAC,GAUIC,EAAAvC,KAAOiC,UAAWO,QAIVC,EAAAC,GAHJF,EAAEG,iBAEG3C,KAAKC,MAAMnB,YACM,QAAlB2D,GAAAC,EAAA1C,KAAKC,OAAMgC,eAAX,IAAAQ,GAAAA,EAAAG,KAAAF,EAAqBF,EAAG,CAAEK,SAAU7C,KAAK6C,cAIjDN,EAAAvC,KAAO6C,WAAW,CAACC,EAAQ,OACvB9C,KAAK+C,SAAS,CAAE7C,WAAW,IAC3B8C,WAAW,KACPhD,KAAK+C,SAAS,CAAE7C,WAAW,KAC5B4C,MArBPP,EADE7D,EACYuE,eAAe,CACzB3D,OAAQ,UACRC,QAAS,UACTT,UAAU,EACVK,MAAO,GACPD,QAAQ,EACR0C,OAAQ"}
1
+ {"version":3,"file":"Button.js","sources":["../../../../../src/components/internal/Button/Button.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport Spinner from '../Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport { ButtonProps, ButtonState } from './types';\nimport './Button.scss';\n\nclass Button extends Component<ButtonProps, ButtonState> {\n public static defaultProps = {\n status: 'default',\n variant: 'primary',\n disabled: false,\n label: '',\n inline: false,\n target: '_self'\n };\n\n public onClick = (e: h.JSX.TargetedMouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (!this.props.disabled) {\n this.props.onClick?.(e, { complete: this.complete });\n }\n };\n\n public complete = (delay = 1_000) => {\n this.setState({ completed: true });\n setTimeout(() => {\n this.setState({ completed: false });\n }, delay);\n };\n\n render() {\n const {\n classNameModifiers = [],\n disabled,\n href,\n icon,\n onClickCompletedIcon,\n inline,\n label,\n ariaLabel,\n ariaDescribedBy,\n status,\n variant,\n buttonRef,\n onClickCompletedLabel,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyPress\n }: ButtonProps = this.props;\n const { completed } = this.state;\n const { i18n } = useCoreContext();\n\n const buttonIcon =\n onClickCompletedIcon || icon ? (\n <img\n className=\"adyen-checkout__button__icon\"\n src={this.state.completed ? (onClickCompletedIcon ?? icon) : icon}\n alt=\"\"\n aria-hidden=\"true\"\n />\n ) : (\n ''\n );\n\n const modifiers = [\n ...classNameModifiers,\n ...(variant !== 'primary' ? [variant] : []),\n ...(inline ? ['inline'] : []),\n ...(completed ? ['completed'] : []),\n ...(status === 'loading' || status === 'redirect' ? ['loading'] : [])\n ];\n\n const buttonClasses = classNames(['adyen-checkout__button', ...modifiers.map(m => `adyen-checkout__button--${m}`)]);\n\n const buttonStates = {\n loading: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n <span className={'adyen-checkout__button__text--sr-only'}>{i18n.get('loading')}</span>\n </span>\n ),\n redirect: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n {i18n.get('payButton.redirecting')}\n </span>\n ),\n default: (\n <span className=\"adyen-checkout__button__content\">\n {buttonIcon}\n <span className=\"adyen-checkout__button__text\">{this.state.completed ? (onClickCompletedLabel ?? label) : label}</span>\n </span>\n )\n };\n\n const buttonText = buttonStates[status] || buttonStates.default;\n\n if (href) {\n return (\n <a className={buttonClasses} href={href} disabled={disabled} target={this.props.target} rel={this.props.rel}>\n {buttonText}\n </a>\n );\n }\n\n return (\n <button\n ref={buttonRef}\n className={buttonClasses}\n type=\"button\"\n disabled={disabled}\n onClick={this.onClick}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyPress={onKeyPress}\n >\n {buttonText}\n {status !== 'loading' && status !== 'redirect' && this.props.children}\n </button>\n );\n }\n}\n\nexport default Button;\n"],"names":["Button","Component","render","classNameModifiers","disabled","href","icon","onClickCompletedIcon","inline","label","ariaLabel","ariaDescribedBy","status","variant","buttonRef","onClickCompletedLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyDown","onKeyPress","this","props","completed","state","i18n","useCoreContext","buttonIcon","h","img","className","src","alt","aria-hidden","modifiers","buttonClasses","classNames","map","m","buttonStates","loading","span","Spinner","size","get","redirect","default","buttonText","a","target","rel","button","ref","type","onClick","aria-label","aria-describedby","children","super","args","_define_property","e","_this_props_onClick","_this_props","preventDefault","call","complete","delay","setState","setTimeout","defaultProps"],"mappings":"qWAOA,MAAMA,UAAeC,EAyBjBC,MAAAA,GACI,MAAMC,mBACFA,EAAqB,GAAEC,SACvBA,EAAQC,KACRA,EAAIC,KACJA,EAAIC,qBACJA,EAAoBC,OACpBA,EAAMC,MACNA,EAAKC,UACLA,EAASC,gBACTA,EAAeC,OACfA,EAAMC,QACNA,EAAOC,UACPA,EAASC,sBACTA,EAAqBC,aACrBA,EAAYC,aACZA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAASC,WACTA,GACaC,KAAKC,OAChBC,UAAEA,GAAcF,KAAKG,OACrBC,KAAEA,GAASC,IAEXC,EACFrB,GAAwBD,EACpBuB,EAACC,MAAAA,CACGC,UAAU,+BACVC,IAAKV,KAAKG,MAAMD,WAAajB,QAAAA,EAAgCD,EAC7D2B,IAAI,GACJC,cAAY,SAGhB,GAGFC,EAAY,IACXhC,KACa,YAAZU,EAAwB,CAACA,GAAW,MACpCL,EAAS,CAAC,UAAY,MACtBgB,EAAY,CAAC,aAAe,MACjB,YAAXZ,GAAmC,aAAXA,EAAwB,CAAC,WAAa,IAGhEwB,EAAgBC,EAAW,CAAC,4BAA6BF,EAAUG,IAAIC,GAAK,2BAA2BA,OAEvGC,EAAe,CACjBC,QACIZ,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASpC,QAAAA,IACvBqB,EAACa,OAAAA,CAAKX,UAAW,yCAA0CL,EAAKmB,IAAI,aAG5EC,SACIjB,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASpC,QAAAA,IACtBkB,EAAKmB,IAAI,0BAGlBE,QACIlB,EAACa,OAAAA,CAAKX,UAAU,mCACXH,EACDC,EAACa,OAAAA,CAAKX,UAAU,gCAAgCT,KAAKG,MAAMD,WAAaT,QAAAA,EAAkCN,KAKhHuC,EAAaR,EAAa5B,IAAW4B,EAAaO,QAExD,OAAI1C,EAEIwB,EAACoB,IAAAA,CAAElB,UAAWK,EAAe/B,KAAMA,EAAMD,SAAUA,EAAU8C,OAAQ5B,KAAKC,MAAM2B,OAAQC,IAAK7B,KAAKC,MAAM4B,KACnGH,GAMTnB,EAACuB,SAAAA,CACGC,IAAKvC,EACLiB,UAAWK,EACXkB,KAAK,SACLlD,SAAUA,EACVmD,QAASjC,KAAKiC,QACdC,aAAY9C,EACZ+C,mBAAkB9C,EAClBK,aAAcA,EACdC,aAAcA,EACdG,UAAWA,EACXF,QAASA,EACTC,OAAQA,EACRE,WAAYA,GAEX2B,EACW,YAAXpC,GAAmC,aAAXA,GAAyBU,KAAKC,MAAMmC,SAGzE,mBA3HJC,SAAAC,GAUIC,EAAAvC,KAAOiC,UAAWO,QAIVC,EAAAC,GAHJF,EAAEG,iBAEG3C,KAAKC,MAAMnB,YACM,QAAlB2D,GAAAC,EAAA1C,KAAKC,OAAMgC,eAAX,IAAAQ,GAAAA,EAAAG,KAAAF,EAAqBF,EAAG,CAAEK,SAAU7C,KAAK6C,cAIjDN,EAAAvC,KAAO6C,WAAW,CAACC,EAAQ,OACvB9C,KAAK+C,SAAS,CAAE7C,WAAW,IAC3B8C,WAAW,KACPhD,KAAK+C,SAAS,CAAE7C,WAAW,KAC5B4C,MArBPP,EADE7D,EACYuE,eAAe,CACzB3D,OAAQ,UACRC,QAAS,UACTT,UAAU,EACVK,MAAO,GACPD,QAAQ,EACR0C,OAAQ"}
@@ -0,0 +1,2 @@
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useCallback as t}from"../../../external/preact/hooks/dist/hooks.js";import o from"./Button.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as n}from"../../../utils/clipboard.js";import{PREFIX as c}from"../Icon/constants.js";import i from"../../../core/Context/useImage.js";import{stopPropagationForActionKeys as l}from"./stopPropagationForActionKeys.js";function p(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t.push.apply(t,o)}return t}(Object(t)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))}),e}const a=a=>{const{i18n:u}=r(),b=i(),m=t((e,{complete:t})=>{var o;n(a.text),t(),null===(o=a.onClick)||void 0===o||o.call(a,e)},[a.text,a.onClick]);var f,y,j;return e(o,s(function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),r.forEach(function(t){p(e,t,o[t])})}return e}({},a),{variant:"action",onClick:m,onKeyPress:l,onKeyDown:l,icon:null!==(f=a.icon)&&void 0!==f?f:b({imageFolder:"components/"})(`${c}copy`),label:null!==(y=a.label)&&void 0!==y?y:u.get("button.copy"),onClickCompletedLabel:null!==(j=a.copiedLabel)&&void 0!==j?j:u.get("button.copied")}))};export{a as CopyButton};
2
+ //# sourceMappingURL=CopyButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.js","sources":["../../../../../src/components/internal/Button/CopyButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { PREFIX } from '../Icon/constants';\nimport useImage from '../../../core/Context/useImage';\nimport { stopPropagationForActionKeys } from './stopPropagationForActionKeys';\n\nexport interface CopyButtonProps extends Omit<ButtonProps, 'variant' | 'onClickCompletedLabel'> {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n copiedLabel?: string;\n onClick?: (e: h.JSX.TargetedMouseEvent<HTMLButtonElement>) => void;\n}\n\nconst CopyButton = (props: CopyButtonProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n const onClick = useCallback(\n (e, { complete }) => {\n void copyToClipboard(props.text);\n complete();\n props.onClick?.(e);\n },\n [props.text, props.onClick]\n );\n\n return (\n <Button\n {...props}\n variant=\"action\"\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter key pressed.\n onKeyPress={stopPropagationForActionKeys}\n onKeyDown={stopPropagationForActionKeys}\n icon={props.icon ?? getImage({ imageFolder: 'components/' })(`${PREFIX}copy`)}\n label={props.label ?? i18n.get('button.copy')}\n onClickCompletedLabel={props.copiedLabel ?? i18n.get('button.copied')}\n />\n );\n};\n\nexport { CopyButton };\n"],"names":["CopyButton","props","i18n","useCoreContext","getImage","useImage","onClick","useCallback","e","complete","copyToClipboard","text","h","Button","variant","onKeyPress","stopPropagationForActionKeys","onKeyDown","icon","imageFolder","PREFIX","label","get","onClickCompletedLabel","copiedLabel"],"mappings":"w8BAmBA,MAAMA,EAAcC,IAChB,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEXC,EAAUC,EACZ,CAACC,GAAKC,eAGFR,IAAAA,EAFKS,EAAgBT,EAAMU,MAC3BF,IACa,QAAbR,EAAAA,EAAMK,eAANL,IAAAA,GAAAA,OAAAA,EAAgBO,IAEpB,CAACP,EAAMU,KAAMV,EAAMK,UAWTL,IAAAA,EACCA,EACgBA,EAV/B,OACIW,EAACC,EAAAA,oUAAAA,CAAAA,CAAAA,EACOZ,GAAAA,CACJa,QAAQ,SACRR,QAASA,EAETS,WAAYC,EACZC,UAAWD,EACXE,KAAgB,QAAVjB,EAAAA,EAAMiB,YAANjB,IAAAA,EAAAA,EAAcG,EAAS,CAAEe,YAAa,eAAxBf,CAAyC,GAAGgB,SAChEC,cAAOpB,EAAAA,EAAMoB,aAANpB,IAAAA,EAAAA,EAAeC,EAAKoB,IAAI,eAC/BC,8BAAuBtB,EAAAA,EAAMuB,mBAANvB,IAAAA,EAAAA,EAAqBC,EAAKoB,IAAI"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as t,useCallback as o}from"../../../external/preact/hooks/dist/hooks.js";import r from"./Button.js";import{useCoreContext as n}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as c}from"../../../utils/clipboard.js";import{SingletonTooltipProvider as i,useTooltip as a}from"../Tooltip/SingletonTooltipProvider.js";function p(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t.push.apply(t,o)}return t}(Object(t)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))}),e}const l=i=>{const{i18n:l}=n(),u=t(null),{showTooltip:b,hideTooltip:y}=a(),f=o(()=>{c(i.text),b({anchorRef:u,text:l.get("button.copied")})},[i.text,l,b]),O=o(e=>{"Enter"!==e.key&&"Enter"!==e.code&&" "!==e.key&&"Space"!==e.code||e.stopPropagation()},[y]),g=o(e=>{"Enter"!==e.key&&"Enter"!==e.code&&" "!==e.key&&"Space"!==e.code||e.stopPropagation(),"Escape"!==e.key&&"Escape"!==e.code||(e.stopPropagation(),y())},[y]),m=o(()=>{b({anchorRef:u,text:l.get("button.copy")})},[u,l,b]);var j;return e(r,s(function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),r.forEach(function(t){p(e,t,o[t])})}return e}({},i),{variant:"iconOnly",buttonRef:u,ariaLabel:null!==(j=i.ariaLabel)&&void 0!==j?j:l.get("button.copy"),onMouseEnter:m,onMouseLeave:y,onFocus:m,onBlur:y,onClick:f,onKeyPress:O,onKeyDown:g}),e("svg",{className:"adyen-checkout__button--iconOnly__icon",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},e("path",{d:"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z"})))},u=t=>e(i,null,e(l,t));export{u as CopyIconButton};
1
+ import{createElement as t}from"../../../external/preact/dist/preact.js";import{useRef as e,useCallback as o}from"../../../external/preact/hooks/dist/hooks.js";import r from"./Button.js";import{useCoreContext as n}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as c}from"../../../utils/clipboard.js";import{SingletonTooltipProvider as i,useTooltip as s}from"../Tooltip/SingletonTooltipProvider.js";import{stopPropagationForActionKeys as a}from"./stopPropagationForActionKeys.js";function p(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function l(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}const u=i=>{const{i18n:u}=n(),b=e(null),{showTooltip:f,hideTooltip:y}=s(),O=o(()=>{c(i.text),f({anchorRef:b,text:u.get("button.copied")})},[i.text,u,f]),m=o(t=>{a(t),"Escape"!==t.key&&"Escape"!==t.code||(t.stopPropagation(),y())},[y]),j=o(()=>{f({anchorRef:b,text:u.get("button.copy")})},[b,u,f]);var g;return t(r,l(function(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),r.forEach(function(e){p(t,e,o[e])})}return t}({},i),{variant:"iconOnly",buttonRef:b,ariaLabel:null!==(g=i.ariaLabel)&&void 0!==g?g:u.get("button.copy"),onMouseEnter:j,onMouseLeave:y,onFocus:j,onBlur:y,onClick:O,onKeyPress:a,onKeyDown:m}),t("svg",{className:"adyen-checkout__button--iconOnly__icon",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},t("path",{d:"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z"})))},b=e=>t(i,null,t(u,e));export{b as CopyIconButton};
2
2
  //# sourceMappingURL=CopyIconButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyIconButton.js","sources":["../../../../../src/components/internal/Button/CopyIconButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { SingletonTooltipProvider, useTooltip } from '../Tooltip/SingletonTooltipProvider';\nimport './CopyIconButton.scss';\n\nexport interface CopyIconButtonProps extends ButtonProps {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n}\n\nconst CopyIconButton = (props: CopyIconButtonProps) => {\n const { i18n } = useCoreContext();\n const anchorRef = useRef<HTMLButtonElement>(null);\n const { showTooltip, hideTooltip } = useTooltip();\n\n const onClick = useCallback(() => {\n void copyToClipboard(props.text);\n showTooltip({ anchorRef, text: i18n.get('button.copied') });\n }, [props.text, i18n, showTooltip]);\n\n // todo: remove it: onKeyPress is deprecated\n const onKeyPress = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n },\n [hideTooltip]\n );\n\n // We need it because onKeyPress does not trigger for Esc key\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n\n if (event.key === 'Escape' || event.code === 'Escape') {\n event.stopPropagation();\n hideTooltip();\n }\n },\n [hideTooltip]\n );\n\n const handleShowTooltip = useCallback(() => {\n showTooltip({ anchorRef, text: i18n.get('button.copy') });\n }, [anchorRef, i18n, showTooltip]);\n\n return (\n <Button\n {...props}\n variant=\"iconOnly\"\n buttonRef={anchorRef}\n ariaLabel={props.ariaLabel ?? i18n.get('button.copy')}\n onMouseEnter={handleShowTooltip}\n onMouseLeave={hideTooltip}\n onFocus={handleShowTooltip}\n onBlur={hideTooltip}\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter/space key pressed.\n onKeyPress={onKeyPress}\n onKeyDown={onKeyDown}\n >\n <svg\n className=\"adyen-checkout__button--iconOnly__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z\" />\n </svg>\n </Button>\n );\n};\n\nconst withTooltip = (props: CopyIconButtonProps) => {\n return (\n <SingletonTooltipProvider>\n <CopyIconButton {...props} />\n </SingletonTooltipProvider>\n );\n};\n\nexport { withTooltip as CopyIconButton };\n"],"names":["CopyIconButton","props","i18n","useCoreContext","anchorRef","useRef","showTooltip","hideTooltip","useTooltip","onClick","useCallback","copyToClipboard","text","get","onKeyPress","event","key","code","stopPropagation","onKeyDown","handleShowTooltip","h","Button","variant","buttonRef","ariaLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","svg","className","xmlns","width","height","viewBox","fill","path","d","withTooltip","SingletonTooltipProvider"],"mappings":"s4BAgBA,MAAMA,EAAkBC,IACpB,MAAMC,KAAEA,GAASC,IACXC,EAAYC,EAA0B,OACtCC,YAAEA,EAAWC,YAAEA,GAAgBC,IAE/BC,EAAUC,EAAY,KACnBC,EAAgBV,EAAMW,MAC3BN,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,oBACzC,CAACZ,EAAMW,KAAMV,EAAMI,IAGhBQ,EAAaJ,EACdK,IACqB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG,mBAGd,CAACX,IAICY,EAAYT,EACbK,IACqB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG,kBAGQ,WAAdH,EAAMC,KAAmC,WAAfD,EAAME,OAChCF,EAAMG,kBACNX,MAGR,CAACA,IAGCa,EAAoBV,EAAY,KAClCJ,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,kBACzC,CAACT,EAAWF,EAAMI,IAOFL,IAAAA,EALnB,OACIoB,EAACC,EAAAA,oUAAAA,CAAAA,CAAAA,EACOrB,GAAAA,CACJsB,QAAQ,WACRC,UAAWpB,EACXqB,kBAAWxB,EAAAA,EAAMwB,iBAANxB,IAAAA,EAAAA,EAAmBC,EAAKW,IAAI,eACvCa,aAAcN,EACdO,aAAcpB,EACdqB,QAASR,EACTS,OAAQtB,EACRE,QAASA,EAETK,WAAYA,EACZK,UAAWA,IAEXE,EAACS,MAAAA,CACGC,UAAU,yCACVC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,QAELf,EAACgB,OAAAA,CAAKC,EAAE,snBAMlBC,EAAetC,GAEboB,EAACmB,EAAAA,KACGnB,EAACrB,EAAmBC"}
1
+ {"version":3,"file":"CopyIconButton.js","sources":["../../../../../src/components/internal/Button/CopyIconButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { SingletonTooltipProvider, useTooltip } from '../Tooltip/SingletonTooltipProvider';\nimport './CopyIconButton.scss';\nimport { stopPropagationForActionKeys } from './stopPropagationForActionKeys';\n\nexport interface CopyIconButtonProps extends ButtonProps {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n}\n\nconst CopyIconButton = (props: CopyIconButtonProps) => {\n const { i18n } = useCoreContext();\n const anchorRef = useRef<HTMLButtonElement>(null);\n const { showTooltip, hideTooltip } = useTooltip();\n\n const onClick = useCallback(() => {\n void copyToClipboard(props.text);\n showTooltip({ anchorRef, text: i18n.get('button.copied') });\n }, [props.text, i18n, showTooltip]);\n\n // We need it because onKeyPress does not trigger for Esc key\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n stopPropagationForActionKeys(event);\n\n if (event.key === 'Escape' || event.code === 'Escape') {\n event.stopPropagation();\n hideTooltip();\n }\n },\n [hideTooltip]\n );\n\n const handleShowTooltip = useCallback(() => {\n showTooltip({ anchorRef, text: i18n.get('button.copy') });\n }, [anchorRef, i18n, showTooltip]);\n\n return (\n <Button\n {...props}\n variant=\"iconOnly\"\n buttonRef={anchorRef}\n ariaLabel={props.ariaLabel ?? i18n.get('button.copy')}\n onMouseEnter={handleShowTooltip}\n onMouseLeave={hideTooltip}\n onFocus={handleShowTooltip}\n onBlur={hideTooltip}\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter/space key pressed.\n onKeyPress={stopPropagationForActionKeys}\n onKeyDown={onKeyDown}\n >\n <svg\n className=\"adyen-checkout__button--iconOnly__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z\" />\n </svg>\n </Button>\n );\n};\n\nconst withTooltip = (props: CopyIconButtonProps) => {\n return (\n <SingletonTooltipProvider>\n <CopyIconButton {...props} />\n </SingletonTooltipProvider>\n );\n};\n\nexport { withTooltip as CopyIconButton };\n"],"names":["CopyIconButton","props","i18n","useCoreContext","anchorRef","useRef","showTooltip","hideTooltip","useTooltip","onClick","useCallback","copyToClipboard","text","get","onKeyDown","event","stopPropagationForActionKeys","key","code","stopPropagation","handleShowTooltip","h","Button","variant","buttonRef","ariaLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyPress","svg","className","xmlns","width","height","viewBox","fill","path","d","withTooltip","SingletonTooltipProvider"],"mappings":"u9BAiBA,MAAMA,EAAkBC,IACpB,MAAMC,KAAEA,GAASC,IACXC,EAAYC,EAA0B,OACtCC,YAAEA,EAAWC,YAAEA,GAAgBC,IAE/BC,EAAUC,EAAY,KACnBC,EAAgBV,EAAMW,MAC3BN,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,oBACzC,CAACZ,EAAMW,KAAMV,EAAMI,IAGhBQ,EAAYJ,EACbK,IACGC,EAA6BD,GAEX,WAAdA,EAAME,KAAmC,WAAfF,EAAMG,OAChCH,EAAMI,kBACNZ,MAGR,CAACA,IAGCa,EAAoBV,EAAY,KAClCJ,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,kBACzC,CAACT,EAAWF,EAAMI,IAOFL,IAAAA,EALnB,OACIoB,EAACC,EAAAA,oUAAAA,CAAAA,CAAAA,EACOrB,GAAAA,CACJsB,QAAQ,WACRC,UAAWpB,EACXqB,kBAAWxB,EAAAA,EAAMwB,iBAANxB,IAAAA,EAAAA,EAAmBC,EAAKW,IAAI,eACvCa,aAAcN,EACdO,aAAcpB,EACdqB,QAASR,EACTS,OAAQtB,EACRE,QAASA,EAETqB,WAAYd,EACZF,UAAWA,IAEXO,EAACU,MAAAA,CACGC,UAAU,yCACVC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,QAELhB,EAACiB,OAAAA,CAAKC,EAAE,snBAMlBC,EAAevC,GAEboB,EAACoB,EAAAA,KACGpB,EAACrB,EAAmBC"}
@@ -0,0 +1,2 @@
1
+ const e=e=>{"Enter"!==e.key&&"Enter"!==e.code&&" "!==e.key&&"Space"!==e.code||e.stopPropagation()};export{e as stopPropagationForActionKeys};
2
+ //# sourceMappingURL=stopPropagationForActionKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopPropagationForActionKeys.js","sources":["../../../../../src/components/internal/Button/stopPropagationForActionKeys.ts"],"sourcesContent":["export const stopPropagationForActionKeys = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n};\n"],"names":["stopPropagationForActionKeys","event","key","code","stopPropagation"],"mappings":"AAAO,MAAMA,EAAgCC,IACvB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG"}
@@ -1,2 +1,2 @@
1
- import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import o from"../Button/Button.js";import r from"../Spinner/Spinner.js";import s from"../../../core/Services/payment-status.js";import{processResponse as a}from"../../../core/ProcessResponse/process-response.js";import{copyToClipboard as i}from"../../../utils/clipboard.js";import n from"../../../core/Errors/AdyenCheckoutError.js";import{useCoreContext as p}from"../../../core/Context/CoreProvider.js";import c from"../ContentSeparator/ContentSeparator.js";import d from"../../../core/Context/useImage.js";import{useA11yReporter as l}from"../../../core/Errors/useA11yReporter.js";import m from"../../../utils/useAutoFocus.js";import{ANALYTICS_QR_CODE_DOWNLOAD as u,ANALYTICS_DOWNLOAD_STR as h}from"../../../core/Analytics/constants.js";import{AnalyticsInfoEvent as y}from"../../../core/Analytics/AnalyticsInfoEvent.js";import _ from"./components/QRDetails.js";import{QRLoaderDetailsProvider as f}from"./QRLoaderDetailsProvider.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class k extends t{componentDidMount(){this.statusInterval()}componentWillUnmount(){clearTimeout(this.timeoutId)}pollStatus(t){clearTimeout(this.timeoutId),this.timeoutId=setTimeout(async()=>{const t=performance.now();await this.checkStatus();const e=performance.now();this.statusInterval(Math.round(e-t))},t)}render({amount:t,showAmount:s,url:a,brandLogo:n,brandName:g,countdownTime:k,type:q,onActionHandled:b},{expired:C,completed:v,loading:T}){var w,I;const{i18n:j,loadingContext:N}=p(),S=d(),x=this.props.qrCodeData?`${N}utility/v1/barcode.png?type=qrCode&data=${this.props.qrCodeData}&clientKey=${this.props.clientKey}`:this.props.qrCodeImage,D=(t,o)=>{const r=j.get(o);return l(r),e("div",{className:"adyen-checkout__qr-loader adyen-checkout__qr-loader--result"},e("img",{className:"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result",src:S({imageFolder:"components/"})(t),alt:r}),e("div",{className:"adyen-checkout__qr-loader__subtitle"},r))};if(C)return D("error","error.subtitle.payment");if(v)return D("success","creditCard.success");if(T)return e("div",{className:"adyen-checkout__qr-loader"},n&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{alt:g,src:n,className:"adyen-checkout__qr-loader__brand-logo"})),e(r,null));const A=m(),E=this.props.classNameModifiers.map(t=>`adyen-checkout__qr-loader--${t}`);return e("div",{className:`adyen-checkout__qr-loader adyen-checkout__qr-loader--${q} ${E.join(" ")}`},n&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{src:n,alt:g,className:"adyen-checkout__qr-loader__brand-logo"})),s&&t&&null!==t.value&&!!t.currency&&e("h1",{className:"adyen-checkout__qr-loader__payment_amount"},j.amount(t.value,t.currency)),a&&e("div",{className:"adyen-checkout__qr-loader__app-link"},this.props.redirectIntroduction&&e("p",{className:"adyen-checkout__qr-loader__subtitle"},j.get(this.props.redirectIntroduction)),e(o,{classNameModifiers:["qr-loader"],onClick:()=>this.redirectToApp(a),label:j.get(this.props.buttonLabel)}),e(c,null)),e("p",{ref:A,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},"string"==typeof this.props.introduction?j.get(this.props.introduction):null===(w=(I=this.props).introduction)||void 0===w?void 0:w.call(I)),e(f,{qrCodeImage:x,qrCodeData:this.props.qrCodeData,percentage:this.state.percentage,timeToPay:this.props.timeToPay,copyBtn:this.props.copyBtn,instructions:this.props.instructions,countdownTime:k,onTick:t=>this.onTick(t),onQRCodeLoad:()=>{null==b||b({componentType:this.props.type,actionDescription:"qr-code-loaded"})},onTimeUp:()=>this.onTimeUp(),handleCopy:t=>{i(this.props.qrCodeData);const e=new y({type:h,target:u});this.props.onSubmitAnalytics(e),t()}},this.props.children?this.props.children:e(_,null)))}constructor(t){super(t),g(this,"timeoutId",void 0),g(this,"redirectToApp",t=>{window.location.assign(t)}),g(this,"statusInterval",(t=0)=>{if(this.state.expired||this.state.completed)return;this.setState(e=>({timePassed:e.timePassed+this.props.delay+t}));const e=this.state.timePassed>=this.props.throttleTime?this.props.throttledInterval:this.state.delay;this.pollStatus(e)}),g(this,"onTick",t=>{this.setState({percentage:t.percentage})}),g(this,"onTimeUp",()=>{this.setState({expired:!0}),clearTimeout(this.timeoutId),this.props.onError(new n("ERROR","Payment Expired"))}),g(this,"onComplete",t=>{clearTimeout(this.timeoutId),this.setState({completed:!0,loading:!1});const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)}),g(this,"onError",t=>{if(clearTimeout(this.timeoutId),this.setState({expired:!0,loading:!1}),t.props.payload){const e={data:{details:{payload:t.props.payload},paymentData:this.props.paymentData}};this.props.onComplete(e,this)}const e=new n("ERROR","error result with no payload in response");return this.props.onError(e)}),g(this,"checkStatus",()=>{const{paymentData:t,clientKey:e,loadingContext:o,throttledInterval:r}=this.props;return s(t,e,o,r).then(a).catch(t=>({type:"network-error",props:t})).then(t=>{switch(t.type){case"success":this.onComplete(t);break;case"error":this.onError(t);break;default:this.setState({loading:!1})}return t})}),this.state={buttonStatus:"default",completed:!1,delay:t.delay,expired:!1,loading:!0,percentage:100,timePassed:0}}}g(k,"defaultProps",{delay:2e3,countdownTime:15,onError:()=>{},onComplete:()=>{},throttleTime:6e4,classNameModifiers:[],throttledInterval:1e4,introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp",showAmount:!0});export{k as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useRef as o,useEffect as r}from"../../../external/preact/hooks/dist/hooks.js";import a from"../Button/Button.js";import n from"../Spinner/Spinner.js";import s from"../../../core/Services/payment-status.js";import{processResponse as c}from"../../../core/ProcessResponse/process-response.js";import i from"../../../core/Errors/AdyenCheckoutError.js";import{useCoreContext as l}from"../../../core/Context/CoreProvider.js";import d from"../ContentSeparator/ContentSeparator.js";import m from"../../../utils/useAutoFocus.js";import{ANALYTICS_QR_CODE_DOWNLOAD as p,ANALYTICS_DOWNLOAD_STR as u}from"../../../core/Analytics/constants.js";import{AnalyticsInfoEvent as y}from"../../../core/Analytics/AnalyticsInfoEvent.js";import _ from"./components/QRDetails.js";import{QRLoaderDetailsProvider as h}from"./QRLoaderDetailsProvider.js";import{QRFinalState as f}from"./components/QRFinalState.js";function g(g){var q;const{i18n:k,loadingContext:v}=l(),[w,C]=t(!1),[b,j]=t(g.delay),[N,T]=t(!1),[D,R]=t(!0),[E,I]=t(100),[A,P]=t(0),S=o(null),x=async()=>{const{paymentData:e,clientKey:t,throttledInterval:o}=g;return s(e,t,v,o).then(c).catch(e=>({type:"network-error",props:e})).then(e=>{switch(e.type){case"success":(e=>{C(!0),R(!1);const t={data:{details:{payload:e.props.payload},paymentData:g.paymentData}};g.onComplete(t)})(e);break;case"error":(e=>{if(T(!0),R(!1),e.props.payload){const t={data:{details:{payload:e.props.payload},paymentData:g.paymentData}};g.onComplete(t)}const t=new i("ERROR","error result with no payload in response");g.onError(t)})(e);break;default:R(!1)}})};r(()=>{x()},[]),r(()=>{if(N||w||D)return;let e=b;return S.current=setTimeout(()=>{(async()=>{const t=performance.now();await x();const o=performance.now(),r=Math.round(o-t),a=A+r+e;P(a),a>=g.throttleTime&&e!==g.throttledInterval&&(j(g.throttledInterval),e=g.throttledInterval)})()},e),()=>{clearTimeout(S.current)}},[N,w,D,b,g.throttleTime,A]);const{amount:$,showAmount:L,url:B,brandLogo:M,brandName:Q,countdownTime:K,type:F,onActionHandled:O}=g,H=g.qrCodeData?`${v}utility/v1/barcode.png?type=qrCode&data=${g.qrCodeData}&clientKey=${g.clientKey}`:g.qrCodeImage,U=m();if(N)return e(f,{image:"error",message:k.get("error.subtitle.payment")});if(w)return e(f,{image:"success",message:k.get("creditCard.success")});if(D)return e("div",{className:"adyen-checkout__qr-loader"},M&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{alt:Q,src:M,className:"adyen-checkout__qr-loader__brand-logo"})),e(n,null));const z=g.classNameModifiers.map(e=>`adyen-checkout__qr-loader--${e}`);return e("div",{className:`adyen-checkout__qr-loader adyen-checkout__qr-loader--${F} ${z.join(" ")}`},M&&e("div",{className:"adyen-checkout__qr-loader__brand-logo-wrapper"},e("img",{src:M,alt:Q,className:"adyen-checkout__qr-loader__brand-logo"})),L&&$&&null!==$.value&&!!$.currency&&e("h1",{className:"adyen-checkout__qr-loader__payment_amount"},k.amount($.value,$.currency)),B&&e("div",{className:"adyen-checkout__qr-loader__app-link"},g.redirectIntroduction&&e("p",{className:"adyen-checkout__qr-loader__subtitle"},k.get(g.redirectIntroduction)),e(a,{classNameModifiers:["qr-loader"],onClick:()=>(e=>{window.location.assign(e)})(B),label:k.get(g.buttonLabel)}),e(d,null)),e("p",{ref:U,tabIndex:0,className:"adyen-checkout__qr-loader__subtitle"},"string"==typeof g.introduction?k.get(g.introduction):null===(q=g.introduction)||void 0===q?void 0:q.call(g)),e(h,{qrCodeImage:H,qrCodeData:g.qrCodeData,percentage:E,timeToPay:g.timeToPay,copyBtn:g.copyBtn,instructions:g.instructions,countdownTime:K,onTick:e=>(e=>{I(e.percentage)})(e),onQRCodeLoad:()=>{null==O||O({componentType:g.type,actionDescription:"qr-code-loaded"})},onTimeUp:()=>(T(!0),void g.onError(new i("ERROR","Payment Expired"))),handleCopy:()=>{const e=new y({type:u,target:p});g.onSubmitAnalytics(e)}},g.children?g.children:e(_,null)))}g.defaultProps={delay:2e3,countdownTime:15,onError:()=>{},onComplete:()=>{},throttleTime:6e4,classNameModifiers:[],throttledInterval:1e4,introduction:"wechatpay.scanqrcode",timeToPay:"wechatpay.timetopay",buttonLabel:"openApp",showAmount:!0};export{g as default};
2
2
  //# sourceMappingURL=QRLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QRLoader.js","sources":["../../../../../src/components/internal/QRLoader/QRLoader.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Button from '../Button';\nimport Spinner from '../Spinner';\nimport checkPaymentStatus from '../../../core/Services/payment-status';\nimport processResponse from '../../../core/ProcessResponse';\n\nimport './QRLoader.scss';\nimport { QRLoaderProps, QRLoaderState } from './types';\nimport copyToClipboard from '../../../utils/clipboard';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport ContentSeparator from '../ContentSeparator';\nimport { StatusObject } from '../Await/types';\nimport useImage from '../../../core/Context/useImage';\nimport { useA11yReporter } from '../../../core/Errors/useA11yReporter';\nimport useAutoFocus from '../../../utils/useAutoFocus';\nimport { ANALYTICS_DOWNLOAD_STR, ANALYTICS_QR_CODE_DOWNLOAD } from '../../../core/Analytics/constants';\nimport { AnalyticsInfoEvent } from '../../../core/Analytics/AnalyticsInfoEvent';\nimport { CountdownTime } from '../Countdown/types';\nimport QRDetails from './components/QRDetails';\nimport { QRLoaderDetailsProvider } from './QRLoaderDetailsProvider';\n\nconst QRCODE_URL = 'utility/v1/barcode.png?type=qrCode&data=';\n\nclass QRLoader extends Component<QRLoaderProps, QRLoaderState> {\n private timeoutId: NodeJS.Timeout | number | undefined;\n\n constructor(props: QRLoaderProps) {\n super(props);\n\n this.state = {\n buttonStatus: 'default',\n completed: false,\n delay: props.delay,\n expired: false,\n loading: true,\n percentage: 100,\n timePassed: 0\n };\n }\n\n public static defaultProps = {\n delay: 2000,\n countdownTime: 15,\n onError: () => {},\n onComplete: () => {},\n throttleTime: 60000,\n classNameModifiers: [],\n throttledInterval: 10000,\n introduction: 'wechatpay.scanqrcode',\n timeToPay: 'wechatpay.timetopay',\n buttonLabel: 'openApp',\n showAmount: true\n };\n\n componentDidMount() {\n this.statusInterval();\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeoutId);\n }\n\n public redirectToApp = (url: string | URL) => {\n window.location.assign(url);\n };\n\n // Retry until getting a complete response from the server, or it times out\n public statusInterval = (responseTime = 0) => {\n // If we are already in the final statuses, do not poll!\n if (this.state.expired || this.state.completed) return;\n\n this.setState(previous => ({ timePassed: previous.timePassed + this.props.delay + responseTime }));\n // Changes interval time to 10 seconds after 1 minute (60 seconds)\n const newDelay = this.state.timePassed >= this.props.throttleTime ? this.props.throttledInterval : this.state.delay;\n this.pollStatus(newDelay);\n };\n\n private pollStatus(delay: number) {\n clearTimeout(this.timeoutId);\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n // Wait for previous status call to finish.\n // Also taking the server response time into the consideration to calculate timePassed.\n const start = performance.now();\n await this.checkStatus();\n const end = performance.now();\n this.statusInterval(Math.round(end - start));\n }, delay);\n }\n\n private onTick = (time: CountdownTime): void => {\n this.setState({ percentage: time.percentage });\n };\n\n private onTimeUp = (): void => {\n this.setState({ expired: true });\n clearTimeout(this.timeoutId);\n this.props.onError(new AdyenCheckoutError('ERROR', 'Payment Expired'));\n };\n\n private onComplete = (status: StatusObject): void => {\n clearTimeout(this.timeoutId);\n this.setState({ completed: true, loading: false });\n\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: this.props.paymentData\n }\n };\n\n this.props.onComplete(state, this);\n };\n\n private onError = (status: StatusObject): void => {\n clearTimeout(this.timeoutId);\n this.setState({ expired: true, loading: false });\n\n if (status.props.payload) {\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: this.props.paymentData\n }\n };\n this.props.onComplete(state, this);\n }\n\n const error = new AdyenCheckoutError('ERROR', 'error result with no payload in response');\n return this.props.onError(error);\n };\n\n private checkStatus = () => {\n const { paymentData, clientKey, loadingContext, throttledInterval } = this.props;\n\n return checkPaymentStatus(paymentData, clientKey, loadingContext, throttledInterval)\n .then(processResponse)\n .catch(response => ({ type: 'network-error', props: response }))\n .then((status: StatusObject) => {\n switch (status.type) {\n case 'success':\n this.onComplete(status);\n break;\n case 'error':\n this.onError(status);\n break;\n default:\n this.setState({ loading: false });\n }\n return status;\n });\n };\n\n render({ amount, showAmount, url, brandLogo, brandName, countdownTime, type, onActionHandled }: QRLoaderProps, { expired, completed, loading }) {\n const { i18n, loadingContext } = useCoreContext();\n const getImage = useImage();\n\n const qrCodeImage = this.props.qrCodeData\n ? `${loadingContext}${QRCODE_URL}${this.props.qrCodeData}&clientKey=${this.props.clientKey}`\n : this.props.qrCodeImage;\n\n const handleCopy = (complete: () => void) => {\n void copyToClipboard(this.props.qrCodeData);\n\n const event = new AnalyticsInfoEvent({\n type: ANALYTICS_DOWNLOAD_STR,\n target: ANALYTICS_QR_CODE_DOWNLOAD\n });\n this.props.onSubmitAnalytics(event);\n\n complete();\n };\n\n const onQrCodeLoad = () => {\n onActionHandled?.({\n componentType: this.props.type,\n actionDescription: 'qr-code-loaded'\n });\n };\n\n const finalState = (image: string, message: string) => {\n const status = i18n.get(message);\n useA11yReporter(status);\n return (\n <div className=\"adyen-checkout__qr-loader adyen-checkout__qr-loader--result\">\n <img\n className=\"adyen-checkout__qr-loader__icon adyen-checkout__qr-loader__icon--result\"\n src={getImage({ imageFolder: 'components/' })(image)}\n alt={status}\n />\n <div className=\"adyen-checkout__qr-loader__subtitle\">{status}</div>\n </div>\n );\n };\n\n if (expired) {\n return finalState('error', 'error.subtitle.payment');\n }\n\n if (completed) {\n return finalState('success', 'creditCard.success');\n }\n\n if (loading) {\n return (\n <div className=\"adyen-checkout__qr-loader\">\n {brandLogo && (\n <div className=\"adyen-checkout__qr-loader__brand-logo-wrapper\">\n <img alt={brandName} src={brandLogo} className=\"adyen-checkout__qr-loader__brand-logo\" />\n </div>\n )}\n <Spinner />\n </div>\n );\n }\n\n const qrSubtitleRef = useAutoFocus();\n const classnames = this.props.classNameModifiers.map(m => `adyen-checkout__qr-loader--${m}`);\n\n return (\n <div className={`adyen-checkout__qr-loader adyen-checkout__qr-loader--${type} ${classnames.join(' ')}`}>\n {brandLogo && (\n <div className=\"adyen-checkout__qr-loader__brand-logo-wrapper\">\n <img src={brandLogo} alt={brandName} className=\"adyen-checkout__qr-loader__brand-logo\" />\n </div>\n )}\n\n {showAmount && amount && amount.value !== null && !!amount.currency && (\n <h1 className=\"adyen-checkout__qr-loader__payment_amount\">{i18n.amount(amount.value, amount.currency)}</h1>\n )}\n\n {url && (\n <div className=\"adyen-checkout__qr-loader__app-link\">\n {this.props.redirectIntroduction && (\n <p className=\"adyen-checkout__qr-loader__subtitle\">{i18n.get(this.props.redirectIntroduction)}</p>\n )}\n <Button classNameModifiers={['qr-loader']} onClick={() => this.redirectToApp(url)} label={i18n.get(this.props.buttonLabel)} />\n <ContentSeparator />\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <p ref={qrSubtitleRef} tabIndex={0} className=\"adyen-checkout__qr-loader__subtitle\">\n {typeof this.props.introduction === 'string' ? i18n.get(this.props.introduction) : this.props.introduction?.()}\n </p>\n\n <QRLoaderDetailsProvider\n qrCodeImage={qrCodeImage}\n qrCodeData={this.props.qrCodeData}\n percentage={this.state.percentage}\n timeToPay={this.props.timeToPay}\n copyBtn={this.props.copyBtn}\n instructions={this.props.instructions}\n countdownTime={countdownTime}\n onTick={(time: CountdownTime) => this.onTick(time)}\n onQRCodeLoad={onQrCodeLoad}\n onTimeUp={() => this.onTimeUp()}\n handleCopy={handleCopy}\n >\n {this.props.children ? this.props.children : <QRDetails />}\n </QRLoaderDetailsProvider>\n </div>\n );\n }\n}\n\nexport default QRLoader;\n"],"names":["QRLoader","Component","componentDidMount","this","statusInterval","componentWillUnmount","clearTimeout","timeoutId","pollStatus","delay","setTimeout","async","start","performance","now","checkStatus","end","Math","round","render","amount","showAmount","url","brandLogo","brandName","countdownTime","type","onActionHandled","expired","completed","loading","_this_props_introduction","_this_props","i18n","loadingContext","useCoreContext","getImage","useImage","qrCodeImage","props","qrCodeData","clientKey","finalState","image","message","status","get","useA11yReporter","h","div","className","img","src","imageFolder","alt","Spinner","qrSubtitleRef","useAutoFocus","classnames","classNameModifiers","map","m","join","value","currency","h1","redirectIntroduction","p","Button","onClick","redirectToApp","label","buttonLabel","ContentSeparator","ref","tabIndex","introduction","call","QRLoaderDetailsProvider","percentage","state","timeToPay","copyBtn","instructions","onTick","time","onQRCodeLoad","componentType","actionDescription","onTimeUp","handleCopy","complete","copyToClipboard","event","AnalyticsInfoEvent","ANALYTICS_DOWNLOAD_STR","target","ANALYTICS_QR_CODE_DOWNLOAD","onSubmitAnalytics","children","QRDetails","constructor","super","_define_property","window","location","assign","responseTime","setState","previous","timePassed","newDelay","throttleTime","throttledInterval","onError","AdyenCheckoutError","onComplete","data","details","payload","paymentData","error","checkPaymentStatus","then","processResponse","catch","response","buttonStatus","defaultProps"],"mappings":"mnCAwBA,MAAMA,UAAiBC,EA+BnBC,iBAAAA,GACIC,KAAKC,gBACT,CAEAC,oBAAAA,GACIC,aAAaH,KAAKI,UACtB,CAiBQC,UAAAA,CAAWC,GACfH,aAAaH,KAAKI,WAGlBJ,KAAKI,UAAYG,WAAWC,UAGxB,MAAMC,EAAQC,YAAYC,YACpBX,KAAKY,cACX,MAAMC,EAAMH,YAAYC,MACxBX,KAAKC,eAAea,KAAKC,MAAMF,EAAMJ,KACtCH,EACP,CAiEAU,MAAAA,EAAOC,OAAEA,EAAMC,WAAEA,EAAUC,IAAEA,EAAGC,UAAEA,EAASC,UAAEA,EAASC,cAAEA,EAAaC,KAAEA,EAAIC,gBAAEA,IAAkCC,QAAEA,EAAOC,UAAEA,EAASC,QAAEA,QA0FlCC,EAAAC,EAzF/F,MAAMC,KAAEA,EAAIC,eAAEA,GAAmBC,IAC3BC,EAAWC,IAEXC,EAAcnC,KAAKoC,MAAMC,WACzB,GAAGN,4CAA8B/B,KAAKoC,MAAMC,wBAAwBrC,KAAKoC,MAAME,YAC/EtC,KAAKoC,MAAMD,YAqBXI,EAAa,CAACC,EAAeC,KAC/B,MAAMC,EAASZ,EAAKa,IAAIF,GAExB,OADAG,EAAgBF,GAEZG,EAACC,MAAAA,CAAIC,UAAU,+DACXF,EAACG,MAAAA,CACGD,UAAU,0EACVE,IAAKhB,EAAS,CAAEiB,YAAa,eAAxBjB,CAAyCO,GAC9CW,IAAKT,IAETG,EAACC,MAAAA,CAAIC,UAAU,uCAAuCL,KAKlE,GAAIjB,EACA,OAAOc,EAAW,QAAS,0BAG/B,GAAIb,EACA,OAAOa,EAAW,UAAW,sBAGjC,GAAIZ,EACA,OACIkB,EAACC,MAAAA,CAAIC,UAAU,6BACV3B,GACGyB,EAACC,MAAAA,CAAIC,UAAU,iDACXF,EAACG,MAAAA,CAAIG,IAAK9B,EAAW4B,IAAK7B,EAAW2B,UAAU,2CAGvDF,EAACO,EAAAA,OAKb,MAAMC,EAAgBC,IAChBC,EAAavD,KAAKoC,MAAMoB,mBAAmBC,IAAIC,GAAK,8BAA8BA,KAExF,OACIb,EAACC,MAAAA,CAAIC,UAAW,wDAAwDxB,KAAQgC,EAAWI,KAAK,QAC3FvC,GACGyB,EAACC,MAAAA,CAAIC,UAAU,iDACXF,EAACG,MAAAA,CAAIC,IAAK7B,EAAW+B,IAAK9B,EAAW0B,UAAU,2CAItD7B,GAAcD,GAA2B,OAAjBA,EAAO2C,SAAoB3C,EAAO4C,UACvDhB,EAACiB,KAAAA,CAAGf,UAAU,6CAA6CjB,EAAKb,OAAOA,EAAO2C,MAAO3C,EAAO4C,WAG/F1C,GACG0B,EAACC,MAAAA,CAAIC,UAAU,uCACV/C,KAAKoC,MAAM2B,sBACRlB,EAACmB,IAAAA,CAAEjB,UAAU,uCAAuCjB,EAAKa,IAAI3C,KAAKoC,MAAM2B,uBAE5ElB,EAACoB,EAAAA,CAAOT,mBAAoB,CAAC,aAAcU,QAAS,IAAMlE,KAAKmE,cAAchD,GAAMiD,MAAOtC,EAAKa,IAAI3C,KAAKoC,MAAMiC,eAC9GxB,EAACyB,SAKTzB,EAACmB,IAAAA,CAAEO,IAAKlB,EAAemB,SAAU,EAAGzB,UAAU,uCACN,iBAA5B/C,KAAKoC,MAAMqC,aAA4B3C,EAAKa,IAAI3C,KAAKoC,MAAMqC,cAAuC,QAAvB7C,GAAAC,EAAA7B,KAAKoC,OAAMqC,oBAAX,IAAA7C,OAAA,EAAAA,EAAA8C,KAAA7C,IAGvFgB,EAAC8B,EAAAA,CACGxC,YAAaA,EACbE,WAAYrC,KAAKoC,MAAMC,WACvBuC,WAAY5E,KAAK6E,MAAMD,WACvBE,UAAW9E,KAAKoC,MAAM0C,UACtBC,QAAS/E,KAAKoC,MAAM2C,QACpBC,aAAchF,KAAKoC,MAAM4C,aACzB1D,cAAeA,EACf2D,OAASC,GAAwBlF,KAAKiF,OAAOC,GAC7CC,aAlFS,KACjB3D,SAAAA,EAAkB,CACd4D,cAAepF,KAAKoC,MAAMb,KAC1B8D,kBAAmB,oBAgFfC,SAAU,IAAMtF,KAAKsF,WACrBC,WAhGQC,IACXC,EAAgBzF,KAAKoC,MAAMC,YAEhC,MAAMqD,EAAQ,IAAIC,EAAmB,CACjCpE,KAAMqE,EACNC,OAAQC,IAEZ9F,KAAKoC,MAAM2D,kBAAkBL,GAE7BF,MAyFSxF,KAAKoC,MAAM4D,SAAWhG,KAAKoC,MAAM4D,SAAWnD,EAACoD,EAAAA,OAI9D,CA9OA,WAAAC,CAAY9D,GACR+D,MAAM/D,GAHVgE,EAAApG,KAAQI,iBAAR,GAsCAgG,EAAApG,KAAOmE,gBAAiBhD,IACpBkF,OAAOC,SAASC,OAAOpF,KAI3BiF,EAAApG,KAAOC,iBAAiB,CAACuG,EAAe,KAEpC,GAAIxG,KAAK6E,MAAMpD,SAAWzB,KAAK6E,MAAMnD,UAAW,OAEhD1B,KAAKyG,SAASC,KAAeC,WAAYD,EAASC,WAAa3G,KAAKoC,MAAM9B,MAAQkG,KAElF,MAAMI,EAAW5G,KAAK6E,MAAM8B,YAAc3G,KAAKoC,MAAMyE,aAAe7G,KAAKoC,MAAM0E,kBAAoB9G,KAAK6E,MAAMvE,MAC9GN,KAAKK,WAAWuG,KAiBpBR,EAAApG,KAAQiF,SAAUC,IACdlF,KAAKyG,SAAS,CAAE7B,WAAYM,EAAKN,eAGrCwB,OAAQd,WAAW,KACftF,KAAKyG,SAAS,CAAEhF,SAAS,IACzBtB,aAAaH,KAAKI,WAClBJ,KAAKoC,MAAM2E,QAAQ,IAAIC,EAAmB,QAAS,sBAGvDZ,EAAApG,KAAQiH,aAAcvE,IAClBvC,aAAaH,KAAKI,WAClBJ,KAAKyG,SAAS,CAAE/E,WAAW,EAAMC,SAAS,IAE1C,MAAMkD,EAAQ,CACVqC,KAAM,CACFC,QAAS,CAAEC,QAAS1E,EAAON,MAAMgF,SACjCC,YAAarH,KAAKoC,MAAMiF,cAIhCrH,KAAKoC,MAAM6E,WAAWpC,EAAO7E,QAGjCoG,EAAApG,KAAQ+G,UAAWrE,IAIf,GAHAvC,aAAaH,KAAKI,WAClBJ,KAAKyG,SAAS,CAAEhF,SAAS,EAAME,SAAS,IAEpCe,EAAON,MAAMgF,QAAS,CACtB,MAAMvC,EAAQ,CACVqC,KAAM,CACFC,QAAS,CAAEC,QAAS1E,EAAON,MAAMgF,SACjCC,YAAarH,KAAKoC,MAAMiF,cAGhCrH,KAAKoC,MAAM6E,WAAWpC,EAAO7E,KACjC,CAEA,MAAMsH,EAAQ,IAAIN,EAAmB,QAAS,4CAC9C,OAAOhH,KAAKoC,MAAM2E,QAAQO,KAG9BlB,OAAQxF,cAAc,KAClB,MAAMyG,YAAEA,EAAW/E,UAAEA,EAASP,eAAEA,EAAc+E,kBAAEA,GAAsB9G,KAAKoC,MAE3E,OAAOmF,EAAmBF,EAAa/E,EAAWP,EAAgB+E,GAC7DU,KAAKC,GACLC,MAAMC,IAAAA,CAAepG,KAAM,gBAAiBa,MAAOuF,KACnDH,KAAM9E,IACH,OAAQA,EAAOnB,MACX,IAAK,UACDvB,KAAKiH,WAAWvE,GAChB,MACJ,IAAK,QACD1C,KAAK+G,QAAQrE,GACb,MACJ,QACI1C,KAAKyG,SAAS,CAAE9E,SAAS,IAEjC,OAAOe,MAzHf1C,KAAK6E,MAAQ,CACT+C,aAAc,UACdlG,WAAW,EACXpB,MAAO8B,EAAM9B,MACbmB,SAAS,EACTE,SAAS,EACTiD,WAAY,IACZ+B,WAAY,EAEpB,EAEAP,EAjBEvG,EAiBYgI,eAAe,CACzBvH,MAAO,IACPgB,cAAe,GACfyF,QAAS,OACTE,WAAY,OACZJ,aAAc,IACdrD,mBAAoB,GACpBsD,kBAAmB,IACnBrC,aAAc,uBACdK,UAAW,sBACXT,YAAa,UACbnD,YAAY"}
1
+ {"version":3,"file":"QRLoader.js","sources":["../../../../../src/components/internal/QRLoader/QRLoader.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport Button from '../Button';\nimport Spinner from '../Spinner';\nimport checkPaymentStatus from '../../../core/Services/payment-status';\nimport processResponse from '../../../core/ProcessResponse';\nimport { QRLoaderProps } from './types';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport ContentSeparator from '../ContentSeparator';\nimport { StatusObject } from '../Await/types';\nimport useAutoFocus from '../../../utils/useAutoFocus';\nimport { ANALYTICS_DOWNLOAD_STR, ANALYTICS_QR_CODE_DOWNLOAD } from '../../../core/Analytics/constants';\nimport { AnalyticsInfoEvent } from '../../../core/Analytics/AnalyticsInfoEvent';\nimport { CountdownTime } from '../Countdown/types';\nimport QRDetails from './components/QRDetails';\nimport { QRLoaderDetailsProvider } from './QRLoaderDetailsProvider';\nimport { QRFinalState } from './components/QRFinalState';\nimport './QRLoader.scss';\n\nconst QRCODE_URL = 'utility/v1/barcode.png?type=qrCode&data=';\n\nfunction QRLoader(props: QRLoaderProps) {\n const { i18n, loadingContext } = useCoreContext();\n const [completed, setCompleted] = useState(false);\n const [delay, setDelay] = useState(props.delay);\n const [expired, setExpired] = useState(false);\n const [loading, setLoading] = useState(true);\n const [percentage, setPercentage] = useState(100);\n const [timePassed, setTimePassed] = useState(0);\n const timeoutRef = useRef<NodeJS.Timeout | number | null>(null);\n\n const redirectToApp = (url: string | URL): void => {\n window.location.assign(url);\n };\n\n const onTick = (time: CountdownTime): void => {\n setPercentage(time.percentage);\n };\n\n const onTimeUp = (): void => {\n setExpired(true);\n props.onError(new AdyenCheckoutError('ERROR', 'Payment Expired'));\n };\n\n const onComplete = (status: StatusObject): void => {\n setCompleted(true);\n setLoading(false);\n\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: props.paymentData\n }\n };\n\n props.onComplete(state);\n };\n\n const onError = (status: StatusObject): void => {\n setExpired(true);\n setLoading(false);\n\n if (status.props.payload) {\n const state = {\n data: {\n details: { payload: status.props.payload },\n paymentData: props.paymentData\n }\n };\n props.onComplete(state);\n }\n\n const error = new AdyenCheckoutError('ERROR', 'error result with no payload in response');\n props.onError(error);\n };\n\n const checkStatus = async (): Promise<void> => {\n const { paymentData, clientKey, throttledInterval } = props;\n\n return checkPaymentStatus(paymentData, clientKey, loadingContext, throttledInterval)\n .then(processResponse)\n .catch(response => ({ type: 'network-error', props: response }))\n .then((status: StatusObject) => {\n switch (status.type) {\n case 'success':\n onComplete(status);\n break;\n case 'error':\n onError(status);\n break;\n default:\n setLoading(false);\n }\n });\n };\n\n useEffect(() => {\n void checkStatus();\n }, []);\n\n useEffect(() => {\n if (expired || completed || loading) {\n return;\n }\n\n let currentDelay = delay;\n\n const statusInterval = async (): Promise<void> => {\n const start = performance.now();\n await checkStatus();\n const end = performance.now();\n const responseTime = Math.round(end - start);\n\n const actualTimePassed = timePassed + responseTime + currentDelay;\n setTimePassed(actualTimePassed);\n\n if (actualTimePassed >= props.throttleTime && currentDelay !== props.throttledInterval) {\n setDelay(props.throttledInterval);\n currentDelay = props.throttledInterval;\n }\n };\n\n timeoutRef.current = setTimeout(() => {\n void statusInterval();\n }, currentDelay);\n\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, [expired, completed, loading, delay, props.throttleTime, timePassed]);\n\n const { amount, showAmount, url, brandLogo, brandName, countdownTime, type, onActionHandled } = props;\n\n const qrCodeImage = props.qrCodeData ? `${loadingContext}${QRCODE_URL}${props.qrCodeData}&clientKey=${props.clientKey}` : props.qrCodeImage;\n\n const handleCopy = () => {\n const event = new AnalyticsInfoEvent({\n type: ANALYTICS_DOWNLOAD_STR,\n target: ANALYTICS_QR_CODE_DOWNLOAD\n });\n props.onSubmitAnalytics(event);\n };\n\n const onQrCodeLoad = () => {\n onActionHandled?.({\n componentType: props.type,\n actionDescription: 'qr-code-loaded'\n });\n };\n\n const qrSubtitleRef = useAutoFocus();\n\n if (expired) {\n return <QRFinalState image=\"error\" message={i18n.get('error.subtitle.payment')} />;\n }\n\n if (completed) {\n return <QRFinalState image=\"success\" message={i18n.get('creditCard.success')} />;\n }\n\n if (loading) {\n return (\n <div className=\"adyen-checkout__qr-loader\">\n {brandLogo && (\n <div className=\"adyen-checkout__qr-loader__brand-logo-wrapper\">\n <img alt={brandName} src={brandLogo} className=\"adyen-checkout__qr-loader__brand-logo\" />\n </div>\n )}\n <Spinner />\n </div>\n );\n }\n\n const classnames = props.classNameModifiers.map(m => `adyen-checkout__qr-loader--${m}`);\n\n return (\n <div className={`adyen-checkout__qr-loader adyen-checkout__qr-loader--${type} ${classnames.join(' ')}`}>\n {brandLogo && (\n <div className=\"adyen-checkout__qr-loader__brand-logo-wrapper\">\n <img src={brandLogo} alt={brandName} className=\"adyen-checkout__qr-loader__brand-logo\" />\n </div>\n )}\n\n {showAmount && amount && amount.value !== null && !!amount.currency && (\n <h1 className=\"adyen-checkout__qr-loader__payment_amount\">{i18n.amount(amount.value, amount.currency)}</h1>\n )}\n\n {url && (\n <div className=\"adyen-checkout__qr-loader__app-link\">\n {props.redirectIntroduction && <p className=\"adyen-checkout__qr-loader__subtitle\">{i18n.get(props.redirectIntroduction)}</p>}\n <Button classNameModifiers={['qr-loader']} onClick={() => redirectToApp(url)} label={i18n.get(props.buttonLabel)} />\n <ContentSeparator />\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <p ref={qrSubtitleRef} tabIndex={0} className=\"adyen-checkout__qr-loader__subtitle\">\n {typeof props.introduction === 'string' ? i18n.get(props.introduction) : props.introduction?.()}\n </p>\n\n <QRLoaderDetailsProvider\n qrCodeImage={qrCodeImage}\n qrCodeData={props.qrCodeData}\n percentage={percentage}\n timeToPay={props.timeToPay}\n copyBtn={props.copyBtn}\n instructions={props.instructions}\n countdownTime={countdownTime}\n onTick={(time: CountdownTime) => onTick(time)}\n onQRCodeLoad={onQrCodeLoad}\n onTimeUp={() => onTimeUp()}\n handleCopy={handleCopy}\n >\n {props.children ? props.children : <QRDetails />}\n </QRLoaderDetailsProvider>\n </div>\n );\n}\n\nQRLoader.defaultProps = {\n delay: 2000,\n countdownTime: 15,\n onError: () => {},\n onComplete: () => {},\n throttleTime: 60000,\n classNameModifiers: [],\n throttledInterval: 10000,\n introduction: 'wechatpay.scanqrcode',\n timeToPay: 'wechatpay.timetopay',\n buttonLabel: 'openApp',\n showAmount: true\n};\n\nexport default QRLoader;\n"],"names":["QRLoader","props","i18n","loadingContext","useCoreContext","completed","setCompleted","useState","delay","setDelay","expired","setExpired","loading","setLoading","percentage","setPercentage","timePassed","setTimePassed","timeoutRef","useRef","checkStatus","async","paymentData","clientKey","throttledInterval","checkPaymentStatus","then","processResponse","catch","response","type","status","state","data","details","payload","onComplete","error","AdyenCheckoutError","onError","useEffect","currentDelay","current","setTimeout","start","performance","now","end","responseTime","Math","round","actualTimePassed","throttleTime","statusInterval","clearTimeout","amount","showAmount","url","brandLogo","brandName","countdownTime","onActionHandled","qrCodeImage","qrCodeData","qrSubtitleRef","useAutoFocus","h","QRFinalState","image","message","get","div","className","img","alt","src","Spinner","classnames","classNameModifiers","map","m","join","value","currency","h1","redirectIntroduction","p","Button","onClick","window","location","assign","redirectToApp","label","buttonLabel","ContentSeparator","ref","tabIndex","introduction","QRLoaderDetailsProvider","timeToPay","copyBtn","instructions","onTick","time","onQRCodeLoad","componentType","actionDescription","onTimeUp","handleCopy","event","AnalyticsInfoEvent","ANALYTICS_DOWNLOAD_STR","target","ANALYTICS_QR_CODE_DOWNLOAD","onSubmitAnalytics","children","QRDetails","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QRLoaderDetailsProvider.js","sources":["../../../../../src/components/internal/QRLoader/QRLoaderDetailsProvider.tsx"],"sourcesContent":["import { h, createContext } from 'preact';\nimport type { ComponentChildren } from 'preact';\nimport { useContext } from 'preact/hooks';\nimport { CountdownTime } from '../Countdown/types';\n\ninterface QRLoaderDetailsProviderProps {\n qrCodeImage: string;\n qrCodeData: string;\n countdownTime: number;\n percentage: number;\n timeToPay: string;\n instructions?: string | (() => h.JSX.Element);\n copyBtn: boolean;\n onTick: (time: CountdownTime) => void;\n onQRCodeLoad: () => void;\n onTimeUp: () => void;\n handleCopy: (onComplete: () => void) => void;\n children: ComponentChildren;\n}\n\ntype QRLoaderDetailsContextValue = Omit<QRLoaderDetailsProviderProps, 'children'>;\n\nconst QRLoaderDetailsContext = createContext<QRLoaderDetailsContextValue | undefined>(undefined);\n\nconst QRLoaderDetailsProvider = ({ children, ...props }: QRLoaderDetailsProviderProps) => {\n return <QRLoaderDetailsContext.Provider value={{ ...props }}>{children}</QRLoaderDetailsContext.Provider>;\n};\n\nconst useQRLoaderDetails = (): QRLoaderDetailsContextValue => {\n const context = useContext(QRLoaderDetailsContext);\n\n if (context === undefined) {\n throw new Error('\"useQRLoaderDetails\" must be used within a QRLoaderDetailsContext');\n }\n\n return context;\n};\n\nexport { QRLoaderDetailsProvider, useQRLoaderDetails };\n"],"names":["QRLoaderDetailsContext","createContext","undefined","QRLoaderDetailsProvider","_param","children","props","h","Provider","value","_object_spread","useQRLoaderDetails","context","useContext","Error"],"mappings":"q9BAsBA,MAAMA,EAAyBC,OAAuDC,GAEhFC,EAA0BC,QAACC,SAAEA,GAAkDD,EAArCE,EAAAA,EAAAA,EAAAA,CAAbD,aAC/B,OAAOE,EAACP,EAAuBQ,SAAQ,CAACC,MAAOC,EAAA,CAAA,EAAKJ,IAAUD,IAG5DM,EAAqB,KACvB,MAAMC,EAAUC,EAAWb,GAE3B,QAAgBE,IAAZU,EACA,MAAM,IAAIE,MAAM,qEAGpB,OAAOF"}
1
+ {"version":3,"file":"QRLoaderDetailsProvider.js","sources":["../../../../../src/components/internal/QRLoader/QRLoaderDetailsProvider.tsx"],"sourcesContent":["import { h, createContext } from 'preact';\nimport type { ComponentChildren } from 'preact';\nimport { useContext } from 'preact/hooks';\nimport { CountdownTime } from '../Countdown/types';\n\ninterface QRLoaderDetailsProviderProps {\n qrCodeImage: string;\n qrCodeData: string;\n countdownTime: number;\n percentage: number;\n timeToPay: string;\n instructions?: string | (() => h.JSX.Element);\n copyBtn: boolean;\n onTick: (time: CountdownTime) => void;\n onQRCodeLoad: () => void;\n onTimeUp: () => void;\n handleCopy?: (e: h.JSX.TargetedMouseEvent<HTMLButtonElement>) => void;\n children: ComponentChildren;\n}\n\ntype QRLoaderDetailsContextValue = Omit<QRLoaderDetailsProviderProps, 'children'>;\n\nconst QRLoaderDetailsContext = createContext<QRLoaderDetailsContextValue | undefined>(undefined);\n\nconst QRLoaderDetailsProvider = ({ children, ...props }: QRLoaderDetailsProviderProps) => {\n return <QRLoaderDetailsContext.Provider value={{ ...props }}>{children}</QRLoaderDetailsContext.Provider>;\n};\n\nconst useQRLoaderDetails = (): QRLoaderDetailsContextValue => {\n const context = useContext(QRLoaderDetailsContext);\n\n if (context === undefined) {\n throw new Error('\"useQRLoaderDetails\" must be used within a QRLoaderDetailsContext');\n }\n\n return context;\n};\n\nexport { QRLoaderDetailsProvider, useQRLoaderDetails };\n"],"names":["QRLoaderDetailsContext","createContext","undefined","QRLoaderDetailsProvider","_param","children","props","h","Provider","value","_object_spread","useQRLoaderDetails","context","useContext","Error"],"mappings":"q9BAsBA,MAAMA,EAAyBC,OAAuDC,GAEhFC,EAA0BC,QAACC,SAAEA,GAAkDD,EAArCE,EAAAA,EAAAA,EAAAA,CAAbD,aAC/B,OAAOE,EAACP,EAAuBQ,SAAQ,CAACC,MAAOC,EAAA,CAAA,EAAKJ,IAAUD,IAG5DM,EAAqB,KACvB,MAAMC,EAAUC,EAAWb,GAE3B,QAAgBE,IAAZU,EACA,MAAM,IAAIE,MAAM,qEAGpB,OAAOF"}
@@ -1,2 +1,2 @@
1
- import{createElement as o}from"../../../../external/preact/dist/preact.js";import e from"../../Button/Button.js";import{PREFIX as t}from"../../Icon/constants.js";import n from"../../../../core/Context/useImage.js";import{useCoreContext as r}from"../../../../core/Context/CoreProvider.js";const c=({copyLabel:c,copiedLabel:l,handleCopy:a})=>{const{i18n:m}=r(),p=n();return o(e,{variant:"action",onClick:(o,{complete:e})=>a(e),icon:p({imageFolder:"components/"})(`${t}copy`),onClickCompletedIcon:p({imageFolder:"components/"})(`${t}checkmark`),label:null!=c?c:m.get("button.copy"),onClickCompletedLabel:null!=l?l:m.get("button.copied")})};export{c as default};
1
+ import{createElement as e}from"../../../../external/preact/dist/preact.js";import{CopyButton as t}from"../../Button/CopyButton.js";const o=({text:o,copyLabel:a,copiedLabel:l,handleCopy:p})=>e(t,{onClick:p,text:o,label:a,copiedLabel:l});export{o as default};
2
2
  //# sourceMappingURL=QRCodeCopyButton.js.map