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