1HotspotTabs=function(t){const e=this;return this.params=t||{},this.vars={loaded:!1},this.startBuildHotspot=async t=>{const e=t.closest(".hotspot-menu__tab[data-ni]").getAttribute("data-ni"),n=await this.fetchData(e);this.buildStructureHtml(n,e),this.startSlider(t),this.shortNames(),document.querySelector(".hotspot-menu__hotspot.--loading")?.classList.remove("--loading")},this.buildStructureHtml=(t,n)=>{if(!t.products)return document.querySelector('.hotspot-menu__tab[data-ni="'+n+'"]').remove(),void document.querySelector('.hotspot-menu__hotspot[data-ni-hotspot="'+n+'"]').remove();document.querySelector('.hotspot-menu__hotspot[data-ni-hotspot="'+n+'"] .products').innerHTML=`\n ${t.products.map((t=>`<div class="product col-6 col-md-12 py-3">\n <div class="product__content">\n <a\n class="product__icon d-flex justify-content-center align-items-center"\n data-product-id="${t.id}"\n href="${t.link}"\n title="${t.name}"\n ><img\n src="/gfx/standards/loader.gif?r=1710763116"\n class="b-lazy"\n height="252"\n width="252"\n data-src-small="${t.iconSmall}"\n data-src="${t.icon}"\n alt="${t.name}"\n /></a>\n <div class="product_name__sub --notes d-flex justify-content-center mb-3">\n <span class="product_name__note"><i class="icon-star ${t.opinion.rating>4?"--active":""}"></i><i class="icon-star ${t.opinion.rating>3?"--active":""}"></i><i class="icon-star ${t.opinion.rating>2?"--active":""}"></i\n ><i class="icon-star ${t.opinion.rating>1?"--active":""}"></i><i class="icon-star ${t.opinion.rating>0?"--active":""}"></i></span\n ><div class="product_name__note__wrapper"><span class="avg">${t.opinion.rating}</span><span class="count">${t.opinion.count}<span>Opinion</span></span></div>\n </div>\n ${e.alternativeName(t)}\n <h3>\n <a\n class="product__name"\n href="${t.link}"\n title="${t.name}"\n >${t.name}</a\n >\n </h3>\n ${t.price.crossedPrice?.gross?`<div class="maxprice_wrapper"><div class="maxprice_wrapper__maxp"><del class="price --max">${t.price.crossedPrice?.gross.formatted}</del><div class="maxprice_wrapper__yousave"><div>Offer<span>-${t.price.youSavePercent}%</span></div></div></div></div>`:""} \n <form class="product__to_bsk" action="/basketchange.html" type="post" data-amount="${t.sizes[0].amount}">\n <input name="mode" type="hidden" value="1" /><input name="product" type="hidden" value="${t.id}" /><input\n name="size"\n type="hidden"\n value="${t.sizes[0].id}"\n /><input\n type="hidden"\n name="number"\n value="1"\n data-amount="${t.sizes[0].amount}"\n data-unit="szt."\n data-unit_sellby="1"\n data-unit_precision="0"\n /><button type="button" class="add_to_bsk btn --outline --icon-right"><span class="add_to_bsk_literal">Add to cart</span><span><div class="product__prices"><strong class="price">${t.price.price.gross.formatted}</strong></div></span></button>\n </form>\n <div class="product__prices --omnibus">${e.omnibusPrice(t)}</div>\n </div>\n </div>`)).join("")}`},this.omnibusPrice=t=>{let e="";return t.price?.omnibusPrice?.gross?.formatted&&(e=`<span class="omnibus_price"><span class="omnibus_price__text">Lowest price in 30 days before discount: <span class="omnibus_price__value">${t.price.omnibusPrice.gross.formatted}</span></span></span>`),e},this.shortNames=()=>{document.querySelectorAll("#hotspot-menu .product__name").forEach((t=>{const e=t.textContent.trim();e.length>60&&(t.textContent=e.slice(0,60)+"...")}))},this.alternativeName=t=>{let e="";if(t?.awardedParameters){const n=t?.awardedParameters.filter((t=>1579===t.id));n.length&&(e=`<a href="${t.link}" class="product_name__alt" title="${t.name}">${n[0].values[0].name}</a>`)}return e},this.fetchData=async t=>{if(sessionStorage.getItem(`hotspot-tabs_${t}`))return JSON.parse(sessionStorage.getItem(`hotspot-tabs_${t}`));document.querySelector(".hotspot-menu__hotspot.--active").classList.add("--loading");const e=JSON.stringify({query:`\n query{\n products(\n searchInput: {navigation:${t}}\n settingsInput: {limit: 12}\n displayVersionsByConfig: true\n ) {\n \n products {\n id\n name\n link\n zones\n icon\n iconSecond\n iconSmall\n iconSmallSecond\n awardedParameters {\n id\n values {\n name\n }\n }\n price{\n price{\n gross{\n formatted\n }\n }\n youSavePercent\n crossedPrice{\n gross{\n formatted\n }\n }\n omnibusPrice{\n gross{\n formatted\n }\n }\n }\n sizes{\n id\n amount\n }\n opinion{\n rating\n count\n }\n \n }\n }\n }`});try{const n=await fetch("/graphql/v1/",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e}),s=(await n.json()).data.products;return sessionStorage.setItem(`hotspot-tabs_${t}`,JSON.stringify(s)),s}catch(t){return!1}},this.startSlider=t=>{const e=t.closest(".hotspot-menu__tab[data-ni]").getAttribute("data-ni"),n=document.querySelector(".hotspot-menu__hotspot[data-ni-hotspot='"+e+"'] .products");app_shop.fn.hotspotTabsSlick=new HotspotSlider({selector:n,options:{slidesToShow:4,slidesToScroll:1,dots:!1,arrows:!0,prevArrow:'<a class="slick-prev" href=""><i class="icon-angle-left"></i></a>',nextArrow:'<a class="slick-next" href=""><i class="icon-angle-right"></i></a>',infinite:!1,responsive:[{breakpoint:979,settings:{dots:!0,arrows:!1,slidesToShow:2}}]},callbackAfter:t=>{app_shop.vars.bLazy.revalidate()}}),1===app_shop.vars.view&&$(".hotspot.--tabs .products.slick-initialized").slick("unslick")},this.menageClass=t=>{const e=t.closest(".hotspot-menu__tab[data-ni]").getAttribute("data-ni"),n=document.querySelectorAll(".hotspot-menu__tab[data-ni]"),s=document.querySelectorAll(".hotspot-menu__hotspot[data-ni-hotspot]");
1n.forEach((t=>{t.classList.remove("--active"),t.getAttribute("data-ni")==e&&t.classList.add("--active")})),s.forEach((t=>{t.classList.remove("--active"),t.getAttribute("data-ni-hotspot")==e&&t.classList.add("--active")})),t.closest(".hotspot-menu__tab[data-ni]").classList.add("--hotspot-added"),app_shop.vars.bLazy.revalidate()},this.removeSkeletonClass=()=>{document.querySelector(".hotspot-menu__hotspot.skeleton").classList.remove("skeleton")},this.hotspotInView=new IntersectionObserver((t=>{t.forEach((t=>{if(t.isIntersecting){if(!e.vars.loaded){const t=document.querySelector(".hotspot-menu__tab.--active");e.startBuildHotspot(t),e.removeSkeletonClass(),e.vars.loaded=!0}e.hotspotInView.unobserve(t.target)}}))})),this.initEvents=()=>{document.addEventListener("click",(function(t){return t.target.closest(".hotspot-menu__tab[data-ni].--hotspot-added")?(e.menageClass(t.target),!1):!!t.target.closest(".hotspot-menu__tab[data-ni]:not(.--hotspot-added)")&&(e.menageClass(t.target),e.startBuildHotspot(t.target),!1)}))},this.buildStructureFromObject=()=>{hotspotInTabsMainPage.forEach(((t,e)=>{if(0==e)return document.querySelector(".hotspot-menu__tab.--active").setAttribute("data-ni",t.id),document.querySelector(".hotspot-menu__hotspot.hotspot.--tabs.--active").setAttribute("data-ni-hotspot",t.id),void(document.querySelector(".hotspot-menu__tab.--active").textContent=t.name);const n=document.createElement("button");n.type="button",n.classList.add("hotspot-menu__tab"),n.setAttribute("data-ni",t.id),n.textContent=t.name,document.querySelector(".hotspot-menu__tabs").append(n);const s=document.createElement("div");s.classList.add("hotspot-menu__hotspot","hotspot","--tabs"),s.setAttribute("data-ni-hotspot",t.id);const o=document.createElement("div");o.classList.add("products","d-flex","flex-wrap"),s.append(o),document.querySelector("#hotspot-menu").append(s)}))},this.removeHotspots=()=>{document.querySelector("#hotspot-menu").remove()},this.init=()=>{"undefined"!=typeof hotspotInTabsMainPage?(this.buildStructureFromObject(),this.initEvents(),e.hotspotInView.observe(document.querySelector("#hotspot-menu"))):this.removeHotspots()},this.init()},app_shop.run((function(){app_shop.fn.hotspotTabs=new HotspotTabs}),"all","#hotspot-menu");
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.