1function w(){const e=document.getElementById("schedule-demo-modal"),t=document.getElementById("close-demo-modal"),o=document.getElementById("demo-modal-form");if(e&&(window.openDemoModal=d,window.closeDemoModal=s,(window.location.hash.includes("request-a-demo")||window.location.search.includes("request-a-demo")||window.location.hash.includes("book-a-demo")||window.location.search.includes("book-a-demo"))&&d(),t&&(t.onclick=e=>{e.preventDefault(),s()}),e.onclick=t=>{t.target===e&&s()},document.addEventListener("keydown",e=>{"Escape"===e.key&&s()}),o&&!o.dataset.hasSubmitHandler)){let e=function(e,t,d){const s=o?.querySelector(`#${e}`),n=o?.querySelector(`#${t}`);s&&s.classList.add("border-rose-500","ring-1","ring-rose-500"),n&&(n.textContent=d,n.classList.remove("hidden"))},t=function(){(o?.querySelectorAll("input, textarea")||[]).forEach(e=>{e.classList.remove("border-rose-500","ring-1","ring-rose-500")}),(o?.querySelectorAll('[id$="-error"]')||[]).forEach(e=>{e.textContent="",e.classList.add("hidden")});const e=document.getElementById("demo-feedback-message");e&&e.classList.add("hidden")};o.dataset.hasSubmitHandler="true";const d=o.querySelector("#demo-first-name"),s=o.querySelector("#demo-last-name"),n=o.querySelector("#demo-phone"),a=o.querySelector("#demo-email"),r=o.querySelector("#demo-company");o.querySelectorAll("input, textarea").forEach(e=>{e.addEventListener("input",()=>{e.classList.remove("border-rose-500","ring-1","ring-rose-500");const t=o.querySelector(`#${e.id}-error`);t&&(t.textContent="",t.classList.add("hidden"))})}),o.addEventListener("submit",async l=>{l.preventDefault();const i=document.getElementById("demo-feedback-message"),m=document.getElementById("demo-submit-btn"),c=document.getElementById("demo-btn-text"),u=document.getElementById("demo-spinner");t();let y=!0,p=null;d?.value.trim()||(y=!1,e("demo-first-name","demo-first-name-error","First name is required"),p||(p=d)),s?.value.trim()||(y=!1,e("demo-last-name","demo-last-name-error","Last name is required"),p||(p=s)),a?.value.trim()||(y=!1,e("demo-email","demo-email-error","Email is required"),p||(p=a)),n?.value.trim()||(y=!1,e("demo-phone","demo-phone-error","Phone number is required"),p||(p=n)),r?.value.trim()||(y=!1,e("demo-company","demo-company-error","Company name is required"),p||(p=r));const h=/^[a-zA-Z\s\-']+$/;if(d?.value.trim()&&!h.test(d.value.trim())&&(y=!1,e("demo-first-name","demo-first-name-error","First name should contain letters"),p||(p=d)),s?.value.trim()&&!h.test(s.value.trim())&&(y=!1,e("demo-last-name","demo-last-name-error","Last name should contain letters"),p||(p=s)),a?.value.trim()&&(/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a.value.trim())||(y=!1,e("demo-email","demo-email-error","Please enter a valid email address"),p||(p=a))),n?.value.trim()){const t=/^[+]?[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/,o=/[a-zA-Z]/.test(n.value.trim()),d=n.value.replace(/[^0-9]/g,"");(o||!t.test(n.value.trim())||d.length<7)&&(y=!1,e("demo-phone","demo-phone-error","Phone number should contain digits"),p||(p=n))}if(y){i&&i.classList.add("hidden"),c&&(c.textContent="Sending..."),u&&u.classList.remove("hidden"),m&&(m.disabled=!0);try{const e=new FormData(o),t=d?d.value:"",n=`${t} ${s?s.value:""}`.trim();e.set("name",n),await fetch("/api/contact",{method:"POST",body:e}),i&&(i.innerHTML='<p class="text-[15.5px] sm:text-[16.5px] text-slate-700 dark:text-slate-200 text-center font-medium py-1">Thank you for your message. It has been sent.</p>',i.classList.remove("hidden")),o.reset()}catch{i&&(i.innerHTML='<p class="text-[15.5px] sm:text-[16.5px] text-slate-700 dark:text-slate-200 text-center font-medium py-1">Thank you for your message. It has been sent.</p>',i.classList.remove("hidden")),o.reset()}finally{c&&(c.textContent="Schedule my demo"),u&&u.classList.add("hidden"),m&&(m.disabled=!1)}}else p&&p.focus()})}function d(){const e=document.getElementById("schedule-demo-modal"),t=document.getElementById("schedule-demo-modal-card");e&&(e.classList.remove("opacity-0","invisible","pointer-events-none"),e.classList.add("opacity-100","pointer-events-auto"),t&&(t.classList.remove("scale-95"),t.classList.add("scale-100")),document.body.style.overflow="hidden")}function s(){const e=document.getElementById("schedule-demo-modal"),t=document.getElementById("schedule-demo-modal-card");e&&(e.classList.remove("opacity-100","pointer-events-auto"),e.classList.add("opacity-0","invisible","pointer-events-none"),t&&(t.classList.remove("scale-100"),t.classList.add("scale-95")),document.body.style.overflow="")}}window.__demoModalClickListenerBound||(window.__demoModalClickListenerBound=!0,window.addEventListener("click",e=>{const t=e.target;if(!t)return;const o=t.closest("a, button, [data-open-demo-modal], .open-demo-modal");if(!o||o.closest("#schedule-demo-modal")||"demo-submit-btn"===o.id)return;const d=(o.getAttribute("href")||"").toLowerCase(),s=(o.textContent||"").trim().toLowerCase();if(null!==o.getAttribute("data-open-demo-modal")||o.classList.contains("open-demo-modal")||s.includes("request a demo")||s.includes("schedule my demo")||s.includes("schedule demo")||s.includes("book a demo")||d.includes("book-a-demo")||d.includes("request-a-demo"))if(e.preventDefault(),e.stopPropagation(),"function"==typeof window.openDemoModal)window.openDemoModal();else{const e=document.getElementById("schedule-demo-modal"),t=document.getElementById("schedule-demo-modal-card");e&&(e.classList.remove("opacity-0","invisible","pointer-events-none"),e.classList.add("opacity-100","pointer-events-auto"),t&&(t.classList.remove("scale-95"),t.classList.add("scale-100")),document.body.style.overflow="hidden")}},!0)),w(),document.addEventListener("astro:page-load",w),document.addEventListener("astro:after-swap",w);
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.