1var initSliderTabsTeam = async function () { 2 if (typeof Swiper !== 'function') { 3 if (!document.querySelector("link[href='/res/js/swiper/swiper-bundle.css']")) { 4 lazy.loadScript('/res/js/swiper/swiper-bundle.css'); 5 } 6 await lazy.loadScript('/res/js/swiper/swiper-bundle.min.js'); 7 } 8 9 tabsWithOnDemandSwiper(); 10}; 11 12const createSwiper = (el) => { 13 const parent = el.closest('.slider'); 14 const swiper = new Swiper(el, { 15 speed: 600, 16 spaceBetween: 20, 17 slidesPerView: 1, 18 loop: true, 19 autoplay: { 20 delay: 2000, 21 disableOnInteraction: false, 22 }, 23 breakpoints: { 24 768: { slidesPerView: 4 }, 25 1280: { slidesPerView: 5 }, 26 }, 27 navigation: { 28 nextEl: parent.querySelector('.button-next'), 29 prevEl: parent.querySelector('.button-prev'), 30 }, 31 observer: true, 32 observeParents: true, 33 on: { 34 init(sw) { 35 setTimeout(() => { 36 sw.update(); 37 sw.autoplay?.start(); 38 }, 0); 39 } 40 } 41 }); 42 return swiper; 43}; 44 45const tabsWithOnDemandSwiper = () => { 46 const tabs = document.querySelectorAll('[data-tab]'); 47 const sliders = document.querySelectorAll('[data-tabs]'); 48 let currentSwiper = null; 49 let currentEl = null; 50 51 tabs[0]?.classList.add('active'); 52 sliders.forEach((c, i) => { 53 if (i === 0) { 54 c.classList.remove('hidden'); 55 currentEl = c; 56 currentSwiper = createSwiper(c); 57 } else { 58 c.classList.add('hidden'); 59 } 60 }); 61
62 tabs.forEach(tab => { 63 tab.addEventListener('click', (e) => { 64 e.preventDefault(); 65 const index = tab.getAttribute('data-tab'); 66 const nextEl = document.querySelector(`[data-tabs="${index}"]`); 67 if (!nextEl || nextEl === currentEl) return; 68 69 tabs.forEach(t => t.classList.remove('active')); 70 tab.classList.add('active'); 71 sliders.forEach(c => c.classList.add('hidden')); 72 nextEl.classList.remove('hidden'); 73 74 if (currentSwiper && !currentSwiper.destroyed) { 75 currentSwiper.destroy(true, true); 76 } 77 currentEl = nextEl; 78 currentSwiper = createSwiper(nextEl); 79 }); 80 }); 81};
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.