PageSourceSearch

https://www.mrdoors.ru/bitrix/cache/js/s1/mrdoors2025/page_28e9eb9…74194b03d3adad5ee028c0_v1.js?17899822057951

js mrdoors.ru collected 2026-09-26 04:26:23 UTC 7,951 bytes, 188 lines download raw bytes

1
2; /* Start:"a:4:{s:4:"full";s:98:"/local/templates/mrdoors2025/components/bitrix/news.list/collection_black/script.js?17810192004453";s:6:"source";s:83:"/local/templates/mrdoors2025/components/bitrix/news.list/collection_black/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
3document.addEventListener('DOMContentLoaded', function () {
4    const swiper_collection = new Swiper('.swiper_collection', {
5        slidesPerView: 'auto',
6        spaceBetween: 20,
7        speed: 400,
8        loop: false,
9        allowTouchMove: false,
10        breakpoints: {
11            320: {
12                allowTouchMove: true,
13                speed: 200,
14            },
15            480 : {
16                allowTouchMove: false,
17            }
18        }
19    });
20
21    const slides = swiper_collection.slides;
22
23    const nextBtnDiv = document.querySelectorAll('.coll_next_button');
24    const prevBtnDiv = document.querySelectorAll('.coll_prev_button');
25
26    function updateNavButtons() {
27        nextBtnDiv.forEach(btn => {
28            if (swiper_collection.isEnd) {
29            btn.classList.add('swiper-button-disabled');
30            } else {
31            btn.classList.remove('swiper-button-disabled');
32            }
33        });
34
35        prevBtnDiv.forEach(btn => {
36            if (swiper_collection.isBeginning) {
37            btn.classList.add('swiper-button-disabled');
38            } else {
39            btn.classList.remove('swiper-button-disabled');
40            }
41        });
42    }
43
44    updateNavButtons();
45
46    swiper_collection.on('slideChange', () => {
47        updateNavButtons();
48    });
49
50    nextBtnDiv.forEach(btn => {
51        btn.addEventListener('click', () => {
52            if (btn.classList.contains('swiper-button-disabled')) return;
53
54            const currentIndex = swiper_collection.activeIndex;
55            const nextIndex = currentIndex + 1;
56
57            if (!slides[nextIndex]) return;
58
59            // 🔹 динамическая проверка ширины
60            if (window.innerWidth <= 480) {
61                swiper_collection.slideNext();
62                swiper_collection.update();
63
64                slides.forEach(slide => slide.classList.remove('shrinking', 'growing', 'current_active'));
65                if (slides[nextIndex]) slides[nextIndex].classList.add('current_active');
66                return;
67            }
68
69            // 🔹 логика с анимацией
70            if (slides[currentIndex]) slides[currentIndex].classList.add('shrinking');
71            if (slides[currentIndex]) slides[currentIndex].classList.remove('current_active');
72            if (slides[nextIndex]) slides[nextIndex].classList.add('current_active');
73
74            setTimeout(() => {
75                slides.forEach(slide => slide.classList.remove('shrinking', 'current_active'));
76                swiper_collection.update();
77                swiper_collection.slideNext();
78
79                const activeIndex = swiper_collection.activeIndex;
80                if (slides[activeIndex]) slides[activeIndex].classList.add('current_active');
81            }, 450);
82        });
83    });
84
85    prevBtnDiv.forEach(btn => {
86        btn.addEventListener('click', () => {
87            if (btn.classList.contains('swiper-button-disabled')) return;
88
89            const currentIndex = swiper_collection.activeIndex;
90            const prevIndex = currentIndex - 1;
91
92            if (!slides[prevIndex]) return;
93
94            // 🔹 динамическая проверка ширины
95            if (window.innerWidth <= 480) {
96                swiper_collection.slidePrev();
97                swiper_collection.update();
98
99                slides.forEach(slide => slide.classList.remove('shrinking', 'growing', 'current_active'));
100                if (slides[prevIndex]) slides[prevIndex].classList.add('current_active');
101                return;
102            }
103
104            // 🔹 логика с анимацией
105            if (slides[currentIndex]) slides[currentIndex].classList.add('shrinking');
106            if (slides[currentIndex]) slides[currentIndex].classList.remove('current_active');
107            if (slides[prevIndex]) slides[prevIndex].classList.add('growing', 'current_active');
108
109            setTimeout(() => {
110                swiper_collection.slidePrev();
111                slides.forEach(slide => slide.classList.remove('shrinking', 'growing', 'current_active'));
112
113                const activeIndex = swiper_collection.activeIndex;
114                if (slides[activeIndex]) slides[activeIndex].classList.add('current_active');
115
116                swiper_collection.update();
117            }, 50);
118        });
119    });
120
121});
122/* End */
123;
124; /* Start:"a:4:{s:4:"full";s:96:"/local/templates/mrdoors2025/components/bitrix/news.list/list_type_news/script.js?17810192002712";s:6:"source";s:81:"/local/templates/mrdoors2025/components/bitrix/news.list/list_type_news/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
125document.addEventListener("DOMContentLoaded", function () {
126    const container = document.querySelector(".container_listing");
127    const trigger = document.getElementById("load-more-trigger");
128    const loader = document.getElementById("loader");
129
130    // let currentPage = parseInt(container.dataset.currentPage, 10) || 1;
131    // const totalPages = parseInt(container.dataset.totalPages, 10) || 1;
132    let loading = false;
133
134    if(trigger) {
135        const observer = new IntersectionObserver((entries) => {
136            const totalPages = parseInt(container.dataset.totalPages, 10) || 1;
137            let currentPage = parseInt(container.dataset.currentPage, 10) || 1;
138            let pagenNum = parseInt(container.dataset.pagenNum, 10) || 1;
139            if (entries[0].isIntersecting && !loading) {
140                if (currentPage >= totalPages) {
141                    observer.unobserve(trigger);
142                    loader.style.display = "none";
143                    return;
144                }
145
146                loading = true;
147                loader.style.display = "block";
148
149                currentPage++;
150
151                fetch(window.location.pathname + "?PAGEN_"+pagenNum+"=" + currentPage + "&ajax_load=Y")
152                    .then(res => res.text())
153                    .then(html => {
154                        const parser = new DOMParser();
155                        const doc = parser.parseFromString(html, "text/html");
156                        const newCards = parser.parseFromString(html, "text/html").querySelectorAll(".card-load");
157                        newCards.forEach(item => {
158                            container.appendChild(item);
159                            const lazyImages = item.querySelectorAll("img[data-src]");
160                            lazyImages.forEach(img => {
161                                img.src = img.dataset.src;
162                            });
163                        });
164
165                        const newContainer = doc.querySelector(".container_listing");
166                        if (newContainer) {
167                            container.dataset.currentPage = newContainer.dataset.currentPage;
168                            container.dataset.totalPages = newContainer.dataset.totalPages;
169                        }
170
171                        loading = false;
172                        loader.style.display = "none";
173                    })
174                    .catch(() => {
175                        loading = false;
176                        loader.style.display = "none";
177                    });
178            }
179        }, {
180            rootMargin: "100px 0px",
181        });
182
183        observer.observe(trigger);
184    }
185});
186/* End */
187;; /* /local/templates/mrdoors2025/components/bitrix/news.list/collection_black/script.
187js?17810192004453*/
188; /* /local/templates/mrdoors2025/components/bitrix/news.list/list_type_news/script.js?17810192002712*/

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.