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