PageSourceSearch

https://www.rauschert-tec.com/_assets/06bd11561cf52d81a6253d76ad109d51/Frontend.js?1790603635

js rauschert-tec.com collected 2026-10-08 01:08:09 UTC 7,558 bytes, 141 lines download raw bytes

1const swiffyslider = function() {
2    return {
3        version: "1.6.0",
4        init(rootElement = document.body) {
5            for (let sliderElement of rootElement.querySelectorAll(".swiffy-slider")) {
6                this.initSlider(sliderElement);
7            }
8        },
9
10        initSlider(sliderElement) {
11            for (let navElement of sliderElement.querySelectorAll(".slider-nav")) {
12                let next = navElement.classList.contains("slider-nav-next");
13                navElement.addEventListener("click", () => this.slide(sliderElement, next), { passive: true });
14            }
15            for (let indicatorElement of sliderElement.querySelectorAll(".slider-indicators")) {
16                indicatorElement.addEventListener("click", () => this.slideToByIndicator());
17                this.onSlideEnd(sliderElement, () => this.handleIndicators(sliderElement), 60);
18            }
19            if (sliderElement.classList.contains("slider-nav-autoplay")) {
20                const timeout = sliderElement.getAttribute("data-slider-nav-autoplay-interval") ? sliderElement.getAttribute("data-slider-nav-autoplay-interval") : 2500;
21                this.autoPlay(sliderElement, timeout, sliderElement.classList.contains("slider-nav-autopause"));
22            }
23            if (["slider-nav-autohide", "slider-nav-animation"].some(className => sliderElement.classList.contains(className))) {
24                const threshold = sliderElement.getAttribute("data-slider-nav-animation-threshold") ? sliderElement.getAttribute("data-slider-nav-animation-threshold") : 0.3;
25                this.setVisibleSlides(sliderElement, threshold);
26            }
27        },
28
29        setVisibleSlides(sliderElement, threshold = 0.3) {
30            let observer = new IntersectionObserver(slides => {
31                slides.forEach(slide => {
32                    slide.isIntersecting ? slide.target.classList.add("slide-visible") : slide.target.classList.remove("slide-visible");
33                });
34                sliderElement.querySelector(".slider-container>*:first-child").classList.contains("slide-visible") ? sliderElement.classList.add("slider-item-first-visible") : sliderElement.classList.remove("slider-item-first-visible");
35                sliderElement.querySelector(".slider-container>*:last-child").classList.contains("slide-visible") ? sliderElement.classList.add("slider-item-last-visible") : sliderElement.classList.remove("slider-item-last-visible");
36            }, {
37                root: sliderElement.querySelector(".slider-container"),
38                threshold: threshold
39            });
40            for (let slide of sliderElement.querySelectorAll(".slider-container>*"))
41                observer.observe(slide);
42        },
43
44        slide(sliderElement, next = true) {
45            const container = sliderElement.querySelector(".slider-container");
46            const fullpage = sliderElement.classList.contains("slider-nav-page");
47            const noloop = sliderElement.classList.contains("slider-nav-noloop");
48            const nodelay = sliderElement.classList.contains("slider-nav-nodelay");
49            const slides = container.children;
50            const gapWidth = parseInt(window.getComputedStyle(container).columnGap);
51            const scrollStep = slides[0].offsetWidth + gapWidth;
52            let scrollLeftPosition = next ?
53                container.scrollLeft + scrollStep :
54                container.scrollLeft - scrollStep;
55            if (fullpage) {
56                scrollLeftPosition = next ?
57                    container.scrollLeft + container.offsetWidth :
58                    container.scrollLeft - container.offsetWidth;
59            }
60            if (container.scrollLeft < 1 && !next && !noloop) {
61                scrollLeftPosition = (container.scrollWidth - container.offsetWidth);
62            }
63            if (container.scrollLeft >= (container.scrollWidth - container.offsetWidth) && next && !noloop) {
64                scrollLeftPosition = 0;
65            }
66            container.scroll({
67                left: scrollLeftPosition,
68                behavior: nodelay ? "auto" : "smooth"
69            });
70        },
71
72        slideToByIndicator() {
73            const indicator = window.event.target;
74            const indicatorIndex = Array.from(indicator.parentElement.children).indexOf(indicator);
75            const indicatorCount = indicator.parentElement.children.length;
76            const sliderElement = indicator.closest(".swiffy-slider");
77            const slideCount = sliderElement.querySelector(".slider-container").children.length;
78            const relativeSlideIndex = (slideCount / indicatorCount) * indicatorIndex;
79            this.slideTo(sliderElement, relativeSlideIndex);
80        },
81
82        slideTo(sliderElement, slideIndex) {
83            const container = sliderElement.querySelector(".slider-container");
84            const gapWidth = parseInt(window.getComputedStyle(container).columnGap);
85            const scrollStep = container.children[0].offsetWidth + gapWidth;
86            const nodelay = sliderElement.classList.contains("slider-nav-nodelay");
87            container.scroll({
88                left: (scrollStep * slideIndex),
89                behavior: nodelay ? "auto" : "smooth"
90            });
91        },
92
93        onSlideEnd(sliderElement, delegate, timeout = 125) {
94            let isScrolling;
95            sliderElement.querySelector(".slider-container").addEventListener("scroll", function() {
96                window.clearTimeout(isScrolling);
97                isScrolling = setTimeout(delegate, timeout);
98            }, { capture: false, passive: true });
99        },
100
101        autoPlay(sliderElement, timeout, autopause) {
102            timeout = timeout < 750 ? 750 : timeout;
103            let autoplayTimer = setInterval(() => this.slide(sliderElement), timeout);
104            const autoplayer = () => this.autoPlay(sliderElement, timeout, autopause);
105            if (autopause) {
106                ["mouseover", "touchstart"].forEach(function(event) {
107                    sliderElement.addEventListener(event, function() {
108                        window.clearTimeout(autoplayTimer);
109                    }, { once: true, passive: true });
110                });
111                ["mouseout", "touchend"].forEach(function(event) {
112                    sliderElement.addEventListener(event, function() {
113                        autoplayer();
114                    }, { once: true, passive: true });
115                });
116            }
117            return autoplayTimer;
118        },
119
120        handleIndicators(sliderElement) {
121            if (!sliderElement) return;
122            const container = sliderElement.querySelector(".slider-container");
123            const slidingAreaWidth = container.scrollWidth - container.offsetWidth;
124            const percentSlide = (container.scrollLeft / slidingAreaWidth);
125            for (let scrollIndicatorContainers of sliderElement.querySelectorAll(".slider-indicators")) {
126                let scrollIndicators = scrollIndicatorContainers.children;
127                let activeIndicator = Math.abs(Math.round((scrollIndicators.length - 1) * percentSlide));
128                for (let element of scrollIndicators)
129                    element.classList.remove("active");
130                scrollIndicators[activeIndicator].classList.add("active");
131            }
132        }
133    };
134}();
135
136window.swiffyslider = swiffyslider;
137swiffyslider.init();
138const sliderElement = document.querySelector(".swiffy-slider");
139if (sliderElement) {
140	swiffyslider.slideTo(sliderElement, 0);
141}

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.