PageSourceSearch

https://cc.cz/wp-content/cache/min/1/wp-content/themes/czechcrunch2018/static/js/search.js?ver=1790783421

js cc.cz collected 2026-10-01 10:16:49 UTC 13,875 bytes, 84 lines download raw bytes

1let active_search=[];const filters=['posts','podcasts','events','cclive','profiles'];const remove_filter=(item)=>{if(active_search.includes(item)){active_search.splice(active_search.indexOf(item),1);toggle_filter()}};const add_filter=(item)=>{if(active_search.includes(item)===!1){active_search.push(item);toggle_filter()}};const filter_difference=()=>{return filters.filter(value=>!active_search.includes(value))};const toggle_filter=()=>{let not_active=filter_difference();if(not_active.length>0){not_active.forEach((item)=>{document.getElementById(item).classList.add('u-js-hide');document.getElementById(item+'-filter').classList.add('u-js-hide')})}
2if(active_search.length>0){document.getElementById('filter').classList.remove('u-js-hide');active_search.forEach((item)=>{document.getElementById(item).classList.remove('u-js-hide');document.getElementById(item+'-filter').classList.remove('u-js-hide')})}else{document.getElementById('filter').classList.add('u-js-hide')}};const indexName='post';const algoliaClient=algoliasearch('HVP4PNEPYK','109cebd23979070c9368caa138ec6c67');const searchClient={...algoliaClient,search(requests){if(requests.every(({params})=>!params.query)||requests.every(({params})=>params.query.length<3)){return Promise.resolve({results:requests.map(()=>({hits:[],nbHits:0,nbPages:0,page:0,processingTimeMS:0,hitsPerPage:0,exhaustiveNbHits:!1,query:'',params:'',})),})}
3return algoliaClient.multipleQueries(requests)},};const search=instantsearch({indexName:indexName,searchClient,routing:{router:instantsearch.routers.history({windowTitle(routeState){const indexState=routeState.indexName||{};if(indexState.query){return `Výsledky vyhledávání pro "${indexState.query}" - CzechCrunch`}},createURL({qsModule,location,routeState}){const{origin,pathname,hash}=location;const indexState=routeState.instant_search||{};const queryString=qsModule.stringify(routeState);if(!indexState.query){return `${origin}${pathname}${hash}`}
4return `${origin}${pathname}?${queryString}${hash}`},parseURL({qsModule,location}){return qsModule.parse(location.search.slice(1))},writeDelay:500,}),stateMapping:{stateToRoute(uiState){return{query:uiState[indexName].query,page:uiState[indexName].page,}},routeToState(routeState){return{[indexName]:{query:routeState.query,page:routeState.page,},}},},},insights:!0,});const renderInfinitePosts=(renderOptions,isFirstRender)=>{const{results,hits,widgetParams,showPrevious,isFirstPage,showMore,isLastPage,sendEvent,}=renderOptions;if(results&&results.query==''||results==='undefined'||hits.length==0){remove_filter('posts');widgetParams.container.classList.add('u-js-hide');let button=widgetParams.container.querySelector('.load-more');if(button){button.classList.add('u-js-hide')}}else{add_filter('posts');widgetParams.container.classList.remove('u-js-hide');let button=widgetParams.container.querySelector('.load-more');if(button){button.classList.remove('u-js-hide')}}
5if(isFirstRender){const div_search=document.createElement('div');div_search.className='c-search';const nextButton=document.createElement('button');nextButton.className='btn btn--primary btn--small';nextButton.addEventListener('click',()=>{showMore()});const span=document.createElement('span');span.className='btn__text';span.textContent='Další výsledky';nextButton.appendChild(span);const p=document.createElement('p');p.className='u-text-center load-more';p.appendChild(nextButton);widgetParams.container.appendChild(div_search);widgetParams.container.appendChild(p);return}
6let button=widgetParams.container.querySelector('.load-more');if(button&&isLastPage){button.classList.add('u-js-hide')}
7widgetParams.container.querySelector('.c-search').innerHTML=`
8		${hits
9		.map(
10			(item) => {
11				let type = 'Článek';
12				if (item.post_type == 'sk_nativni_special') type = 'Speciál';
13
14				let item_html = `<div class="c-search__item c-search__item--post" onClick="${sendEvent('click', item, 'Post Clicked')}"><div class="c-search__hd"><p class="c-search__date">${item.date}</p><p class="c-search__type">${type}</p></div><div class="c-search__bd"><p class="c-search__img"><img src="${item.thumb}" alt="${item.title}" width="156" height="117"/></p><div class="c-search__content"><h2 class="c-search__title"><a href="${item.url}" target="_blank" class="link-inset">${instantsearch.highlight({attribute:'title',hit:item})}</a></h2><p class="c-search__desc">${instantsearch.snippet({attribute:'content',hit:item})}</p></div></div></div>`;
15				return item_html;
16			},
17		)
18		.join('')}
19	`};const renderInfinitePodcasts=(renderOptions,isFirstRender)=>{const{results,hits,widgetParams,showPrevious,isFirstPage,showMore,isLastPage,sendEvent,}=renderOptions;if(results&&results.query==''||results==='undefined'||hits.length==0){remove_filter('podcasts');widgetParams.container.classList.add('u-js-hide');let button=widgetParams.container.querySelector('.load-more');
19if(button){button.classList.add('u-js-hide')}}else{add_filter('podcasts');widgetParams.container.classList.remove('u-js-hide');let button=widgetParams.container.querySelector('.load-more');if(button){button.classList.remove('u-js-hide')}}
20if(isFirstRender){const div_search=document.createElement('div');div_search.className='c-search';const nextButton=document.createElement('button');nextButton.className='btn btn--primary btn--small';nextButton.addEventListener('click',()=>{showMore()});const span=document.createElement('span');span.className='btn__text';span.textContent='Další výsledky';nextButton.appendChild(span);const p=document.createElement('p');p.className='u-text-center load-more';p.appendChild(nextButton);const section=document.createElement('p');section.className='c-search__section';section.textContent='Podcasty';div_search.appendChild(section);const div_results=document.createElement('div');div_results.className='c-search__results';div_search.appendChild(div_results);widgetParams.container.appendChild(div_search);widgetParams.container.appendChild(p);return}
21let button=widgetParams.container.querySelector('.load-more');if(button&&isLastPage){button.classList.add('u-js-hide')}
22widgetParams.container.querySelector('.c-search__results').innerHTML=`
23		${hits
24		.map(
25			(item) => {
26				let item_html = `<div class="c-search__item c-search__item--podcast" onClick="${sendEvent('click', item, 'Podcast Clicked')}"><div class="c-search__hd"><p class="c-search__date">${item.date}</p><p class="c-search__type">Podcast</p></div><div class="c-search__bd"><p class="c-search__img"><img src="${item.thumb}" alt="${item.title}" width="89" height="89"/></p><div class="c-search__content"><h2 class="c-search__title"><a href="${item.url}" target="_blank" class="link-inset">${instantsearch.highlight({attribute:'title',hit:item})}</a></h2><p class="c-search__desc">${instantsearch.snippet({attribute:'content',hit:item})}</p>${item.length?`
27								<p class="c-search__time">
28									<span class="icon-svg icon-svg--time"><svg class="icon-svg__svg icon-svg--time__svg" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="/wp-content/themes/czechcrunch2018/static/img/bg/icons-svg.svg?v=2.6.3#icon-time" x="0" y="0" width="100%" height="100%"></use></svg></span>
29									${item.length}
30								</p>
31								`:''}<span class="c-search__play"><span class="icon-svg icon-svg--podcast"><svg class="icon-svg__svg icon-svg--podcast__svg" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="/wp-content/themes/czechcrunch2018/static/img/bg/icons-svg.svg?v=2.6.3#icon-podcast" x="0" y="0" width="100%" height="100%"></use></svg></span></span></div></div></div>`;
32				return item_html;
33			},
34		)
35		.join('')}
36	`};const renderEvent=(renderOptions,isFirstRender)=>{const{results,hits,widgetParams,sendEvent}=renderOptions;if(isFirstRender){return}
37if(results&&results.query==''||hits.length==0){remove_filter('events');widgetParams.container.classList.add('u-js-hide')}else{add_filter('events');widgetParams.container.classList.remove('u-js-hide')}
38widgetParams.container.innerHTML=`
39		<div class="c-search"><p class="c-search__section">Eventy</p>
40		${hits
41			.map(
42				(item) => {
43					let item_html = `<div class="c-search__item c-search__item--event" onClick="${sendEvent('click', item, 'Event Clicked')}"><div class="c-search__hd"><p class="c-search__date">Již brzy</p><p class="c-search__type">Event</p></div><div class="c-search__bd"><div class="c-search__content">${item.date}<h2 class="c-search__title"><a href="${item.url}" target="_blank" class="link-inset">${instantsearch.highlight({attribute:'title',hit:item})}</a></h2><span class="c-search__more btn btn--primary btn--small"><span class="btn__text">Více</span></span></div></div></div>`;
44					return item_html;
45				},
46			)
47			.join('')}
48		</div>
49	`};const renderCCLive=(renderOptions,isFirstRender)=>{const{results,hits,widgetParams,sendEvent}=renderOptions;if(isFirstRender){return}
50if(results&&results.query==''||hits.length==0){remove_filter('cclive');widgetParams.container.classList.add('u-js-hide')}else{add_filter('cclive');widgetParams.container.classList.remove('u-js-hide')}
51widgetParams.container.innerHTML=`
52		<div class="c-search"><p class="c-search__section">CC Live</p>
53		${hits
54			.map(
55				(item) => {
56					let item_html = '';
57					switch (item.type) {
58						case 'hot':
59							item_html = `<div class="c-search__item c-search__item--post" onClick="${sendEvent('click', item, 'CCLive Clicked')}"><div class="c-search__hd"><p class="c-search__date">${item.date}</p><p class="c-search__type">CC Live</p></div><div class="c-search__bd"><p class="c-search__img"><img src="${item.thumb}" alt="${item.title}" width="156" height="117"/></p><div class="c-search__content"><h2 class="c-search__title"><a href="${item.url}" target="_blank" class="link-inset">${instantsearch.highlight({attribute:'title',hit:item})}</a></h2><p class="c-search__desc">${instantsearch.snippet({attribute:'content',hit:item})}</p></div></div></div>`;
60							break;
61
62						case 'quote':
63							item_html = `<div class="c-search__item c-search__item--comment"><div class="c-search__hd"><p class="c-search__date">${item.date}</p><p class="c-search__type">CC Live</p></div><div class="c-search__bd"><div class="c-search__content"><p class="c-search__quote">„${instantsearch.snippet({attribute:'content',hit:item})}“</p><p class="c-search__comment"><a href="${item.url}" target="_blank" class="link-inset">${instantsearch.highlight({attribute:'excerpt',hit:item})}</a></p></div></div></div>`;
64							break;
65					}
66					return item_html;
67				},
68			)
69			.join('')}
70		</div>
71	`};const renderProfile=(renderOptions,isFirstRender)=>{const{results,hits,widgetParams,sendEvent}=renderOptions;if(isFirstRender){return}
72if(results&&results.query==''||hits.length==0){remove_filter('profiles');widgetParams.container.classList.add('u-js-hide')}else{add_filter('profiles');widgetParams.container.classList.remove('u-js-hide')}
73widgetParams.container.innerHTML=`
74		<div class="c-search"><p class="c-search__section">Firmy</p>
75		${hits
76			.map(
77				(item) => {
78					let item_html = `<div class="c-search__item c-search__item--profile" onClick="${sendEvent('click', item, 'Profile Clicked')}"><div class="c-search__bd"><a href="${item.url}" target="_blank" class="c-search__profile link-inset"><div class="c-search__content"><p class="c-search__img"><img src="${item.thumb}" alt="${item.title}" width="48" height="49"/></p><h2 class="c-search__title">${instantsearch.highlight({attribute:'title',hit:item})}</h2></div><p class="c-search__meta">${item.params}</p></a></div></div>`;
79					return item_html;
80				},
81			)
82			.join('')}
83		</div>
84	`};const hitInfinitePost=instantsearch.connectors.connectInfiniteHits(renderInfinitePosts);const hitInfinitePodcast=instantsearch.connectors.connectInfiniteHits(renderInfinitePodcasts);const hitEvent=instantsearch.connectors.connectHits(renderEvent);const hitCCLive=instantsearch.connectors.connectHits(renderCCLive);const hitProfile=instantsearch.connectors.connectHits(renderProfile);const today=new Date().getTime()/1000;search.addWidgets([instantsearch.widgets.configure({hitsPerPage:8,}),instantsearch.widgets.searchBox({container:'#searchbox',autofocus:!0,placeholder:'Články, Podcasty, Eventy, Firmy & Speciály',showSubmit:!0,showReset:!1,cssClasse
84s:{form:'f-search-v2__form',},templates:{submit({cssClasses},{html}){return html`<span class="icon-svg icon-svg--close"><svg class="icon-svg__svg icon-svg--close__svg" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="/wp-content/themes/czechcrunch2018/static/img/bg/icons-svg.svg?v=5.3.6#icon-search" x="0" y="0" width="100%" height="100%"></use></svg></span>`},},showLoadingIndicator:!1,queryHook(query,search){search(query);active_search=[];toggle_filter()},}),instantsearch.widgets.index({indexName:'post',indexId:'post'}).addWidgets([instantsearch.widgets.configure({hitsPerPage:8,}),hitInfinitePost({container:document.querySelector('#posts'),showPrevious:!1,escapeHTML:!1,}),]),instantsearch.widgets.index({indexName:'sk_podcast',indexId:'sk_podcast'}).addWidgets([instantsearch.widgets.configure({hitsPerPage:4,}),hitInfinitePodcast({container:document.querySelector('#podcasts'),showPrevious:!1,escapeHTML:!1,}),]),instantsearch.widgets.index({indexName:'sk_events',indexId:'sk_events'}).addWidgets([instantsearch.widgets.configure({hitsPerPage:2,filters:`date_timestamp >= ${today}`,}),hitEvent({container:document.querySelector('#events'),escapeHTML:!1,}),]),instantsearch.widgets.index({indexName:'sk_live_feed',indexId:'sk_live_feed'}).addWidgets([instantsearch.widgets.configure({hitsPerPage:2,}),hitCCLive({container:document.querySelector('#cclive'),escapeHTML:!1,}),]),instantsearch.widgets.index({indexName:'sk_profiles',indexId:'sk_profiles'}).addWidgets([instantsearch.widgets.configure({hitsPerPage:2,}),hitProfile({container:document.querySelector('#profiles'),escapeHTML:!1,}),]),]);search.start()

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.