PageSourceSearch

https://beglarianfabrics.com/cdn/shop/t/99/assets/whatsapp-subscribe-form.js?v=65510616549760104591773390909

js beglarianfabrics.com collected 2026-10-07 02:48:27 UTC 9,147 bytes, 2 lines download raw bytes

1if(!customElements.get("whatsapp-subscribe-form")){class WhatsappSubscribeForm extends HTMLElement{static selectors=Object.freeze({form:".whatsapp-subscribe-form__form",errorOutput:".whatsapp-subscribe-form__output",termsLabel:".whatsapp-subscribe-form__terms-label",submitButton:".whatsapp-subscribe-form__button"});static controls=Object.freeze({languageIso:"language_iso",languageRootUrl:"language_root_url",channel:"channel",phone:"phone",terms:"agree-to-terms"});static events=Object.freeze({leadSubmitSuccess:"lead-submit-success",leadSubmitError:"lead-submit-error"});static buttonVariants=Object.freeze({default:"default",success:"success",error:"error"});static timeouts=Object.freeze({buttonMessageDuration:3e3,buttonMessageDurationExtended:5e3});static errorTypes=Object.freeze({validation:"validation",network:"network",server:"server",client:"client"});#isSending=!1;#buttonMessageTimeout=null;#isInitialized=!1;connectedCallback(){if(this.#isInitialized)return;const form=this.querySelector(WhatsappSubscribeForm.selectors.form);this.elements={form,languageIsoInput:form?.elements[WhatsappSubscribeForm.controls.languageIso],languageRootUrlInput:form?.elements[WhatsappSubscribeForm.controls.languageRootUrl],channelInput:form?.elements[WhatsappSubscribeForm.controls.channel],phoneInput:form?.elements[WhatsappSubscribeForm.controls.phone],termsInput:form?.elements[WhatsappSubscribeForm.controls.terms],termsLabel:form?.querySelector(WhatsappSubscribeForm.selectors.termsLabel),output:form?.querySelector(WhatsappSubscribeForm.selectors.errorOutput),submitButton:form?.querySelector(WhatsappSubscribeForm.selectors.submitButton)},[this.elements.form,this.elements.languageIsoInput,this.elements.languageRootUrlInput,this.elements.channelInput,this.elements.phoneInput,this.elements.termsInput,this.elements.termsLabel,this.elements.output,this.elements.submitButton].every(element=>element!==null)&&(this.supportedPhoneCodes=(this.dataset.supportedPhoneCodes||"").split(",").map(code=>code.trim()).filter(Boolean),this.messages={errorPhone:this.dataset.formErrorPhone,errorTerms:this.dataset.formErrorTerms,errorGeneric:this.dataset.formError,errorCountryNotSupported:this.dataset.countryNotSupported,successWhatsapp:this.dataset.formSuccessWhatsapp||"Thanks! Check WhatsApp for your promo code."},this.onSubmit=this.onSubmit.bind(this),this.elements.form.addEventListener("submit",this.onSubmit),this.#isInitialized=!0)}disconnectedCallback(){!this.#isInitialized||!this.elements?.form||(this.elements.form.removeEventListener("submit",this.onSubmit),this.resetButtons(),this.#isInitialized=!1)}async onSubmit(event){if(event.preventDefault(),!this.isSending){if(this.setButtonMessage(this.elements.submitButton.dataset.defaultText,WhatsappSubscribeForm.buttonVariants.default,0),!this.validate()){this.setButtonMessage("",WhatsappSubscribeForm.buttonVariants.error,WhatsappSubscribeForm.timeouts.buttonMessageDuration),this.emit(WhatsappSubscribeForm.events.leadSubmitError,{channel:this.elements.channelInput.value,error_type:WhatsappSubscribeForm.errorTypes.validation});return}this.errorMessage="",this.isSending=!0;try{const normalizedPhone=this.normalizePhone(this.elements.phoneInput.value),consentAccepted=this.elements.termsInput.checked===!0,payload={language_iso:this.elements.languageIsoInput.value,language_root_url:this.elements.languageRootUrlInput.value,channel:this.elements.channelInput.value,phone:normalizedPhone,consent:consentAccepted};await this.sendWhatsappToWebhook(payload),this.resetForm(),this.setButtonMessage(this.messages.successWhatsapp,WhatsappSubscribeForm.buttonVariants.success,WhatsappSubscribeForm.timeouts.buttonMessageDurationExtended),this.emit(WhatsappSubscribeForm.events.leadSubmitSuccess,{channel:payload.channel})}catch(err){const errorType=err?.errorType||WhatsappSubscribeForm.errorTypes.server;errorType===WhatsappSubscribeForm.errorTypes.validation?(this.errorMessage=err.message||this.messages.errorGeneric,this.setButtonMessage("",WhatsappSubscribeForm.buttonVariants.error,WhatsappSubscribeForm.timeouts.buttonMessageDurationExtended)):(this.errorMessage="",this.setButtonMessage(err.userMe
1ssage||err.message||this.messages.errorGeneric,WhatsappSubscribeForm.buttonVariants.error,WhatsappSubscribeForm.timeouts.buttonMessageDurationExtended));const emittedErrorType=errorType===WhatsappSubscribeForm.errorTypes.network?WhatsappSubscribeForm.errorTypes.server:errorType;this.emit(WhatsappSubscribeForm.events.leadSubmitError,{channel:this.elements.channelInput.value,error_type:emittedErrorType}),this.isSending=!1}}}resetButtons(){clearTimeout(this.#buttonMessageTimeout),this.setButtonMessage(this.elements.submitButton.dataset.defaultText,WhatsappSubscribeForm.buttonVariants.default,0)}set isSending(value){this.#isSending=!!value,this.#isSending?this.elements.submitButton.setAttribute("aria-busy","true"):this.elements.submitButton.removeAttribute("aria-busy")}get isSending(){return this.#isSending}set errorMessage(message){this.elements.output.hidden=message==="",setTimeout(()=>{this.elements.output.textContent=message},0)}get errorMessage(){return this.elements.output.textContent||""}setButtonMessage(message,variant=WhatsappSubscribeForm.buttonVariants.default,duration=WhatsappSubscribeForm.timeouts.buttonMessageDuration){clearTimeout(this.#buttonMessageTimeout),message&&(this.elements.submitButton.firstElementChild.textContent=message),this.elements.submitButton.dataset.variant=variant,!(duration<=0)&&(this.#buttonMessageTimeout=setTimeout(()=>{message&&(this.elements.submitButton.firstElementChild.textContent=this.elements.submitButton.dataset.defaultText),this.elements.submitButton.dataset.variant=WhatsappSubscribeForm.buttonVariants.default},duration))}resetForm(){this.resetButtons(),this.elements.phoneInput.value="",this.elements.termsInput.checked=!1,this.elements.phoneInput.setCustomValidity(""),this.elements.termsInput.setCustomValidity(""),this.errorMessage="",this.isSending=!1}isSupportedPhoneCountry(phone){return this.supportedPhoneCodes.length===0?!0:this.supportedPhoneCodes.some(code=>phone.startsWith(code))}validate(){this.elements.phoneInput.setCustomValidity(""),this.elements.termsInput.setCustomValidity("");const normalizedPhone=this.normalizePhone(this.elements.phoneInput.value);return/^\+\d{8,15}$/.test(normalizedPhone)?this.isSupportedPhoneCountry(normalizedPhone)?this.elements.termsInput.checkValidity()?(this.errorMessage="",!0):(this.errorMessage=this.messages.errorTerms,this.elements.termsInput.setCustomValidity(this.messages.errorTerms),this.elements.termsInput.focus(),!1):(this.errorMessage=this.messages.errorCountryNotSupported,this.elements.phoneInput.setCustomValidity(this.messages.errorCountryNotSupported),this.elements.phoneInput.focus(),!1):(this.errorMessage=this.messages.errorPhone,this.elements.phoneInput.setCustomValidity(this.messages.errorPhone),this.elements.phoneInput.focus(),!1)}normalizePhone(phone){return phone.trim().replace(/[^0-9+]/g,"")}async sendWhatsappToWebhook(payload){const webhookUrlRaw=this.dataset.whatsappWebhook?.trim()||"";let webhookUrl=null;try{webhookUrl=new URL(webhookUrlRaw)}catch{throw this.createSubmitError(WhatsappSubscribeForm.errorTypes.server,this.messages.errorGeneric)}let response=null;const controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),8e3);try{response=await fetch(webhookUrl.toString(),{method:"POST",signal:controller.signal,headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({channel:"whatsapp",phone:payload.phone,consent:payload.consent,language_iso:payload.language_iso,language_root_url:payload.language_root_url,source:this.dataset.source||"shopify_footer"})})}catch(err){throw this.createSubmitError(WhatsappSubscribeForm.errorTypes.network,this.messages.errorGeneric,err,this.messages.errorGeneric)}finally{clearTimeout(timeoutId)}let responseBody=null,rawResponse="";try{rawResponse=await response.text()}catch{rawResponse=""}if(rawResponse.trim()!=="")try{responseBody=JSON.parse(rawResponse)}catch{throw this.createSubmitError(WhatsappSubscribeForm.errorTypes.server,this.messages.errorGeneric)}const responseMessage=typeof responseBody?.message=="string"?responseBody.message.trim():"";if(!(response.ok&&responseBody?.ok===!0))throw response.status===422?this.createSubmitError(WhatsappSubscribeForm.errorTypes.validation,responseMessage||this.messages.errorPhone||this.messages.errorGeneric):response.status===429?this.createSubmitError(WhatsappSubscribeForm.errorTypes.server,responseMessage||this.messages.errorGeneric):this.createSubmitError(WhatsappSubscribeForm.errorTypes.server,this.messages.errorGeneric)}createSubmitError(errorType,message,cause=null,userMessage=null){const error=cause?new Error(message,{cause}):new Error(message);return error.errorType=errorType,error.userMessage=userMessage||message,error}emit(name,detail){window.dispatchEvent(new CustomEvent(name,{detail}))}}customElements.define("whatsapp-subscribe-form",WhatsappSubscribeForm)}
2//# sourceMappingURL=/cdn/shop/t/99/assets/whatsapp-subscribe-form.js.map?v=65510616549760104591773390909

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.