(()=>{"use strict";var e={n:i=>{var t=i&&i.__esModule?()=>i.default:()=>i;return e.d(t,{a:t}),t},d:(i,t)=>{for(var s in t)e.o(t,s)&&!e.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:t[s]})},o:(e,i)=>Object.prototype.hasOwnProperty.call(e,i),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},i={};e.r(i),e.d(i,{default:()=>d});const t=window.jQuery;var s=e.n(t);const l=window.wcStripe.utils,n=window.lodash,d=class{constructor(e,i){this.context=e,this.controller=i}populate(e,i={}){(this.context.isCheckout()||this.context.isExpressCheckout())&&this.syncDOMToMap(i),e?.billing&&!i?.skipBilling&&this.populateBilling(e.billing,i),e?.shipping&&!i.skipShipping&&i.needsShipping&&this.populateShipping(e.shipping,i)}syncDOMToMap(e={}){["first_name","last_name","company","address_1","address_2","city","state","postcode","country","email","phone"].forEach(e=>{const i=s()(`[name="billing_${e}"]`);i.length&&(0,l.setFieldValue)(e,i.val(),"billing")}),e.needsShipping&&["first_name","last_name","company","address_1","address_2","city","state","postcode","country","phone"].forEach(e=>{const i=s()(`[name="shipping_${e}"]`);i.length&&(0,l.setFieldValue)(e,i.val(),"shipping")})}populateBilling(e,i){const{email:t,phone:d,...a}=e;(0,n.isEmpty)(a)||(this.context.isCheckout()||this.context.isExpressCheckout()?this.isValidAddress(a,["first_name","last_name","phone"])&&!(0,n.isEqual)(this.getCartFullAddress("billing"),(0,n.omit)(a,["first_name","last_name"]))&&(this.controller._updateRequired=!0,this.populateAddressFields(a,"billing"),s()(document.body).one("updated_checkout",()=>{this.populateAddressFields(a,"billing")})):this.populateAddressFields(a,"billing")),t&&(this.context.isCheckout()&&(0,l.isFieldValid)("billing_email")||(0,l.setFieldValue)("billing_email",t)),d&&((0,l.setFieldValue)("billing_phone",d),i.needsShipping&&(0,l.setFieldValue)("shipping_phone",d))}populateShipping(e,i){const{phone:t,...d}=e;if(!(0,n.isEmpty)(d))if(this.context.isCheckout()||this.context.isExpressCheckout()){const e=this.getCartFullAddress("shipping");(0,n.isEqual)(e,d)||(this.controller._updateRequired=!0,this.populateAddressFields(d,"shipping"),s()(document.body).one("updated_checkout",()=>{this.populateAddressFields(d,"shipping")})),this.isValidAddress(this.getCartFullAddress("billing"),["phone","email"])||(d.first_name&&d.last_name&&!(0,l.isFieldValid)("billing_first_name")&&!(0,l.isFieldValid)("billing_last_name")&&((0,l.setFieldValue)("first_name",d.first_name,"billing"),(0,l.setFieldValue)("last_name",d.last_name,"billing")),this.populateAddressFields(d,"billing"))}else this.populateAddressFields(d,"shipping"),this.isValidAddress(this.getCartFullAddress("billing"),["phone","email"])||this.populateAddressFields(d,"billing");t&&(0,l.setFieldValue)("shipping_phone",t),(this.context.isCheckout()||this.context.isExpressCheckout())&&this.maybeShipToDifferentAddress()}maybeShipToDifferentAddress(){if(s()('[name="ship_to_different_address"]')?.length){const e=this.getCartFullAddress("billing"),i=this.getCartFullAddress("shipping"),t=!(0,n.isEqual)(e,i);s()('[name="ship_to_different_address"]').prop("checked",t).trigger("change")}}populateAddressFields(e,i){for(let t in e)(0,l.setFieldValue)(t,e[t],i)}getCartFullAddress(e){return{first_name:(0,l.getFieldValue)("first_name",e),last_name:(0,l.getFieldValue)("last_name",e),address_1:(0,l.getFieldValue)("address_1",e),address_2:(0,l.getFieldValue)("address_2",e),state:(0,l.getFieldValue)("state",e),city:(0,l.getFieldValue)("city",e),postcode:(0,l.getFieldValue)("postcode",e),country:(0,l.getFieldValue)("country",e)}}isValidAddress(e,i=[]){if(this.locales||(this.locales=JSON.parse((0,l.getSetting)("addressLocales").replace(/&quot;/g,'"'))),!e.country||(0,n.isEmpty)(e.country))return!1;let t=this.locales[e.country]||this.locales.default;t={...this.locales.default,...t};const s=Object.entries(t).filter(([e,t])=>!i.includes(e));for(let[i,t]of s)if(t.required){const t=e?.[i]||null;if(!t?.trim())return!1}return!0}};(this.wcStripe=this.wcStripe||{}).checkoutFields=i})();