1jQuery(document).ready(function($){let lastSentFinalData={} 2const destination=currentAddressPage.siteData.url 3if(currentAddressPage.page){$(document).on('blur change','.woocommerce-checkout input, .woocommerce-checkout select',sendAddressValues)} 4function sendAddressValues(){const billingFieldData={firstName:{field:$('#billing_first_name,#billing-first_name'),required:isFieldRequired($('#billing_first_name,#billing-first_name')),},lastName:{field:$('#billing_last_name,#billing-last_name'),required:isFieldRequired($('#billing_last_name,#billing-last_name')),},email:{field:$('#billing_email,#email'),required:isFieldRequired($('#billing_email,#email')),},phone:{field:$('#billing_phone,#billing-phone'),required:isFieldRequired($('#billing_phone,#billing-phone')),},city:{field:$('#billing_city,#billing-city'),required:isFieldRequired($('#billing_city,#billing-city')),},state:{field:$('#billing_state,#billing-state'),required:isFieldRequired($('#billing_state,#billing-state')),},country:{field:$('#billing_country,#billing-country'),required:isFieldRequired($('#billing_country,#billing-country')),},} 5const shippingFieldData={firstName:{field:$('#shipping_first_name,#shipping-first_name'),required:isFieldRequired($('#shipping_first_name,#shipping-first_name')),},lastName:{field:$('#shipping_last_name,#shipping-last_name'),required:isFieldRequired($('#shipping_last_name')),},phone:{field:$('#shipping_phone,#shipping-phone'),required:isFieldRequired($('#shipping_phone,#shipping-phone')),},city:{field:$('#shipping_city,#shipping-city'),required:isFieldRequired($('#shipping_city,#shipping-city')),},state:{field:$('#shipping_state,#shipping-state'),required:isFieldRequired($('#shipping_state,#shipping-state')),},country:{field:$('#shipping_country,#shipping-country'),required:isFieldRequired($('#shipping_country,#shipping-country')),},} 6const billingData=extractValidData(billingFieldData) 7const shippingData=extractValidData(shippingFieldData) 8const finalData=merge(billingData,shippingData) 9if(Object.keys(finalData).length&&!areEqual(finalData,lastSentFinalData)&&(currentAddressPage.page==='shipping'||currentAddressPage.page==='billing'||currentAddressPage.page==='checkout')){edgetag('data',finalData,{},{destination}) 10lastSentFinalData=finalData 11edgetag('tag','AddShippingInfo',{},{},{destination})}} 12function extractValidData(fields){const data={} 13let anyRequired=!1 14for(const key in fields){const{field,required}=fields[key] 15const val=field.val()?.trim() 16data[key]=val 17if(required){anyRequired=!0 18if(!val){return null}}} 19if(!anyRequired){return null} 20return data} 21function isFieldRequired(field){return(field.is('[required],[aria-required]')||field.closest('p').hasClass('validate-required'))} 22function areEqual(a,b){const aKeys=Object.keys(a) 23const bKeys=new Set(Object.keys(b)) 24if(aKeys.length!==bKeys.size){return!1} 25for(const key of aKeys){if(!bKeys.has(key)||a[key]!==b[key]){return!1}} 26return!0} 27function merge(a,b){const result={} 28for(const obj of[a,b]){if(obj&&typeof obj=='object'){for(const[key,value]of Object.entries(obj)){if(value){result[key]=value}}}} 29return result}})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.