1document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll('a[href^="#"]').forEach(t=>{t.addEventListener("click",function(s){s.preventDefault();const a=this.getAttribute("href");if(!a)return;if(a==="#")window.scrollTo({top:0,behavior:"smooth"});else{const l=document.querySelector(a);l&&l.scrollIntoView({behavior:"smooth",block:"start"})}const r=document.querySelector(".js-mobile-menu");r&&!r.classList.contains("hidden")&&c(!1)})});const e={mobileMenuButton:document.querySelector(".js-mobile-menu-open"),closeMenuButton:document.querySelector(".js-mobile-menu-close"),mobileMenu:document.querySelector(".js-mobile-menu"),backdrop:document.querySelector(".js-mobile-menu-backdrop"),modal:document.querySelector(".js-waitlist-modal"),modalBackdrop:document.querySelector(".js-waitlist-modal-backdrop"),modalClose:document.querySelector(".js-waitlist-modal-close"),waitlistButtons:document.querySelectorAll(".js-waitlist-button"),waitlistForm:document.querySelector(".js-waitlist-form"),selectedAppDisplay:document.querySelector(".js-selected-app"),teamModal:document.querySelector(".js-team-waitlist-modal"),teamModalBackdrop:document.querySelector(".js-team-waitlist-modal-backdrop"),teamModalClose:document.querySelector(".js-team-waitlist-modal-close"),teamWaitlistButtons:document.querySelectorAll(".js-team-waitlist-button"),teamWaitlistForm:document.querySelector(".js-team-waitlist-form"),teamPlanInput:document.querySelector(".js-team-plan-input"),managedServersModal:document.querySelector(".js-managed-servers-modal"),managedServersModalBackdrop:document.querySelector(".js-managed-servers-modal-backdrop"),managedServersModalClose:document.querySelector(".js-managed-servers-modal-close"),managedServersButtons:document.querySelectorAll(".js-managed-servers-button"),managedServersForm:document.querySelector(".js-managed-servers-form"),requestAppModal:document.querySelector(".js-request-app-modal"),requestAppModalBackdrop:document.querySelector(".js-request-app-modal-backdrop"),requestAppModalClose:document.querySelector(".js-request-app-modal-close"),requestAppButtons:document.querySelectorAll(".js-request-app-button"),requestAppForm:document.querySelector(".js-request-app-form"),catalogWaitlistModal:document.querySelector(".js-catalog-waitlist-modal"),catalogWaitlistModalBackdrop:document.querySelector(".js-catalog-waitlist-modal-backdrop"),catalogWaitlistModalClose:document.querySelector(".js-catalog-waitlist-modal-close"),catalogWaitlistButtons:document.querySelectorAll(".js-catalog-waitlist-button"),catalogWaitlistForm:document.querySelector(".js-catalog-waitlist-form"),catalogSelectedAppDisplay:document.querySelector(".js-catalog-selected-app"),catalogAppInput:document.querySelector(".js-catalog-app-input")};function c(t){e.mobileMenu&&(e.mobileMenu.classList.toggle("hidden",!t),document.body.style.overflow=t?"hidden":"")}e.mobileMenuButton?.addEventListener("click",()=>c(!0)),e.closeMenuButton?.addEventListener("click",()=>c(!1)),e.backdrop?.addEventListener("click",()=>c(!1)),document.querySelectorAll(".js-mobile-menu a").forEach(t=>{t.addEventListener("click",function(){c(!1)})}),c(!1);const L={small:{winterflow:14,specs:"3 shared vCPU / 4 GB RAM"},medium:{winterflow:42,specs:"4 dedicated vCPU / 16 GB RAM"}},p=document.querySelector(".js-pricing-calculator");if(p){let t=function(l){const o=L[l];o&&a&&r&&(a.textContent=`$${o.winterflow.toFixed(2)}/mo`,r.textContent=o.specs)};const s=p.querySelector(".js-server-select"),a=p.querySelector(".js-winterflow-price"),r=p.querySelector(".js-specs-display");s?.addEventListener("change",l=>{t(l.target.value)}),s&&t(s.value)}const m=document.querySelector(".js-search-input"),M=document.querySelectorAll(".js-filter-checkbox"),F=document.querySelectorAll(".js-catalog-item"),q=document.querySelector(".js-no-results"),A=document.querySelectorAll(".js-filter-tag");let S;function E(t){S&&clearTimeout(S),t.trim().length!==0&&(S=setTimeout(async()=>{try{await fetch("https://api.flowmitry.com/webhook/winterflow/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({search:t.trim()})})}catch(s){console.warn("Search tracking failed:",s)}},500))}function g(){if(!m)return;const t=m.value.toLowerCase(),s=Array.from(M).filter(r=>r.checked).map(r=>r.value);let a=0;F.forEach(r=>{const l=r.querySelector(".js-item-name")?.textContent?.toLowerCase()??"",o=r.dataset.type,i=r.dataset.tags?r.dataset.tags.split(","):o?[o]:[],d=[l,r.dataset.keywords||"",r.dataset.alternatives||"",(r.dataset.tags||"").replace(/,/g," "),r.dataset.summary||"",r.dataset.fullDescription||"",r.dataset.license||"",r.dataset.homepageUrl||"",r.dataset.repositoryUrl||"",r.dataset.documentationUrl||""].some(x=>x.toLowerCase().includes(t)),u=s.length===0||s.some(x=>i.includes(x)),b=d&&u;r.classList.toggle("hidden",!b),b&&(a+=1)}),q&&q.classList.toggle("hidden",a!==0)}m&&m.addEventListener("input",()=>{g(),E(m.value)}),M.forEach(t=>{t.addEventListener("change",g)}),A.forEach(t=>{t.addEventListener("click",()=>{const s=t.dataset.type;
1s&&(M.forEach(a=>{a.checked=a.value===s}),g())})});const k=window.location.hash.substring(1).toLowerCase();if(k){const t=document.querySelector(`.js-filter-checkbox[value="${k}"]`);t&&(t.checked=!0,g())}function f(t){!e.modal||!e.modalBackdrop||(e.modal.classList.toggle("hidden",!t),e.modalBackdrop.classList.toggle("hidden",!t),t?(document.body.style.overflow="hidden",e.waitlistForm&&e.waitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(a=>a.remove())):(document.body.style.overflow="",e.waitlistForm&&(e.waitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(a=>a.remove()),e.waitlistForm.reset()),e.selectedAppDisplay&&(e.selectedAppDisplay.textContent="your apps")))}e.waitlistButtons.forEach(t=>{t.addEventListener("click",()=>{const s=t.dataset.appName||"your apps";e.selectedAppDisplay&&(e.selectedAppDisplay.textContent=s),f(!0)})}),e.modalClose?.addEventListener("click",()=>f(!1)),e.modalBackdrop?.addEventListener("click",()=>f(!1)),e.waitlistForm&&e.waitlistForm.addEventListener("submit",async t=>{t.preventDefault();const s=e.waitlistForm.querySelector('button[type="submit"]');if(!s)return;const a=s.innerHTML;try{s.disabled=!0,s.innerHTML=` 2 <svg class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 3 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 4 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> 5 </svg> 6 Submitting... 7 `;const l=e.waitlistForm.querySelector('input[type="email"]')?.value?.trim();if(!l)throw new Error("Email is required");if(!(await fetch("https://api.flowmitry.com/webhook/winterflow/waiting-list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:l})})).ok)throw new Error("Network response was not ok");e.waitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(d=>d.remove());const n=document.createElement("div");n.className="rounded-md bg-green-50 p-4 mb-6",n.innerHTML=` 8 <div class="flex"> 9 <div class="flex-shrink-0">
10 <svg class="h-5 w-5 text-green-400" viewBox="0 0 20 20" fill="currentColor"> 11 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" /> 12 </svg> 13 </div> 14 <div class="ml-3"> 15 <p class="text-sm font-medium text-green-800">Thank you for joining the waitlist!</p> 16 <p class="mt-1 text-sm text-green-700">We'll be in touch soon with early access details.</p> 17 </div> 18 </div> 19 `,e.waitlistForm.insertBefore(n,e.waitlistForm.firstChild),setTimeout(()=>f(!1),5e3)}catch{e.waitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(i=>i.remove());const o=document.createElement("div");o.className="rounded-md bg-red-50 p-4 mb-6",o.innerHTML=` 20 <div class="flex"> 21 <div class="flex-shrink-0"> 22 <svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor"> 23 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586l-1.293-1.293z" clip-rule="evenodd" /> 24 </svg> 25 </div> 26 <div class="ml-3"> 27 <p class="text-sm font-medium text-red-800">Something went wrong</p> 28 <p class="mt-1 text-sm text-red-700">Please try again later or contact support if the problem persists.</p> 29 </div> 30 </div> 31 `,e.waitlistForm.insertBefore(o,e.waitlistForm.firstChild)}finally{s.disabled=!1,s.innerHTML=a}});function v(t){!e.teamModal||!e.teamModalBackdrop||(e.teamModal.classList.toggle("hidden",!t),e.teamModalBackdrop.classList.toggle("hidden",!t),document.body.style.overflow=t?"hidden":"",!t&&e.teamWaitlistForm&&(e.teamWaitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(a=>a.remove()),e.teamWaitlistForm.reset()))}e.teamWaitlistButtons.forEach(t=>{t.addEventListener("click",()=>v(!0))}),e.teamModalClose?.addEventListener("click",()=>v(!1)),e.teamModalBackdrop?.addEventListener("click",()=>v(!1)),e.teamWaitlistForm&&e.teamWaitlistForm.addEventListener("submit",async t=>{t.preventDefault();const s=e.teamWaitlistForm.querySelector('button[type="submit"]');if(!s)return;const a=s.innerHTML;try{s.disabled=!0,s.innerHTML=` 32 <svg class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 33 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 34 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> 35 </svg> 36 Submitting... 37 `;const r=e.teamWaitlistForm.querySelector('input[type="email"]')?.value,l=e.teamWaitlistForm.querySelector('input[name="user-interview"]')?.checked;if(!(await fetch("https://api.flowmitry.com/webhook/winterflow/team-waiting-list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r,wantsInterview:l})})).ok)throw new Error("Network response was not ok");e.teamWaitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(d=>d.remove());const n=document.createElement("div");n.className="rounded-md bg-green-50 p-4 mb-6",n.innerHTML=` 38 <div class="flex"> 39 <div class="flex-shrink-0">
40 <svg class="h-5 w-5 text-green-400" viewBox="0 0 20 20" fill="currentColor"> 41 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" /> 42 </svg> 43 </div> 44 <div class="ml-3"> 45 <p class="text-sm font-medium text-green-800">Thanks for joining the Business Plan waitlist!</p> 46 <p class="mt-1 text-sm text-green-700">We'll contact you once the plan is available.</p> 47 </div> 48 </div> 49 `,e.teamWaitlistForm.insertBefore(n,e.teamWaitlistForm.firstChild),setTimeout(()=>v(!1),5e3)}catch{e.teamWaitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(i=>i.remove());const o=document.createElement("div");o.className="rounded-md bg-red-50 p-4 mb-6",o.innerHTML=` 50 <div class="flex"> 51 <div class="flex-shrink-0"> 52 <svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor"> 53 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586l-1.293-1.293z" clip-rule="evenodd" /> 54 </svg> 55 </div> 56 <div class="ml-3"> 57 <p class="text-sm font-medium text-red-800">Something went wrong</p> 58 <p class="mt-1 text-sm text-red-700">Try again later or contact support.</p> 59 </div> 60 </div> 61 `,e.teamWaitlistForm.insertBefore(o,e.teamWaitlistForm.firstChild)}finally{s.disabled=!1,s.innerHTML=a}});function h(t){!e.managedServersModal||!e.managedServersModalBackdrop||(e.managedServersModal.classList.toggle("hidden",!t),e.managedServersModalBackdrop.classList.toggle("hidden",!t),document.body.style.overflow=t?"hidden":"",!t&&e.managedServersForm&&(e.managedServersForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(a=>a.remove()),e.managedServersForm.reset()))}e.managedServersButtons.forEach(t=>{t.addEventListener("click",()=>h(!0))}),e.managedServersModalClose?.addEventListener("click",()=>h(!1)),e.managedServersModalBackdrop?.addEventListener("click",()=>h(!1)),e.managedServersForm&&e.managedServersForm.addEventListener("submit",async t=>{t.preventDefault();const s=e.managedServersForm.querySelector('button[type="submit"]');if(!s)return;const a=s.innerHTML;try{s.disabled=!0,s.innerHTML=` 62 <svg class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 63 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 64 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> 65 </svg> 66 Submitting... 67 `;const r=e.managedServersForm.querySelector('input[type="email"]')?.value;if(!(await fetch("https://api.flowmitry.com/webhook/winterflow/cloud-waiting-list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r})})).ok)throw new Error("Network response was not ok");e.managedServersForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(n=>n.remove());const i=document.createElement("div");i.className="rounded-md bg-green-50 p-4 mb-6",i.innerHTML=` 68 <div class="flex"> 69 <div class="flex-shrink-0">
70 <svg class="h-5 w-5 text-green-400" viewBox="0 0 20 20" fill="currentColor"> 71 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" /> 72 </svg> 73 </div> 74 <div class="ml-3"> 75 <p class="text-sm font-medium text-green-800">Thanks for your interest!</p> 76 <p class="mt-1 text-sm text-green-700">We'll reach out with managed cloud details.</p> 77 </div> 78 </div> 79 `,e.managedServersForm.insertBefore(i,e.managedServersForm.firstChild),setTimeout(()=>h(!1),5e3)}catch{e.managedServersForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(i=>i.remove());const o=document.createElement("div");o.className="rounded-md bg-red-50 p-4 mb-6",o.innerHTML=` 80 <div class="flex"> 81 <div class="flex-shrink-0"> 82 <svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor"> 83 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586l-1.293-1.293z" clip-rule="evenodd" /> 84 </svg> 85 </div> 86 <div class="ml-3"> 87 <p class="text-sm font-medium text-red-800">Something went wrong</p> 88 <p class="mt-1 text-sm text-red-700">Please try again later.</p> 89 </div> 90 </div> 91 `,e.managedServersForm.insertBefore(o,e.managedServersForm.firstChild)}finally{s.disabled=!1,s.innerHTML=a}});function y(t){!e.catalogWaitlistModal||!e.catalogWaitlistModalBackdrop||(e.catalogWaitlistModal.classList.toggle("hidden",!t),e.catalogWaitlistModalBackdrop.classList.toggle("hidden",!t),document.body.style.overflow=t?"hidden":"",e.catalogWaitlistForm&&(e.catalogWaitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(a=>a.remove()),t||e.catalogWaitlistForm.reset()),t||(e.catalogAppInput&&(e.catalogAppInput.value=""),e.catalogSelectedAppDisplay&&(e.catalogSelectedAppDisplay.textContent="this app")))}e.catalogWaitlistButtons.forEach(t=>{t.addEventListener("click",()=>{const s=t.dataset.appName||"this app",a=t.dataset.appSlug||"";e.catalogWaitlistForm&&e.catalogWaitlistForm.reset(),e.catalogSelectedAppDisplay&&(e.catalogSelectedAppDisplay.textContent=s),e.catalogAppInput&&(e.catalogAppInput.value=a),y(!0)})}),e.catalogWaitlistModalClose?.addEventListener("click",()=>y(!1)),e.catalogWaitlistModalBackdrop?.addEventListener("click",()=>y(!1)),e.catalogWaitlistForm&&e.catalogWaitlistForm.addEventListener("submit",async t=>{t.preventDefault();const s=e.catalogWaitlistForm.querySelector('button[type="submit"]');if(!s)return;const a=s.innerHTML;try{s.disabled=!0,s.innerHTML=` 92 <svg class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 93 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 94 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> 95 </svg> 96 Submitting... 97 `;const r=e.catalogWaitlistForm.querySelector('input[type="email"]')?.value,l=e.catalogAppInput?.value;if(!(await fetch("https://api.flowmitry.com/webhook/winterflow/waiting-list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r,app:l})})).ok)throw new Error("Network response was not ok");e.catalogWaitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(d=>d.remove());const n=document.createElement("div");n.className="rounded-md bg-green-50 p-4 mb-6",n.innerHTML=` 98 <div class="flex"> 99 <div class="flex-shrink-0">
100 <svg class="h-5 w-5 text-green-400" viewBox="0 0 20 20" fill="currentColor"> 101 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" /> 102 </svg> 103 </div> 104 <div class="ml-3"> 105 <p class="text-sm font-medium text-green-800">Thanks for your interest!</p> 106 <p class="mt-1 text-sm text-green-700">We'll email you as soon as this app is ready.</p> 107 </div> 108 </div> 109 `,e.catalogWaitlistForm.insertBefore(n,e.catalogWaitlistForm.firstChild),setTimeout(()=>y(!1),5e3)}catch{e.catalogWaitlistForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(i=>i.remove());const o=document.createElement("div");o.className="rounded-md bg-red-50 p-4 mb-6",o.innerHTML=` 110 <div class="flex"> 111 <div class="flex-shrink-0"> 112 <svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor"> 113 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586l-1.293-1.293z" clip-rule="evenodd" /> 114 </svg> 115 </div> 116 <div class="ml-3"> 117 <p class="text-sm font-medium text-red-800">Something went wrong</p> 118 <p class="mt-1 text-sm text-red-700">Please try again later.</p> 119 </div> 120 </div> 121 `,e.catalogWaitlistForm.insertBefore(o,e.catalogWaitlistForm.firstChild)}finally{s.disabled=!1,s.innerHTML=a}});function w(t){!e.requestAppModal||!e.requestAppModalBackdrop||(e.requestAppModal.classList.toggle("hidden",!t),e.requestAppModalBackdrop.classList.toggle("hidden",!t),document.body.style.overflow=t?"hidden":"",!t&&e.requestAppForm&&(e.requestAppForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(a=>a.remove()),e.requestAppForm.reset()))}e.requestAppButtons.forEach(t=>{t.addEventListener("click",()=>w(!0))}),e.requestAppModalClose?.addEventListener("click",()=>w(!1)),e.requestAppModalBackdrop?.addEventListener("click",()=>w(!1)),e.requestAppForm&&e.requestAppForm.addEventListener("submit",async t=>{t.preventDefault();const s=e.requestAppForm.querySelector('button[type="submit"]');if(!s)return;const a=s.innerHTML;try{s.disabled=!0,s.innerHTML=` 122 <svg class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 123 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 124 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> 125 </svg> 126 Submitting... 127 `;const r=e.requestAppForm.querySelector('input[type="email"]')?.value,l=e.requestAppForm.querySelector('input[name="app"]')?.value,i=e.requestAppForm.querySelector('input[name="new"]')?.value!=="false";if(!(await fetch("https://api.flowmitry.com/webhook/winterflow/waiting-list",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r,app:l,new:i})})).ok)throw new Error("Network response was not ok");e.requestAppForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(b=>b.remove());const u=document.createElement("div");u.className="rounded-md bg-green-50 p-4 mb-6",u.innerHTML=` 128 <div class="flex"> 129 <div class="flex-shrink-0">
130 <svg class="h-5 w-5 text-green-400" viewBox="0 0 20 20" fill="currentColor"> 131 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" /> 132 </svg> 133 </div> 134 <div class="ml-3"> 135 <p class="text-sm font-medium text-green-800">Thank you for your request!</p> 136 <p class="mt-1 text-sm text-green-700">We'll review your app suggestion and consider adding it to our catalog.</p> 137 </div> 138 </div> 139 `,e.requestAppForm.insertBefore(u,e.requestAppForm.firstChild),setTimeout(()=>w(!1),5e3)}catch{e.requestAppForm.querySelectorAll(".rounded-md.bg-green-50, .rounded-md.bg-red-50").forEach(i=>i.remove());const o=document.createElement("div");o.className="rounded-md bg-red-50 p-4 mb-6",o.innerHTML=` 140 <div class="flex"> 141 <div class="flex-shrink-0"> 142 <svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor"> 143 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586l-1.293-1.293z" clip-rule="evenodd" /> 144 </svg> 145 </div> 146 <div class="ml-3"> 147 <p class="text-sm font-medium text-red-800">Something went wrong</p> 148 <p class="mt-1 text-sm text-red-700">Please try again later or contact support if the problem persists.</p> 149 </div> 150 </div> 151 `,e.requestAppForm.insertBefore(o,e.requestAppForm.firstChild)}finally{s.disabled=!1,s.innerHTML=a}})});
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.