Please enter at least 2 characters to search
"; } searchPageKeyboardNav.clear(); } }, 200), ); // Perform search if URL has query const params = new URLSearchParams(window.location.search); const query = params.get("q"); if (query) { searchPageInput.value = query; performSearch(query, searchPageKeyboardNav); } } // Desktop Sidebar Toggle const searchInput = document.getElementById("search-input"); if (searchInput) { const searchResults = document.getElementById("search-results"); const searchContainer = searchInput.closest(".search-container"); // Initialize keyboard navigation for desktop search const desktopKeyboardNav = new SearchKeyboardNav( searchResults, ".search-result-item", ); searchInput.addEventListener( "input", debounce(async function () { const searchTerm = this.value.trim(); const currentSearchTerm = searchTerm; if (searchTerm.length < 2) { searchResults.innerHTML = ""; searchResults.style.display = "none"; if (searchContainer) searchContainer.classList.remove("has-results"); desktopKeyboardNav.clear(); return; } searchResults.innerHTML = 'Please enter at least 2 characters to search
"; if (keyboardNav) keyboardNav.clear(); return; } // Cancel any pending search if (searchPageController) { searchPageController.abort(); } searchPageController = new AbortController(); // Show loading state resultsContainer.innerHTML = "Searching...
"; if (keyboardNav) keyboardNav.clear(); try { const results = await window.searchNamespace.engine.search(query, 50, { signal: searchPageController.signal, }); // Check if aborted before rendering if (searchPageController.signal.aborted) { return; } // Display results if (results.length > 0) { let html = 'No results found
"; if (keyboardNav) keyboardNav.clear(); } // Update URL with query const url = new URL(window.location.href); url.searchParams.set("q", query); window.history.replaceState({}, "", url.toString()); } catch (error) { if (error.name === "AbortError") { return; } console.error("Search error:", error); resultsContainer.innerHTML = `Search is temporarily unavailable. Please try again.