((e,t,o)=>{let r=[],a={apiVersion:2,apiVersionMinor:0};class i extends WPFormsPaypalCommercePaymentHandler.PaymentHandler{constructor(){super(),this.paymentsClient=null,this.config=null}getButtonContainer(){var e=this.$form.find(".wpforms-paypal-commerce-googlepay-button");return e.length?e:null}buildPaymentDataRequest(){return{...a,transactionInfo:this.getTransactionInfo(),allowedPaymentMethods:this.config.allowedPaymentMethods,merchantInfo:this.config.merchantInfo,callbackIntents:["PAYMENT_AUTHORIZATION"]}}createGooglePayButton(e){e={buttonColor:this.formOptions.googlepay.buttonColor,buttonRadius:this.formOptions.googlepay.buttonRadius,buttonType:this.formOptions.googlepay.buttonType,buttonBorderType:this.formOptions.googlepay.borderType,buttonLocale:this.formOptions.googlepay.locale||"en",buttonSizeMode:this.formOptions.googlepay.sizeMode,buttonRootNode:e,onClick:()=>this.validateBeforePayment().then(()=>this.paymentsClient.loadPaymentData(this.buildPaymentDataRequest())).catch(()=>{})},e=this.paymentsClient.createButton(e);return this.applyFillSizeModeStylesToInnerButton(e),"sandbox"===wpforms_paypal_commerce.mode&&o("iframe.gpay-card-info-iframe",e).attr("sandbox","allow-scripts"),e}applyFillSizeModeStylesToInnerButton(t){if(t&&"fill"===this.formOptions.googlepay.sizeMode){let e=null;try{e=t.querySelector("button")}catch(e){}e&&e.style&&(e.style.setProperty("min-width","0","important"),e.style.setProperty("width","100%","important"),e.style.setProperty("max-width","100%","important"))}}async initPaymentButton(){var e=this.getPayPalSDK();if(void 0!==e&&void 0!==e.Googlepay){var t,o,a=this.getButtonContainer();if(a)try{await this.isAvailable(e.Googlepay())&&(t=a[0].attachShadow({mode:"open"}),o=this.createGooglePayButton(t),a.removeClass("wpforms-hidden"),t.appendChild(o))}catch(e){console.error("Google Pay availability check error:",e)}}}createPaymentsClient(){return new t.google.payments.api.PaymentsClient({environment:"sandbox"===wpforms_paypal_commerce.mode?"TEST":"PRODUCTION",paymentDataCallbacks:{onPaymentAuthorized:e=>this.onPaymentAuthorized(e)}})}async checkDeviceReadiness(){var e=Object.assign({},a,{allowedPaymentMethods:this.config.allowedPaymentMethods});return!0===(await this.paymentsClient.isReadyToPay(e)).result}async isAvailable(e){return!!e&&(this.config=await e.config(),this.paymentsClient=this.createPaymentsClient(),this.checkDeviceReadiness())}onPaymentAuthorized(t){return new Promise(e=>{this.processPayment(t).then(()=>{e({transactionState:"SUCCESS"})}).catch(()=>{e({transactionState:"ERROR",error:{intent:"PAYMENT_AUTHORIZATION",message:"Payment processing failed",reason:"PAYMENT_DATA_INVALID"}})})})}async processPayment(e){try{var t=this.getPayPalSDK(),o=await WPFormsPaypalCommerce.createSingleOrder(this.$form,"google_pay"),a=(await t.Googlepay().confirmOrder({orderId:o,paymentMethodData:e.paymentMethodData})).status;if("APPROVED"===a)return WPFormsPaypalCommerce.submitPaymentForm(this.$form,o,this.type,"google_pay"),{transactionState:"SUCCESS"};throw new Error("Payment not approved")}catch(e){throw console.error("Google Pay payment processing error:",e),this.showError(wpforms_paypal_commerce.i18n.on_error),e}}getTransactionInfo(){var e=String(wpforms.amountTotalCalc(this.$form)),t=wpforms.getCurrency();return{countryCode:this.config.countryCode,currencyCode:t.code,totalPriceStatus:"FINAL",checkoutOption:"COMPLETE_IMMEDIATE_PURCHASE",totalPrice:e,totalPriceLabel:wpforms_paypal_commerce.total_price_label}}static checkGooglePaymentsAPI(){return void 0!==t.google&&void 0!==t.google.payments}}let n={init(){o(e).on("wpformsPayPalCommerceLoadedSDK",n.initFromQueue),o(e).on("wpformsPayPalCommerceInit",n.queueOrInit)},queueOrInit(e,t,o,a){var n;"single"===a&&((n=new i).init(t,wpforms_paypal_commerce.payment_options[o],a),i.checkGooglePaymentsAPI()?n.initPaymentButton():r.push(n))},initFromQueue(e,{handle:t}){"wpforms-paypal-commerce-google-pay-sdk"===t&&(i.checkGooglePaymentsAPI()?WPFormsPaypalCommercePaymentHandler.processQueue(r):console.error("Google Pay SDK not loaded"))}};n.init()})(document,window,jQuery);