1jQuery(document).ready(function($) { 2 $('.yhs-slider-container').each(function() { 3 const container = $(this); 4 const slider = container.find('.yhs-slider'); 5 const slides = container.find('.yhs-slide:not(.yhs-ad-slide)'); 6 const adSlide = container.find('.yhs-ad-slide'); 7 const prevBtn = container.find('.yhs-prev'); 8 const nextBtn = container.find('.yhs-next'); 9 const numberItems = container.find('.yhs-number-item:not(.yhs-ad-indicator)'); 10 const adIndicator = container.find('.yhs-ad-indicator'); 11 12 const enableTransition = container.data('enable-transition') === 1; 13 const transitionSpeed = parseInt(getComputedStyle(container[0]).getPropertyValue('--transition-speed')); 14 const autoPlay = container.data('auto-play') === 1; 15 const autoPlaySpeed = container.data('auto-play-speed'); 16 17 // Reklam gösterim süresini al 18 const adDisplayTime = parseInt(container.data('ad-display-time')); 19 20 let currentIndex = 0; 21 let autoPlayInterval; 22 let isAdVisible = false; 23 let adTimeout; 24 let isArrowClicked = false; 25 26 // Reklam pozisyonlarını al 27 const adPositions = []; 28 for (let i = 1; i <= 3; i++) { 29 const adIndicator = container.find(`.yhs-ad-indicator[data-slide="ad${i}"]`); 30 if (adIndicator.length) { 31 adPositions.push({ 32 position: parseInt(adIndicator.data('slide-position')), 33 adNumber: i 34 }); 35 } 36 } 37 38 // Slayt sırasını oluÅtur 39 function buildSlideSequence() { 40 slideSequence = []; 41 for (let i = 0; i < slides.length; i++) { 42 slideSequence.push(i); 43 adPositions.forEach(ad => { 44 if (i === ad.position - 1) { 45 slideSequence.push(`ad${ad.adNumber}`); 46 } 47 }); 48 } 49 return slideSequence; 50 } 51 52 // Slayt sırasını baÅlat 53 buildSlideSequence(); 54 let sequenceIndex = 0; 55 56 function showSlide(index, adNumber = null) { 57 stopAutoPlay(); 58 59 if (adNumber) { 60 isAdVisible = true; 61 slider.css('transform', `translateX(${-index * 100}%)`); 62 63 slides.css('visibility', 'hidden'); 64 container.find('.yhs-ad-slide').css('display', 'none'); 65 66 container.find(`.yhs-ad-slide[data-ad-number="${adNumber}"]`).css({ 67 'display': 'flex', 68 'visibility': 'visible', 69 'position': 'absolute', 70 'top': '0', 71 'left': '0', 72 'width': '100%', 73 'height': '100%', 74 'z-index': '2' 75 }); 76 77 container.find('.yhs-numbers-bar').css('z-index', '3'); 78 container.find('.yhs-prev, .yhs-next').css('z-index', '3'); 79 80 numberItems.removeClass('active'); 81 adIndicator.removeClass('active'); 82 container.find(`.yhs-ad-indicator[data-slide="ad${adNumber}"]`).addClass('active'); 83 84 adTimeout = setTimeout(() => { 85 nextSlide(); 86 }, adDisplayTime); 87 } else { 88 isAdVisible = false; 89 container.find('.yhs-ad-slide').css({ 90 'display': 'none', 91 'visibility': 'hidden' 92 }); 93 94 slides.css('visibility', 'visible'); 95 96 // GeçiÅ efekti kontrolü 97 if (enableTransition) { 98 slider.css({ 99 'transform': `translateX(${-index * 100}%)`, 100 'transition': `transform ${transitionSpeed}ms ease-in-out` 101 }); 102 } else { 103 slider.css({ 104 'transform': `translateX(${-index * 100}%)`, 105 'transition': 'none' 106 }); 107 } 108 109 container.find('.yhs-numbers-bar').css('z-index', '3'); 110 container.find('.yhs-prev, .yhs-next').css('z-index', '4'); 111 112 numberItems.removeClass('active'); 113 adIndicator.removeClass('active'); 114 numberItems.eq(index).addClass('active'); 115 116 startAutoPlay(); 117 } 118 } 119 120 function nextSlide() { 121 sequenceIndex = (sequenceIndex + 1) % slideSequence.length; 122 const nextItem = slideSequence[sequenceIndex]; 123 124 if (typeof nextItem === 'string' && nextItem.startsWith('ad')) { 125 const adNumber = nextItem.replace('ad', ''); 126 showSlide(currentIndex, adNumber); 127 } else { 128 currentIndex = nextItem; 129 showSlide(currentIndex, false); 130 } 131 } 132 133 function prevSlide() { 134 sequenceIndex = (sequenceIndex - 1 + slideSequence.length) % slideSequence.length; 135 const prevItem = slideSequence[sequenceIndex]; 136 137 if (typeof prevItem === 'string' && prevItem.startsWith('ad')) { 138 const adNumber = prevItem.replace('ad', ''); 139 showSlide(currentIndex, adNumber); 140 } else { 141 currentIndex = prevItem; 142 showSlide(currentIndex, false); 143 } 144 } 145 146 // Event listeners 147 numberItems.on('click', function() { 148 const clickedIndex = $(this).index('.yhs-number-item:not(.yhs-ad-indicator)'); 149 currentIndex = clickedIndex; 150 sequenceIndex = slideSequence.indexOf(clickedIndex); 151 showSlide(currentIndex, false); 152 }); 153 154 adIndicator.on('click', function() { 155 const adNumber = $(this).data('slide').replace('ad', ''); 156 sequenceIndex = slideSequence.indexOf(`ad${adNumber}`); 157 showSlide(currentIndex, adNumber); 158 }); 159 160 prevBtn.on('click', function(e) { 161 e.preventDefault(); 162 isArrowClicked = true; 163 stopAutoPlay(); 164 prevSlide(); 165 }).on('mouseenter', function() { 166 stopAutoPlay(); 167 }); 168 169 nextBtn.on('click', function(e) { 170 e.preventDefault(); 171 isArrowClicked = true; 172 stopAutoPlay(); 173 nextSlide(); 174 }).on('mouseenter', function() { 175 stopAutoPlay(); 176 }); 177 178 function startAutoPlay() { 179 if (autoPlay && !autoPlayInterval && !isAdVisible && !isArrowClicked) { 180 autoPlayInterval = setInterval(nextSlide, autoPlaySpeed); 181 } 182 } 183 184 function stopAutoPlay() { 185 if (autoPlayInterval) { 186 clearInterval(autoPlayInterval); 187 autoPlayInterval = null; 188 } 189 if (adTimeout) { 190 clearTimeout(adTimeout); 191 adTimeout = null; 192 } 193 } 194 195 // Mouse events 196 container.on('mouseenter', function() { 197 stopAutoPlay(); 198 }).on('mouseleave', function() { 199 isArrowClicked = false; 200 if (isAdVisible) { 201 // Reklam görünürken mouse çıkarıldıÄında kalan süreyi hesapla 202 adTimeout = setTimeout(() => { 203 nextSlide(); 204 }, adDisplayTime); 205 } else { 206 startAutoPlay(); 207 } 208 }); 209 210 let isDragging = false; 211 let startX = 0; 212 let dragDistance = 0; 213 let startTime; 214 const maxTapDuration = 200;
214 // maksimum tıklama süresi (ms) 215 const minDragDistance = 10; // minimum sürükleme mesafesi (px) 216 217 // Mouse sürükleme olayları - container üzerinde dinle 218 container.on('mousedown', function(e) { 219 isDragging = false; // BaÅlangıçta sürükleme false olsun 220 startX = e.pageX; 221 dragDistance = 0; 222 startTime = new Date().getTime(); 223 }); 224 225 $(document).on('mousemove', function(e) { 226 if (!startX) return; 227 228 dragDistance = Math.abs(e.pageX - startX); 229 230 // Minimum sürükleme mesafesi aÅıldıÄında sürükleme baÅlasın 231 if (dragDistance > minDragDistance) { 232 isDragging = true; 233 container.find('a').css('pointer-events', 'none'); 234 235 const moveX = -(currentIndex * 100) + ((e.pageX - startX) / container.width() * 100); 236 slider.css({ 237 'transform': `translateX(${moveX}%)`, 238 'transition': 'none' 239 }); 240 } 241 }); 242 243 $(document).on('mouseup', function(e) { 244 if (!startX) return; 245 246 const endTime = new Date().getTime(); 247 const tapDuration = endTime - startTime; 248 249 if (isDragging && dragDistance > 100) { // Sürükleme iÅlemi 250 if (e.pageX - startX > 0) { 251 prevSlide(); 252 } else { 253 nextSlide(); 254 } 255 } else if (tapDuration < maxTapDuration && dragDistance < minDragDistance) { 256 // Kısa ve hareketsiz tıklama - link tıklaması olarak kabul et 257 const clickedLink = $(e.target).closest('a'); 258 if (clickedLink.length) { 259 const href = clickedLink.attr('href'); 260 const target = clickedLink.attr('target') || '_self'; 261 window.open(href, target); 262 } 263 } else { 264 // Yetersiz sürükleme mesafesi, mevcut slide'a geri dön 265 showSlide(currentIndex, isAdVisible); 266 } 267 268 // Temizlik 269 startX = 0; 270 dragDistance = 0; 271 isDragging = false; 272 273 // Tıklamaları tekrar aktif et 274 container.find('a').css('pointer-events', 'auto'); 275 276 slider.css('transition', `transform ${transitionSpeed}ms ease-in-out`); 277 }); 278 279 // Mouse sürükleme sırasında metin seçimini engelle 280 container.on('dragstart', function(e) { 281 e.preventDefault(); 282 }); 283 284 // Normal rakamlar için hover olayı 285 numberItems.on('mouseenter', function(e) { 286 const hoverIndex = $(this).index('.yhs-number-item:not(.yhs-ad-indicator)'); 287 currentIndex = hoverIndex; 288 sequenceIndex = slideSequence.indexOf(hoverIndex); 289 showSlide(currentIndex, false); 290 stopAutoPlay(); 291 }); 292 293 // Reklam göstergeleri için hover olayı 294 adIndicator.on('mouseenter', function(e) { 295 const adNumber = $(this).data('slide').replace('ad', ''); 296 sequenceIndex = slideSequence.indexOf(`ad${adNumber}`); 297 showSlide(currentIndex, adNumber); 298 stopAutoPlay(); 299 }); 300 301 // Normal rakamlar için mouseleave olayı 302 numberItems.on('mouseleave', function(e) { 303 if (!$(e.relatedTarget).closest('.yhs-slider-container').length) { 304 if (!isAdVisible) { 305 startAutoPlay(); 306 } 307 } 308 }); 309 310 // Reklam göstergeleri için mouseleave olayı 311 adIndicator.on('mouseleave', function(e) { 312 if (!$(e.relatedTarget).closest('.yhs-slider-container').length) { 313 if (!isAdVisible) { 314 startAutoPlay(); 315 } 316 } 317 }); 318 319 // BaÅlangıç durumu 320 showSlide(0, false); 321 startAutoPlay(); 322 323 // Touch olayları için deÄiÅkenler 324 let touchStartX = 0; 325 let touchEndX = 0; 326 let isTouching = false; 327 let touchStartTime; 328 329 // Touch event listeners 330 container.on('touchstart', function(e) { 331 isTouching = false; 332 touchStartX = e.touches[0].clientX; 333 touchStartTime = new Date().getTime(); 334 startX = touchStartX; // Mouse sürükleme ile uyumlu olması için 335 }); 336 337 container.on('touchmove', function(e) { 338 if (!touchStartX) return; 339 340 const touchCurrentX = e.touches[0].clientX; 341 dragDistance = Math.abs(touchCurrentX - touchStartX); 342 343 if (dragDistance > minDragDistance) { 344 isTouching = true;
345 container.find('a').css('pointer-events', 'none'); 346 347 const moveX = -(currentIndex * 100) + ((touchCurrentX - touchStartX) / container.width() * 100); 348 slider.css({ 349 'transform': `translateX(${moveX}%)`, 350 'transition': 'none' 351 }); 352 } 353 }); 354 355 container.on('touchend', function(e) { 356 if (!touchStartX) return; 357 358 const touchEndTime = new Date().getTime(); 359 const tapDuration = touchEndTime - touchStartTime; 360 touchEndX = e.changedTouches[0].clientX; 361 362 if (isTouching && dragDistance > 100) { 363 if (touchEndX > touchStartX) { 364 prevSlide(); 365 } else { 366 nextSlide(); 367 } 368 } else if (tapDuration < maxTapDuration && dragDistance < minDragDistance) { 369 // Kısa dokunma - link tıklaması olarak kabul et 370 const clickedLink = $(e.target).closest('a'); 371 if (clickedLink.length) { 372 const href = clickedLink.attr('href'); 373 const target = clickedLink.attr('target') || '_self'; 374 window.open(href, target); 375 } 376 } else { 377 // Yetersiz sürükleme mesafesi, mevcut slide'a geri dön 378 showSlide(currentIndex, isAdVisible); 379 } 380 381 // Temizlik 382 touchStartX = 0; 383 touchEndX = 0; 384 startX = 0; 385 dragDistance = 0; 386 isTouching = false; 387 388 // Tıklamaları tekrar aktif et 389 container.find('a').css('pointer-events', 'auto'); 390 391 slider.css('transition', `transform ${transitionSpeed}ms ease-in-out`); 392 }); 393 394 // Mobil için numara tıklama olayları 395 numberItems.on('touchend', function(e) { 396 e.preventDefault(); 397 const clickedIndex = $(this).index('.yhs-number-item:not(.yhs-ad-indicator)'); 398 currentIndex = clickedIndex; 399 sequenceIndex = slideSequence.indexOf(clickedIndex); 400 showSlide(currentIndex, false); 401 stopAutoPlay(); 402 }); 403 404 adIndicator.on('touchend', function(e) { 405 e.preventDefault(); 406 const adNumber = $(this).data('slide').replace('ad', ''); 407 sequenceIndex = slideSequence.indexOf(`ad${adNumber}`); 408 showSlide(currentIndex, adNumber); 409 stopAutoPlay(); 410 }); 411 412 // SaÄ tık ayarını al ve boolean'a çevir 413 const enableRightClick = Boolean(parseInt(container.data('enable-right-click'))); 414 415 // SaÄ tık kontrolü 416 if (!enableRightClick) { 417 // SaÄ tık devre dıÅıysa engelle 418 container.on('contextmenu', 'img, a', function(e) { 419 e.preventDefault(); 420 return false; 421 }); 422 423 container.on('mousedown', 'a', function(e) { 424 if (e.button === 2) { 425 e.preventDefault(); 426 return false; 427 } 428 }); 429 } 430 431 // Link tıklama kontrolü 432 container.on('mousedown', 'a', function(e) { 433 if (e.button === 2) { // SaÄ tık 434 e.preventDefault(); // Her durumda saÄ tıkla link açılmasını engelle 435 return false; 436 } 437 }); 438 }); 439});
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.