1(()=>{"use strict";class t{constructor(t){this.options={endpoint:"./"},this.errors=window.r9NewsletterLocalization||{},this.elForm=t,this.elHelp=this.elForm.querySelector(".help"),this.elEmail=this.elForm.querySelector('[type="email"]'),this.elNonce=this.elForm.querySelector('input[name="r9_form_nonce"]'),this.elSubmit=this.elForm.querySelector('[type="submit"]'),this.email="",this.submitAttempts=0,this.isAbandoned=!1,this.init()}init(){this.options.endpoint=this.elForm.getAttribute("action")||this.options.endpoint,this.initFormNonce(),this.initializeForm(),this.elEmail.addEventListener("input",this.onInput.bind(this)),this.elEmail.addEventListener("blur",this.onBlur.bind(this)),this.elForm.addEventListener("submit",this.onSubmit.bind(this))}async initFormNonce(){const t=await this.retrieveNonce();t&&(this.elNonce.value=t)}getFormEmail(){return this.elEmail.value.trim()}getFormSource(){return this.elForm.getAttribute("data-source")}getFormSubscriptions(){return this.elForm.getAttribute("data-subscriptions")}getFormNonce(){return this.elNonce.value}isValidEmail(){const t=this.email.trim();return/^[a-z0-9._%+-]{1,63}@(?:[a-z0-9-]+\.){1,125}[a-z]{2,63}$/i.test(String(t).toLowerCase())}isEmptyEmail(){return 0===this.email.trim().length}onBlur(){this.isAbandoned=!0,this.reactToEmailInput()}onInput(t){this.email=t.target.value,this.reactToEmailInput()}reactToEmailInput(){this.isValidEmail()?(this.clearFormError(),this.isEmptyEmail()||this.elSubmit.removeAttribute("disabled")):(this.submitAttempts>0||this.isAbandoned)&&(this.isEmptyEmail()?this.setFormErrorByCode("EMAIL_MUST_NOT_BE_EMPTY",!0):this.setFormErrorByCode("EMAIL_INVALID",!0))}async onSubmit(t){this.submitAttempts++,t.preventDefault();const e=this.getFormEmail();if(this.isEmptyEmail())return void this.setFormErrorByCode("EMAIL_MUST_NOT_BE_EMPTY",!0);if(!this.isValidEmail())return void this.setFormErrorByCode("VALIDATION_ERROR",!0);const i=this.getFormNonce(),s=this.getFormSource(),r=this.getFormSubscriptions();this.elForm.classList.add("processing");const o=await fetch(this.options.endpoint+"/subscriber",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,nonce:i,source:s,subscriptions:r})}),n=await o.json();this.elForm.classList.remove("processing"),200===o.status?(this.elForm.dispatchEvent(new Event("r9newsletter:success")),n.message&&this.removeElementsAndDisplaySuccess(n.message)):(this.elForm.dispatchEvent(new Event("r9newsletter:success")),n.message&&this.setFormError(n.message))}setFormErrorByCode(t,e=!1){const i=this.errors[t];this.setFormError(i,e)}setFormError(t="",e=!1){this.elEmail.classList.add("error"),this.elEmail.setAttribute("aria-invalid","true"),this.elHelp.setAttribute("role","alert"),this.elHelp.classList.add("error"),t.length>0&&(this.elHelp.innerText=t),e&&this.elSubmit.setAttribute("disabled","")}clearFormError(){this.elEmail.classList.remove("error"),this.elEmail.setAttribute("aria-invalid","false"),this.elHelp.classList.remove("error"),this.elHelp.innerText="",this.elHelp.removeAttribute("role"),this.elSubmit.removeAttribute("disabled")}initializeForm(){this.elEmail.value=""}removeElementsAndDisplaySuccess(t){this.elEmail.parentNode.innerHTML='<div class="r9-newsletter-result newsletter-result">'+t+"</div>"}async retrieveNonce(){try{const t=await fetch(this.options.endpoint+"/nonce");if(!t.ok)throw new Error("r9Newsletter Nonce response was not OK");return(await t.json()).nonce}catch(t){return console.error("There was a problem with the fetch operation:",t),!1}}}(()=>{const e=document.querySelectorAll("form.r9-newsletter-subscribe");[].forEach.call(e,(e=>{new t(e)}))})()})(); 2//# sourceMappingURL=r9-newsletter.js.map
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.