PageSourceSearch

https://getsprint.me/script.js

js getsprint.me collected 2026-10-02 02:00:15 UTC 3,177 bytes, 73 lines download raw bytes

1document.addEventListener('DOMContentLoaded', () => {
2
3  // ── Support / Feedback Form Handler ──────────────────────────────────────
4  const supportForm    = document.getElementById('supportForm') || document.getElementById('feedbackForm');
5  const supportEmail   = document.getElementById('supportEmail') || document.getElementById('feedbackEmail');
6  const supportMessage = document.getElementById('supportMessage') || document.getElementById('feedbackMessage');
7  const submitBtn      = document.getElementById('supportSubmitBtn') || document.getElementById('feedbackSubmitBtn');
8  const feedbackMsg    = document.getElementById('supportFeedback') || document.getElementById('formFeedback');
9
10  if (supportForm && supportEmail && supportMessage && submitBtn && feedbackMsg) {
11    supportForm.addEventListener('submit', async (e) => {
12      e.preventDefault();
13
14      const emailVal   = supportEmail.value.trim();
15      const messageVal = supportMessage.value.trim();
16      if (!emailVal || !messageVal) return;
17
18      const originalText = submitBtn.textContent;
19      submitBtn.textContent = 'Sending…';
20      submitBtn.disabled = true;
21
22      try {
23        const res = await fetch('https://formsubmit.co/ajax/[email protected]', {
24          method: 'POST',
25          headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
26          body: JSON.stringify({
27            email: emailVal,
28            message: messageVal,
29            _subject: 'Sprint — Support / Feedback Request'
30          })
31        });
32
33        if (res.ok) {
34          feedbackMsg.classList.remove('hidden');
35          supportForm.reset();
36          setTimeout(() => feedbackMsg.classList.add('hidden'), 6000);
37        } else {
38          alert('Unable to send. Please try again.');
39        }
40      } catch {
41        alert('Network error. Please check your connection and try again.');
42      } finally {
43        submitBtn.textContent = originalText;
44        submitBtn.disabled = false;
45      }
46    });
47  }
48
49  // ── Features Page: Interactive Submission Panel Tabs ─────────────────────
50  const subTabs  = document.querySelectorAll('.sub-tab');
51  const subPanes = document.querySelectorAll('.submission-pane');
52
53  if (subTabs.length && subPanes.length) {
54    subTabs.forEach(tab => {
55      tab.addEventListener('click', () => {
56        subTabs.forEach(t  => t.classList.remove('active'));
57        subPanes.forEach(p => p.classList.remove('active'));
58        tab.classList.add('active');
59        const pane = document.getElementById(`pane-${tab.dataset.tab}`);
60        if (pane) pane.classList.add('active');
61      });
62    });
63  }
64
65  // ── Hero: Debugger popup dismiss ─────────────────────────────────────────
66  const dismissBtn = document.querySelector('.debugger-btn');
67  if (dismissBtn) {
68    dismissBtn.addEventListener('click', () => {
69      const popup = dismissBtn.closest('.debugger-popup');
70      if (popup) popup.style.display = 'none';
71    });
72  }
73});

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.