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