--- title: "Posts" --- My thoughts and opinions on whatever. {{< rawhtml >}} <noscript> <div class="announcement"> JavaScript is required for search. You can still read articles without it. </div> </noscript> <div class="search js-only"> <input type="text" id="search" placeholder="Search ALL Posts..."> <button id="clear-search"> <svg xmlns="http://www.w3.org/2000/svg" class="ionicon" viewBox="0 0 512 512"><title>Backspace</title><path d="M135.19 390.14a28.79 28.79 0 0021.68 9.86h246.26A29 29 0 00432 371.13V140.87A29 29 0 00403.13 112H156.87a28.84 28.84 0 00-21.67 9.84v0L46.33 256l88.86 134.11z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M336.67 192.33L206.66 322.34M336.67 322.34L206.66 192.33M336.67 192.33L206.66 322.34M336.67 322.34L206.66 192.33"></path></svg> </button> </div> <script> document.addEventListener("DOMContentLoaded", () => { for (e of document.getElementsByClassName("js-only")) { e.classList.remove("js-only"); } const articles = document.querySelectorAll("#artlist li"); const search = document.getElementById("search"); const clearSearch = document.getElementById("clear-search"); const artlist = document.getElementById("artlist"); search.addEventListener("input", () => { // grab search input value const searchText = search.value.toLowerCase().trim().normalize('NFD').replace(/\p{Diacritic}/gu, ""); const searchTerms = searchText.split(" "); const hasFilter = searchText.length > 0; artlist.classList.toggle("list-searched", hasFilter); // for each article hide all but matched articles.forEach(article => { const searchString = `${article.textContent} ${article.dataset.tags}`.toLowerCase().normalize('NFD').replace(/\p{Diacritic}/gu, ""); const isMatch = searchTerms.every(term => searchString.includes(term)); article.hidden = !isMatch; article.classList.toggle("matched-article", hasFilter && isMatch); }) }) clearSearch.addEventListener("click", () => { search.value = ""; articles.forEach(article => { article.hidden = false; article.classList.remove("matched-article"); }) artlist.classList.remove("list-searched"); }) }) </script> {{< /rawhtml >}}