(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var s in n)t.o(n,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:n[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.wcPPCP.cart;var n=t.n(e);const s=window.wcPPCP.utils,i=window.wcPPCP.controllers,a=window.wcPPCP.context;var r=t.n(a);const o=window.jQuery;var l=t.n(o);const c=window.wcPPCP.actions;var p=t.n(c);const h=class{constructor({id:t,settings:e,controller:n}){this.id=t,this.settings=e,this.controller=n,this.paypal=null,this.capabilities=[],"payment_method"===this.settings.buttonPlacement&&this.capabilities.push("place_order_button"),this.actions=new(p())}initialize(){}setController(t){this.controller=t}setPayPal(t){this.paypal=t}async canMakePayment(){return!0}shouldCreateElement(t){return!0}async createPaymentElement(t){throw new Error("Must implement createPaymentElement()")}getOrderFieldKey(){return`${this.id}_paypal_order_id`}getTokenFieldKey(){return`${this.id}_payment_token`}enablePaymentElement(){}disablePaymentElement(){}destroyPaymentElement(){}validatePaymentElement(){return!0}supports(t){return this.capabilities.includes(t)}},d=class extends h{async onApprove(t,e=null){return t.orderID&&(0,s.setFieldValue)(this.getOrderFieldKey(),t.orderID,null),t.vaultSetupToken?this.handleVaultSetupToken(t):this.handleDirectPayment(t,e)}async handleVaultSetupToken(t){try{const e=await this.controller.createPaymentToken(t.vaultSetupToken,{order_id:t.orderID}),n=this.extractTokenCheckoutData(e);(0,s.setFieldValue)(`${this.id}_payment_token`,e.id,null),this.controller.submit(n)}catch(t){this.controller.submitError(t)}}async handleDirectPayment(t,e){try{let t={};if(e&&e.order){const n=await e.order.get();t=this.extractStandardizedCheckoutData(n)}this.controller.submit(t)}catch(t){this.controller.submitError(t)}}extractStandardizedCheckoutData(t){const e={};if(t?.payer){let n={};t.payer.address&&(n={...(0,s.convertPayPalAddressToCart)(t.payer.address)}),t.payer.name&&(n.first_name=t.payer.name.given_name,n.last_name=t.payer.name.surname),t.payer.email_address&&(n.email=t.payer.email_address),t.payer.phone?.phone_number?.national_number&&(n.phone=t.payer.phone.phone_number.national_number),e.billing=n}if(t?.purchase_units?.[0]?.shipping){let n={};const i=t.purchase_units[0].shipping;if(i.address&&(n={...(0,s.convertPayPalAddressToCart)(i.address)}),i.name?.full_name){const t=(0,s.extractFullName)(i.name.full_name);n.first_name=t[0],n.last_name=t[1]}e.shipping=n}return e}extractTokenCheckoutData(t){const e={};if(t?.payment_source?.paypal){let n={};const i=t.payment_source.paypal;if(i.name&&(n.first_name=i.name.given_name||"",n.last_name=i.name.surname||""),i.email_address&&(n.email=i.email_address),i.phone?.phone_number?.national_number&&(n.phone=i.phone.phone_number.national_number),e.billing=n,i.shipping?.address){let t={};const n=i.shipping;if(t={...(0,s.convertPayPalAddressToCart)(n.address)},n.name?.full_name){const e=(0,s.extractFullName)(n.name.full_name);t.first_name=e[0],t.last_name=e[1]}e.shipping=t}}if(t?.payment_source?.card){let n={};const i=t.payment_source.card;if(i.name){const t=(0,s.extractFullName)(i.name);n.first_name=t[0],n.last_name=t[1]}if(i.billing_address){const t=(0,s.convertPayPalAddressToCart)(i.billing_address);n={...n,...t}}e.billing=n}return e}onCancel(t,e){this.orderId=t?.orderID||null,l()(document.body).triggerHandler("wc_ppcp_on_cancel",[this,e,t]),this.controller.onCancel()}onError(t,e=null){this.controller.onError(t,e)}onDestroy(t){l()(document.body).triggerHandler("wc_ppcp_on_destroy",[this.controller,t])}},u=(0,s.getSetting)("ppcp_data"),y=new class extends d{constructor(t){super(t),this.capabilities=[...this.capabilities,"disable_for_terms"],this.buttonActions={},this.buttons={}}initialize(){this.controller.context.isCheckout()&&this.actions.addFilter("field_population_options",this.getFieldOptions.bind(this),10,2)}getFieldOptions(t,e){return e===this.controller&&e.isPaymentGatewaySelected()&&(t.skipShipping=!!this.settings.paypalAddressDisabled),t}shouldCreateElement(t){return!l()(t).find(".paypal-buttons").length}async canMakePayment(){return!!this.paypal}async createPaymentElement(t){this.buttons={},this.buttonActions={};const e=this.getFunding(this.controller.context.getPage()),n=this.getSortedFunding(e),s=[];for(const e of n){const n=this.getButtonOptions(e),i=this.paypal.Buttons(n);this.buttons[e]=i,i.isEligible()&&s.push(i.render(t).catch(()=>{}))}return await Promise.all(s),this.buttons}getFunding(t){const e=[],n=this.settings;return this.controller.context.isProduct()?(this.settings?.product?.funding?.includes("paypal")&&e.push(this.paypal.FUNDING.PAYPAL),this.settings?.product?.funding?.includes("paylater")&&e.push(this.paypal.FUNDING.PAYLATER),this.settings?.product?.funding?.includes("card")&&e.push(this.paypal.FUNDING.CARD)):(this.isFundingActive("paypal")&&n?.paypal_sections?.includes(t)&&e.push(this.paypal.FUNDING.PAYPAL),this.isFundingActive("paylater")&&n?.paylater_sections?.includes(t)&&e.push(this.paypal.FUNDING.PAYLATER),this.isFundingActive("card")&&n?.credit_card_sections?.includes(t)&&e.push(this.paypal.FUNDING.CARD),this.isFundingActive("venmo")&&n?.venmo_sections?.includes(t)&&e.push(this.paypal.FUNDING.VENMO)),e}getSortedFunding(t){const e=this.settings.buttons_order||[];return t.sort((t,n)=>e.indexOf(t)<e.indexOf(n)?-1:1),t}getButtonOptions(t){const e={fundingSource:t,style:this.getButtonStyle(t),onInit:(e,n)=>{this.buttonActions[t]=n,l()(document.body).triggerHandler("wc_ppcp_on_init",[this.controller,t]),(this.controller.context.isCheckout()||this.controller.context.isOrderPay())&&this.controller.isTermsVisible()&&this.controller.handleTermsClick(),this.controller.context.isProduct()&&this.controller?.$paymentElement?.length&&this.controller.$paymentElement.is(".disabled")&&this.disablePaymentElement()},onClick:(...e)=>this.onClick(t),onApprove:(t,e)=>this.onApprove(t,e),onCancel:(e=null)=>this.onCancel(e,t),onError:e=>{this.onError(e,t)},onDestroy:()=>{this.onDestroy(t)},createOrder:(t,e)=>this.controller.createOrder(t,e)};return this.controller.needsShipping()&&t!==this.paypal.FUNDING.VENMO&&(e.onShippingChange=(...t)=>this.onShippingChange(...t)),this.settings.needsSetupToken&&(e.createOrder=null,e.createVaultSetupToken=(...t)=>this.controller.createVaultSetupToken()),e}async onShippingChange(t,e){const n=(0,s.convertPayPalAddressToCart)(t?.shipping_address||{},!0),i=t?.selected_shipping_option?.id||"";try{return(await this.controller.onShippingChange({address:n,shipping_method:i,order_id:t.orderID})).code?e.reject():e.resolve()}catch(t){return e.reject()}}onClick(t){this.controller.onClick(),this.controller.validate(),l()(document.body).triggerHandler("wc_ppcp_on_click",[this.controller,t])}getButtonStyle(t){let e=null;switch(t){case this.paypal.FUNDING.PAYPAL:e=this.settings?.buttons?.paypal;break;case this.paypal.FUNDING.PAYLATER:e=this.settings?.buttons?.paylater;break;case this.paypal.FUNDING.CARD:e={...this.settings?.buttons?.card},e.tagline?(delete e.tagline,e.layout="vertical"):e.layout="horizontal";break;case this.paypal.FUNDING.VENMO:const{color:t="",label:n="",...s}=this.settings?.buttons?.paypal;e=s}return e?.height&&(e.height=parseInt(e.height)),e}enablePaymentElement(){Object.keys(this.buttonActions||{}).forEach(t=>{this.buttonActions[t]?.enable()})}disablePaymentElement(){Object.keys(this.buttonActions||{}).forEach(t=>{this.buttonActions[t]?.disable()})}destroyPaymentElement(){Object.keys(this.buttons||{}).forEach(t=>{this.buttons[t]?.close&&this.buttons[t].close()}),this.buttons={},this.buttonActions={}}isFundingActive(t){return this.settings?.funding?.includes(t)}}({id:"ppcp",cart:n(),settings:u,controller:null});new i.MiniCartController({id:"ppcp",cart:n(),context:new(r())("minicart"),gateway:y,settings:u}).initialize(),(this.wcPPCP=this.wcPPCP||{}).paypalMinicart={}})();