1if(!customElements.get("newsletter-form")){class newsletterForm extends HTMLElement{constructor(){super(),this.init()}init(){const newsletterFormType=this.dataset.newsletterFormType||"customer",newsletterFormId=this.dataset.formId||"ContactFooter",ctaText=this.dataset.ctaText||"Subscribe",vetFormFetchUrl=this.dataset.vetFormFetchUrl?.trim()||"",vetFormToken=this.dataset.vetFormFetchToken?.trim()||"",sourceCode=newsletterFormType==="vet"?"VYPetivityVetPros":"SYGeneralPetivityInformation",checkbox=this.querySelector('input[type="checkbox"]'),button=this.querySelector("button"),form=this.querySelector("form"),emailInput=form?.querySelector('input[type="email"]'),firstNameInput=form?.querySelector('input[name="contact[first_name]"]'),lastNameInput=form?.querySelector('input[name="contact[last_name]"]'),validationContainer=this.querySelector("[data-opt-validation-message]"),validationEmail=this.querySelector("[data-opt-validation-message-email]"),firstNameValidation=firstNameInput?.closest(".newsletter-form__field")?.parentElement?.querySelector("[data-opt-validation-message-first-name]"),lastNameValidation=lastNameInput?.closest(".
1newsletter-form__field")?.parentElement?.querySelector("[data-opt-validation-message-last-name]"),message=validationContainer?.dataset?.errorMessage||"Please agree to the Terms and Conditions to continue.";form?.setAttribute("novalidate",""),button&&checkbox&&form&&(button.addEventListener("click",event=>{let isValid=!0,fieldFocused=!1;if(!emailInput.validity.valid||!emailInput.value.includes(".com")?(validationEmail.innerHTML=`<span class="visually-hidden">Error:</span> <span>Please enter a valid email address (e.g., [email protected]). ${emailInput.validationMessage}</span>`,emailInput.focus(),fieldFocused=!0,isValid=!1):validationEmail.innerHTML="",firstNameInput&&!firstNameInput.value.trim()?(firstNameValidation&&(firstNameValidation.innerHTML='<span class="visually-hidden">Error:</span> <span>Please enter your first name.</span>'),fieldFocused||(firstNameInput.focus(),fieldFocused=!0),isValid=!1):firstNameInput&&firstNameValidation&&(firstNameValidation.innerHTML=""),lastNameInput&&!lastNameInput.value.trim()?(lastNameValidation&&(lastNameValidation.innerHTML='<span class="visually-hidden">Error:</span> <span>Please enter your last name.</span>'),fieldFocused||(lastNameInput.focus(),fieldFocused=!0),isValid=!1):lastNameInput&&lastNameValidation&&(lastNameValidation.innerHTML=""),!checkbox.checked){checkbox.setAttribute("aria-invalid","true"),validationContainer.innerHTML=`<span class="visually-hidden">Error:</span> <span>${message}</span>`,fieldFocused||checkbox.focus(),isValid=!1;return}isValid&&(button.type="submit",button.click())}),checkbox.addEventListener("change",()=>{checkbox.checked&&(checkbox.removeAttribute("aria-invalid"),validationContainer.innerHTML="")})),form&&emailInput&&form.addEventListener("submit",()=>{emailInput.value&&sessionStorage.setItem("newsletter_email",emailInput.value),firstNameInput?.value&&sessionStorage.setItem("newsletter_first-name",firstNameInput.value),lastNameInput?.value&&sessionStorage.setItem("newsletter_last-name",lastNameInput.value)});const url=new URL(window.location.href);if(url.searchParams.get("customer_posted")==="true"&&url.hash===`#${newsletterFormId}`){const successWrapper=this.querySelector(".newsletter-form__success-wrapper");successWrapper&&setTimeout(()=>{successWrapper.focus()},1e3);const submittedEmail=sessionStorage.getItem("newsletter_email");if(submittedEmail){const submittedFirstName=sessionStorage.getItem("newsletter_first-name"),submittedlastName=sessionStorage.getItem("newsletter_last-name");if(analytics&&newsletterFormType==="customer"){let form_payload={form:"petivity_lead",email:submittedEmail,sourceCode,...submittedFirstName&&{firstName:submittedFirstName},...submittedlastName&&{lastName:submittedlastName}};analytics.identify({email:submittedEmail}),analytics.track("lead_form",form_payload),console.log("lead_form - form_payload: ",form_payload)}if(newsletterFormType==="vet"){const submittedlastName2=sessionStorage.getItem("newsletter_last-name");vetFormFetchUrl?fetch(vetFormFetchUrl,{method:"POST",headers:{accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({email:submittedEmail,lastName:submittedlastName2||"",firstName:submittedFirstName||"",token:vetFormToken||"",sourceCode:{keyName:sourceCode},optIn:!0})}).then(async response=>{const responseText=await response.text();let responseData=responseText;try{responseData=responseText?JSON.parse(responseText):null}catch{responseData=responseText}console.log("ESP /users response:",{ok:response.ok,status:response.status,statusText:response.statusText,data:responseData})}).catch(error=>{console.error("ESP /users request failed:",error)}):console.warn("VET form fetch URL is not configured. Skipping ESP request.")}const eventData={event:"newsletter_submit",event_params:{form_location:newsletterFormType==="vet"?"vet_landing_page":"footer",form_name:"newsletter_signup",form_type:"newsletter",form_id:newsletterFormId,link_text:ctaText}};ExecuteGA4Event(eventData),sessionStorage.removeItem("newsletter_email"),sessionStorage.removeItem("newsletter_first-name"),sessionStorage.removeItem("newsletter_last-name")}url.searchParams.delete("customer_posted");const cleanedSearch=url.searchParams.toString(),newUrl=window.location.pathname+(cleanedSearch?"?"+cleanedSearch:"")+url.hash;history.replaceState({},"",newUrl)}}}customElements.define("newsletter-form",newsletterForm)} 2//# sourceMappingURL=/cdn/shop/t/157/assets/newsletter-form.js.map?v=104906123160865854241781019455
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.