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