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