1function customerFieldsAppReady(){return new Promise(resolve=>{const checkInterval=setInterval(()=>{typeof window.CustomerFieldsApp<"u"&&(clearInterval(checkInterval),resolve(window.CustomerFieldsApp))},100)})}customerFieldsAppReady().then(cf_app=>{const error1=window.validateRegisterMessage.title,error2=window.validateRegisterMessage.label,error3=window.validateRegisterMessage.password,errorChar=window.validateRegisterMessage.charpassword,errorDigit=window.validateRegisterMessage.digitpassword,errorFirstName=window.validateRegisterMessage.firstName,errorLastName=window.validateRegisterMessage.lastName,errorEmail=window.validateRegisterMessage.email;let lastFocusedField=null;cf_app.settings.onFieldsLoaded=function(form){const firstNameInput=form.querySelector('input[name="customer[first_name]"]'),lastNameInput=form.querySelector('input[name="customer[last_name]"]'),emailInput=form.querySelector('input[name="customer[email]"]');firstNameInput&&firstNameInput.addEventListener("blur",function(){validateField(firstNameInput,firstNameInput.closest(".cf-app__field"))}),lastNameInput&&lastNameInput.addEventListener("blur",function(){validateField(lastNameInput,lastNameInput.closest(".cf-app__field"))}),emailInput&&emailInput.addEventListener("blur",function(){validateField(emailInput,emailInput.closest(".cf-app__field"))});const passwordField=form.querySelector('input[type="password"]'),selectField=form.querySelector('select[type="select"]');if(selectField&&selectField.setAttribute("aria-label","Title selection"),passwordField){const customDiv=document.createElement("div");customDiv.className="password-info",customDiv.textContent=error3,customDiv.style.color="#595959",customDiv.style.font='normal 400 14px "Gothic-720", "Helvetica Neue", Helvetica, Arial, sans-serif',customDiv.style.lineHeight="18px",customDiv.style.letterSpacing="-0.029rem",customDiv.style.marginTop="10px",customDiv.style.textAlign="left",passwordField.parentNode.insertBefore(customDiv,passwordField.nextSibling)}form.querySelectorAll(".cf-app__field").forEach(field=>{const input=field.querySelector("input, select, textarea");input&&input.addEventListener("focus",function(){lastFocusedField=input})}),document.addEventListener("click",function(event){if(!form.contains(event.target)&&lastFocusedField){const lastFocusedFieldContainer=lastFocusedField.closest(".cf-app__field");validateField(lastFocusedField,lastFocusedFieldContainer),lastFocusedField=null}})};function validateField(input,field){let isValid=!0;const label=field.querySelector("label");let errorContainer=field.querySelector(".form-error-message");const customDiv=field.querySelector(".password-info"),validNamePattern=/^[a-zA-Z\s]*$/;if(input&&label){const fieldName=label.textContent.replace("*","").trim(),inputName=input.getAttribute("name");if(errorContainer||(errorContainer=document.createElement("div"),errorContainer.className="form-error-message",customDiv?field.insertBefore(errorContainer,customDiv):field.appendChild(errorContainer)),inputName==="customer[first_name]")!/^[a-zA-Z\s]*$/.test(input.value)||input.value.trim()===""?(isValid=!1,errorContainer.textContent=errorFirstName,field.classList.add("form-error")):(errorContainer.textContent="",field.classList.remove("form-error"));else if(inputName==="customer[last_name]")!/^[a-zA-Z\s]*$/.test(input.value)||input.value.trim()===""?(isValid=!1,errorContainer.textContent=errorLastName,field.classList.add("form-error")):(errorContainer.textContent="",field.classList.remove("form-error"));else if(inputName==="customer[email]"){const email=input.value.trim(),tempInput=document.createElement("input");tempInput.type="email",tempInput.value=email;const isEmailValid=tempInput.checkValidity(),isPatternValid=/^[a-zA-Z0-9._%+-]+(?<!\.)@[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})+$/.test(email);!isEmailValid||!isPatternValid?(isValid=!1,errorContainer.textContent=errorEmail,field.classList.add("form-error")):(errorContainer.textContent="",field.classList.remove("form-error"))}else if(input.type==="password"){const password=input.value;let passwordError="";password.length<8||password.length>25?passwordError=errorChar:/\d/.test(password)||(passwordError=errorDigit),passwordError?(isValid=!1,errorContainer.textContent=passwordError,field.classList.add("form-error")):(errorContainer.textContent="",field.classList.remove("form-error"))}else errorContainer.textContent="",field.classList.remove("form-error")}return isValid}function validateForm(form){let isValid=!0;return form.querySelectorAll(".cf-app__field").forEach(field=>{const input=field.querySelector("input, select, textarea");input&&(validateField(input,field)||(isValid=!1))}),isValid}
1cf_app.settings.validateBeforeSubmit=function(form){return validateForm(form)},cf_app.settings.onNewCustomerSuccess=function(form){window.location.href=window.routes.login_url+"?registered=true"}}); 2//# sourceMappingURL=/cdn/shop/t/727/assets/bonify-custom.js.map?v=150017377745017775271790328911
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.