PageSourceSearch

https://www.newberryobserver.com/wp-content/themes/avant-group-theme/blocks/gps-meta/view.js?ver=1787441530

js newberryobserver.com collected 2026-10-02 06:35:11 UTC 3,376 bytes, 98 lines download raw bytes

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.