(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; for (const [key, data] of Object.entries(versions)) { const results = Object.values(data.features).filter( feat => feat.title.toLowerCase().replaceAll('`', '').includes(query.toLowerCase()) ); 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); } document.getElementById(key + '-list').replaceChildren(...ul.children); } }); })();