https://n4g.com/wp-content/cache/min/1/wp-content/themes/n4g/assets/js/live-search.js?ver=1790001230
1jQuery(document).ready(function($){const $input=$('#search-input');const $suggestBox=$('#search-suggestions');const $loader=$('#search-loader');let timer;let selectedIndex=-1;let lastRequest=null;function fetchSuggestions(query){$suggestBox.show();if(lastRequest&&lastRequest.readyState!==4){lastRequest.abort()} 2$loader[0].style.setProperty('display','flex','important');$loader[0].style.visibility='visible';requestAnimationFrame(()=>{lastRequest=$.ajax({url:ajaxurl,type:'POST',data:{action:'n4g_live_search',search:query||''},success:function(response){response=response.trim();$loader[0].style.setProperty('display','none','important');$suggestBox.find('.suggest-item, .no-result').remove();if(response.length>0){$suggestBox.append(response)}else{$suggestBox.append('<div class="no-result">No suggestions</div>')} 3selectedIndex=-1},error:function(xhr,status){if(status==='abort')return;$loader[0].style.setProperty('display','none','important');$suggestBox.find('.suggest-item, .no-result').remove();$suggestBox.append('<div class="no-result">Something went wrong</div>')}})})} 4function setActive(index){const $items=$suggestBox.find('.suggest-item');$items.removeClass('active');if(index>=0&&index<$items.length){$items.eq(index).addClass('active');$items.eq(index)[0].scrollIntoView({block:'nearest'})}} 5function selectItem($item){const text=$item.text().trim();const link=$item.data('url');$input.val(text);$suggestBox.hide();if(link){window.location.href=link}else{$input.closest('form').submit()}} 6$input.on('keyup',function(e){if(e.key==='ArrowDown'||e.key==='ArrowUp'||e.key==='Enter'||e.key==='Escape')return;clearTimeout(timer);timer=setTimeout(()=>{fetchSuggestions($(this).val())},250)});$input.on('focus',function(){fetchSuggestions($(this).val())});$input.on('keydown',function(e){const $items=$suggestBox.find('.suggest-item');if(!$items.length)return;switch(e.key){case 'ArrowDown':e.preventDefault();selectedIndex++;if(selectedIndex>=$items.length)selectedIndex=0;setActive(selectedIndex);break;case 'ArrowUp':e.preventDefault();selectedIndex--;if(selectedIndex<0)selectedIndex=$items.length-1;setActive(selectedIndex);break;case 'Enter':if(selectedIndex>=0){e.preventDefault();selectItem($items.eq(selectedIndex))} 7break;case 'Escape':$suggestBox.hide();$loader.hide();break}});$suggestBox.on('mouseenter','.suggest-item',function(){const $items=$suggestBox.find('.suggest-item');selectedIndex=$items.index(this);setActive(selectedIndex)});$suggestBox.on('click','.suggest-item',function(e){e.preventDefault();selectItem($(this))});$(document).on('click',function(e){if(!$(e.target).closest('.h-search-box-wrapper').length){$suggestBox.hide();$loader.hide()}})})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.