1(function(){ 2 "use strict"; 3 var layer=document.querySelector(".seasonal-effect-layer"),toggle=document.querySelector(".seasonal-effect-toggle"); 4 if(!layer||!toggle||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return; 5 var settings={}; 6 try{settings=JSON.parse(layer.getAttribute("data-seasonal-effects")||"{}");}catch(e){settings={enabled:false};} 7 var storageKey="404eats-seasonal-effects",stored=localStorage.getItem(storageKey),enabled=stored===null?settings.customer_default!==false:stored==="1"; 8 var presetSymbols={CONFETTI:["â","â","â "],FALLING_LEAVES:["â§","â","â"],SNOW:["â","â§","â¢"],HEARTS:["â¥","â¡","â§"],SPARKLES:["â¦","â§","â"],BUBBLES:["â","â¦","â¿"],FIREWORKS:["âº","â¹","â¦"],CUSTOM_DOTS:["â¢","â"]}; 9 var theme=(document.body.getAttribute("data-seasonal-theme")||"").toUpperCase(); 10 var themeSymbols={ 11 CHRISTMAS:["â","â¦","â¢"],HALLOWEEN:["â¾","â¦","â"],VALENTINES:["â¥","â¡","â§"],THANKSGIVING:["â§","â","â"], 12 NEW_YEAR:["âº","â¹","â¦"],JULY_4TH:["â ","â¦","â¢"],EASTER:["â","â¦","â¿"],MOTHERS_DAY:["â¿","â¡","â§"], 13 FATHERS_DAY:["â¦","â§","â"],SPRING:["â¿","â","â¦"],SUMMER:["â","â","â¦"],FALL:["â§","â","â"],WINTER:["â","â§","â¢"] 14 }; 15 var chars=themeSymbols[theme]||presetSymbols[settings.preset]||presetSymbols.CUSTOM_DOTS; 16 var max=window.matchMedia("(max-width: 767px)").matches?12:20,count=Math.max(0,Math.min(max,parseInt(settings.density,10)||0)); 17 function render(){ 18 layer.textContent=""; 19 document.documentElement.classList.toggle("seasonal-effects-off",!enabled); 20 toggle.setAttribute("aria-pressed",enabled?"true":"false"); 21 if(!enabled||document.hidden)return; 22 var frag=document.createDocumentFragment(); 23 for(var i=0;i<count;i++){ 24 var p=document.createElement("i"); 25 p.className="seasonal-particle seasonal-particle--"+theme.toLowerCase().replace(/[^a-z0-9_-]/g,"-"); 26 p.textContent=chars[i%chars.length]; 27 p.style.left=((i*83)%97)+"%"; 28 p.style.setProperty("--seasonal-delay",(-i*.67)+"s"); 29 p.style.setProperty("--seasonal-duration",(7+(i%6))+"s"); 30 p.style.setProperty("--seasonal-drift",(-30+(i*17)%60)+"px"); 31 p.style.setProperty("--seasonal-size",(12+(i%5)*3)+"px"); 32 frag.appendChild(p); 33 } 34 layer.appendChild(frag); 35 } 36 toggle.addEventListener("click",function(){enabled=!enabled;localStorage.setItem(storageKey,enabled?"1":"0");render();}); 37 document.addEventListener("visibilitychange",render,{passive:true}); 38 render(); 39})();
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.