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