1const e=".js-form",t=".js-form-content",s=".js-thank-message",i=".js-error-message",a=".js-checkbox",h=".js-submit-btn",r=".js-recaptcha",c="hidden";class o extends HTMLElement{connectedCallback(){this.form=this.querySelector(e),this.formContent=this.querySelector(t),this.thankMessage=this.querySelector(s),this.errorMessage=this.querySelector(i),this.submitBtn=this.querySelector(h),this.checkboxes=Array.from(this.querySelectorAll(a)),this.recaptcha=this.querySelector(r),this.recaptchaWidgetId=null,this.validateRequiredProperties()&&(this.initForm(),this.initCheckboxValidation())}validateRequiredProperties(){let e=!0;return this.form||(e=!1),this.errorMessage||(e=!1),this.submitBtn||(e=!1),e}initForm(){this.initCaptcha(),this.form.addEventListener("change",()=>{this.errorMessage.innerText=""}),this.form.addEventListener("submit",e=>{if(this.submitBtn.disabled=!0,e.preventDefault(),!window.grecaptcha||null===this.recaptchaWidgetId)return this.errorMessage.innerText="Captcha failed to load. Please refresh the page.",void(this.submitBtn.disabled=!1);if(window.grecaptcha.getResponse(this.recaptchaWidgetId).length>0){const e=this.form.getAttribute("action"),t=new FormData(this.form);fetch(e,{method:"POST",body:new URLSearchParams(t)}).then(e=>{if(e.ok){this.formContent&&this.formContent.classList.add(c),this.thankMessage&&this.thankMessage.classList.remove(c);const e=location.hostname.replace(/^www\./i,"");document.cookie=`ccpaoptin=true expires=Fri, 31 Dec 2038 23:59:59 UTC path=/ domain=.${e}`,window.scrollTo({top:0,behavior:"smooth"})}}).catch(e=>{}).finally(()=>{this.submitBtn.disabled=!1})}else this.errorMessage.innerText="Invalid Captcha",this.submitBtn.disabled=!1})}initCheckboxValidation(){this.checkboxes.length&&this.checkboxes.forEach(e=>{e.addEventListener("change",()=>{this.validateCheckboxes()})})}validateCheckboxes(){if(!this.checkboxes.length)return;let e=!1;this.checkboxes.forEach(t=>{t.checked&&(e=!0)}),this.checkboxes.forEach(t=>{t.required=!e})}initCaptcha(){window.RECAPTCHA_SITE_KEY&&this.recaptcha&&(window.captchaCallbacks||(window.captchaCallbacks=[]),window.captchaCallbacks.push(()=>{this.recaptchaWidgetId=window.grecaptcha.render(this.recaptcha,{sitekey:window.RECAPTCHA_SITE_KEY})}))}}customElements.define("ccpa-form",o);
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.