1function initGpsSliders() { 2 console.log('ð Initializing GPS Sliders...'); 3 4 document.querySelectorAll("[data-slider]").forEach(function (slider) { 5 // Prevent double-init 6 if (slider.dataset.initialized === "true") { 7 console.log('âï¸ Slider already initialized, skipping'); 8 return; 9 } 10 11 console.log('â Found new slider:', slider); 12 slider.dataset.initialized = "true"; 13 14 const slides = slider.querySelectorAll(".gps-slide"); 15 const prevBtn = slider.querySelector(".gps-prev"); 16 const nextBtn = slider.querySelector(".gps-next"); 17 18 console.log(`ð Slides found: ${slides.length}`); 19 console.log('Slides:', slides); 20 console.log(`Prev button:`, prevBtn); 21 console.log(`Next button:`, nextBtn); 22 23 if (!slides.length) { 24 console.warn('â ï¸ No slides found in slider'); 25 return; 26 } 27 28 let current = 0; 29 30 function showSlide(index) { 31 console.log(`ð¯ showSlide called with index: ${index}`); 32 console.log(`Current slide before change: ${current}`); 33 34 slides.forEach((slide, i) => { 35 slide.classList.remove("active"); 36 console.log(`Removed active from slide ${i}:`, slide); 37 }); 38 39 slides[index].classList.add("active"); 40 console.log(`Added active to slide ${index}:`, slides[index]); 41 console.log(`Slide ${index} classes:`, slides[index].className); 42 } 43 44 if (nextBtn) { 45 nextBtn.addEventListener("click", function (e) { 46 e.preventDefault(); 47 console.log('â¶ï¸ NEXT button clicked!'); 48 console.log(`Current before: ${current}`); 49 current = (current + 1) % slides.length; 50 console.log(`Current after: ${current}`); 51 showSlide(current); 52 }); 53 console.log('â¡ï¸ Next button event listener added'); 54 } else { 55 console.warn('â Next button not found!'); 56 } 57 58 if (prevBtn) { 59 prevBtn.addEventListener("click", function (e) { 60 e.preventDefault(); 61 console.log('âï¸ PREV button clicked!'); 62 console.log(`Current before: ${current}`); 63 current = (current - 1 + slides.length) % slides.length; 64 console.log(`Current after: ${current}`); 65 showSlide(current); 66 }); 67 console.log('â¬ ï¸ Prev button event listener added'); 68 } else { 69 console.warn('â Prev button not found!'); 70 } 71 72 // Show first slide 73 console.log('ð¬ Showing initial slide (0)'); 74 showSlide(0); 75 }); 76} 77 78// FSE-safe initialization 79if (document.readyState === 'loading') { 80 document.addEventListener("DOMContentLoaded", initGpsSliders); 81} else { 82 initGpsSliders(); 83} 84 85window.addEventListener("load", initGpsSliders); 86 87// Watch for dynamically added content (FSE editor) 88const observer = new MutationObserver(function() { 89 initGpsSliders(); 90}); 91 92observer.observe(document.body, { 93 childList: true, 94 subtree: true 95}); 96 97// Fallback for late-rendering 98setTimeout(initGpsSliders, 500);
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.