UNPKG

@adyen/adyen-web

Version:

[![npm](https://img.shields.io/npm/v/@adyen/adyen-web.svg)](https://www.npmjs.com/package/@adyen/adyen-web)

3 lines (2 loc) 4.06 kB
import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import n from"./components/PaypalComponent.js";import i from"./defaultProps.js";import s from"../../core/Errors/AdyenCheckoutError.js";import{ERRORS as r}from"./constants.js";import{TxVariants as a}from"../tx-variants.js";import{formatPaypalOrderContactToAdyenFormat as o}from"./utils/format-paypal-order-contact-to-adyen-format.js";import{AnalyticsInfoEvent as h,InfoEventType as p}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class l extends t{formatProps(e){const t=e.configuration?.merchantId,n=e.configuration?.intent,i=0===e.amount?.value?"tokenize":e.intent||n,s="tokenize"===i||e.vault,r="continue"===e.userAction;return{...e,commit:!r&&e.commit,vault:s,configuration:{intent:i,merchantId:t}}}beforeRender(e){const t=new h({type:p.rendered,component:this.type,configData:{...e,showPayButton:this.props.showPayButton},...e?.isExpress&&{isExpress:e.isExpress},...e?.expressPage&&{expressPage:e.expressPage}});this.analytics.sendAnalytics(t)}updatePaymentData(e){e||console.warn("PayPal - Updating payment data with an invalid value"),this.paymentData=e}formatData(){const{isExpress:e,userAction:t}=this.props;return{paymentMethod:{type:l.type,userAction:t,subtype:e?"express":l.subtype}}}get isValid(){return!0}handleResolve(e){if(!this.resolve)return this.handleError(new s("ERROR",r.WRONG_INSTANCE));this.resolve(e)}handleReject(e){if(!this.reject)return this.handleError(new s("ERROR",r.WRONG_INSTANCE));this.reject(new Error(e))}handleSubmit(){return super.submit(),new Promise((e,t)=>{this.resolve=e,this.reject=t})}handleOnShippingAddressChange(e,t){return this.props.onShippingAddressChange(e,t,this)}handleOnShippingOptionsChange(e,t){return this.props.onShippingOptionsChange(e,t,this)}componentToRender(){if(!this.props.showPayButton)return null;const{onShippingAddressChange:t,onShippingOptionsChange:i,...r}=this.props;return e(n,{ref:e=>{this.componentRef=e},...r,...t&&{onShippingAddressChange:this.handleOnShippingAddressChange},...i&&{onShippingOptionsChange:this.handleOnShippingOptionsChange},onCancel:()=>this.handleError(new s("CANCEL")),onChange:this.setState,onApprove:this.handleOnApprove,onError:e=>{this.handleError(new s("ERROR",e.toString(),{cause:e}))},onScriptLoadFailure:e=>this.handleError(e),onSubmit:this.handleSubmit})}constructor(e,t){super(e,t),d(this,"paymentData",null),d(this,"resolve",null),d(this,"reject",null),d(this,"submit",()=>{this.handleError(new s("IMPLEMENTATION_ERROR",r.SUBMIT_NOT_SUPPORTED))}),d(this,"handleAction",e=>this.updateWithAction(e)),d(this,"updateWithAction",e=>{if(e.paymentMethodType!==this.type)throw new Error("Invalid Action");return e.paymentData&&(this.paymentData=e.paymentData),e.sdkData&&e.sdkData.token?(this.onActionHandled({componentType:this.type,actionDescription:"sdk-loaded",originalAction:e}),this.handleResolve(e.sdkData.token)):this.handleReject(r.NO_TOKEN_PROVIDED),null}),d(this,"handleOnApprove",(e,t)=>{const{onAuthorized:n}=this.props,i={data:{details:e,paymentData:this.paymentData}};if(n)return t.order.get().then(e=>{const t=o(e?.payer),i=o(e?.purchase_units?.[0].shipping,!0);return this.setState({authorizedEvent:e,...t&&{billingAddress:t},...i&&{deliveryAddress:i}}),new Promise((s,r)=>n({authorizedEvent:e,...t&&{billingAddress:t},...i&&{deliveryAddress:i}},{resolve:s,reject:r}))}).then(()=>this.handleAdditionalDetails(i)).catch(e=>this.handleError(new s("ERROR","Something went wrong while parsing PayPal Order",{cause:e})));this.handleAdditionalDetails(i)}),this.handleSubmit=this.handleSubmit.bind(this),this.handleOnShippingAddressChange=this.handleOnShippingAddressChange.bind(this),this.handleOnShippingOptionsChange=this.handleOnShippingOptionsChange.bind(this)}}d(l,"type",a.paypal),d(l,"subtype","sdk"),d(l,"defaultProps",i);export{l as default}; //# sourceMappingURL=Paypal.js.map