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