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