1/** 2 * Swiper 11.0.7 3 * Most modern mobile touch slider and framework with hardware accelerated transitions 4 * https://swiperjs.com 5 * 6 * Copyright 2014-2024 Vladimir Kharlampidi 7 * 8 * Released under the MIT License 9 * 10 * Released on: February 27, 2024 11 */ 12 13var Swiper = (function () { 14 'use strict'; 15 function e(e) { 16 return null !== e && 'object' == typeof e && 'constructor' in e && e.constructor === Object; 17 } 18 function t(s, a) { 19 void 0 === s && (s = {}), 20 void 0 === a && (a = {}), 21 Object.keys(a).forEach((i) => { 22 void 0 === s[i] ? (s[i] = a[i]) : e(a[i]) && e(s[i]) && Object.keys(a[i]).length > 0 && t(s[i], a[i]); 23 }); 24 } 25 const s = { 26 body: {}, 27 addEventListener() {}, 28 removeEventListener() {}, 29 activeElement: { blur() {}, nodeName: '' }, 30 querySelector: () => null, 31 querySelectorAll: () => [], 32 getElementById: () => null, 33 createEvent: () => ({ initEvent() {} }), 34 createElement: () => ({ 35 children: [], 36 childNodes: [], 37 style: {}, 38 setAttribute() {}, 39 getElementsByTagName: () => [], 40 }), 41 createElementNS: () => ({}), 42 importNode: () => null, 43 location: { hash: '', host: '', hostname: '', href: '', origin: '', pathname: '', protocol: '', search: '' }, 44 }; 45 function a() { 46 const e = 'undefined' != typeof document ? document : {}; 47 return t(e, s), e; 48 } 49 const i = { 50 document: s, 51 navigator: { userAgent: '' }, 52 location: { hash: '', host: '', hostname: '', href: '', origin: '', pathname: '', protocol: '', search: '' }, 53 history: { replaceState() {}, pushState() {}, go() {}, back() {} }, 54 CustomEvent: function () { 55 return this; 56 }, 57 addEventListener() {}, 58 removeEventListener() {}, 59 getComputedStyle: () => ({ getPropertyValue: () => '' }), 60 Image() {}, 61 Date() {}, 62 screen: {}, 63 setTimeout() {}, 64 clearTimeout() {}, 65 matchMedia: () => ({}), 66 requestAnimationFrame: (e) => ('undefined' == typeof setTimeout ? (e(), null) : setTimeout(e, 0)), 67 cancelAnimationFrame(e) { 68 'undefined' != typeof setTimeout && clearTimeout(e); 69 }, 70 }; 71 function r() { 72 const e = 'undefined' != typeof window ? window : {}; 73 return t(e, i), e; 74 } 75 function n(e) { 76 return ( 77 void 0 === e && (e = ''), 78 e 79 .trim() 80 .split(' ') 81 .filter((e) => !!e.trim()) 82 ); 83 } 84 function l(e, t) { 85 return void 0 === t && (t = 0), setTimeout(e, t); 86 } 87 function o() { 88 return Date.now(); 89 } 90 function d(e, t) { 91 void 0 === t && (t = 'x'); 92 const s = r(); 93 let a, i, n; 94 const l = (function (e) { 95 const t = r(); 96 let s; 97 return ( 98 t.getComputedStyle && (s = t.getComputedStyle(e, null)), 99 !s && e.currentStyle && (s = e.currentStyle), 100 s || (s = e.style), 101 s 102 ); 103 })(e); 104 return ( 105 s.WebKitCSSMatrix 106 ? ((i = l.transform || l.webkitTransform), 107 i.split(',').length > 6 && 108 (i = i 109 .split(', ') 110 .map((e) => e.replace(',', '.')) 111 .join(', ')), 112 (n = new s.WebKitCSSMatrix('none' === i ? '' : i))) 113 : ((n = 114 l.MozTransform || 115 l.OTransform || 116 l.MsTransform || 117 l.msTransform || 118 l.transform || 119 l.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,')), 120 (a = n.toString().split(','))), 121 'x' === t && (i = s.WebKitCSSMatrix ? n.m41 : 16 === a.length ? parseFloat(a[12]) : parseFloat(a[4])), 122 'y' === t && (i = s.WebKitCSSMatrix ? n.m42 : 16 === a.length ? parseFloat(a[13]) : parseFloat(a[5])), 123 i || 0 124 ); 125 } 126 function c(e) { 127 return ( 128 'object' == typeof e && null !== e && e.constructor && 'Object' === Object.prototype.toString.call(e).slice(8, -1) 129 ); 130 } 131 function p() { 132 const e = Object(arguments.length <= 0 ? void 0 : arguments[0]), 133 t = ['__proto__', 'constructor', 'prototype']; 134 for (let a = 1; a < arguments.length; a += 1) { 135 const i = a < 0 || arguments.length <= a ? void 0 : arguments[a]; 136 if ( 137 null != i && 138 ((s = i), 139 !('undefined' != typeof window && void 0 !== window.HTMLElement 140 ? s instanceof HTMLElement 141 : s && (1 === s.nodeType || 11 === s.nodeType))) 142 ) { 143 const s = Object.keys(Object(i)).filter((e) => t.indexOf(e) < 0); 144 for (let t = 0, a = s.length; t < a; t += 1) { 145 const a = s[t], 146 r = Object.getOwnPropertyDescriptor(i, a); 147 void 0 !== r && 148 r.enumerable && 149 (c(e[a]) && c(i[a]) 150 ? i[a].__swiper__ 151 ? (e[a] = i[a]) 152 : p(e[a], i[a]) 153 : !c(e[a]) && c(i[a]) 154 ? ((e[a] = {}), i[a].__swiper__ ? (e[a] = i[a]) : p(e[a], i[a])) 155 : (e[a] = i[a])); 156 } 157 } 158 } 159 var s; 160 return e; 161 } 162 function u(e, t, s) { 163 e.style.setProperty(t, s); 164 } 165 function m(e) { 166 let { swiper: t, targetPosition: s, side: a } = e; 167 const i = r(), 168 n = -t.translate; 169 let l, 170 o = null; 171 const d = t.params.speed; 172 (t.wrapperEl.style.scrollSnapType = 'none'), i.cancelAnimationFrame(t.cssModeFrameID); 173 const c = s > n ? 'next' : 'prev', 174 p = (e, t) => ('next' === c && e >= t) || ('prev' === c && e <= t), 175 u = () => { 176 (l = new Date().getTime()), null === o && (o = l); 177 const e = Math.max(Math.min((l - o) / d, 1), 0), 178 r = 0.5 - Math.cos(e * Math.PI) / 2; 179 let c = n + r * (s - n); 180 if ((p(c, s) && (c = s), t.wrapperEl.scrollTo({ [a]: c }), p(c, s))) 181 return ( 182 (t.wrapperEl.style.overflow = 'hidden'), 183 (t.wrapperEl.style.scrollSnapType = ''), 184 setTimeout(() => { 185 (t.wrapperEl.style.overflow = ''), t.wrapperEl.scrollTo({ [a]: c }); 186 }), 187 void i.cancelAnimationFrame(t.cssModeFrameID) 188 ); 189 t.cssModeFrameID = i.requestAnimationFrame(u); 190 }; 191 u(); 192 } 193 function h(e) { 194 return ( 195 e.querySelector('.swiper-slide-transform') || 196 (e.shadowRoot && e.shadowRoot.querySelector('.swiper-slide-transform')) || 197 e 198 ); 199 } 200 function f(e, t) { 201 return void 0 === t && (t = ''), [...e.children].filter((e) => e.matches(t)); 202 } 203 function g(e) { 204 try { 205 return void console.warn(e); 206 } catch (e) {} 207 } 208 function v(e, t) { 209 void 0 === t && (t = []); 210 const s = document.createElement(e); 211 return s.classList.add(...(Array.isArray(t) ? t : n(t))), s; 212 } 213 function w(e) { 214 const t = r(), 215 s = a(), 216 i = e.getBoundingClientRect(), 217 n = s.body, 218 l = e.clientTop || n.clientTop || 0, 219 o = e.clientLeft || n.clientLeft || 0, 220 d = e === t ? t.scrollY : e.scrollTop, 221 c = e === t ? t.scrollX : e.scrollLeft; 222 return { top: i.top + d - l, left: i.left + c - o }; 223 } 224 function b(e, t) { 225 return r().getComputedStyle(e, null).getPropertyValue(t); 226 } 227 function y(e) { 228 let t, 229 s = e; 230 if (s) { 231 for (t = 0; null !== (s = s.previousSibling); ) 1 === s.nodeType && (t += 1); 232 return t; 233 } 234 } 235 function E(e, t) { 236 const s = []; 237 let a = e.parentElement; 238 for (; a; ) t ? a.matches(t) && s.push(a) : s.push(a), (a = a.parentElement); 239 return s; 240 } 241 function x(e, t) { 242 t && 243 e.addEventListener('transitionend', function s(a) { 244 a.target === e && (t.call(e, a), e.removeEventListener('transitionend', s)); 245 }); 246 } 247 function S(e, t, s) { 248 const a = r(); 249 return s 250 ? e['width' === t ? 'offsetWidth' : 'offsetHeight'] + 251 parseFloat(a.getComputedStyle(e, null).getPropertyValue('width' === t ? 'margin-right' : 'margin-top')) + 252 parseFloat(a.getComputedStyle(e, null).getPropertyValue('width' === t ? 'margin-left' : 'margin-bottom')) 253 : e.offsetWidth; 254 } 255 function T(e) { 256 return (Array.isArray(e) ? e : [e]).filter((e) => !!e); 257 } 258 let M, C, P; 259 function L() { 260 return ( 261 M || 262 (M = (function () { 263 const e = r(), 264 t = a(); 265 return { 266 smoothScroll: t.documentElement && t.documentElement.style && 'scrollBehavior' in t.documentElement.style, 267 touch: !!('ontouchstart' in e || (e.DocumentTouch && t instanceof e.DocumentTouch)), 268 }; 269 })()), 270 M 271 ); 272 } 273 function I(e) { 274 return ( 275 void 0 === e && (e = {}), 276 C || 277 (C = (function (e) { 278 let { userAgent: t } = void 0 === e ? {} : e; 279 const s = L(), 280 a = r(), 281 i = a.navigator.platform, 282 n = t || a.navigator.userAgent, 283 l = { ios: !1, android: !1 }, 284 o = a.screen.width, 285 d = a.screen.height, 286 c = n.match(/(Android);?[\s\/]+([\d.]+)?/); 287 let p = n.match(/(iPad).*OS\s([\d_]+)/); 288 const u = n.match(/(iPod)(.*OS\s([\d_]+))?/), 289 m = !p && n.match(/(iPhone\sOS|iOS)\s([\d_]+)/), 290 h = 'Win32' === i; 291 let f = 'MacIntel' === i; 292 return ( 293 !p && 294 f && 295 s.touch && 296 [ 297 '1024x1366', 298 '1366x1024', 299 '834x1194', 300 '1194x834', 301 '834x1112', 302 '1112x834', 303 '768x1024', 304 '1024x768', 305 '820x1180', 306 '1180x820', 307 '810x1080', 308 '1080x810', 309 ].indexOf(`${o}x${d}`) >= 0 && 310 ((p = n.match(/(Version)\/([\d.]+)/)), p || (p = [0, 1, '13_0_0']), (f = !1)), 311 c && !h && ((l.os = 'android'), (l.android = !0)), 312 (p || m || u) && ((l.os = 'ios'), (l.ios = !0)), 313 l 314 ); 315 })(e)), 316 C 317 ); 318 } 319 function z() { 320 return ( 321 P || 322 (P = (function () { 323 const e = r(), 324 t = I(); 325 let s = !1; 326 function a() { 327 const t = e.navigator.userAgent.toLowerCase(); 328 return t.indexOf('safari') >= 0 && t.indexOf('chrome') < 0 && t.indexOf('android') < 0; 329 } 330 if (a()) { 331 const t = String(e.navigator.userAgent); 332 if (t.includes('Version/')) { 333 const [e, a] = t 334 .split('Version/')[1] 335 .split(' ')[0] 336 .split('.') 337 .map((e) => Number(e)); 338 s = e < 16 || (16 === e && a < 2); 339 } 340 }
341 const i = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent), 342 n = a(); 343 return { isSafari: s || n, needPerspectiveFix: s, need3dFix: n || (i && t.ios), isWebView: i }; 344 })()), 345 P 346 ); 347 } 348 var A = { 349 on(e, t, s) { 350 const a = this; 351 if (!a.eventsListeners || a.destroyed) return a; 352 if ('function' != typeof t) return a; 353 const i = s ? 'unshift' : 'push'; 354 return ( 355 e.split(' ').forEach((e) => { 356 a.eventsListeners[e] || (a.eventsListeners[e] = []), a.eventsListeners[e][i](t); 357 }), 358 a 359 ); 360 }, 361 once(e, t, s) { 362 const a = this; 363 if (!a.eventsListeners || a.destroyed) return a; 364 if ('function' != typeof t) return a; 365 function i() { 366 a.off(e, i), i.__emitterProxy && delete i.__emitterProxy; 367 for (var s = arguments.length, r = new Array(s), n = 0; n < s; n++) r[n] = arguments[n]; 368 t.apply(a, r); 369 } 370 return (i.__emitterProxy = t), a.on(e, i, s); 371 }, 372 onAny(e, t) { 373 const s = this; 374 if (!s.eventsListeners || s.destroyed) return s; 375 if ('function' != typeof e) return s; 376 const a = t ? 'unshift' : 'push'; 377 return s.eventsAnyListeners.indexOf(e) < 0 && s.eventsAnyListeners[a](e), s; 378 }, 379 offAny(e) { 380 const t = this; 381 if (!t.eventsListeners || t.destroyed) return t; 382 if (!t.eventsAnyListeners) return t; 383 const s = t.eventsAnyListeners.indexOf(e); 384 return s >= 0 && t.eventsAnyListeners.splice(s, 1), t; 385 }, 386 off(e, t) { 387 const s = this; 388 return !s.eventsListeners || s.destroyed 389 ? s 390 : s.eventsListeners 391 ? (e.split(' ').forEach((e) => { 392 void 0 === t 393 ? (s.eventsListeners[e] = []) 394 : s.eventsListeners[e] && 395 s.eventsListeners[e].forEach((a, i) => { 396 (a === t || (a.__emitterProxy && a.__emitterProxy === t)) && s.eventsListeners[e].splice(i, 1); 397 }); 398 }), 399 s) 400 : s; 401 }, 402 emit() { 403 const e = this; 404 if (!e.eventsListeners || e.destroyed) return e; 405 if (!e.eventsListeners) return e; 406 let t, s, a; 407 for (var i = arguments.length, r = new Array(i), n = 0; n < i; n++) r[n] = arguments[n]; 408 'string' == typeof r[0] || Array.isArray(r[0]) 409 ? ((t = r[0]), (s = r.slice(1, r.length)), (a = e)) 410 : ((t = r[0].events), (s = r[0].data), (a = r[0].context || e)), 411 s.unshift(a); 412 return (
413 (Array.isArray(t) ? t : t.split(' ')).forEach((t) => { 414 e.eventsAnyListeners && 415 e.eventsAnyListeners.length && 416 e.eventsAnyListeners.forEach((e) => { 417 e.apply(a, [t, ...s]); 418 }), 419 e.eventsListeners && 420 e.eventsListeners[t] && 421 e.eventsListeners[t].forEach((e) => { 422 e.apply(a, s); 423 }); 424 }), 425 e 426 ); 427 }, 428 }; 429 const $ = (e, t) => { 430 if (!e || e.destroyed || !e.params) return; 431 const s = t.closest(e.isElement ? 'swiper-slide' : `.${e.params.slideClass}`); 432 if (s) { 433 let t = s.querySelector(`.${e.params.lazyPreloaderClass}`); 434 !t && 435 e.isElement && 436 (s.shadowRoot 437 ? (t = s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`)) 438 : requestAnimationFrame(() => { 439 s.shadowRoot && ((t = s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`)), t && t.remove()); 440 })), 441 t && t.remove(); 442 } 443 }, 444 k = (e, t) => { 445 if (!e.slides[t]) return; 446 const s = e.slides[t].querySelector('[loading="lazy"]'); 447 s && s.removeAttribute('loading'); 448 }, 449 O = (e) => { 450 if (!e || e.destroyed || !e.params) return; 451 let t = e.params.lazyPreloadPrevNext; 452 const s = e.slides.length; 453 if (!s || !t || t < 0) return; 454 t = Math.min(t, s); 455 const a = 'auto' === e.params.slidesPerView ? e.slidesPerViewDynamic() : Math.ceil(e.params.slidesPerView), 456 i = e.activeIndex; 457 if (e.params.grid && e.params.grid.rows > 1) { 458 const s = i, 459 r = [s - t]; 460 return ( 461 r.push(...Array.from({ length: t }).map((e, t) => s + a + t)), 462 void e.slides.forEach((t, s) => { 463 r.includes(t.column) && k(e, s); 464 }) 465 ); 466 } 467 const r = i + a - 1; 468 if (e.params.rewind || e.params.loop) 469 for (let a = i - t; a <= r + t; a += 1) { 470 const t = ((a % s) + s) % s; 471 (t < i || t > r) && k(e, t); 472 } 473 else for (let a = Math.max(i - t, 0); a <= Math.min(r + t, s - 1); a += 1) a !== i && (a > r || a < i) && k(e, a); 474 }; 475 var D = { 476 updateSize: function () { 477 const e = this; 478 let t, s; 479 const a = e.el; 480 (t = void 0 !== e.params.width && null !== e.params.width ? e.params.width : a.clientWidth), 481 (s = void 0 !== e.params.height && null !== e.params.height ? e.params.height : a.clientHeight), 482 (0 === t && e.isHorizontal()) || 483 (0 === s && e.isVertical()) || 484 ((t = t - parseInt(b(a, 'padding-left') || 0, 10) - parseInt(b(a, 'padding-right') || 0, 10)), 485 (s = s - parseInt(b(a, 'padding-top') || 0, 10) - parseInt(b(a, 'padding-bottom') || 0, 10)), 486 Number.isNaN(t) && (t = 0), 487 Number.isNaN(s) && (s = 0), 488 Object.assign(e, { width: t, height: s, size: e.isHorizontal() ? t : s })); 489 }, 490 updateSlides: function () { 491 const e = this; 492 function t(t, s) { 493 return parseFloat(t.getPropertyValue(e.getDirectionLabel(s)) || 0); 494 } 495 const s = e.params, 496 { wrapperEl: a, slidesEl: i, size: r, rtlTranslate: n, wrongRTL: l } = e, 497 o = e.virtual && s.virtual.enabled, 498 d = o ? e.virtual.slides.length : e.slides.length, 499 c = f(i, `.${e.params.slideClass}, swiper-slide`), 500 p = o ? e.virtual.slides.length : c.length; 501 let m = []; 502 const h = [], 503 g = []; 504 let v = s.slidesOffsetBefore; 505 'function' == typeof v && (v = s.slidesOffsetBefore.call(e)); 506 let w = s.slidesOffsetAfter; 507 'function' == typeof w && (w = s.slidesOffsetAfter.call(e)); 508 const y = e.snapGrid.length, 509 E = e.slidesGrid.length; 510 let x = s.spaceBetween, 511 T = -v, 512 M = 0, 513 C = 0; 514 if (void 0 === r) return; 515 'string' == typeof x && x.indexOf('%') >= 0 516 ? (x = (parseFloat(x.replace('%', '')) / 100) * r) 517 : 'string' == typeof x && (x = parseFloat(x)), 518 (e.virtualSize = -x),
519 c.forEach((e) => { 520 n ? (e.style.marginLeft = '') : (e.style.marginRight = ''), 521 (e.style.marginBottom = ''), 522 (e.style.marginTop = ''); 523 }), 524 s.centeredSlides && 525 s.cssMode && 526 (u(a, '--swiper-centered-offset-before', ''), u(a, '--swiper-centered-offset-after', '')); 527 const P = s.grid && s.grid.rows > 1 && e.grid; 528 let L; 529 P ? e.grid.initSlides(c) : e.grid && e.grid.unsetSlides(); 530 const I = 531 'auto' === s.slidesPerView && 532 s.breakpoints && 533 Object.keys(s.breakpoints).filter((e) => void 0 !== s.breakpoints[e].slidesPerView).length > 0; 534 for (let a = 0; a < p; a += 1) { 535 let i; 536 if (((L = 0), c[a] && (i = c[a]), P && e.grid.updateSlide(a, i, c), !c[a] || 'none' !== b(i, 'display'))) { 537 if ('auto' === s.slidesPerView) { 538 I && (c[a].style[e.getDirectionLabel('width')] = ''); 539 const r = getComputedStyle(i), 540 n = i.style.transform, 541 l = i.style.webkitTransform; 542 if ((n && (i.style.transform = 'none'), l && (i.style.webkitTransform = 'none'), s.roundLengths)) 543 L = e.isHorizontal() ? S(i, 'width', !0) : S(i, 'height', !0); 544 else { 545 const e = t(r, 'width'), 546 s = t(r, 'padding-left'), 547 a = t(r, 'padding-right'), 548 n = t(r, 'margin-left'), 549 l = t(r, 'margin-right'), 550 o = r.getPropertyValue('box-sizing'); 551 if (o && 'border-box' === o) L = e + n + l; 552 else { 553 const { clientWidth: t, offsetWidth: r } = i; 554 L = e + s + a + n + l + (r - t); 555 } 556 } 557 n && (i.style.transform = n), l && (i.style.webkitTransform = l), s.roundLengths && (L = Math.floor(L)); 558 } else 559 (L = (r - (s.slidesPerView - 1) * x) / s.slidesPerView), 560 s.roundLengths && (L = Math.floor(L)), 561 c[a] && (c[a].style[e.getDirectionLabel('width')] = `${L}px`); 562 c[a] && (c[a].swiperSlideSize = L), 563 g.push(L), 564 s.centeredSlides 565 ? ((T = T + L / 2 + M / 2 + x), 566 0 === M && 0 !== a && (T = T - r / 2 - x), 567 0 === a && (T = T - r / 2 - x), 568 Math.abs(T) < 0.001 && (T = 0), 569 s.roundLengths && (T = Math.floor(T)), 570 C % s.slidesPerGroup == 0 && m.push(T), 571 h.push(T)) 572 : (s.roundLengths && (T = Math.floor(T)), 573 (C - Math.min(e.params.slidesPerGroupSkip, C)) % e.params.slidesPerGroup == 0 && m.push(T), 574 h.push(T), 575 (T = T + L + x)), 576 (e.virtualSize += L + x), 577 (M = L), 578 (C += 1); 579 } 580 } 581 if ( 582 ((e.virtualSize = Math.max(e.virtualSize, r) + w), 583 n && l && ('slide' === s.effect || 'coverflow' === s.effect) && (a.style.width = `${e.virtualSize + x}px`), 584 s.setWrapperSize && (a.style[e.getDirectionLabel('width')] = `${e.virtualSize + x}px`), 585 P && e.grid.updateWrapperSize(L, m), 586 !s.centeredSlides) 587 ) { 588 const t = []; 589 for (let a = 0; a < m.length; a += 1) { 590 let i = m[a]; 591 s.roundLengths && (i = Math.floor(i)), m[a] <= e.virtualSize - r && t.push(i); 592 } 593 (m = t), Math.floor(e.virtualSize - r) - Math.floor(m[m.length - 1]) > 1 && m.push(e.virtualSize - r); 594 } 595 if (o && s.loop) { 596 const t = g[0] + x; 597 if (s.slidesPerGroup > 1) { 598 const a = Math.ceil((e.virtual.slidesBefore + e.virtual.slidesAfter) / s.slidesPerGroup), 599 i = t * s.slidesPerGroup; 600 for (let e = 0; e < a; e += 1) m.push(m[m.length - 1] + i); 601 } 602 for (let a = 0; a < e.virtual.slidesBefore + e.virtual.slidesAfter; a += 1) 603 1 === s.slidesPerGroup && m.push(m[m.length - 1] + t), h.push(h[h.length - 1] + t), (e.virtualSize += t); 604 } 605 if ((0 === m.length && (m = [0]), 0 !== x)) { 606 const t = e.isHorizontal() && n ? 'marginLeft' : e.getDirectionLabel('marginRight'); 607 c.filter((e, t) =>
607 !(s.cssMode && !s.loop) || t !== c.length - 1).forEach((e) => { 608 e.style[t] = `${x}px`; 609 }); 610 } 611 if (s.centeredSlides && s.centeredSlidesBounds) { 612 let e = 0; 613 g.forEach((t) => { 614 e += t + (x || 0); 615 }), 616 (e -= x); 617 const t = e - r; 618 m = m.map((e) => (e <= 0 ? -v : e > t ? t + w : e)); 619 } 620 if (s.centerInsufficientSlides) { 621 let e = 0; 622 if ( 623 (g.forEach((t) => { 624 e += t + (x || 0); 625 }), 626 (e -= x), 627 e < r) 628 ) { 629 const t = (r - e) / 2; 630 m.forEach((e, s) => { 631 m[s] = e - t; 632 }), 633 h.forEach((e, s) => { 634 h[s] = e + t; 635 }); 636 } 637 } 638 if ( 639 (Object.assign(e, { slides: c, snapGrid: m, slidesGrid: h, slidesSizesGrid: g }), 640 s.centeredSlides && s.cssMode && !s.centeredSlidesBounds) 641 ) { 642 u(a, '--swiper-centered-offset-before', -m[0] + 'px'), 643 u(a, '--swiper-centered-offset-after', e.size / 2 - g[g.length - 1] / 2 + 'px'); 644 const t = -e.snapGrid[0], 645 s = -e.slidesGrid[0]; 646 (e.snapGrid = e.snapGrid.map((e) => e + t)), (e.slidesGrid = e.slidesGrid.map((e) => e + s)); 647 } 648 if ( 649 (p !== d && e.emit('slidesLengthChange'), 650 m.length !== y && (e.params.watchOverflow && e.checkOverflow(), e.emit('snapGridLengthChange')), 651 h.length !== E && e.emit('slidesGridLengthChange'), 652 s.watchSlidesProgress && e.updateSlidesOffset(), 653 e.emit('slidesUpdated'), 654 !(o || s.cssMode || ('slide' !== s.effect && 'fade' !== s.effect))) 655 ) { 656 const t = `${s.containerModifierClass}backface-hidden`, 657 a = e.el.classList.contains(t); 658 p <= s.maxBackfaceHiddenSlides ? a || e.el.classList.add(t) : a && e.el.classList.remove(t); 659 } 660 }, 661 updateAutoHeight: function (e) { 662 const t = this, 663 s = [], 664 a = t.virtual && t.params.virtual.enabled; 665 let i, 666 r = 0; 667 'number' == typeof e ? t.setTransition(e) : !0 === e && t.setTransition(t.params.speed); 668 const n = (e) => (a ? t.slides[t.getSlideIndexByData(e)] : t.slides[e]); 669 if ('auto' !== t.params.slidesPerView && t.params.slidesPerView > 1) 670 if (t.params.centeredSlides) 671 (t.visibleSlides || []).forEach((e) => { 672 s.push(e); 673 }); 674 else 675 for (i = 0; i < Math.ceil(t.params.slidesPerView); i += 1) { 676 const e = t.activeIndex + i; 677 if (e > t.slides.length && !a) break; 678 s.push(n(e)); 679 } 680 else s.push(n(t.activeIndex)); 681 for (i = 0; i < s.length; i += 1) 682 if (void 0 !== s[i]) { 683 const e = s[i].offsetHeight; 684 r = e > r ? e : r; 685 } 686 (r || 0 === r) && (t.wrapperEl.style.height = `${r}px`); 687 }, 688 updateSlidesOffset: function () { 689 const e = this, 690 t = e.slides, 691 s = e.isElement ? (e.isHorizontal() ? e.wrapperEl.offsetLeft : e.wrapperEl.offsetTop) : 0; 692 for (let a = 0; a < t.length; a += 1) 693 t[a].swiperSlideOffset = (e.isHorizontal() ? t[a].offsetLeft : t[a].offsetTop) - s - e.cssOverflowAdjustment(); 694 }, 695 updateSlidesProgress: function (e) { 696 void 0 === e && (e = (this && this.translate) || 0); 697 const t = this, 698 s = t.params, 699 { slides: a, rtlTranslate: i, snapGrid: r } = t; 700 if (0 === a.length) return; 701 void 0 === a[0].swiperSlideOffset && t.updateSlidesOffset(); 702 let n = -e; 703 i && (n = e), 704 a.forEach((e) => { 705 e.classList.remove(s.slideVisibleClass, s.slideFullyVisibleClass); 706 }), 707 (t.visibleSlidesIndexes = []), 708 (t.visibleSlides = []); 709 let l = s.spaceBetween; 710 'string' == typeof l && l.indexOf('%') >= 0 711 ? (l = (parseFloat(l.replace('%', '')) / 100) * t.size) 712 : 'string' == typeof l && (l = parseFloat(l)); 713 for (let e = 0; e < a.length; e += 1) { 714 const o = a[e]; 715 let d = o.swiperSlideOffset; 716 s.cssMode && s.centeredSlides && (d -= a[0].swiperSlideOffset); 717 const c = (n + (s.centeredSlides ? t.minTranslate() : 0) - d) / (o.swiperSlideSize + l), 718 p = (n - r[0] + (s.centeredSlides ? t.minTranslate() : 0) - d) / (o.swiperSlideSize + l), 719 u = -(n - d), 720 m = u + t.slidesSizesGrid[e], 721 h = u >= 0 && u <= t.size - t.slidesSizesGrid[e]; 722 ((u >= 0 && u < t.size - 1) || (m > 1 && m <= t.size) || (u <= 0 && m >= t.size)) && 723 (t.visibleSlides.push(o), t.visibleSlidesIndexes.push(e), a[e].classList.add(s.slideVisibleClass)), 724 h && a[e].classList.add(s.slideFullyVisibleClass), 725 (o.progress = i ? -c : c), 726 (o.originalProgress = i ? -p : p); 727 } 728 }, 729 updateProgress: function (e) { 730 const t = this; 731 if (void 0 === e) { 732 const s = t.rtlTranslate ? -1 : 1; 733 e = (t && t.translate && t.translate * s) || 0; 734 } 735 const s = t.params, 736 a = t.maxTranslate() - t.minTranslate(); 737 let { progress: i, isBeginning: r, isEnd: n, progressLoop: l } = t; 738 const o = r, 739 d = n; 740 if (0 === a) (i = 0), (r = !0), (n = !0); 741 else { 742 i = (e - t.minTranslate()) / a; 743 const s = Math.abs(e - t.minTranslate()) < 1, 744 l = Math.abs(e - t.maxTranslate()) < 1; 745 (r = s || i <= 0), (n = l || i >= 1), s && (i = 0), l && (i = 1); 746 } 747 if (s.loop) { 748 const s = t.getSlideIndexByData(0), 749 a = t.getSlideIndexByData(t.slides.length - 1), 750 i = t.slidesGrid[s], 751 r = t.slidesGrid[a], 752 n = t.slidesGrid[t.slidesGrid.length - 1], 753 o = Math.abs(e); 754 (l = o >= i ? (o - i) / n : (o + n - r) / n), l > 1 && (l -= 1); 755 } 756 Object.assign(t, { progress: i, progressLoop: l, isBeginning: r, isEnd: n }), 757 (s.watchSlidesProgress || (s.centeredSlides && s.autoHeight)) && t.updateSlidesProgress(e), 758 r && !o && t.emit('reachBeginning toEdge'), 759 n && !d && t.emit('reachEnd toEdge'), 760 ((o && !r) || (d && !n)) && t.emit('fromEdge'), 761 t.emit('progress', i); 762 }, 763 updateSlidesClasses: function () { 764 const e = this, 765 { slides: t, params: s, slidesEl: a, activeIndex: i } = e, 766 r = e.virtual && s.virtual.enabled, 767 n = e.grid && s.grid && s.grid.rows > 1, 768 l = (e) => f(a, `.${s.slideClass}${e}, swiper-slide${e}`)[0]; 769 let o, d, c; 770 if ( 771 (t.forEach((e) => { 772 e.classList.remove(s.slideActiveClass, s.slideNextClass, s.slidePrevClass); 773 }), 774 r) 775 ) 776 if (s.loop) { 777 let t = i - e.virtual.slidesBefore; 778 t < 0 && (t = e.virtual.slides.length + t), 779 t >= e.virtual.slides.length && (t -= e.virtual.slides.length), 780 (o = l(`[data-swiper-slide-index="${t}"]`)); 781 } else o = l(`[data-swiper-slide-index="${i}"]`); 782 else 783 n 784 ? ((o = t.filter((e) => e.column === i)[0]), 785 (c = t.filter((e) => e.column === i + 1)[0]), 786 (d = t.filter((e) => e.column === i - 1)[0])) 787 : (o = t[i]); 788 o && 789 (o.classList.add(s.slideActiveClass), 790 n 791 ? (c && c.classList.add(s.slideNextClass), d && d.classList.add(s.slidePrevClass)) 792 : ((c = (function (e, t) { 793 const s = []; 794 for (; e.nextElementSibling; ) { 795 const a = e.nextElementSibling; 796 t ? a.matches(t) && s.push(a) : s.push(a), (e = a); 797 } 798 return s; 799 })(o, `.${s.slideClass}, swiper-slide`)[0]), 800 s.loop && !c && (c = t[0]), 801 c && c.classList.add(s.slideNextClass), 802 (d = (function (e, t) { 803 const s = []; 804 for (; e.previousElementSibling; ) { 805 const a = e.previousElementSibling; 806 t ? a.matches(t) && s.push(a) : s.push(a), (e = a); 807 } 808 return s; 809 })(o, `.${s.slideClass}, swiper-slide`)[0]), 810 s.loop && 0 === !d && (d = t[t.length - 1]), 811 d && d.classList.add(s.slidePrevClass))), 812 e.emitSlidesClasses(); 813 }, 814 updateActiveIndex: function (e) { 815 const t = this, 816 s = t.rtlTranslate ? t.translate : -t.translate, 817 { snapGrid: a, params: i, activeIndex: r, realIndex: n, snapIndex: l } = t; 818 let o, 819 d = e; 820 const c = (e) => { 821 let s = e - t.virtual.slidesBefore; 822 return ( 823 s < 0 && (s = t.virtual.slides.length + s), s >= t.virtual.slides.length && (s -= t.virtual.slides.length), s 824 ); 825 }; 826 if ( 827 (void 0 === d && 828 (d = (function (e) { 829 const { slidesGrid: t, params: s } = e, 830 a = e.rtlTranslate ? e.translate : -e.translate; 831 let i; 832 for (let e = 0; e < t.length; e += 1) 833 void 0 !== t[e + 1] 834 ? a >= t[e] && a < t[e + 1] - (t[e + 1] - t[e]) / 2 835 ? (i = e) 836 : a >= t[e] && a < t[e + 1] && (i = e + 1) 837 : a >= t[e] && (i = e); 838 return s.normalizeSlideIndex && (i < 0 || void 0 === i) && (i = 0), i; 839 })(t)), 840 a.indexOf(s) >= 0) 841 ) 842 o = a.indexOf(s); 843 else { 844 const e = Math.min(i.slidesPerGroupSkip, d); 845 o = e + Math.floor((d - e) / i.slidesPerGroup); 846 } 847 if ((o >= a.length && (o = a.length - 1), d === r && !t.params.loop)) 848 return void (o !== l && ((t.snapIndex = o), t.emit('snapIndexChange'))); 849 if (d === r && t.params.loop && t.virtual && t.params.virtual.enabled) return void (t.realIndex = c(d)); 850 const p = t.grid && i.grid && i.grid.rows > 1; 851 let u; 852 if (t.virtual && i.virtual.enabled && i.loop) u = c(d); 853 else if (p) { 854 const e = t.slides.filter((e) => e.column === d)[0]; 855 let s = parseInt(e.getAttribute('data-swiper-slide-index'), 10); 856 Number.isNaN(s) && (s = Math.max(t.slides.indexOf(e), 0)), (u = Math.floor(s / i.grid.rows)); 857 } else if (t.slides[d]) { 858 const e = t.slides[d].getAttribute('data-swiper-slide-index'); 859 u = e ? parseInt(e, 10) : d; 860 } else u = d; 861 Object.assign(t, { 862 previousSnapIndex: l, 863 snapIndex: o, 864 previousRealIndex: n, 865 realIndex: u, 866 previousIndex: r, 867 activeIndex: d, 868 }), 869 t.initialized && O(t), 870 t.emit('activeIndexChange'), 871 t.emit('snapIndexChange'), 872 (t.initialized || t.params.runCallbacksOnInit) && (n !== u && t.emit('realIndexChange'), t.emit('slideChange')); 873 }, 874 updateClickedSlide: function (e, t) { 875 const s = this, 876 a = s.params; 877 let i = e.closest(`.${a.slideClass}, swiper-slide`); 878 !i && 879 s.isElement && 880 t && 881 t.length > 1 && 882 t.includes(e) &&
883 [...t.slice(t.indexOf(e) + 1, t.length)].forEach((e) => { 884 !i && e.matches && e.matches(`.${a.slideClass}, swiper-slide`) && (i = e); 885 }); 886 let r, 887 n = !1; 888 if (i) 889 for (let e = 0; e < s.slides.length; e += 1) 890 if (s.slides[e] === i) { 891 (n = !0), (r = e); 892 break; 893 } 894 if (!i || !n) return (s.clickedSlide = void 0), void (s.clickedIndex = void 0); 895 (s.clickedSlide = i), 896 s.virtual && s.params.virtual.enabled 897 ? (s.clickedIndex = parseInt(i.getAttribute('data-swiper-slide-index'), 10)) 898 : (s.clickedIndex = r), 899 a.slideToClickedSlide && 900 void 0 !== s.clickedIndex && 901 s.clickedIndex !== s.activeIndex && 902 s.slideToClickedSlide(); 903 }, 904 }; 905 var G = { 906 getTranslate: function (e) { 907 void 0 === e && (e = this.isHorizontal() ? 'x' : 'y'); 908 const { params: t, rtlTranslate: s, translate: a, wrapperEl: i } = this; 909 if (t.virtualTranslate) return s ? -a : a; 910 if (t.cssMode) return a; 911 let r = d(i, e); 912 return (r += this.cssOverflowAdjustment()), s && (r = -r), r || 0; 913 }, 914 setTranslate: function (e, t) { 915 const s = this, 916 { rtlTranslate: a, params: i, wrapperEl: r, progress: n } = s; 917 let l, 918 o = 0, 919 d = 0; 920 s.isHorizontal() ? (o = a ? -e : e) : (d = e), 921 i.roundLengths && ((o = Math.floor(o)), (d = Math.floor(d))), 922 (s.previousTranslate = s.translate), 923 (s.translate = s.isHorizontal() ? o : d), 924 i.cssMode 925 ? (r[s.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = s.isHorizontal() ? -o : -d) 926 : i.virtualTranslate || 927 (s.isHorizontal() ? (o -= s.cssOverflowAdjustment()) : (d -= s.cssOverflowAdjustment()), 928 (r.style.transform = `translate3d(${o}px, ${d}px, 0px)`)); 929 const c = s.maxTranslate() - s.minTranslate(); 930 (l = 0 === c ? 0 : (e - s.minTranslate()) / c), 931 l !== n && s.updateProgress(e), 932 s.emit('setTranslate', s.translate, t); 933 }, 934 minTranslate: function () { 935 return -this.snapGrid[0]; 936 }, 937 maxTranslate: function () { 938 return -this.snapGrid[this.snapGrid.length - 1]; 939 }, 940 translateTo: function (e, t, s, a, i) { 941 void 0 === e && (e = 0), 942 void 0 === t && (t = this.params.speed), 943 void 0 === s && (s = !0), 944 void 0 === a && (a = !0); 945 const r = this, 946 { params: n, wrapperEl: l } = r; 947 if (r.animating && n.preventInteractionOnTransition) return !1; 948 const o = r.minTranslate(), 949 d = r.maxTranslate(); 950 let c; 951 if (((c = a && e > o ? o : a && e < d ? d : e), r.updateProgress(c), n.cssMode)) { 952 const e = r.isHorizontal(); 953 if (0 === t) l[e ? 'scrollLeft' : 'scrollTop'] = -c; 954 else { 955 if (!r.support.smoothScroll) return m({ swiper: r, targetPosition: -c, side: e ? 'left' : 'top' }), !0; 956 l.scrollTo({ [e ? 'left' : 'top']: -c, behavior: 'smooth' }); 957 } 958 return !0; 959 } 960 return ( 961 0 === t 962 ? (r.setTransition(0), 963 r.setTranslate(c), 964 s && (r.emit('beforeTransitionStart', t, i), r.emit('transitionEnd'))) 965 : (r.setTransition(t), 966 r.setTranslate(c), 967 s && (r.emit('beforeTransitionStart', t, i), r.emit('transitionStart')), 968 r.animating || 969 ((r.animating = !0), 970 r.onTranslateToWrapperTransitionEnd || 971 (r.onTranslateToWrapperTransitionEnd = function (e) { 972 r && 973 !r.destroyed && 974 e.target === this && 975 (r.wrapperEl.removeEventListener('transitionend', r.onTranslateToWrapperTransitionEnd), 976 (r.onTranslateToWrapperTransitionEnd = null), 977 delete r.onTranslateToWrapperTransitionEnd, 978 s && r.emit('transitionEnd')); 979 }), 980 r.wrapperEl.addEventListener('transitionend', r.onTranslateToWrapperTransitionEnd))), 981 !0 982 ); 983 }, 984 }; 985 function N(e) { 986 let { swiper: t, runCallbacks: s, direction: a, step: i } = e; 987 const { activeIndex: r, previousIndex: n } = t; 988 let l = a; 989 if ((l || (l = r > n ? 'next' : r < n ? 'prev' : 'reset'), t.emit(`transition${i}`), s && r !== n)) { 990 if ('reset' === l) return void t.emit(`slideResetTransition${i}`); 991 t.emit(`slideChangeTransition${i}`), 992 'next' === l ? t.emit(`slideNextTransition${i}`) : t.emit(`slidePrevTransition${i}`); 993 } 994 } 995 var H = { 996 slideTo: function (e, t, s, a, i) { 997 void 0 === e && (e = 0), 998 void 0 === t && (t = this.params.speed), 999 void 0 === s && (s = !0), 1000 'string' == typeof e && (e = parseInt(e, 10)); 1001 const r = this; 1002 let n = e; 1003 n < 0 && (n = 0); 1004 const { 1005 params: l, 1006 snapGrid: o, 1007 slidesGrid: d, 1008 previousIndex: c, 1009 activeIndex: p, 1010 rtlTranslate: u, 1011 wrapperEl: h, 1012 enabled: f, 1013 } = r; 1014 if ((r.animating && l.preventInteractionOnTransition) || (!f && !a && !i) || r.destroyed) return !1; 1015 const g = Math.min(r.params.slidesPerGroupSkip, n); 1016 let v = g + Math.floor((n - g) / r.params.slidesPerGroup); 1017 v >= o.length && (v = o.length - 1); 1018 const w = -o[v]; 1019 if (l.normalizeSlideIndex) 1020 for (let e = 0; e < d.length; e += 1) { 1021 const t = -Math.floor(100 * w), 1022 s = Math.floor(100 * d[e]), 1023 a = Math.floor(100 * d[e + 1]); 1024 void 0 !== d[e + 1] 1025 ? t >= s && t < a - (a - s) / 2 1026 ? (n = e) 1027 : t >= s && t < a && (n = e + 1) 1028 : t >= s && (n = e); 1029 } 1030 if (r.initialized && n !== p) { 1031 if ( 1032 !r.allowSlideNext && 1033 (u ? w > r.translate && w > r.minTranslate() : w < r.translate && w < r.minTranslate()) 1034 ) 1035 return !1; 1036 if (!r.allowSlidePrev && w > r.translate && w > r.maxTranslate() && (p || 0) !== n) return !1; 1037 } 1038 let b; 1039 if ( 1040 (n !== (c || 0) && s && r.emit('beforeSlideChangeStart'), 1041 r.updateProgress(w), 1042 (b = n > p ? 'next' : n < p ? 'prev' : 'reset'), 1043 (u && -w === r.translate) || (!u && w === r.translate)) 1044 ) 1045 return ( 1046 r.updateActiveIndex(n), 1047 l.autoHeight && r.updateAutoHeight(), 1048 r.updateSlidesClasses(), 1049 'slide' !== l.effect && r.setTranslate(w), 1050 'reset' !== b && (r.transitionStart(s, b), r.transitionEnd(s, b)), 1051 !1 1052 ); 1053 if (l.cssMode) { 1054 const e = r.isHorizontal(), 1055 s = u ? w : -w; 1056 if (0 === t) { 1057 const t = r.virtual && r.params.virtual.enabled; 1058 t && ((r.wrapperEl.style.scrollSnapType = 'none'), (r._immediateVirtual = !0)), 1059 t && !r._cssModeVirtualInitialSet && r.params.initialSlide > 0 1060 ? ((r._cssModeVirtualInitialSet = !0), 1061 requestAnimationFrame(() => { 1062 h[e ? 'scrollLeft' : 'scrollTop'] = s; 1063 })) 1064 : (h[e ? 'scrollLeft' : 'scrollTop'] = s), 1065 t && 1066 requestAnimationFrame(() => { 1067 (r.wrapperEl.style.scrollSnapType = ''), (r._immediateVirtual = !1); 1068 }); 1069 } else { 1070 if (!r.support.smoothScroll) return m({ swiper: r, targetPosition: s, side: e ? 'left' : 'top' }), !0; 1071 h.scrollTo({ [e ? 'left' : 'top']: s, behavior: 'smooth' }); 1072 } 1073 return !0; 1074 } 1075 return ( 1076 r.setTransition(t), 1077 r.setTranslate(w), 1078 r.updateActiveIndex(n), 1079 r.updateSlidesClasses(), 1080 r.emit('beforeTransitionStart', t, a), 1081 r.transitionStart(s, b), 1082 0 === t 1083 ? r.transitionEnd(s, b) 1084 : r.animating || 1085 ((r.animating = !0), 1086 r.onSlideToWrapperTransitionEnd || 1087 (r.onSlideToWrapperTransitionEnd = function (e) { 1088 r && 1089 !r.destroyed && 1090 e.target === this && 1091 (r.wrapperEl.removeEventListener('transitionend', r.onSlideToWrapperTransitionEnd), 1092 (r.onSlideToWrapperTransitionEnd = null),
1093 delete r.onSlideToWrapperTransitionEnd, 1094 r.transitionEnd(s, b)); 1095 }), 1096 r.wrapperEl.addEventListener('transitionend', r.onSlideToWrapperTransitionEnd)), 1097 !0 1098 ); 1099 }, 1100 slideToLoop: function (e, t, s, a) { 1101 if ( 1102 (void 0 === e && (e = 0), 1103 void 0 === t && (t = this.params.speed), 1104 void 0 === s && (s = !0), 1105 'string' == typeof e) 1106 ) { 1107 e = parseInt(e, 10); 1108 } 1109 const i = this; 1110 if (i.destroyed) return; 1111 const r = i.grid && i.params.grid && i.params.grid.rows > 1; 1112 let n = e; 1113 if (i.params.loop) 1114 if (i.virtual && i.params.virtual.enabled) n += i.virtual.slidesBefore; 1115 else { 1116 let e; 1117 if (r) { 1118 const t = n * i.params.grid.rows; 1119 e = i.slides.filter((e) => 1 * e.getAttribute('data-swiper-slide-index') === t)[0].column; 1120 } else e = i.getSlideIndexByData(n); 1121 const t = r ? Math.ceil(i.slides.length / i.params.grid.rows) : i.slides.length, 1122 { centeredSlides: s } = i.params; 1123 let a = i.params.slidesPerView; 1124 'auto' === a 1125 ? (a = i.slidesPerViewDynamic()) 1126 : ((a = Math.ceil(parseFloat(i.params.slidesPerView, 10))), s && a % 2 == 0 && (a += 1)); 1127 let l = t - e < a; 1128 if ((s && (l = l || e < Math.ceil(a / 2)), l)) { 1129 const a = s 1130 ? e < i.activeIndex 1131 ? 'prev' 1132 : 'next' 1133 : e - i.activeIndex - 1 < i.params.slidesPerView 1134 ? 'next' 1135 : 'prev'; 1136 i.loopFix({ 1137 direction: a, 1138 slideTo: !0, 1139 activeSlideIndex: 'next' === a ? e + 1 : e - t + 1, 1140 slideRealIndex: 'next' === a ? i.realIndex : void 0, 1141 }); 1142 } 1143 if (r) { 1144 const e = n * i.params.grid.rows; 1145 n = i.slides.filter((t) => 1 * t.getAttribute('data-swiper-slide-index') === e)[0].column; 1146 } else n = i.getSlideIndexByData(n); 1147 } 1148 return ( 1149 requestAnimationFrame(() => { 1150 i.slideTo(n, t, s, a); 1151 }), 1152 i 1153 ); 1154 }, 1155 slideNext: function (e, t, s) { 1156 void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); 1157 const a = this, 1158 { enabled: i, params: r, animating: n } = a; 1159 if (!i || a.destroyed) return a; 1160 let l = r.slidesPerGroup; 1161 'auto' === r.slidesPerView && 1162 1 === r.slidesPerGroup && 1163 r.slidesPerGroupAuto && 1164 (l = Math.max(a.slidesPerViewDynamic('current', !0), 1)); 1165 const o = a.activeIndex < r.slidesPerGroupSkip ? 1 : l, 1166 d = a.virtual && r.virtual.enabled; 1167 if (r.loop) { 1168 if (n && !d && r.loopPreventsSliding) return !1; 1169 if ( 1170 (a.loopFix({ direction: 'next' }), 1171 (a._clientLeft = a.wrapperEl.clientLeft), 1172 a.activeIndex === a.slides.length - 1 && r.cssMode) 1173 ) 1174 return ( 1175 requestAnimationFrame(() => { 1176 a.slideTo(a.activeIndex + o, e, t, s); 1177 }), 1178 !0 1179 ); 1180 } 1181 return r.rewind && a.isEnd ? a.slideTo(0, e, t, s) : a.slideTo(a.activeIndex + o, e, t, s); 1182 }, 1183 slidePrev: function (e, t, s) { 1184 void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); 1185 const a = this, 1186 { params: i, snapGrid: r, slidesGrid: n, rtlTranslate: l, enabled: o, animating: d } = a; 1187 if (!o || a.destroyed) return a; 1188 const c = a.virtual && i.virtual.enabled; 1189 if (i.loop) { 1190 if (d && !c && i.loopPreventsSliding) return !1; 1191 a.loopFix({ direction: 'prev' }), (a._clientLeft = a.wrapperEl.clientLeft); 1192 } 1193 function p(e) { 1194 return e < 0 ? -Math.floor(Math.abs(e)) : Math.floor(e); 1195 } 1196 const u = p(l ? a.translate : -a.translate), 1197 m = r.map((e) => p(e)); 1198 let h = r[m.indexOf(u) - 1]; 1199 if (void 0 === h && i.cssMode) { 1200 let e; 1201 r.forEach((t, s) => { 1202 u >= t && (e = s); 1203 }), 1204 void 0 !== e && (h = r[e > 0 ? e - 1 : e]); 1205 } 1206 let f = 0; 1207 if ( 1208 (void 0 !== h && 1209 ((f = n.indexOf(h)), 1210 f < 0 && (f = a.activeIndex - 1), 1211 'auto' === i.slidesPerView && 1212 1 === i.slidesPerGroup && 1213 i.slidesPerGroupAuto && 1214 ((f = f - a.slidesPerViewDynamic('previous', !0) + 1), (f = Math.max(f, 0)))), 1215 i.rewind && a.isBeginning) 1216 ) { 1217 const i = 1218 a.params.virtual && a.params.virtual.enabled && a.virtual ? a.virtual.slides.length - 1 : a.slides.length - 1; 1219 return a.slideTo(i, e, t, s); 1220 } 1221 return i.loop && 0 === a.activeIndex && i.cssMode 1222 ? (requestAnimationFrame(() => { 1223 a.slideTo(f, e, t, s); 1224 }), 1225 !0) 1226 : a.slideTo(f, e, t, s); 1227 }, 1228 slideReset: function (e, t, s) { 1229 void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); 1230 const a = this; 1231 if (!a.destroyed) return a.slideTo(a.activeIndex, e, t, s); 1232 }, 1233 slideToClosest: function (e, t, s, a) { 1234 void 0 === e && (e = this.params.speed), void 0 === t && (t = !0), void 0 === a && (a = 0.5); 1235 const i = this; 1236 if (i.destroyed) return; 1237 let r = i.activeIndex; 1238 const n = Math.min(i.params.slidesPerGroupSkip, r), 1239 l = n + Math.floor((r - n) / i.params.slidesPerGroup), 1240 o = i.rtlTranslate ? i.translate : -i.translate; 1241 if (o >= i.snapGrid[l]) { 1242 const e = i.snapGrid[l]; 1243 o - e > (i.snapGrid[l + 1] - e) * a && (r += i.params.slidesPerGroup); 1244 } else { 1245 const e = i.snapGrid[l - 1]; 1246 o - e <= (i.snapGrid[l] - e) * a && (r -= i.params.slidesPerGroup); 1247 } 1248 return (r = Math.max(r, 0)), (r = Math.min(r, i.slidesGrid.length - 1)), i.slideTo(r, e, t, s); 1249 }, 1250 slideToClickedSlide: function () { 1251 const e = this; 1252 if (e.destroyed) return; 1253 const { params: t, slidesEl: s } = e, 1254 a = 'auto' === t.slidesPerView ? e.slidesPerViewDynamic() : t.slidesPerView; 1255 let i, 1256 r = e.clickedIndex; 1257 const n = e.isElement ? 'swiper-slide' : `.${t.slideClass}`; 1258 if (t.loop) { 1259 if (e.animating) return; 1260 (i = parseInt(e.clickedSlide.getAttribute('data-swiper-slide-index'), 10)), 1261 t.centeredSlides 1262 ? r < e.loopedSlides - a / 2 || r > e.slides.length - e.loopedSlides + a / 2 1263 ? (e.loopFix(), 1264 (r = e.getSlideIndex(f(s, `${n}[data-swiper-slide-index="${i}"]`)[0])), 1265 l(() => { 1266 e.slideTo(r); 1267 })) 1268 : e.slideTo(r) 1269 : r > e.slides.length - a 1270 ? (e.loopFix(), 1271 (r = e.getSlideIndex(f(s, `${n}[data-swiper-slide-index="${i}"]`)[0])), 1272 l(() => { 1273 e.slideTo(r); 1274 })) 1275 : e.slideTo(r); 1276 } else e.slideTo(r); 1277 }, 1278 }; 1279 var X = { 1280 loopCreate: function (e) { 1281 const t = this, 1282 { params: s, slidesEl: a } = t; 1283 if (!s.loop || (t.virtual && t.params.virtual.enabled)) return; 1284 const i = () => { 1285 f(a, `.${s.slideClass}, swiper-slide`).forEach((e, t) => { 1286 e.setAttribute('data-swiper-slide-index', t); 1287 }); 1288 }, 1289 r = t.grid && s.grid && s.grid.rows > 1, 1290 n = s.slidesPerGroup * (r ? s.grid.rows : 1), 1291 l = t.slides.length % n != 0, 1292 o = r && t.slides.length % s.grid.rows != 0, 1293 d = (e) => { 1294 for (let a = 0; a < e; a += 1) { 1295 const e = t.isElement 1296 ? v('swiper-slide', [s.slideBlankClass]) 1297 : v('div', [s.slideClass, s.slideBlankClass]); 1298 t.slidesEl.append(e); 1299 } 1300 }; 1301 if (l) { 1302 if (s.loopAddBlankSlides) { 1303 d(n - (t.slides.length % n)), t.recalcSlides(), t.updateSlides(); 1304 } else 1305 g( 1306 'Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may
1306not function properly. You need to add more slides (or make duplicates, or empty slides)' 1307 ); 1308 i(); 1309 } else if (o) { 1310 if (s.loopAddBlankSlides) { 1311 d(s.grid.rows - (t.slides.length % s.grid.rows)), t.recalcSlides(), t.updateSlides(); 1312 } else 1313 g( 1314 'Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)' 1315 ); 1316 i(); 1317 } else i(); 1318 t.loopFix({ slideRealIndex: e, direction: s.centeredSlides ? void 0 : 'next' }); 1319 }, 1320 loopFix: function (e) { 1321 let { 1322 slideRealIndex: t, 1323 slideTo: s = !0, 1324 direction: a, 1325 setTranslate: i, 1326 activeSlideIndex: r, 1327 byController: n, 1328 byMousewheel: l, 1329 } = void 0 === e ? {} : e; 1330 const o = this; 1331 if (!o.params.loop) return; 1332 o.emit('beforeLoopFix'); 1333 const { slides: d, allowSlidePrev: c, allowSlideNext: p, slidesEl: u, params: m } = o, 1334 { centeredSlides: h } = m; 1335 if (((o.allowSlidePrev = !0), (o.allowSlideNext = !0), o.virtual && m.virtual.enabled)) 1336 return ( 1337 s && 1338 (m.centeredSlides || 0 !== o.snapIndex 1339 ? m.centeredSlides && o.snapIndex < m.slidesPerView 1340 ? o.slideTo(o.virtual.slides.length + o.snapIndex, 0, !1, !0) 1341 : o.snapIndex === o.snapGrid.length - 1 && o.slideTo(o.virtual.slidesBefore, 0, !1, !0) 1342 : o.slideTo(o.virtual.slides.length, 0, !1, !0)), 1343 (o.allowSlidePrev = c), 1344 (o.allowSlideNext = p), 1345 void o.emit('loopFix') 1346 ); 1347 let f = m.slidesPerView; 1348 'auto' === f 1349 ? (f = o.slidesPerViewDynamic()) 1350 : ((f = Math.ceil(parseFloat(m.slidesPerView, 10))), h && f % 2 == 0 && (f += 1)); 1351 const v = m.slidesPerGroupAuto ? f : m.slidesPerGroup; 1352 let w = v; 1353 w % v != 0 && (w += v - (w % v)), (w += m.loopAdditionalSlides), (o.loopedSlides = w); 1354 const b = o.grid && m.grid && m.grid.rows > 1; 1355 d.length < f + w 1356 ? g( 1357 'Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters' 1358 ) 1359 : b && 'row' === m.grid.fill && g('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 1360 const y = [], 1361 E = []; 1362 let x = o.activeIndex; 1363 void 0 === r ? (r = o.getSlideIndex(d.filter((e) => e.classList.contains(m.slideActiveClass))[0])) : (x = r); 1364 const S = 'next' === a || !a, 1365 T = 'prev' === a || !a; 1366 let M = 0, 1367 C = 0; 1368 const P = b ? Math.ceil(d.length / m.grid.rows) : d.length, 1369 L = (b ? d[r].column : r) + (h && void 0 === i ? -f / 2 + 0.5 : 0); 1370 if (L < w) { 1371 M = Math.max(w - L, v); 1372 for (let e = 0; e < w - L; e += 1) { 1373 const t = e - Math.floor(e / P) * P; 1374 if (b) { 1375 const e = P - t - 1; 1376 for (let t = d.length - 1; t >= 0; t -= 1) d[t].column === e && y.push(t); 1377 } else y.push(P - t - 1); 1378 } 1379 } else if (L + f > P - w) { 1380 C = Math.max(L - (P - 2 * w), v); 1381 for (let e = 0; e < C; e += 1) { 1382 const t = e - Math.floor(e / P) * P; 1383 b 1384 ? d.forEach((e, s) => { 1385 e.column === t && E.push(s); 1386 }) 1387 : E.push(t); 1388 } 1389 } 1390 if ( 1391 ((o.__preventObserver__ = !0), 1392 requestAnimationFrame(() => { 1393 o.__preventObserver__ = !1; 1394 }), 1395 T && 1396 y.forEach((e) => { 1397 (d[e].swiperLoopMoveDOM = !0), u.prepend(d[e]), (d[e].swiperLoopMoveDOM = !1); 1398 }), 1399 S && 1400 E.forEach((e) => { 1401 (d[e].swiperLoopMoveDOM = !0), u.append(d[e]), (d[e].swiperLoopMoveDOM = !1); 1402 }), 1403 o.recalcSlides(), 1404 'auto' === m.slidesPerView 1405 ? o.updateSlides() 1406 : b && 1407 ((y.length > 0 && T) || (E.length > 0 && S)) &&
1408 o.slides.forEach((e, t) => { 1409 o.grid.updateSlide(t, e, o.slides); 1410 }), 1411 m.watchSlidesProgress && o.updateSlidesOffset(), 1412 s) 1413 ) 1414 if (y.length > 0 && T) { 1415 if (void 0 === t) { 1416 const e = o.slidesGrid[x], 1417 t = o.slidesGrid[x + M] - e; 1418 l 1419 ? o.setTranslate(o.translate - t) 1420 : (o.slideTo(x + Math.ceil(M), 0, !1, !0), 1421 i && 1422 ((o.touchEventsData.startTranslate = o.touchEventsData.startTranslate - t), 1423 (o.touchEventsData.currentTranslate = o.touchEventsData.currentTranslate - t))); 1424 } else if (i) { 1425 const e = b ? y.length / m.grid.rows : y.length; 1426 o.slideTo(o.activeIndex + e, 0, !1, !0), (o.touchEventsData.currentTranslate = o.translate); 1427 } 1428 } else if (E.length > 0 && S) 1429 if (void 0 === t) { 1430 const e = o.slidesGrid[x], 1431 t = o.slidesGrid[x - C] - e; 1432 l 1433 ? o.setTranslate(o.translate - t) 1434 : (o.slideTo(x - C, 0, !1, !0), 1435 i && 1436 ((o.touchEventsData.startTranslate = o.touchEventsData.startTranslate - t), 1437 (o.touchEventsData.currentTranslate = o.touchEventsData.currentTranslate - t))); 1438 } else { 1439 const e = b ? E.length / m.grid.rows : E.length; 1440 o.slideTo(o.activeIndex - e, 0, !1, !0); 1441 } 1442 if (((o.allowSlidePrev = c), (o.allowSlideNext = p), o.controller && o.controller.control && !n)) { 1443 const e = { slideRealIndex: t, direction: a, setTranslate: i, activeSlideIndex: r, byController: !0 }; 1444 Array.isArray(o.controller.control) 1445 ? o.controller.control.forEach((t) => { 1446 !t.destroyed && 1447 t.params.loop && 1448 t.loopFix({ ...e, slideTo: t.params.slidesPerView === m.slidesPerView && s }); 1449 }) 1450 : o.controller.control instanceof o.constructor && 1451 o.controller.control.params.loop && 1452 o.controller.control.loopFix({ 1453 ...e, 1454 slideTo: o.controller.control.params.slidesPerView === m.slidesPerView && s, 1455 }); 1456 } 1457 o.emit('loopFix'); 1458 }, 1459 loopDestroy: function () { 1460 const e = this, 1461 { params: t, slidesEl: s } = e; 1462 if (!t.loop || (e.virtual && e.params.virtual.enabled)) return; 1463 e.recalcSlides(); 1464 const a = []; 1465 e.slides.forEach((e) => { 1466 const t = void 0 === e.swiperSlideIndex ? 1 * e.getAttribute('data-swiper-slide-index') : e.swiperSlideIndex; 1467 a[t] = e; 1468 }), 1469 e.slides.forEach((e) => { 1470 e.removeAttribute('data-swiper-slide-index'); 1471 }), 1472 a.forEach((e) => { 1473 s.append(e); 1474 }), 1475 e.recalcSlides(), 1476 e.slideTo(e.realIndex, 0); 1477 }, 1478 }; 1479 function Y(e, t, s) { 1480 const a = r(), 1481 { params: i } = e, 1482 n = i.edgeSwipeDetection, 1483 l = i.edgeSwipeThreshold; 1484 return !n || !(s <= l || s >= a.innerWidth - l) || ('prevent' === n && (t.preventDefault(), !0)); 1485 } 1486 function B(e) { 1487 const t = this, 1488 s = a(); 1489 let i = e; 1490 i.originalEvent && (i = i.originalEvent); 1491 const n = t.touchEventsData; 1492 if ('pointerdown' === i.type) { 1493 if (null !== n.pointerId && n.pointerId !== i.pointerId) return; 1494 n.pointerId = i.pointerId; 1495 } else 'touchstart' === i.type && 1 === i.targetTouches.length && (n.touchId = i.targetTouches[0].identifier); 1496 if ('touchstart' === i.type) return void Y(t, i, i.targetTouches[0].pageX); 1497 const { params: l, touches: d, enabled: c } = t; 1498 if (!c) return; 1499 if (!l.simulateTouch && 'mouse' === i.pointerType) return; 1500 if (t.animating && l.preventInteractionOnTransition) return; 1501 !t.animating && l.cssMode && l.loop && t.loopFix(); 1502 let p = i.target; 1503 if ('wrapper' === l.touchEventsTarget && !t.wrapperEl.contains(p)) return; 1504 if ('which' in i && 3 === i.which) return; 1505 if ('button' in i && i.button > 0) return; 1506 if (n.isTouched && n.isMoved) return; 1507 const u = !!l.noSwipingClass && '' !== l.noSwipingClass, 1508 m = i.composedPath ? i.composedPath() : i.path; 1509 u && i.target && i.target.shadowRoot && m && (p = m[0]); 1510 const h = l.noSwipingSelector ? l.noSwipingSelector : `.${l.noSwipingClass}`, 1511 f = !(!i.target || !i.target.shadowRoot); 1512 if ( 1513 l.noSwiping && 1514 (f 1515 ? (function (e, t) { 1516 return ( 1517 void 0 === t && (t = this), 1518 (function t(s) { 1519 if (!s || s === a() || s === r()) return null; 1520 s.assignedSlot && (s = s.assignedSlot); 1521 const i = s.closest(e); 1522 return i || s.getRootNode ? i || t(s.getRootNode().host) : null; 1523 })(t) 1524 ); 1525 })(h, p) 1526 : p.closest(h)) 1527 ) 1528 return void (t.allowClick = !0); 1529 if (l.swipeHandler && !p.closest(l.swipeHandler)) return; 1530 (d.currentX = i.pageX), (d.currentY = i.pageY); 1531 const g = d.currentX, 1532 v = d.currentY; 1533 if (!Y(t, i, g)) return;
1534 Object.assign(n, { isTouched: !0, isMoved: !1, allowTouchCallbacks: !0, isScrolling: void 0, startMoving: void 0 }), 1535 (d.startX = g), 1536 (d.startY = v), 1537 (n.touchStartTime = o()), 1538 (t.allowClick = !0), 1539 t.updateSize(), 1540 (t.swipeDirection = void 0), 1541 l.threshold > 0 && (n.allowThresholdMove = !1); 1542 let w = !0; 1543 p.matches(n.focusableElements) && ((w = !1), 'SELECT' === p.nodeName && (n.isTouched = !1)), 1544 s.activeElement && 1545 s.activeElement.matches(n.focusableElements) && 1546 s.activeElement !== p && 1547 s.activeElement.blur(); 1548 const b = w && t.allowTouchMove && l.touchStartPreventDefault; 1549 (!l.touchStartForcePreventDefault && !b) || p.isContentEditable || i.preventDefault(), 1550 l.freeMode && l.freeMode.enabled && t.freeMode && t.animating && !l.cssMode && t.freeMode.onTouchStart(), 1551 t.emit('touchStart', i); 1552 } 1553 function R(e) { 1554 const t = a(), 1555 s = this, 1556 i = s.touchEventsData, 1557 { params: r, touches: n, rtlTranslate: l, enabled: d } = s; 1558 if (!d) return; 1559 if (!r.simulateTouch && 'mouse' === e.pointerType) return; 1560 let c, 1561 p = e; 1562 if ((p.originalEvent && (p = p.originalEvent), 'pointermove' === p.type)) { 1563 if (null !== i.touchId) return; 1564 if (p.pointerId !== i.pointerId) return; 1565 } 1566 if ('touchmove' === p.type) { 1567 if (((c = [...p.changedTouches].filter((e) => e.identifier === i.touchId)[0]), !c || c.identifier !== i.touchId)) 1568 return; 1569 } else c = p; 1570 if (!i.isTouched) return void (i.startMoving && i.isScrolling && s.emit('touchMoveOpposite', p)); 1571 const u = c.pageX, 1572 m = c.pageY; 1573 if (p.preventedByNestedSwiper) return (n.startX = u), void (n.startY = m); 1574 if (!s.allowTouchMove) 1575 return ( 1576 p.target.matches(i.focusableElements) || (s.allowClick = !1), 1577 void ( 1578 i.isTouched && 1579 (Object.assign(n, { startX: u, startY: m, currentX: u, currentY: m }), (i.touchStartTime = o())) 1580 ) 1581 ); 1582 if (r.touchReleaseOnEdges && !r.loop) 1583 if (s.isVertical()) { 1584 if ((m < n.startY && s.translate <= s.maxTranslate()) || (m > n.startY && s.translate >= s.minTranslate())) 1585 return (i.isTouched = !1), void (i.isMoved = !1); 1586 } else if ((u < n.startX && s.translate <= s.maxTranslate()) || (u > n.startX && s.translate >= s.minTranslate())) 1587 return; 1588 if (t.activeElement && p.target === t.activeElement && p.target.matches(i.focusableElements)) 1589 return (i.isMoved = !0), void (s.allowClick = !1); 1590 i.allowTouchCallbacks && s.emit('touchMove', p), 1591 (n.previousX = n.currentX), 1592 (n.previousY = n.currentY), 1593 (n.currentX = u), 1594 (n.currentY = m); 1595 const h = n.currentX - n.startX, 1596 f = n.currentY - n.startY; 1597 if (s.params.threshold && Math.sqrt(h ** 2 + f ** 2) < s.params.threshold) return; 1598 if (void 0 === i.isScrolling) { 1599 let e; 1600 (s.isHorizontal() && n.currentY === n.startY) || (s.isVertical() && n.currentX === n.startX) 1601 ? (i.isScrolling = !1) 1602 : h * h + f * f >= 25 && 1603 ((e = (180 * Math.atan2(Math.abs(f), Math.abs(h))) / Math.PI), 1604 (i.isScrolling = s.isHorizontal() ? e > r.touchAngle : 90 - e > r.touchAngle)); 1605 } 1606 if ( 1607 (i.isScrolling && s.emit('touchMoveOpposite', p), 1608 void 0 === i.startMoving && ((n.currentX === n.startX && n.currentY === n.startY) || (i.startMoving = !0)), 1609 i.isScrolling) 1610 ) 1611 return void (i.isTouched = !1); 1612 if (!i.startMoving) return; 1613 (s.allowClick = !1), 1614 !r.cssMode && p.cancelable && p.preventDefault(), 1615 r.touchMoveStopPropagation && !r.nested && p.stopPropagation(); 1616 let g = s.isHorizontal() ? h : f, 1617 v = s.isHorizontal() ? n.currentX - n.previousX : n.currentY - n.previousY; 1618 r.oneWayMovement && ((g = Math.abs(g) * (l ? 1 : -1)), (v = Math.abs(v) * (l ? 1 : -1))), 1619 (n.diff = g), 1620 (g *= r.touchRatio), 1621 l && ((g = -g), (v = -v)); 1622 const w = s.touchesDirection; 1623 (s.swipeDirection = g > 0 ? 'prev' : 'next'), (s.touchesDirection = v > 0 ? 'prev' : 'next'); 1624 const b = s.params.loop && !r.cssMode, 1625 y = ('next' === s.touchesDirection && s.allowSlideNext) || ('prev' === s.touchesDirection && s.allowSlidePrev); 1626 if (!i.isMoved) { 1627 if ( 1628 (b && y && s.loopFix({ direction: s.swipeDirection }), 1629 (i.startTranslate = s.getTranslate()), 1630 s.setTransition(0), 1631 s.animating) 1632 ) { 1633 const e = new window.CustomEvent('transitionend', { bubbles: !0, cancelable: !0 });
1634 s.wrapperEl.dispatchEvent(e); 1635 } 1636 (i.allowMomentumBounce = !1), 1637 !r.grabCursor || (!0 !== s.allowSlideNext && !0 !== s.allowSlidePrev) || s.setGrabCursor(!0), 1638 s.emit('sliderFirstMove', p); 1639 } 1640 if ( 1641 (new Date().getTime(), 1642 i.isMoved && i.allowThresholdMove && w !== s.touchesDirection && b && y && Math.abs(g) >= 1) 1643 ) 1644 return ( 1645 Object.assign(n, { startX: u, startY: m, currentX: u, currentY: m, startTranslate: i.currentTranslate }), 1646 (i.loopSwapReset = !0), 1647 void (i.startTranslate = i.currentTranslate) 1648 ); 1649 s.emit('sliderMove', p), (i.isMoved = !0), (i.currentTranslate = g + i.startTranslate); 1650 let E = !0, 1651 x = r.resistanceRatio; 1652 if ( 1653 (r.touchReleaseOnEdges && (x = 0), 1654 g > 0 1655 ? (b && 1656 y && 1657 i.allowThresholdMove && 1658 i.currentTranslate > 1659 (r.centeredSlides ? s.minTranslate() - s.slidesSizesGrid[s.activeIndex + 1] : s.minTranslate()) && 1660 s.loopFix({ direction: 'prev', setTranslate: !0, activeSlideIndex: 0 }), 1661 i.currentTranslate > s.minTranslate() && 1662 ((E = !1), 1663 r.resistance && 1664 (i.currentTranslate = s.minTranslate() - 1 + (-s.minTranslate() + i.startTranslate + g) ** x))) 1665 : g < 0 && 1666 (b && 1667 y && 1668 i.allowThresholdMove && 1669 i.currentTranslate < 1670 (r.centeredSlides 1671 ? s.maxTranslate() + s.slidesSizesGrid[s.slidesSizesGrid.length - 1] 1672 : s.maxTranslate()) && 1673 s.loopFix({ 1674 direction: 'next', 1675 setTranslate: !0, 1676 activeSlideIndex: 1677 s.slides.length - 1678 ('auto' === r.slidesPerView ? s.slidesPerViewDynamic() : Math.ceil(parseFloat(r.slidesPerView, 10))), 1679 }), 1680 i.currentTranslate < s.maxTranslate() && 1681 ((E = !1), 1682 r.resistance && 1683 (i.currentTranslate = s.maxTranslate() + 1 - (s.maxTranslate() - i.startTranslate - g) ** x))), 1684 E && (p.preventedByNestedSwiper = !0), 1685 !s.allowSlideNext && 1686 'next' === s.swipeDirection && 1687 i.currentTranslate < i.startTranslate && 1688 (i.currentTranslate = i.startTranslate), 1689 !s.allowSlidePrev && 1690 'prev' === s.swipeDirection && 1691 i.currentTranslate > i.startTranslate && 1692 (i.currentTranslate = i.startTranslate), 1693 s.allowSlidePrev || s.allowSlideNext || (i.currentTranslate = i.startTranslate), 1694 r.threshold > 0) 1695 ) { 1696 if (!(Math.abs(g) > r.threshold || i.allowThresholdMove)) return void (i.currentTranslate = i.startTranslate); 1697 if (!i.allowThresholdMove) 1698 return ( 1699 (i.allowThresholdMove = !0), 1700 (n.startX = n.currentX), 1701 (n.startY = n.currentY), 1702 (i.currentTranslate = i.startTranslate), 1703 void (n.diff = s.isHorizontal() ? n.currentX - n.startX : n.currentY - n.startY) 1704 ); 1705 } 1706 r.followFinger && 1707 !r.cssMode && 1708 (((r.freeMode && r.freeMode.enabled && s.freeMode) || r.watchSlidesProgress) && 1709 (s.updateActiveIndex(), s.updateSlidesClasses()), 1710 r.freeMode && r.freeMode.enabled && s.freeMode && s.freeMode.onTouchMove(), 1711 s.updateProgress(i.currentTranslate), 1712 s.setTranslate(i.currentTranslate)); 1713 } 1714 function q(e) { 1715 const t = this, 1716 s = t.touchEventsData; 1717 let a, 1718 i = e; 1719 i.originalEvent && (i = i.originalEvent); 1720 if ('touchend' === i.type || 'touchcancel' === i.type) { 1721 if (((a = [...i.changedTouches].filter((e) => e.identifier === s.touchId)[0]), !a || a.identifier !== s.touchId)) 1722 return; 1723 } else { 1724 if (null !== s.touchId) return; 1725 if (i.pointerId !== s.pointerId) return; 1726 a = i; 1727 } 1728 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(i.type)) { 1729 if (!(['pointercancel', 'contextmenu'].includes(i.type) && (t.browser.isSafari || t.browser.isWebView))) return; 1730 } 1731 (s.pointerId = null), (s.touchId = null); 1732 const { params: r, touches: n, rtlTranslate: d, slidesGrid: c, enabled: p } = t; 1733 if (!p) return; 1734 if (!r.simulateTouch && 'mouse' === i.pointerType) return; 1735 if ((s.allowTouchCallbacks && t.emit('touchEnd', i), (s.allowTouchCallbacks = !1), !s.isTouched)) 1736 return s.isMoved && r.grabCursor && t.setGrabCursor(!1), (s.isMoved = !1), void (s.startMoving = !1); 1737 r.grabCursor && 1738 s.isMoved && 1739 s.isTouched && 1740 (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) && 1741 t.setGrabCursor(!1); 1742 const u = o(), 1743 m = u - s.touchStartTime; 1744 if (t.allowClick) { 1745 const e = i.path || (i.composedPath && i.composedPath()); 1746 t.updateClickedSlide((e && e[0]) || i.target, e), 1747 t.emit('tap click', i), 1748 m < 300 && u - s.lastClickTime < 300 && t.emit('doubleTap doubleClick', i); 1749 } 1750 if ( 1751 ((s.lastClickTime = o()), 1752 l(() => { 1753 t.destroyed || (t.allowClick = !0); 1754 }), 1755 !s.isTouched || 1756 !s.isMoved || 1757 !t.swipeDirection || 1758 (0 === n.diff && !s.loopSwapReset) || 1759 (s.currentTranslate === s.startTranslate && !s.loopSwapReset)) 1760 ) 1761 return (s.isTouched = !1), (s.isMoved = !1), void (s.startMoving = !1); 1762 let h; 1763 if ( 1764 ((s.isTouched = !1), 1765 (s.isMoved = !1), 1766 (s.startMoving = !1), 1767 (h = r.followFinger ? (d ? t.translate : -t.translate) : -s.currentTranslate), 1768 r.cssMode) 1769 ) 1770 return; 1771 if (r.freeMode && r.freeMode.enabled) return void t.freeMode.onTouchEnd({ currentPos: h }); 1772 const f = h >= -t.maxTranslate() && !t.params.loop; 1773 let g = 0, 1774 v = t.slidesSizesGrid[0]; 1775 for (let e = 0; e < c.length; e += e < r.slidesPerGroupSkip ? 1 : r.slidesPerGroup) { 1776 const t = e < r.slidesPerGroupSkip - 1 ? 1 : r.slidesPerGroup; 1777 void 0 !== c[e + t] 1778 ? (f || (h >= c[e] && h < c[e + t])) && ((g = e), (v = c[e + t] - c[e])) 1779 : (f || h >= c[e]) && ((g = e), (v = c[c.length - 1] - c[c.length - 2])); 1780 } 1781 let w = null, 1782 b = null; 1783 r.rewind && 1784 (t.isBeginning 1785 ? (b = r.virtual && r.virtual.enabled && t.virtual ? t.virtual.slides.length - 1 : t.slides.length - 1) 1786 : t.isEnd && (w = 0)); 1787 const y = (h - c[g]) / v, 1788 E = g < r.slidesPerGroupSkip - 1 ? 1 : r.slidesPerGroup; 1789 if (m > r.longSwipesMs) { 1790 if (!r.longSwipes) return void t.slideTo(t.activeIndex); 1791 'next' === t.swipeDirection && 1792 (y >= r.longSwipesRatio ? t.slideTo(r.rewind && t.isEnd ? w : g + E) : t.slideTo(g)), 1793 'prev' === t.swipeDirection && 1794 (y > 1 - r.longSwipesRatio 1795 ? t.slideTo(g + E) 1796 : null !== b && y < 0 && Math.abs(y) > r.longSwipesRatio 1797 ? t.slideTo(b) 1798 : t.slideTo(g)); 1799 } else { 1800 if (!r.shortSwipes) return void t.slideTo(t.activeIndex); 1801 t.navigation && (i.target === t.navigation.nextEl || i.target === t.navigation.prevEl) 1802 ? i.target === t.navigation.nextEl 1803 ? t.slideTo(g + E) 1804 : t.slideTo(g) 1805 : ('next' === t.swipeDirection && t.slideTo(null !== w ? w : g + E), 1806 'prev' === t.swipeDirection && t.slideTo(null !== b ? b : g)); 1807 } 1808 } 1809 function F() { 1810 const e = this, 1811 { params: t, el: s } = e; 1812 if (s && 0 === s.offsetWidth) return; 1813 t.breakpoints && e.setBreakpoint(); 1814 const { allowSlideNext: a, allowSlidePrev: i, snapGrid: r } = e, 1815 n = e.virtual && e.params.virtual.enabled; 1816 (e.allowSlideNext = !0), (e.allowSlidePrev = !0), e.updateSize(), e.updateSlides(), e.updateSlidesClasses(); 1817 const l = n && t.loop; 1818 !('auto' === t.slidesPerView || t.slidesPerView > 1) || !e.isEnd || e.isBeginning || e.params.centeredSlides || l 1819 ? e.params.loop && !n 1820 ? e.slideToLoop(e.realIndex, 0, !1, !0) 1821 : e.slideTo(e.activeIndex, 0, !1, !0) 1822 : e.slideTo(e.slides.length - 1, 0, !1, !0), 1823 e.autoplay && 1824 e.autoplay.running && 1825 e.autoplay.paused && 1826 (clearTimeout(e.autoplay.resizeTimeout), 1827 (e.autoplay.resizeTimeout = setTimeout(() => { 1828 e.autoplay && e.autoplay.running && e.autoplay.paused && e.autoplay.resume(); 1829 }, 500))), 1830 (e.allowSlidePrev = i), 1831 (e.allowSlideNext = a), 1832 e.params.watchOverflow && r !== e.snapGrid && e.checkOverflow(); 1833 } 1834 function V(e) { 1835 const t = this; 1836 t.enabled && 1837 (t.allowClick || 1838 (t.params.preventClicks && e.preventDefault(), 1839 t.params.preventClicksPropagation && t.animating && (e.stopPropagation(), e.stopImmediatePropagation()))); 1840 } 1841 function _() { 1842 const e = this, 1843 { wrapperEl: t, rtlTranslate: s, enabled: a } = e; 1844 if (!a) return; 1845 let i; 1846 (e.previousTranslate = e.translate), 1847 e.isHorizontal() ? (e.translate = -t.scrollLeft) : (e.translate = -t.scrollTop), 1848 0 === e.translate && (e.translate = 0), 1849 e.updateActiveIndex(), 1850 e.updateSlidesClasses(); 1851 const r = e.maxTranslate() - e.minTranslate(); 1852 (i = 0 === r ? 0 : (e.translate - e.minTranslate()) / r), 1853 i !== e.progress && e.updateProgress(s ? -e.translate : e.translate), 1854 e.emit('setTranslate', e.translate, !1); 1855 } 1856 function W(e) { 1857 const t = this; 1858 $(t, e.target), t.params.cssMode || ('auto' !== t.params.slidesPerView && !t.params.autoHeight) || t.update(
1858); 1859 } 1860 function j() { 1861 const e = this; 1862 e.documentTouchHandlerProceeded || 1863 ((e.documentTouchHandlerProceeded = !0), e.params.touchReleaseOnEdges && (e.el.style.touchAction = 'auto')); 1864 } 1865 const U = (e, t) => { 1866 const s = a(), 1867 { params: i, el: r, wrapperEl: n, device: l } = e, 1868 o = !!i.nested, 1869 d = 'on' === t ? 'addEventListener' : 'removeEventListener', 1870 c = t; 1871 s[d]('touchstart', e.onDocumentTouchStart, { passive: !1, capture: o }), 1872 r[d]('touchstart', e.onTouchStart, { passive: !1 }), 1873 r[d]('pointerdown', e.onTouchStart, { passive: !1 }), 1874 s[d]('touchmove', e.onTouchMove, { passive: !1, capture: o }), 1875 s[d]('pointermove', e.onTouchMove, { passive: !1, capture: o }), 1876 s[d]('touchend', e.onTouchEnd, { passive: !0 }), 1877 s[d]('pointerup', e.onTouchEnd, { passive: !0 }), 1878 s[d]('pointercancel', e.onTouchEnd, { passive: !0 }), 1879 s[d]('touchcancel', e.onTouchEnd, { passive: !0 }), 1880 s[d]('pointerout', e.onTouchEnd, { passive: !0 }), 1881 s[d]('pointerleave', e.onTouchEnd, { passive: !0 }), 1882 s[d]('contextmenu', e.onTouchEnd, { passive: !0 }), 1883 (i.preventClicks || i.preventClicksPropagation) && r[d]('click', e.onClick, !0), 1884 i.cssMode && n[d]('scroll', e.onScroll), 1885 i.updateOnWindowResize 1886 ? e[c](l.ios || l.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', F, !0) 1887 : e[c]('observerUpdate', F, !0), 1888 r[d]('load', e.onLoad, { capture: !0 }); 1889 }; 1890 const K = (e, t) => e.grid && t.grid && t.grid.rows > 1; 1891 var Z = { 1892 init: !0, 1893 direction: 'horizontal', 1894 oneWayMovement: !1, 1895 swiperElementNodeName: 'SWIPER-CONTAINER', 1896 touchEventsTarget: 'wrapper', 1897 initialSlide: 0, 1898 speed: 300, 1899 cssMode: !1, 1900 updateOnWindowResize: !0, 1901 resizeObserver: !0, 1902 nested: !1, 1903 createElements: !1, 1904 eventsPrefix: 'swiper', 1905 enabled: !0, 1906 focusableElements: 'input, select, option, textarea, button, video, label', 1907 width: null, 1908 height: null, 1909 preventInteractionOnTransition: !1, 1910 userAgent: null, 1911 url: null, 1912 edgeSwipeDetection: !1, 1913 edgeSwipeThreshold: 20, 1914 autoHeight: !1, 1915 setWrapperSize: !1, 1916 virtualTranslate: !1, 1917 effect: 'slide', 1918 breakpoints: void 0, 1919 breakpointsBase: 'window', 1920 spaceBetween: 0, 1921 slidesPerView: 1, 1922 slidesPerGroup: 1, 1923 slidesPerGroupSkip: 0, 1924 slidesPerGroupAuto: !1, 1925 centeredSlides: !1, 1926 centeredSlidesBounds: !1, 1927 slidesOffsetBefore: 0, 1928 slidesOffsetAfter: 0, 1929 normalizeSlideIndex: !0, 1930 centerInsufficientSlides: !1, 1931 watchOverflow: !0, 1932 roundLengths: !1, 1933 touchRatio: 1, 1934 touchAngle: 45, 1935 simulateTouch: !0, 1936 shortSwipes: !0, 1937 longSwipes: !0, 1938 longSwipesRatio: 0.5, 1939 longSwipesMs: 300, 1940 followFinger: !0, 1941 allowTouchMove: !0, 1942 threshold: 5, 1943 touchMoveStopPropagation: !1, 1944 touchStartPreventDefault: !0, 1945 touchStartForcePreventDefault: !1, 1946 touchReleaseOnEdges: !1, 1947 uniqueNavElements: !0, 1948 resistance: !0, 1949 resistanceRatio: 0.85, 1950 watchSlidesProgress: !1, 1951 grabCursor: !1, 1952 preventClicks: !0, 1953 preventClicksPropagation: !0, 1954 slideToClickedSlide: !1, 1955 loop: !1, 1956 loopAddBlankSlides: !0, 1957 loopAdditionalSlides: 0, 1958 loopPreventsSliding: !0, 1959 rewind: !1, 1960 allowSlidePrev: !0, 1961 allowSlideNext: !0, 1962 swipeHandler: null, 1963 noSwiping: !0, 1964 noSwipingClass: 'swiper-no-swiping', 1965 noSwipingSelector: null, 1966 passiveListeners: !0, 1967 maxBackfaceHiddenSlides: 10, 1968 containerModifierClass: 'swiper-', 1969 slideClass: 'swiper-slide', 1970 slideBlankClass: 'swiper-slide-blank', 1971 slideActiveClass: 'swiper-slide-active', 1972 slideVisibleClass: 'swiper-slide-visible', 1973 slideFullyVisibleClass: 'swiper-slide-fully-visible', 1974 slideNextClass: 'swiper-slide-next', 1975 slidePrevClass: 'swiper-slide-prev', 1976 wrapperClass: 'swiper-wrapper', 1977 lazyPreloaderClass: 'swiper-lazy-preloader', 1978 lazyPreloadPrevNext: 0, 1979 runCallbacksOnInit: !0, 1980 _emitClasses: !1, 1981 }; 1982 function Q(e, t) { 1983 return function (s) { 1984 void 0 === s && (s = {}); 1985 const a = Object.keys(s)[0], 1986 i = s[a]; 1987 'object' == typeof i && null !== i 1988 ? (!0 === e[a] && (e[a] = { enabled: !0 }), 1989 'navigation' === a && e[a] && e[a].enabled && !e[a].prevEl && !e[a].nextEl && (e[a].auto = !0), 1990 ['pagination', 'scrollbar'].indexOf(a) >= 0 && e[a] && e[a].enabled && !e[a].el && (e[a].auto = !0), 1991 a in e && 'enabled' in i 1992 ? ('object' != typeof e[a] || 'enabled' in e[a] || (e[a].enabled = !0), 1993 e[a] || (e[a] = { enabled: !1 }), 1994 p(t, s)) 1995 : p(t, s)) 1996 : p(t, s); 1997 }; 1998 } 1999 const J = { 2000 eventsEmitter: A, 2001 update: D, 2002 translate: G, 2003 transition: { 2004 setTransition: function (e, t) { 2005 const s = this; 2006 s.params.cssMode || 2007 ((s.wrapperEl.style.transitionDuration = `${e}ms`), 2008 (s.wrapperEl.style.transitionDelay = 0 === e ? '0ms' : '')), 2009 s.emit('setTransition', e, t); 2010 }, 2011 transitionStart: function (e, t) { 2012 void 0 === e && (e = !0); 2013 const s = this, 2014 { params: a } = s; 2015 a.cssMode || 2016 (a.autoHeight && s.updateAutoHeight(), N({ swiper: s, runCallbacks: e, direction: t, step: 'Start' })); 2017 }, 2018 transitionEnd: function (e, t) { 2019 void 0 === e && (e = !0); 2020 const s = this, 2021 { params: a } = s; 2022 (s.animating = !1), 2023 a.cssMode || (s.setTransition(0), N({ swiper: s, runCallbacks: e, direction: t, step: 'End' })); 2024 }, 2025 }, 2026 slide: H, 2027 loop: X, 2028 grabCursor: { 2029 setGrabCursor: function (e) { 2030 const t = this; 2031 if (!t.params.simulateTouch || (t.params.watchOverflow && t.isLocked) || t.params.cssMode) return; 2032 const s = 'container' === t.params.touchEventsTarget ? t.el : t.wrapperEl; 2033 t.isElement && (t.__preventObserver__ = !0), 2034 (s.style.cursor = 'move'), 2035 (s.style.cursor = e ? 'grabbing' : 'grab'), 2036 t.isElement && 2037 requestAnimationFrame(() => { 2038 t.__preventObserver__ = !1; 2039 }); 2040 }, 2041 unsetGrabCursor: function () { 2042 const e = this; 2043 (e.params.watchOverflow && e.isLocked) || 2044 e.params.cssMode || 2045 (e.isElement && (e.__preventObserver__ = !0), 2046 (e['container' === e.params.touchEventsTarget ? 'el' : 'wrapperEl'].style.cursor = ''), 2047 e.isElement && 2048 requestAnimationFrame(() => { 2049 e.__preventObserver__ = !1; 2050 })); 2051 }, 2052 }, 2053 events: { 2054 attachEvents: function () { 2055 const e = this, 2056 { params: t } = e; 2057 (e.onTouchStart = B.bind(e)), 2058 (e.onTouchMove = R.bind(e)), 2059 (e.onTouchEnd = q.bind(e)), 2060 (e.onDocumentTouchStart = j.bind(e)), 2061 t.cssMode && (e.onScroll = _.bind(e)), 2062 (e.onClick = V.bind(e)), 2063 (e.onLoad = W.bind(e)), 2064 U(e, 'on'); 2065 }, 2066 detachEvents: function () { 2067 U(this, 'off'); 2068 }, 2069 }, 2070 breakpoints: { 2071 setBreakpoint: function () { 2072 const e = this, 2073 { realIndex: t, initialized: s, params: a, el: i } = e, 2074 r = a.breakpoints; 2075 if (!r || (r && 0 === Object.keys(r).length)) return;
2076 const n = e.getBreakpoint(r, e.params.breakpointsBase, e.el); 2077 if (!n || e.currentBreakpoint === n) return; 2078 const l = (n in r ? r[n] : void 0) || e.originalParams, 2079 o = K(e, a), 2080 d = K(e, l), 2081 c = a.enabled; 2082 o && !d 2083 ? (i.classList.remove(`${a.containerModifierClass}grid`, `${a.containerModifierClass}grid-column`), 2084 e.emitContainerClasses()) 2085 : !o && 2086 d && 2087 (i.classList.add(`${a.containerModifierClass}grid`), 2088 ((l.grid.fill && 'column' === l.grid.fill) || (!l.grid.fill && 'column' === a.grid.fill)) && 2089 i.classList.add(`${a.containerModifierClass}grid-column`), 2090 e.emitContainerClasses()), 2091 ['navigation', 'pagination', 'scrollbar'].forEach((t) => { 2092 if (void 0 === l[t]) return; 2093 const s = a[t] && a[t].enabled, 2094 i = l[t] && l[t].enabled; 2095 s && !i && e[t].disable(), !s && i && e[t].enable(); 2096 }); 2097 const u = l.direction && l.direction !== a.direction, 2098 m = a.loop && (l.slidesPerView !== a.slidesPerView || u), 2099 h = a.loop; 2100 u && s && e.changeDirection(), p(e.params, l); 2101 const f = e.params.enabled, 2102 g = e.params.loop; 2103 Object.assign(e, { 2104 allowTouchMove: e.params.allowTouchMove, 2105 allowSlideNext: e.params.allowSlideNext, 2106 allowSlidePrev: e.params.allowSlidePrev, 2107 }), 2108 c && !f ? e.disable() : !c && f && e.enable(), 2109 (e.currentBreakpoint = n), 2110 e.emit('_beforeBreakpoint', l), 2111 s && 2112 (m 2113 ? (e.loopDestroy(), e.loopCreate(t), e.updateSlides()) 2114 : !h && g 2115 ? (e.loopCreate(t), e.updateSlides()) 2116 : h && !g && e.loopDestroy()), 2117 e.emit('breakpoint', l); 2118 }, 2119 getBreakpoint: function (e, t, s) { 2120 if ((void 0 === t && (t = 'window'), !e || ('container' === t && !s))) return; 2121 let a = !1; 2122 const i = r(), 2123 n = 'window' === t ? i.innerHeight : s.clientHeight, 2124 l = Object.keys(e).map((e) => { 2125 if ('string' == typeof e && 0 === e.indexOf('@')) { 2126 const t = parseFloat(e.substr(1)); 2127 return { value: n * t, point: e }; 2128 } 2129 return { value: e, point: e }; 2130 }); 2131 l.sort((e, t) => parseInt(e.value, 10) - parseInt(t.value, 10)); 2132 for (let e = 0; e < l.length; e += 1) { 2133 const { point: r, value: n } = l[e]; 2134 'window' === t ? i.matchMedia(`(min-width: ${n}px)`).matches && (a = r) : n <= s.clientWidth && (a = r); 2135 } 2136 return a || 'max'; 2137 }, 2138 }, 2139 checkOverflow: { 2140 checkOverflow: function () { 2141 const e = this, 2142 { isLocked: t, params: s } = e, 2143 { slidesOffsetBefore: a } = s; 2144 if (a) { 2145 const t = e.slides.length - 1, 2146 s = e.slidesGrid[t] + e.slidesSizesGrid[t] + 2 * a; 2147 e.isLocked = e.size > s; 2148 } else e.isLocked = 1 === e.snapGrid.length; 2149 !0 === s.allowSlideNext && (e.allowSlideNext = !e.isLocked), 2150 !0 === s.allowSlidePrev && (e.allowSlidePrev = !e.isLocked), 2151 t && t !== e.isLocked && (e.isEnd = !1), 2152 t !== e.isLocked && e.emit(e.isLocked ? 'lock' : 'unlock'); 2153 }, 2154 }, 2155 classes: { 2156 addClasses: function () { 2157 const e = this, 2158 { classNames: t, params: s, rtl: a, el: i, device: r } = e, 2159 n = (function (e, t) { 2160 const s = []; 2161 return ( 2162 e.forEach((e) => { 2163 'object' == typeof e 2164 ? Object.keys(e).forEach((a) => { 2165 e[a] && s.push(t + a); 2166 }) 2167 : 'string' == typeof e && s.push(t + e); 2168 }), 2169 s 2170 ); 2171 })( 2172 [ 2173 'initialized', 2174 s.direction, 2175 { 'free-mode': e.params.freeMode && s.freeMode.enabled }, 2176 { autoheight: s.autoHeight }, 2177 { rtl: a }, 2178 { grid: s.grid && s.grid.rows > 1 }, 2179 { 'grid-column': s.grid && s.grid.rows > 1 && 'column' === s.grid.fill }, 2180 { android: r.android }, 2181 { ios: r.ios }, 2182 { 'css-mode': s.cssMode }, 2183 { centered: s.cssMode && s.centeredSlides }, 2184 { 'watch-progress': s.watchSlidesProgress }, 2185 ], 2186 s.containerModifierClass 2187 ); 2188 t.push(...n), i.classList.add(...t), e.emitContainerClasses(); 2189 }, 2190 removeClasses: function () { 2191 const { el: e, classNames: t } = this; 2192 e.classList.remove(...t), this.emitContainerClasses(); 2193 }, 2194 }, 2195 }, 2196 ee = {}; 2197 class te { 2198 constructor() { 2199 let e, t; 2200 for (var s = arguments.length, i = new Array(s), r = 0; r < s; r++) i[r] = arguments[r]; 2201 1 === i.length && i[0].constructor && 'Object' === Object.prototype.toString.call(i[0]).slice(8, -1) 2202 ? (t = i[0]) 2203 : ([e, t] = i), 2204 t || (t = {}), 2205 (t = p({}, t)), 2206 e && !t.el && (t.el = e); 2207 const n = a(); 2208 if (t.el && 'string' == typeof t.el && n.querySelectorAll(t.el).length > 1) { 2209 const e = []; 2210 return ( 2211 n.querySelectorAll(t.el).forEach((s) => { 2212 const a = p({}, t, { el: s }); 2213 e.push(new te(a)); 2214 }), 2215 e 2216 ); 2217 } 2218 const l = this; 2219 (l.__swiper__ = !0), 2220 (l.support = L()), 2221 (l.device = I({ userAgent: t.userAgent })), 2222 (l.browser = z()), 2223 (l.eventsListeners = {}), 2224 (l.eventsAnyListeners = []), 2225 (l.modules = [...l.__modules__]), 2226 t.modules && Array.isArray(t.modules) && l.modules.push(...t.modules); 2227 const o = {};
2228 l.modules.forEach((e) => { 2229 e({ 2230 params: t, 2231 swiper: l, 2232 extendParams: Q(t, o), 2233 on: l.on.bind(l), 2234 once: l.once.bind(l), 2235 off: l.off.bind(l), 2236 emit: l.emit.bind(l), 2237 }); 2238 }); 2239 const d = p({}, Z, o); 2240 return ( 2241 (l.params = p({}, d, ee, t)), 2242 (l.originalParams = p({}, l.params)), 2243 (l.passedParams = p({}, t)), 2244 l.params && 2245 l.params.on && 2246 Object.keys(l.params.on).forEach((e) => { 2247 l.on(e, l.params.on[e]); 2248 }), 2249 l.params && l.params.onAny && l.onAny(l.params.onAny), 2250 Object.assign(l, { 2251 enabled: l.params.enabled, 2252 el: e, 2253 classNames: [], 2254 slides: [], 2255 slidesGrid: [], 2256 snapGrid: [], 2257 slidesSizesGrid: [], 2258 isHorizontal: () => 'horizontal' === l.params.direction, 2259 isVertical: () => 'vertical' === l.params.direction, 2260 activeIndex: 0, 2261 realIndex: 0, 2262 isBeginning: !0, 2263 isEnd: !1, 2264 translate: 0, 2265 previousTranslate: 0, 2266 progress: 0, 2267 velocity: 0, 2268 animating: !1, 2269 cssOverflowAdjustment() { 2270 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 2271 }, 2272 allowSlideNext: l.params.allowSlideNext, 2273 allowSlidePrev: l.params.allowSlidePrev, 2274 touchEventsData: { 2275 isTouched: void 0, 2276 isMoved: void 0, 2277 allowTouchCallbacks: void 0, 2278 touchStartTime: void 0, 2279 isScrolling: void 0, 2280 currentTranslate: void 0, 2281 startTranslate: void 0, 2282 allowThresholdMove: void 0, 2283 focusableElements: l.params.focusableElements, 2284 lastClickTime: 0, 2285 clickTimeout: void 0, 2286 velocities: [], 2287 allowMomentumBounce: void 0, 2288 startMoving: void 0, 2289 pointerId: null, 2290 touchId: null, 2291 }, 2292 allowClick: !0, 2293 allowTouchMove: l.params.allowTouchMove, 2294 touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, 2295 imagesToLoad: [], 2296 imagesLoaded: 0, 2297 }), 2298 l.emit('_swiper'), 2299 l.params.init && l.init(), 2300 l 2301 ); 2302 } 2303 getDirectionLabel(e) { 2304 return this.isHorizontal() 2305 ? e 2306 : { 2307 width: 'height', 2308 'margin-top': 'margin-left', 2309 'margin-bottom ': 'margin-right', 2310 'margin-left': 'margin-top', 2311 'margin-right': 'margin-bottom', 2312 'padding-left': 'padding-top', 2313 'padding-right': 'padding-bottom', 2314 marginRight: 'marginBottom', 2315 }[e]; 2316 } 2317 getSlideIndex(e) { 2318 const { slidesEl: t, params: s } = this, 2319 a = y(f(t, `.${s.slideClass}, swiper-slide`)[0]); 2320 return y(e) - a; 2321 } 2322 getSlideIndexByData(e) { 2323 return this.getSlideIndex(this.slides.filter((t) => 1 * t.getAttribute('data-swiper-slide-index') === e)[0]); 2324 } 2325 recalcSlides() { 2326 const { slidesEl: e, params: t } = this; 2327 this.slides = f(e, `.${t.slideClass}, swiper-slide`); 2328 } 2329 enable() { 2330 const e = this; 2331 e.enabled || ((e.enabled = !0), e.params.grabCursor && e.setGrabCursor(), e.emit('enable')); 2332 } 2333 disable() { 2334 const e = this; 2335 e.enabled && ((e.enabled = !1), e.params.grabCursor && e.unsetGrabCursor(), e.emit('disable')); 2336 } 2337 setProgress(e, t) { 2338 const s = this; 2339 e = Math.min(Math.max(e, 0), 1); 2340 const a = s.minTranslate(), 2341 i = (s.maxTranslate() - a) * e + a; 2342 s.translateTo(i, void 0 === t ? 0 : t), s.updateActiveIndex(), s.updateSlidesClasses(); 2343 } 2344 emitContainerClasses() { 2345 const e = this; 2346 if (!e.params._emitClasses || !e.el) return; 2347 const t = e.el.className 2348 .split(' ') 2349 .filter((t) => 0 === t.indexOf('swiper') || 0 === t.indexOf(e.params.containerModifierClass)); 2350 e.emit('_containerClasses', t.join(' ')); 2351 } 2352 getSlideClasses(e) { 2353 const t = this; 2354 return t.destroyed 2355 ? '' 2356 : e.className 2357 .split(' ') 2358 .filter((e) => 0 === e.indexOf('swiper-slide') || 0 === e.indexOf(t.params.slideClass)) 2359 .join(' '); 2360 } 2361 emitSlidesClasses() { 2362 const e = this; 2363 if (!e.params._emitClasses || !e.el) return; 2364 const t = [];
2365 e.slides.forEach((s) => { 2366 const a = e.getSlideClasses(s); 2367 t.push({ slideEl: s, classNames: a }), e.emit('_slideClass', s, a); 2368 }), 2369 e.emit('_slideClasses', t); 2370 } 2371 slidesPerViewDynamic(e, t) { 2372 void 0 === e && (e = 'current'), void 0 === t && (t = !1); 2373 const { params: s, slides: a, slidesGrid: i, slidesSizesGrid: r, size: n, activeIndex: l } = this; 2374 let o = 1; 2375 if ('number' == typeof s.slidesPerView) return s.slidesPerView; 2376 if (s.centeredSlides) { 2377 let e, 2378 t = a[l] ? Math.ceil(a[l].swiperSlideSize) : 0; 2379 for (let s = l + 1; s < a.length; s += 1) 2380 a[s] && !e && ((t += Math.ceil(a[s].swiperSlideSize)), (o += 1), t > n && (e = !0)); 2381 for (let s = l - 1; s >= 0; s -= 1) a[s] && !e && ((t += a[s].swiperSlideSize), (o += 1), t > n && (e = !0)); 2382 } else if ('current' === e) 2383 for (let e = l + 1; e < a.length; e += 1) { 2384 (t ? i[e] + r[e] - i[l] < n : i[e] - i[l] < n) && (o += 1); 2385 } 2386 else 2387 for (let e = l - 1; e >= 0; e -= 1) { 2388 i[l] - i[e] < n && (o += 1); 2389 } 2390 return o; 2391 } 2392 update() { 2393 const e = this; 2394 if (!e || e.destroyed) return; 2395 const { snapGrid: t, params: s } = e; 2396 function a() { 2397 const t = e.rtlTranslate ? -1 * e.translate : e.translate, 2398 s = Math.min(Math.max(t, e.maxTranslate()), e.minTranslate()); 2399 e.setTranslate(s), e.updateActiveIndex(), e.updateSlidesClasses(); 2400 } 2401 let i; 2402 if ( 2403 (s.breakpoints && e.setBreakpoint(), 2404 [...e.el.querySelectorAll('[loading="lazy"]')].forEach((t) => { 2405 t.complete && $(e, t); 2406 }), 2407 e.updateSize(), 2408 e.updateSlides(), 2409 e.updateProgress(), 2410 e.updateSlidesClasses(), 2411 s.freeMode && s.freeMode.enabled && !s.cssMode) 2412 ) 2413 a(), s.autoHeight && e.updateAutoHeight(); 2414 else { 2415 if (('auto' === s.slidesPerView || s.slidesPerView > 1) && e.isEnd && !s.centeredSlides) { 2416 const t = e.virtual && s.virtual.enabled ? e.virtual.slides : e.slides; 2417 i = e.slideTo(t.length - 1, 0, !1, !0); 2418 } else i = e.slideTo(e.activeIndex, 0, !1, !0); 2419 i || a(); 2420 } 2421 s.watchOverflow && t !== e.snapGrid && e.checkOverflow(), e.emit('update'); 2422 } 2423 changeDirection(e, t) { 2424 void 0 === t && (t = !0); 2425 const s = this, 2426 a = s.params.direction; 2427 return ( 2428 e || (e = 'horizontal' === a ? 'vertical' : 'horizontal'), 2429 e === a || 2430 ('horizontal' !== e && 'vertical' !== e) || 2431 (s.el.classList.remove(`${s.params.containerModifierClass}${a}`), 2432 s.el.classList.add(`${s.params.containerModifierClass}${e}`), 2433 s.emitContainerClasses(), 2434 (s.params.direction = e), 2435 s.slides.forEach((t) => { 2436 'vertical' === e ? (t.style.width = '') : (t.style.height = ''); 2437 }), 2438 s.emit('changeDirection'), 2439 t && s.update()), 2440 s 2441 ); 2442 } 2443 changeLanguageDirection(e) { 2444 const t = this; 2445 (t.rtl && 'rtl' === e) || 2446 (!t.rtl && 'ltr' === e) || 2447 ((t.rtl = 'rtl' === e), 2448 (t.rtlTranslate = 'horizontal' === t.params.direction && t.rtl), 2449 t.rtl 2450 ? (t.el.classList.add(`${t.params.containerModifierClass}rtl`), (t.el.dir = 'rtl')) 2451 : (t.el.classList.remove(`${t.params.containerModifierClass}rtl`), (t.el.dir = 'ltr')), 2452 t.update()); 2453 } 2454 mount(e) { 2455 const t = this; 2456 if (t.mounted) return !0; 2457 let s = e || t.params.el; 2458 if (('string' == typeof s && (s = document.querySelector(s)), !s)) return !1; 2459 (s.swiper = t), 2460 s.parentNode && 2461 s.parentNode.host && 2462 s.parentNode.host.nodeName === t.params.swiperElementNodeName.toUpperCase() && 2463 (t.isElement = !0); 2464 const a = () => `.${(t.params.wrapperClass || '').trim().split(' ').join('.')}`; 2465 let i = (() => { 2466 if (s && s.shadowRoot && s.shadowRoot.querySelector) { 2467 return s.shadowRoot.querySelector(a()); 2468 } 2469 return f(s, a())[0]; 2470 })(); 2471 return ( 2472 !i && 2473 t.params.createElements && 2474 ((i = v('div', t.params.wrapperClass)), 2475 s.append(i), 2476 f(s, `.${t.params.slideClass}`).forEach((e) => { 2477 i.append(e); 2478 })), 2479 Object.assign(t, { 2480 el: s, 2481 wrapperEl: i, 2482 slidesEl: t.isElement && !s.parentNode.host.slideSlots ? s.parentNode.host : i, 2483 hostEl: t.isElement ? s.parentNode.host : s, 2484 mounted: !0, 2485 rtl: 'rtl' === s.dir.toLowerCase() || 'rtl' === b(s, 'direction'), 2486 rtlTranslate: 2487 'horizontal' === t.params.direction && ('rtl' === s.dir.toLowerCase() || 'rtl' === b(s, 'direction')),
2488 wrongRTL: '-webkit-box' === b(i, 'display'), 2489 }), 2490 !0 2491 ); 2492 } 2493 init(e) { 2494 const t = this; 2495 if (t.initialized) return t; 2496 if (!1 === t.mount(e)) return t; 2497 t.emit('beforeInit'), 2498 t.params.breakpoints && t.setBreakpoint(), 2499 t.addClasses(), 2500 t.updateSize(), 2501 t.updateSlides(), 2502 t.params.watchOverflow && t.checkOverflow(), 2503 t.params.grabCursor && t.enabled && t.setGrabCursor(), 2504 t.params.loop && t.virtual && t.params.virtual.enabled 2505 ? t.slideTo(t.params.initialSlide + t.virtual.slidesBefore, 0, t.params.runCallbacksOnInit, !1, !0) 2506 : t.slideTo(t.params.initialSlide, 0, t.params.runCallbacksOnInit, !1, !0), 2507 t.params.loop && t.loopCreate(), 2508 t.attachEvents(); 2509 const s = [...t.el.querySelectorAll('[loading="lazy"]')]; 2510 return ( 2511 t.isElement && s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')), 2512 s.forEach((e) => { 2513 e.complete 2514 ? $(t, e) 2515 : e.addEventListener('load', (e) => { 2516 $(t, e.target); 2517 }); 2518 }), 2519 O(t), 2520 (t.initialized = !0), 2521 O(t), 2522 t.emit('init'), 2523 t.emit('afterInit'), 2524 t 2525 ); 2526 } 2527 destroy(e, t) { 2528 void 0 === e && (e = !0), void 0 === t && (t = !0); 2529 const s = this, 2530 { params: a, el: i, wrapperEl: r, slides: n } = s; 2531 return ( 2532 void 0 === s.params || 2533 s.destroyed || 2534 (s.emit('beforeDestroy'), 2535 (s.initialized = !1), 2536 s.detachEvents(), 2537 a.loop && s.loopDestroy(), 2538 t && 2539 (s.removeClasses(), 2540 i.removeAttribute('style'), 2541 r.removeAttribute('style'), 2542 n && 2543 n.length && 2544 n.forEach((e) => { 2545 e.classList.remove( 2546 a.slideVisibleClass, 2547 a.slideFullyVisibleClass, 2548 a.slideActiveClass, 2549 a.slideNextClass, 2550 a.slidePrevClass 2551 ), 2552 e.removeAttribute('style'), 2553 e.removeAttribute('data-swiper-slide-index'); 2554 })), 2555 s.emit('destroy'), 2556 Object.keys(s.eventsListeners).forEach((e) => { 2557 s.off(e); 2558 }), 2559 !1 !== e && 2560 ((s.el.swiper = null), 2561 (function (e) { 2562 const t = e; 2563 Object.keys(t).forEach((e) => { 2564 try { 2565 t[e] = null; 2566 } catch (e) {} 2567 try { 2568 delete t[e]; 2569 } catch (e) {} 2570 }); 2571 })(s)), 2572 (s.destroyed = !0)), 2573 null 2574 ); 2575 } 2576 static extendDefaults(e) { 2577 p(ee, e); 2578 } 2579 static get extendedDefaults() { 2580 return ee; 2581 } 2582 static get defaults() { 2583 return Z; 2584 } 2585 static installModule(e) { 2586 te.prototype.__modules__ || (te.prototype.__modules__ = []); 2587 const t = te.prototype.__modules__; 2588 'function' == typeof e && t.indexOf(e) < 0 && t.push(e); 2589 } 2590 static use(e) { 2591 return Array.isArray(e) ? (e.forEach((e) => te.installModule(e)), te) : (te.installModule(e), te); 2592 } 2593 } 2594 function se(e, t, s, a) { 2595 return ( 2596 e.params.createElements && 2597 Object.keys(a).forEach((i) => { 2598 if (!s[i] && !0 === s.auto) { 2599 let r = f(e.el, `.${a[i]}`)[0]; 2600 r || ((r = v('div', a[i])), (r.className = a[i]), e.el.append(r)), (s[i] = r), (t[i] = r); 2601 } 2602 }), 2603 s 2604 ); 2605 } 2606 function ae(e) { 2607 return ( 2608 void 0 === e && (e = ''), 2609 `.${e 2610 .trim() 2611 .replace(/([\.:!+\/])/g, '\\$1') 2612 .replace(/ /g, '.')}` 2613 ); 2614 } 2615 function ie(e) { 2616 const t = this, 2617 { params: s, slidesEl: a } = t; 2618 s.loop && t.loopDestroy(); 2619 const i = (e) => { 2620 if ('string' == typeof e) { 2621 const t = document.createElement('div'); 2622 (t.innerHTML = e), a.append(t.children[0]), (t.innerHTML = ''); 2623 } else a.append(e); 2624 }; 2625 if ('object' == typeof e && 'length' in e) for (let t = 0; t < e.length; t += 1) e[t] && i(e[t]); 2626 else i(e); 2627 t.recalcSlides(), s.loop && t.loopCreate(), (s.observer && !t.isElement) || t.update(
2627); 2628 } 2629 function re(e) { 2630 const t = this, 2631 { params: s, activeIndex: a, slidesEl: i } = t; 2632 s.loop && t.loopDestroy(); 2633 let r = a + 1; 2634 const n = (e) => { 2635 if ('string' == typeof e) { 2636 const t = document.createElement('div'); 2637 (t.innerHTML = e), i.prepend(t.children[0]), (t.innerHTML = ''); 2638 } else i.prepend(e); 2639 }; 2640 if ('object' == typeof e && 'length' in e) { 2641 for (let t = 0; t < e.length; t += 1) e[t] && n(e[t]); 2642 r = a + e.length; 2643 } else n(e); 2644 t.recalcSlides(), s.loop && t.loopCreate(), (s.observer && !t.isElement) || t.update(), t.slideTo(r, 0, !1); 2645 } 2646 function ne(e, t) { 2647 const s = this, 2648 { params: a, activeIndex: i, slidesEl: r } = s; 2649 let n = i; 2650 a.loop && ((n -= s.loopedSlides), s.loopDestroy(), s.recalcSlides()); 2651 const l = s.slides.length; 2652 if (e <= 0) return void s.prependSlide(t); 2653 if (e >= l) return void s.appendSlide(t); 2654 let o = n > e ? n + 1 : n; 2655 const d = []; 2656 for (let t = l - 1; t >= e; t -= 1) { 2657 const e = s.slides[t]; 2658 e.remove(), d.unshift(e); 2659 } 2660 if ('object' == typeof t && 'length' in t) { 2661 for (let e = 0; e < t.length; e += 1) t[e] && r.append(t[e]); 2662 o = n > e ? n + t.length : n; 2663 } else r.append(t); 2664 for (let e = 0; e < d.length; e += 1) r.append(d[e]); 2665 s.recalcSlides(), 2666 a.loop && s.loopCreate(), 2667 (a.observer && !s.isElement) || s.update(), 2668 a.loop ? s.slideTo(o + s.loopedSlides, 0, !1) : s.slideTo(o, 0, !1); 2669 } 2670 function le(e) { 2671 const t = this, 2672 { params: s, activeIndex: a } = t; 2673 let i = a; 2674 s.loop && ((i -= t.loopedSlides), t.loopDestroy()); 2675 let r, 2676 n = i; 2677 if ('object' == typeof e && 'length' in e) { 2678 for (let s = 0; s < e.length; s += 1) (r = e[s]), t.slides[r] && t.slides[r].remove(), r < n && (n -= 1); 2679 n = Math.max(n, 0); 2680 } else (r = e), t.slides[r] && t.slides[r].remove(), r < n && (n -= 1), (n = Math.max(n, 0)); 2681 t.recalcSlides(), 2682 s.loop && t.loopCreate(), 2683 (s.observer && !t.isElement) || t.update(), 2684 s.loop ? t.slideTo(n + t.loopedSlides, 0, !1) : t.slideTo(n, 0, !1); 2685 } 2686 function oe() { 2687 const e = this, 2688 t = []; 2689 for (let s = 0; s < e.slides.length; s += 1) t.push(s); 2690 e.removeSlide(t); 2691 } 2692 function de(e) { 2693 const { 2694 effect: t, 2695 swiper: s, 2696 on: a, 2697 setTranslate: i, 2698 setTransition: r, 2699 overwriteParams: n, 2700 perspective: l, 2701 recreateShadows: o, 2702 getEffectParams: d, 2703 } = e;
2704 let c; 2705 a('beforeInit', () => { 2706 if (s.params.effect !== t) return; 2707 s.classNames.push(`${s.params.containerModifierClass}${t}`), 2708 l && l() && s.classNames.push(`${s.params.containerModifierClass}3d`); 2709 const e = n ? n() : {}; 2710 Object.assign(s.params, e), Object.assign(s.originalParams, e); 2711 }), 2712 a('setTranslate', () => { 2713 s.params.effect === t && i(); 2714 }), 2715 a('setTransition', (e, a) => { 2716 s.params.effect === t && r(a); 2717 }), 2718 a('transitionEnd', () => { 2719 if (s.params.effect === t && o) { 2720 if (!d || !d().slideShadows) return; 2721 s.slides.forEach((e) => { 2722 e.querySelectorAll( 2723 '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' 2724 ).forEach((e) => e.remove()); 2725 }), 2726 o(); 2727 } 2728 }), 2729 a('virtualUpdate', () => { 2730 s.params.effect === t && 2731 (s.slides.length || (c = !0), 2732 requestAnimationFrame(() => { 2733 c && s.slides && s.slides.length && (i(), (c = !1)); 2734 })); 2735 }); 2736 } 2737 function ce(e, t) { 2738 const s = h(t); 2739 return s !== t && ((s.style.backfaceVisibility = 'hidden'), (s.style['-webkit-backface-visibility'] = 'hidden')), s; 2740 } 2741 function pe(e) { 2742 let { swiper: t, duration: s, transformElements: a, allSlides: i } = e; 2743 const { activeIndex: r } = t; 2744 if (t.params.virtualTranslate && 0 !== s) { 2745 let e, 2746 s = !1; 2747 (e = i 2748 ? a 2749 : a.filter((e) => { 2750 const s = e.classList.contains('swiper-slide-transform') 2751 ? ((e) => { 2752 if (!e.parentElement) return t.slides.filter((t) => t.shadowRoot && t.shadowRoot === e.parentNode)[0]; 2753 return e.parentElement; 2754 })(e) 2755 : e; 2756 return t.getSlideIndex(s) === r; 2757 })), 2758 e.forEach((e) => { 2759 x(e, () => { 2760 if (s) return; 2761 if (!t || t.destroyed) return; 2762 (s = !0), (t.animating = !1); 2763 const e = new window.CustomEvent('transitionend', { bubbles: !0, cancelable: !0 }); 2764 t.wrapperEl.dispatchEvent(e); 2765 }); 2766 }); 2767 } 2768 } 2769 function ue(e, t, s) { 2770 const a = `swiper-slide-shadow${s ? `-${s}` : ''}${e ? ` swiper-slide-shadow-${e}` : ''}`, 2771 i = h(t); 2772 let r = i.querySelector(`.${a.split(' ').join('.')}`); 2773 return r || ((r = v('div', a.split(' '))), i.append(r)), r; 2774 } 2775 Object.keys(J).forEach((e) => {
2776 Object.keys(J[e]).forEach((t) => { 2777 te.prototype[t] = J[e][t]; 2778 }); 2779 }), 2780 te.use([ 2781 function (e) { 2782 let { swiper: t, on: s, emit: a } = e; 2783 const i = r(); 2784 let n = null, 2785 l = null; 2786 const o = () => { 2787 t && !t.destroyed && t.initialized && (a('beforeResize'), a('resize')); 2788 }, 2789 d = () => { 2790 t && !t.destroyed && t.initialized && a('orientationchange'); 2791 }; 2792 s('init', () => { 2793 t.params.resizeObserver && void 0 !== i.ResizeObserver 2794 ? t && 2795 !t.destroyed && 2796 t.initialized && 2797 ((n = new ResizeObserver((e) => { 2798 l = i.requestAnimationFrame(() => { 2799 const { width: s, height: a } = t; 2800 let i = s, 2801 r = a; 2802 e.forEach((e) => { 2803 let { contentBoxSize: s, contentRect: a, target: n } = e; 2804 (n && n !== t.el) || 2805 ((i = a ? a.width : (s[0] || s).inlineSize), (r = a ? a.height : (s[0] || s).blockSize)); 2806 }), 2807 (i === s && r === a) || o(); 2808 }); 2809 })), 2810 n.observe(t.el)) 2811 : (i.addEventListener('resize', o), i.addEventListener('orientationchange', d)); 2812 }), 2813 s('destroy', () => { 2814 l && i.cancelAnimationFrame(l), 2815 n && n.unobserve && t.el && (n.unobserve(t.el), (n = null)), 2816 i.removeEventListener('resize', o), 2817 i.removeEventListener('orientationchange', d); 2818 }); 2819 }, 2820 function (e) { 2821 let { swiper: t, extendParams: s, on: a, emit: i } = e; 2822 const n = [], 2823 l = r(), 2824 o = function (e, s) { 2825 void 0 === s && (s = {}); 2826 const a = new (l.MutationObserver || l.WebkitMutationObserver)((e) => { 2827 if (t.__preventObserver__) return; 2828 if (1 === e.length) return void i('observerUpdate', e[0]); 2829 const s = function () { 2830 i('observerUpdate', e[0]); 2831 }; 2832 l.requestAnimationFrame ? l.requestAnimationFrame(s) : l.setTimeout(s, 0); 2833 }); 2834 a.observe(e, { 2835 attributes: void 0 === s.attributes || s.attributes, 2836 childList: void 0 === s.childList || s.childList, 2837 characterData: void 0 === s.characterData || s.characterData, 2838 }), 2839 n.push(a); 2840 }; 2841 s({ observer: !1, observeParents: !1, observeSlideChildren: !1 }), 2842 a('init', () => { 2843 if (t.params.observer) { 2844 if (t.params.observeParents) { 2845 const e = E(t.hostEl); 2846 for (let t = 0; t < e.length; t += 1) o(e[t]); 2847 } 2848 o(t.hostEl, { childList: t.params.observeSlideChildren }), o(t.wrapperEl, { attributes: !1 }); 2849 } 2850 }), 2851 a('destroy', () => { 2852 n.forEach((e) => { 2853 e.disconnect(); 2854 }), 2855 n.splice(0, n.length); 2856 }); 2857 }, 2858 ]); 2859 const me = [ 2860 function (e) { 2861 let t, 2862 { swiper: s, extendParams: i, on: r, emit: n } = e; 2863 i({ 2864 virtual: { 2865 enabled: !1, 2866 slides: [], 2867 cache: !0, 2868 renderSlide: null, 2869 renderExternal: null, 2870 renderExternalUpdate: !0, 2871 addSlidesBefore: 0, 2872 addSlidesAfter: 0, 2873 }, 2874 }); 2875 const l = a(); 2876 s.virtual = { cache: {}, from: void 0, to: void 0, slides: [], offset: 0, slidesGrid: [] }; 2877 const o = l.createElement('div'); 2878 function d(e, t) { 2879 const a = s.params.virtual; 2880 if (a.cache && s.virtual.cache[t]) return s.virtual.cache[t]; 2881 let i; 2882 return ( 2883 a.renderSlide 2884 ? ((i = a.renderSlide.call(s, e, t)), 'string' == typeof i && ((o.innerHTML = i), (i = o.children[0]))) 2885 : (i = s.isElement ? v('swiper-slide') : v('div', s.params.slideClass)), 2886 i.setAttribute('data-swiper-slide-index', t), 2887 a.renderSlide || (i.innerHTML = e), 2888 a.cache && (s.virtual.cache[t] = i), 2889 i 2890 ); 2891 } 2892 function c(e) { 2893 const { slidesPerView: t, slidesPerGroup: a, centeredSlides: i, loop: r } = s.params, 2894 { addSlidesBefore: l, addSlidesAfter: o } = s.params.virtual, 2895 { from: c, to: p, slides: u, slidesGrid: m, offset: h } = s.virtual; 2896 s.params.cssMode || s.updateActiveIndex(); 2897 const g = s.activeIndex || 0; 2898 let v, w, b; 2899 (v = s.rtlTranslate ? 'right' : s.isHorizontal() ? 'left' : 'top'), 2900 i 2901 ? ((w = Math.floor(t / 2) + a + o), (b = Math.floor(t / 2) + a + l)) 2902 : ((w = t + (a - 1) + o), (b = (r ? t : a) + l)); 2903 let y = g - b, 2904 E = g + w; 2905 r || ((y = Math.max(y, 0)), (E = Math.min(E, u.length - 1))); 2906 let x = (s.slidesGrid[y] || 0) - (s.slidesGrid[0] || 0); 2907 function S() { 2908 s.updateSlides(), s.updateProgress(), s.updateSlidesClasses(), n('virtualUpdate'); 2909 } 2910 if ( 2911 (r && g >= b 2912 ? ((y -= b), i || (x += s.slidesGrid[0])) 2913 : r && g < b && ((y = -b), i && (x += s.slidesGrid[0])), 2914 Object.assign(s.virtual, { 2915 from: y, 2916 to: E, 2917 offset: x, 2918 slidesGrid: s.slidesGrid, 2919 slidesBefore: b, 2920 slidesAfter: w, 2921 }), 2922 c === y && p === E && !e) 2923 ) 2924 return ( 2925 s.slidesGrid !== m && 2926 x !== h &&
2927 s.slides.forEach((e) => { 2928 e.style[v] = x - Math.abs(s.cssOverflowAdjustment()) + 'px'; 2929 }), 2930 s.updateProgress(), 2931 void n('virtualUpdate') 2932 ); 2933 if (s.params.virtual.renderExternal) 2934 return ( 2935 s.params.virtual.renderExternal.call(s, { 2936 offset: x, 2937 from: y, 2938 to: E, 2939 slides: (function () { 2940 const e = []; 2941 for (let t = y; t <= E; t += 1) e.push(u[t]); 2942 return e; 2943 })(), 2944 }), 2945 void (s.params.virtual.renderExternalUpdate ? S() : n('virtualUpdate')) 2946 ); 2947 const T = [], 2948 M = [], 2949 C = (e) => { 2950 let t = e; 2951 return e < 0 ? (t = u.length + e) : t >= u.length && (t -= u.length), t; 2952 }; 2953 if (e) 2954 s.slides 2955 .filter((e) => e.matches(`.${s.params.slideClass}, swiper-slide`)) 2956 .forEach((e) => { 2957 e.remove(); 2958 }); 2959 else 2960 for (let e = c; e <= p; e += 1) 2961 if (e < y || e > E) { 2962 const t = C(e); 2963 s.slides 2964 .filter((e) => 2965 e.matches( 2966 `.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]` 2967 ) 2968 ) 2969 .forEach((e) => { 2970 e.remove(); 2971 }); 2972 } 2973 const P = r ? -u.length : 0, 2974 L = r ? 2 * u.length : u.length; 2975 for (let t = P; t < L; t += 1) 2976 if (t >= y && t <= E) { 2977 const s = C(t); 2978 void 0 === p || e ? M.push(s) : (t > p && M.push(s), t < c && T.push(s)); 2979 } 2980 if ( 2981 (M.forEach((e) => { 2982 s.slidesEl.append(d(u[e], e)); 2983 }), 2984 r) 2985 ) 2986 for (let e = T.length - 1; e >= 0; e -= 1) { 2987 const t = T[e]; 2988 s.slidesEl.prepend(d(u[t], t)); 2989 } 2990 else 2991 T.sort((e, t) => t - e), 2992 T.forEach((e) => { 2993 s.slidesEl.prepend(d(u[e], e)); 2994 }); 2995 f(s.slidesEl, '.swiper-slide, swiper-slide').forEach((e) => { 2996 e.style[v] = x - Math.abs(s.cssOverflowAdjustment()) + 'px'; 2997 }), 2998 S(); 2999 } 3000 r('beforeInit', () => { 3001 if (!s.params.virtual.enabled) return; 3002 let e; 3003 if (void 0 === s.passedParams.virtual.slides) { 3004 const t = [...s.slidesEl.children].filter((e) => e.matches(`.${s.params.slideClass}, swiper-slide`)); 3005 t && 3006 t.length && 3007 ((s.virtual.slides = [...t]), 3008 (e = !0), 3009 t.forEach((e, t) => { 3010 e.setAttribute('data-swiper-slide-index', t), (s.virtual.cache[t] = e), e.remove(); 3011 })); 3012 } 3013 e || (s.virtual.slides = s.params.virtual.slides), 3014 s.classNames.push(`${s.params.containerModifierClass}virtual`), 3015 (s.params.watchSlidesProgress = !0), 3016 (s.originalParams.watchSlidesProgress = !0), 3017 c(); 3018 }), 3019 r('setTranslate', () => { 3020 s.params.virtual.enabled && 3021 (s.params.cssMode && !s._immediateVirtual 3022 ? (clearTimeout(t), 3023 (t = setTimeout(() => { 3024 c(); 3025 }, 100))) 3026 : c()); 3027 }), 3028 r('init update resize', () => { 3029 s.params.virtual.enabled && s.params.cssMode && u(s.wrapperEl, '--swiper-virtual-size', `${s.virtualSize}px`); 3030 }), 3031 Object.assign(s.virtual, { 3032 appendSlide: function (e) { 3033 if ('object' == typeof e && 'length' in e) 3034 for (let t = 0; t < e.length; t += 1) e[t] && s.virtual.slides.push(e[t]); 3035 else s.virtual.slides.push(e); 3036 c(!0); 3037 }, 3038 prependSlide: function (e) { 3039 const t = s.activeIndex; 3040 let a = t + 1, 3041 i = 1; 3042 if (Array.isArray(e)) { 3043 for (let t = 0; t < e.length; t += 1) e[t] && s.virtual.slides.unshift(e[t]); 3044 (a = t + e.length), (i = e.length); 3045 } else s.virtual.slides.unshift(e); 3046 if (s.params.virtual.cache) { 3047 const e = s.virtual.cache, 3048 t = {}; 3049 Object.keys(e).forEach((s) => { 3050 const a = e[s], 3051 r = a.getAttribute('data-swiper-slide-index'); 3052 r && a.setAttribute('data-swiper-slide-index', parseInt(r, 10) + i), (t[parseInt(s, 10) + i] = a); 3053 }), 3054 (s.virtual.cache = t); 3055 } 3056 c(!0), s.slideTo(a, 0); 3057 }, 3058 removeSlide: function (e) { 3059 if (null == e) return; 3060 let t = s.activeIndex; 3061 if (Array.isArray(e)) 3062 for (let a = e.length - 1; a >= 0; a -= 1) 3063 s.params.virtual.cache && 3064 (delete s.virtual.cache[e[a]], 3065 Object.keys(s.virtual.cache).forEach((t) => { 3066 t > e && 3067 ((s.virtual.cache[t - 1] = s.virtual.cache[t]), 3068 s.virtual.cache[t - 1].setAttribute('data-swiper-slide-index', t - 1), 3069 delete s.virtual.cache[t]); 3070 })), 3071 s.virtual.slides.splice(e[a], 1), 3072 e[a] < t && (t -= 1), 3073 (t = Math.max(t, 0)); 3074 else 3075 s.params.virtual.cache && 3076 (delete s.virtual.cache[e], 3077 Object.keys(s.virtual.cache).forEach((t) => { 3078 t > e && 3079 ((s.virtual.cache[t - 1] = s.virtual.cache[t]), 3080 s.virtual.cache[t - 1].setAttribute('data-swiper-slide-index', t - 1), 3081 delete s.virtual.cache[t]); 3082 })), 3083 s.virtual.slides.splice(e, 1), 3084 e < t && (t -= 1), 3085 (t = Math.max(t, 0)); 3086 c(!0), s.slideTo(t, 0); 3087 }, 3088 removeAllSlides: function () { 3089 (s.virtual.slides = []), s.params.virtual.cache && (s.virtual.cache = {}), c(!0), s.slideTo(0, 0); 3090 }, 3091 update: c, 3092 }); 3093 }, 3094 function (e) { 3095 let { swiper: t, extendParams: s, on: i, emit: n } = e; 3096 const l = a(), 3097 o = r(); 3098 function d(e) { 3099 if (!t.enabled) return; 3100 const { rtlTranslate: s } = t; 3101 let a = e; 3102 a.originalEvent && (a = a.originalEvent); 3103 const i = a.keyCode || a.charCode, 3104 r = t.params.keyboard.pageUpDown, 3105 d = r && 33 === i, 3106 c = r && 34 === i, 3107 p = 37 === i, 3108 u = 39 === i, 3109 m = 38 === i, 3110 h = 40 === i; 3111 if (!t.allowSlideNext && ((t.isHorizontal() && u) || (t.isVertical() && h) || c)) return !1; 3112 if (!t.allowSlidePrev && ((t.isHorizontal() && p) || (t.isVertical() && m) || d)) return !1; 3113 if ( 3114 !( 3115 a.shiftKey || 3116 a.altKey || 3117 a.ctrlKey || 3118 a.metaKey || 3119 (l.activeElement && 3120 l.activeElement.nodeName && 3121 ('input' === l.activeElement.nodeName.toLowerCase() || 3122 'textarea' === l.activeElement.nodeName.toLowerCase())) 3123 ) 3124 ) { 3125 if (t.params.keyboard.onlyInViewport && (d || c || p || u || m || h)) { 3126 let e = !1; 3127 if ( 3128 E(t.el, `.${t.params.slideClass}, swiper-slide`).length > 0 && 3129 0 === E(t.el, `.${t.params.slideActiveClass}`).length 3130 ) 3131 return; 3132 const a = t.el, 3133 i = a.clientWidth,
3134 r = a.clientHeight, 3135 n = o.innerWidth, 3136 l = o.innerHeight, 3137 d = w(a); 3138 s && (d.left -= a.scrollLeft); 3139 const c = [ 3140 [d.left, d.top], 3141 [d.left + i, d.top], 3142 [d.left, d.top + r], 3143 [d.left + i, d.top + r], 3144 ]; 3145 for (let t = 0; t < c.length; t += 1) { 3146 const s = c[t]; 3147 if (s[0] >= 0 && s[0] <= n && s[1] >= 0 && s[1] <= l) { 3148 if (0 === s[0] && 0 === s[1]) continue; 3149 e = !0; 3150 } 3151 } 3152 if (!e) return; 3153 } 3154 t.isHorizontal() 3155 ? ((d || c || p || u) && (a.preventDefault ? a.preventDefault() : (a.returnValue = !1)), 3156 (((c || u) && !s) || ((d || p) && s)) && t.slideNext(), 3157 (((d || p) && !s) || ((c || u) && s)) && t.slidePrev()) 3158 : ((d || c || m || h) && (a.preventDefault ? a.preventDefault() : (a.returnValue = !1)), 3159 (c || h) && t.slideNext(), 3160 (d || m) && t.slidePrev()), 3161 n('keyPress', i); 3162 } 3163 } 3164 function c() { 3165 t.keyboard.enabled || (l.addEventListener('keydown', d), (t.keyboard.enabled = !0)); 3166 } 3167 function p() { 3168 t.keyboard.enabled && (l.removeEventListener('keydown', d), (t.keyboard.enabled = !1)); 3169 } 3170 (t.keyboard = { enabled: !1 }), 3171 s({ keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 } }), 3172 i('init', () => { 3173 t.params.keyboard.enabled && c(); 3174 }), 3175 i('destroy', () => { 3176 t.keyboard.enabled && p(); 3177 }), 3178 Object.assign(t.keyboard, { enable: c, disable: p }); 3179 }, 3180 function (e) { 3181 let { swiper: t, extendParams: s, on: a, emit: i } = e; 3182 const n = r(); 3183 let d; 3184 s({ 3185 mousewheel: { 3186 enabled: !1, 3187 releaseOnEdges: !1, 3188 invert: !1, 3189 forceToAxis: !1, 3190 sensitivity: 1, 3191 eventsTarget: 'container', 3192 thresholdDelta: null, 3193 thresholdTime: null, 3194 noMousewheelClass: 'swiper-no-mousewheel', 3195 }, 3196 }), 3197 (t.mousewheel = { enabled: !1 }); 3198 let c, 3199 p = o(); 3200 const u = []; 3201 function m() { 3202 t.enabled && (t.mouseEntered = !0); 3203 } 3204 function h() { 3205 t.enabled && (t.mouseEntered = !1); 3206 } 3207 function f(e) { 3208 return ( 3209 !(t.params.mousewheel.thresholdDelta && e.delta < t.params.mousewheel.thresholdDelta) && 3210 !(t.params.mousewheel.thresholdTime && o() - p < t.params.mousewheel.thresholdTime) && 3211 ((e.delta >= 6 && o() - p < 60) || 3212 (e.direction < 0 3213 ? (t.isEnd && !t.params.loop) || t.animating || (t.slideNext(), i('scroll', e.raw)) 3214 : (t.isBeginning && !t.params.loop) || t.animating || (t.slidePrev(), i('scroll', e.raw)), 3215 (p = new n.Date().getTime()), 3216 !1)) 3217 ); 3218 } 3219 function g(e) { 3220 let s = e, 3221 a = !0; 3222 if (!t.enabled) return; 3223 if (e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`)) return; 3224 const r = t.params.mousewheel; 3225 t.params.cssMode && s.preventDefault(); 3226 let n = t.el; 3227 'container' !== t.params.mousewheel.eventsTarget && 3228 (n = document.querySelector(t.params.mousewheel.eventsTarget)); 3229 const p = n && n.contains(s.target); 3230 if (!t.mouseEntered && !p && !r.releaseOnEdges) return !0; 3231 s.originalEvent && (s = s.originalEvent); 3232 let m = 0; 3233 const h = t.rtlTranslate ? -1 : 1, 3234 g = (function (e) { 3235 let t = 0, 3236 s = 0, 3237 a = 0, 3238 i = 0; 3239 return ( 3240 'detail' in e && (s = e.detail), 3241 'wheelDelta' in e && (s = -e.wheelDelta / 120), 3242 'wheelDeltaY' in e && (s = -e.wheelDeltaY / 120), 3243 'wheelDeltaX' in e && (t = -e.wheelDeltaX / 120), 3244 'axis' in e && e.axis === e.HORIZONTAL_AXIS && ((t = s), (s = 0)), 3245 (a = 10 * t), 3246 (i = 10 * s), 3247 'deltaY' in e && (i = e.deltaY), 3248 'deltaX' in e && (a = e.deltaX), 3249 e.shiftKey && !a && ((a = i), (i = 0)), 3250 (a || i) && e.deltaMode && (1 === e.deltaMode ? ((a *= 40), (i *= 40)) : ((a *= 800), (i *= 800))), 3251 a && !t && (t = a < 1 ? -1 : 1), 3252 i && !s && (s = i < 1 ? -1 : 1), 3253 { spinX: t, spinY: s, pixelX: a, pixelY: i } 3254 ); 3255 })(s); 3256 if (r.forceToAxis) 3257 if (t.isHorizontal()) { 3258 if (!(Math.abs(g.pixelX) > Math.abs(g.pixelY))) return !0; 3259 m = -g.pixelX * h; 3260 } else { 3261 if (!(Math.abs(g.pixelY) > Math.abs(g.pixelX))) return !0; 3262 m = -g.pixelY; 3263 } 3264 else m = Math.abs(g.pixelX) > Math.abs(g.pixelY) ? -g.pixelX * h : -g.pixelY; 3265 if (0 === m) return !0; 3266 r.invert && (m = -m); 3267 let v = t.getTranslate() + m * r.sensitivity; 3268 if ( 3269 (v >= t.minTranslate() && (v = t.minTranslate()), 3270 v <= t.maxTranslate() && (v = t.maxTranslate()), 3271 (a = !!t.params.loop || !(v === t.minTranslate() || v === t.maxTranslate())), 3272 a && t.params.nested && s.stopPropagation(), 3273 t.params.freeMode && t.params.freeMode.enabled) 3274 ) { 3275 const e = { time: o(), delta: Math.abs(m), direction: Math.sign(m) }, 3276 a = c && e.time < c.time + 500 && e.delta <= c.delta && e.direction === c.direction; 3277 if (!a) { 3278 c = void 0; 3279 let n = t.getTranslate() + m * r.sensitivity; 3280 const o = t.isBeginning, 3281 p = t.isEnd; 3282 if ( 3283 (n >= t.minTranslate() && (n = t.minTranslate()), 3284 n <= t.maxTranslate() && (n = t.maxTranslate()), 3285 t.setTransition(0), 3286 t.setTranslate(n), 3287 t.updateProgress(), 3288 t.updateActiveIndex(), 3289 t.updateSlidesClasses(), 3290 ((!o && t.isBeginning) || (!p && t.isEnd)) && t.updateSlidesClasses(), 3291 t.params.loop && t.loopFix({ direction: e.direction < 0 ? 'next' : 'prev', byMousewheel: !0 }), 3292 t.params.freeMode.sticky) 3293 ) { 3294 clearTimeout(d), (d = void 0), u.length >= 15 && u.shift(); 3295 const s = u.length ? u[u.length - 1] : void 0, 3296 a = u[0]; 3297 if ((u.push(e), s && (e.delta > s.delta || e.direction !== s.direction))) u.splice(0); 3298 else if (u.length >= 15 && e.time - a.time < 500 && a.delta - e.delta >= 1 && e.delta <= 6) { 3299 const s = m > 0 ? 0.8 : 0.2; 3300 (c = e), 3301 u.splice(0), 3302 (d = l(() => { 3303 t.slideToClosest(t.params.speed, !0, void 0, s); 3304 }, 0)); 3305 } 3306 d || 3307 (d = l(() => { 3308 (c = e), u.splice(0), t.slideToClosest(t.params.speed, !0, void 0, 0.5); 3309 }, 500)); 3310 } 3311 if ( 3312 (a || i('scroll', s), 3313 t.params.autoplay && t.params.autoplayDisableOnInteraction && t.autoplay.stop(), 3314 r.releaseOnEdges && (n === t.minTranslate() || n === t.maxTranslate())) 3315 ) 3316 return !0; 3317 } 3318 } else { 3319 const s = { time: o(), delta: Math.abs(m), direction: Math.sign(m), raw: e }; 3320 u.length >= 2 && u.shift(); 3321 const a = u.length ? u[u.length - 1] : void 0; 3322 if ( 3323 (u.push(s), 3324 a ? (s.direction !== a.direction || s.delta > a.delta || s.time > a.time + 150) && f(s) : f(s), 3325 (function (e) { 3326 const s = t.params.mousewheel; 3327 if (e.direction < 0) { 3328 if (t.isEnd && !t.params.loop && s.releaseOnEdges) return !0; 3329 } else if (t.isBeginning && !t.params.loop && s.releaseOnEdges) return !0; 3330 return !1; 3331 })(s)) 3332 ) 3333 return !0; 3334 } 3335 return s.preventDefault ? s.preventDefault() : (s.returnValue = !1), !1; 3336 } 3337 function v(e) { 3338 let s = t.el; 3339 'container' !== t.params.mousewheel.eventsTarget && 3340 (s = document.querySelector(t.params.mousewheel.eventsTarget)), 3341 s[e]('mouseenter', m), 3342 s[e]('mouseleave', h), 3343 s[e]('wheel', g); 3344 } 3345 function w() { 3346 return t.params.cssMode 3347 ? (t.wrapperEl.removeEventListener('wheel', g), !0) 3348 : !t.mousewheel.enabled && (v('addEventListener'), (t.mousewheel.enabled = !0), !0); 3349 } 3350 function b() { 3351 return t.params.cssMode 3352 ? (t.wrapperEl.addEventListener(event, g), !0) 3353 : !!t.mousewheel.enabled && (v('removeEventListener'), (t.mousewheel.enabled = !1), !0); 3354 } 3355 a('init', () => { 3356 !t.params.mousewheel.enabled && t.params.cssMode && b(), t.params.mousewheel.enabled && w(); 3357 }), 3358 a('destroy', () => { 3359 t.params.cssMode && w(), t.mousewheel.enabled && b(); 3360 }), 3361 Object.assign(t.mousewheel, { enable: w, disable: b }); 3362 }, 3363 function (e) { 3364 let { swiper: t, extendParams: s, on: a, emit: i } = e; 3365 function r(e) { 3366 let s; 3367 return e && 'string' == typeof e && t.isElement && ((s = t.el.querySelector(e)), s) 3368 ? s 3369 : (e && 3370 ('string' == typeof e && (s = [...document.querySelectorAll(e)]), 3371 t.params.uniqueNavElements && 3372 'string' == typeof e && 3373 s.length > 1 && 3374 1 === t.el.querySelectorAll(e).length && 3375 (s = t.el.querySelector(e))), 3376 e && !s ? e : s); 3377 } 3378 function n(e, s) { 3379 const a = t.params.navigation;
3380 (e = T(e)).forEach((e) => { 3381 e && 3382 (e.classList[s ? 'add' : 'remove'](...a.disabledClass.split(' ')), 3383 'BUTTON' === e.tagName && (e.disabled = s), 3384 t.params.watchOverflow && t.enabled && e.classList[t.isLocked ? 'add' : 'remove'](a.lockClass)); 3385 }); 3386 } 3387 function l() { 3388 const { nextEl: e, prevEl: s } = t.navigation; 3389 if (t.params.loop) return n(s, !1), void n(e, !1); 3390 n(s, t.isBeginning && !t.params.rewind), n(e, t.isEnd && !t.params.rewind); 3391 } 3392 function o(e) { 3393 e.preventDefault(), 3394 (!t.isBeginning || t.params.loop || t.params.rewind) && (t.slidePrev(), i('navigationPrev')); 3395 } 3396 function d(e) { 3397 e.preventDefault(), (!t.isEnd || t.params.loop || t.params.rewind) && (t.slideNext(), i('navigationNext')); 3398 } 3399 function c() { 3400 const e = t.params.navigation; 3401 if ( 3402 ((t.params.navigation = se(t, t.originalParams.navigation, t.params.navigation, { 3403 nextEl: 'swiper-button-next', 3404 prevEl: 'swiper-button-prev', 3405 })), 3406 !e.nextEl && !e.prevEl) 3407 ) 3408 return; 3409 let s = r(e.nextEl), 3410 a = r(e.prevEl); 3411 Object.assign(t.navigation, { nextEl: s, prevEl: a }), (s = T(s)), (a = T(a)); 3412 const i = (s, a) => { 3413 s && s.addEventListener('click', 'next' === a ? d : o), 3414 !t.enabled && s && s.classList.add(...e.lockClass.split(' ')); 3415 }; 3416 s.forEach((e) => i(e, 'next')), a.forEach((e) => i(e, 'prev')); 3417 } 3418 function p() { 3419 let { nextEl: e, prevEl: s } = t.navigation; 3420 (e = T(e)), (s = T(s)); 3421 const a = (e, s) => { 3422 e.removeEventListener('click', 'next' === s ? d : o), 3423 e.classList.remove(...t.params.navigation.disabledClass.split(' ')); 3424 }; 3425 e.forEach((e) => a(e, 'next')), s.forEach((e) => a(e, 'prev')); 3426 } 3427 s({ 3428 navigation: { 3429 nextEl: null, 3430 prevEl: null, 3431 hideOnClick: !1, 3432 disabledClass: 'swiper-button-disabled', 3433 hiddenClass: 'swiper-button-hidden', 3434 lockClass: 'swiper-button-lock', 3435 navigationDisabledClass: 'swiper-navigation-disabled', 3436 }, 3437 }), 3438 (t.navigation = { nextEl: null, prevEl: null }), 3439 a('init', () => { 3440 !1 === t.params.navigation.enabled ? u() : (c(), l()); 3441 }), 3442 a('toEdge fromEdge lock unlock', () => { 3443 l(); 3444 }), 3445 a('destroy', () => { 3446 p(); 3447 }), 3448 a('enable disable', () => { 3449 let { nextEl: e, prevEl: s } = t.navigation; 3450 (e = T(e)), 3451 (s = T(s)), 3452 t.enabled 3453 ? l() 3454 : [...e, ...s].filter((e) => !!e).forEach((e) => e.classList.add(t.params.navigation.lockClass)); 3455 }), 3456 a('click', (e, s) => { 3457 let { nextEl: a, prevEl: r } = t.navigation; 3458 (a = T(a)), (r = T(r)); 3459 const n = s.target; 3460 if (t.params.navigation.hideOnClick && !r.includes(n) && !a.includes(n)) { 3461 if ( 3462 t.pagination && 3463 t.params.pagination && 3464 t.params.pagination.clickable && 3465 (t.pagination.el === n || t.pagination.el.contains(n)) 3466 ) 3467 return; 3468 let e; 3469 a.length 3470 ? (e = a[0].classList.contains(t.params.navigation.hiddenClass)) 3471 : r.length && (e = r[0].classList.contains(t.params.navigation.hiddenClass)), 3472 i(!0 === e ? 'navigationShow' : 'navigationHide'), 3473 [...a, ...r].filter((e) => !!e).forEach((e) => e.classList.toggle(t.params.navigation.hiddenClass)); 3474 } 3475 }); 3476 const u = () => { 3477 t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(' ')), p(); 3478 }; 3479 Object.assign(t.navigation, { 3480 enable: () => { 3481 t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(' ')), c(), l(); 3482 }, 3483 disable: u, 3484 update: l, 3485 init: c, 3486 destroy: p, 3487 }); 3488 }, 3489 function (e) { 3490 let { swiper: t, extendParams: s, on: a, emit: i } = e; 3491 const r = 'swiper-pagination'; 3492 let n; 3493 s({ 3494 pagination: { 3495 el: null, 3496 bulletElement: 'span', 3497 clickable: !1, 3498 hideOnClick: !1, 3499 renderBullet: null, 3500 renderProgressbar: null, 3501 renderFraction: null, 3502 renderCustom: null, 3503 progressbarOpposite: !1, 3504 type: 'bullets', 3505 dynamicBullets: !1, 3506 dynamicMainBullets: 1, 3507 formatFractionCurrent: (e) => e, 3508 formatFractionTotal: (e) => e, 3509 bulletClass: `${r}-bullet`, 3510 bulletActiveClass: `${r}-bullet-active`, 3511 modifierClass: `${r}-`, 3512 currentClass: `${r}-current`, 3513 totalClass: `${r}-total`, 3514 hiddenClass: `${r}-hidden`, 3515 progressbarFillClass: `${r}-progressbar-fill`, 3516 progressbarOppositeClass: `${r}-progressbar-opposite`, 3517 clickableClass: `${r}-clickable`, 3518 lockClass: `${r}-lock`, 3519 horizontalClass: `${r}-horizontal`, 3520 verticalClass: `${r}-vertical`, 3521 paginationDisabledClass: `${r}-disabled`, 3522 }, 3523 }), 3524 (t.pagination = { el: null, bullets: [] }); 3525 let l = 0; 3526 function o() { 3527 return ( 3528 !t.params.pagination.el || 3529 !t.pagination.el || 3530 (Array.isArray(t.pagination.el) && 0 === t.pagination.el.length) 3531 ); 3532 } 3533 function d(e, s) { 3534 const { bulletActiveClass: a } = t.params.pagination; 3535 e && 3536 (e = e[('prev' === s ? 'previous' : 'next') + 'ElementSibling']) && 3537 (e.classList.add(`${a}-${s}`), 3538 (e = e[('prev' === s ? 'previous' : 'next') + 'ElementSibling']) && e.classList.add(`${a}-${s}-${s}`)); 3539 } 3540 function c(e) { 3541 const s = e.target.closest(ae(t.params.pagination.bulletClass)); 3542 if (!s) return; 3543 e.preventDefault(); 3544 const a = y(s) * t.params.slidesPerGroup; 3545 if (t.params.loop) { 3546 if (t.realIndex === a) return; 3547 t.slideToLoop(a); 3548 } else t.slideTo(a); 3549 } 3550 function p() { 3551 const e = t.rtl, 3552 s = t.params.pagination; 3553 if (o()) return; 3554 let a, 3555 r, 3556 c = t.pagination.el; 3557 c = T(c); 3558 const p = t.virtual && t.params.virtual.enabled ? t.virtual.slides.length : t.slides.length, 3559 u = t.params.loop ? Math.ceil(p / t.params.slidesPerGroup) : t.snapGrid.length; 3560 if ( 3561 (t.params.loop 3562 ? ((r = t.previousRealIndex || 0), 3563 (a = t.params.slidesPerGroup > 1 ? Math.floor(t.realIndex / t.params.slidesPerGroup) : t.realIndex)) 3564 : void 0 !== t.snapIndex 3565 ? ((a = t.snapIndex), (r = t.previousSnapIndex)) 3566 : ((r = t.previousIndex || 0), (a = t.activeIndex || 0)), 3567 'bullets' === s.type && t.pagination.bullets && t.pagination.bullets.length > 0) 3568 ) { 3569 const i = t.pagination.bullets; 3570 let o, p, u; 3571 if ( 3572 (s.dynamicBullets && 3573 ((n = S(i[0], t.isHorizontal() ? 'width' : 'height', !0)),
3574 c.forEach((e) => { 3575 e.style[t.isHorizontal() ? 'width' : 'height'] = n * (s.dynamicMainBullets + 4) + 'px'; 3576 }), 3577 s.dynamicMainBullets > 1 && 3578 void 0 !== r && 3579 ((l += a - (r || 0)), l > s.dynamicMainBullets - 1 ? (l = s.dynamicMainBullets - 1) : l < 0 && (l = 0)), 3580 (o = Math.max(a - l, 0)), 3581 (p = o + (Math.min(i.length, s.dynamicMainBullets) - 1)), 3582 (u = (p + o) / 2)), 3583 i.forEach((e) => { 3584 const t = [ 3585 ...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map((e) => `${s.bulletActiveClass}${e}`), 3586 ] 3587 .map((e) => ('string' == typeof e && e.includes(' ') ? e.split(' ') : e)) 3588 .flat(); 3589 e.classList.remove(...t); 3590 }), 3591 c.length > 1) 3592 ) 3593 i.forEach((e) => { 3594 const i = y(e); 3595 i === a 3596 ? e.classList.add(...s.bulletActiveClass.split(' ')) 3597 : t.isElement && e.setAttribute('part', 'bullet'), 3598 s.dynamicBullets && 3599 (i >= o && i <= p && e.classList.add(...`${s.bulletActiveClass}-main`.split(' ')), 3600 i === o && d(e, 'prev'), 3601 i === p && d(e, 'next')); 3602 }); 3603 else { 3604 const e = i[a]; 3605 if ( 3606 (e && e.classList.add(...s.bulletActiveClass.split(' ')), 3607 t.isElement && 3608 i.forEach((e, t) => { 3609 e.setAttribute('part', t === a ? 'bullet-active' : 'bullet'); 3610 }), 3611 s.dynamicBullets) 3612 ) { 3613 const e = i[o], 3614 t = i[p]; 3615 for (let e = o; e <= p; e += 1) i[e] && i[e].classList.add(...`${s.bulletActiveClass}-main`.split(' ')); 3616 d(e, 'prev'), d(t, 'next'); 3617 } 3618 } 3619 if (s.dynamicBullets) { 3620 const a = Math.min(i.length, s.dynamicMainBullets + 4), 3621 r = (n * a - n) / 2 - u * n, 3622 l = e ? 'right' : 'left'; 3623 i.forEach((e) => { 3624 e.style[t.isHorizontal() ? l : 'top'] = `${r}px`; 3625 }); 3626 } 3627 } 3628 c.forEach((e, r) => { 3629 if ( 3630 ('fraction' === s.type && 3631 (e.querySelectorAll(ae(s.currentClass)).forEach((e) => { 3632 e.textContent = s.formatFractionCurrent(a + 1); 3633 }), 3634 e.querySelectorAll(ae(s.totalClass)).forEach((e) => { 3635 e.textContent = s.formatFractionTotal(u); 3636 })), 3637 'progressbar' === s.type) 3638 ) { 3639 let i; 3640 i = s.progressbarOpposite 3641 ? t.isHorizontal() 3642 ? 'vertical' 3643 : 'horizontal' 3644 : t.isHorizontal() 3645 ? 'horizontal' 3646 : 'vertical'; 3647 const r = (a + 1) / u; 3648 let n = 1, 3649 l = 1; 3650 'horizontal' === i ? (n = r) : (l = r), 3651 e.querySelectorAll(ae(s.progressbarFillClass)).forEach((e) => { 3652 (e.style.transform = `translate3d(0,0,0) scaleX(${n}) scaleY(${l})`), 3653 (e.style.transitionDuration = `${t.params.speed}ms`); 3654 }); 3655 } 3656 'custom' === s.type && s.renderCustom 3657 ? ((e.innerHTML = s.renderCustom(t, a + 1, u)), 0 === r && i('paginationRender', e)) 3658 : (0 === r && i('paginationRender', e), i('paginationUpdate', e)), 3659 t.params.watchOverflow && t.enabled && e.classList[t.isLocked ? 'add' : 'remove'](s.lockClass); 3660 }); 3661 } 3662 function u() { 3663 const e = t.params.pagination; 3664 if (o()) return; 3665 const s = 3666 t.virtual && t.params.virtual.enabled 3667 ? t.virtual.slides.length 3668 : t.grid && t.params.grid.rows > 1 3669 ? t.slides.length / Math.ceil(t.params.grid.rows) 3670 : t.slides.length; 3671 let a = t.pagination.el; 3672 a = T(a); 3673 let r = ''; 3674 if ('bullets' === e.type) { 3675 let a = t.params.loop ? Math.ceil(s / t.params.slidesPerGroup) : t.snapGrid.length; 3676 t.params.freeMode && t.params.freeMode.enabled && a > s && (a = s); 3677 for (let s = 0; s < a; s += 1) 3678 e.renderBullet 3679 ? (r += e.renderBullet.call(t, s, e.bulletClass)) 3680 : (r += `<${e.bulletElement} ${t.isElement ? 'part="bullet"' : ''} class="${e.bulletClass}"></${ 3681 e.bulletElement 3682 }>`); 3683 } 3684 'fraction' === e.type && 3685 (r = e.renderFraction 3686 ? e.renderFraction.call(t, e.currentClass, e.totalClass) 3687 : `<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`), 3688 'progressbar' === e.type && 3689 (r = e.renderProgressbar 3690 ? e.renderProgressbar.call(t, e.progressbarFillClass) 3691 : `<span class="${e.progressbarFillClass}"></span>`), 3692 (t.pagination.bullets = []), 3693 a.forEach((s) => { 3694 'custom' !== e.type && (s.innerHTML = r || ''), 3695 'bullets' === e.type && t.pagination.bullets.push(...s.querySelectorAll(ae(e.bulletClass))); 3696 }), 3697 'custom' !== e.type && i('paginationRender', a[0]); 3698 } 3699 function m() { 3700 t.params.pagination = se(t, t.originalParams.pagination, t.params.pagination, { el: 'swiper-pagination' }); 3701 const e = t.params.pagination; 3702 if (!e.el) return; 3703 let s; 3704 'string' == typeof e.el && t.isElement && (s = t.el.querySelector(e.el)), 3705 s || 'string' != typeof e.el || (s = [...document.querySelectorAll(e.el)]), 3706 s || (s = e.el), 3707 s && 3708 0 !== s.length && 3709 (t.params.uniqueNavElements && 3710 'string' == typeof e.el && 3711 Array.isArray(s) && 3712 s.length > 1 && 3713 ((s = [...t.el.querySelectorAll(e.el)]), 3714 s.length > 1 && (s = s.filter((e) => E(e, '.swiper')[0] === t.el)[0])), 3715 Array.isArray(s) && 1 === s.length && (s = s[0]), 3716 Object.assign(t.pagination, { el: s }), 3717 (s = T(s)),
3718 s.forEach((s) => { 3719 'bullets' === e.type && e.clickable && s.classList.add(...(e.clickableClass || '').split(' ')), 3720 s.classList.add(e.modifierClass + e.type), 3721 s.classList.add(t.isHorizontal() ? e.horizontalClass : e.verticalClass), 3722 'bullets' === e.type && 3723 e.dynamicBullets && 3724 (s.classList.add(`${e.modifierClass}${e.type}-dynamic`), 3725 (l = 0), 3726 e.dynamicMainBullets < 1 && (e.dynamicMainBullets = 1)), 3727 'progressbar' === e.type && e.progressbarOpposite && s.classList.add(e.progressbarOppositeClass), 3728 e.clickable && s.addEventListener('click', c), 3729 t.enabled || s.classList.add(e.lockClass); 3730 })); 3731 } 3732 function h() { 3733 const e = t.params.pagination; 3734 if (o()) return; 3735 let s = t.pagination.el; 3736 s && 3737 ((s = T(s)), 3738 s.forEach((s) => { 3739 s.classList.remove(e.hiddenClass), 3740 s.classList.remove(e.modifierClass + e.type), 3741 s.classList.remove(t.isHorizontal() ? e.horizontalClass : e.verticalClass), 3742 e.clickable && 3743 (s.classList.remove(...(e.clickableClass || '').split(' ')), s.removeEventListener('click', c)); 3744 })), 3745 t.pagination.bullets && 3746 t.pagination.bullets.forEach((t) => t.classList.remove(...e.bulletActiveClass.split(' '))); 3747 } 3748 a('changeDirection', () => { 3749 if (!t.pagination || !t.pagination.el) return; 3750 const e = t.params.pagination; 3751 let { el: s } = t.pagination; 3752 (s = T(s)), 3753 s.forEach((s) => { 3754 s.classList.remove(e.horizontalClass, e.verticalClass), 3755 s.classList.add(t.isHorizontal() ? e.horizontalClass : e.verticalClass); 3756 }); 3757 }), 3758 a('init', () => { 3759 !1 === t.params.pagination.enabled ? f() : (m(), u(), p()); 3760 }), 3761 a('activeIndexChange', () => { 3762 void 0 === t.snapIndex && p(); 3763 }), 3764 a('snapIndexChange', () => { 3765 p(); 3766 }), 3767 a('snapGridLengthChange', () => { 3768 u(), p(); 3769 }), 3770 a('destroy', () => { 3771 h(); 3772 }), 3773 a('enable disable', () => { 3774 let { el: e } = t.pagination; 3775 e && ((e = T(e)), e.forEach((e) => e.classList[t.enabled ? 'remove' : 'add'](t.params.pagination.lockClass))); 3776 }), 3777 a('lock unlock', () => { 3778 p(); 3779 }), 3780 a('click', (e, s) => { 3781 const a = s.target, 3782 r = T(t.pagination.el); 3783 if ( 3784 t.params.pagination.el && 3785 t.params.pagination.hideOnClick && 3786 r && 3787 r.length > 0 && 3788 !a.classList.contains(t.params.pagination.bulletClass) 3789 ) { 3790 if ( 3791 t.navigation && 3792 ((t.navigation.nextEl && a === t.navigation.nextEl) || (t.navigation.prevEl && a === t.navigation.prevEl)) 3793 ) 3794 return; 3795 const e = r[0].classList.contains(t.params.pagination.hiddenClass); 3796 i(!0 === e ? 'paginationShow' : 'paginationHide'), 3797 r.forEach((e) => e.classList.toggle(t.params.pagination.hiddenClass)); 3798 } 3799 }); 3800 const f = () => { 3801 t.el.classList.add(t.params.pagination.paginationDisabledClass); 3802 let { el: e } = t.pagination; 3803 e && ((e = T(e)), e.forEach((e) => e.classList.add(t.params.pagination.paginationDisabledClass))), h(); 3804 }; 3805 Object.assign(t.pagination, { 3806 enable: () => { 3807 t.el.classList.remove(t.params.pagination.paginationDisabledClass); 3808 let { el: e } = t.pagination; 3809 e && ((e = T(e)), e.forEach((e) => e.classList.remove(t.params.pagination.paginationDisabledClass))), 3810 m(), 3811 u(), 3812 p(); 3813 }, 3814 disable: f, 3815 render: u, 3816 update: p, 3817 init: m, 3818 destroy: h, 3819 }); 3820 }, 3821 function (e) { 3822 let { swiper: t, extendParams: s, on: i, emit: r }
3822 = e; 3823 const o = a(); 3824 let d, 3825 c, 3826 p, 3827 u, 3828 m = !1, 3829 h = null, 3830 f = null; 3831 function g() { 3832 if (!t.params.scrollbar.el || !t.scrollbar.el) return; 3833 const { scrollbar: e, rtlTranslate: s } = t, 3834 { dragEl: a, el: i } = e, 3835 r = t.params.scrollbar, 3836 n = t.params.loop ? t.progressLoop : t.progress; 3837 let l = c, 3838 o = (p - c) * n; 3839 s 3840 ? ((o = -o), o > 0 ? ((l = c - o), (o = 0)) : -o + c > p && (l = p + o)) 3841 : o < 0 3842 ? ((l = c + o), (o = 0)) 3843 : o + c > p && (l = p - o), 3844 t.isHorizontal() 3845 ? ((a.style.transform = `translate3d(${o}px, 0, 0)`), (a.style.width = `${l}px`)) 3846 : ((a.style.transform = `translate3d(0px, ${o}px, 0)`), (a.style.height = `${l}px`)), 3847 r.hide && 3848 (clearTimeout(h), 3849 (i.style.opacity = 1), 3850 (h = setTimeout(() => { 3851 (i.style.opacity = 0), (i.style.transitionDuration = '400ms'); 3852 }, 1e3))); 3853 } 3854 function b() { 3855 if (!t.params.scrollbar.el || !t.scrollbar.el) return; 3856 const { scrollbar: e } = t, 3857 { dragEl: s, el: a } = e; 3858 (s.style.width = ''), 3859 (s.style.height = ''), 3860 (p = t.isHorizontal() ? a.offsetWidth : a.offsetHeight), 3861 (u = t.size / (t.virtualSize + t.params.slidesOffsetBefore - (t.params.centeredSlides ? t.snapGrid[0] : 0))), 3862 (c = 'auto' === t.params.scrollbar.dragSize ? p * u : parseInt(t.params.scrollbar.dragSize, 10)), 3863 t.isHorizontal() ? (s.style.width = `${c}px`) : (s.style.height = `${c}px`), 3864 (a.style.display = u >= 1 ? 'none' : ''), 3865 t.params.scrollbar.hide && (a.style.opacity = 0), 3866 t.params.watchOverflow && 3867 t.enabled && 3868 e.el.classList[t.isLocked ? 'add' : 'remove'](t.params.scrollbar.lockClass); 3869 } 3870 function y(e) { 3871 return t.isHorizontal() ? e.clientX : e.clientY; 3872 } 3873 function E(e) { 3874 const { scrollbar: s, rtlTranslate: a } = t, 3875 { el: i } = s; 3876 let r; 3877 (r = (y(e) - w(i)[t.isHorizontal() ? 'left' : 'top'] - (null !== d ? d : c / 2)) / (p - c)), 3878 (r = Math.max(Math.min(r, 1), 0)), 3879 a && (r = 1 - r); 3880 const n = t.minTranslate() + (t.maxTranslate() - t.minTranslate()) * r; 3881 t.updateProgress(n), t.setTranslate(n), t.updateActiveIndex(), t.updateSlidesClasses(); 3882 } 3883 function x(e) { 3884 const s = t.params.scrollbar, 3885 { scrollbar: a, wrapperEl: i } = t, 3886 { el: n, dragEl: l } = a; 3887 (m = !0), 3888 (d = e.target === l ? y(e) - e.target.getBoundingClientRect()[t.isHorizontal() ? 'left' : 'top'] : null),
3889 e.preventDefault(), 3890 e.stopPropagation(), 3891 (i.style.transitionDuration = '100ms'), 3892 (l.style.transitionDuration = '100ms'), 3893 E(e), 3894 clearTimeout(f), 3895 (n.style.transitionDuration = '0ms'), 3896 s.hide && (n.style.opacity = 1), 3897 t.params.cssMode && (t.wrapperEl.style['scroll-snap-type'] = 'none'), 3898 r('scrollbarDragStart', e); 3899 } 3900 function S(e) { 3901 const { scrollbar: s, wrapperEl: a } = t, 3902 { el: i, dragEl: n } = s; 3903 m && 3904 (e.preventDefault ? e.preventDefault() : (e.returnValue = !1), 3905 E(e), 3906 (a.style.transitionDuration = '0ms'), 3907 (i.style.transitionDuration = '0ms'), 3908 (n.style.transitionDuration = '0ms'), 3909 r('scrollbarDragMove', e)); 3910 } 3911 function M(e) { 3912 const s = t.params.scrollbar, 3913 { scrollbar: a, wrapperEl: i } = t, 3914 { el: n } = a; 3915 m && 3916 ((m = !1), 3917 t.params.cssMode && ((t.wrapperEl.style['scroll-snap-type'] = ''), (i.style.transitionDuration = '')), 3918 s.hide && 3919 (clearTimeout(f), 3920 (f = l(() => { 3921 (n.style.opacity = 0), (n.style.transitionDuration = '400ms'); 3922 }, 1e3))), 3923 r('scrollbarDragEnd', e), 3924 s.snapOnRelease && t.slideToClosest()); 3925 } 3926 function C(e) { 3927 const { scrollbar: s, params: a } = t, 3928 i = s.el; 3929 if (!i) return; 3930 const r = i, 3931 n = !!a.passiveListeners && { passive: !1, capture: !1 }, 3932 l = !!a.passiveListeners && { passive: !0, capture: !1 }; 3933 if (!r) return; 3934 const d = 'on' === e ? 'addEventListener' : 'removeEventListener'; 3935 r[d]('pointerdown', x, n), o[d]('pointermove', S, n), o[d]('pointerup', M, l); 3936 } 3937 function P() { 3938 const { scrollbar: e, el: s } = t; 3939 t.params.scrollbar = se(t, t.originalParams.scrollbar, t.params.scrollbar, { el: 'swiper-scrollbar' }); 3940 const a = t.params.scrollbar; 3941 if (!a.el) return; 3942 let i, r; 3943 if (('string' == typeof a.el && t.isElement && (i = t.el.querySelector(a.el)), i || 'string' != typeof a.el)) 3944 i || (i = a.el); 3945 else if (((i = o.querySelectorAll(a.el)), !i.length)) return; 3946 t.params.uniqueNavElements && 3947 'string' == typeof a.el && 3948 i.length > 1 && 3949 1 === s.querySelectorAll(a.el).length && 3950 (i = s.querySelector(a.el)), 3951 i.length > 0 && (i = i[0]), 3952 i.classList.add(t.isHorizontal() ? a.horizontalClass : a.verticalClass), 3953 i && 3954 ((r = i.querySelector(ae(t.params.scrollbar.dragClass))), 3955 r || ((r = v('div', t.params.scrollbar.dragClass)), i.append(r))), 3956 Object.assign(e, { el: i, dragEl: r }), 3957 a.draggable && t.params.scrollbar.el && t.scrollbar.el && C('on'), 3958 i && i.classList[t.enabled ? 'remove' : 'add'](...n(t.params.scrollbar.lockClass)); 3959 } 3960 function L() { 3961 const e = t.params.scrollbar, 3962 s = t.scrollbar.el; 3963 s && s.classList.remove(...n(t.isHorizontal() ? e.horizontalClass : e.verticalClass)), 3964 t.params.scrollbar.el && t.scrollbar.el && C('off'); 3965 } 3966 s({ 3967 scrollbar: { 3968 el: null, 3969 dragSize: 'auto', 3970 hide: !1, 3971 draggable: !1, 3972 snapOnRelease: !0, 3973 lockClass: 'swiper-scrollbar-lock', 3974 dragClass: 'swiper-scrollbar-drag', 3975 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 3976 horizontalClass: 'swiper-scrollbar-horizontal', 3977 verticalClass: 'swiper-scrollbar-vertical', 3978 }, 3979 }), 3980 (t.scrollbar = { el: null, dragEl: null }), 3981 i('changeDirection', () => { 3982 if (!t.scrollbar || !t.scrollbar.el) return; 3983 const e = t.params.scrollbar; 3984 let { el: s } = t.scrollbar; 3985 (s = T(s)), 3986 s.forEach((s) => { 3987 s.classList.remove(e.horizontalClass, e.verticalClass), 3988 s.classList.add(t.isHorizontal() ? e.horizontalClass : e.verticalClass); 3989 }); 3990 }), 3991 i('init', () => { 3992 !1 === t.params.scrollbar.enabled ? I() : (P(), b(), g()); 3993 }), 3994 i('update resize observerUpdate lock unlock changeDirection', () => { 3995 b(); 3996 }), 3997 i('setTranslate', () => { 3998 g(); 3999 }), 4000 i('setTransition', (e, s) => { 4001 !(function (e) { 4002 t.params.scrollbar.el && t.scrollbar.el && (t.scrollbar.dragEl.style.transitionDuration = `${e}ms`); 4003 })(s); 4004 }), 4005 i('enable disable', () => { 4006 const { el: e } = t.scrollbar; 4007 e && e.classList[t.enabled ? 'remove' : 'add'](...n(t.params.scrollbar.lockClass)); 4008 }), 4009 i('destroy', () => { 4010 L(); 4011 }); 4012 const I = () => { 4013 t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)), 4014 t.scrollbar.el && t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)), 4015 L(); 4016 }; 4017 Object.assign(t.scrollbar, { 4018 enable: () => { 4019 t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)), 4020 t.scrollbar.el && t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)), 4021 P(), 4022 b(), 4023 g(); 4024 }, 4025 disable: I, 4026 updateSize: b, 4027 setTranslate: g, 4028 init: P, 4029 destroy: L, 4030 }); 4031 }, 4032 function (e) { 4033 let { swiper: t, extendParams: s, on: a } = e; 4034 s({ parallax: { enabled: !1 } }); 4035 const i = 4036 '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]', 4037 r = (e, s) => { 4038 const { rtl: a } = t, 4039 i = a ? -1 : 1, 4040 r = e.getAttribute('data-swiper-parallax') || '0'; 4041 let n = e.getAttribute('data-swiper-parallax-x'), 4042 l = e.getAttribute('data-swiper-parallax-y'); 4043 const o = e.getAttribute('data-swiper-parallax-scale'), 4044 d = e.getAttribute('data-swiper-parallax-opacity'), 4045 c = e.getAttribute('data-swiper-parallax-rotate'); 4046 if ( 4047 (n || l ? ((n = n || '0'), (l = l || '0')) : t.isHorizontal() ? ((n = r), (l = '0')) : ((l = r), (n = '0')), 4048 (n = n.indexOf('%') >= 0 ? parseInt(n, 10) * s * i + '%' : n * s * i + 'px'), 4049 (l = l.indexOf('%') >= 0 ? parseInt(l, 10) * s + '%' : l * s + 'px'), 4050 null != d) 4051 ) { 4052 const t = d - (d - 1) * (1 - Math.abs(s)); 4053 e.style.opacity = t; 4054 } 4055 let p = `translate3d(${n}, ${l}, 0px)`; 4056 if (null != o) { 4057 p += ` scale(${o - (o - 1) * (1 - Math.abs(s))})`;
4058 } 4059 if (c && null != c) { 4060 p += ` rotate(${c * s * -1}deg)`; 4061 } 4062 e.style.transform = p; 4063 }, 4064 n = () => { 4065 const { el: e, slides: s, progress: a, snapGrid: n, isElement: l } = t, 4066 o = f(e, i); 4067 t.isElement && o.push(...f(t.hostEl, i)), 4068 o.forEach((e) => { 4069 r(e, a); 4070 }), 4071 s.forEach((e, s) => { 4072 let l = e.progress; 4073 t.params.slidesPerGroup > 1 && 4074 'auto' !== t.params.slidesPerView && 4075 (l += Math.ceil(s / 2) - a * (n.length - 1)), 4076 (l = Math.min(Math.max(l, -1), 1)), 4077 e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e) => { 4078 r(e, l); 4079 }); 4080 }); 4081 }; 4082 a('beforeInit', () => { 4083 t.params.parallax.enabled && ((t.params.watchSlidesProgress = !0), (t.originalParams.watchSlidesProgress = !0)); 4084 }), 4085 a('init', () => { 4086 t.params.parallax.enabled && n(); 4087 }), 4088 a('setTranslate', () => { 4089 t.params.parallax.enabled && n(); 4090 }), 4091 a('setTransition', (e, s) => { 4092 t.params.parallax.enabled && 4093 (function (e) { 4094 void 0 === e && (e = t.params.speed); 4095 const { el: s, hostEl: a } = t, 4096 r = [...s.querySelectorAll(i)]; 4097 t.isElement && r.push(...a.querySelectorAll(i)), 4098 r.forEach((t) => { 4099 let s = parseInt(t.getAttribute('data-swiper-parallax-duration'), 10) || e; 4100 0 === e && (s = 0), (t.style.transitionDuration = `${s}ms`); 4101 }); 4102 })(s); 4103 }); 4104 }, 4105 function (e) { 4106 let { swiper: t, extendParams: s, on: a, emit: i } = e; 4107 const n = r(); 4108 s({ 4109 zoom: { 4110 enabled: !1, 4111 limitToOriginalSize: !1, 4112 maxRatio: 3, 4113 minRatio: 1, 4114 toggle: !0, 4115 containerClass: 'swiper-zoom-container', 4116 zoomedSlideClass: 'swiper-slide-zoomed', 4117 }, 4118 }), 4119 (t.zoom = { enabled: !1 }); 4120 let l, 4121 o, 4122 c = 1, 4123 p = !1; 4124 const u = [], 4125 m = { 4126 originX: 0, 4127 originY: 0, 4128 slideEl: void 0, 4129 slideWidth: void 0, 4130 slideHeight: void 0, 4131 imageEl: void 0, 4132 imageWrapEl: void 0, 4133 maxRatio: 3, 4134 }, 4135 h = { 4136 isTouched: void 0, 4137 isMoved: void 0, 4138 currentX: void 0, 4139 currentY: void 0, 4140 minX: void 0, 4141 minY: void 0, 4142 maxX: void 0, 4143 maxY: void 0, 4144 width: void 0, 4145 height: void 0, 4146 startX: void 0, 4147 startY: void 0, 4148 touchesStart: {}, 4149 touchesCurrent: {}, 4150 }, 4151 g = { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0 }; 4152 let v = 1; 4153 function b() { 4154 if (u.length < 2) return 1; 4155 const e = u[0].pageX, 4156 t = u[0].pageY, 4157 s = u[1].pageX, 4158 a = u[1].pageY; 4159 return Math.sqrt((s - e) ** 2 + (a - t) ** 2); 4160 } 4161 function y() { 4162 const e = t.params.zoom, 4163 s = m.imageWrapEl.getAttribute('data-swiper-zoom') || e.maxRatio; 4164 if (e.limitToOriginalSize && m.imageEl && m.imageEl.naturalWidth) { 4165 const e = m.imageEl.naturalWidth / m.imageEl.offsetWidth; 4166 return Math.min(e, s); 4167 } 4168 return s; 4169 } 4170 function x(e) { 4171 const s = t.isElement ? 'swiper-slide' : `.${t.params.slideClass}`; 4172 return !!e.target.matches(s) || t.slides.filter((t) => t.contains(e.target)).length > 0; 4173 } 4174 function S(e) { 4175 if (('mouse' === e.pointerType && u.splice(0, u.length), !x(e))) return; 4176 const s = t.params.zoom; 4177 if (((l = !1), (o = !1), u.push(e), !(u.length < 2))) { 4178 if (((l = !0), (m.scaleStart = b()), !m.slideEl)) { 4179 (m.slideEl = e.target.closest(`.${t.params.slideClass}, swiper-slide`)), 4180 m.slideEl || (m.slideEl = t.slides[t.activeIndex]); 4181 let a = m.slideEl.querySelector(`.${s.containerClass}`); 4182 if ( 4183 (a && (a = a.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]), 4184 (m.imageEl = a), 4185 (m.imageWrapEl = a ? E(m.imageEl, `.${s.containerClass}`)[0] : void 0), 4186 !m.imageWrapEl) 4187 ) 4188 return void (m.imageEl = void 0); 4189 m.maxRatio = y(); 4190 } 4191 if (m.imageEl) { 4192 const [e, t] = (function () { 4193 if (u.length < 2) return { x: null, y: null }; 4194 const e = m.imageEl.getBoundingClientRect(); 4195 return [ 4196 (u[0].pageX + (u[1].pageX - u[0].pageX) / 2 - e.x - n.scrollX) / c, 4197 (u[0].pageY + (u[1].pageY - u[0].pageY) / 2 - e.y - n.scrollY) / c, 4198 ]; 4199 })(); 4200 (m.originX = e), (m.originY = t), (m.imageEl.style.transitionDuration = '0ms'); 4201 } 4202 p = !0; 4203 } 4204 } 4205 function T(e) { 4206 if (!x(e)) return; 4207 const s = t.params.zoom, 4208 a = t.zoom, 4209 i = u.findIndex((t) => t.pointerId === e.pointerId); 4210 i >= 0 && (u[i] = e), 4211 u.length < 2 || 4212 ((o = !0), 4213 (m.scaleMove = b()), 4214 m.imageEl && 4215 ((a.scale = (m.scaleMove / m.scaleStart) * c), 4216 a.scale > m.maxRatio && (a.scale = m.maxRatio - 1 + (a.scale - m.maxRatio + 1) ** 0.5), 4217 a.scale < s.minRatio && (a.scale = s.minRatio + 1 - (s.minRatio - a.scale + 1) ** 0.5),
4218 (m.imageEl.style.transform = `translate3d(0,0,0) scale(${a.scale})`))); 4219 } 4220 function M(e) { 4221 if (!x(e)) return; 4222 if ('mouse' === e.pointerType && 'pointerout' === e.type) return; 4223 const s = t.params.zoom, 4224 a = t.zoom, 4225 i = u.findIndex((t) => t.pointerId === e.pointerId); 4226 i >= 0 && u.splice(i, 1), 4227 l && 4228 o && 4229 ((l = !1), 4230 (o = !1), 4231 m.imageEl && 4232 ((a.scale = Math.max(Math.min(a.scale, m.maxRatio), s.minRatio)), 4233 (m.imageEl.style.transitionDuration = `${t.params.speed}ms`), 4234 (m.imageEl.style.transform = `translate3d(0,0,0) scale(${a.scale})`), 4235 (c = a.scale), 4236 (p = !1), 4237 a.scale > 1 && m.slideEl 4238 ? m.slideEl.classList.add(`${s.zoomedSlideClass}`) 4239 : a.scale <= 1 && m.slideEl && m.slideEl.classList.remove(`${s.zoomedSlideClass}`), 4240 1 === a.scale && ((m.originX = 0), (m.originY = 0), (m.slideEl = void 0)))); 4241 } 4242 function C(e) { 4243 if ( 4244 !x(e) || 4245 !(function (e) { 4246 const s = `.${t.params.zoom.containerClass}`; 4247 return ( 4248 !!e.target.matches(s) || [...t.hostEl.querySelectorAll(s)].filter((t) => t.contains(e.target)).length > 0 4249 ); 4250 })(e) 4251 ) 4252 return; 4253 const s = t.zoom; 4254 if (!m.imageEl) return; 4255 if (!h.isTouched || !m.slideEl) return; 4256 h.isMoved || 4257 ((h.width = m.imageEl.offsetWidth), 4258 (h.height = m.imageEl.offsetHeight), 4259 (h.startX = d(m.imageWrapEl, 'x') || 0), 4260 (h.startY = d(m.imageWrapEl, 'y') || 0), 4261 (m.slideWidth = m.slideEl.offsetWidth), 4262 (m.slideHeight = m.slideEl.offsetHeight), 4263 (m.imageWrapEl.style.transitionDuration = '0ms')); 4264 const a = h.width * s.scale, 4265 i = h.height * s.scale; 4266 if (a < m.slideWidth && i < m.slideHeight) return; 4267 (h.minX = Math.min(m.slideWidth / 2 - a / 2, 0)), 4268 (h.maxX = -h.minX), 4269 (h.minY = Math.min(m.slideHeight / 2 - i / 2, 0)), 4270 (h.maxY = -h.minY), 4271 (h.touchesCurrent.x = u.length > 0 ? u[0].pageX : e.pageX), 4272 (h.touchesCurrent.y = u.length > 0 ? u[0].pageY : e.pageY); 4273 if ( 4274 (Math.max(Math.abs(h.touchesCurrent.x - h.touchesStart.x), Math.abs(h.touchesCurrent.y - h.touchesStart.y)) > 4275 5 && (t.allowClick = !1), 4276 !h.isMoved && !p) 4277 ) { 4278 if ( 4279 t.isHorizontal() && 4280 ((Math.floor(h.minX) === Math.floor(h.startX) && h.touchesCurrent.x < h.touchesStart.x) || 4281 (Math.floor(h.maxX) === Math.floor(h.startX) && h.touchesCurrent.x > h.touchesStart.x)) 4282 ) 4283 return void (h.isTouched = !1); 4284 if ( 4285 !t.isHorizontal() && 4286 ((Math.floor(h.minY) === Math.floor(h.startY) && h.touchesCurrent.y < h.touchesStart.y) || 4287 (Math.floor(h.maxY) === Math.floor(h.startY) && h.touchesCurrent.y > h.touchesStart.y)) 4288 ) 4289 return void (h.isTouched = !1); 4290 } 4291 e.cancelable && e.preventDefault(), e.stopPropagation(), (h.isMoved = !0); 4292 const r = (s.scale - c) / (m.maxRatio - t.params.zoom.minRatio), 4293 { originX: n, originY: l } = m; 4294 (h.currentX = h.touchesCurrent.x - h.touchesStart.x + h.startX + r * (h.width - 2 * n)), 4295 (h.currentY = h.touchesCurrent.y - h.touchesStart.y + h.startY + r * (h.height - 2 * l)), 4296 h.currentX < h.minX && (h.currentX = h.minX + 1 - (h.minX - h.currentX + 1) ** 0.8), 4297 h.currentX > h.maxX && (h.currentX = h.maxX - 1 + (h.currentX - h.maxX + 1) ** 0.8), 4298 h.currentY < h.minY && (h.currentY = h.minY + 1 - (h.minY - h.currentY + 1) ** 0.8), 4299 h.currentY > h.maxY && (h.currentY = h.maxY - 1 + (h.currentY - h.maxY + 1) ** 0.8), 4300 g.prevPositionX || (g.prevPositionX = h.touchesCurrent.x), 4301 g.prevPositionY || (g.prevPositionY = h.touchesCurrent.y), 4302 g.prevTime || (g.prevTime = Date.now()), 4303 (g.x = (h.touchesCurrent.x - g.prevPositionX) / (Date.now() - g.prevTime) / 2), 4304 (g.y = (h.touchesCurrent.y - g.prevPositionY) / (Date.now() - g.prevTime) / 2), 4305 Math.abs(h.touchesCurrent.x - g.prevPositionX) < 2 && (g.x = 0), 4306 Math.abs(h.touchesCurrent.y - g.prevPositionY) < 2 && (g.y = 0), 4307 (g.prevPositionX = h.touchesCurrent.x), 4308 (g.prevPositionY = h.touchesCurrent.y), 4309 (g.prevTime = Date.now()), 4310 (m.imageWrapEl.style.transform = `translate3d(${h.currentX}px, ${h.currentY}px,0)`); 4311 } 4312 function P() { 4313 const e = t.zoom; 4314 m.slideEl && 4315 t.activeIndex !== t.slides.indexOf(m.slideEl) && 4316 (m.imageEl && (m.imageEl.style.transform = 'translate3d(0,
43160,0) scale(1)'), 4317 m.imageWrapEl && (m.imageWrapEl.style.transform = 'translate3d(0,0,0)'), 4318 m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`), 4319 (e.scale = 1), 4320 (c = 1), 4321 (m.slideEl = void 0), 4322 (m.imageEl = void 0), 4323 (m.imageWrapEl = void 0), 4324 (m.originX = 0), 4325 (m.originY = 0)); 4326 } 4327 function L(e) { 4328 const s = t.zoom, 4329 a = t.params.zoom; 4330 if (!m.slideEl) { 4331 e && e.target && (m.slideEl = e.target.closest(`.${t.params.slideClass}, swiper-slide`)), 4332 m.slideEl || 4333 (t.params.virtual && t.params.virtual.enabled && t.virtual 4334 ? (m.slideEl = f(t.slidesEl, `.${t.params.slideActiveClass}`)[0]) 4335 : (m.slideEl = t.slides[t.activeIndex])); 4336 let s = m.slideEl.querySelector(`.${a.containerClass}`); 4337 s && (s = s.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]), 4338 (m.imageEl = s), 4339 (m.imageWrapEl = s ? E(m.imageEl, `.${a.containerClass}`)[0] : void 0); 4340 } 4341 if (!m.imageEl || !m.imageWrapEl) return; 4342 let i, r, l, o, d, p, u, g, v, b, x, S, T, M, C, P, L, I; 4343 t.params.cssMode && ((t.wrapperEl.style.overflow = 'hidden'), (t.wrapperEl.style.touchAction = 'none')), 4344 m.slideEl.classList.add(`${a.zoomedSlideClass}`), 4345 void 0 === h.touchesStart.x && e 4346 ? ((i = e.pageX), (r = e.pageY)) 4347 : ((i = h.touchesStart.x), (r = h.touchesStart.y)); 4348 const z = 'number' == typeof e ? e : null; 4349 1 === c && z && ((i = void 0), (r = void 0)); 4350 const A = y(); 4351 (s.scale = z || A), 4352 (c = z || A), 4353 !e || (1 === c && z) 4354 ? ((u = 0), (g = 0)) 4355 : ((L = m.slideEl.offsetWidth), 4356 (I = m.slideEl.offsetHeight), 4357 (l = w(m.slideEl).left + n.scrollX), 4358 (o = w(m.slideEl).top + n.scrollY), 4359 (d = l + L / 2 - i), 4360 (p = o + I / 2 - r), 4361 (v = m.imageEl.offsetWidth), 4362 (b = m.imageEl.offsetHeight), 4363 (x = v * s.scale), 4364 (S = b * s.scale), 4365 (T = Math.min(L / 2 - x / 2, 0)), 4366 (M = Math.min(I / 2 - S / 2, 0)), 4367 (C = -T), 4368 (P = -M), 4369 (u = d * s.scale), 4370 (g = p * s.scale), 4371 u < T && (u = T), 4372 u > C && (u = C), 4373 g < M && (g = M), 4374 g > P && (g = P)), 4375 z && 1 === s.scale && ((m.originX = 0), (m.originY = 0)), 4376 (m.imageWrapEl.style.transitionDuration = '300ms'), 4377 (m.imageWrapEl.style.transform = `translate3d(${u}px, ${g}px,0)`), 4378 (m.imageEl.style.transitionDuration = '300ms'), 4379 (m.imageEl.style.transform = `translate3d(0,0,0) scale(${s.scale})`); 4380 } 4381 function I() { 4382 const e = t.zoom, 4383 s = t.params.zoom; 4384 if (!m.slideEl) { 4385 t.params.virtual && t.params.virtual.enabled && t.virtual 4386 ? (m.slideEl = f(t.slidesEl, `.${t.params.slideActiveClass}`)[0]) 4387 : (m.slideEl = t.slides[t.activeIndex]); 4388 let e = m.slideEl.querySelector(`.${s.containerClass}`); 4389 e && (e = e.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]), 4390 (m.imageEl = e), 4391 (m.imageWrapEl = e ? E(m.imageEl, `.${s.containerClass}`)[0] : void 0); 4392 } 4393 m.imageEl && 4394 m.imageWrapEl && 4395 (t.params.cssMode && ((t.wrapperEl.style.overflow = ''), (t.wrapperEl.style.touchAction = '')), 4396 (e.scale = 1), 4397 (c = 1), 4398 (m.imageWrapEl.style.transitionDuration = '300ms'), 4399 (m.imageWrapEl.style.transform = 'translate3d(0,0,0)'), 4400 (m.imageEl.style.transitionDuration = '300ms'), 4401 (m.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'), 4402 m.slideEl.classList.remove(`${s.zoomedSlideClass}`), 4403 (m.slideEl = void 0), 4404 (m.originX = 0), 4405 (m.originY = 0)); 4406 } 4407 function z(e) { 4408 const s = t.zoom; 4409 s.scale && 1 !== s.scale ? I() : L(e); 4410 } 4411 function A() { 4412 return { 4413 passiveListener: !!t.params.passiveListeners && { passive: !0, capture: !1 }, 4414 activeListenerWithCapture: !t.params.passiveListeners || { passive: !1, capture: !0 },
4415 }; 4416 } 4417 function $() { 4418 const e = t.zoom; 4419 if (e.enabled) return; 4420 e.enabled = !0; 4421 const { passiveListener: s, activeListenerWithCapture: a } = A(); 4422 t.wrapperEl.addEventListener('pointerdown', S, s), 4423 t.wrapperEl.addEventListener('pointermove', T, a), 4424 ['pointerup', 'pointercancel', 'pointerout'].forEach((e) => { 4425 t.wrapperEl.addEventListener(e, M, s); 4426 }), 4427 t.wrapperEl.addEventListener('pointermove', C, a); 4428 } 4429 function k() { 4430 const e = t.zoom; 4431 if (!e.enabled) return; 4432 e.enabled = !1; 4433 const { passiveListener: s, activeListenerWithCapture: a } = A(); 4434 t.wrapperEl.removeEventListener('pointerdown', S, s), 4435 t.wrapperEl.removeEventListener('pointermove', T, a), 4436 ['pointerup', 'pointercancel', 'pointerout'].forEach((e) => { 4437 t.wrapperEl.removeEventListener(e, M, s); 4438 }), 4439 t.wrapperEl.removeEventListener('pointermove', C, a); 4440 } 4441 Object.defineProperty(t.zoom, 'scale', { 4442 get: () => v, 4443 set(e) { 4444 if (v !== e) { 4445 const t = m.imageEl, 4446 s = m.slideEl; 4447 i('zoomChange', e, t, s); 4448 } 4449 v = e; 4450 }, 4451 }), 4452 a('init', () => { 4453 t.params.zoom.enabled && $(); 4454 }), 4455 a('destroy', () => { 4456 k(); 4457 }), 4458 a('touchStart', (e, s) => { 4459 t.zoom.enabled && 4460 (function (e) { 4461 const s = t.device; 4462 if (!m.imageEl) return; 4463 if (h.isTouched) return; 4464 s.android && e.cancelable && e.preventDefault(), (h.isTouched = !0); 4465 const a = u.length > 0 ? u[0] : e; 4466 (h.touchesStart.x = a.pageX), (h.touchesStart.y = a.pageY); 4467 })(s); 4468 }), 4469 a('touchEnd', (e, s) => { 4470 t.zoom.enabled && 4471 (function () { 4472 const e = t.zoom; 4473 if (!m.imageEl) return; 4474 if (!h.isTouched || !h.isMoved) return (h.isTouched = !1), void (h.isMoved = !1); 4475 (h.isTouched = !1), (h.isMoved = !1); 4476 let s = 300, 4477 a = 300; 4478 const i = g.x * s, 4479 r = h.currentX + i, 4480 n = g.y * a, 4481 l = h.currentY + n; 4482 0 !== g.x && (s = Math.abs((r - h.currentX) / g.x)), 0 !== g.y && (a = Math.abs((l - h.currentY) / g.y)); 4483 const o = Math.max(s, a); 4484 (h.currentX = r), (h.currentY = l); 4485 const d = h.width * e.scale, 4486 c = h.height * e.scale; 4487 (h.minX = Math.min(m.slideWidth / 2 - d / 2, 0)), 4488 (h.maxX = -h.minX), 4489 (h.minY = Math.min(m.slideHeight / 2 - c / 2, 0)), 4490 (h.maxY = -h.minY), 4491 (h.currentX = Math.max(Math.min(h.currentX, h.maxX), h.minX)), 4492 (h.currentY = Math.max(Math.min(h.currentY, h.maxY), h.minY)), 4493 (m.imageWrapEl.style.transitionDuration = `${o}ms`), 4494 (m.imageWrapEl.style.transform = `translate3d(${h.currentX}px, ${h.currentY}px,0)`); 4495 })(); 4496 }), 4497 a('doubleTap', (e, s) => { 4498 !t.animating && t.params.zoom.enabled && t.zoom.enabled && t.params.zoom.toggle && z(s); 4499 }), 4500 a('transitionEnd', () => { 4501 t.zoom.enabled && t.params.zoom.enabled && P(); 4502 }), 4503 a('slideChange', () => { 4504 t.zoom.enabled && t.params.zoom.enabled && t.params.cssMode && P(); 4505 }), 4506 Object.assign(t.zoom, { enable: $, disable: k, in: L, out: I, toggle: z }); 4507 }, 4508 function (e) { 4509 let { swiper: t, extendParams: s, on: a } = e; 4510 function i(e, t) { 4511 const s = (function () { 4512 let e, t, s; 4513 return (a, i) => { 4514 for (t = -1, e = a.length; e - t > 1; ) (s = (e + t) >> 1), a[s] <= i ? (t = s) : (e = s); 4515 return e; 4516 }; 4517 })(); 4518 let a, i; 4519 return ( 4520 (this.x = e), 4521 (this.y = t), 4522 (this.lastIndex = e.length - 1), 4523 (this.interpolate = function (e) { 4524 return e 4525 ? ((i = s(this.x, e)), 4526 (a = i - 1), 4527 ((e - this.x[a]) * (this.y[i] - this.y[a])) / (this.x[i] - this.x[a]) + this.y[a]) 4528 : 0; 4529 }), 4530 this 4531 ); 4532 } 4533 function r() { 4534 t.controller.control && t.controller.spline && ((t.controller.spline = void 0), delete t.controller.spline); 4535 } 4536 s({ controller: { control: void 0, inverse: !1, by: 'slide' } }), 4537 (t.controller = { control: void 0 }), 4538 a('beforeInit', () => { 4539 if ( 4540 'undefined' != typeof window && 4541 ('string' == typeof t.params.controller.control || t.params.controller.control instanceof HTMLElement) 4542 ) { 4543 const e = document.querySelector(t.params.controller.control); 4544 if (e && e.swiper) t.controller.control = e.swiper; 4545 else if (e) { 4546 const s = (a) => {
4547 (t.controller.control = a.detail[0]), t.update(), e.removeEventListener('init', s); 4548 }; 4549 e.addEventListener('init', s); 4550 } 4551 } else t.controller.control = t.params.controller.control; 4552 }), 4553 a('update', () => { 4554 r(); 4555 }), 4556 a('resize', () => { 4557 r(); 4558 }), 4559 a('observerUpdate', () => { 4560 r(); 4561 }), 4562 a('setTranslate', (e, s, a) => { 4563 t.controller.control && !t.controller.control.destroyed && t.controller.setTranslate(s, a); 4564 }), 4565 a('setTransition', (e, s, a) => { 4566 t.controller.control && !t.controller.control.destroyed && t.controller.setTransition(s, a); 4567 }), 4568 Object.assign(t.controller, { 4569 setTranslate: function (e, s) { 4570 const a = t.controller.control; 4571 let r, n; 4572 const l = t.constructor; 4573 function o(e) { 4574 if (e.destroyed) return; 4575 const s = t.rtlTranslate ? -t.translate : t.translate; 4576 'slide' === t.params.controller.by && 4577 (!(function (e) { 4578 t.controller.spline = t.params.loop 4579 ? new i(t.slidesGrid, e.slidesGrid) 4580 : new i(t.snapGrid, e.snapGrid); 4581 })(e), 4582 (n = -t.controller.spline.interpolate(-s))), 4583 (n && 'container' !== t.params.controller.by) || 4584 ((r = (e.maxTranslate() - e.minTranslate()) / (t.maxTranslate() - t.minTranslate())), 4585 (!Number.isNaN(r) && Number.isFinite(r)) || (r = 1), 4586 (n = (s - t.minTranslate()) * r + e.minTranslate())), 4587 t.params.controller.inverse && (n = e.maxTranslate() - n), 4588 e.updateProgress(n), 4589 e.setTranslate(n, t), 4590 e.updateActiveIndex(), 4591 e.updateSlidesClasses(); 4592 } 4593 if (Array.isArray(a)) for (let e = 0; e < a.length; e += 1) a[e] !== s && a[e] instanceof l && o(a[e]); 4594 else a instanceof l && s !== a && o(a); 4595 }, 4596 setTransition: function (e, s) { 4597 const a = t.constructor, 4598 i = t.controller.control; 4599 let r; 4600 function n(s) { 4601 s.destroyed || 4602 (s.setTransition(e, t), 4603 0 !== e && 4604 (s.transitionStart(), 4605 s.params.autoHeight && 4606 l(() => { 4607 s.updateAutoHeight(); 4608 }), 4609 x(s.wrapperEl, () => { 4610 i && s.transitionEnd(); 4611 }))); 4612 } 4613 if (Array.isArray(i)) for (r = 0; r < i.length; r += 1) i[r] !== s && i[r] instanceof a && n(i[r]); 4614 else i instanceof a && s !== i && n(i); 4615 }, 4616 }); 4617 }, 4618 function (e) { 4619 let { swiper: t, extendParams: s, on: a } = e; 4620 s({ 4621 a11y: { 4622 enabled: !0, 4623 notificationClass: 'swiper-notification', 4624 prevSlideMessage: 'Previous slide', 4625 nextSlideMessage: 'Next slide', 4626 firstSlideMessage: 'This is the first slide', 4627 lastSlideMessage: 'This is the last slide', 4628 paginationBulletMessage: 'Go to slide {{index}}', 4629 slideLabelMessage: '{{index}} / {{slidesLength}}', 4630 containerMessage: null, 4631 containerRoleDescriptionMessage: null, 4632 itemRoleDescriptionMessage: null, 4633 // slideRole: 'group', 4634 id: null, 4635 }, 4636 }), 4637 (t.a11y = { clicked: !1 }); 4638 let i = null; 4639 function r(e) { 4640 const t = i; 4641 0 !== t.length && ((t.innerHTML = ''), (t.innerHTML = e)); 4642 } 4643 function n(e) {
4644 (e = T(e)).forEach((e) => { 4645 e.setAttribute('tabIndex', '0'); 4646 }); 4647 } 4648 function l(e) { 4649 (e = T(e)).forEach((e) => { 4650 e.setAttribute('tabIndex', '-1'); 4651 }); 4652 } 4653 function o(e, t) { 4654 (e = T(e)).forEach((e) => { 4655 e.setAttribute('role', t); 4656 }); 4657 } 4658 function d(e, t) { 4659 (e = T(e)).forEach((e) => { 4660 e.setAttribute('aria-roledescription', t); 4661 }); 4662 } 4663 function c(e, t) { 4664 (e = T(e)).forEach((e) => { 4665 e.setAttribute('aria-label', t); 4666 }); 4667 } 4668 function p(e) { 4669 (e = T(e)).forEach((e) => { 4670 e.setAttribute('aria-disabled', !0); 4671 }); 4672 } 4673 function u(e) { 4674 (e = T(e)).forEach((e) => { 4675 e.setAttribute('aria-disabled', !1); 4676 }); 4677 } 4678 function m(e) { 4679 if (13 !== e.keyCode && 32 !== e.keyCode) return; 4680 const s = t.params.a11y, 4681 a = e.target; 4682 (t.pagination && 4683 t.pagination.el && 4684 (a === t.pagination.el || t.pagination.el.contains(e.target)) && 4685 !e.target.matches(ae(t.params.pagination.bulletClass))) || 4686 (t.navigation && 4687 t.navigation.nextEl && 4688 a === t.navigation.nextEl && 4689 ((t.isEnd && !t.params.loop) || t.slideNext(), t.isEnd ? r(s.lastSlideMessage) : r(s.nextSlideMessage)), 4690 t.navigation && 4691 t.navigation.prevEl && 4692 a === t.navigation.prevEl && 4693 ((t.isBeginning && !t.params.loop) || t.slidePrev(), 4694 t.isBeginning ? r(s.firstSlideMessage) : r(s.prevSlideMessage)), 4695 t.pagination && a.matches(ae(t.params.pagination.bulletClass)) && a.click()); 4696 } 4697 function h() { 4698 return t.pagination && t.pagination.bullets && t.pagination.bullets.length; 4699 } 4700 function f() { 4701 return h() && t.params.pagination.clickable; 4702 } 4703 const g = (e, t, s) => { 4704 n(e), 4705 'BUTTON' !== e.tagName && (o(e, 'button'), e.addEventListener('keydown', m)), 4706 c(e, s), 4707 (function (e, t) {
4708 (e = T(e)).forEach((e) => { 4709 e.setAttribute('aria-controls', t); 4710 }); 4711 })(e, t); 4712 }, 4713 w = () => { 4714 t.a11y.clicked = !0; 4715 }, 4716 b = () => { 4717 requestAnimationFrame(() => { 4718 requestAnimationFrame(() => { 4719 t.destroyed || (t.a11y.clicked = !1); 4720 }); 4721 }); 4722 }, 4723 E = (e) => { 4724 if (t.a11y.clicked) return; 4725 const s = e.target.closest(`.${t.params.slideClass}, swiper-slide`); 4726 if (!s || !t.slides.includes(s)) return; 4727 const a = t.slides.indexOf(s) === t.activeIndex, 4728 i = t.params.watchSlidesProgress && t.visibleSlides && t.visibleSlides.includes(s); 4729 a || 4730 i || 4731 (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) || 4732 (t.isHorizontal() ? (t.el.scrollLeft = 0) : (t.el.scrollTop = 0), t.slideTo(t.slides.indexOf(s), 0)); 4733 }, 4734 x = () => { 4735 const e = t.params.a11y; 4736 e.itemRoleDescriptionMessage && d(t.slides, e.itemRoleDescriptionMessage), 4737 e.slideRole && o(t.slides, e.slideRole); 4738 const s = t.slides.length; 4739 e.slideLabelMessage && 4740 t.slides.forEach((a, i) => { 4741 const r = t.params.loop ? parseInt(a.getAttribute('data-swiper-slide-index'), 10) : i; 4742 c(a, e.slideLabelMessage.replace(/\{\{index\}\}/, r + 1).replace(/\{\{slidesLength\}\}/, s)); 4743 }); 4744 }, 4745 S = () => { 4746 const e = t.params.a11y; 4747 t.el.append(i); 4748 const s = t.el; 4749 e.containerRoleDescriptionMessage && d(s, e.containerRoleDescriptionMessage), 4750 e.containerMessage && c(s, e.containerMessage); 4751 const a = t.wrapperEl, 4752 r = 4753 e.id || 4754 a.getAttribute('id') || 4755 `swiper-wrapper-${ 4756 ((n = 16), 4757 void 0 === n && (n = 16), 4758 'x'.repeat(n).replace(/x/g, () => Math.round(16 * Math.random()).toString(16))) 4759 }`; 4760 var n; 4761 const l = t.params.autoplay && t.params.autoplay.enabled ? 'off' : 'polite'; 4762 var o; 4763 (o = r), 4764 T(a).forEach((e) => { 4765 e.setAttribute('id', o); 4766 }), 4767 (function (e, t) {
4768 (e = T(e)).forEach((e) => { 4769 e.setAttribute('aria-live', t); 4770 }); 4771 })(a, l), 4772 x(); 4773 let { nextEl: p, prevEl: u } = t.navigation ? t.navigation : {}; 4774 if ( 4775 ((p = T(p)), 4776 (u = T(u)), 4777 p && p.forEach((t) => g(t, r, e.nextSlideMessage)), 4778 u && u.forEach((t) => g(t, r, e.prevSlideMessage)), 4779 f()) 4780 ) { 4781 T(t.pagination.el).forEach((e) => { 4782 e.addEventListener('keydown', m); 4783 }); 4784 } 4785 t.el.addEventListener('focus', E, !0), 4786 t.el.addEventListener('pointerdown', w, !0), 4787 t.el.addEventListener('pointerup', b, !0); 4788 }; 4789 a('beforeInit', () => { 4790 (i = v('span', t.params.a11y.notificationClass)), 4791 i.setAttribute('aria-live', 'assertive'), 4792 i.setAttribute('aria-atomic', 'true'); 4793 }), 4794 a('afterInit', () => { 4795 t.params.a11y.enabled && S(); 4796 }), 4797 a('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 4798 t.params.a11y.enabled && x(); 4799 }), 4800 a('fromEdge toEdge afterInit lock unlock', () => { 4801 t.params.a11y.enabled && 4802 (function () { 4803 if (t.params.loop || t.params.rewind || !t.navigation) return; 4804 const { nextEl: e, prevEl: s } = t.navigation; 4805 s && (t.isBeginning ? (p(s), l(s)) : (u(s), n(s))), e && (t.isEnd ? (p(e), l(e)) : (u(e), n(e))); 4806 })(); 4807 }), 4808 a('paginationUpdate', () => { 4809 t.params.a11y.enabled && 4810 (function () { 4811 const e = t.params.a11y; 4812 h() && 4813 t.pagination.bullets.forEach((s) => { 4814 t.params.pagination.clickable && 4815 (n(s), 4816 t.params.pagination.renderBullet || 4817 (o(s, 'button'), c(s, e.paginationBulletMessage.replace(/\{\{index\}\}/, y(s) + 1)))), 4818 s.matches(ae(t.params.pagination.bulletActiveClass)) 4819 ? s.setAttribute('aria-current', 'true') 4820 : s.removeAttribute('aria-current'); 4821 }); 4822 })(); 4823 }), 4824 a('destroy', () => { 4825 t.params.a11y.enabled && 4826 (function () { 4827 i && i.remove(); 4828 let { nextEl: e, prevEl: s } = t.navigation ? t.navigation : {}; 4829 (e = T(e)), 4830 (s = T(s)), 4831 e && e.forEach((e) => e.removeEventListener('keydown', m)), 4832 s && s.forEach((e) => e.removeEventListener('keydown', m)), 4833 f() && 4834 T(t.pagination.el).forEach((e) => { 4835 e.removeEventListener('keydown', m); 4836 }); 4837 t.el.removeEventListener('focus', E, !0), 4838 t.el.removeEventListener('pointerdown', w, !0), 4839 t.el.removeEventListener('pointerup', b, !0); 4840 })(); 4841 }); 4842 }, 4843 function (e) { 4844 let { swiper: t, extendParams: s, on: a } = e; 4845 s({ history: { enabled: !1, root: '', replaceState: !1, key: 'slides', keepQuery: !1 } }); 4846 let i = !1, 4847 n = {}; 4848 const l = (e) => 4849 e 4850 .toString() 4851 .replace(/\s+/g, '-') 4852 .replace(/[^\w-]+/g, '') 4853 .replace(/--+/g, '-') 4854 .replace(/^-+/, '') 4855 .replace(/-+$/, ''), 4856 o = (e) => { 4857 const t = r(); 4858 let s; 4859 s = e ? new URL(e) : t.location; 4860 const a = s.pathname 4861 .slice(1) 4862 .split('/') 4863 .filter((e) => '' !== e), 4864 i = a.length; 4865 return { key: a[i - 2], value: a[i - 1] }; 4866 }, 4867 d = (e, s) => { 4868 const a = r(); 4869 if (!i || !t.params.history.enabled) return; 4870 let n; 4871 n = t.params.url ? new URL(t.params.url) : a.location; 4872 const o = 4873 t.virtual && t.params.virtual.enabled 4874 ? t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`) 4875 : t.slides[s]; 4876 let d = l(o.getAttribute('data-history')); 4877 if (t.params.history.root.length > 0) { 4878 let s = t.params.history.root; 4879 '/' === s[s.length - 1] && (s = s.slice(0, s.length - 1)), (d = `${s}/${e ? `${e}/` : ''}${d}`); 4880 } else n.pathname.includes(e) || (d = `${e ? `${e}/` : ''}${d}`); 4881 t.params.history.keepQuery && (d += n.search); 4882 const c = a.history.state; 4883 (c && c.value === d) || 4884 (t.params.history.replaceState 4885 ? a.history.replaceState({ value: d }, null, d) 4886 : a.history.pushState({ value: d }, null, d)); 4887 }, 4888 c = (e, s, a) => { 4889 if (s) 4890 for (let i = 0, r = t.slides.length; i < r; i += 1) { 4891 const r = t.slides[i]; 4892 if (l(r.getAttribute('data-history')) === s) { 4893 const s = t.getSlideIndex(r); 4894 t.slideTo(s, e, a); 4895 } 4896 } 4897 else t.slideTo(0, e, a); 4898 }, 4899 p = () => { 4900 (n = o(t.params.url)), c(t.params.speed, n.value, !1); 4901 }; 4902 a('init', () => { 4903 t.params.history.enabled && 4904 (() => { 4905 const e = r(); 4906 if (t.params.history) { 4907 if (!e.history || !e.history.pushState) 4908 return (t.params.history.enabled = !1), void (t.params.hashNavigation.enabled = !0); 4909 (i = !0), 4910 (n = o(t.params.url)), 4911 n.key || n.value 4912 ? (c(0, n.value, t.params.runCallbacksOnInit), 4913 t.params.history.replaceState || e.addEventListener('popstate', p)) 4914 : t.params.history.replaceState || e.addEventListener('popstate', p); 4915 } 4916 })(); 4917 }), 4918 a('destroy', () => { 4919 t.params.history.enabled && 4920 (() => { 4921 const e = r(); 4922 t.params.history.replaceState || e.removeEventListener('popstate', p); 4923 })(); 4924 }), 4925 a('transitionEnd _freeModeNoMomentumRelease', () => { 4926 i && d(t.params.history.key, t.activeIndex); 4927 }), 4928 a('slideChange', () => { 4929 i && t.params.cssMode && d(t.params.history.key, t.activeIndex); 4930 }); 4931 }, 4932 function (e) { 4933 let { swiper: t, extendParams: s, emit: i, on: n } = e, 4934 l = !1; 4935 const o = a(), 4936 d = r(); 4937 s({ 4938 hashNavigation: { 4939 enabled: !1, 4940 replaceState: !1, 4941 watchState: !1, 4942 getSlideIndex(e, s) { 4943 if (t.virtual && t.params.virtual.enabled) { 4944 const e = t.slides.filter((e) => e.getAttribute('data-hash') === s)[0]; 4945 if (!e) return 0; 4946 return parseInt(e.getAttribute('data-swiper-slide-index'), 10); 4947 } 4948 return t.getSlideIndex( 4949 f(t.slidesEl, `.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0] 4950 ); 4951 }, 4952 }, 4953 }); 4954 const c = () => { 4955 i('hashChange'); 4956 const e = o.location.hash.replace('#', ''), 4957 s = 4958 t.virtual && t.params.virtual.enabled 4959 ? t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`) 4960 : t.slides[t.activeIndex]; 4961 if (e !== (s ? s.getAttribute('data-hash') : '')) { 4962 const s = t.params.hashNavigation.getSlideIndex(t, e); 4963 if (void 0 === s || Number.isNaN(s)) return; 4964 t.slideTo(s); 4965 } 4966 }, 4967 p = () => { 4968 if (!l || !t.params.hashNavigation.enabled) return; 4969 const e = 4970 t.virtual && t.params.virtual.enabled 4971 ? t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`) 4972 : t.slides[t.activeIndex], 4973 s = e ? e.getAttribute('data-hash') || e.getAttribute('data-history') : ''; 4974 t.params.hashNavigation.replaceState && d.history && d.history.replaceState 4975 ? (d.history.replaceState(null, null, `#${s}` || ''), i('hashSet')) 4976 : ((o.location.hash = s || ''), i('hashSet')); 4977 }; 4978 n('init', () => { 4979 t.params.hashNavigation.enabled && 4980 (() => { 4981 if (!t.params.hashNavigation.enabled || (t.params.history && t.params.history.enabled)) return; 4982 l = !0; 4983 const e = o.location.hash.replace('#', ''); 4984 if (e) { 4985 const s = 0, 4986 a = t.params.hashNavigation.getSlideIndex(t, e); 4987 t.slideTo(a || 0, s, t.params.runCallbacksOnInit, !0); 4988 } 4989 t.params.hashNavigation.watchState && d.addEventListener('hashchange', c); 4990 })(); 4991 }), 4992 n('destroy', () => { 4993 t.params.hashNavigation.enabled && 4994 t.params.hashNavigation.watchState && 4995 d.removeEventListener('hashchange', c); 4996 }), 4997 n('transitionEnd _freeModeNoMomentumRelease', () => { 4998 l && p(); 4999 }), 5000 n('slideChange', () => { 5001 l && t.params.cssMode && p(); 5002 }); 5003 }, 5004 function (e) { 5005 let t, 5006 s, 5007 { swiper: i, extendParams: r, on: n, emit: l, params: o } = e; 5008 (i.autoplay = { running: !1, paused: !1, timeLeft: 0 }), 5009 r({ 5010 autoplay: { 5011 enabled: !1, 5012 delay: 3e3, 5013 waitForTransition: !0, 5014 disableOnInteraction: !1, 5015 stopOnLastSlide: !1, 5016 reverseDirection: !1, 5017 pauseOnMouseEnter: !1, 5018 }, 5019 }); 5020 let d, 5021 c, 5022 p, 5023 u, 5024 m, 5025 h, 5026 f, 5027 g, 5028 v = o && o.autoplay ? o.autoplay.delay : 3e3, 5029 w = o && o.autoplay ? o.autoplay.delay : 3e3, 5030 b = new Date().getTime(); 5031 function y(e) { 5032 i && 5033 !i.destroyed && 5034 i.wrapperEl && 5035 e.target === i.wrapperEl && 5036 (i.wrapperEl.removeEventListener('transitionend', y), g || C()); 5037 } 5038 const E = () => { 5039 if (i.destroyed || !i.autoplay.running) return; 5040 i.autoplay.paused ? (c = !0) : c && ((w = d), (c = !1));
5041 const e = i.autoplay.paused ? d : b + w - new Date().getTime(); 5042 (i.autoplay.timeLeft = e), 5043 l('autoplayTimeLeft', e, e / v), 5044 (s = requestAnimationFrame(() => { 5045 E(); 5046 })); 5047 }, 5048 x = (e) => { 5049 if (i.destroyed || !i.autoplay.running) return; 5050 cancelAnimationFrame(s), E(); 5051 let a = void 0 === e ? i.params.autoplay.delay : e; 5052 (v = i.params.autoplay.delay), (w = i.params.autoplay.delay); 5053 const r = (() => { 5054 let e; 5055 if ( 5056 ((e = 5057 i.virtual && i.params.virtual.enabled 5058 ? i.slides.filter((e) => e.classList.contains('swiper-slide-active'))[0] 5059 : i.slides[i.activeIndex]), 5060 !e) 5061 ) 5062 return; 5063 return parseInt(e.getAttribute('data-swiper-autoplay'), 10); 5064 })(); 5065 !Number.isNaN(r) && r > 0 && void 0 === e && ((a = r), (v = r), (w = r)), (d = a); 5066 const n = i.params.speed, 5067 o = () => { 5068 i && 5069 !i.destroyed && 5070 (i.params.autoplay.reverseDirection 5071 ? !i.isBeginning || i.params.loop || i.params.rewind 5072 ? (i.slidePrev(n, !0, !0), l('autoplay')) 5073 : i.params.autoplay.stopOnLastSlide || (i.slideTo(i.slides.length - 1, n, !0, !0), l('autoplay')) 5074 : !i.isEnd || i.params.loop || i.params.rewind 5075 ? (i.slideNext(n, !0, !0), l('autoplay')) 5076 : i.params.autoplay.stopOnLastSlide || (i.slideTo(0, n, !0, !0), l('autoplay')), 5077 i.params.cssMode && 5078 ((b = new Date().getTime()), 5079 requestAnimationFrame(() => { 5080 x(); 5081 }))); 5082 }; 5083 return ( 5084 a > 0 5085 ? (clearTimeout(t), 5086 (t = setTimeout(() => { 5087 o(); 5088 }, a))) 5089 : requestAnimationFrame(() => { 5090 o(); 5091 }), 5092 a 5093 ); 5094 }, 5095 S = () => { 5096 (b = new Date().getTime()), (i.autoplay.running = !0), x(), l('autoplayStart'); 5097 }, 5098 T = () => { 5099 (i.autoplay.running = !1), clearTimeout(t), cancelAnimationFrame(s), l('autoplayStop'); 5100 }, 5101 M = (e, s) => { 5102 if (i.destroyed || !i.autoplay.running) return; 5103 clearTimeout(t), e || (f = !0); 5104 const a = () => { 5105 l('autoplayPause'), 5106 i.params.autoplay.waitForTransition ? i.wrapperEl.addEventListener('transitionend', y) : C(); 5107 }; 5108 if (((i.autoplay.paused = !0), s)) return h && (d = i.params.autoplay.delay), (h = !1), void a(); 5109 const r = d || i.params.autoplay.delay; 5110 (d = r - (new Date().getTime() - b)), (i.isEnd && d < 0 && !i.params.loop) || (d < 0 && (d = 0), a()); 5111 }, 5112 C = () => { 5113 (i.isEnd && d < 0 && !i.params.loop) || 5114 i.destroyed || 5115 !i.autoplay.running || 5116 ((b = new Date().getTime()), f ? ((f = !1), x(d)) : x(), (i.autoplay.paused = !1), l('autoplayResume')); 5117 }, 5118 P = () => { 5119 if (i.destroyed || !i.autoplay.running) return; 5120 const e = a(); 5121 'hidden' === e.visibilityState && ((f = !0), M(!0)), 'visible' === e.visibilityState && C(); 5122 }, 5123 L = (e) => { 5124 'mouse' === e.pointerType && ((f = !0), (g = !0), i.animating || i.autoplay.paused || M(!0)); 5125 }, 5126 I = (e) => { 5127 'mouse' === e.pointerType && ((g = !1), i.autoplay.paused && C()); 5128 }; 5129 n('init', () => { 5130 i.params.autoplay.enabled && 5131 (i.params.autoplay.pauseOnMouseEnter && 5132 (i.el.addEventListener('pointerenter', L), i.el.addEventListener('pointerleave', I)), 5133 a().addEventListener('visibilitychange', P), 5134 S()); 5135 }), 5136 n('destroy', () => { 5137 i.el.removeEventListener('pointerenter', L), 5138 i.el.removeEventListener('pointerleave', I), 5139 a().removeEventListener('visibilitychange', P), 5140 i.autoplay.running && T(); 5141 }), 5142 n('_freeModeStaticRelease', () => { 5143 (u || f) && C(); 5144 }), 5145 n('_freeModeNoMomentumRelease', () => {
5146 i.params.autoplay.disableOnInteraction ? T() : M(!0, !0); 5147 }), 5148 n('beforeTransitionStart', (e, t, s) => { 5149 !i.destroyed && i.autoplay.running && (s || !i.params.autoplay.disableOnInteraction ? M(!0, !0) : T()); 5150 }), 5151 n('sliderFirstMove', () => { 5152 !i.destroyed && 5153 i.autoplay.running && 5154 (i.params.autoplay.disableOnInteraction 5155 ? T() 5156 : ((p = !0), 5157 (u = !1), 5158 (f = !1), 5159 (m = setTimeout(() => { 5160 (f = !0), (u = !0), M(!0); 5161 }, 200)))); 5162 }), 5163 n('touchEnd', () => { 5164 if (!i.destroyed && i.autoplay.running && p) { 5165 if ((clearTimeout(m), clearTimeout(t), i.params.autoplay.disableOnInteraction)) 5166 return (u = !1), void (p = !1); 5167 u && i.params.cssMode && C(), (u = !1), (p = !1); 5168 } 5169 }), 5170 n('slideChange', () => { 5171 !i.destroyed && i.autoplay.running && (h = !0); 5172 }), 5173 Object.assign(i.autoplay, { start: S, stop: T, pause: M, resume: C }); 5174 }, 5175 function (e) { 5176 let { swiper: t, extendParams: s, on: i } = e; 5177 s({ 5178 thumbs: { 5179 swiper: null, 5180 multipleActiveThumbs: !0, 5181 autoScrollOffset: 0, 5182 slideThumbActiveClass: 'swiper-slide-thumb-active', 5183 thumbsContainerClass: 'swiper-thumbs', 5184 }, 5185 }); 5186 let r = !1, 5187 n = !1; 5188 function l() { 5189 const e = t.thumbs.swiper; 5190 if (!e || e.destroyed) return; 5191 const s = e.clickedIndex, 5192 a = e.clickedSlide; 5193 if (a && a.classList.contains(t.params.thumbs.slideThumbActiveClass)) return; 5194 if (null == s) return; 5195 let i; 5196 (i = e.params.loop ? parseInt(e.clickedSlide.getAttribute('data-swiper-slide-index'), 10) : s), 5197 t.params.loop ? t.slideToLoop(i) : t.slideTo(i); 5198 } 5199 function o() { 5200 const { thumbs: e } = t.params; 5201 if (r) return !1; 5202 r = !0; 5203 const s = t.constructor; 5204 if (e.swiper instanceof s) 5205 (t.thumbs.swiper = e.swiper), 5206 Object.assign(t.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), 5207 Object.assign(t.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), 5208 t.thumbs.swiper.update(); 5209 else if (c(e.swiper)) { 5210 const a = Object.assign({}, e.swiper); 5211 Object.assign(a, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), 5212 (t.thumbs.swiper = new s(a)), 5213 (n = !0); 5214 } 5215 return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass), t.thumbs.swiper.on('tap', l), !0; 5216 } 5217 function d(e) { 5218 const s = t.thumbs.swiper; 5219 if (!s || s.destroyed) return; 5220 const a = 'auto' === s.params.slidesPerView ? s.slidesPerViewDynamic() : s.params.slidesPerView; 5221 let i = 1; 5222 const r = t.params.thumbs.slideThumbActiveClass; 5223 if ( 5224 (t.params.slidesPerView > 1 && !t.params.centeredSlides && (i = t.params.slidesPerView), 5225 t.params.thumbs.multipleActiveThumbs || (i = 1), 5226 (i = Math.floor(i)), 5227 s.slides.forEach((e) => e.classList.remove(r)), 5228 s.params.loop || (s.params.virtual && s.params.virtual.enabled)) 5229 ) 5230 for (let e = 0; e < i; e += 1) 5231 f(s.slidesEl, `[data-swiper-slide-index="${t.realIndex + e}"]`).forEach((e) => { 5232 e.classList.add(r); 5233 }); 5234 else for (let e = 0; e < i; e += 1) s.slides[t.realIndex + e] && s.slides[t.realIndex + e].classList.add(r); 5235 const n = t.params.thumbs.autoScrollOffset, 5236 l = n && !s.params.loop; 5237 if (t.realIndex !== s.realIndex || l) { 5238 const i = s.activeIndex; 5239 let r, o; 5240 if (s.params.loop) { 5241 const e = s.slides.filter((e) => e.getAttribute('data-swiper-slide-index') === `${t.realIndex}`)[0]; 5242 (r = s.slides.indexOf(e)), (o = t.activeIndex > t.previousIndex ? 'next' : 'prev'); 5243 } else (r = t.realIndex), (o = r > t.previousIndex ? 'next' : 'prev'); 5244 l && (r += 'next' === o ? n : -1 * n), 5245 s.visibleSlidesIndexes && 5246 s.visibleSlidesIndexes.indexOf(r) < 0 && 5247 (s.params.centeredSlides 5248 ? (r = r > i ? r - Math.floor(a / 2) + 1 : r + Math.floor(a / 2) - 1) 5249 : r > i && s.params.slidesPerGroup, 5250 s.slideTo(r, e ? 0 : void 0)); 5251 } 5252 } 5253 (t.thumbs = { swiper: null }), 5254 i('beforeInit', () => { 5255 const { thumbs: e } = t.params; 5256 if (e && e.swiper) 5257 if ('string' == typeof e.swiper || e.swiper instanceof HTMLElement) { 5258 const s = a(), 5259 i = () => { 5260 const a = 'string' == typeof e.swiper ? s.querySelector(e.swiper) : e.swiper; 5261 if (a && a.swiper) (e.swiper = a.swiper), o(), d(!0); 5262 else if (a) { 5263 const s = (i) => { 5264 (e.swiper = i.detail[0]), 5265 a.removeEventListener('init', s), 5266 o(), 5267 d(!0),
5268 e.swiper.update(), 5269 t.update(); 5270 }; 5271 a.addEventListener('init', s); 5272 } 5273 return a; 5274 }, 5275 r = () => { 5276 if (t.destroyed) return; 5277 i() || requestAnimationFrame(r); 5278 }; 5279 requestAnimationFrame(r); 5280 } else o(), d(!0); 5281 }), 5282 i('slideChange update resize observerUpdate', () => { 5283 d(); 5284 }), 5285 i('setTransition', (e, s) => { 5286 const a = t.thumbs.swiper; 5287 a && !a.destroyed && a.setTransition(s); 5288 }), 5289 i('beforeDestroy', () => { 5290 const e = t.thumbs.swiper; 5291 e && !e.destroyed && n && e.destroy(); 5292 }), 5293 Object.assign(t.thumbs, { init: o, update: d }); 5294 }, 5295 function (e) { 5296 let { swiper: t, extendParams: s, emit: a, once: i } = e; 5297 s({ 5298 freeMode: { 5299 enabled: !1, 5300 momentum: !0, 5301 momentumRatio: 1, 5302 momentumBounce: !0, 5303 momentumBounceRatio: 1, 5304 momentumVelocityRatio: 1, 5305 sticky: !1, 5306 minimumVelocity: 0.02, 5307 }, 5308 }), 5309 Object.assign(t, { 5310 freeMode: { 5311 onTouchStart: function () { 5312 if (t.params.cssMode) return; 5313 const e = t.getTranslate(); 5314 t.setTranslate(e), 5315 t.setTransition(0), 5316 (t.touchEventsData.velocities.length = 0), 5317 t.freeMode.onTouchEnd({ currentPos: t.rtl ? t.translate : -t.translate }); 5318 }, 5319 onTouchMove: function () { 5320 if (t.params.cssMode) return; 5321 const { touchEventsData: e, touches: s } = t; 5322 0 === e.velocities.length && 5323 e.velocities.push({ position: s[t.isHorizontal() ? 'startX' : 'startY'], time: e.touchStartTime }), 5324 e.velocities.push({ position: s[t.isHorizontal() ? 'currentX' : 'currentY'], time: o() }); 5325 }, 5326 onTouchEnd: function (e) { 5327 let { currentPos: s } = e; 5328 if (t.params.cssMode) return; 5329 const { params: r, wrapperEl: n, rtlTranslate: l, snapGrid: d, touchEventsData: c } = t, 5330 p = o() - c.touchStartTime; 5331 if (s < -t.minTranslate()) t.slideTo(t.activeIndex); 5332 else if (s > -t.maxTranslate()) 5333 t.slides.length < d.length ? t.slideTo(d.length - 1) : t.slideTo(t.slides.length - 1); 5334 else { 5335 if (r.freeMode.momentum) { 5336 if (c.velocities.length > 1) { 5337 const e = c.velocities.pop(), 5338 s = c.velocities.pop(), 5339 a = e.position - s.position, 5340 i = e.time - s.time; 5341 (t.velocity = a / i), 5342 (t.velocity /= 2), 5343 Math.abs(t.velocity) < r.freeMode.minimumVelocity && (t.velocity = 0), 5344 (i > 150 || o() - e.time > 300) && (t.velocity = 0); 5345 } else t.velocity = 0; 5346 (t.velocity *= r.freeMode.momentumVelocityRatio), (c.velocities.length = 0); 5347 let e = 1e3 * r.freeMode.momentumRatio; 5348 const s = t.velocity * e; 5349 let p = t.translate + s; 5350 l && (p = -p); 5351 let u, 5352 m = !1; 5353 const h = 20 * Math.abs(t.velocity) * r.freeMode.momentumBounceRatio; 5354 let f; 5355 if (p < t.maxTranslate()) 5356 r.freeMode.momentumBounce 5357 ? (p + t.maxTranslate() < -h && (p = t.maxTranslate() - h), 5358 (u = t.maxTranslate()), 5359 (m = !0), 5360 (c.allowMomentumBounce = !0)) 5361 : (p = t.maxTranslate()), 5362 r.loop && r.centeredSlides && (f = !0); 5363 else if (p > t.minTranslate()) 5364 r.freeMode.momentumBounce 5365 ? (p - t.minTranslate() > h && (p = t.minTranslate() + h), 5366 (u = t.minTranslate()), 5367 (m = !0), 5368 (c.allowMomentumBounce = !0)) 5369 : (p = t.minTranslate()), 5370 r.loop && r.centeredSlides && (f = !0); 5371 else if (r.freeMode.sticky) { 5372 let e; 5373 for (let t = 0; t < d.length; t += 1) 5374 if (d[t] > -p) { 5375 e = t; 5376 break; 5377 } 5378 (p = Math.abs(d[e] - p) < Math.abs(d[e - 1] - p) || 'next' === t.swipeDirection ? d[e]
5378: d[e - 1]), 5379 (p = -p); 5380 } 5381 if ( 5382 (f && 5383 i('transitionEnd', () => { 5384 t.loopFix(); 5385 }), 5386 0 !== t.velocity) 5387 ) { 5388 if ( 5389 ((e = l ? Math.abs((-p - t.translate) / t.velocity) : Math.abs((p - t.translate) / t.velocity)), 5390 r.freeMode.sticky) 5391 ) { 5392 const s = Math.abs((l ? -p : p) - t.translate), 5393 a = t.slidesSizesGrid[t.activeIndex]; 5394 e = s < a ? r.speed : s < 2 * a ? 1.5 * r.speed : 2.5 * r.speed; 5395 } 5396 } else if (r.freeMode.sticky) return void t.slideToClosest(); 5397 r.freeMode.momentumBounce && m 5398 ? (t.updateProgress(u), 5399 t.setTransition(e), 5400 t.setTranslate(p), 5401 t.transitionStart(!0, t.swipeDirection), 5402 (t.animating = !0), 5403 x(n, () => { 5404 t && 5405 !t.destroyed && 5406 c.allowMomentumBounce && 5407 (a('momentumBounce'), 5408 t.setTransition(r.speed), 5409 setTimeout(() => { 5410 t.setTranslate(u), 5411 x(n, () => { 5412 t && !t.destroyed && t.transitionEnd(); 5413 }); 5414 }, 0)); 5415 })) 5416 : t.velocity 5417 ? (a('_freeModeNoMomentumRelease'), 5418 t.updateProgress(p), 5419 t.setTransition(e), 5420 t.setTranslate(p), 5421 t.transitionStart(!0, t.swipeDirection), 5422 t.animating || 5423 ((t.animating = !0), 5424 x(n, () => { 5425 t && !t.destroyed && t.transitionEnd(); 5426 }))) 5427 : t.updateProgress(p), 5428 t.updateActiveIndex(), 5429 t.updateSlidesClasses(); 5430 } else { 5431 if (r.freeMode.sticky) return void t.slideToClosest(); 5432 r.freeMode && a('_freeModeNoMomentumRelease'); 5433 } 5434 (!r.freeMode.momentum || p >= r.longSwipesMs) && 5435 (a('_freeModeStaticRelease'), t.updateProgress(), t.updateActiveIndex(), t.updateSlidesClasses()); 5436 } 5437 }, 5438 }, 5439 }); 5440 }, 5441 function (e) { 5442 let t, 5443 s, 5444 a, 5445 i, 5446 { swiper: r, extendParams: n, on: l } = e; 5447 n({ grid: { rows: 1, fill: 'column' } }); 5448 const o = () => { 5449 let e = r.params.spaceBetween; 5450 return ( 5451 'string' == typeof e && e.indexOf('%') >= 0 5452 ? (e = (parseFloat(e.replace('%', '')) / 100) * r.size) 5453 : 'string' == typeof e && (e = parseFloat(e)), 5454 e 5455 ); 5456 }; 5457 l('init', () => { 5458 i = r.params.grid && r.params.grid.rows > 1; 5459 }), 5460 l('update', () => { 5461 const { params: e, el: t } = r, 5462 s = e.grid && e.grid.rows > 1; 5463 i && !s 5464 ? (t.classList.remove(`${e.containerModifierClass}grid`, `${e.containerModifierClass}grid-column`), 5465 (a = 1), 5466 r.emitContainerClasses()) 5467 : !i && 5468 s && 5469 (t.classList.add(`${e.containerModifierClass}grid`), 5470 'column' === e.grid.fill && t.classList.add(`${e.containerModifierClass}grid-column`), 5471 r.emitContainerClasses()), 5472 (i = s); 5473 }), 5474 (r.grid = { 5475 initSlides: (e) => { 5476 const { slidesPerView: i } = r.params, 5477 { rows: n, fill: l } = r.params.grid, 5478 o = r.virtual && r.params.virtual.enabled ? r.virtual.slides.length : e.length; 5479 (a = Math.floor(o / n)), 5480 (t = Math.floor(o / n) === o / n ? o : Math.ceil(o / n) *
5480n), 5481 'auto' !== i && 'row' === l && (t = Math.max(t, i * n)), 5482 (s = t / n); 5483 }, 5484 unsetSlides: () => { 5485 r.slides && 5486 r.slides.forEach((e) => { 5487 e.swiperSlideGridSet && ((e.style.height = ''), (e.style[r.getDirectionLabel('margin-top')] = '')); 5488 }); 5489 }, 5490 updateSlide: (e, i, n) => { 5491 const { slidesPerGroup: l } = r.params, 5492 d = o(), 5493 { rows: c, fill: p } = r.params.grid, 5494 u = r.virtual && r.params.virtual.enabled ? r.virtual.slides.length : n.length; 5495 let m, h, f; 5496 if ('row' === p && l > 1) { 5497 const s = Math.floor(e / (l * c)), 5498 a = e - c * l * s, 5499 r = 0 === s ? l : Math.min(Math.ceil((u - s * c * l) / c), l); 5500 (f = Math.floor(a / r)), (h = a - f * r + s * l), (m = h + (f * t) / c), (i.style.order = m); 5501 } else 5502 'column' === p 5503 ? ((h = Math.floor(e / c)), 5504 (f = e - h * c), 5505 (h > a || (h === a && f === c - 1)) && ((f += 1), f >= c && ((f = 0), (h += 1)))) 5506 : ((f = Math.floor(e / s)), (h = e - f * s)); 5507 (i.row = f), 5508 (i.column = h), 5509 (i.style.height = `calc((100% - ${(c - 1) * d}px) / ${c})`), 5510 (i.style[r.getDirectionLabel('margin-top')] = 0 !== f ? d && `${d}px` : ''), 5511 (i.swiperSlideGridSet = !0); 5512 }, 5513 updateWrapperSize: (e, s) => { 5514 const { centeredSlides: a, roundLengths: i } = r.params, 5515 n = o(), 5516 { rows: l } = r.params.grid; 5517 if ( 5518 ((r.virtualSize = (e + n) * t), 5519 (r.virtualSize = Math.ceil(r.virtualSize / l) - n), 5520 r.params.cssMode || (r.wrapperEl.style[r.getDirectionLabel('width')] = `${r.virtualSize + n}px`), 5521 a) 5522 ) { 5523 const e = []; 5524 for (let t = 0; t < s.length; t += 1) { 5525 let a = s[t]; 5526 i && (a = Math.floor(a)), s[t] < r.virtualSize + s[0] && e.push(a); 5527 } 5528 s.splice(0, s.length), s.push(...e); 5529 } 5530 }, 5531 }); 5532 }, 5533 function (e) { 5534 let { swiper: t } = e; 5535 Object.assign(t, { 5536 appendSlide: ie.bind(t), 5537 prependSlide: re.bind(t), 5538 addSlide: ne.bind(t), 5539 removeSlide: le.bind(t), 5540 removeAllSlides: oe.bind(t), 5541 }); 5542 }, 5543 function (e) { 5544 let { swiper: t, extendParams: s, on: a } = e; 5545 s({ fadeEffect: { crossFade: !1 } }), 5546 de({ 5547 effect: 'fade', 5548 swiper: t, 5549 on: a, 5550 setTranslate: () => { 5551 const { slides: e } = t; 5552 t.params.fadeEffect; 5553 for (let s = 0; s < e.length; s += 1) { 5554 const e = t.slides[s]; 5555 let a = -e.swiperSlideOffset; 5556 t.params.virtualTranslate || (a -= t.translate); 5557 let i = 0; 5558 t.isHorizontal() || ((i = a), (a = 0)); 5559 const r = t.params.fadeEffect.crossFade 5560 ? Math.max(1 - Math.abs(e.progress), 0) 5561 : 1 + Math.min(Math.max(e.progress, -1), 0), 5562 n = ce(0, e); 5563 (n.style.opacity = r), (n.style.transform = `translate3d(${a}px, ${i}px, 0px)`); 5564 } 5565 }, 5566 setTransition: (e) => { 5567 const s = t.slides.map((e) => h(e)); 5568 s.forEach((t) => { 5569 t.style.transitionDuration = `${e}ms`; 5570 }), 5571 pe({ swiper: t, duration: e, transformElements: s, allSlides: !0 }); 5572 }, 5573 overwriteParams: () => ({ 5574 slidesPerView: 1, 5575 slidesPerGroup: 1, 5576 watchSlidesProgress: !0, 5577 spaceBetween: 0, 5578 virtualTranslate: !t.params.cssMode, 5579 }), 5580 }); 5581 }, 5582 function (e) { 5583 let { swiper: t, extendParams: s, on: a } = e; 5584 s({ cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: 0.94 } }); 5585 const i = (e, t, s) => { 5586 let a = s ? e.querySelector('.swiper-slide-shadow-left') : e.querySelector('.swiper-slide-shadow-top'), 5587 i = s ? e.querySelector('.swiper-slide-shadow-right') : e.querySelector('.swiper-slide-shadow-bottom'); 5588 a || 5589 ((a = v('div', ('swiper-slide-shadow-cube swiper-slide-shadow-' + (s ? 'left' : 'top')).split(' '))), 5590 e.append(a)), 5591 i || 5592 ((i = v('div', ('swiper-slide-shadow-cube swiper-slide-shadow-' + (s ? 'right' : 'bottom')).split(' '))), 5593 e.append(i)), 5594 a && (a.style.opacity = Math.max(-t, 0)), 5595 i && (i.style.opacity = Math.max(t, 0)); 5596 }; 5597 de({ 5598 effect: 'cube', 5599 swiper: t, 5600 on: a, 5601 setTranslate: () => { 5602 const { el: e, wrapperEl: s, slides: a, width: r, height: n, rtlTranslate: l, size: o, browser: d } = t, 5603 c = t.params.cubeEffect, 5604 p = t.isHorizontal(), 5605 u = t.virtual && t.params.virtual.enabled; 5606 let m, 5607 h = 0; 5608 c.shadow && 5609 (p 5610 ? ((m = t.wrapperEl.querySelector('.swiper-cube-shadow')), 5611 m || ((m = v('div', 'swiper-cube-shadow')), t.wrapperEl.append(m)), 5612 (m.style.height = `${r}px`)) 5613 : ((m = e.querySelector('.swiper-cube-shadow')), 5614 m || ((m = v('div', 'swiper-cube-shadow')), e.append(m)))); 5615 for (let e = 0; e < a.length; e += 1) { 5616 const s = a[e]; 5617 let r = e; 5618 u && (r = parseInt(s.getAttribute('data-swiper-slide-index'), 10)); 5619 let n = 90 * r, 5620 d = Math.floor(n / 360); 5621 l && ((n = -n), (d = Math.floor(-n / 360))); 5622 const m = Math.max(Math.min(s.progress, 1), -1); 5623 let f = 0, 5624 g = 0, 5625 v = 0; 5626 r % 4 == 0 5627 ? ((f = 4 * -d * o), (v = 0)) 5628 : (r - 1) % 4 == 0 5629 ? ((f = 0), (v = 4 * -d * o)) 5630 : (r - 2) % 4 == 0 5631 ? ((f = o + 4 * d * o), (v = o)) 5632 : (r - 3) % 4 == 0 && ((f = -o), (v = 3 * o + 4 * o * d)), 5633 l && (f = -f), 5634 p || ((g = f), (f = 0)); 5635 const w = `rotateX(${p ? 0 : -n}deg) rotateY(${p ? n : 0}deg) translate3d(${f}px, ${g}px, ${v}px)`; 5636 m <= 1 && 5637 m > -1 && 5638 ((h = 90 * r + 90 * m), 5639 l && (h = 90 * -r - 90 * m), 5640 t.browser && t.browser.need3dFix && (Math.abs(h) / 90) % 2 == 1 && (h += 0.001)), 5641 (s.style.transform = w), 5642 c.slideShadows && i(s, m, p); 5643 } 5644 if ( 5645 ((s.style.transformOrigin = `50% 50% -${o / 2}px`), 5646 (s.style['-webkit-transform-origin'] = `50% 50% -${o / 2}px`), 5647 c.shadow) 5648 ) 5649 if (p) 5650 m.style.transform = `translate3d(0px, ${r / 2 + c.shadowOffset}px, ${ 5651 -r / 2 5652 }
5652px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`; 5653 else { 5654 const e = Math.abs(h) - 90 * Math.floor(Math.abs(h) / 90), 5655 t = 1.5 - (Math.sin((2 * e * Math.PI) / 360) / 2 + Math.cos((2 * e * Math.PI) / 360) / 2), 5656 s = c.shadowScale, 5657 a = c.shadowScale / t, 5658 i = c.shadowOffset; 5659 m.style.transform = `scale3d(${s}, 1, ${a}) translate3d(0px, ${n / 2 + i}px, ${ 5660 -n / 2 / a 5661 }px) rotateX(-89.99deg)`; 5662 } 5663 const f = (d.isSafari || d.isWebView) && d.needPerspectiveFix ? -o / 2 : 0; 5664 (s.style.transform = `translate3d(0px,0,${f}px) rotateX(${t.isHorizontal() ? 0 : h}deg) rotateY(${ 5665 t.isHorizontal() ? -h : 0 5666 }deg)`), 5667 s.style.setProperty('--swiper-cube-translate-z', `${f}px`); 5668 }, 5669 setTransition: (e) => { 5670 const { el: s, slides: a } = t; 5671 if ( 5672 (a.forEach((t) => { 5673 (t.style.transitionDuration = `${e}ms`), 5674 t 5675 .querySelectorAll( 5676 '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' 5677 ) 5678 .forEach((t) => { 5679 t.style.transitionDuration = `${e}ms`; 5680 }); 5681 }), 5682 t.params.cubeEffect.shadow && !t.isHorizontal()) 5683 ) { 5684 const t = s.querySelector('.swiper-cube-shadow'); 5685 t && (t.style.transitionDuration = `${e}ms`); 5686 } 5687 }, 5688 recreateShadows: () => { 5689 const e = t.isHorizontal(); 5690 t.slides.forEach((t) => { 5691 const s = Math.max(Math.min(t.progress, 1), -1); 5692 i(t, s, e); 5693 }); 5694 }, 5695 getEffectParams: () => t.params.cubeEffect, 5696 perspective: () => !0, 5697 overwriteParams: () => ({ 5698 slidesPerView: 1, 5699 slidesPerGroup: 1, 5700 watchSlidesProgress: !0, 5701 resistanceRatio: 0, 5702 spaceBetween: 0, 5703 centeredSlides: !1, 5704 virtualTranslate: !0, 5705 }), 5706 }); 5707 }, 5708 function (e) { 5709 let { swiper: t, extendParams: s, on: a } = e; 5710 s({ flipEffect: { slideShadows: !0, limitRotation: !0 } }); 5711 const i = (e, s) => { 5712 let a = t.isHorizontal() 5713 ? e.querySelector('.swiper-slide-shadow-left') 5714 : e.querySelector('.swiper-slide-shadow-top'), 5715 i = t.isHorizontal() 5716 ? e.querySelector('.swiper-slide-shadow-right') 5717 : e.querySelector('.swiper-slide-shadow-bottom'); 5718 a || (a = ue('flip', e, t.isHorizontal() ? 'left' : 'top')), 5719 i || (i = ue('flip', e, t.isHorizontal() ? 'right' : 'bottom')), 5720 a && (a.style.opacity = Math.max(-s, 0)), 5721 i && (i.style.opacity = Math.max(s, 0)); 5722 }; 5723 de({ 5724 effect: 'flip', 5725 swiper: t, 5726 on: a, 5727 setTranslate: () => { 5728 const { slides: e, rtlTranslate: s } = t, 5729 a = t.params.flipEffect; 5730 for (let r = 0; r < e.length; r += 1) { 5731 const n = e[r]; 5732 let l = n.progress; 5733 t.params.flipEffect.limitRotation && (l = Math.max(Math.min(n.progress, 1), -1)); 5734 const o = n.swiperSlideOffset; 5735 let d = -180 * l, 5736 c = 0, 5737 p = t.params.cssMode ? -o - t.translate : -o, 5738 u = 0; 5739 t.isHorizontal() ? s && (d = -d) : ((u = p), (p = 0), (c = -d), (d = 0)), 5740 t.browser && 5741 t.browser.need3dFix && 5742 ((Math.abs(d) / 90) % 2 == 1 && (d += 0.001), (Math.abs(c) / 90) % 2 == 1 && (c += 0.001)), 5743 (n.style.zIndex = -Math.abs(Math.round(l)) + e.length), 5744 a.slideShadows && i(n, l); 5745 const m = `translate3d(${p}px, ${u}px, 0px) rotateX(${c}deg) rotateY(${d}deg)`; 5746 ce(0, n).style.transform = m; 5747 } 5748 }, 5749 setTransition: (e) => { 5750 const s = t.slides.map((e) => h(e));
5751 s.forEach((t) => { 5752 (t.style.transitionDuration = `${e}ms`), 5753 t 5754 .querySelectorAll( 5755 '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' 5756 ) 5757 .forEach((t) => { 5758 t.style.transitionDuration = `${e}ms`; 5759 }); 5760 }), 5761 pe({ swiper: t, duration: e, transformElements: s }); 5762 }, 5763 recreateShadows: () => { 5764 t.params.flipEffect, 5765 t.slides.forEach((e) => { 5766 let s = e.progress; 5767 t.params.flipEffect.limitRotation && (s = Math.max(Math.min(e.progress, 1), -1)), i(e, s); 5768 }); 5769 }, 5770 getEffectParams: () => t.params.flipEffect, 5771 perspective: () => !0, 5772 overwriteParams: () => ({ 5773 slidesPerView: 1, 5774 slidesPerGroup: 1, 5775 watchSlidesProgress: !0, 5776 spaceBetween: 0, 5777 virtualTranslate: !t.params.cssMode, 5778 }), 5779 }); 5780 }, 5781 function (e) { 5782 let { swiper: t, extendParams: s, on: a } = e; 5783 s({ coverflowEffect: { rotate: 50, stretch: 0, depth: 100, scale: 1, modifier: 1, slideShadows: !0 } }), 5784 de({ 5785 effect: 'coverflow', 5786 swiper: t, 5787 on: a, 5788 setTranslate: () => { 5789 const { width: e, height: s, slides: a, slidesSizesGrid: i } = t, 5790 r = t.params.coverflowEffect, 5791 n = t.isHorizontal(), 5792 l = t.translate, 5793 o = n ? e / 2 - l : s / 2 - l, 5794 d = n ? r.rotate : -r.rotate, 5795 c = r.depth; 5796 for (let e = 0, s = a.length; e < s; e += 1) { 5797 const s = a[e], 5798 l = i[e], 5799 p = (o - s.swiperSlideOffset - l / 2) / l, 5800 u = 'function' == typeof r.modifier ? r.modifier(p) : p * r.modifier; 5801 let m = n ? d * u : 0, 5802 h = n ? 0 : d * u, 5803 f = -c * Math.abs(u), 5804 g = r.stretch; 5805 'string' == typeof g && -1 !== g.indexOf('%') && (g = (parseFloat(r.stretch) / 100) * l); 5806 let v = n ? 0 : g * u, 5807 w = n ? g * u : 0, 5808 b = 1 - (1 - r.scale) * Math.abs(u); 5809 Math.abs(w) < 0.001 && (w = 0), 5810 Math.abs(v) < 0.001 && (v = 0), 5811 Math.abs(f) < 0.001 && (f = 0), 5812 Math.abs(m) < 0.001 && (m = 0), 5813 Math.abs(h) < 0.001 && (h = 0), 5814 Math.abs(b) < 0.001 && (b = 0), 5815 t.browser && 5816 t.browser.need3dFix && 5817 ((Math.abs(m) / 90) % 2 == 1 && (m += 0.001), (Math.abs(h) / 90) % 2 == 1 && (h += 0.001)); 5818 const y = `translate3d(${w}px,${v}px,${f}px) rotateX(${h}deg) rotateY(${m}deg) scale(${b})`; 5819 if (((ce(0, s).style.transform = y), (s.style.zIndex = 1 - Math.abs(Math.round(u))), r.slideShadows)) { 5820 let e = n ? s.querySelector('.swiper-slide-shadow-left') : s.querySelector('.swiper-slide-shadow-top'), 5821 t = n 5822 ? s.querySelector('.swiper-slide-shadow-right') 5823 : s.querySelector('.swiper-slide-shadow-bottom'); 5824 e || (e = ue('coverflow', s, n ? 'left' : 'top')), 5825 t || (t = ue('coverflow', s, n ? 'right' : 'bottom')), 5826 e && (e.style.opacity = u > 0 ? u : 0), 5827 t && (t.style.opacity = -u > 0 ? -u : 0); 5828 } 5829 } 5830 }, 5831 setTransition: (e) => { 5832 t.slides 5833 .map((e) => h(e)) 5834 .forEach((t) => { 5835 (t.style.transitionDuration = `${e}ms`), 5836 t 5837 .querySelectorAll( 5838 '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' 5839 ) 5840 .forEach((t) => { 5841 t.style.transitionDuration = `${e}ms`; 5842 }); 5843 }); 5844 }, 5845 perspective: () => !0, 5846 overwriteParams: () => ({ watchSlidesProgress: !0 }), 5847 }); 5848 }, 5849 function (e) { 5850 let { swiper: t, extendParams: s, on: a } = e; 5851 s({ 5852 creativeEffect: { 5853 limitProgress: 1, 5854 shadowPerProgress: !1, 5855 progressMultiplier: 1, 5856 perspective: !0, 5857 prev: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1 }, 5858 next: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1 }, 5859 }, 5860 }); 5861 const i = (e) => ('string' == typeof e ? e : `${e}px`); 5862 de({ 5863 effect: 'creative', 5864 swiper: t, 5865 on: a, 5866 setTranslate: () => { 5867 const { slides: e, wrapperEl: s, slidesSizesGrid: a } = t, 5868 r = t.params.creativeEffect, 5869 { progressMultiplier: n } = r, 5870 l = t.params.centeredSlides; 5871 if (l) { 5872 const e = a[0] / 2 - t.params.slidesOffsetBefore || 0; 5873 s.style.transform = `translateX(calc(50% - ${e}px))`; 5874 } 5875 for (let s = 0; s < e.length; s += 1) { 5876 const a = e[s], 5877 o = a.progress, 5878 d = Math.min(Math.max(a.progress, -r.limitProgress), r.limitProgress); 5879 let c = d; 5880 l || (c = Math.min(Math.max(a.originalProgress, -r.limitProgress), r.limitProgress)); 5881 const p = a.swiperSlideOffset, 5882 u = [t.params.cssMode ? -p - t.translate : -p, 0, 0], 5883 m = [0, 0, 0]; 5884 let h = !1; 5885 t.isHorizontal() || ((u[1] = u[0]), (u[0] = 0)); 5886 let f = { translate: [0, 0, 0], rotate: [0, 0, 0], scale: 1, opacity: 1 }; 5887 d < 0 ? ((f = r.next), (h = !0)) : d > 0 && ((f = r.prev), (h = !0)), 5888 u.forEach((e, t) => { 5889 u[t] = `calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d * n)}))`; 5890 }), 5891 m.forEach((e, s) => { 5892 let a = f.rotate[s] * Math.abs(d * n); 5893 t.browser && t.browser.need3dFix && (Math.abs(a) / 90) % 2 == 1 && (a += 0.001), (m[s] = a); 5894 }), 5895 (a.style.zIndex = -Math.abs(Math.round(o)) + e.length); 5896 const g = u.join(', '), 5897 v = `rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`, 5898 w = c < 0 ? `scale(${1 + (1 - f.scale) * c * n})` : `scale(${1 - (1 - f.scale) * c * n})`, 5899 b = c < 0 ? 1 + (1 - f.opacity) * c * n : 1 - (1 - f.opacity) * c * n, 5900 y = `translate3d(${g}) ${v} ${w}`; 5901 if ((h && f.shadow) || !h) { 5902 let e = a.querySelector('.swiper-slide-shadow'); 5903 if ((!e && f.shadow && (e = ue('creative', a)), e)) { 5904 const t = r.shadowPerProgress ? d * (1 / r.limitProgress) : d; 5905 e.style.opacity = Math.min(Math.max(Math.abs(t), 0), 1); 5906 } 5907 } 5908 const E = ce(0, a); 5909 (E.style.transform = y), (E.style.opacity = b), f.origin && (E.style.transformOrigin = f.origin); 5910 } 5911 }, 5912 setTransition: (e) => { 5913 const s = t.slides.map((e) => h(e));
5914 s.forEach((t) => { 5915 (t.style.transitionDuration = `${e}ms`), 5916 t.querySelectorAll('.swiper-slide-shadow').forEach((t) => { 5917 t.style.transitionDuration = `${e}ms`; 5918 }); 5919 }), 5920 pe({ swiper: t, duration: e, transformElements: s, allSlides: !0 }); 5921 }, 5922 perspective: () => t.params.creativeEffect.perspective, 5923 overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !t.params.cssMode }), 5924 }); 5925 }, 5926 function (e) { 5927 let { swiper: t, extendParams: s, on: a } = e; 5928 s({ cardsEffect: { slideShadows: !0, rotate: !0, perSlideRotate: 2, perSlideOffset: 8 } }), 5929 de({ 5930 effect: 'cards', 5931 swiper: t, 5932 on: a, 5933 setTranslate: () => { 5934 const { slides: e, activeIndex: s, rtlTranslate: a } = t, 5935 i = t.params.cardsEffect, 5936 { startTranslate: r, isTouched: n } = t.touchEventsData, 5937 l = a ? -t.translate : t.translate; 5938 for (let o = 0; o < e.length; o += 1) { 5939 const d = e[o], 5940 c = d.progress, 5941 p = Math.min(Math.max(c, -4), 4); 5942 let u = d.swiperSlideOffset; 5943 t.params.centeredSlides && 5944 !t.params.cssMode && 5945 (t.wrapperEl.style.transform = `translateX(${t.minTranslate()}px)`), 5946 t.params.centeredSlides && t.params.cssMode && (u -= e[0].swiperSlideOffset); 5947 let m = t.params.cssMode ? -u - t.translate : -u, 5948 h = 0; 5949 const f = -100 * Math.abs(p); 5950 let g = 1, 5951 v = -i.perSlideRotate * p, 5952 w = i.perSlideOffset - 0.75 * Math.abs(p); 5953 const b = t.virtual && t.params.virtual.enabled ? t.virtual.from + o : o, 5954 y = (b === s || b === s - 1) && p > 0 && p < 1 && (n || t.params.cssMode) && l < r, 5955 E = (b === s || b === s + 1) && p < 0 && p > -1 && (n || t.params.cssMode) && l > r; 5956 if (y || E) { 5957 const e = (1 - Math.abs((Math.abs(p) - 0.5) / 0.5)) ** 0.5; 5958 (v += -28 * p * e), (g += -0.5 * e), (w += 96 * e), (h = -25 * e * Math.abs(p) + '%'); 5959 } 5960 if ( 5961 ((m = 5962 p < 0 5963 ? `calc(${m}px ${a ? '-' : '+'} (${w * Math.abs(p)}%))` 5964 : p > 0 5965 ? `calc(${m}px ${a ? '-' : '+'} (-${w * Math.abs(p)}%))` 5966 : `${m}px`), 5967 !t.isHorizontal()) 5968 ) { 5969 const e = h; 5970 (h = m), (m = e); 5971 } 5972 const x = p < 0 ? '' + (1 + (1 - g) * p) : '' + (1 - (1 - g) * p), 5973 S = `\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${ 5974 i.rotate ? (a ? -v : v) : 0 5975 }deg)\n scale(${x})\n `; 5976 if (i.slideShadows) { 5977 let e = d.querySelector('.swiper-slide-shadow'); 5978 e || (e = ue('cards', d)), e && (e.style.opacity = Math.min(Math.max((Math.abs(p) - 0.5) / 0.5, 0), 1)); 5979 } 5980 d.style.zIndex = -Math.abs(Math.round(c)) + e.length; 5981 ce(0, d).style.transform = S; 5982 } 5983 }, 5984 setTransition: (e) => { 5985 const s = t.slides.map((e) => h(e)); 5986 s.forEach((t) => { 5987 (t.style.transitionDuration = `${e}ms`), 5988 t.querySelectorAll('.swiper-slide-shadow').forEach((t) => { 5989 t.style.transitionDuration = `${e}ms`; 5990 }); 5991 }), 5992 pe({ swiper: t, duration: e, transformElements: s }); 5993 }, 5994 perspective: () => !0, 5995 overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !t.params.cssMode }), 5996 }); 5997 }, 5998 ]; 5999 return te.use(me), te; 6000})(); 6001//# sourceMappingURL=swiper-bundle.min.js.map
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.