PageSourceSearch

https://winterflow.io/_astro/SiteScripts.astro_astro_type_script_index_0_lang.BUhCMeYe.js

js winterflow.io collected 2026-09-25 22:35:57 UTC 24,550 bytes, 151 lines download raw bytes

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.