PageSourceSearch

https://precoro.com/build/js/sections.single-step-demo-form.Bmx5Y1CS.js

js precoro.com collected 2026-09-24 08:55:26 UTC 14,443 bytes, 15 lines download raw bytes

1var m=Object.defineProperty;var h=(i,e,t)=>e in i?m(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var r=(i,e,t)=>h(i,typeof e!="symbol"?e+"":e,t);import{i as p,u as f}from"./utils.TMo8DpeV.js";import"./_commonjsHelpers.CqkleIqs.js";class b{constructor(e){r(this,"initTelField",()=>{this.iti=this.fields.phone.node?p(this.fields.phone.node,{utilsScript:f,autoPlaceholder:"aggressive",autoInsertDialCode:!0,nationalMode:!1,initialCountry:"auto",allowDropdown:!1,showFlags:!1,geoIpLookup:e=>{fetch("https://ipapi.co/json").then(t=>t.json()).then(t=>e(t.country_code)).catch(()=>e("us"))}}):null,this.iti});r(this,"predefineValues",()=>{const e=new URLSearchParams(document.location.search),t={userFirstName:e.get("userFirstName"),userLastName:e.get("userLastName"),email:e.get("email"),companyName:e.get("companyName")};for(const[s,o]of Object.entries(t))if(o){const a=this.form.node.querySelector(`[name='demo[${s}]']`);a.value=o}});r(this,"addEventListeners",()=>{this.form.node.addEventListener("click",async t=>{t.target.matches(".js-submit")&&(t.preventDefault(),await this.initValidation()&&this.submitEvent())});const e=["text","email"];for(const t of Object.values(this.fields))e.includes(t.type)&&t.node.addEventListener("input",()=>this.resetStatus(t.node));this.fields.phone.node.addEventListener("input",t=>{this.resetStatus(this.fields.phone.node);const s=/[a-zA-Zа-яА-Я]/;if(s.test(t.data)){this.fields.phone.node.value=this.fields.phone.node.value.replace(s,"");return}})});r(this,"initValidation",async()=>{for(const e of Object.values(this.fields))e.type==="text"&&this.validateTextFields(e.node),e.type==="email"&&await this.validateEmailField(e.node),e.type==="tel"&&this.validateTelField(e.node);return Object.values(this.fields).every(e=>e.valid)});r(this,"validateTextFields",e=>{this.resetStatus(e),this.fields[e.getAttribute("name").match(/\[(.*?)\]/)[1]].value=e.value.split(" ").map(t=>encodeURI(t)).join(" "),e.value.trim()!==""&&!e.value.includes("ㅤ")?this.createSuccessStatus(e,!0):this.createErrorStatus(0,e,!0)});r(this,"validateEmailField",async e=>{if(this.pendingStatus(!0),this.resetStatus(e),e.value.trim()===""||e.value.includes("ㅤ")){this.pendingStatus(!1),this.createErrorStatus(0,e);return}if(await this.getClearoutResponse(e),!this.clearoutResponse){this.pendingStatus(!1);return}this.pendingStatus(!1);const{status:t,data:s,code:o,success:a,messageId:n}=this.clearoutResponse,{sub_status:l,free:u,disposable:d}=s||{};if(t==="success"){const c=l==null?void 0:l.code;(s==null?void 0:s.status)==="valid"&&c===603?this.createSuccessStatus(e):[403,404].includes(c)?this.createErrorStatus(4,e):e.value.includes("@")?u==="yes"||d==="yes"?this.createErrorStatus(2,e):s.status==="invalid"?this.createErrorStatus(1,e):this.createSuccessStatus(e):this.createErrorStatus(3,e)}else o===524?this.createSuccessStatus(e):a||this.createErrorStatus(n,e);this.fields[e.getAttribute("name").match(/\[(.*?)\]/)[1]].value=e.value.split(" ").map(c=>encodeURI(c)).join(" ")});r(this,"validateTelField",e=>{if(this.resetStatus(e),this.fields[e.getAttribute("name").match(/\[(.*?)\]/)[1]].value=e.value.split(" ").map(t=>encodeURI(t)).join(" "),this.iti.isValidNumber())this.iti.telInput.getAttribute("placeholder")===e.value?this.createErrorStatus(0,e):this.createSuccessStatus(e);else if(Object.keys(this.iti.getSelectedCountryData()).length){const t=this.iti.getValidationError();this.createErrorStatus(t,e)}else this.createErrorStatus(1,e)});r(this,"getClearoutResponse",async e=>{try{const t=`${window.location.origin}/requests/clearout-api`,s=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.value})});if(!s.ok)throw new Error(`HTTP error! Status: ${s.status}`);this.clearoutResponse=await s.json()}catch(t){console.error("Error during fetch operation:",t)}});r(this,"resetStatus",e=>{e.closest(".js-form-row").querySelector(".js-error")&&e.closest(".js-form-row").querySelector(".js-error").remove(),e.closest(".js-form-row").classList.remove("error"),e.closest(".js-form-row").classList.remove("success")});r(this,"createSuccessStatus",e=>{this.fields[e.getAttribute("name").match(/\[(.*?)\]/)[1]].valid=!0,e.closest(".
1js-form-row").classList.remove("error"),e.closest(".js-form-row").classList.add("success")});r(this,"createErrorStatus",(e,t)=>{const s=t.getAttribute("name").match(/\[(.*?)\]/)[1];this.fields[s].valid=!1;const o={phone:{en:[`Please provide the correct phone number. Example: ${t.getAttribute("placeholder")}.`,"Given country code is incorrect.","Given phone number is too short.","Given phone number is too long.",`Please provide the correct phone number. Example: ${t.getAttribute("placeholder")}.`,"Please provide your phone number."],fr:[`Veuillez fournir le bon numéro de téléphone. Exemple: ${t.getAttribute("placeholder")}.`,"Le code pays fourni est incorrect.","Le numéro de téléphone fourni est trop court.","Le numéro de téléphone fourni est trop long.",`Veuillez fournir le bon numéro de téléphone. Exemple: ${t.getAttribute("placeholder")}.`,"Veuillez fournir votre numéro de téléphone."],de:[`Bitte geben Sie die korrekte Telefonnummer an. Beispiel: ${t.getAttribute("placeholder")}.`,"Der angegebene Ländercode ist nicht korrekt.","Die angegebene Telefonnummer ist zu kurz.","Die angegebene Telefonnummer ist zu lang.",`Bitte geben Sie die korrekte Telefonnummer an. Beispiel: ${t.getAttribute("placeholder")}.`,"Bitte geben Sie Ihre Telefonnummer an."],es:[`Por favor, proporcione el número de teléfono correcto. Ejemplo: ${t.getAttribute("placeholder")}.`,"El código de país proporcionado es incorrecto.","El número de teléfono proporcionado es demasiado corto.","El número de teléfono proporcionado es demasiado largo.",`Por favor, proporcione el número de teléfono correcto. Ejemplo: ${t.getAttribute("placeholder")}.`,"Por favor, proporcione su número de teléfono."]},email:{en:["Please enter your business email. Example: [email protected].","Please enter a valid email address associated with your organization. Example: [email protected].",`${t.value} looks like a personal email address. Please, enter your work email. Example: [email protected].`,'Please make sure your email address contains the "@" symbol.',"The domain portion of the email address is invalid (the portion after the @).","Hey, seems like you've already had Precoro's free trial.","Sorry, but we have detected some unusual activity that may indicate you are not human. Please reload the page and try again. If you are still experiencing difficulties, please contact support. Thank you for your understanding!","reCAPTCHA response token is empty"],fr:["Veuillez entrer votre e-mail professionnel. Exemple: [email protected].","Veuillez entrer une adresse e-mail valide associée à votre organisation. Exemple: [email protected].",`${t.value} ressemble à une adresse e-mail personnelle. Veuillez entrer votre adresse e-mail professionnelle. Exemple: [email protected].`,'Assurez-vous que votre adresse e-mail contient le symbole "@".',"La partie domaine de l`adresse e-mail est invalide (la partie après le @).","Hé, il semble que vous ayez déjà eu l'essai gratuit de Precoro."],de:["Bitte geben Sie Ihre geschäftliche E-Mail-Adresse ein. Beispiel: [email protected].","Bitte geben Sie eine gültige E-Mail-Adresse ein, die mit Ihrer Organisation verknüpft ist. Beispiel: [email protected].",`${t.value} sieht wie eine persönliche E-Mail-Adresse aus. Bitte geben Sie Ihre berufliche E-Mail-Adresse ein. Beispiel: [email protected].`,'Stellen Sie sicher, dass Ihre E-Mail-Adresse das "@"-Zeichen enthält.',"Der Domain-Teil der E-Mail-Adresse ist ungültig (der Teil nach dem @).","Hey, es scheint, als hätten Sie bereits Precoros kostenlose Probezeit in Anspruch genommen."],es:["Por favor, ingrese su correo electrónico empresarial. Ejemplo: [email protected].","Por favor, ingrese una dirección de correo electrónico válida asociada con su organización. Ejemplo: [email protected].",`${t.value} parece una dirección de correo electrónico personal. Por favor, introduzca su correo electrónico de trabajo. Ejemplo: [email protected].`,'Asegúrese de que su dirección de correo electrónico contenga el símbolo "@".',"La parte del dominio de la dirección de correo electrónico no es válida (la parte después del @).","Parece que ya has tenido la prueba gratuita de Precoro."]},userFirstName:{en:["Please provide your first name."],fr:["Veuillez fournir votre prénom."],de:["Bitte geben Sie Ihren Vornamen an."],es:["Por favor, proporcione su primer nombre."]},userLastName:{en:["Please provide your last name."],fr:["Veuillez fournir votre nom de famille."],de:["Bitte geben Sie Ihren Nachnamen an."],es:["Por favor, proporcione su apellido."]},countUsers:{en:["Please choose an option."],de:["Choisis une option."],es:["Elija una opción."],fr:["Choisis une option."]}},a=document.createElement("div");a.classList.add("js-error","bg-red-100","rounded-xs","text-red-700","font-inter","font-medium","text-xs","mt-2","py-2","px-3","relative"),a.innerHTML=o[s][this.locale][e==="-99"?
10:e],t.closest(".js-form-row").appendChild(a),t.closest(".js-form-row").classList.add("error"),t.closest(".js-form-row").classList.remove("success")});r(this,"submitEvent",async()=>{this.pendingStatus(!0);const e={pageName:document.title,clearoutData:this.clearoutResponse,utmParams:sessionStorage.getItem("utm_data"),honeypot:this.form.node.querySelector('input[name="_token"]').value};for(const[t,s]of Object.entries(this.fields))e[t]=s.value;try{let t=await fetch("/requests/multistep-demo",{method:this.form.method,headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(e)});if(!t.ok)throw new Error(`Fetch error! Response: ${JSON.stringify({status:t.status,statusText:t.statusText,url:t.url,page:window.location.href})}`);if(t=await t.json(),window.dataLayer=window.dataLayer||[],t.status==="success"){window.dataLayer.push({event:"demo_request_form",form:"Multistep form"});const s=t.geo,o=["254","234","242","250","255","256","251","249","91","92","880","964","93","963","970","98","977","7","20","971","966","974","972","962","973","968","60","65","63","62","66","84","82","81","852","673","230","64","855","27","267","233","232","212","258","261","224","244","260","263","211","216","995","55","57","51","54","593","52","595","506","507","502","597","501"],a=["tt","bs","tc"],n=this.iti.getSelectedCountryData();!o.includes(n.dialCode)&&!a.includes(n.iso2)&&ChiliPiper.submit("precoro","inbound_router_demo_website",{trigger:"ThirdPartyForm",lead:{userFirstName:e.userFirstName,userLastName:e.userLastName,phone:e.phone,email:e.email,companySize:e.countUsers,userTimeZone:this.chiliPiper.timezone,country:s.country||null,continent:s.continent||null},locale:this.chiliPiper.locales[this.locale],onSuccess:()=>{this.pendingStatus(!1)},onClose:()=>{}}),this.pendingStatus(!1),this.showSuccessMessage()}else t.hs_data&&t.hs_data.errors&&t.hs_data.errors[0].errorType==="BLOCKED_EMAIL"&&this.createErrorStatus(1,this.fields.email.node),this.pendingStatus(!1)}catch(t){console.error("Error:",t)}});r(this,"showSuccessMessage",()=>{this.form.node.innerHTML="";const e={title:{en:"Thank you for booking your demo",de:"Vielen Dank, dass Sie Ihre Demo gebucht haben",es:"Gracias por reservar tu demostración",fr:"Merci d'avoir réservé votre démo"},text:{en:"We can’t wait to show you around and answer all your questions.<br><br>Look out for an email with all the details. If you need anything before then, just let us know. We’re here to help!",de:"Wir können es kaum erwarten, Ihnen alles zu zeigen und all Ihre Fragen zu beantworten.<br><br>Achten Sie auf eine E-Mail mit allen Details. Wenn Sie vorher etwas benötigen, lassen Sie es uns einfach wissen. Wir sind hier, um zu helfen!",es:"Estamos ansiosos por mostrarte todo y responder todas tus preguntas.<br><br>Estate atento a un correo electrónico con todos los detalles. Si necesitas algo antes de eso, solo háznoslo saber. ¡Estamos aquí para ayudarte!",fr:"Nous avons hâte de vous faire découvrir notre système et de répondre à toutes vos questions.<br><br>Surveillez votre courriel pour tous les détails. Si vous avez besoin de quelque chose avant cela, faites-le nous savoir. Nous sommes là pour vous aider !"}},t=document.createElement("div");t.innerHTML=`
2      <img class="mb-6 max-w-full" srcset="/src/images/shared/demo-message-image_1x.webp 1x, /src/images/shared/demo-message-image_2x.webp 2x" width="464px" height="112px">
3      <span class="block text-xl font-semibold text-night-blue-800 text-center mb-6">${e.title[this.locale]}</span>
4      <p class="text-night-blue-600 text-center text-base">${e.text[this.locale]}</p>
5    `,this.form.node.appendChild(t)});r(this,"pendingStatus",e=>{if(e){const t=document.createElement("div"),s=document.createElement("div"),o=document.createElement("div");o.style.cssText=`
6        position: fixed;
7        left: 0;
8        top: 0;
9        width: 100%;
10        height: 100%;
11        background: rgba(#000, .1);
12        z-index: 100;
13        background-color: rgb(0,0,0, .2);
14      `,o.classList.add("form__loader"),t.classList.add("spinner"),s.classList.add("spinner-icon"),t.appendChild(s),o.appendChild(t),this.form.node.appendChild(o)}else this.form.node.querySelector(".form__loader")&&this.form.node.querySelector(".form__loader").remove()});this.form={node:e,method:"post"},this.fields={userFirstName:{node:this.form.node.querySelector('.js-form-field[name="demo[userFirstName]"]')||null,type:"text",valid:!1},userLastName:{node:this.form.node.querySelector('.js-form-field[name="demo[userLastName]"]')||null,type:"text",valid:!1},countUsers:{node:this.form.node.querySelector('.js-form-field[name="demo[countUsers]"]')||null,type:"text",valid:!1},email:{node:this.form.node.querySelector('.js-form-field[name="demo[email]"]')||null,type:"email",valid:!1},phone:{node:this.form.node.querySelector('.js-form-field[name="demo[phone]"]')||null,type:"tel",valid:!1}},this.locale=document.body.dataset.locale,this.chiliPiper={timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,locales:{en:"en_US",de:"de_DE",es:"es_ES",fr:"fr_FR"}},this.predefineValues(),this.initTelField(),this.addEventListeners()}}export{b as default};
15//# sourceMappingURL=sections.single-step-demo-form.Bmx5Y1CS.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.