PageSourceSearch

https://mi.by/local/templates/mi/js/main.js

js mi.by collected 2026-10-04 02:39:55 UTC 39,518 bytes, 830 lines download raw bytes

1const sliders = () => {
2    new Swiper(".offer__slider", {
3        speed: 800,
4        loop: !0,
5        slidesPerView: 1,
6        watchOverflow: !0,
7        watchSlidesProgress: !0,
8        preloadImages: !1,
9        lazy: !0,
10        navigation: {nextEl: ".swiper-button-next.offer-nav", prevEl: ".swiper-button-prev.offer-nav"},
11        pagination: {
12            el: ".nav-bar.offer-nav",
13            clickable: !0,
14            bulletClass: "nav-dot",
15            bulletActiveClass: "nav-dot-active"
16        }
17    }), new Swiper(".novelties__slider", {
18        speed: 800,
19        loop: !0,
20        slidesPerView: 2,
21        spaceBetween: 20,
22        watchOverflow: !0,
23        watchSlidesProgress: !0,
24        preloadImages: !1,
25        lazy: !0,
26        navigation: {nextEl: ".swiper-button-next.novelties-nav", prevEl: ".swiper-button-prev.novelties-nav"},
27        breakpoints: {
28            320: {slidesPerView: 1, spaceBetween: 10},
29            578: {slidesPerView: 1, spaceBetween: 10},
30            992: {slidesPerView: 1, spaceBetween: 10},
31            1280: {slidesPerView: 2, spaceBetween: 20}
32        }
33    }), new Swiper(".posts__slider", {
34        speed: 500,
35        loop: !0,
36        watchOverflow: !0,
37        watchSlidesProgress: !0,
38        slidesPerView: 3,
39        spaceBetween: 10,
40        navigation: {nextEl: ".swiper-button-next.posts-nav", prevEl: ".swiper-button-prev.posts-nav"},
41        breakpoints: {
42            320: {slidesPerView: 1, spaceBetween: 10},
43            578: {slidesPerView: 2, spaceBetween: 20},
44            992: {slidesPerView: 3, spaceBetween: 20}
45        }
46    });
47    const e = document.querySelectorAll(".card__promotion");
48    e?.forEach(e => {
49        new Swiper(e, {
50            el: e.querySelector(".card__promotion-swiper"),
51            cssMode: !0,
52            mousewheel: !0,
53            pagination: {el: e.querySelector(".swiper-pagination"), type: "fraction"},
54            watchOverflow: !0,
55            navigation: {
56                nextEl: e.querySelector(".swiper-button-next"),
57                prevEl: e.querySelector(".swiper-button-prev")
58            },
59            observer: !0,
60            observeParents: !0
61        })
62    });
63    const t = new Swiper(".card__slider--thumbs", {
64        direction: "vertical",
65        slidesPerView: 7,
66        spaceBetween: 10,
67        loop: !1,
68        navigation: {nextEl: ".swiper-button-next-th", prevEl: ".swiper-button-prev-th"},
69        observer: !0,
70        observerSlideChildren: !0,
71        watchOverflow: !0
72    }), n = (new Swiper(".card__slider--main", {
73        slidesPerView: 1,
74        thumbs: {swiper: t},
75        pagination: {el: ".swiper-pagination", type: "bullets"},
76        observer: !0,
77        observerSlideChildren: !0,
78        watchOverflow: !0,
79        on: {
80            init: function () {
81                t.update()
82            }
83        }
84    }), new Swiper(".video__slider--thumbs-video", {
85        direction: "vertical",
86        slidesPerView: "auto",
87        spaceBetween: 17,
88        allowTouchMove: !1
89    }));
90    new Swiper(".video__slider--main-video", {
91        slidesPerView: 1,
92        thumbs: {swiper: n},
93        navigation: {prevEl: ".swiper-button-prev-video", nextEl: ".swiper-button-next-video"},
94        pagination: {el: ".swiper-pagination--video", type: "fraction"},
95        allowTouchMove: !1
96    }), window.innerWidth;
97    const o = document.querySelectorAll(".recently-swiper");
98    o.length > 0 && o.forEach(e => {
99        let t = !0;
100        e.querySelectorAll(".swiper-slide").length < 4 && (t = !1), new Swiper(e, {
101            slidesPerView: 1,
102            spaceBetween: 4,
103            watchOverflow: !0,
104            cssMode: !1,
105            watchSlidesProgress: !0,
106            loop: t,
107            breakpoints: {768: {slidesPerView: 2}, 1080: {slidesPerView: 3}, 1400: {slidesPerView: 4}},
108            navigation: {prevEl: e.previousElementSibling, nextEl: e.nextElementSibling}
109        })
110    }
110), new Swiper(".header__bottom-menu--swiper", {
111        slidesPerView: 9,
112        spaceBetween: 20,
113        slidesPerView: "auto",
114        loop: !0,
115        cssMode: !0,
116        mousewheel: !0,
117        breakpoints: {768: {spaceBetween: 43}},
118        navigation: {prevEl: ".swiper-button-prev-header", nextEl: ".swiper-button-next-header"}
119    }), new Swiper(".j-compare-slider", {slidesPerView: 1}), new Swiper(".j-catalog-banners", {
120        slidesPerView: 1,
121        navigation: {prevEl: ".swiper-button-prev-banner", nextEl: ".swiper-button-next-banner"},
122        breakpoints: {640: {slidesPerView: 2, spaceBetween: 19, allowTouchMove: !1}}
123    }), new Swiper('#alias-banner-container', {
124        slidesPerView: 1,
125        spaceBetween: 20,
126        loop: false,
127        pagination: {
128            el: '.swiper-pagination',
129            clickable: true,
130        },
131        navigation: {
132            nextEl: '.swiper-button-next',
133            prevEl: '.swiper-button-prev',
134        },
135        autoplay: {
136            delay: 5000,
137        },
138        breakpoints: {
139        }
140    });
141    const s = document.querySelector(".j-catalog-categories");
142    if (s) {
143        const e = {
144            slidesPerView: "auto",
145            loop: !0,
146            slidesPerGroup: 1,
147            breakpoints: {
148                576: {slidesPerView: 2},
149                768: {slidesPerView: 3},
150                1080: {slidesPerView: 4},
151                1280: {slidesPerView: 5}
152            },
153            navigation: {prevEl: ".swiper-button-prev-cat", nextEl: ".swiper-button-next-cat"}
154        }, t = s.querySelectorAll(".swiper-slide"), n = s.querySelector(".swiper-wrapper");
155        calcFullWidth(t) > n.offsetWidth && initSlider(s, e), window.addEventListener("resize", () => {
156            calcFullWidth(t) > n.offsetWidth ? initSlider(s, e) : destroySlider(s)
157        })
158    }
159};
160
161function calcFullWidth(e) {
162    let t = 0;
163    return e.forEach(e => {
164        t += e.offsetWidth
165    }), t
166}
167
168function initSlider(e, t) {
169    e.classList.contains("swiper-container-initialized") || e.classList.contains("swiper-initialized") || new Swiper(e, t)
170}
171
172function destroySlider(e) {
173    (e.classList.contains("swiper-container-initialized") || e.classList.contains("swiper-initialized")) && e.swiper.destroy()
174}
175
176const initTabs = () => {
177    const e = document.querySelectorAll('[role="tab"]'), t = document.querySelector('[role="tablist"]');
178    if (e && t) {
179        /*
180        e.forEach(e => {
181            e.addEventListener("click", () => {
182                changeTabs(e)
183            })
184        });*/
185        e.forEach(el => {
186            el.addEventListener("click", (event) => {
187                // Вызываем оптимизированную функцию
188                changeTabsOptimized(el);
189            });
190        });
191        let n = 0;
192        t.addEventListener("keydown", t => {
193            39 !== t.keyCode && 37 !== t.keyCode || (e[n].setAttribute("tabindex", -1), 39 === t.keyCode ? (n++, n >= e.length && (n = 0)) : 37 === t.keyCode && (n--, n < 0 && (n = e.length - 1)), e[n].setAttribute("tabindex", 0), e[n].focus())
194        })
195    }
196};
197let blockformInfoMore = document.querySelectorAll(".info__show-more");
198
199function openedText(e) {
200    e.forEach(e => {
201        e.previousElementSibling.offsetHeight > 55 ? (e.style.display = "block", e.previousElementSibling.style.height = "55px", e.addEventListener("click", t => {
202            t.preventDefault(), e.previousElementSibling.classList.add("visible"), e.previousElementSibling.style.height = "auto", e.style.display = "none"
203        })) : e.style.display = "none"
204    })
205}
206
207function changeTabs(e) {
208    const t = e.closest('[role="tablist"]'), n = t.parentNode;
209    t.querySelectorAll('[aria-selected="true"]').forEach(e => e.setAttribute("aria-selected", !1)), e.setAttribute("aria-selected", !0), n.querySelectorAll('[role="tabpanel"]').forEach(e => e.setAttribute("hidden", ""));
210    const o = n.parentNode.querySelector(`#${e.getAttribute("aria-controls")}`);
211    o?.removeAttribute("hidden"), o?.querySelector(".swiper-container") && o.querySelectorAll(".swiper-container").forEach(e => {
212        e.swiper.update()
213    }), blockformInfoMore && openedText(blockformInfoMore)
214}
215
216// 2. Оптимизированная функция
217function changeTabsOptimized(clickedTab) {
218    // Заранее сохраняем нужные элементы (1 проход вместо многих)
219    const tablist = clickedTab.closest('[role="tablist"]');
220    if (!tablist) return;
221
222    const container = tablist.parentNode;
223    const targetId = clickedTab.getAttribute("aria-controls");
224    const targetPanel = container.parentNode.querySelector(`#${targetId}`);
225
226    // --- ФАЗА 1: Минимальные изменения для быстрого отклика ---
227    // Сначала показываем новую панель (самое важное для пользователя)
228    if (targetPanel) {
229        targetPanel.removeAttribute("hidden");
230    }
231
232    // Скрываем старую панель (НО НЕ УДАЛЯЕМ из DOM, если не нужно)
233    const oldPanel = container.querySelector('[role="tabpanel"]:not([hidden])');
234    if (oldPanel && oldPanel !== targetPanel) {
235        oldPanel.setAttribute("hidden", "");
236    }
237
238    // Обновляем aria-атрибуты (легкая операция)
239    const currentActive = tablist.querySelector('[aria-selected="true"]');
240    if (currentActive) {
241        currentActive.setAttribute("aria-selected", "false");
242    }
243    clickedTab.setAttribute("aria-selected", "true");
244
245    // --- ФАЗА 2: Тяжелые операции после отрисовки ---
246    // Всё, что ниже, не критично для визуального отклика
247    requestAnimationFrame(() => {
248        setTimeout(() => {
249            // Обновляем Swiper (если есть)
250            if (targetPanel) {
251                const swiperContainers = targetPanel.querySelectorAll(".swiper-container");
252                swiperContainers.forEach(container => {
253                    if (container.swiper) {
254                        container.swiper.update();
255                    }
256                });
257            }
258
259            // Вызываем тяжелую функцию (если нужно)
260            if (typeof blockformInfoMore !== 'undefined' && blockformInfoMore) {
261                openedText(blockformInfoMore);
262            }
263        }, 0);
264    });
265}
266
267blockformInfoMore && openedText(blockformInfoMore);
268const popupTimeOpen = () => {
269    const e = document.querySelectorAll(".js-popup-open");
270    e.length && e.forEach(e => {
271        e.addEventListener("click", function (e) {
272            this.classList.toggle("active")
273        }), document.addEventListener("click", t => {
274            let n = t.target, o = n == e || e.contains(n), s = e.classList.contains("active");
275            !o && s && e.classList.remove("active")
276        })
277    })
278}, badgesHandler = () => {
279    const e = document.querySelectorAll(".js-badges__hidden"), t = document.querySelectorAll(".js-show-more");
280    (e.length || t.length) && t.forEach(e => {
281        e.addEventListener("click", () => {
282            e.classList.toggle("active"), e.previousElementSibling.classList.toggle("hidden")
283        })
284    })
285}, selectPaymentVariants = () => {
286    const e = document.querySelector(".js-payment-variants"), t = document.querySelector(".js-current-payment-variant");
287    e && t && e.addEventListener("click", () => {
288        e.classList.contains("open") ? e.classList.remove("open") : e.classList.add("open")
289    }), paymentVariantsSelectItemsInit(), document.addEventListener("click", e => {
290        const t = e.target, n = document.querySelector(".js-payment-variants.open");
291        n && !t.closest(".js-payment-variants.open") && n.classList.remove("open")
292    })
293}, paymentVariantsSelectItemsInit = () => {
294    const e = document.querySelectorAll(".js-select-item"), t = document.querySelector(".js-current-payment-variant");
295    e.length && e.forEach(e => {
296        e.addEventListener("click", () => {
297            if (document.querySelectorAll(".payment-variants__select-text").forEach(e => e.classList.remove("selected")), e.querySelector(".payment-variants__select-text")) {
298                e.querySelector(".payment-variants__select-text").classList.add("selected");
299                const n = e.querySelector(".payment-variants__select-text").textContent;
300                t.textContent = n
301            }
302        })
303    })
304};
305let myMap;
306
307function init(e) {
308    const t = e ? JSON.parse(e) : [], n = t.length > 0 ? calcMapCenter(t) : {lat: 53.9, lng: 27.56};
309    void 0 !== myMap && (console.log("ytn"), myMap.destroy()), myMap = new ymaps.Map("map", {
310        center: [n.lat, n.lng],
311        zoom: 16,
312        controls: []
313    }), t.length > 0 && t.forEach(e => {
314        const t = new ymaps.Placemark([e.lat, e.lng], {balloonContent: e.name}, {
315            preset: "islands#icon",
316            iconColor: "#FF6700"
317        });
318        myMap.geoObjects.add(t)
319    }), t.length > 1 && myMap.setBounds(myMap.geoObjects.getBounds(), {
320        checkZoomRange: !0,
321        zoomMargin: 100
322    }), myMap.controls.add(new ymaps.control.ZoomControl({
323        options: {
324            position: {
325                right: 10,
326                top: 50
327            }
328        }
329    })), myMap.behaviors.disable("scrollZoom")
330}
331
332function calcMapCenter(e) {
333    return {
334        lat: (Math.max.apply(Math, e.map(function (e) {
335            return e.lat
336        })) + Math.min.apply(Math, e.map(function (e) {
337            return e.lat
338        }))) / 2, lng: (Math.max.apply(Math, e.map(function (e) {
339            return e.lng
340        })) + Math.min.apply(Math, e.map(function (e) {
341            return e.lng
342        }))) / 2
343    }
344}
345
346const customSelectHandler = () => {
347    const e = document.querySelector(".js-custom-select"), t = document.querySelector(".js-custom-select-variant"),
348        n = document.querySelectorAll(".js-select-item"), o = document.querySelector(".js-custom-select-input"),
349        s = document.querySelector(".js-search input");
350    e && t && e.addEventListener("click", () => {
351        e.classList.contains("open") ? e.classList.remove("open") : e.classList.add("open"), s?.focu
351s()
352    }), n && n.forEach(e => {
353        e.addEventListener("click", () => {
354            if (document.querySelectorAll(".custom-select__select-text").forEach(e => e.classList.remove("selected")), e.querySelector(".custom-select__select-text")) {
355                e.querySelector(".custom-select__select-text").classList.add("selected");
356                const n = e.querySelector(".custom-select__select-text").textContent;
357                o.value = n, t.textContent = n
358            }
359        })
360    })
361}, modals = () => {
362    document.addEventListener("click", e => {
363        const t = e.target;
364        if (t.classList.contains("js-open-modal") || t.closest(".js-open-modal")) {
365            e.preventDefault();
366            const n = t.classList.contains("js-open-modal") ? t : t.closest(".js-open-modal");
367            if (document.querySelector(".modal--open") && closePopup(), n.dataset.product) {
368                const e = JSON.parse(n.dataset.product), t = document.querySelector(`#${n.dataset.modal}`);
369                if (n.dataset.title && (t.querySelector(".modal__title").innerHTML = n.dataset.title), Array.isArray(e)) {
370                    $(".modal__good").remove(), $("#one_click_buy_form").prepend('<div class="modal__good"></div>');
371                    for (let t of e) {
372                        if (void 0 !== t.SUM) {
373                            $(".one_click_summary__price").html("Итоговая сумма: <b>" + t.SUM + "<span>р.</span></b>");
374                            let e = Math.round(t.SUM.replace(/ /g, "") / 100 * 100) / 100;
375                            $(".one_click_summary__bonus").html("Бонусы к зачислению: <b>" + e + "</b>");
376                            continue
377                        }
378                        let e = "";
379                        for (item of t.PROPS) e += '<div class="good__prop">' + item.NAME.replace(/ ТП$/, "") + ": " + item.VALUE + "</div>";
380                        $(".modal__good:last").after('<div class="modal__good good">\n                    <img src="' + t.IMAGE + '" alt="" class="good__img">\n                    <div>\n                        <div class="good__name">' + t.NAME + "</div>" + e + '<div class="good__price">' + t.QUANTITY + " x " + t.PRICE + "</div>\n                    </div>\n                </div>")
381                    }
382                    $(".modal__good:first").remove()
383                } else {
384                    t.querySelector(".good__id").value = e.ID, t.querySelector(".good__img").setAttribute("src", e.IMAGE), t.querySelector(".good__name").innerHTML = e.NAME, t.querySelector(".good__price").innerHTML = e.PRICE, document.querySelectorAll(".good__prop").forEach(function (e) {
385                        e.parentNode.removeChild(e)
386                    });
387                    let n = [];
388                    for (item in e.PROPS) prop = document.createElement("div"), prop.innerHTML = e.PROPS[item][0] + ": " + e.PROPS[item][1], prop.classList.add("good__prop"), n.push(prop);
389                    let o = t.querySelector(".good__name");
390                    for (prop in n.reverse()) o.after(n[prop])
391                }
392            }
393            if (n.dataset.id) {
394                document.querySelector(`#${n.dataset.modal}`).querySelector(".good__id").value = n.dataset.id
395            }
396            if (openPopup(n.dataset.modal), n.classList.contains("js-modal-map")) {
397                const e = n.dataset.points;
398                ymaps.ready(() => {
399                    init(e)
400                })
401            }
402        } else t.classList.contains("js-close-modal") && closePopup()
403    })
404};
405
406function openPopup(e) {
407    const t = document.querySelector(`#${e}`);
408    t && (document.body.classList.add("locked"), t.classList.add("modal--open"), document.dispatchEvent(new Event("modal-open")))
409}
410
411function closePopup() {
412    document.body.classList.remove("locked"), document.querySelector(".modal--open").classList.remove("modal--open")
413}
414
415const footerMenuHandler = () => {
416    const e = document.querySelectorAll(".js-footer-title");
417    e && e.forEach(e => {
418        e.addEventListener("click", () => {
419            e.classList.toggle("open")
420        })
421    })
422}, stars = () => {
423    const e = document.querySelector(".j-rating-input"), t = document.querySelector(".j-rating-buttons");
424    let n = 0;
425    if (t) {
426        const s = t.querySelectorAll(".star");
427        for (let i = 0, a = s.length; i < a; i++) (function (i) {
428            const a = s[i];
429            a.addEventListener("click", function () {
430                n = i + 1, o(n), e.value = a.dataset.value, e.dataset.rating = n, t.classList.add("set")
431            }), a.addEventListener("mouseover", function () {
432                n = i + 1, o(n)
433            })
434        })(i);
435
436        function o(e) {
437            const t = e ? e - 1 : -1;
438            s.forEach((e, n) => {
439                n <= t ? e.classList.add("star-full") : e.classList.remove("star-full")
440            })
441        }
442
443        t.addEventListener("mouseleave", function () {
444            o(e.dataset.rating)
445        })
446    }
447};
448
449function initVideo() {
450    const e = document.querySelectorAll(".j-video");
451    e.length && e.forEach(e => {
452        if (!e.classList.contains("video--enabled")) {
453            let t = e.querySelector(".video__link"), n = e.querySelector(".video__media"),
454                o = e.querySelector(".video__button");
455            if (n) {
456                let s = parseMediaURL(n);
457                e.addEventListener("click", () => {
458                    let n = createIframe(s);
459                    t.remove(), o.remove(), e.appendChild(n)
460                }), t.removeAttribute("href"), e.classList.add("video--enabled")
461            }
462        }
463    })
464}
465
466function parseMediaURL(e) {
467    return e.src.match(/https:\/\/i\.ytimg\.com\/vi\/([a-zA-Z0-9_-]+)\/maxresdefault\.jpg/i)[1]
468}
469
470function createIframe(e) {
471    let t = document.createElement("iframe");
472    return t.setAttribute("allowfullscreen", ""), t.setAttribute("allow", "autoplay"), t.setAttribute("src", generateURL(e)), t.classList.add("video__media"), t
473}
474
475function generateURL(e) {
476    return "https://www.youtube.com/embed/" + e + "?enablejsapi=1&rel=0&showinfo=0&autoplay=1"
477}
478
479const bonusesAccordions = document.querySelector(".bonuses__accordions");
480
481function initAccordion() {
482    const e = document.querySelectorAll(".j-accordion-button");
483    if (e.length > 0) {
484        const t = 250;
485        e.forEach(e => {
486            const n = e.closest(".accordion");
487            let o = n.querySelector(".j-accordion-body");
488            if (o) {
489                function s(e) {
490                    e.addEventListener("click", function () {
491                        o && (this.classList.contains("opened") ? (disable(this), expand(o), setTimeout(() => {
492                            collapse(o), this.classList.remove("opened")
493                        }, 10), setTimeout(() => {
494                            enable(this)
495                        }, t + 10)) : (disable(this), expand(o), this.classList.add("opened"), setTimeout(() => {
496                            enable(this), o.style.height = ""
497                        }, t)))
498                    })
499                }
500
501                window.innerWidth > 768 && (n.classList.contains("checkout__accordion") || n.classList.contains("category__accordion")) && e.classList.add("opened"), o.style.transition = `height ${t}ms`, o.style.overflowY = "hidden", e.classList.contains("opened") ? (expand(o), setTimeout(() => {
502                    o.style.height = ""
503                }, t)) : collapse(o);
504                let i = e.parentNode;
505                i.classList.contains("accordion__title") ? i.addEventListener("click", s(i)) : s(e)
506            } else e.style.display = "none"
507        })
508    }
509}
510
511function expand(e) {
512    e.style.height = e.scrollHeight + "px"
513}
514
515function collapse(e) {
516    e.style.height = 0
517}
518
519function disable(e) {
520    e.style.pointerEvents = "none"
521}
522
523function enable(e) {
524    e.style.pointerEvents = ""
525}
526
527function initMask() {
528    Inputmask({
529        mask: "+375 (99) 999-99-99", oncomplete: e => {
530            e.target.classList.add("filled"), $(e.target).addClass("fullNumber"), $('input[name="ONE_CLICK_ORDER_PERSONAL_DATA"]').is(":checked") && $("#one_click_buy_form_button").prop("disabled", !1)
531        }, onincomplete: e => {
532            e.target.classList.remove("filled"), $(e.target).removeClass("fullNumber"), $("#one_click_buy_form_button").prop("disabled", !0)
533        }, oninput: e => {
534            e.target.inputmask.isComplete() ? e.target.classList.add("filled") : e.target.classList.remove("filled")
535        }, autoUnmask: !0
536    }).mask(".j-phone-mask"), document.querySelector(".j-phone-mask").addEventListener("change", e => {
537        e.target.inputmask.isComplete() ? (e.target.classList.add("filled"), $(e.target).addClass("fullNumber"), $('input[name="ONE_CLICK_ORDER_PERSONAL_DATA"]').is(":checked") && $("#one_click_buy_form_button").prop("disabled", !1)) : (e.target.classList.remove("filled"), $(e.target).removeClass("fullNumber"), $("#one_click_buy_form_button").prop("disabled", !0))
538    }), document.querySelector(".j-phone-mask").addEventListener("input", e => {
539        e.target.inputmask.isComplete() ? (e.target.classList.add("filled"), $(e.target).addClass("fullNumber"), $('input[name="ONE_CLICK_ORDER_PERSONAL_DATA"]').is(":checked") && $("#one_click_buy_form_button").prop("disabled", !1)) : (e.target.classList.remove("filled"), $(e.target).removeClass("fullNumber"), $("#one_click_buy_form_button").prop("disabled", !0))
540    }), Inputmask("email").mask(".j-email-mask")
541}
542
543function initRange() {
544    const e = document.querySelectorAll(".j-range");
545    e.length > 0 && e.forEach(e => {
546        const t = e.closest(".rangeBlock");
547        let n = t.querySelector(".j-range-min"), o = t.querySelector(".j-range-max"),
548            s = e.dataset.min ? +e.dataset.min : 0, i = e.dataset.max ? +e.dataset.max : 1,
549            a = e.dataset.step ? +e.dataset.step : .1;
550        $(e).slider({
551            animate: !0,
552            range: !0,
553            min: s,
554            max: i,
555            step: a,
556            values: [+n.value || s, +o.value || i],
557            slide: function (e, t) {
558                n.value = t.values[0], o.value = t.values[1]
559            },
560            stop: function () {
561                n.dispatchEvent(new Event("change")), o.dispatchEvent(new Event("change"))
562            }
563        }), n?.addEventListener("change", () => {
564            !function () {
565                let t, a = n.value;
566                "" !== a && a <= i && a >= s ? t = a : (t = s, n.value = s);
567                changeRange(e, t, o.value)
568            }()
569        }), o?.addEventListener("change", () => {
570            !function () {
571                let t, a = o.value;
572                "" !== a && a <= i && a >= s ? t = a : (t = i, o.value = i);
573                changeRange(e, n.value, t)
574            }()
575        })
576    })
577}
578
579function changeRange(e, t, n) {
580    $(e).slider({values: [t, n]})
581}
582
583function initShowMore() {
584    const e = document.querySelectorAll(".j-more-btn");
585    e.length > 0 && e.forEach(e => {
586        e.addEventListener("click", () => {
587            const t = e.parentElement.querySelector(".j-more-block") || e.parentElement.parentElement.querySelector(".j-more-block");
588            e.classList.contains("opened") ? (e.classList.remove("opened"), t.setAttribute("hidden", "")) : (e.classList.add("opened"), t.removeAttribute("hidden"))
589        })
590    })
591}
592
593function openFilter() {
594    document.querySelector(".j-filter-body").classList.add("opened"), document.body.classList.add("locked")
595}
596
597function closeFilter() {
598    document.querySelector(".j-filter-body").classList.remove("opened"), document.body.classList.remove("locked")
599}
600
601function counter(e, t) {
602    return t[e % 100 >
602 4 && e % 100 < 20 ? 2 : [2, 0, 1, 1, 1, 2][e % 10 < 5 ? e % 10 : 5]]
603}
604
605function initTableSwipe() {
606    const e = document.querySelectorAll(".j-swipe-table");
607    0 !== e.length && e.forEach(e => {
608        let t, n, o = !1;
609        e.addEventListener("mousedown", s => {
610            o = !0, t = s.pageX - e.offsetLeft, n = e.scrollLeft
611        }), e.addEventListener("mouseleave", e => {
612            o = !1
613        }), e.addEventListener("mouseup", e => {
614            o = !1
615        }), e.addEventListener("mousemove", s => {
616            if (!o) return;
617            s.preventDefault();
618            let i = 3 * (s.pageX - e.offsetLeft - t);
619            e.scrollLeft = n - i
620        })
621    })
622}
623
624function debounce(e, t, n) {
625    let o;
626    return function () {
627        let s = this, i = arguments, a = n && !o;
628        clearTimeout(o), o = setTimeout(function () {
629            o = null, n || e.apply(s, i)
630        }, t), a && e.apply(s, i)
631    }
632}
633
634addEventListener("DOMContentLoaded", () => {
635    sliders(), initTabs(), initMask(), popupTimeOpen(), badgesHandler(), selectPaymentVariants(), customSelectHandler(), modals(), footerMenuHandler(), stars(), initVideo(), initAccordion(), document.querySelector(".j-step") && document.body.classList.add("fixed-steps"), Inputmask.extendDefaults({autoUnmask: !0}), initRange(), initShowMore(), document.addEventListener("click", e => {
636        if (window.innerWidth <= 992) {
637            const t = e.target;
638            t.classList.contains("j-filter-open") || t.closest(".j-filter-open") ? openFilter() : (t.classList.contains("j-filter-close") || t.closest(".j-filter-close")) && closeFilter()
639        }
640    });
641    const e = document.querySelector(".j-filter-body");
642    e && e.addEventListener("reset", function () {
643        const e = this.querySelectorAll(".j-range");
644        e.length && e.forEach(e => {
645            const t = e.closest(".rangeBlock");
646            let n = e.dataset.min ? +e.dataset.min : 0, o = e.dataset.max ? +e.dataset.max : 1,
647                s = t.querySelector(".j-range-min"), i = t.querySelector(".j-range-max");
648            s.value = n, s.dispatchEvent(new Event("change")), i.value = o, i.dispatchEvent(new Event("change"))
649        })
650    }), initTableSwipe(), document.addEventListener("click", e => {
651        let t = e.target;
652        if (t.classList.contains("j-slow")) {
653            e.preventDefault();
654            let n = t.getAttribute("href");
655            const o = document.querySelector(n);
656            let s = o.getBoundingClientRect().top;
657            const i = document.querySelector(".header").offsetHeight, a = o.closest('[role="tabpanel"]');
658            if (a) {
659                const e = document.querySelector(`#${a.getAttribute("aria-labelledby")}`);
660                s = e.getBoundingClientRect().top, changeTabs(e)
661            }
662            window.scrollBy({top: s - i - 20, left: 0, behavior: "smooth"})
663        }
664    }), BX.ready(function () {
665        BX.addCustomEvent("onAjaxSuccess", function (e, t) {
666            if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) return;
667            if ("string" != typeof e || t.isMore) return;
668            const n = document.querySelector(".header").offsetHeight;
669            if (e.includes('class="catalog__grid stocks__grid"')) {
670                const e = document.querySelector(".special.special-stocks .h1--thin"), t = e ? e.offsetTop : 2 * n;
671                setTimeout(() => {
672                    window.scrollTo({top: t - n})
673                }, 10)
674            } else if (e.includes('data-entity="item"')) {
675                const e = document.querySelector(".catalog"), t = e ? e.offsetTop : 2 * n;
676                setTimeout(() => {
677                    window.scrollTo({top: t - n})
678                }, 10)
679            }
680        })
681    })
682}), document.addEventListener("DOMContentLoaded", function () {
683    let e = window.innerWidth, t = document.querySelector(".j-catalog-btn"), n = document.querySelector("#menuCatalog"),
684        o = document.querySelector("#catalogFilter");
685    if (n) {
686        t.addEventListener("click", function (e) {
687            document.querySelector(".footer__catalog").classList.toggle("active-catalog"),
688                requestAnimationFrame(() => {
689                    setTimeout(() => a(), 0);
690                });
691        }), document.querySelector(".footer__catalog").addEventListener("click", function (e) {
692            a()
693        }), document.addEventListener("click", function (e) {
694            if (window.innerWidth > 992) {
695                let o = e.target, s = o === n || n.contains(o), i = o.classList.contains("j-catalog-btn"),
696                    r = "true" === t.getAttribute("aria-expanded");
697                s || i || !r || a()
698            }
699        });
700        let r = ".j-category-block", l = ".j-category-button", c = document.querySelectorAll(l),
701            d = document.querySelectorAll(r);
702        for (let f = 0, g = c.length; f < g; f++) (function (t) {
703            let n = c[t];
704            e > 991 ? n.addEventListener("mouseover", s) : n.addEventListener("click", i)
705        })(f);
706        let u = document.querySelector(".j-category-back"), p = u.innerText,
707            m = document.querySelector(".j-category-breadcrumb"), v = u.closest(".menuCatalog__header");
708
709        function s(e) {
710            let t = e.currentTarget;
711            if (!t.classList.contains("active")) {
712                let e = t.dataset.click;
713                d.forEach(function (t, n) {
714                    t.dataset.block === e ? (t.classList.add("active"), c[n].classList.add("active")) : (t.classList.remove("active"), c[n].classList.remove("active"))
715                })
716            }
717        }
718
719        function i(e) {
720            e.preventDefault();
721            let t = e.currentTarget, n = t.dataset.click, o = document.querySelector('[data-block="' + n + '"]');
722            t.classList.add("active"), o.classList.add("active"), setTimeout(() => {
723                o.style.transform = "none"
724            }, 300), u.innerHTML = t.innerText, m.innerText = t.innerText, v.classList.add("active-back")
725        }
726
727        function a() {
728            "false" === t.getAttribute("aria-expanded") ? (t.setAttribute("aria-expanded", !0), n.classList.add("opened"), document.body.classList.add("locked"), o && (o.hidden = !0)) : (t.setAttribute("aria-expanded", !1), n.classList.remove("opened"), document.body.classList.remove("locked"), o && (o.hidden = !1))
729        }
730
731        u.addEventListener("click", function () {
732            v.classList.remove("active-back"), u.innerHTML = p, m.innerText = "", document.querySelector(`${r}.active`).removeAttribute("style"), document.querySelector(`${r}.active`).classList.remove("active"), document.querySelector(`${l}.active`).classList.remove("active")
733        }), e > 991 && (c[0].classList.add("active"), d[0].classList.add("active")), window.addEventListener("resize", function () {
734            let t = window.innerWidth;
735            if (e <= 991 && t > 991) for (let e = 0, t = c.length; e < t; e++) (function (e) {
736                let t = c[e];
737                t.addEventListener("mouseover", s), t.removeEventListener("click", i)
738            })(e); else if (e > 991 && t <= 991) {
739                for (let e = 0, t = c.length; e < t; e++) (function (e) {
740                    let t = c[e];
741                    t.removeEventListener("mouseover", s), t.addEventListener("click", i)
742                })(e);
743                n.classList.contains("opened") && (a(), document.querySelector(`${r}.active`).classList.remove("active"), document.querySelector(`${l}.active`).classList.remove("active"))
744            }
745            e = t
746        })
747    }
748    !function () {
749        var e = document.querySelector("#catalogFilter"), t = null;
750
751        function n() {
752            if (e) {
753                if (null == t) {
754                    for (var n = getComputedStyle(e, ""), o = "", s = 0; s < n.length; s++) 0 != n[s].indexOf("overflow") && 0 != n[s].indexOf("padding") && 0 != n[s].indexOf("border") && 0 != n[s].indexOf("outline") && 0 != n[s].indexOf("box-shadow") && 0 != n[s].indexOf("background") || (o += n[s] + ": " + n.getPropertyValue(n[s]) + "; ");
755                    (t = document.createElement("div")).style.cssText = o + " box-sizing: border-box; width: " + e.offsetWidth + "px;", e.insertBefore(t, e.firstChild);
756                    var i = e.childNodes.length;
757                    for (s = 1; s < i; s++) t.appendChild(e.childNodes[1]);
758                    e.style.height = t.getBoundingClientRect().height + "px", e.style.padding = "0", e.style.border = "0"
759                }
760                var a = e.getBoundingClientRect(),
761                    r = Math.round(a.top + t.getBoundingClientRect().height - document.querySelector(".catalog__recently").getBoundingClientRect().top - 0);
762                if (null !== document.querySelector(".detail_section_text")) r = Math.round(a.top + t.getBoundingClientRect().height - document.querySelector(".detail_section_text").getBoundingClientRect().top + 48);
763                if (null !== document.querySelector(".pagination")) r = Math.round(a.top + t.getBoundingClientRect().height - document.querySelector(".pagination").getBoundingClientRect().top + 30);
764                a.top - 200 <= 0 ? a.top - 200 <= r ? (t.className = "stop", t.style.top = -r + "px") : (t.className = "sticky", t.style.top = "200px") : (t.className = "", t.style.top = ""), window.addEventListener("resize", function () {
765                    e.children[0].style.width = getComputedStyle(e, "").width
766                }, !1)
767            }
768        }
769
770        window.addEventListener("scroll", n, !1), document.body.addEventListener("scroll", n, !1)
771    }()
772});
773const searchTrigger = debounce(function (e, t) {
774    searchAction(e, t)
775}, 200);
776
777function searchAction(e, t) {
778    let n = e.value.toLowerCase();
779    t.forEach(e => {
780        e.innerText.toLowerCase().includes(n) ? e.removeAttribute("hidden") : e.setAttribute("hidden", "")
781    })
782}
783
784var cityVariants = document.querySelector(".shop-variants");
785
786function radioCityVariants(e) {
787    e && e.addEventListener("click", t => {
788        let n = t.target;
789        e.classList.contains("open") ? e.classList.remove("open") : e.classList.add("open"), n == e.querySelector(".search") && e.classList.add("open")
790    })
791}
792
793var accordionDelivery = document.getElementById("bx-soa-order-form");
794if (accordionDelivery && radioCityVariants(cityVariants), document.addEventListener("click", e => {
795    let t = e.target, n = t == cityVariants || cityVariants?.contains(t), o = cityVariants?.classList.contains("open");
796    !n && o && cityVariants.classList.remove("open")
797}), window.innerWidth < 768) {
798    console.log('hide');
799    let e = window.pageYOffset;
800    window.onscroll = function () {
801        var t = window.pageYOffset;
802        e > t ? (document.querySelector(".header").style.top = "0", document.querySelector('.title-search-result').style.height= "auto", document.querySelector("#menuCatalog").style.top = "110px", document.querySelector(".menuCatalog.o
802pened").style.padding = "20px") : (document.querySelector(".header").style.top = "-280px", document.querySelector('.title-search-result').style.height= "0px", document.querySelector("#menuCatalog").style.top = "0"), e = t
803    }
804}
805$(document).ready(function () {
806    const e = document.querySelectorAll(".badge-info_icon"), t = document.querySelectorAll(".badge_description"),
807        n = document.body;
808    e.forEach(e => {
809        e.addEventListener("click", n => {
810            const o = e.closest(".badge").querySelector(".badge_description");
811            n.target.closest(".badge").querySelector(".badge_description").classList.contains("active") ? t.forEach(e => {
812                e.classList.remove("active")
813            }) : (t.forEach(e => {
814                e.classList.remove("active")
815            }), o.classList.add("active"))
816        })
817    }), n.addEventListener("click", e => {
818        e.target.closest(".badge-info_icon") || t.forEach(e => {
819            e.classList.remove("active")
820        })
821    })
822});
823document.querySelectorAll('.tab-btn').forEach(btn => {
824    btn.addEventListener('click', function() {
825        document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
826        document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
827        this.classList.add('active');
828        document.getElementById(this.dataset.tab).classList.add('active');
829    });
830});

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.