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