PageSourceSearch

https://cdn.davanuserviss.lv/compressed/1785850693_search.min.js

js davanuserviss.lv collected 2026-09-26 01:18:01 UTC 6,771 bytes, 63 lines download raw bytes

1const searchInput=document.querySelector('.main-panel__search-input')
2const searchInputMobile=document.querySelector('.search-results__mobile-input input')
3const searchResults=document.querySelector('.search-results.desktop')
4const searchResultsMobile=document.querySelector('.search-results.mobiles')
5const overlay=document.querySelector('.search-overlay')
6const screenWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;const searchDataParam='searchText';const MINIMUM_SEARCH_CHARACTERS=1
7const SEARCH_THROTTLE_MS=500
8function createThrottledSearch(search,interval=SEARCH_THROTTLE_MS){let abortController
9let lastFireTime=0
10let trailingTimeoutId
11let lastTerm=null
12const normalize=(term)=>term.replace(/\s+/g,'')
13const fire=(term)=>{clearTimeout(trailingTimeoutId)
14lastFireTime=Date.now()
15lastTerm=normalize(term)
16if(abortController){abortController.abort()}
17abortController=new AbortController()
18search(term,abortController.signal).catch((error)=>{if(error.name!=='AbortError'){console.error(error)}})}
19return(term)=>{if(normalize(term)===lastTerm){clearTimeout(trailingTimeoutId)
20return}
21const elapsed=Date.now()-lastFireTime
22clearTimeout(trailingTimeoutId)
23if(elapsed>=interval){fire(term)}else{trailingTimeoutId=setTimeout(()=>fire(term),interval-elapsed)}}}
24searchInput.addEventListener('focus',(e)=>{console.log('FOCUS')
25const isSticky=e.target.closest('#navbar').classList.contains('sticky')
26if(!isSticky&&screenWidth>=1200){document.querySelector('.main-menu-button.main-menu-button--voucher').classList.add('hidden')}})
27searchInput.addEventListener('blur',(e)=>{e.target.value=''})
28searchInput.addEventListener('mouseenter',(e)=>{if(document.activeElement!==e.target){}})
29searchInput.addEventListener('mouseleave',(e)=>{if(document.activeElement!==e.target){e.target.style.boxShadow='none'}})
30const searchDesktop=createThrottledSearch(async(term,signal)=>{const response=await fetch('/api/v1/search/search',{method:'POST',headers:{'Content-Type':'application/json',},body:JSON.stringify({term:term,}),signal,});if(response.ok){const data=await response.json();if(term.length>0){document.querySelector('.main-panel__search i').style.zIndex='13'
31searchResults.style.display='block'
32overlay.style.display='block'
33searchInput.style.zIndex='12'
34document.body.style.overflowY='hidden';document.body.classList.add('overlay')
35const resultsList=searchResults.querySelector('.search-results__list')
36resultsList.innerHTML='';if(data.length===0){resultsList.innerHTML='No results found.';return;}
37const resultsDiv=document.createElement('div');resultsDiv.classList.add('search-results__container')
38data.forEach(result=>{const resultItem=document.createElement('a');resultItem.setAttribute('href',result.path);const resultPrice=result&&result.priceAfterDiscount?result.priceAfterDiscount:"";const resultInner=`${result.type!=='listing'?`<img src="${result.pictureUrl}"alt="Gift image">`:''}<div class='search-result-item-info'><div>${result.name}${result.type==='listing'?' '+`(${result.itemsCount})`:''}</div>${result.type!=='listing'?`<div><span class='price'>${resultPrice}</span>${__default_currency_symbol}</div>`:''}</div>`;resultItem.classList.add('search-results__item');resultItem.innerHTML=resultInner;resultsDiv.appendChild(resultItem);});resultsList.appendChild(resultsDiv);window.onclick=function(e){if(e.target===searchInput){}else{searchResults.style.display='none'
39overlay.style.display='none'
40searchInput.style.zIndex='auto'
41document.body.style.overflowY='auto'
42document.body.classList.remove('overlay')
43document.querySelector('.main-panel__search i').style.zIndex='10'
44document.querySelector('.main-menu-button.main-menu-button--voucher').classList.remove('hidden')
45e.target.value=''}}}else{searchResults.style.display='none'
46overlay.style.display='none'
47document.body.classList.remove('overlay')
48searchInput.style.zIndex='auto'
49document.body.style.overflowY='auto';document.querySelector('.main-panel__search i').style.zIndex='10'}}else{console.error(response);}});searchInput.addEventListener('input',(e)=>{searchDesktop(e.target.value)})
50searchInput.addEventListener('keypress',(e)=>{if(e.key==='Enter'&&e.target.value.trim().length>=MINIMUM_SEARCH_CHARACTERS){window.location.href=`${window.location.origin}${e.target.dataset.search}?${searchDataParam}=${e.target.value}`;}})
51document.querySelector('.search-results__mobile-input input')
52function handleMobileSearch(){const screenWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;const isMobile=screenWidth<=899;if(isMobile){searchResultsMobile.style.display='block'
53searchInput.style.zIndex='12'
54if(document.getElementById('navbar').classList.contains('sticky')){document.querySelector('.search-results.mobiles').style.top='0px'}
55document.body.style.overflowY='hidden';document.querySelector('.main-panel__search i').style.display='none'}}
56function handleCloseMobileSearch(){searchResultsMobile.style.display='none'
57document.querySelector('.search-results.mobiles').style.top='10px'
58document.body.style.overflowY='auto';document.querySelector('.main-panel__search i').style.display='inline-block'}
59const searchMobile=createThrottledSearch(async(term,signal)=>{const response=await fetch('/api/v1/search/search',{method:'POST',headers:{'Content-Type':'application/json',},body:JSON.stringify({term:term,}),signal,});if(response.ok){const data=await response.json();if(term.length>0){const resultsList=document.querySelector('.search-results.mobiles .search-results__list')
60resultsList.innerHTML='';
60if(data.hits.length===0){resultsList.innerHTML='No results found.';return;}
61const resultsDiv=document.createElement('div');resultsDiv.classList.add('search-results__container')
62data.hits.forEach(result=>{const resultItem=document.createElement('a');resultItem.setAttribute('href',result.url);const resultPrice=result&&result.price?result.price:"";const resultInner=`${result.type!=='category'?`<img src="${result.image}"alt="Gift image">`:''}<div class='search-result-item-info'><div>${result.title}${result.type==='category'?' '+`(${result.counter})`:''}</div>${result.type!=='category'?`<div><span class='price'>${resultPrice}</span>${__default_currency_symbol}</div>`:''}</div>`;resultItem.classList.add('search-results__item');resultItem.innerHTML=resultInner;resultsDiv.appendChild(resultItem);});resultsList.appendChild(resultsDiv);}else{}}else{console.error(response);}});searchResultsMobile.querySelector('input').addEventListener('input',(e)=>{searchMobile(e.target.value)})
63searchInputMobile.addEventListener('keypress',(e)=>{if(e.key==='Enter'&&e.target.value.trim().length>=MINIMUM_SEARCH_CHARACTERS){window.location.href=`${window.location.origin}${e.target.dataset.search}?${searchDataParam}=${e.target.value}`;}})

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.