1(function(){'use strict';if(!window.snCoreLiveSearch){return;} 2var config=window.snCoreLiveSearch;function debounce(fn,delay){var timer=null;var debounced=function(){var ctx=this;var args=arguments;window.clearTimeout(timer);timer=window.setTimeout(function(){fn.apply(ctx,args);},delay);};debounced.cancel=function(){window.clearTimeout(timer);timer=null;};return debounced;} 3function createPanel(form){var inner=form.querySelector('.header-search-inner');if(!inner){return null;} 4var panel=document.createElement('div');panel.className='sn-live-search';panel.hidden=true;panel.innerHTML='<div class="sn-live-search__content"></div>';form.appendChild(panel);return panel;} 5function escapeHtml(value){return String(value).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');} 6function render(panel,data,query){var content=panel.querySelector('.sn-live-search__content');if(!content){return;} 7var categories=Array.isArray(data.categories)?data.categories:[];var brands=Array.isArray(data.brands)?data.brands:[];var products=Array.isArray(data.products)?data.products:[];if(!categories.length&&!brands.length&&!products.length){content.innerHTML='<div class="sn-live-search__empty">'+escapeHtml(config.i18n.noResults)+'</div>';panel.hidden=false;return;} 8var categoriesHtml='';if(categories.length){categoriesHtml+='<section class="sn-live-search__section">';categoriesHtml+='<h4>'+escapeHtml(config.i18n.categories)+'</h4>';categoriesHtml+='<ul class="sn-live-search__categories">';categories.forEach(function(item){categoriesHtml+='<li><a href="'+escapeHtml(item.url)+'">'+escapeHtml(item.name)+'</a></li>';});categoriesHtml+='</ul></section>';} 9var brandsHtml='';if(brands.length){brandsHtml+='<section class="sn-live-search__section">';brandsHtml+='<h4>'+escapeHtml(config.i18n.brands||'Brand')+'</h4>';brandsHtml+='<ul class="sn-live-search__brands">';brands.forEach(function(item){brandsHtml+='<li><a href="'+escapeHtml(item.url)+'">'+escapeHtml(item.name)+'</a></li>';});brandsHtml+='</ul></section>';} 10var productsHtml='';if(products.length){productsHtml+='<section class="sn-live-search__section">';productsHtml+='<h4>'+escapeHtml(config.i18n.products)+'</h4>';productsHtml+='<ul class="sn-live-search__products">';products.forEach(function(item){productsHtml+='<li>';productsHtml+='<a class="sn-live-search__product" href="'+escapeHtml(item.url)+'">';productsHtml+='<span class="sn-live-search__thumb"><img src="'+escapeHtml(item.image||'')+'" alt="'+escapeHtml(item.name)+'" loading="lazy"></span>';productsHtml+='<span class="sn-live-search__meta">';productsHtml+='<span class="sn-live-search__name">'+escapeHtml(item.name)+'</span>';if(item.priceHtml){productsHtml+='<span class="sn-live-search__price">'+item.priceHtml+'</span>';} 11productsHtml+='</span></a></li>';});productsHtml+='</ul></section>';} 12var allResultsUrl=data.allResultsUrl||('/?s='+encodeURIComponent(query)+'&post_type=product');var hint=config.i18n.enterHint?'<span class="sn-live-search__hint">'+escapeHtml(config.i18n.enterHint)+'</span>':'';var footerHtml='<div class="sn-live-search__footer"><a href="'+escapeHtml(allResultsUrl)+'">'+escapeHtml(config.i18n.viewAll)+'</a>'+hint+'</div>';content.innerHTML='<div class="sn-live-search__groups">'+categoriesHtml+brandsHtml+productsHtml+'</div>'+footerHtml;panel.hidden=false;} 13function setLoading(panel){var content=panel.querySelector('.sn-live-search__content');if(!content){return;} 14content.innerHTML=''+'<div class="sn-live-search__groups">'+'<section class="sn-live-search__section">'+'<h4>'+escapeHtml(config.i18n.products)+'</h4>'+'<div class="sn-live-search__skeleton-list">'+'<div class="sn-live-search__skeleton-row"></div>'+'<div class="sn-live-search__skeleton-row"></div>'+'<div class="sn-live-search__skeleton-row"></div>'+'</div>'+'</section>'+'</div>'+'<div class="sn-live-search__loading">'+escapeHtml(config.i18n.loading)+'</div>';panel.hidden=false;} 15function setError(panel,onRetry){var content=panel.querySelector('.sn-live-search__content');if(!content){return;} 16content.innerHTML=''+'<div class="sn-live-search__error">'+'<p>'+escapeHtml(config.i18n.error||'Errore durante la ricerca.')+'</p>'+'<button type="button" class="sn-live-search__retry">
16'+escapeHtml(config.i18n.retry||'Riprova')+'</button>'+'</div>';panel.hidden=false;var retry=content.querySelector('.sn-live-search__retry');if(retry){retry.addEventListener('click',function(){if(typeof onRetry==='function'){onRetry();}});}} 17function hidePanel(panel){panel.hidden=true;} 18function bindForm(form){var input=form.querySelector('.search-field');if(!input){return;} 19var panel=createPanel(form);if(!panel){return;} 20var requestSeq=0;var activeXhr=null;var activeIndex=-1;var debounceMs=Math.max(240,Number(config.debounceMs||260));var lastQuery='';var fetchResults=null;function getResultLinks(){return Array.prototype.slice.call(panel.querySelectorAll('.sn-live-search__categories a, .sn-live-search__brands a, .sn-live-search__product'));} 21function clearActive(){getResultLinks().forEach(function(link){link.classList.remove('is-active');});} 22function setActive(index){var links=getResultLinks();if(!links.length){activeIndex=-1;return;} 23if(index<0){index=links.length-1;} 24if(index>=links.length){index=0;} 25activeIndex=index;clearActive();links[activeIndex].classList.add('is-active');links[activeIndex].scrollIntoView({block:'nearest'});} 26function dismissPanel(cancelRequest){if(fetchResults&&typeof fetchResults.cancel==='function'){fetchResults.cancel();} 27if(cancelRequest){requestSeq+=1;if(activeXhr&&activeXhr.readyState!==4){activeXhr.abort();} 28activeXhr=null;} 29activeIndex=-1;clearActive();hidePanel(panel);} 30function requestResults(query){if(query.length<Number(config.minChars||2)){dismissPanel(true);return;} 31lastQuery=query;requestSeq+=1;var currentRequest=requestSeq;if(activeXhr&&activeXhr.readyState!==4){activeXhr.abort();} 32setLoading(panel);var url=config.endpoint+'?q='+encodeURIComponent(query)+'&limit='+encodeURIComponent(String(config.maxResults||8));var xhr=new XMLHttpRequest();
32activeXhr=xhr;xhr.open('GET',url,true);xhr.timeout=Number(config.timeoutMs||10000);xhr.setRequestHeader('Accept','application/json');xhr.onreadystatechange=function(){if(xhr.readyState!==4||currentRequest!==requestSeq){return;} 33if(xhr.status<200||xhr.status>=300){setError(panel,function(){requestResults(lastQuery);});return;} 34try{var data=JSON.parse(xhr.responseText||'{}');activeIndex=-1;clearActive();render(panel,data,query);}catch(error){setError(panel,function(){requestResults(lastQuery);});}};xhr.ontimeout=function(){if(currentRequest!==requestSeq){return;} 35setError(panel,function(){requestResults(lastQuery);});};xhr.onerror=function(){if(currentRequest!==requestSeq){return;} 36setError(panel,function(){requestResults(lastQuery);});};xhr.send();} 37fetchResults=debounce(function(){var query=(input.value||'').trim();requestResults(query);},debounceMs);input.addEventListener('input',fetchResults);input.addEventListener('focus',function(){if((input.value||'').trim().length>=Number(config.minChars||2)){fetchResults();}});document.addEventListener('click',function(event){if(!form.contains(event.target)){dismissPanel(true);}});input.addEventListener('keydown',function(event){var key=event.key||'';if(key==='Escape'||key==='Esc'||event.keyCode===27){dismissPanel(true);return;} 38if(panel.hidden){return;} 39if(key==='ArrowDown'||key==='Down'||event.keyCode===40){event.preventDefault();setActive(activeIndex+1);return;} 40if(key==='ArrowUp'||key==='Up'||event.keyCode===38){event.preventDefault();setActive(activeIndex-1);return;} 41if(key==='Enter'||event.keyCode===13){var links=getResultLinks();if(activeIndex>=0&&links[activeIndex]){event.preventDefault();window.location.href=links[activeIndex].getAttribute('href');}}});} 42document.addEventListener('DOMContentLoaded',function(){document.querySelectorAll('form.header-search').forEach(bindForm);});})();
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.