(async function(){ const res = await fetch('data.json'); const versions = await res.json(); const input = document.getElementById('search'); input.addEventListener('input', (e) => { const query = e.target.value.toLowerCase(); for (const [key, data] of Object.entries(versions)) { const heading = document.getElementById(key); if (data.features == undefined) { heading.hidden = query.length != 0; continue; } const results = Object.values(data.features).filter( feat => { if (feat.title.toLowerCase().replaceAll('`', '').includes(query)) { return true; } if (query.length > 1 && feat.items && feat.items.some(i => i.toLowerCase().includes(query))) { return true; } return false; } ); const ul = document.createElement('ul'); for (const feat of results) { const li = document.createElement('li'); const a = document.createElement('a'); a.textContent = feat.title; a.innerHTML = a.innerHTML.replaceAll(/`(.+?)`/g, (_, x) => `${x}`); a.href = feat.url; li.appendChild(a); ul.appendChild(li); } const list = document.getElementById(key + '-list'); list.replaceChildren(...ul.children); list.hidden = results.length == 0; heading.hidden = results.length == 0; } }); })();