1const SwiperManager = (() => { 2 const SELECTOR = [ 3 '.swiper-1', 4 '.swiper-2', 5 '.swiper-3', 6 '.swiper-4', 7 '.swiper-5', 8 '.swiper-6', 9 '.swiper-7', 10 '.swiper-auto', 11 '.swiper-center', 12 '.mySwiper2' 13 ].join(','); 14 15 const CONFIG = { 16 'swiper-1': { 17 slidesPerView: 1, 18 loop: true, 19 noSwiping: true, 20 autoHeight: true, 21 autoplay: { 22 delay: 5000, 23 disableOnInteraction: true 24 } 25 }, 26 27 'swiper-2': { 28 slidesPerView: 2, 29 spaceBetween: 30, 30 loop: false, 31 breakpoints: { 32 1024: { slidesPerView: 2, spaceBetween: 30 }, 33 880: { slidesPerView: 2, spaceBetween: 20 }, 34 675: { slidesPerView: 2, spaceBetween: 20 }, 35 460: { 36 slidesPerView: 'auto', 37 spaceBetween: 18, 38 slidesOffsetBefore: 15, 39 slidesOffsetAfter: 15 40 }, 41 320: { 42 slidesPerView: 'auto', 43 spaceBetween: 18, 44 slidesOffsetBefore: 15, 45 slidesOffsetAfter: 15 46 } 47 } 48 }, 49 50 'swiper-3': { 51 slidesPerView: 3, 52 spaceBetween: 20, 53 loop: false, 54 breakpoints: { 55 1024: { slidesPerView: 3, spaceBetween: 20 }, 56 900: { slidesPerView: 3, spaceBetween: 20 }, 57 675: { slidesPerView: 2, spaceBetween: 20 }, 58 460: { 59 slidesPerView: 'auto', 60 spaceBetween: 18, 61 slidesOffsetBefore: 10, 62 slidesOffsetAfter: 10 63 }, 64 320: { 65 slidesPerView: 'auto', 66 spaceBetween: 18, 67 slidesOffsetBefore: 10, 68 slidesOffsetAfter: 10 69 } 70 } 71 }, 72 73 'swiper-4': { 74 slidesPerView: 4, 75 spaceBetween: 34, 76 watchOverflow: true, 77 breakpoints: { 78 1300: { slidesPerView: 4, spaceBetween: 18 }, 79 1024: { slidesPerView: 3, spaceBetween: 18 }, 80 940: { slidesPerView: 2, spaceBetween: 18 }, 81 675: { slidesPerView: 2, spaceBetween: 18 }, 82 460: { 83 slidesPerView: 'auto', 84 spaceBetween: 20, 85 slidesOffsetBefore: 10, 86 slidesOffsetAfter: 10 87 }, 88 320: { 89 slidesPerView: 'auto', 90 spaceBetween: 20, 91 slidesOffsetBefore: 10, 92 slidesOffsetAfter: 10 93 } 94 } 95 }, 96 97 'swiper-5': { 98 slidesPerView: 5, 99 spaceBetween: 34, 100 watchOverflow: true, 101 breakpoints: { 102 1300: { slidesPerView: 5, spaceBetween: 24 }, 103 1024: { slidesPerView: 4, spaceBetween: 18 }, 104 940: { slidesPerView: 3, spaceBetween: 18 }, 105 675: { slidesPerView: 3, spaceBetween: 18 }, 106 460: { 107 slidesPerView: 'auto', 108 spaceBetween: 14, 109 slidesOffsetBefore: 10, 110 slidesOffsetAfter: 10 111 }, 112 320: { 113 slidesPerView: 'auto', 114 spaceBetween: 14, 115 slidesOffsetBefore: 10, 116 slidesOffsetAfter: 10 117 } 118 } 119 }, 120 121 'swiper-6': { 122 slidesPerView: 6, 123 spaceBetween: 34, 124 loop: false, 125 watchOverflow: true, 126 breakpoints: { 127 1190: { slidesPerView: 6, spaceBetween: 20 }, 128 940: { slidesPerView: 4, spaceBetween: 15 }, 129 675: { slidesPerView: 3, spaceBetween: 15 }, 130 460: { 131 slidesPerView: 'auto', 132 spaceBetween: 20, 133 slidesOffsetBefore: 10, 134 slidesOffsetAfter: 10 135 }, 136 320: { 137 slidesPerView: 'auto', 138 spaceBetween: 20, 139 slidesOffsetBefore: 10, 140 slidesOffsetAfter: 10 141 } 142 } 143 }, 144 145 'swiper-7': { 146 slidesPerView: 7, 147 spaceBetween: 34, 148 loop: true, 149 watchOverflow: true, 150 breakpoints: { 151 1190: { slidesPerView: 7, spaceBetween: 20 }, 152 940: { slidesPerView: 4, spaceBetween: 15 }, 153 675: { slidesPerView: 2, spaceBetween: 15 }, 154 460: { 155 slidesPerView: 'auto', 156 spaceBetween: 15, 157 slidesOffsetBefore: 10, 158 slidesOffsetAfter: 10 159 }, 160 320: { 161 slidesPerView: 'auto', 162 spaceBetween: 15, 163 slidesOffsetBefore: 10, 164 slidesOffsetAfter: 10 165 } 166 } 167 }, 168 169 'swiper-auto': { 170 slidesPerView: 'auto', 171 loop: false, 172 spaceBetween: 20, 173 slidesOffsetBefore: 70, 174 slidesOffsetAfter: 70, 175 breakpoints: { 176 940: { 177 slidesOffsetBefore: 20, 178 slidesOffsetAfter: 20 179 } 180 } 181 }, 182 183 'mySwiper': { 184 loop: true, 185 spaceBetween: 10, 186 slidesPerView: 6, 187 freeMode: true, 188 watchSlidesVisibility: true, 189 watchSlidesProgress: true, 190 }, 191 192 'mySwiper2': { 193 loop: true, 194 spaceBetween: 10, 195 navigation: { 196 nextEl: ".swiper-button-next", 197 prevEl: ".swiper-button-prev", 198 }, 199 thumbs: 'mySwiper' 200 } 201 }; 202 203 function init(root = document) {
204 root.querySelectorAll(SELECTOR).forEach(setup); 205 } 206 207 function setup(el) { 208 if (el.swiper || el.dataset.swiperReady) return; 209 210 el.dataset.swiperReady = '1'; 211 observer.observe(el); 212 } 213 214 function activate(el) { 215 console.debug('[SwiperManager] Activando', el); 216 if (!el || el.swiper) return; 217 218 const type = [...el.classList].find(className => CONFIG[className]); 219 220 if (!type) return; 221 222 const config = { 223 ...CONFIG[type], 224 pagination: { 225 el: el.querySelector('.swiper-pagination'), 226 clickable: true 227 } 228 }; 229 230 if (config.thumbs) { 231 const thumbsEl = el.parentElement.querySelector(`.${config.thumbs}`); 232 const thumbs = new Swiper(thumbsEl, CONFIG[config.thumbs]); 233 234 config.thumbs = { swiper: thumbs }; 235 } 236 237 config.navigation = { 238 nextEl: el.querySelector('.swiper-button-next'), 239 prevEl: el.querySelector('.swiper-button-prev') 240 }; 241 242 new Swiper(el, config); 243 } 244 245 const observer = new IntersectionObserver(entries => { 246 entries.forEach(entry => { 247 if (entry.isIntersecting) { 248 activate(entry.target); 249 observer.unobserve(entry.target); 250 } 251 }); 252 }, { 253 rootMargin: '400px 0px' 254 }); 255 256 return { init, activate }; 257})();
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.