1class AccountLogin extends HTMLElement{constructor(){super(),this.apiEndpoint=this.dataset.api,this.store=this.dataset.store,this.arMigrationStrings=window.arMigrationStrings,this.messageTimer=null,this.returnTo=this.getLocalizedPath("/pages/account"),this.enableLoginHint=!0,this.form=this.querySelector("[data-login-form]"),this.emailInput=this.querySelector('input[name="email"]'),this.messageEl=this.querySelector("[data-message]"),this.submitButton=this.querySelector("[data-submit-button]");const returnTo=new URLSearchParams(window.location.search).get("return_to");this.returnTo=returnTo&&returnTo.startsWith("/")?returnTo:this.getLocalizedPath("/pages/account"),this.showMessage()}connectedCallback(){this.form&&(this.form.addEventListener("submit",e=>this.handleSubmit(e)),this.bindCAPromptBanner())}disconnectedCallback(){}isValidEmail(email){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)}normalizeTags(tagsRaw){return Array.isArray(tagsRaw)?tagsRaw.map(tag=>String(tag).trim()).filter(Boolean):String(tagsRaw||"").split(",").map(tag=>tag.trim()).filter(Boolean)}hasTag(tagsRaw,wanted){const wantedLc=String(wanted||"").trim().toLowerCase();return this.normalizeTags(tagsRaw).some(tag=>tag.toLowerCase()===wantedLc)}isMigratedToAP(data){const tags=data&&data.customer?data.customer.tags:"";return this.hasTag(tags,"ca_migrated_ap")}openCAPromptBanner(){const banner=document.getElementById("ca-moved-banner");banner&&(banner.classList.add("is-open"),banner.setAttribute("aria-hidden","false"),document.documentElement.classList.add("ca-banner-open"))}closeCAPromptBanner(){const banner=document.getElementById("ca-moved-banner");banner&&(banner.classList.remove("is-open"),banner.setAttribute("aria-hidden","true"),document.documentElement.classList.remove("ca-banner-open"))}bindCAPromptBanner(){const banner=document.getElementById("ca-moved-banner"),dialog=document.getElementById("ca-moved-banner-inner"),closeBtn=document.getElementById("ca-moved-banner-close");closeBtn&&closeBtn.addEventListener("click",event=>{event.preventDefault(),this.closeCAPromptBanner()}),banner&&dialog&&(banner.addEventListener("click",event=>{event.target===banner&&this.closeCAPromptBanner()}),dialog.addEventListener("click",event=>{event.stopPropagation()})),document.addEventListener("keydown",event=>{event.key==="Escape"&&this.closeCAPromptBanner()})}validateForm(){let isValid=!0,errorMsg="";return this.form.querySelectorAll("input[name]").forEach(input=>{const value=input.value.trim();input.parentElement.classList.remove("is-invalid"),input.classList.remove("is-invalid");const existingError=input.parentElement.querySelector(".field-error");if(existingError&&existingError.remove(),!value&&input.name==="email"&&(isValid=!1,errorMsg=this.arMigrationStrings?.validation?.invalid_email||"Please enter a valid email address"),isValid&&input.name==="email"&&!this.isValidEmail(value)&&(isValid=!1,errorMsg=this.arMigrationStrings?.validation?.invalid_email||"Please enter a valid email address"),!isValid){input.classList.add("is-invalid"),input.parentElement.classList.add("is-invalid");const error=document.createElement("div");error.className="field-error",error.textContent=errorMsg,input.parentElement.appendChild(error)}}),isValid}async handleSubmit(e){if(e.preventDefault(),this.clearFormMessage(),!!this.validateForm()){console.log(this.returnTo),this.setLoading(!0);try{const email=this.emailInput.value.trim();let apiUrl=`${this.apiEndpoint}?email=${email}&store=${this.store}`;const response=await fetch(apiUrl,{method:"GET",headers:{Accept:"application/json"}});console.log(response);const data=await response.json().catch(()=>({}));if(response.ok&&data.success){if(data?.data?.exists){if((window.caMigration&&window.caMigration.usLoginPromptEnabled||window.euMigration&&window.euMigration.euLoginPromptEnabled)&&data.data.customer&&this.isMigratedToAP({customer:data.data.customer})){this.openCAPromptBanner();return}window.location.href=this.buildShopifyLoginUrl(email);return}this.showFormMessage("error",`${this.arMigrationStrings.api.CUSTOMER_NOT_FOUND} <a href="${this.getLocalizedPath("/pages/register")}">${this.arMigrationStrings.actions.register_link}</a>`)}
1else this.showFormMessage("error",data?.message||this.arMigrationStrings.api.GENERIC_ERROR),console.error("API error:",data)}catch(error){console.error("Email check failed:",error),this.showFormMessage("error",this.arMigrationStrings.api.GENERIC_ERROR)}finally{this.setLoading(!1)}}}async showMessage(){const cookie=await window.cookieStore.get("account-message");if(!cookie?.value)return;let messageData;try{messageData=JSON.parse(cookie.value)}catch(error){console.error("Invalid account-message cookie",error),await window.cookieStore.delete("account-message");return}const{type="success",code}=messageData,email=messageData?.email||"";if(!code)return;const message=this.getMessage(code),msgEle=this.querySelector("[data-message]"),emailInput=this.querySelector("input[name=email]");msgEle&&(emailInput&&(emailInput.value=email),clearTimeout(this.messageTimer),msgEle.hidden=!1,msgEle.textContent=message,msgEle.classList.toggle("is-success",type==="success"),msgEle.classList.toggle("is-error",type==="error"),this.messageTimer=setTimeout(()=>{msgEle.hidden=!0,msgEle.textContent="",msgEle.classList.remove("is-success","is-error"),this.messageTimer=null},1e4),await window.cookieStore.delete("account-message"))}getMessage(code){return this.arMigrationStrings.api?.[code]||this.arMigrationStrings.api?.GENERIC_ERROR||"Something went wrong."}showFormMessage(type,html){this.messageEl.hidden=!1,this.messageEl.classList.toggle("is-error",type==="error"),this.messageEl.classList.toggle("is-success",type==="success"),this.messageEl.innerHTML=html}clearFormMessage(){this.messageEl.hidden=!0,this.messageEl.classList.remove("is-error","is-success"),this.messageEl.textContent=""}setLoading(isLoading){this.submitButton.disabled=isLoading,this.submitButton.textContent=isLoading?this.arMigrationStrings.actions.loading:this.arMigrationStrings.actions.submit}buildShopifyLoginUrl(email){const url=new URL("/customer_authentication/login",window.location.origin);url.searchParams.set("return_to",this.returnTo);const locale=this.getCurrentLocale();return locale&&url.searchParams.set("locale",locale),this.enableLoginHint&&email&&url.searchParams.set("login_hint",email),url.pathname+url.search}getCurrentLocale(){return window.arCurrentLocale||""}getCurrentRootUrl(){const rootUrl=window.arCurrentRootUrl||"";return!rootUrl||rootUrl==="/"?"":rootUrl}getLocalizedPath(path){const rootUrl=this.getCurrentRootUrl();return!rootUrl||path.startsWith(rootUrl+"/")?path:`${rootUrl}${path}`}}customElements.define("account-login",AccountLogin); 2//# sourceMappingURL=/cdn/shop/t/56/assets/account-login.js.map?v=151400345556537694691784092258
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.