PageSourceSearch

https://www.prirodnilekarna.cz/assets/borekstavitel-bsmanager-unversioned-assets-sa.min.js?t=1790256685

js prirodnilekarna.cz collected 2026-09-25 06:21:59 UTC 6,777 bytes, 19 lines download raw bytes

1let SaScriptManager={init:[],modules:[],registerInit:function(initFunction){this.init[this.init.length]=initFunction},initElement:function(elementClass,callback){$('.'+elementClass+':not(.'+elementClass+'--inited)').each(function(){let $this=$(this);callback($this);$this.addClass(elementClass+'--inited')})},registerInitElement:function(elementClass,callback){SaScriptManager.registerInit(function(){SaScriptManager.initElement(elementClass,callback)})},registerModule:function(moduleId,module){this.modules[moduleId]=module;if(typeof module.init!=="undefined"){this.registerInit(function(){module.init(module)})}},getModule:function(moduleId){return this.modules[moduleId]}};let $saScriptManager=SaScriptManager;$(function(){function callInits(){SaScriptManager.init.forEach(function(initFunction){initFunction()})}
2setTimeout(function(){callInits()},10);let mutationTimeout=null;setTimeout(function(){const observer=new MutationObserver(()=>{clearTimeout(mutationTimeout);setTimeout(function(){callInits()},500)});const config={childList:!0,subtree:!0};observer.observe(document.body,config)},10)});window.Sa=window.Sa||{};Sa.ui=Sa.ui||{};Sa.modules=SaScriptManager;Sa.ui.alpine={renderTemplate(templateId,templateData={}){const template=document.getElementById(templateId);if(!template){console.warn(`Template ${templateId} not found.`);return''}
3const clone=template.content.cloneNode(!0);const wrapper=document.createElement('div');wrapper.appendChild(clone);Alpine.bind(wrapper,{'x-data'(){return{...this,...templateData}}});return wrapper.innerHTML},};Sa.ajax={buildUrl(url,params){if(!params||typeof params!=='object')return url;const u=new URL(url,window.location.origin);Object.entries(params).forEach(([key,value])=>{if(value===undefined||value===null)return;if(Array.isArray(value)){value.forEach(v=>u.searchParams.append(key,String(v)))}else{u.searchParams.set(key,String(value))}});return u.toString()},async fetchJson(args){if(args.loader===!0){Sa.ui.loader(!0)}else if(typeof args.loader==='function'){args.loader(!0)}
4try{const method=(args.method||(args.data!==undefined?'POST':'GET')).toUpperCase();const url=this.buildUrl(args.url,args.params);const fetchOpts={method,headers:{'Content-Type':'application/json','X-Requested-With':'XMLHttpRequest',...(args.headers||{}),},credentials:args.credentials||'same-origin',};if(method!=='GET'&&method!=='HEAD'&&args.data!==undefined){fetchOpts.body=JSON.stringify(args.data)}
5const res=await fetch(url,fetchOpts);let payload=null;const ct=(res.headers.get('content-type')||'').toLowerCase();if(res.status!==204){if(ct.includes('application/json')||ct.includes('+json')){payload=await res.json()}else{payload=await res.text()}}
6if(!res.ok){const msg=(payload&&typeof payload==='object'&&(payload.message||payload.error))||args.errorMessage||'Chyba při komunikaci se serverem';say(msg,!0);return}
7let standardResponseProcessor=!0;if(typeof args.onResponse==='function'){const r=args.onResponse(payload,args.component||null);if(r===!1)standardResponseProcessor=!1}
8if(standardResponseProcessor){this.processResponse(payload,args.component||null)}
9if(typeof args.onAfterResponse==='function'){args.onAfterResponse(payload,args.component||null)}}catch(e){console.error(e);say(args.errorMessage||'Chyba při komunikaci se serverem',!0)}finally{if(args.loader===!0){Sa.ui.loader(!1)}else if(typeof args.loader==='function'){args.loader(!1)}}},processResponse(response,component){if(!response||typeof response!=='object')return;if(response.component&&component){Object.assign(component,response.component)}
10if(response.say&&Array.isArray(response.say)){response.say.forEach(s=>say(s.say,s.error||!1))}
11if(response.jsData){Sa.data.setAll(response.jsData)}
12if(response.js&&Array.isArray(response.js)&&response.js.length){response.js.forEach((scriptContent)=>{const fn=new Function(scriptContent);fn.call(response,component)})}
13if(response.redirect){window.location.href=response.redirect}}};(function(){let loaderEl=null;let progress=0;let animationId=null;function createLoader(){loaderEl=document.createElement('div');loaderEl.className='sa-loader';document.body.appendChild(loaderEl)}
14function startLoader(){if(!loaderEl)createLoader();loaderEl.classList.remove('done');loaderEl.style.width='0%';progress=0;function animate(){if(loaderEl){if(progress<90){progress+=(1-progress/100)*0.3;loaderEl.style.width=progress+'%';animationId=requestAnimationFrame(animate)}}}
15animate()}
16function stopLoader(){cancelAnimationFrame(animationId);if(loaderEl){loaderEl.classList.add('done');setTimeout(()=>{if(loaderEl){loaderEl.remove();loaderEl=null}},1500)}}
17Sa.ui.loader=function(start=!0){start?startLoader():stopLoader()}})();Sa.data={_resolvePath(path){return Array.isArray(path)?path:String(path).split('.')},get(fullKey,defaultValue=undefined){const keys=this._resolvePath(fullKey);const[storeName,...path]=keys;if(!window.Alpine||!Alpine.store(storeName))return defaultValue;let value=Alpine.store(storeName);for(const key of path){if(value==null||!(key in value))return defaultValue;value=value[key]}
18return value},set(fullKey,newValue){const storeName=fullKey;const apply=()=>{this.register(storeName);Alpine.store(storeName,newValue);this.triggerOnDataCallbacks(fullKey,newValue)};if(window.Alpine){apply()}else{document.addEventListener('alpine:init',()=>{apply()},{once:!0})}},add(storeName,values){const apply=()=>{if(!Alpine.store(storeName)){Alpine.store(storeName,{})}
19Object.assign(Alpine.store(storeName),values)};if(window.Alpine){apply()}else{document.addEventListener('alpine:init',apply,{once:!0})}},setAll(values){for(const storeName in values){this.set(storeName,values[storeName])}},register(name,defaultValue={}){if(!window.Alpine)return;if(!Alpine.store(name)){Alpine.store(name,defaultValue)}},exists(name){return!!(window.Alpine&&Alpine.store(name))},onDataCallbacks:[],onData(callback){this.onDataCallbacks.push(callback)},triggerOnDataCallbacks(key,value){for(const cb of this.onDataCallbacks){try{cb(key,value)}catch(e){console.warn('Sa.data.onData callback failed',e)}}}};Sa.data.onData(function(storeName,value){if(storeName==='say'&&Array.isArray(value)){value.forEach(item=>
19{if(item?.message){say(item.message,item.error)}})}});document.addEventListener('alpine:init',()=>{Alpine.magic('tooltip',el=>(message,duration=2000)=>{let instance=el._tippy??tippy(el,{trigger:'manual'});instance.setContent(message);instance.show();setTimeout(()=>{instance.hide()},duration)});Alpine.directive('tooltip',(el,{expression},{evaluateLater,effect,cleanup})=>{let instance=tippy(el,{content:'Loading...',allowHTML:!1,});let getValue=evaluateLater(expression);effect(()=>{getValue(value=>{instance.setContent(value);if(!value){instance.disable()}else{instance.enable()}})});cleanup(()=>instance.destroy())})})

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.