mirror of
				https://github.com/benbusby/whoogle-search.git
				synced 2025-10-31 02:28:00 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			978 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			978 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function () {
 | |
| 	let searchBar, results;
 | |
| 	const keymap = {
 | |
| 		ArrowUp: goUp,
 | |
| 		ArrowDown: goDown,
 | |
| 		k: goUp,
 | |
| 		j: goDown,
 | |
| 		'/': focusSearch,
 | |
| 	};
 | |
| 	let activeIdx = -1;
 | |
| 
 | |
| 	document.addEventListener('DOMContentLoaded', () => {
 | |
| 		searchBar = document.querySelector('#search-bar');
 | |
| 		results = document.querySelectorAll('#main>div>div>div>a');
 | |
| 	});
 | |
| 
 | |
| 	document.addEventListener('keydown', (e) => {
 | |
| 		if (e.target.tagName === 'INPUT') return true;
 | |
| 		if (typeof keymap[e.key] === 'function') {
 | |
| 			e.preventDefault();
 | |
| 			keymap[e.key]();
 | |
| 		}
 | |
| 	});
 | |
| 
 | |
| 	function goUp () {
 | |
| 		if (activeIdx > 0) focusResult(activeIdx - 1);
 | |
| 		else focusSearch();
 | |
| 	}
 | |
| 
 | |
| 	function goDown () {
 | |
| 		if (activeIdx < results.length - 1) focusResult(activeIdx + 1);
 | |
| 	}
 | |
| 
 | |
| 	function focusResult (idx) {
 | |
| 		activeIdx = idx;
 | |
| 		results[activeIdx].scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });
 | |
| 		results[activeIdx].focus();
 | |
| 	}
 | |
| 
 | |
| 	function focusSearch () {
 | |
| 		activeIdx = -1;
 | |
| 		searchBar.focus();
 | |
| 	}
 | |
| }());
 |