1/* ALOYEMEK TEMA 1.0.0 â kucuk arayuz islevleri (18 Eylul 2026) 2 Yalniz eklenti acikken yuklenir. Vue koklerinin icine dokunmaz; 3 olaylar belge duzeyinde delegasyonla baglanir. */ 4(function () { 5 "use strict"; 6 7 /* duyuru bandi: kapatinca bu tarayicida bir gun gorunmez */ 8 var ANAHTAR = "alo_duyuru_kapali"; 9 10 function bugun() { 11 var t = new Date(); 12 return t.getFullYear() + "-" + (t.getMonth() + 1) + "-" + t.getDate(); 13 } 14 15 function duyuruBasla() { 16 var bant = document.getElementById("alo-duyuru"); 17 if (!bant) return; 18 try { 19 if (window.localStorage && localStorage.getItem(ANAHTAR) === bugun()) { 20 bant.style.display = "none"; 21 } 22 } catch (e) { /* ozel pencere: bant acik kalir */ } 23 } 24 25 document.addEventListener("click", function (olay) { 26 var dugme = olay.target.closest ? olay.target.closest(".alo-duyuru-kapat") : null; 27 if (!dugme) return; 28 var bant = document.getElementById("alo-duyuru"); 29 if (bant) bant.style.display = "none"; 30 try { if (window.localStorage) localStorage.setItem(ANAHTAR, bugun()); } catch (e) {} 31 }); 32 33 34 /* ------------------------------------------------------------------ 35 ARAMA PANELI â ust bardaki arama kutusuna basinca acilir. 36 Sitenin Vue koklerine dokunmaz; panel body'nin sonuna eklenir. 37 Icerik: son aramalar (bu tarayici), populer aramalar, mutfaklar (/api/CuisineList2) 38 ------------------------------------------------------------------ */ 39 var ALO = window.ALO_TEMA || {}; 40 var GECMIS = "alo_son_aramalar"; 41 42 function gecmisOku() { 43 try { 44 var ham = window.localStorage ? localStorage.getItem(GECMIS) : null; 45 return ham ? JSON.parse(ham) : []; 46 } catch (e) { return []; } 47 } 48 49 function gecmisYaz(terim) { 50 try { 51 if (!window.localStorage || !terim) return; 52 var liste = gecmisOku().filter(function (x) { return x !== terim; }); 53 liste.unshift(terim); 54 localStorage.setItem(GECMIS, JSON.stringify(liste.slice(0, 6))); 55 } catch (e) {} 56 } 57 58 function kacis(m) { 59 return String(m).replace(/[&<>"']/g, function (k) { 60 return { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }[k]; 61 }); 62 } 63 64 function aramayaGit(terim) { 65 terim = (terim || "").trim(); 66 if (!terim) return; 67 gecmisYaz(terim); 68 window.location.href = ALO.arama_url + "?q=" + encodeURIComponent(terim); 69 } 70 71 var panel = null, mutfaklar = null, mutfakIstek = false; 72 73 function panelKur() { 74 if (panel) return panel; 75 panel = document.createElement("div"); 76 panel.className = "alo-arama-katman"; 77 panel.innerHTML = 78 '<div class="alo-arama-ortu"></div>' + 79 '<div class="alo-arama-panel" role="dialog" aria-modal="true">' + 80 '<div class="alo-arama-satir">' + 81 '<span class="alo-arama-ikon"></span>' + 82 '<input type="search" class="alo-arama-giris" placeholder="' + kacis(ALO.ph || "") + '" autocomplete="off">' + 83 '<button type="button" class="alo-arama-git">' + kacis(ALO.ara || "Ara") + '</button>' + 84 '</div>' + 85 '<div class="alo-arama-icerik">' + 86 '<div class="alo-arama-bolum alo-arama-gecmis" hidden>' + 87 '<h4>' + kacis(ALO.son || "") + '</h4><div class="alo-arama-cipler"></div>' + 88 '</div>' + 89 '<div class="alo-arama-bolum">' + 90 '<h4>' + kacis(ALO.populer || "") + '</h4>' + 91 '<div class="alo-arama-cipler alo-arama-populer"></div>' + 92 '</div>' + 93 '<div class="alo-arama-bolum alo-arama-mutfakbolum" hidden>' + 94 '<h4>' + kacis(ALO.mutfaklar || "") + '</h4>' + 95 '<div class="alo-arama-izgara"></div>' + 96 '</div>' + 97 '</div>' + 98 '</div>'; 99 document.body.appendChild(panel); 100 101 // populer aramalar 102 var pop = panel.querySelector(".alo-arama-populer"); 103 (ALO.populer_liste || []).forEach(function (t) { 104 var a = document.createElement("button"); 105 a.type = "button"; a.className = "alo-arama-cip"; a.textContent = t; 106 a.addEventListener("click", function () { aramayaGit(t); }); 107 pop.appendChild(a); 108 }); 109 110 panel.querySelector(".alo-arama-ortu").addEventListener("click", panelKapat); 111 panel.querySelector(".alo-arama-git").addEventListener("click", function () { 112 aramayaGit(panel.querySelector(".alo-arama-giris").value); 113 }); 114 panel.querySelector(".alo-arama-giris").addEventListener("keydown", function (o) { 115 if (o.key === "Enter") aramayaGit(this.value); 116 if (o.key === "Escape") panelKapat(); 117 }); 118 return panel; 119 } 120 121 function gecmisBas() { 122 var kutu = panel.querySelector(".alo-arama-gecmis"), 123 yer = kutu.querySelector(".alo-arama-cipler"), 124 liste = gecmisOku(); 125 yer.innerHTML = ""; 126 if (!liste.length) { kutu.hidden = true; return; } 127 kutu.hidden = false;
128 liste.forEach(function (t) { 129 var a = document.createElement("button"); 130 a.type = "button"; a.className = "alo-arama-cip alo-arama-cip-gecmis"; a.textContent = t; 131 a.addEventListener("click", function () { aramayaGit(t); }); 132 yer.appendChild(a); 133 }); 134 } 135 136 function mutfakBas() { 137 if (!mutfaklar || !mutfaklar.length) return; 138 var bolum = panel.querySelector(".alo-arama-mutfakbolum"), 139 yer = bolum.querySelector(".alo-arama-izgara"); 140 if (yer.childElementCount) { bolum.hidden = false; return; } 141 mutfaklar.forEach(function (m) { 142 var a = document.createElement("a"); 143 a.className = "alo-arama-mutfak"; a.href = m.url; 144 a.innerHTML = '<span class="alo-arama-mutfak-resim"><img src="' + kacis(m.featured_image) + '" alt="" loading="lazy"></span>' + 145 '<span class="alo-arama-mutfak-ad">' + kacis(m.cuisine_name) + "</span>"; 146 yer.appendChild(a); 147 }); 148 bolum.hidden = false; 149 } 150 151 function mutfakGetir() { 152 if (mutfaklar || mutfakIstek || !ALO.mutfak_url) return; 153 mutfakIstek = true; 154 fetch(ALO.mutfak_url, { credentials: "same-origin" }) 155 .then(function (y) { return y.json(); }) 156 .then(function (v) { 157 mutfaklar = (v && v.details) ? v.details : []; 158 mutfakBas(); 159 }) 160 .catch(function () { mutfakIstek = false; }); 161 } 162 163 function panelAc() { 164 panelKur(); 165 gecmisBas(); 166 mutfakGetir(); 167 mutfakBas(); 168 panel.classList.add("acik"); 169 document.body.classList.add("alo-kilit"); 170 setTimeout(function () { panel.querySelector(".alo-arama-giris").focus(); }, 60); 171 } 172 173 function panelKapat() { 174 if (!panel) return; 175 panel.classList.remove("acik"); 176 document.body.classList.remove("alo-kilit"); 177 } 178 179 document.addEventListener("click", function (olay) { 180 if (!olay.target.closest) return; 181 if (olay.target.closest(".alo-arama-hap")) { 182 olay.preventDefault(); 183 panelAc(); 184 } 185 }); 186 document.addEventListener("keydown", function (o) { if (o.key === "Escape") panelKapat(); }); 187 188 if (document.readyState === "loading") { 189 document.addEventListener("DOMContentLoaded", duyuruBasla); 190 } else duyuruBasla(); 191})(); 192 193/* 20 Eylul 2026: ust sekme seridi â parmakla kaydirirken yanlislikla sekmeye 194 gidilmesin. Kaydirma basladiginda serit "alo-kayiyor" sinifini alir 195 (CSS pointer-events:none), kaydirma bitince kalkar. */ 196(function(){ 197 var serit = document.querySelector('.alo-ust-sekmeler'); 198 if(!serit) return; 199 var zamanlayici = null, baslangic = 0, kaydi = false; 200 serit.addEventListener('touchstart', function(){ baslangic = serit.scrollLeft; kaydi = false; }, {passive:true}); 201 serit.addEventListener('scroll', function(){ 202 if(Math.abs(serit.scrollLeft - baslangic) > 6){ kaydi = true; serit.classList.add('alo-kayiyor'); } 203 clearTimeout(zamanlayici); 204 zamanlayici = setTimeout(function(){ serit.classList.remove('alo-kayiyor'); }, 220); 205 }, {passive:true}); 206 serit.addEventListener('click', function(e){ 207 if(kaydi){ e.preventDefault(); e.stopPropagation(); kaydi = false; } 208 }, true); 209})(); 210 211/* 20 Eylul 2026 (kullanici: "mobilde elle kaydirma yapiyorum zorla gidiyor"): 212 Sitenin Swiper seritleri (mutfaklar, restoran listeleri) freeMode KAPALI kuruluyor; 213 parmak birakilinca serit en yakin slayta zorla oturuyor ve hareket dirençli hissettiriyor. 214 Telefonda freeMode + momentum aciliyor, surtunme dusuruluyor. Masaustunde dokunulmuyor 215 (ok dugmeleriyle slayt slayt gitmek orada dogru davranis). 216 Swiper ornekleri Vue render'indan sonra olustugu icin belirli araliklarla taranir. */ 217(function(){ 218 if(!window.matchMedia || !window.matchMedia("(max-width: 991.98px)").matches) return; 219 220 function akiciYap(el){ 221 var s = el && el.swiper; 222 if(!s || s.destroyed || el.getAttribute("data-alo-akici") === "1") return; 223 try { 224 if(s.params.freeMode && typeof s.params.freeMode === "object"){ 225 s.params.freeMode.enabled = true; 226 s.params.freeMode.momentum = true; 227 s.params.freeMode.momentumRatio = 1.2; 228 s.params.freeMode.momentumBounce = false;
229 } else { 230 s.params.freeMode = true; 231 } 232 s.params.touchRatio = 1.4; 233 s.params.resistanceRatio = 0.25; 234 s.params.followFinger = true; 235 s.update(); 236 el.setAttribute("data-alo-akici", "1"); 237 } catch(e){} 238 } 239 240 function tara(){ document.querySelectorAll(".swiper").forEach(akiciYap); } 241 242 var kalan = 20; /* ~10 sn: Vue listeleri sirayla gelir */ 243 var sayac = setInterval(function(){ 244 tara(); 245 if(--kalan <= 0) clearInterval(sayac); 246 }, 500); 247 if(document.readyState === "loading") document.addEventListener("DOMContentLoaded", tara); 248 else tara(); 249})();
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.