PageSourceSearch

https://playthebazaar.com/js/carousel.js?v=1.1

js playthebazaar.com collected 2026-10-02 11:42:44 UTC 3,074 bytes, 96 lines download raw bytes

1const intervalMap = {};
2const eventHandlerMap = {};
3
4function initCarousel(dotNetObj, carouselId = null) {
5    const currentSlideIndex = { carouselId: 0 };
6    goToSlide(dotNetObj, 0, carouselId, currentSlideIndex);
7}
8
9function initPassiveCarousel(dotNetObj, carouselId = null, interval = 2000, totalSlides = 1, transitionStyle = "slide") {
10    const currentSlideIndex = { carouselId: 0 };
11    const intervalId = startSlideInterval(dotNetObj, carouselId, interval, totalSlides, transitionStyle, currentSlideIndex);
12    intervalMap[carouselId] = intervalId;
13    return carouselId;
14}
15
16function startSlideInterval(dotNetObj, carouselId = null, interval = 2000, totalSlides = 1, transitionStyle = "slide", currentSlideIndex) {
17    const intervalId = setInterval(() => {
18        let nextIndex = currentSlideIndex.carouselId + 1;
19        if (nextIndex >= totalSlides) nextIndex = 0;
20        currentSlideIndex.carouselId = nextIndex;
21        goToSlide(dotNetObj, nextIndex, carouselId, transitionStyle, currentSlideIndex);
22    }, interval);
23
24    return intervalId;
25}
26
27function stopSlideInterval(carouselId) {
28    clearInterval(intervalMap[carouselId]);
29    delete intervalMap[carouselId];
30}
31
32function goToSlide(dotNetObj, _slideIndex, carouselId = null, transitionStyle = "slide", currentSlideIndex) {
33    let targetEl;
34    if (carouselId != null) {
35        targetEl = document.getElementById(carouselId);
36    } else {
37        targetEl = document.querySelector('.carousel-item.carousel-active');
38    }
39
40    if (!targetEl) return;
41
42    let slides = targetEl.querySelectorAll('.carousel-item');
43    let activeSlide = targetEl.querySelector('.carousel-item.carousel-active');
44
45    if (!slides || slides.length === 0) return;
46
47    const currentSlide = slides[_slideIndex];
48
49    if (activeSlide) {
50        activeSlide.classList.remove('carousel-active');
51    }
52    if (currentSlide) {
53        currentSlide.classList.add('carousel-active');
54    }
55
56    if (transitionStyle == "slide") {
57        shiftSlides(slides, _slideIndex);
58    } else {
59        fadeSlides(slides, _slideIndex);
60    }
61
62    dotNetObj.invokeMethodAsync('OnSlideChanged');
63}
64
65function getCurrentSlide(carouselId = null) {
66    let activeSlide;
67
68    if (carouselId != null) {
69        const targetEl = document.getElementById(carouselId);
70        activeSlide = targetEl.querySelector('.carousel-item.carousel-active');
71    } else {
72        activeSlide = document.querySelector('.carousel-item.carousel-active');
73    }
74    if (activeSlide) return activeSlide.dataset.slideIndex;
75}
76
77function shiftSlides(slideElements, currIndex) {
78    slideElements.forEach((slide, i) => {
79        slide.style.transform = `translateX(${100 * (i - currIndex)}%)`;
80        if (i === currIndex) {
81            slide.style.opacity = 1;
82        } else {
83            slide.style.opacity = 0;
84        }
85    });
86};
87
88function fadeSlides(slideElements, currIndex) {
89    slideElements.forEach((slide, i) => {
90        if (i === currIndex) {
91            slide.style.opacity = 1;
92        } else {
93            slide.style.opacity = 0;
94        }
95    });
96}

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.