PageSourceSearch

https://impel.ai/wp-content/themes/impel-ai/dist/js/grid-of-items.min.js?ver=%3F1750847477

js impel.ai collected 2026-09-25 15:16:37 UTC 408,148 bytes, 10,945 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 2,789 bytes, lines 4-107
4/***/ "./node_modules/css-loader/dist/runtime/api.js":
5/*!*****************************************************!*\
6  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
7  \*****************************************************/
8/***/ (function(module) {
9
10"use strict";
11
12
13/*
14  MIT License http://www.opensource.org/licenses/mit-license.php
15  Author Tobias Koppers @sokra
16*/
17// css base code, injected by the css-loader
18// eslint-disable-next-line func-names
19module.exports = function (useSourceMap) {
20  var list = []; // return the list of modules as css string
21
22  list.toString = function toString() {
23    return this.map(function (item) {
24      var content = cssWithMappingToString(item, useSourceMap);
25
26      if (item[2]) {
27        return "@media ".concat(item[2], " {").concat(content, "}");
28      }
29
30      return content;
31    }).join('');
32  }; // import a list of modules into the list
33  // eslint-disable-next-line func-names
34
35
36  list.i = function (modules, mediaQuery, dedupe) {
37    if (typeof modules === 'string') {
38      // eslint-disable-next-line no-param-reassign
39      modules = [[null, modules, '']];
40    }
41
42    var alreadyImportedModules = {};
43
44    if (dedupe) {
45      for (var i = 0; i < this.length; i++) {
46        // eslint-disable-next-line prefer-destructuring
47        var id = this[i][0];
48
49        if (id != null) {
50          alreadyImportedModules[id] = true;
51        }
52      }
53    }
54
55    for (var _i = 0; _i < modules.length; _i++) {
56      var item = [].concat(modules[_i]);
57
58      if (dedupe && alreadyImportedModules[item[0]]) {
59        // eslint-disable-next-line no-continue
60        continue;
61      }
62
63      if (mediaQuery) {
64        if (!item[2]) {
65          item[2] = mediaQuery;
66        } else {
67          item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
68        }
69      }
70
71      list.push(item);
72    }
73  };
74
75  return list;
76};
77
78function cssWithMappingToString(item, useSourceMap) {
79  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
80
81  var cssMapping = item[3];
82
83  if (!cssMapping) {
84    return content;
85  }
86
87  if (useSourceMap && typeof btoa === 'function') {
88    var sourceMapping = toComment(cssMapping);
89    var sourceURLs = cssMapping.sources.map(function (source) {
90      return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */");
91    });
92    return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
93  }
94
95  return [content].join('\n');
96} // Adapted from convert-source-map (MIT)
97
98
99function toComment(sourceMap) {
100  // eslint-disable-next-line no-undef
101  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
102  var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
103  return "/*# ".concat(data, " */");
104}
105
106/***/ }),
107
vendor: 14,112 bytes, lines 108-503
108/***/ "./node_modules/swiper/modules/a11y.mjs":
109/*!**********************************************!*\
110  !*** ./node_modules/swiper/modules/a11y.mjs ***!
111  \**********************************************/
112/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
113
114"use strict";
115__webpack_require__.r(__webpack_exports__);
116/* harmony export */ __webpack_require__.d(__webpack_exports__, {
117/* harmony export */   "default": function() { return /* binding */ A11y; }
118/* harmony export */ });
119/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
120/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs");
121/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
122
123
124
125
126function A11y(_ref) {
127  let {
128    swiper,
129    extendParams,
130    on
131  } = _ref;
132  extendParams({
133    a11y: {
134      enabled: true,
135      notificationClass: 'swiper-notification',
136      prevSlideMessage: 'Previous slide',
137      nextSlideMessage: 'Next slide',
138      firstSlideMessage: 'This is the first slide',
139      lastSlideMessage: 'This is the last slide',
140      paginationBulletMessage: 'Go to slide {{index}}',
141      slideLabelMessage: '{{index}} / {{slidesLength}}',
142      containerMessage: null,
143      containerRoleDescriptionMessage: null,
144      containerRole: null,
145      itemRoleDescriptionMessage: null,
146      slideRole: 'group',
147      id: null,
148      scrollOnFocus: true
149    }
150  });
151  swiper.a11y = {
152    clicked: false
153  };
154  let liveRegion = null;
155  let preventFocusHandler;
156  let focusTargetSlideEl;
157  let visibilityChangedTimestamp = new Date().getTime();
158  function notify(message) {
159    const notification = liveRegion;
160    if (notification.length === 0) return;
161    notification.innerHTML = '';
162    notification.innerHTML = message;
163  }
164  function getRandomNumber(size) {
165    if (size === void 0) {
166      size = 16;
167    }
168    const randomChar = () => Math.round(16 * Math.random()).toString(16);
169    return 'x'.repeat(size).replace(/x/g, randomChar);
170  }
171  function makeElFocusable(el) {
172    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
173    el.forEach(subEl => {
174      subEl.setAttribute('tabIndex', '0');
175    });
176  }
177  function makeElNotFocusable(el) {
178    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
179    el.forEach(subEl => {
180      subEl.setAttribute('tabIndex', '-1');
181    });
182  }
183  function addElRole(el, role) {
184    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
185    el.forEach(subEl => {
186      subEl.setAttribute('role', role);
187    });
188  }
189  function addElRoleDescription(el, description) {
190    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
191    el.forEach(subEl => {
192      subEl.setAttribute('aria-roledescription', description);
193    });
194  }
195  function addElControls(el, controls) {
196    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
197    el.forEach(subEl => {
198      subEl.setAttribute('aria-controls', controls);
199    });
200  }
201  function addElLabel(el, label) {
202    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
203    el.forEach(subEl => {
204      subEl.setAttribute('aria-label', label);
205    });
206  }
207  function addElId(el, id) {
208    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
209    el.forEach(subEl => {
210      subEl.setAttribute('id', id);
211    });
212  }
213  function addElLive(el, live) {
214    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
215    el.forEach(subEl => {
216      subEl.setAttribute('aria-live', live);
217    });
218  }
219  function disableEl(el) {
220    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
221    el.forEach(subEl => {
222      subEl.setAttribute('aria-disabled', true);
223    });
224  }
225  function enableEl(el) {
226    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
227    el.forEach(subEl => {
228      subEl.setAttribute('aria-disabled', false);
229    });
230  }
231  function onEnterOrSpaceKey(e) {
232    if (e.keyCode !== 13 && e.keyCode !== 32) return;
233    const params = swiper.params.a11y;
234    const targetEl = e.target;
235    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
236      if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return;
237    }
238    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
239      const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl);
240      const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl);
241      if (nextEls.includes(targetEl)) {
242        if (!(swiper.isEnd && !swiper.params.loop)) {
243          swiper.slideNext();
244        }
245        if (swiper.isEnd) {
246          notify(params.lastSlideMessage);
247        } else {
248          notify(params.nextSlideMessage);
249        }
250      }
251      if (prevEls.includes(targetEl)) {
252        if (!(swiper.isBeginning && !swiper.params.loop)) {
253          swiper.slidePrev();
254        }
255        if (swiper.isBeginning) {
256          notify(params.firstSlideMessage);
257        } else {
258          notify(params.prevSlideMessage);
259        }
260      }
261    }
262    if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) {
263      targetEl.click();
264    }
265  }
266  function updateNavigation() {
267    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
268    const {
269      nextEl,
270      prevEl
271    } = swiper.navigation;
272    if (prevEl) {
273      if (swiper.isBeginning) {
274        disableEl(prevEl);
275        makeElNotFocusable(prevEl);
276      } else {
277        enableEl(prevEl);
278        makeElFocusable(prevEl);
279      }
280    }
281    if (nextEl) {
282      if (swiper.isEnd) {
283        disableEl(nextEl);
284        makeElNotFocusable(nextEl);
285      } else {
286        enableEl(nextEl);
287        makeElFocusable(nextEl);
288      }
289    }
290  }
291  function hasPagination() {
292    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
293  }
294  function hasClickablePagination() {
295    return hasPagination() && swiper.params.pagination.clickable;
296  }
297  function updatePagination() {
298    const params = swiper.params.a11y;
299    if (!hasPagination()) return;
300    swiper.pagination.bullets.forEach(bulletEl => {
301      if (swiper.params.pagination.clickable) {
302        makeElFocusable(bulletEl);
303        if (!swiper.params.pagination.renderBullet) {
304          addElRole(bulletEl, 'button');
305          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) + 1));
306        }
307      }
308      if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) {
309        bulletEl.setAttribute('aria-current', 'true');
310      } else {
311        bulletEl.removeAttribute('aria-current');
312      }
313    });
314  }
315  const initNavEl = (el, wrapperId, message) => {
316    makeElFocusable(el);
317    if (el.tagName !== 'BUTTON') {
318      addElRole(el, 'button');
319      el.addEventListener('keydown', onEnterOrSpaceKey);
320    }
321    addElLabel(el, message);
322    addElControls(el, wrapperId);
323  };
324  const handlePointerDown = e => {
325    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
326      preventFocusHandler = true;
327    }
328    swiper.a11y.clicked = true;
329  };
330  const handlePointerUp = () => {
331    preventFocusHandler = false;
332    requestAnimationFrame(() => {
333      requestAnimationFrame(() => {
334        if (!swiper.destroyed) {
335          swiper.a11y.clicked = false;
336        }
337      });
338    });
339  };
340  const onVisibilityChange = e => {
341    visibilityChangedTimestamp = new Date().getTime();
342  };
343  const handleFocus = e => {
344    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
345    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;
346    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
347    if (!slideEl || !swiper.slides.includes(slideEl)) return;
348    focusTargetSlideEl = slideEl;
349    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
350    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
351    if (isActive || isVisible) return;
352    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
353    if (swiper.isHorizontal()) {
354      swiper.el.scrollLeft = 0;
355    } else {
356      swiper.el.scrollTop = 0;
357    }
358    requestAnimationFrame(() => {
359      if (preventFocusHandler) return;
360      if (swiper.params.loop) {
361        swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
362      } else {
363        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
364      }
365      preventFocusHandler = false;
366    });
367  };
368  const initSlides = () => {
369    const params = swiper.params.a11y;
370    if (params.itemRoleDescriptionMessage) {
371      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
372    }
373    if (params.slideRole) {
374      addElRole(swiper.slides, params.slideRole);
375    }
376    const slidesLength = swiper.slides.length;
377    if (params.slideLabelMessage) {
378      swiper.slides.forEach((slideEl, index) => {
379        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;
380        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
381        addElLabel(slideEl, ariaLabelMessage);
382      });
383    }
384  };
385  const init = () => {
386    const params = swiper.params.a11y;
387    swiper.el.append(liveRegion);
388
389    // Container
390    const containerEl = swiper.el;
391    if (params.containerRoleDescriptionMessage) {
392      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
393    }
394    if (params.containerMessage) {
395      addElLabel(containerEl, params.containerMessage);
396    }
397    if (params.containerRole) {
398      addElRole(containerEl, params.containerRole);
399    }
400
401    // Wrapper
402    const wrapperEl = swiper.wrapperEl;
403    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
404    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
405    addElId(wrapperEl, wrapperId);
406    addElLive(wrapperEl, live);
407
408    // Slide
409    initSlides();
410
411    // Navigation
412    let {
413      nextEl,
414      prevEl
415    } = swiper.navigation ? swiper.navigation : {};
416    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl);
417    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl);
418    if (nextEl) {
419      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));
420    }
421    if (prevEl) {
422      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));
423    }
424
425    // Pagination
426    if (hasClickablePagination()) {
427      const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
428      paginationEl.forEach(el => {
429        el.addEventListener('keydown', onEnterOrSpaceKey);
430      });
431    }
432
433    // Tab focus
434    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
435    document.addEventListener('visibilitychange', onVisibilityChange);
436    swiper.el.addEventListener('focus', handleFocus, true);
437    swiper.el.addEventListener('focus', handleFocus, true);
438    swiper.el.addEventListener('pointerdown', handlePointerDown, true);
439    swiper.el.addEventListener('pointerup', handlePointerUp, true);
440  };
441  function destroy() {
442    if (liveRegion) liveRegion.remove();
443    let {
444      nextEl,
445      prevEl
446    } = swiper.navigation ? swiper.navigation : {};
447    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl);
448    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl);
449    if (nextEl) {
450      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
451    }
452    if (prevEl) {
453      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
454    }
455
456    // Pagination
457    if (hasClickablePagination()) {
458      const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
459      paginationEl.forEach(el => {
460        el.removeEventListener('keydown', onEnterOrSpaceKey);
461      });
462    }
463    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
464    document.removeEventListener('visibilitychange', onVisibilityChange);
465    // Tab focus
466    if (swiper.el && typeof swiper.el !== 'string') {
467      swiper.el.removeEventListener('focus', handleFocus, true);
468      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
469      swiper.el.removeEventListener('pointerup', handlePointerUp, true);
470    }
471  }
472  on('beforeInit', () => {
473    liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass);
474    liveRegion.setAttribute('aria-live', 'assertive');
475    liveRegion.setAttribute('aria-atomic', 'true');
476  });
477  on('afterInit', () => {
478    if (!swiper.params.a11y.enabled) return;
479    init();
480  });
481  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
482    if (!swiper.params.a11y.enabled) return;
483    initSlides();
484  });
485  on('fromEdge toEdge afterInit lock unlock', () => {
486    if (!swiper.params.a11y.enabled) return;
487    updateNavigation();
488  });
489  on('paginationUpdate', () => {
490    if (!swiper.params.a11y.enabled) return;
491    updatePagination();
492  });
493  on('destroy', () => {
494    if (!swiper.params.a11y.enabled) return;
495    destroy();
496  });
497}
498
499
500
501
502/***/ }),
503
vendor: 576 bytes, lines 504-520
504/***/ "./node_modules/swiper/modules/autoplay.css":
505/*!**************************************************!*\
506  !*** ./node_modules/swiper/modules/autoplay.css ***!
507  \**************************************************/
508/***/ (function(module, exports, __webpack_require__) {
509
510// Imports
511var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
512exports = ___CSS_LOADER_API_IMPORT___(false);
513// Module
514exports.push([module.id, "", ""]);
515// Exports
516module.exports = exports;
517
518
519/***/ }),
520
vendor: 10,064 bytes, lines 521-840
521/***/ "./node_modules/swiper/modules/autoplay.mjs":
522/*!**************************************************!*\
523  !*** ./node_modules/swiper/modules/autoplay.mjs ***!
524  \**************************************************/
525/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
526
527"use strict";
528__webpack_require__.r(__webpack_exports__);
529/* harmony export */ __webpack_require__.d(__webpack_exports__, {
530/* harmony export */   "default": function() { return /* binding */ Autoplay; }
531/* harmony export */ });
532/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
533
534
535/* eslint no-underscore-dangle: "off" */
536/* eslint no-use-before-define: "off" */
537function Autoplay(_ref) {
538  let {
539    swiper,
540    extendParams,
541    on,
542    emit,
543    params
544  } = _ref;
545  swiper.autoplay = {
546    running: false,
547    paused: false,
548    timeLeft: 0
549  };
550  extendParams({
551    autoplay: {
552      enabled: false,
553      delay: 3000,
554      waitForTransition: true,
555      disableOnInteraction: false,
556      stopOnLastSlide: false,
557      reverseDirection: false,
558      pauseOnMouseEnter: false
559    }
560  });
561  let timeout;
562  let raf;
563  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;
564  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;
565  let autoplayTimeLeft;
566  let autoplayStartTime = new Date().getTime();
567  let wasPaused;
568  let isTouched;
569  let pausedByTouch;
570  let touchStartTimeout;
571  let slideChanged;
572  let pausedByInteraction;
573  let pausedByPointerEnter;
574  function onTransitionEnd(e) {
575    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
576    if (e.target !== swiper.wrapperEl) return;
577    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);
578    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {
579      return;
580    }
581    resume();
582  }
583  const calcTimeLeft = () => {
584    if (swiper.destroyed || !swiper.autoplay.running) return;
585    if (swiper.autoplay.paused) {
586      wasPaused = true;
587    } else if (wasPaused) {
588      autoplayDelayCurrent = autoplayTimeLeft;
589      wasPaused = false;
590    }
591    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();
592    swiper.autoplay.timeLeft = timeLeft;
593    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);
594    raf = requestAnimationFrame(() => {
595      calcTimeLeft();
596    });
597  };
598  const getSlideDelay = () => {
599    let activeSlideEl;
600    if (swiper.virtual && swiper.params.virtual.enabled) {
601      activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));
602    } else {
603      activeSlideEl = swiper.slides[swiper.activeIndex];
604    }
605    if (!activeSlideEl) return undefined;
606    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);
607    return currentSlideDelay;
608  };
609  const run = delayForce => {
610    if (swiper.destroyed || !swiper.autoplay.running) return;
611    cancelAnimationFrame(raf);
612    calcTimeLeft();
613    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;
614    autoplayDelayTotal = swiper.params.autoplay.delay;
615    autoplayDelayCurrent = swiper.params.autoplay.delay;
616    const currentSlideDelay = getSlideDelay();
617    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {
618      delay = currentSlideDelay;
619      autoplayDelayTotal = currentSlideDelay;
620      autoplayDelayCurrent = currentSlideDelay;
621    }
622    autoplayTimeLeft = delay;
623    const speed = swiper.params.speed;
624    const proceed = () => {
625      if (!swiper || swiper.destroyed) return;
626      if (swiper.params.autoplay.reverseDirection) {
627        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
628          swiper.slidePrev(speed, true, true);
629          emit('autoplay');
630        } else if (!swiper.params.autoplay.stopOnLastSlide) {
631          swiper.slideTo(swiper.slides.length - 1, speed, true, true);
632          emit('autoplay');
633        }
634      } else {
635        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
636          swiper.slideNext(speed, true, true);
637          emit('autoplay');
638        } else if (!swiper.params.autoplay.stopOnLastSlide) {
639          swiper.slideTo(0, speed, true, true);
640          emit('autoplay');
641        }
642      }
643      if (swiper.params.cssMode) {
644        autoplayStartTime = new Date().getTime();
645        requestAnimationFrame(() => {
646          run();
647        });
648      }
649    };
650    if (delay > 0) {
651      clearTimeout(timeout);
652      timeout = setTimeout(() => {
653        proceed();
654      }, delay);
655    } else {
656      requestAnimationFrame(() => {
657        proceed();
658      });
659    }
660
661    // eslint-disable-next-line
662    return delay;
663  };
664  const start = () => {
665    autoplayStartTime = new Date().getTime();
666    swiper.autoplay.running = true;
667    run();
668    emit('autoplayStart');
669  };
670  const stop = () => {
671    swiper.autoplay.running = false;
672    clearTimeout(timeout);
673    cancelAnimationFrame(raf);
674    emit('autoplayStop');
675  };
676  const pause = (internal, reset) => {
677    if (swiper.destroyed || !swiper.autoplay.running) return;
678    clearTimeout(timeout);
679    if (!internal) {
680      pausedByInteraction = true;
681    }
682    const proceed = () => {
683      emit('autoplayPause');
684      if (swiper.params.autoplay.waitForTransition) {
685        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);
686      } else {
687        resume();
688      }
689    };
690    swiper.autoplay.paused = true;
691    if (reset) {
692      if (slideChanged) {
693        autoplayTimeLeft = swiper.params.autoplay.delay;
694      }
695      slideChanged = false;
696      proceed();
697      return;
698    }
699    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
700    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);
701    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
702    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
703    proceed();
704  };
705  const resume = () => {
706    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
707    autoplayStartTime = new Date().getTime();
708    if (pausedByInteraction) {
709      pausedByInteraction = false;
710      run(autoplayTimeLeft);
711    } else {
712      run();
713    }
714    swiper.autoplay.paused = false;
715    emit('autoplayResume');
716  };
717  const onVisibilityChange = () => {
718    if (swiper.destroyed || !swiper.autoplay.running) return;
719    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
720    if (document.visibilityState === 'hidden') {
721      pausedByInteraction = true;
722      pause(true);
723    }
724    if (document.visibilityState === 'visible') {
725      resume();
726    }
727  };
728  const onPointerEnter = e => {
729    if (e.pointerType !== 'mouse') return;
730    pausedByInteraction = true;
731    pausedByPointerEnter = true;
732    if (swiper.animating || swiper.autoplay.paused) return;
733    pause(true);
734  };
735  const onPointerLeave = e => {
736    if (e.pointerType !== 'mouse') return;
737    pausedByPointerEnter = false;
738    if (swiper.autoplay.paused) {
739      resume();
740    }
741  };
742  const attachMouseEvents = () => {
743    if (swiper.params.autoplay.pauseOnMouseEnter) {
744      swiper.el.addEventListener('pointerenter', onPointerEnter);
745      swiper.el.addEventListener('pointerleave', onPointerLeave);
746    }
747  };
748  const detachMouseEvents = () => {
749    if (swiper.el && typeof swiper.el !== 'string') {
750      swiper.el.removeEventListener('pointerenter', onPointerEnter);
751      swiper.el.removeEventListener('pointerleave', onPointerLeave);
752    }
753  };
754  const attachDocumentEvents = () => {
755    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
756    document.addEventListener('visibilitychange', onVisibilityChange);
757  };
758  const detachDocumentEvents = () => {
759    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
760    document.removeEventListener('visibilitychange', onVisibilityChange);
761  };
762  on('init', () => {
763    if (swiper.params.autoplay.enabled) {
764      attachMouseEvents();
765      attachDocumentEvents();
766      start();
767    }
768  });
769  on('destroy', () => {
770    detachMouseEvents();
771    detachDocumentEvents();
772    if (swiper.autoplay.running) {
773      stop();
774    }
775  });
776  on('_freeModeStaticRelease', () => {
777    if (pausedByTouch || pausedByInteraction) {
778      resume();
779    }
780  });
781  on('_freeModeNoMomentumRelease', () => {
782    if (!swiper.params.autoplay.disableOnInteraction) {
783      pause(true, true);
784    } else {
785      stop();
786    }
787  });
788  on('beforeTransitionStart', (_s, speed, internal) => {
789    if (swiper.destroyed || !swiper.autoplay.running) return;
790    if (internal || !swiper.params.autoplay.disableOnInteraction) {
791      pause(true, true);
792    } else {
793      stop();
794    }
795  });
796  on('sliderFirstMove', () => {
797    if (swiper.destroyed || !swiper.autoplay.running) return;
798    if (swiper.params.autoplay.disableOnInteraction) {
799      stop();
800      return;
801    }
802    isTouched = true;
803    pausedByTouch = false;
804    pausedByInteraction = false;
805    touchStartTimeout = setTimeout(() => {
806      pausedByInteraction = true;
807      pausedByTouch = true;
808      pause(true);
809    }, 200);
810  });
811  on('touchEnd', () => {
812    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
813    clearTimeout(touchStartTimeout);
814    clearTimeout(timeout);
815    if (swiper.params.autoplay.disableOnInteraction) {
816      pausedByTouch = false;
817      isTouched = false;
818      return;
819    }
820    if (pausedByTouch && swiper.params.cssMode) resume();
821    pausedByTouch = false;
822    isTouched = false;
823  });
824  on('slideChange', () => {
825    if (swiper.destroyed || !swiper.autoplay.running) return;
826    slideChanged = true;
827  });
828  Object.assign(swiper.autoplay, {
829    start,
830    stop,
831    pause,
832    resume
833  });
834}
835
836
837
838
839/***/ }),
840
vendor: 7,533 bytes, lines 841-1047
841/***/ "./node_modules/swiper/modules/controller.mjs":
842/*!****************************************************!*\
843  !*** ./node_modules/swiper/modules/controller.mjs ***!
844  \****************************************************/
845/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
846
847"use strict";
848__webpack_require__.r(__webpack_exports__);
849/* harmony export */ __webpack_require__.d(__webpack_exports__, {
850/* harmony export */   "default": function() { return /* binding */ Controller; }
851/* harmony export */ });
852/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
853
854
855/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
856function Controller(_ref) {
857  let {
858    swiper,
859    extendParams,
860    on
861  } = _ref;
862  extendParams({
863    controller: {
864      control: undefined,
865      inverse: false,
866      by: 'slide' // or 'container'
867    }
868  });
869
870  swiper.controller = {
871    control: undefined
872  };
873  function LinearSpline(x, y) {
874    const binarySearch = function search() {
875      let maxIndex;
876      let minIndex;
877      let guess;
878      return (array, val) => {
879        minIndex = -1;
880        maxIndex = array.length;
881        while (maxIndex - minIndex > 1) {
882          guess = maxIndex + minIndex >> 1;
883          if (array[guess] <= val) {
884            minIndex = guess;
885          } else {
886            maxIndex = guess;
887          }
888        }
889        return maxIndex;
890      };
891    }();
892    this.x = x;
893    this.y = y;
894    this.lastIndex = x.length - 1;
895    // Given an x value (x2), return the expected y2 value:
896    // (x1,y1) is the known point before given value,
897    // (x3,y3) is the known point after given value.
898    let i1;
899    let i3;
900    this.interpolate = function interpolate(x2) {
901      if (!x2) return 0;
902
903      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
904      i3 = binarySearch(this.x, x2);
905      i1 = i3 - 1;
906
907      // We have our indexes i1 & i3, so we can calculate already:
908      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
909      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
910    };
911    return this;
912  }
913  function getInterpolateFunction(c) {
914    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
915  }
916  function setTranslate(_t, byController) {
917    const controlled = swiper.controller.control;
918    let multiplier;
919    let controlledTranslate;
920    const Swiper = swiper.constructor;
921    function setControlledTranslate(c) {
922      if (c.destroyed) return;
923
924      // this will create an Interpolate function based on the snapGrids
925      // x is the Grid of the scrolled scroller and y will be the controlled scroller
926      // it makes sense to create this only once and recall it for the interpolation
927      // the function does a lot of value caching for performance
928      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
929      if (swiper.params.controller.by === 'slide') {
930        getInterpolateFunction(c);
931        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
932        // but it did not work out
933        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
934      }
935      if (!controlledTranslate || swiper.params.controller.by === 'container') {
936        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
937        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {
938          multiplier = 1;
939        }
940        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
941      }
942      if (swiper.params.controller.inverse) {
943        controlledTranslate = c.maxTranslate() - controlledTranslate;
944      }
945      c.updateProgress(controlledTranslate);
946      c.setTranslate(controlledTranslate, swiper);
947      c.updateActiveIndex();
948      c.updateSlidesClasses();
949    }
950    if (Array.isArray(controlled)) {
951      for (let i = 0; i < controlled.length; i += 1) {
952        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
953          setControlledTranslate(controlled[i]);
954        }
955      }
956    } else if (controlled instanceof Swiper && byController !== controlled) {
957      setControlledTranslate(controlled);
958    }
959  }
960  function setTransition(duration, byController) {
961    const Swiper = swiper.constructor;
962    const controlled = swiper.controller.control;
963    let i;
964    function setControlledTransition(c) {
965      if (c.destroyed) return;
966      c.setTransition(duration, swiper);
967      if (duration !== 0) {
968        c.transitionStart();
969        if (c.params.autoHeight) {
970          (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => {
971            c.updateAutoHeight();
972          });
973        }
974        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(c.wrapperEl, () => {
975          if (!controlled) return;
976          c.transitionEnd();
977        });
978      }
979    }
980    if (Array.isArray(controlled)) {
981      for (i = 0; i < controlled.length; i += 1) {
982        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
983          setControlledTransition(controlled[i]);
984        }
985      }
986    } else if (controlled instanceof Swiper && byController !== controlled) {
987      setControlledTransition(controlled);
988    }
989  }
990  function removeSpline() {
991    if (!swiper.controller.control) return;
992    if (swiper.controller.spline) {
993      swiper.controller.spline = undefined;
994      delete swiper.controller.spline;
995    }
996  }
997  on('beforeInit', () => {
998    if (typeof window !== 'undefined' && (
999    // eslint-disable-line
1000    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {
1001      const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];
1002      controlElements.forEach(controlElement => {
1003        if (!swiper.controller.control) swiper.controller.control = [];
1004        if (controlElement && controlElement.swiper) {
1005          swiper.controller.control.push(controlElement.swiper);
1006        } else if (controlElement) {
1007          const eventName = `${swiper.params.eventsPrefix}init`;
1008          const onControllerSwiper = e => {
1009            swiper.controller.control.push(e.detail[0]);
1010            swiper.update();
1011            controlElement.removeEventListener(eventName, onControllerSwiper);
1012          };
1013          controlElement.addEventListener(eventName, onControllerSwiper);
1014        }
1015      });
1016      return;
1017    }
1018    swiper.controller.control = swiper.params.controller.control;
1019  });
1020  on('update', () => {
1021    removeSpline();
1022  });
1023  on('resize', () => {
1024    removeSpline();
1025  });
1026  on('observerUpdate', () => {
1027    removeSpline();
1028  });
1029  on('setTranslate', (_s, translate, byController) => {
1030    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
1031    swiper.controller.setTranslate(translate, byController);
1032  });
1033  on('setTransition', (_s, duration, byController) => {
1034    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
1035    swiper.controller.setTransition(duration, byController);
1036  });
1037  Object.assign(swiper.controller, {
1038    setTranslate,
1039    setTransition
1040  });
1041}
1042
1043
1044
1045
1046/***/ }),
1047
vendor: 6,057 bytes, lines 1048-1195
1048/***/ "./node_modules/swiper/modules/effect-cards.mjs":
1049/*!******************************************************!*\
1050  !*** ./node_modules/swiper/modules/effect-cards.mjs ***!
1051  \******************************************************/
1052/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1053
1054"use strict";
1055__webpack_require__.r(__webpack_exports__);
1056/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1057/* harmony export */   "default": function() { return /* binding */ EffectCards; }
1058/* harmony export */ });
1059/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
1060/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
1061/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
1062/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1063/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1064
1065
1066
1067
1068
1069
1070function EffectCards(_ref) {
1071  let {
1072    swiper,
1073    extendParams,
1074    on
1075  } = _ref;
1076  extendParams({
1077    cardsEffect: {
1078      slideShadows: true,
1079      rotate: true,
1080      perSlideRotate: 2,
1081      perSlideOffset: 8
1082    }
1083  });
1084  const setTranslate = () => {
1085    const {
1086      slides,
1087      activeIndex,
1088      rtlTranslate: rtl
1089    } = swiper;
1090    const params = swiper.params.cardsEffect;
1091    const {
1092      startTranslate,
1093      isTouched
1094    } = swiper.touchEventsData;
1095    const currentTranslate = rtl ? -swiper.translate : swiper.translate;
1096    for (let i = 0; i < slides.length; i += 1) {
1097      const slideEl = slides[i];
1098      const slideProgress = slideEl.progress;
1099      const progress = Math.min(Math.max(slideProgress, -4), 4);
1100      let offset = slideEl.swiperSlideOffset;
1101      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
1102        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;
1103      }
1104      if (swiper.params.centeredSlides && swiper.params.cssMode) {
1105        offset -= slides[0].swiperSlideOffset;
1106      }
1107      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
1108      let tY = 0;
1109      const tZ = -100 * Math.abs(progress);
1110      let scale = 1;
1111      let rotate = -params.perSlideRotate * progress;
1112      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
1113      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
1114      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
1115      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
1116      if (isSwipeToNext || isSwipeToPrev) {
1117        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
1118        rotate += -28 * progress * subProgress;
1119        scale += -0.5 * subProgress;
1120        tXAdd += 96 * subProgress;
1121        tY = `${-25 * subProgress * Math.abs(progress)}%`;
1122      }
1123      if (progress < 0) {
1124        // next
1125        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;
1126      } else if (progress > 0) {
1127        // prev
1128        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;
1129      } else {
1130        tX = `${tX}px`;
1131      }
1132      if (!swiper.isHorizontal()) {
1133        const prevY = tY;
1134        tY = tX;
1135        tX = prevY;
1136      }
1137      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
1138
1139      /* eslint-disable */
1140      const transform = `
1141        translate3d(${tX}, ${tY}, ${tZ}px)
1142        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)
1143        scale(${scaleString})
1144      `;
1145      /* eslint-enable */
1146
1147      if (params.slideShadows) {
1148        // Set shadows
1149        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
1150        if (!shadowEl) {
1151          shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl);
1152        }
1153        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
1154      }
1155      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
1156      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1157      targetEl.style.transform = transform;
1158    }
1159  };
1160  const setTransition = duration => {
1161    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
1162    transformElements.forEach(el => {
1163      el.style.transitionDuration = `${duration}ms`;
1164      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
1165        shadowEl.style.transitionDuration = `${duration}ms`;
1166      });
1167    });
1168    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
1169      swiper,
1170      duration,
1171      transformElements
1172    });
1173  };
1174  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1175    effect: 'cards',
1176    swiper,
1177    on,
1178    setTranslate,
1179    setTransition,
1180    perspective: () => true,
1181    overwriteParams: () => ({
1182      _loopSwapReset: false,
1183      watchSlidesProgress: true,
1184      loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2,
1185      centeredSlides: true,
1186      virtualTranslate: !swiper.params.cssMode
1187    })
1188  });
1189}
1190
1191
1192
1193
1194/***/ }),
1195
vendor: 5,714 bytes, lines 1196-1318
1196/***/ "./node_modules/swiper/modules/effect-coverflow.mjs":
1197/*!**********************************************************!*\
1198  !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***!
1199  \**********************************************************/
1200/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1201
1202"use strict";
1203__webpack_require__.r(__webpack_exports__);
1204/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1205/* harmony export */   "default": function() { return /* binding */ EffectCoverflow; }
1206/* harmony export */ });
1207/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
1208/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
1209/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
1210/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1211
1212
1213
1214
1215
1216function EffectCoverflow(_ref) {
1217  let {
1218    swiper,
1219    extendParams,
1220    on
1221  } = _ref;
1222  extendParams({
1223    coverflowEffect: {
1224      rotate: 50,
1225      stretch: 0,
1226      depth: 100,
1227      scale: 1,
1228      modifier: 1,
1229      slideShadows: true
1230    }
1231  });
1232  const setTranslate = () => {
1233    const {
1234      width: swiperWidth,
1235      height: swiperHeight,
1236      slides,
1237      slidesSizesGrid
1238    } = swiper;
1239    const params = swiper.params.coverflowEffect;
1240    const isHorizontal = swiper.isHorizontal();
1241    const transform = swiper.translate;
1242    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
1243    const rotate = isHorizontal ? params.rotate : -params.rotate;
1244    const translate = params.depth;
1245    const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.o)(swiper);
1246    // Each slide offset from center
1247    for (let i = 0, length = slides.length; i < length; i += 1) {
1248      const slideEl = slides[i];
1249      const slideSize = slidesSizesGrid[i];
1250      const slideOffset = slideEl.swiperSlideOffset;
1251      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
1252      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
1253      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
1254      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
1255      // var rotateZ = 0
1256      let translateZ = -translate * Math.abs(offsetMultiplier);
1257      let stretch = params.stretch;
1258      // Allow percentage to make a relative stretch for responsive sliders
1259      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
1260        stretch = parseFloat(params.stretch) / 100 * slideSize;
1261      }
1262      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
1263      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
1264      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
1265
1266      // Fix for ultra small values
1267      if (Math.abs(translateX) < 0.001) translateX = 0;
1268      if (Math.abs(translateY) < 0.001) translateY = 0;
1269      if (Math.abs(translateZ) < 0.001) translateZ = 0;
1270      if (Math.abs(rotateY) < 0.001) rotateY = 0;
1271      if (Math.abs(rotateX) < 0.001) rotateX = 0;
1272      if (Math.abs(scale) < 0.001) scale = 0;
1273      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;
1274      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1275      targetEl.style.transform = slideTransform;
1276      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
1277      if (params.slideShadows) {
1278        // Set shadows
1279        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
1280        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
1281        if (!shadowBeforeEl) {
1282          shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top');
1283        }
1284        if (!shadowAfterEl) {
1285          shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');
1286        }
1287        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
1288        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
1289      }
1290    }
1291  };
1292  const setTransition = duration => {
1293    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl));
1294    transformElements.forEach(el => {
1295      el.style.transitionDuration = `${duration}ms`;
1296      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
1297        shadowEl.style.transitionDuration = `${duration}ms`;
1298      });
1299    });
1300  };
1301  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1302    effect: 'coverflow',
1303    swiper,
1304    on,
1305    setTranslate,
1306    setTransition,
1307    perspective: () => true,
1308    overwriteParams: () => ({
1309      watchSlidesProgress: true
1310    })
1311  });
1312}
1313
1314
1315
1316
1317/***/ }),
1318
vendor: 6,483 bytes, lines 1319-1484
1319/***/ "./node_modules/swiper/modules/effect-creative.mjs":
1320/*!*********************************************************!*\
1321  !*** ./node_modules/swiper/modules/effect-creative.mjs ***!
1322  \*********************************************************/
1323/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1324
1325"use strict";
1326__webpack_require__.r(__webpack_exports__);
1327/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1328/* harmony export */   "default": function() { return /* binding */ EffectCreative; }
1329/* harmony export */ });
1330/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
1331/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
1332/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
1333/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1334/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1335
1336
1337
1338
1339
1340
1341function EffectCreative(_ref) {
1342  let {
1343    swiper,
1344    extendParams,
1345    on
1346  } = _ref;
1347  extendParams({
1348    creativeEffect: {
1349      limitProgress: 1,
1350      shadowPerProgress: false,
1351      progressMultiplier: 1,
1352      perspective: true,
1353      prev: {
1354        translate: [0, 0, 0],
1355        rotate: [0, 0, 0],
1356        opacity: 1,
1357        scale: 1
1358      },
1359      next: {
1360        translate: [0, 0, 0],
1361        rotate: [0, 0, 0],
1362        opacity: 1,
1363        scale: 1
1364      }
1365    }
1366  });
1367  const getTranslateValue = value => {
1368    if (typeof value === 'string') return value;
1369    return `${value}px`;
1370  };
1371  const setTranslate = () => {
1372    const {
1373      slides,
1374      wrapperEl,
1375      slidesSizesGrid
1376    } = swiper;
1377    const params = swiper.params.creativeEffect;
1378    const {
1379      progressMultiplier: multiplier
1380    } = params;
1381    const isCenteredSlides = swiper.params.centeredSlides;
1382    const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper);
1383    if (isCenteredSlides) {
1384      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
1385      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;
1386    }
1387    for (let i = 0; i < slides.length; i += 1) {
1388      const slideEl = slides[i];
1389      const slideProgress = slideEl.progress;
1390      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);
1391      let originalProgress = progress;
1392      if (!isCenteredSlides) {
1393        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);
1394      }
1395      const offset = slideEl.swiperSlideOffset;
1396      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
1397      const r = [0, 0, 0];
1398      let custom = false;
1399      if (!swiper.isHorizontal()) {
1400        t[1] = t[0];
1401        t[0] = 0;
1402      }
1403      let data = {
1404        translate: [0, 0, 0],
1405        rotate: [0, 0, 0],
1406        scale: 1,
1407        opacity: 1
1408      };
1409      if (progress < 0) {
1410        data = params.next;
1411        custom = true;
1412      } else if (progress > 0) {
1413        data = params.prev;
1414        custom = true;
1415      }
1416      // set translate
1417      t.forEach((value, index) => {
1418        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
1419      });
1420      // set rotates
1421      r.forEach((value, index) => {
1422        let val = data.rotate[index] * Math.abs(progress * multiplier);
1423        r[index] = val;
1424      });
1425      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
1426      const translateString = t.join(', ');
1427      const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;
1428      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
1429      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
1430      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;
1431
1432      // Set shadows
1433      if (custom && data.shadow || !custom) {
1434        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
1435        if (!shadowEl && data.shadow) {
1436          shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl);
1437        }
1438        if (shadowEl) {
1439          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
1440          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
1441        }
1442      }
1443      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1444      targetEl.style.transform = transform;
1445      targetEl.style.opacity = opacityString;
1446      if (data.origin) {
1447        targetEl.style.transformOrigin = data.origin;
1448      }
1449    }
1450  };
1451  const setTransition = duration => {
1452    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
1453    transformElements.forEach(el => {
1454      el.style.transitionDuration = `${duration}ms`;
1455      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
1456        shadowEl.style.transitionDuration = `${duration}ms`;
1457      });
1458    });
1459    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
1460      swiper,
1461      duration,
1462      transformElements,
1463      allSlides: true
1464    });
1465  };
1466  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1467    effect: 'creative',
1468    swiper,
1469    on,
1470    setTranslate,
1471    setTransition,
1472    perspective: () => swiper.params.creativeEffect.perspective,
1473    overwriteParams: () => ({
1474      watchSlidesProgress: true,
1475      virtualTranslate: !swiper.params.cssMode
1476    })
1477  });
1478}
1479
1480
1481
1482
1483/***/ }),
1484
vendor: 7,636 bytes, lines 1485-1675
1485/***/ "./node_modules/swiper/modules/effect-cube.mjs":
1486/*!*****************************************************!*\
1487  !*** ./node_modules/swiper/modules/effect-cube.mjs ***!
1488  \*****************************************************/
1489/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1490
1491"use strict";
1492__webpack_require__.r(__webpack_exports__);
1493/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1494/* harmony export */   "default": function() { return /* binding */ EffectCube; }
1495/* harmony export */ });
1496/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
1497/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1498
1499
1500
1501function EffectCube(_ref) {
1502  let {
1503    swiper,
1504    extendParams,
1505    on
1506  } = _ref;
1507  extendParams({
1508    cubeEffect: {
1509      slideShadows: true,
1510      shadow: true,
1511      shadowOffset: 20,
1512      shadowScale: 0.94
1513    }
1514  });
1515  const createSlideShadows = (slideEl, progress, isHorizontal) => {
1516    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
1517    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
1518    if (!shadowBefore) {
1519      shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));
1520      slideEl.append(shadowBefore);
1521    }
1522    if (!shadowAfter) {
1523      shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));
1524      slideEl.append(shadowAfter);
1525    }
1526    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
1527    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
1528  };
1529  const recreateShadows = () => {
1530    // create new ones
1531    const isHorizontal = swiper.isHorizontal();
1532    swiper.slides.forEach(slideEl => {
1533      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
1534      createSlideShadows(slideEl, progress, isHorizontal);
1535    });
1536  };
1537  const setTranslate = () => {
1538    const {
1539      el,
1540      wrapperEl,
1541      slides,
1542      width: swiperWidth,
1543      height: swiperHeight,
1544      rtlTranslate: rtl,
1545      size: swiperSize,
1546      browser
1547    } = swiper;
1548    const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(swiper);
1549    const params = swiper.params.cubeEffect;
1550    const isHorizontal = swiper.isHorizontal();
1551    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
1552    let wrapperRotate = 0;
1553    let cubeShadowEl;
1554    if (params.shadow) {
1555      if (isHorizontal) {
1556        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');
1557        if (!cubeShadowEl) {
1558          cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow');
1559          swiper.wrapperEl.append(cubeShadowEl);
1560        }
1561        cubeShadowEl.style.height = `${swiperWidth}px`;
1562      } else {
1563        cubeShadowEl = el.querySelector('.swiper-cube-shadow');
1564        if (!cubeShadowEl) {
1565          cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow');
1566          el.append(cubeShadowEl);
1567        }
1568      }
1569    }
1570    for (let i = 0; i < slides.length; i += 1) {
1571      const slideEl = slides[i];
1572      let slideIndex = i;
1573      if (isVirtual) {
1574        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);
1575      }
1576      let slideAngle = slideIndex * 90;
1577      let round = Math.floor(slideAngle / 360);
1578      if (rtl) {
1579        slideAngle = -slideAngle;
1580        round = Math.floor(-slideAngle / 360);
1581      }
1582      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
1583      let tx = 0;
1584      let ty = 0;
1585      let tz = 0;
1586      if (slideIndex % 4 === 0) {
1587        tx = -round * 4 * swiperSize;
1588        tz = 0;
1589      } else if ((slideIndex - 1) % 4 === 0) {
1590        tx = 0;
1591        tz = -round * 4 * swiperSize;
1592      } else if ((slideIndex - 2) % 4 === 0) {
1593        tx = swiperSize + round * 4 * swiperSize;
1594        tz = swiperSize;
1595      } else if ((slideIndex - 3) % 4 === 0) {
1596        tx = -swiperSize;
1597        tz = 3 * swiperSize + swiperSize * 4 * round;
1598      }
1599      if (rtl) {
1600        tx = -tx;
1601      }
1602      if (!isHorizontal) {
1603        ty = tx;
1604        tx = 0;
1605      }
1606      const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
1607      if (progress <= 1 && progress > -1) {
1608        wrapperRotate = slideIndex * 90 + progress * 90;
1609        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
1610      }
1611      slideEl.style.transform = transform;
1612      if (params.slideShadows) {
1613        createSlideShadows(slideEl, progress, isHorizontal);
1614      }
1615    }
1616    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;
1617    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;
1618    if (params.shadow) {
1619      if (isHorizontal) {
1620        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;
1621      } else {
1622        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
1623        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
1624        const scale1 = params.shadowScale;
1625        const scale2 = params.shadowScale / multiplier;
1626        const offset = params.shadowOffset;
1627        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;
1628      }
1629    }
1630    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;
1631    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;
1632    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
1633  };
1634  const setTransition = duration => {
1635    const {
1636      el,
1637      slides
1638    } = swiper;
1639    slides.forEach(slideEl => {
1640      slideEl.style.transitionDuration = `${duration}ms`;
1641      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {
1642        subEl.style.transitionDuration = `${duration}ms`;
1643      });
1644    });
1645    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
1646      const shadowEl = el.querySelector('.swiper-cube-shadow');
1647      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;
1648    }
1649  };
1650  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({
1651    effect: 'cube',
1652    swiper,
1653    on,
1654    setTranslate,
1655    setTransition,
1656    recreateShadows,
1657    getEffectParams: () => swiper.params.cubeEffect,
1658    perspective: () => true,
1659    overwriteParams: () => ({
1660      slidesPerView: 1,
1661      slidesPerGroup: 1,
1662      watchSlidesProgress: true,
1663      resistanceRatio: 0,
1664      spaceBetween: 0,
1665      centeredSlides: false,
1666      virtualTranslate: true
1667    })
1668  });
1669}
1670
1671
1672
1673
1674/***/ }),
1675
vendor: 3,103 bytes, lines 1676-1760
1676/***/ "./node_modules/swiper/modules/effect-fade.mjs":
1677/*!*****************************************************!*\
1678  !*** ./node_modules/swiper/modules/effect-fade.mjs ***!
1679  \*****************************************************/
1680/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1681
1682"use strict";
1683__webpack_require__.r(__webpack_exports__);
1684/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1685/* harmony export */   "default": function() { return /* binding */ EffectFade; }
1686/* harmony export */ });
1687/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
1688/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
1689/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1690/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1691
1692
1693
1694
1695
1696function EffectFade(_ref) {
1697  let {
1698    swiper,
1699    extendParams,
1700    on
1701  } = _ref;
1702  extendParams({
1703    fadeEffect: {
1704      crossFade: false
1705    }
1706  });
1707  const setTranslate = () => {
1708    const {
1709      slides
1710    } = swiper;
1711    const params = swiper.params.fadeEffect;
1712    for (let i = 0; i < slides.length; i += 1) {
1713      const slideEl = swiper.slides[i];
1714      const offset = slideEl.swiperSlideOffset;
1715      let tx = -offset;
1716      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
1717      let ty = 0;
1718      if (!swiper.isHorizontal()) {
1719        ty = tx;
1720        tx = 0;
1721      }
1722      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
1723      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl);
1724      targetEl.style.opacity = slideOpacity;
1725      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;
1726    }
1727  };
1728  const setTransition = duration => {
1729    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl));
1730    transformElements.forEach(el => {
1731      el.style.transitionDuration = `${duration}ms`;
1732    });
1733    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({
1734      swiper,
1735      duration,
1736      transformElements,
1737      allSlides: true
1738    });
1739  };
1740  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({
1741    effect: 'fade',
1742    swiper,
1743    on,
1744    setTranslate,
1745    setTransition,
1746    overwriteParams: () => ({
1747      slidesPerView: 1,
1748      slidesPerGroup: 1,
1749      watchSlidesProgress: true,
1750      spaceBetween: 0,
1751      virtualTranslate: !swiper.params.cssMode
1752    })
1753  });
1754}
1755
1756
1757
1758
1759/***/ }),
1760
vendor: 5,336 bytes, lines 1761-1891
1761/***/ "./node_modules/swiper/modules/effect-flip.mjs":
1762/*!*****************************************************!*\
1763  !*** ./node_modules/swiper/modules/effect-flip.mjs ***!
1764  \*****************************************************/
1765/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1766
1767"use strict";
1768__webpack_require__.r(__webpack_exports__);
1769/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1770/* harmony export */   "default": function() { return /* binding */ EffectFlip; }
1771/* harmony export */ });
1772/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
1773/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
1774/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
1775/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1776/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1777
1778
1779
1780
1781
1782
1783function EffectFlip(_ref) {
1784  let {
1785    swiper,
1786    extendParams,
1787    on
1788  } = _ref;
1789  extendParams({
1790    flipEffect: {
1791      slideShadows: true,
1792      limitRotation: true
1793    }
1794  });
1795  const createSlideShadows = (slideEl, progress) => {
1796    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
1797    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
1798    if (!shadowBefore) {
1799      shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');
1800    }
1801    if (!shadowAfter) {
1802      shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
1803    }
1804    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
1805    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
1806  };
1807  const recreateShadows = () => {
1808    // Set shadows
1809    swiper.params.flipEffect;
1810    swiper.slides.forEach(slideEl => {
1811      let progress = slideEl.progress;
1812      if (swiper.params.flipEffect.limitRotation) {
1813        progress = Math.max(Math.min(slideEl.progress, 1), -1);
1814      }
1815      createSlideShadows(slideEl, progress);
1816    });
1817  };
1818  const setTranslate = () => {
1819    const {
1820      slides,
1821      rtlTranslate: rtl
1822    } = swiper;
1823    const params = swiper.params.flipEffect;
1824    const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper);
1825    for (let i = 0; i < slides.length; i += 1) {
1826      const slideEl = slides[i];
1827      let progress = slideEl.progress;
1828      if (swiper.params.flipEffect.limitRotation) {
1829        progress = Math.max(Math.min(slideEl.progress, 1), -1);
1830      }
1831      const offset = slideEl.swiperSlideOffset;
1832      const rotate = -180 * progress;
1833      let rotateY = rotate;
1834      let rotateX = 0;
1835      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
1836      let ty = 0;
1837      if (!swiper.isHorizontal()) {
1838        ty = tx;
1839        tx = 0;
1840        rotateX = -rotateY;
1841        rotateY = 0;
1842      } else if (rtl) {
1843        rotateY = -rotateY;
1844      }
1845      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
1846      if (params.slideShadows) {
1847        createSlideShadows(slideEl, progress);
1848      }
1849      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;
1850      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1851      targetEl.style.transform = transform;
1852    }
1853  };
1854  const setTransition = duration => {
1855    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
1856    transformElements.forEach(el => {
1857      el.style.transitionDuration = `${duration}ms`;
1858      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
1859        shadowEl.style.transitionDuration = `${duration}ms`;
1860      });
1861    });
1862    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
1863      swiper,
1864      duration,
1865      transformElements
1866    });
1867  };
1868  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1869    effect: 'flip',
1870    swiper,
1871    on,
1872    setTranslate,
1873    setTransition,
1874    recreateShadows,
1875    getEffectParams: () => swiper.params.flipEffect,
1876    perspective: () => true,
1877    overwriteParams: () => ({
1878      slidesPerView: 1,
1879      slidesPerGroup: 1,
1880      watchSlidesProgress: true,
1881      spaceBetween: 0,
1882      virtualTranslate: !swiper.params.cssMode
1883    })
1884  });
1885}
1886
1887
1888
1889
1890/***/ }),
1891
vendor: 9,261 bytes, lines 1892-2144
1892/***/ "./node_modules/swiper/modules/free-mode.mjs":
1893/*!***************************************************!*\
1894  !*** ./node_modules/swiper/modules/free-mode.mjs ***!
1895  \***************************************************/
1896/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1897
1898"use strict";
1899__webpack_require__.r(__webpack_exports__);
1900/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1901/* harmony export */   "default": function() { return /* binding */ freeMode; }
1902/* harmony export */ });
1903/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
1904
1905
1906function freeMode(_ref) {
1907  let {
1908    swiper,
1909    extendParams,
1910    emit,
1911    once
1912  } = _ref;
1913  extendParams({
1914    freeMode: {
1915      enabled: false,
1916      momentum: true,
1917      momentumRatio: 1,
1918      momentumBounce: true,
1919      momentumBounceRatio: 1,
1920      momentumVelocityRatio: 1,
1921      sticky: false,
1922      minimumVelocity: 0.02
1923    }
1924  });
1925  function onTouchStart() {
1926    if (swiper.params.cssMode) return;
1927    const translate = swiper.getTranslate();
1928    swiper.setTranslate(translate);
1929    swiper.setTransition(0);
1930    swiper.touchEventsData.velocities.length = 0;
1931    swiper.freeMode.onTouchEnd({
1932      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
1933    });
1934  }
1935  function onTouchMove() {
1936    if (swiper.params.cssMode) return;
1937    const {
1938      touchEventsData: data,
1939      touches
1940    } = swiper;
1941    // Velocity
1942    if (data.velocities.length === 0) {
1943      data.velocities.push({
1944        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
1945        time: data.touchStartTime
1946      });
1947    }
1948    data.velocities.push({
1949      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
1950      time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)()
1951    });
1952  }
1953  function onTouchEnd(_ref2) {
1954    let {
1955      currentPos
1956    } = _ref2;
1957    if (swiper.params.cssMode) return;
1958    const {
1959      params,
1960      wrapperEl,
1961      rtlTranslate: rtl,
1962      snapGrid,
1963      touchEventsData: data
1964    } = swiper;
1965    // Time diff
1966    const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)();
1967    const timeDiff = touchEndTime - data.touchStartTime;
1968    if (currentPos < -swiper.minTranslate()) {
1969      swiper.slideTo(swiper.activeIndex);
1970      return;
1971    }
1972    if (currentPos > -swiper.maxTranslate()) {
1973      if (swiper.slides.length < snapGrid.length) {
1974        swiper.slideTo(snapGrid.length - 1);
1975      } else {
1976        swiper.slideTo(swiper.slides.length - 1);
1977      }
1978      return;
1979    }
1980    if (params.freeMode.momentum) {
1981      if (data.velocities.length > 1) {
1982        const lastMoveEvent = data.velocities.pop();
1983        const velocityEvent = data.velocities.pop();
1984        const distance = lastMoveEvent.position - velocityEvent.position;
1985        const time = lastMoveEvent.time - velocityEvent.time;
1986        swiper.velocity = distance / time;
1987        swiper.velocity /= 2;
1988        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
1989          swiper.velocity = 0;
1990        }
1991        // this implies that the user stopped moving a finger then released.
1992        // There would be no events with distance zero, so the last event is stale.
1993        if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() - lastMoveEvent.time > 300) {
1994          swiper.velocity = 0;
1995        }
1996      } else {
1997        swiper.velocity = 0;
1998      }
1999      swiper.velocity *= params.freeMode.momentumVelocityRatio;
2000      data.velocities.length = 0;
2001      let momentumDuration = 1000 * params.freeMode.momentumRatio;
2002      const momentumDistance = swiper.velocity * momentumDuration;
2003      let newPosition = swiper.translate + momentumDistance;
2004      if (rtl) newPosition = -newPosition;
2005      let doBounce = false;
2006      let afterBouncePosition;
2007      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
2008      let needsLoopFix;
2009      if (newPosition < swiper.maxTranslate()) {
2010        if (params.freeMode.momentumBounce) {
2011          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
2012            newPosition = swiper.maxTranslate() - bounceAmount;
2013          }
2014          afterBouncePosition = swiper.maxTranslate();
2015          doBounce = true;
2016          data.allowMomentumBounce = true;
2017        } else {
2018          newPosition = swiper.maxTranslate();
2019        }
2020        if (params.loop && params.centeredSlides) needsLoopFix = true;
2021      } else if (newPosition > swiper.minTranslate()) {
2022        if (params.freeMode.momentumBounce) {
2023          if (newPosition - swiper.minTranslate() > bounceAmount) {
2024            newPosition = swiper.minTranslate() + bounceAmount;
2025          }
2026          afterBouncePosition = swiper.minTranslate();
2027          doBounce = true;
2028          data.allowMomentumBounce = true;
2029        } else {
2030          newPosition = swiper.minTranslate();
2031        }
2032        if (params.loop && params.centeredSlides) needsLoopFix = true;
2033      } else if (params.freeMode.sticky) {
2034        let nextSlide;
2035        for (let j = 0; j < snapGrid.length; j += 1) {
2036          if (snapGrid[j] > -newPosition) {
2037            nextSlide = j;
2038            break;
2039          }
2040        }
2041        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
2042          newPosition = snapGrid[nextSlide];
2043        } else {
2044          newPosition = snapGrid[nextSlide - 1];
2045        }
2046        newPosition = -newPosition;
2047      }
2048      if (needsLoopFix) {
2049        once('transitionEnd', () => {
2050          swiper.loopFix();
2051        });
2052      }
2053      // Fix duration
2054      if (swiper.velocity !== 0) {
2055        if (rtl) {
2056          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
2057        } else {
2058          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
2059        }
2060        if (params.freeMode.sticky) {
2061          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
2062          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
2063          // It's easy to see this when simulating touch with mouse events. To fix this,
2064          // limit single-slide swipes to the default slide duration. This also has the
2065          // nice side effect of matching slide speed if the user stopped moving before
2066          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
2067          // For faster swipes, also apply limits (albeit higher ones).
2068          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
2069          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
2070          if (moveDistance < currentSlideSize) {
2071            momentumDuration = params.speed;
2072          } else if (moveDistance < 2 * currentSlideSize) {
2073            momentumDuration = params.speed * 1.5;
2074          } else {
2075            momentumDuration = params.speed * 2.5;
2076          }
2077        }
2078      } else if (params.freeMode.sticky) {
2079        swiper.slideToClosest();
2080        return;
2081      }
2082      if (params.freeMode.momentumBounce && doBounce) {
2083        swiper.updateProgress(afterBouncePosition);
2084        swiper.setTransition(momentumDuration);
2085        swiper.setTranslate(newPosition);
2086        swiper.transitionStart(true, swiper.swipeDirection);
2087        swiper.animating = true;
2088        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => {
2089          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
2090          emit('momentumBounce');
2091          swiper.setTransition(params.speed);
2092          setTimeout(() => {
2093            swiper.setTranslate(afterBouncePosition);
2094            (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => {
2095              if (!swiper || swiper.destroyed) return;
2096              swiper.transitionEnd();
2097            });
2098          }, 0);
2099        });
2100      } else if (swiper.velocity) {
2101        emit('_freeModeNoMomentumRelease');
2102        swiper.updateProgress(newPosition);
2103        swiper.setTransition(momentumDuration);
2104        swiper.setTranslate(newPosition);
2105        swiper.transitionStart(true, swiper.swipeDirection);
2106        if (!swiper.animating) {
2107          swiper.animating = true;
2108          (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => {
2109            if (!swiper || swiper.destroyed) return;
2110            swiper.transitionEnd();
2111          });
2112        }
2113      } else {
2114        swiper.updateProgress(newPosition);
2115      }
2116      swiper.updateActiveIndex();
2117      swiper.updateSlidesClasses();
2118    } else if (params.freeMode.sticky) {
2119      swiper.slideToClosest();
2120      return;
2121    } else if (params.freeMode) {
2122      emit('_freeModeNoMomentumRelease');
2123    }
2124    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
2125      emit('_freeModeStaticRelease');
2126      swiper.updateProgress();
2127      swiper.updateActiveIndex();
2128      swiper.updateSlidesClasses();
2129    }
2130  }
2131  Object.assign(swiper, {
2132    freeMode: {
2133      onTouchStart,
2134      onTouchMove,
2135      onTouchEnd
2136    }
2137  });
2138}
2139
2140
2141
2142
2143/***/ }),
2144
vendor: 5,731 bytes, lines 2145-2314
2145/***/ "./node_modules/swiper/modules/grid.mjs":
2146/*!**********************************************!*\
2147  !*** ./node_modules/swiper/modules/grid.mjs ***!
2148  \**********************************************/
2149/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2150
2151"use strict";
2152__webpack_require__.r(__webpack_exports__);
2153/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2154/* harmony export */   "default": function() { return /* binding */ Grid; }
2155/* harmony export */ });
2156function Grid(_ref) {
2157  let {
2158    swiper,
2159    extendParams,
2160    on
2161  } = _ref;
2162  extendParams({
2163    grid: {
2164      rows: 1,
2165      fill: 'column'
2166    }
2167  });
2168  let slidesNumberEvenToRows;
2169  let slidesPerRow;
2170  let numFullColumns;
2171  let wasMultiRow;
2172  const getSpaceBetween = () => {
2173    let spaceBetween = swiper.params.spaceBetween;
2174    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
2175      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
2176    } else if (typeof spaceBetween === 'string') {
2177      spaceBetween = parseFloat(spaceBetween);
2178    }
2179    return spaceBetween;
2180  };
2181  const initSlides = slides => {
2182    const {
2183      slidesPerView
2184    } = swiper.params;
2185    const {
2186      rows,
2187      fill
2188    } = swiper.params.grid;
2189    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
2190    numFullColumns = Math.floor(slidesLength / rows);
2191    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
2192      slidesNumberEvenToRows = slidesLength;
2193    } else {
2194      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
2195    }
2196    if (slidesPerView !== 'auto' && fill === 'row') {
2197      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
2198    }
2199    slidesPerRow = slidesNumberEvenToRows / rows;
2200  };
2201  const unsetSlides = () => {
2202    if (swiper.slides) {
2203      swiper.slides.forEach(slide => {
2204        if (slide.swiperSlideGridSet) {
2205          slide.style.height = '';
2206          slide.style[swiper.getDirectionLabel('margin-top')] = '';
2207        }
2208      });
2209    }
2210  };
2211  const updateSlide = (i, slide, slides) => {
2212    const {
2213      slidesPerGroup
2214    } = swiper.params;
2215    const spaceBetween = getSpaceBetween();
2216    const {
2217      rows,
2218      fill
2219    } = swiper.params.grid;
2220    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
2221    // Set slides order
2222    let newSlideOrderIndex;
2223    let column;
2224    let row;
2225    if (fill === 'row' && slidesPerGroup > 1) {
2226      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
2227      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
2228      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
2229      row = Math.floor(slideIndexInGroup / columnsInGroup);
2230      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
2231      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
2232      slide.style.order = newSlideOrderIndex;
2233    } else if (fill === 'column') {
2234      column = Math.floor(i / rows);
2235      row = i - column * rows;
2236      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
2237        row += 1;
2238        if (row >= rows) {
2239          row = 0;
2240          column += 1;
2241        }
2242      }
2243    } else {
2244      row = Math.floor(i / slidesPerRow);
2245      column = i - row * slidesPerRow;
2246    }
2247    slide.row = row;
2248    slide.column = column;
2249    slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;
2250    slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';
2251    slide.swiperSlideGridSet = true;
2252  };
2253  const updateWrapperSize = (slideSize, snapGrid) => {
2254    const {
2255      centeredSlides,
2256      roundLengths
2257    } = swiper.params;
2258    const spaceBetween = getSpaceBetween();
2259    const {
2260      rows
2261    } = swiper.params.grid;
2262    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
2263    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
2264    if (!swiper.params.cssMode) {
2265      swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
2266    }
2267    if (centeredSlides) {
2268      const newSlidesGrid = [];
2269      for (let i = 0; i < snapGrid.length; i += 1) {
2270        let slidesGridItem = snapGrid[i];
2271        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
2272        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
2273      }
2274      snapGrid.splice(0, snapGrid.length);
2275      snapGrid.push(...newSlidesGrid);
2276    }
2277  };
2278  const onInit = () => {
2279    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;
2280  };
2281  const onUpdate = () => {
2282    const {
2283      params,
2284      el
2285    } = swiper;
2286    const isMultiRow = params.grid && params.grid.rows > 1;
2287    if (wasMultiRow && !isMultiRow) {
2288      el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
2289      numFullColumns = 1;
2290      swiper.emitContainerClasses();
2291    } else if (!wasMultiRow && isMultiRow) {
2292      el.classList.add(`${params.containerModifierClass}grid`);
2293      if (params.grid.fill === 'column') {
2294        el.classList.add(`${params.containerModifierClass}grid-column`);
2295      }
2296      swiper.emitContainerClasses();
2297    }
2298    wasMultiRow = isMultiRow;
2299  };
2300  on('init', onInit);
2301  on('update', onUpdate);
2302  swiper.grid = {
2303    initSlides,
2304    unsetSlides,
2305    updateSlide,
2306    updateWrapperSize
2307  };
2308}
2309
2310
2311
2312
2313/***/ }),
2314
vendor: 4,427 bytes, lines 2315-2424
2315/***/ "./node_modules/swiper/modules/hash-navigation.mjs":
2316/*!*********************************************************!*\
2317  !*** ./node_modules/swiper/modules/hash-navigation.mjs ***!
2318  \*********************************************************/
2319/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2320
2321"use strict";
2322__webpack_require__.r(__webpack_exports__);
2323/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2324/* harmony export */   "default": function() { return /* binding */ HashNavigation; }
2325/* harmony export */ });
2326/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
2327/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
2328
2329
2330
2331function HashNavigation(_ref) {
2332  let {
2333    swiper,
2334    extendParams,
2335    emit,
2336    on
2337  } = _ref;
2338  let initialized = false;
2339  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
2340  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2341  extendParams({
2342    hashNavigation: {
2343      enabled: false,
2344      replaceState: false,
2345      watchState: false,
2346      getSlideIndex(_s, hash) {
2347        if (swiper.virtual && swiper.params.virtual.enabled) {
2348          const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);
2349          if (!slideWithHash) return 0;
2350          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);
2351          return index;
2352        }
2353        return swiper.getSlideIndex((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]);
2354      }
2355    }
2356  });
2357  const onHashChange = () => {
2358    emit('hashChange');
2359    const newHash = document.location.hash.replace('#', '');
2360    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
2361    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';
2362    if (newHash !== activeSlideHash) {
2363      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
2364      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;
2365      swiper.slideTo(newIndex);
2366    }
2367  };
2368  const setHash = () => {
2369    if (!initialized || !swiper.params.hashNavigation.enabled) return;
2370    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
2371    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';
2372    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
2373      window.history.replaceState(null, null, `#${activeSlideHash}` || '');
2374      emit('hashSet');
2375    } else {
2376      document.location.hash = activeSlideHash || '';
2377      emit('hashSet');
2378    }
2379  };
2380  const init = () => {
2381    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
2382    initialized = true;
2383    const hash = document.location.hash.replace('#', '');
2384    if (hash) {
2385      const speed = 0;
2386      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
2387      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);
2388    }
2389    if (swiper.params.hashNavigation.watchState) {
2390      window.addEventListener('hashchange', onHashChange);
2391    }
2392  };
2393  const destroy = () => {
2394    if (swiper.params.hashNavigation.watchState) {
2395      window.removeEventListener('hashchange', onHashChange);
2396    }
2397  };
2398  on('init', () => {
2399    if (swiper.params.hashNavigation.enabled) {
2400      init();
2401    }
2402  });
2403  on('destroy', () => {
2404    if (swiper.params.hashNavigation.enabled) {
2405      destroy();
2406    }
2407  });
2408  on('transitionEnd _freeModeNoMomentumRelease', () => {
2409    if (initialized) {
2410      setHash();
2411    }
2412  });
2413  on('slideChange', () => {
2414    if (initialized && swiper.params.cssMode) {
2415      setHash();
2416    }
2417  });
2418}
2419
2420
2421
2422
2423/***/ }),
2424
vendor: 5,144 bytes, lines 2425-2582
2425/***/ "./node_modules/swiper/modules/history.mjs":
2426/*!*************************************************!*\
2427  !*** ./node_modules/swiper/modules/history.mjs ***!
2428  \*************************************************/
2429/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2430
2431"use strict";
2432__webpack_require__.r(__webpack_exports__);
2433/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2434/* harmony export */   "default": function() { return /* binding */ History; }
2435/* harmony export */ });
2436/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
2437
2438
2439function History(_ref) {
2440  let {
2441    swiper,
2442    extendParams,
2443    on
2444  } = _ref;
2445  extendParams({
2446    history: {
2447      enabled: false,
2448      root: '',
2449      replaceState: false,
2450      key: 'slides',
2451      keepQuery: false
2452    }
2453  });
2454  let initialized = false;
2455  let paths = {};
2456  const slugify = text => {
2457    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
2458  };
2459  const getPathValues = urlOverride => {
2460    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2461    let location;
2462    if (urlOverride) {
2463      location = new URL(urlOverride);
2464    } else {
2465      location = window.location;
2466    }
2467    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
2468    const total = pathArray.length;
2469    const key = pathArray[total - 2];
2470    const value = pathArray[total - 1];
2471    return {
2472      key,
2473      value
2474    };
2475  };
2476  const setHistory = (key, index) => {
2477    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2478    if (!initialized || !swiper.params.history.enabled) return;
2479    let location;
2480    if (swiper.params.url) {
2481      location = new URL(swiper.params.url);
2482    } else {
2483      location = window.location;
2484    }
2485    const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index];
2486    let value = slugify(slide.getAttribute('data-history'));
2487    if (swiper.params.history.root.length > 0) {
2488      let root = swiper.params.history.root;
2489      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
2490      value = `${root}/${key ? `${key}/` : ''}${value}`;
2491    } else if (!location.pathname.includes(key)) {
2492      value = `${key ? `${key}/` : ''}${value}`;
2493    }
2494    if (swiper.params.history.keepQuery) {
2495      value += location.search;
2496    }
2497    const currentState = window.history.state;
2498    if (currentState && currentState.value === value) {
2499      return;
2500    }
2501    if (swiper.params.history.replaceState) {
2502      window.history.replaceState({
2503        value
2504      }, null, value);
2505    } else {
2506      window.history.pushState({
2507        value
2508      }, null, value);
2509    }
2510  };
2511  const scrollToSlide = (speed, value, runCallbacks) => {
2512    if (value) {
2513      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
2514        const slide = swiper.slides[i];
2515        const slideHistory = slugify(slide.getAttribute('data-history'));
2516        if (slideHistory === value) {
2517          const index = swiper.getSlideIndex(slide);
2518          swiper.slideTo(index, speed, runCallbacks);
2519        }
2520      }
2521    } else {
2522      swiper.slideTo(0, speed, runCallbacks);
2523    }
2524  };
2525  const setHistoryPopState = () => {
2526    paths = getPathValues(swiper.params.url);
2527    scrollToSlide(swiper.params.speed, paths.value, false);
2528  };
2529  const init = () => {
2530    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2531    if (!swiper.params.history) return;
2532    if (!window.history || !window.history.pushState) {
2533      swiper.params.history.enabled = false;
2534      swiper.params.hashNavigation.enabled = true;
2535      return;
2536    }
2537    initialized = true;
2538    paths = getPathValues(swiper.params.url);
2539    if (!paths.key && !paths.value) {
2540      if (!swiper.params.history.replaceState) {
2541        window.addEventListener('popstate', setHistoryPopState);
2542      }
2543      return;
2544    }
2545    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
2546    if (!swiper.params.history.replaceState) {
2547      window.addEventListener('popstate', setHistoryPopState);
2548    }
2549  };
2550  const destroy = () => {
2551    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2552    if (!swiper.params.history.replaceState) {
2553      window.removeEventListener('popstate', setHistoryPopState);
2554    }
2555  };
2556  on('init', () => {
2557    if (swiper.params.history.enabled) {
2558      init();
2559    }
2560  });
2561  on('destroy', () => {
2562    if (swiper.params.history.enabled) {
2563      destroy();
2564    }
2565  });
2566  on('transitionEnd _freeModeNoMomentumRelease', () => {
2567    if (initialized) {
2568      setHistory(swiper.params.history.key, swiper.activeIndex);
2569    }
2570  });
2571  on('slideChange', () => {
2572    if (initialized && swiper.params.cssMode) {
2573      setHistory(swiper.params.history.key, swiper.activeIndex);
2574    }
2575  });
2576}
2577
2578
2579
2580
2581/***/ }),
2582
vendor: 7,341 bytes, lines 2583-2664
2583/***/ "./node_modules/swiper/modules/index.mjs":
2584/*!***********************************************!*\
2585  !*** ./node_modules/swiper/modules/index.mjs ***!
2586  \***********************************************/
2587/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2588
2589"use strict";
2590__webpack_require__.r(__webpack_exports__);
2591/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2592/* harmony export */   A11y: function() { return /* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]; },
2593/* harmony export */   Autoplay: function() { return /* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]; },
2594/* harmony export */   Controller: function() { return /* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]; },
2595/* harmony export */   EffectCards: function() { return /* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]; },
2596/* harmony export */   EffectCoverflow: function() { return /* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]; },
2597/* harmony export */   EffectCreative: function() { return /* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]; },
2598/* harmony export */   EffectCube: function() { return /* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]; },
2599/* harmony export */   EffectFade: function() { return /* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]; },
2600/* harmony export */   EffectFlip: function() { return /* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]; },
2601/* harmony export */   FreeMode: function() { return /* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]; },
2602/* harmony export */   Grid: function() { return /* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]; },
2603/* harmony export */   HashNavigation: function() { return /* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]; },
2604/* harmony export */   History: function() { return /* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]; },
2605/* harmony export */   Keyboard: function() { return /* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]; },
2606/* harmony export */   Manipulation: function() { return /* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]; },
2607/* harmony export */   Mousewheel: function() { return /* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]; },
2608/* harmony export */   Navigation: function() { return /* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]; },
2609/* harmony export */   Pagination: function() { return /* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]; },
2610/* harmony export */   Parallax: function() { return /* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]; },
2611/* harmony export */   Scrollbar: function() { return /* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]; },
2612/* harmony export */   Thumbs: function() { return /* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]; },
2613/* harmony export */   Virtual: function() { return /* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]; },
2614/* harmony export */   Zoom: function() { return /* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]; }
2615/* harmony export */ });
2616/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs");
2617/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs");
2618/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs");
2619/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs");
2620/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs");
2621/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs");
2622/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs");
2623/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs");
2624/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "./node_modules/swiper/modules/controller.mjs");
2625/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs");
2626/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "./node_modules/swiper/modules/history.mjs");
2627/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs");
2628/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs");
2629/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs");
2630/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs");
2631/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "./node_modules/swiper/modules/grid.mjs");
2632/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs");
2633/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs");
2634/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs");
2635/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs");
2636/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs");
2637/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs");
2638/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs");
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663/***/ }),
2664
vendor: 5,293 bytes, lines 2665-2798
2665/***/ "./node_modules/swiper/modules/keyboard.mjs":
2666/*!**************************************************!*\
2667  !*** ./node_modules/swiper/modules/keyboard.mjs ***!
2668  \**************************************************/
2669/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2670
2671"use strict";
2672__webpack_require__.r(__webpack_exports__);
2673/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2674/* harmony export */   "default": function() { return /* binding */ Keyboard; }
2675/* harmony export */ });
2676/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
2677/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
2678
2679
2680
2681/* eslint-disable consistent-return */
2682function Keyboard(_ref) {
2683  let {
2684    swiper,
2685    extendParams,
2686    on,
2687    emit
2688  } = _ref;
2689  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
2690  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2691  swiper.keyboard = {
2692    enabled: false
2693  };
2694  extendParams({
2695    keyboard: {
2696      enabled: false,
2697      onlyInViewport: true,
2698      pageUpDown: true
2699    }
2700  });
2701  function handle(event) {
2702    if (!swiper.enabled) return;
2703    const {
2704      rtlTranslate: rtl
2705    } = swiper;
2706    let e = event;
2707    if (e.originalEvent) e = e.originalEvent; // jquery fix
2708    const kc = e.keyCode || e.charCode;
2709    const pageUpDown = swiper.params.keyboard.pageUpDown;
2710    const isPageUp = pageUpDown && kc === 33;
2711    const isPageDown = pageUpDown && kc === 34;
2712    const isArrowLeft = kc === 37;
2713    const isArrowRight = kc === 39;
2714    const isArrowUp = kc === 38;
2715    const isArrowDown = kc === 40;
2716    // Directions locks
2717    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
2718      return false;
2719    }
2720    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
2721      return false;
2722    }
2723    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
2724      return undefined;
2725    }
2726    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
2727      return undefined;
2728    }
2729    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
2730      let inView = false;
2731      // Check that swiper should be inside of visible area of window
2732      if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
2733        return undefined;
2734      }
2735      const el = swiper.el;
2736      const swiperWidth = el.clientWidth;
2737      const swiperHeight = el.clientHeight;
2738      const windowWidth = window.innerWidth;
2739      const windowHeight = window.innerHeight;
2740      const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el);
2741      if (rtl) swiperOffset.left -= el.scrollLeft;
2742      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
2743      for (let i = 0; i < swiperCoord.length; i += 1) {
2744        const point = swiperCoord[i];
2745        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
2746          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
2747          inView = true;
2748        }
2749      }
2750      if (!inView) return undefined;
2751    }
2752    if (swiper.isHorizontal()) {
2753      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
2754        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
2755      }
2756      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
2757      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
2758    } else {
2759      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
2760        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
2761      }
2762      if (isPageDown || isArrowDown) swiper.slideNext();
2763      if (isPageUp || isArrowUp) swiper.slidePrev();
2764    }
2765    emit('keyPress', kc);
2766    return undefined;
2767  }
2768  function enable() {
2769    if (swiper.keyboard.enabled) return;
2770    document.addEventListener('keydown', handle);
2771    swiper.keyboard.enabled = true;
2772  }
2773  function disable() {
2774    if (!swiper.keyboard.enabled) return;
2775    document.removeEventListener('keydown', handle);
2776    swiper.keyboard.enabled = false;
2777  }
2778  on('init', () => {
2779    if (swiper.params.keyboard.enabled) {
2780      enable();
2781    }
2782  });
2783  on('destroy', () => {
2784    if (swiper.keyboard.enabled) {
2785      disable();
2786    }
2787  });
2788  Object.assign(swiper.keyboard, {
2789    enable,
2790    disable
2791  });
2792}
2793
2794
2795
2796
2797/***/ }),
2798
vendor: 5,537 bytes, lines 2799-3004
2799/***/ "./node_modules/swiper/modules/manipulation.mjs":
2800/*!******************************************************!*\
2801  !*** ./node_modules/swiper/modules/manipulation.mjs ***!
2802  \******************************************************/
2803/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2804
2805"use strict";
2806__webpack_require__.r(__webpack_exports__);
2807/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2808/* harmony export */   "default": function() { return /* binding */ Manipulation; }
2809/* harmony export */ });
2810function appendSlide(slides) {
2811  const swiper = this;
2812  const {
2813    params,
2814    slidesEl
2815  } = swiper;
2816  if (params.loop) {
2817    swiper.loopDestroy();
2818  }
2819  const appendElement = slideEl => {
2820    if (typeof slideEl === 'string') {
2821      const tempDOM = document.createElement('div');
2822      tempDOM.innerHTML = slideEl;
2823      slidesEl.append(tempDOM.children[0]);
2824      tempDOM.innerHTML = '';
2825    } else {
2826      slidesEl.append(slideEl);
2827    }
2828  };
2829  if (typeof slides === 'object' && 'length' in slides) {
2830    for (let i = 0; i < slides.length; i += 1) {
2831      if (slides[i]) appendElement(slides[i]);
2832    }
2833  } else {
2834    appendElement(slides);
2835  }
2836  swiper.recalcSlides();
2837  if (params.loop) {
2838    swiper.loopCreate();
2839  }
2840  if (!params.observer || swiper.isElement) {
2841    swiper.update();
2842  }
2843}
2844
2845function prependSlide(slides) {
2846  const swiper = this;
2847  const {
2848    params,
2849    activeIndex,
2850    slidesEl
2851  } = swiper;
2852  if (params.loop) {
2853    swiper.loopDestroy();
2854  }
2855  let newActiveIndex = activeIndex + 1;
2856  const prependElement = slideEl => {
2857    if (typeof slideEl === 'string') {
2858      const tempDOM = document.createElement('div');
2859      tempDOM.innerHTML = slideEl;
2860      slidesEl.prepend(tempDOM.children[0]);
2861      tempDOM.innerHTML = '';
2862    } else {
2863      slidesEl.prepend(slideEl);
2864    }
2865  };
2866  if (typeof slides === 'object' && 'length' in slides) {
2867    for (let i = 0; i < slides.length; i += 1) {
2868      if (slides[i]) prependElement(slides[i]);
2869    }
2870    newActiveIndex = activeIndex + slides.length;
2871  } else {
2872    prependElement(slides);
2873  }
2874  swiper.recalcSlides();
2875  if (params.loop) {
2876    swiper.loopCreate();
2877  }
2878  if (!params.observer || swiper.isElement) {
2879    swiper.update();
2880  }
2881  swiper.slideTo(newActiveIndex, 0, false);
2882}
2883
2884function addSlide(index, slides) {
2885  const swiper = this;
2886  const {
2887    params,
2888    activeIndex,
2889    slidesEl
2890  } = swiper;
2891  let activeIndexBuffer = activeIndex;
2892  if (params.loop) {
2893    activeIndexBuffer -= swiper.loopedSlides;
2894    swiper.loopDestroy();
2895    swiper.recalcSlides();
2896  }
2897  const baseLength = swiper.slides.length;
2898  if (index <= 0) {
2899    swiper.prependSlide(slides);
2900    return;
2901  }
2902  if (index >= baseLength) {
2903    swiper.appendSlide(slides);
2904    return;
2905  }
2906  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
2907  const slidesBuffer = [];
2908  for (let i = baseLength - 1; i >= index; i -= 1) {
2909    const currentSlide = swiper.slides[i];
2910    currentSlide.remove();
2911    slidesBuffer.unshift(currentSlide);
2912  }
2913  if (typeof slides === 'object' && 'length' in slides) {
2914    for (let i = 0; i < slides.length; i += 1) {
2915      if (slides[i]) slidesEl.append(slides[i]);
2916    }
2917    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
2918  } else {
2919    slidesEl.append(slides);
2920  }
2921  for (let i = 0; i < slidesBuffer.length; i += 1) {
2922    slidesEl.append(slidesBuffer[i]);
2923  }
2924  swiper.recalcSlides();
2925  if (params.loop) {
2926    swiper.loopCreate();
2927  }
2928  if (!params.observer || swiper.isElement) {
2929    swiper.update();
2930  }
2931  if (params.loop) {
2932    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2933  } else {
2934    swiper.slideTo(newActiveIndex, 0, false);
2935  }
2936}
2937
2938function removeSlide(slidesIndexes) {
2939  const swiper = this;
2940  const {
2941    params,
2942    activeIndex
2943  } = swiper;
2944  let activeIndexBuffer = activeIndex;
2945  if (params.loop) {
2946    activeIndexBuffer -= swiper.loopedSlides;
2947    swiper.loopDestroy();
2948  }
2949  let newActiveIndex = activeIndexBuffer;
2950  let indexToRemove;
2951  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
2952    for (let i = 0; i < slidesIndexes.length; i += 1) {
2953      indexToRemove = slidesIndexes[i];
2954      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
2955      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
2956    }
2957    newActiveIndex = Math.max(newActiveIndex, 0);
2958  } else {
2959    indexToRemove = slidesIndexes;
2960    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
2961    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
2962    newActiveIndex = Math.max(newActiveIndex, 0);
2963  }
2964  swiper.recalcSlides();
2965  if (params.loop) {
2966    swiper.loopCreate();
2967  }
2968  if (!params.observer || swiper.isElement) {
2969    swiper.update();
2970  }
2971  if (params.loop) {
2972    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2973  } else {
2974    swiper.slideTo(newActiveIndex, 0, false);
2975  }
2976}
2977
2978function removeAllSlides() {
2979  const swiper = this;
2980  const slidesIndexes = [];
2981  for (let i = 0; i < swiper.slides.length; i += 1) {
2982    slidesIndexes.push(i);
2983  }
2984  swiper.removeSlide(slidesIndexes);
2985}
2986
2987function Manipulation(_ref) {
2988  let {
2989    swiper
2990  } = _ref;
2991  Object.assign(swiper, {
2992    appendSlide: appendSlide.bind(swiper),
2993    prependSlide: prependSlide.bind(swiper),
2994    addSlide: addSlide.bind(swiper),
2995    removeSlide: removeSlide.bind(swiper),
2996    removeAllSlides: removeAllSlides.bind(swiper)
2997  });
2998}
2999
3000
3001
3002
3003/***/ }),
3004
vendor: 16,029 bytes, lines 3005-3416
3005/***/ "./node_modules/swiper/modules/mousewheel.mjs":
3006/*!****************************************************!*\
3007  !*** ./node_modules/swiper/modules/mousewheel.mjs ***!
3008  \****************************************************/
3009/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3010
3011"use strict";
3012__webpack_require__.r(__webpack_exports__);
3013/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3014/* harmony export */   "default": function() { return /* binding */ Mousewheel; }
3015/* harmony export */ });
3016/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
3017/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3018
3019
3020
3021/* eslint-disable consistent-return */
3022function Mousewheel(_ref) {
3023  let {
3024    swiper,
3025    extendParams,
3026    on,
3027    emit
3028  } = _ref;
3029  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
3030  extendParams({
3031    mousewheel: {
3032      enabled: false,
3033      releaseOnEdges: false,
3034      invert: false,
3035      forceToAxis: false,
3036      sensitivity: 1,
3037      eventsTarget: 'container',
3038      thresholdDelta: null,
3039      thresholdTime: null,
3040      noMousewheelClass: 'swiper-no-mousewheel'
3041    }
3042  });
3043  swiper.mousewheel = {
3044    enabled: false
3045  };
3046  let timeout;
3047  let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
3048  let lastEventBeforeSnap;
3049  const recentWheelEvents = [];
3050  function normalize(e) {
3051    // Reasonable defaults
3052    const PIXEL_STEP = 10;
3053    const LINE_HEIGHT = 40;
3054    const PAGE_HEIGHT = 800;
3055    let sX = 0;
3056    let sY = 0; // spinX, spinY
3057    let pX = 0;
3058    let pY = 0; // pixelX, pixelY
3059
3060    // Legacy
3061    if ('detail' in e) {
3062      sY = e.detail;
3063    }
3064    if ('wheelDelta' in e) {
3065      sY = -e.wheelDelta / 120;
3066    }
3067    if ('wheelDeltaY' in e) {
3068      sY = -e.wheelDeltaY / 120;
3069    }
3070    if ('wheelDeltaX' in e) {
3071      sX = -e.wheelDeltaX / 120;
3072    }
3073
3074    // side scrolling on FF with DOMMouseScroll
3075    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
3076      sX = sY;
3077      sY = 0;
3078    }
3079    pX = sX * PIXEL_STEP;
3080    pY = sY * PIXEL_STEP;
3081    if ('deltaY' in e) {
3082      pY = e.deltaY;
3083    }
3084    if ('deltaX' in e) {
3085      pX = e.deltaX;
3086    }
3087    if (e.shiftKey && !pX) {
3088      // if user scrolls with shift he wants horizontal scroll
3089      pX = pY;
3090      pY = 0;
3091    }
3092    if ((pX || pY) && e.deltaMode) {
3093      if (e.deltaMode === 1) {
3094        // delta in LINE units
3095        pX *= LINE_HEIGHT;
3096        pY *= LINE_HEIGHT;
3097      } else {
3098        // delta in PAGE units
3099        pX *= PAGE_HEIGHT;
3100        pY *= PAGE_HEIGHT;
3101      }
3102    }
3103
3104    // Fall-back if spin cannot be determined
3105    if (pX && !sX) {
3106      sX = pX < 1 ? -1 : 1;
3107    }
3108    if (pY && !sY) {
3109      sY = pY < 1 ? -1 : 1;
3110    }
3111    return {
3112      spinX: sX,
3113      spinY: sY,
3114      pixelX: pX,
3115      pixelY: pY
3116    };
3117  }
3118  function handleMouseEnter() {
3119    if (!swiper.enabled) return;
3120    swiper.mouseEntered = true;
3121  }
3122  function handleMouseLeave() {
3123    if (!swiper.enabled) return;
3124    swiper.mouseEntered = false;
3125  }
3126  function animateSlider(newEvent) {
3127    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
3128      // Prevent if delta of wheel scroll delta is below configured threshold
3129      return false;
3130    }
3131    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
3132      // Prevent if time between scrolls is below configured threshold
3133      return false;
3134    }
3135
3136    // If the movement is NOT big enough and
3137    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
3138    //   Don't go any further (avoid insignificant scroll movement).
3139    if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < 60) {
3140      // Return false as a default
3141      return true;
3142    }
3143    // If user is scrolling towards the end:
3144    //   If the slider hasn't hit the latest slide or
3145    //   if the slider is a loop and
3146    //   if the slider isn't moving right now:
3147    //     Go to next slide and
3148    //     emit a scroll event.
3149    // Else (the user is scrolling towards the beginning) and
3150    // if the slider hasn't hit the first slide or
3151    // if the slider is a loop and
3152    // if the slider isn't moving right now:
3153    //   Go to prev slide and
3154    //   emit a scroll event.
3155    if (newEvent.direction < 0) {
3156      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
3157        swiper.slideNext();
3158        emit('scroll', newEvent.raw);
3159      }
3160    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
3161      swiper.slidePrev();
3162      emit('scroll', newEvent.raw);
3163    }
3164    // If you got here is because an animation has been triggered so store the current time
3165    lastScrollTime = new window.Date().getTime();
3166    // Return false as a default
3167    return false;
3168  }
3169  function releaseScroll(newEvent) {
3170    const params = swiper.params.mousewheel;
3171    if (newEvent.direction < 0) {
3172      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
3173        // Return true to animate scroll on edges
3174        return true;
3175      }
3176    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
3177      // Return true to animate scroll on edges
3178      return true;
3179    }
3180    return false;
3181  }
3182  function handle(event) {
3183    let e = event;
3184    let disableParentSwiper = true;
3185    if (!swiper.enabled) return;
3186
3187    // Ignore event if the target or its parents have the swiper-no-mousewheel class
3188    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;
3189    const params = swiper.params.mousewheel;
3190    if (swiper.params.cssMode) {
3191      e.preventDefault();
3192    }
3193    let targetEl = swiper.el;
3194    if (swiper.params.mousewheel.eventsTarget !== 'container') {
3195      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
3196    }
3197    const targetElContainsTarget = targetEl && targetEl.contains(e.target);
3198    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;
3199    if (e.originalEvent) e = e.originalEvent; // jquery fix
3200    let delta = 0;
3201    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
3202    const data = normalize(e);
3203    if (params.forceToAxis) {
3204      if (swiper.isHorizontal()) {
3205        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
3206      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
3207    } else {
3208      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
3209    }
3210    if (delta === 0) return true;
3211    if (params.invert) delta = -delta;
3212
3213    // Get the scroll positions
3214    let positions = swiper.getTranslate() + delta * params.sensitivity;
3215    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
3216    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
3217
3218    // When loop is true:
3219    //     the disableParentSwiper will be true.
3220    // When loop is false:
3221    //     if the scroll positions is not on edge,
3222    //     then the disableParentSwiper will be true.
3223    //     if the scroll on edge positions,
3224    //     then the disableParentSwiper will be false.
3225    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
3226    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
3227    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
3228      // Register the new event in a variable which stores the relevant data
3229      const newEvent = {
3230        time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(),
3231        delta: Math.abs(delta),
3232        direction: Math.sign(delta),
3233        raw: event
3234      };
3235
3236      // Keep the most recent events
3237      if (recentWheelEvents.length >= 2) {
3238        recentWheelEvents.shift(); // only store the last N events
3239      }
3240
3241      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
3242      recentWheelEvents.push(newEvent);
3243
3244      // If there is at least one previous recorded event:
3245      //   If direction has changed or
3246      //   if the scroll is quicker than the previous one:
3247      //     Animate the slider.
3248      // Else (this is the first time the wheel is moved):
3249      //     Animate the slider.
3250      if (prevEvent) {
3251        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
3252          animateSlider(newEvent);
3253        }
3254      } else {
3255        animateSlider(newEvent);
3256      }
3257
3258      // If it's time to release the scroll:
3259      //   Return now so you don't hit the preventDefault.
3260      if (releaseScroll(newEvent)) {
3261        return true;
3262      }
3263    } else {
3264      // Freemode or scrollContainer:
3265
3266      // If we recently snapped after a momentum scroll, then ignore wheel events
3267      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
3268      // or if it's a new scroll (larger delta or inverse sign as last event before
3269      // an end-of-momentum snap).
3270      const newEvent = {
3271        time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(),
3272        delta: Math.abs(delta),
3273        direction: Math.sign(delta)
3274      };
3275      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
3276      if (!ignoreWheelEvents) {
3277        lastEventBeforeSnap = undefined;
3278        let position = swiper.getTranslate() + delta * params.sensitivity;
3279        const wasBeginning = swiper.isBeginning;
3280        const wasEnd = swiper.isEnd;
3281        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
3282        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
3283        swiper.setTransition(0);
3284        swiper.setTranslate(position);
3285        swiper.updateProgress();
3286        swiper.updateActiveIndex();
3287        swiper.updateSlidesClasses();
3288        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
3289          swiper.updateSlidesClasses();
3290        }
3291        if (swiper.params.loop) {
3292          swiper.loopFix({
3293            direction: newEvent.direction < 0 ? 'next' : 'prev',
3294            byMousewheel: true
3295          });
3296        }
3297        if (swiper.params.freeMode.sticky) {
3298          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
3299          // the end of a momentum scroll by storing recent (N=15?) wheel events.
3300          // 1. do all N events have decreasing or same (absolute value) delta?
3301          // 2. did all N events arrive in the last M (M=500?) msecs?
3302          // 3. does the earliest event have an (absolute value) delta that's
3303          //    at least P (P=1?) larger than the most recent event's delta?
3304          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
3305          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
3306          // Snap immediately and ignore remaining wheel events in this scroll.
3307          // See comment above for "remaining wheel events in this scroll" determination.
3308          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
3309          clearTimeout(timeout);
3310          timeout = undefined;
3311          if (recentWheelEvents.length >= 15) {
3312            recentWheelEvents.shift(); // only store the last N events
3313          }
3314
3315          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
3316          const firstEvent = recentWheelEvents[0];
3317          recentWheelEvents.push(newEvent);
3318          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
3319            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
3320            recentWheelEvents.splice(0);
3321          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
3322            // We're at the end of the deceleration of a momentum scroll, so there's no need
3323            // to wait for more events. Snap ASAP on the next tick.
3324            // Also, because there's some remaining momentum we'll bias the snap in the
3325            // direction of the ongoing scroll because it's better UX for the scroll to snap
3326            // in the same direction as the scroll instead of reversing to snap.  Therefore,
3327            // if it's already scrolled more than 20% in the current direction, keep going.
3328            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
3329            lastEventBeforeSnap = newEvent;
3330            recentWheelEvents.splice(0);
3331            timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
3332              if (swiper.destroyed || !swiper.params) return;
3333              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
3334            }, 0); // no delay; move on next tick
3335          }
3336
3337          if (!timeout) {
3338            // if we get here, then we haven't detected the end of a momentum scroll, so
3339            // we'll consider a scroll "complete" when there haven't been any wheel events
3340            // for 500ms.
3341            timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
3342              if (swiper.destroyed || !swiper.params) return;
3343              const snapToThreshold = 0.5;
3344              lastEventBeforeSnap = newEvent;
3345              recentWheelEvents.splice(0);
3346              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
3347            }, 500);
3348          }
3349        }
3350
3351        // Emit event
3352        if (!ignoreWheelEvents) emit('scroll', e);
3353
3354        // Stop autoplay
3355        if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();
3356        // Return page scroll on edge positions
3357        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {
3358          return true;
3359        }
3360      }
3361    }
3362    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
3363    return false;
3364  }
3365  function events(method) {
3366    let targetEl = swiper.el;
3367    if (swiper.params.mousewheel.eventsTarget !== 'container') {
3368      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
3369    }
3370    targetEl[method]('mouseenter', handleMouseEnter);
3371    targetEl[method]('mouseleave', handleMouseLeave);
3372    targetEl[method]('wheel', handle);
3373  }
3374  function enable() {
3375    if (swiper.params.cssMode) {
3376      swiper.wrapperEl.removeEventListener('wheel', handle);
3377      return true;
3378    }
3379    if (swiper.mousewheel.enabled) return false;
3380    events('addEventListener');
3381    swiper.mousewheel.enabled = true;
3382    return true;
3383  }
3384  function disable() {
3385    if (swiper.params.cssMode) {
3386      swiper.wrapperEl.addEventListener(event, handle);
3387      return true;
3388    }
3389    if (!swiper.mousewheel.enabled) return false;
3390    events('removeEventListener');
3391    swiper.mousewheel.enabled = false;
3392    return true;
3393  }
3394  on('init', () => {
3395    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
3396      disable();
3397    }
3398    if (swiper.params.mousewheel.enabled) enable();
3399  });
3400  on('destroy', () => {
3401    if (swiper.params.cssMode) {
3402      enable();
3403    }
3404    if (swiper.mousewheel.enabled) disable();
3405  });
3406  Object.assign(swiper.mousewheel, {
3407    enable,
3408    disable
3409  });
3410}
3411
3412
3413
3414
3415/***/ }),
3416
vendor: 2,868 bytes, lines 3417-3433
3417/***/ "./node_modules/swiper/modules/navigation.css":
3418/*!****************************************************!*\
3419  !*** ./node_modules/swiper/modules/navigation.css ***!
3420  \****************************************************/
3421/***/ (function(module, exports, __webpack_require__) {
3422
3423// Imports
3424var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
3425exports = ___CSS_LOADER_API_IMPORT___(false);
3426// Module
3427exports.push([module.id, ":root {\n  --swiper-navigation-size: 44px;\n  /*\n  --swiper-navigation-top-offset: 50%;\n  --swiper-navigation-sides-offset: 10px;\n  --swiper-navigation-color: var(--swiper-theme-color);\n  */\n}\n\n.swiper-button-prev,\n.swiper-button-next {\n  position: absolute;\n  top: var(--swiper-navigation-top-offset, 50%);\n  width: calc(var(--swiper-navigation-size) / 44 * 27);\n  height: var(--swiper-navigation-size);\n  margin-top: calc(0px - var(--swiper-navigation-size) / 2);\n  z-index: 10;\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n  opacity: 0.35;\n  cursor: auto;\n  pointer-events: none;\n}\n\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n  opacity: 0;\n  cursor: auto;\n  pointer-events: none;\n}\n\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n  display: none !important;\n}\n\n.swiper-button-prev svg,\n.swiper-button-next svg {\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  transform-origin: center;\n}\n\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n  transform: rotate(180deg);\n}\n\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n  left: var(--swiper-navigation-sides-offset, 10px);\n  right: auto;\n}\n\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n  right: var(--swiper-navigation-sides-offset, 10px);\n  left: auto;\n}\n\n.swiper-button-lock {\n  display: none;\n}\n\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n  font-family: swiper-icons;\n  font-size: var(--swiper-navigation-size);\n  text-transform: none !important;\n  letter-spacing: 0;\n  font-variant: initial;\n  line-height: 1;\n}\n\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n  content: \"prev\";\n}\n\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n  right: var(--swiper-navigation-sides-offset, 10px);\n  left: auto;\n}\n\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n  content: \"next\";\n}\n\n/* Navigation font end */", ""]);
3428// Exports
3429module.exports = exports;
3430
3431
3432/***/ }),
3433
vendor: 7,442 bytes, lines 3434-3650
3434/***/ "./node_modules/swiper/modules/navigation.mjs":
3435/*!****************************************************!*\
3436  !*** ./node_modules/swiper/modules/navigation.mjs ***!
3437  \****************************************************/
3438/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3439
3440"use strict";
3441__webpack_require__.r(__webpack_exports__);
3442/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3443/* harmony export */   "default": function() { return /* binding */ Navigation; }
3444/* harmony export */ });
3445/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs");
3446/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3447
3448
3449
3450function Navigation(_ref) {
3451  let {
3452    swiper,
3453    extendParams,
3454    on,
3455    emit
3456  } = _ref;
3457  extendParams({
3458    navigation: {
3459      nextEl: null,
3460      prevEl: null,
3461      hideOnClick: false,
3462      disabledClass: 'swiper-button-disabled',
3463      hiddenClass: 'swiper-button-hidden',
3464      lockClass: 'swiper-button-lock',
3465      navigationDisabledClass: 'swiper-navigation-disabled'
3466    }
3467  });
3468  swiper.navigation = {
3469    nextEl: null,
3470    prevEl: null
3471  };
3472  function getEl(el) {
3473    let res;
3474    if (el && typeof el === 'string' && swiper.isElement) {
3475      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
3476      if (res) return res;
3477    }
3478    if (el) {
3479      if (typeof el === 'string') res = [...document.querySelectorAll(el)];
3480      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
3481        res = swiper.el.querySelector(el);
3482      } else if (res && res.length === 1) {
3483        res = res[0];
3484      }
3485    }
3486    if (el && !res) return el;
3487    // if (Array.isArray(res) && res.length === 1) res = res[0];
3488    return res;
3489  }
3490  function toggleEl(el, disabled) {
3491    const params = swiper.params.navigation;
3492    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el);
3493    el.forEach(subEl => {
3494      if (subEl) {
3495        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));
3496        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;
3497        if (swiper.params.watchOverflow && swiper.enabled) {
3498          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
3499        }
3500      }
3501    });
3502  }
3503  function update() {
3504    // Update Navigation Buttons
3505    const {
3506      nextEl,
3507      prevEl
3508    } = swiper.navigation;
3509    if (swiper.params.loop) {
3510      toggleEl(prevEl, false);
3511      toggleEl(nextEl, false);
3512      return;
3513    }
3514    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
3515    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
3516  }
3517  function onPrevClick(e) {
3518    e.preventDefault();
3519    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
3520    swiper.slidePrev();
3521    emit('navigationPrev');
3522  }
3523  function onNextClick(e) {
3524    e.preventDefault();
3525    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
3526    swiper.slideNext();
3527    emit('navigationNext');
3528  }
3529  function init() {
3530    const params = swiper.params.navigation;
3531    swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
3532      nextEl: 'swiper-button-next',
3533      prevEl: 'swiper-button-prev'
3534    });
3535    if (!(params.nextEl || params.prevEl)) return;
3536    let nextEl = getEl(params.nextEl);
3537    let prevEl = getEl(params.prevEl);
3538    Object.assign(swiper.navigation, {
3539      nextEl,
3540      prevEl
3541    });
3542    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3543    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3544    const initButton = (el, dir) => {
3545      if (el) {
3546        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
3547      }
3548      if (!swiper.enabled && el) {
3549        el.classList.add(...params.lockClass.split(' '));
3550      }
3551    };
3552    nextEl.forEach(el => initButton(el, 'next'));
3553    prevEl.forEach(el => initButton(el, 'prev'));
3554  }
3555  function destroy() {
3556    let {
3557      nextEl,
3558      prevEl
3559    } = swiper.navigation;
3560    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3561    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3562    const destroyButton = (el, dir) => {
3563      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
3564      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));
3565    };
3566    nextEl.forEach(el => destroyButton(el, 'next'));
3567    prevEl.forEach(el => destroyButton(el, 'prev'));
3568  }
3569  on('init', () => {
3570    if (swiper.params.navigation.enabled === false) {
3571      // eslint-disable-next-line
3572      disable();
3573    } else {
3574      init();
3575      update();
3576    }
3577  });
3578  on('toEdge fromEdge lock unlock', () => {
3579    update();
3580  });
3581  on('destroy', () => {
3582    destroy();
3583  });
3584  on('enable disable', () => {
3585    let {
3586      nextEl,
3587      prevEl
3588    } = swiper.navigation;
3589    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3590    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3591    if (swiper.enabled) {
3592      update();
3593      return;
3594    }
3595    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));
3596  });
3597  on('click', (_s, e) => {
3598    let {
3599      nextEl,
3600      prevEl
3601    } = swiper.navigation;
3602    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3603    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3604    const targetEl = e.target;
3605    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);
3606    if (swiper.isElement && !targetIsButton) {
3607      const path = e.path || e.composedPath && e.composedPath();
3608      if (path) {
3609        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));
3610      }
3611    }
3612    if (swiper.params.navigation.hideOnClick && !targetIsButton) {
3613      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
3614      let isHidden;
3615      if (nextEl.length) {
3616        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
3617      } else if (prevEl.length) {
3618        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
3619      }
3620      if (isHidden === true) {
3621        emit('navigationShow');
3622      } else {
3623        emit('navigationHide');
3624      }
3625      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));
3626    }
3627  });
3628  const enable = () => {
3629    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));
3630    init();
3631    update();
3632  };
3633  const disable = () => {
3634    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));
3635    destroy();
3636  };
3637  Object.assign(swiper.navigation, {
3638    enable,
3639    disable,
3640    update,
3641    init,
3642    destroy
3643  });
3644}
3645
3646
3647
3648
3649/***/ }),
3650
vendor: 7,344 bytes, lines 3651-3667
3651/***/ "./node_modules/swiper/modules/pagination.css":
3652/*!****************************************************!*\
3653  !*** ./node_modules/swiper/modules/pagination.css ***!
3654  \****************************************************/
3655/***/ (function(module, exports, __webpack_require__) {
3656
3657// Imports
3658var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
3659exports = ___CSS_LOADER_API_IMPORT___(false);
3660// Module
3661exports.push([module.id, ":root {\n  /*\n  --swiper-pagination-color: var(--swiper-theme-color);\n  --swiper-pagination-left: auto;\n  --swiper-pagination-right: 8px;\n  --swiper-pagination-bottom: 8px;\n  --swiper-pagination-top: auto;\n  --swiper-pagination-fraction-color: inherit;\n  --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n  --swiper-pagination-progressbar-size: 4px;\n  --swiper-pagination-bullet-size: 8px;\n  --swiper-pagination-bullet-width: 8px;\n  --swiper-pagination-bullet-height: 8px;\n  --swiper-pagination-bullet-border-radius: 50%;\n  --swiper-pagination-bullet-inactive-color: #000;\n  --swiper-pagination-bullet-inactive-opacity: 0.2;\n  --swiper-pagination-bullet-opacity: 1;\n  --swiper-pagination-bullet-horizontal-gap: 4px;\n  --swiper-pagination-bullet-vertical-gap: 6px;\n  */\n}\n\n.swiper-pagination {\n  position: absolute;\n  text-align: center;\n  transition: 300ms opacity;\n  transform: translate3d(0, 0, 0);\n  z-index: 10;\n}\n\n.swiper-pagination.swiper-pagination-hidden {\n  opacity: 0;\n}\n\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n  display: none !important;\n}\n\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n  bottom: var(--swiper-pagination-bottom, 8px);\n  top: var(--swiper-pagination-top, auto);\n  left: 0;\n  width: 100%;\n}\n\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n  overflow: hidden;\n  font-size: 0;\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n  transform: scale(0.33);\n  position: relative;\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n  transform: scale(1);\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n  transform: scale(1);\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n  transform: scale(0.66);\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n  transform: scale(0.33);\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n  transform: scale(0.66);\n}\n\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n  transform: scale(0.33);\n}\n\n.swiper-pagination-bullet {\n  width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n  height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n  display: inline-block;\n  border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n  background: var(--swiper-pagination-bullet-inactive-color, #000);\n  opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\n\nbutton.swiper-pagination-bullet {\n  border: none;\n  margin: 0;\n  padding: 0;\n  box-shadow: none;\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n.swiper-pagination-clickable .swiper-pagination-bullet {\n  cursor: pointer;\n}\n\n.swiper-pagination-bullet:only-child {\n  display: none !important;\n}\n\n.swiper-pagination-bullet-active {\n  opacity: var(--swiper-pagination-bullet-opacity, 1);\n  background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n  right: var(--swiper-pagination-right, 8px);\n  left: var(--swiper-pagination-left, auto);\n  top: 50%;\n  transform: translate3d(0px, -50%, 0);\n}\n\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n  margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n  display: block;\n}\n\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n  top: 50%;\n  transform: translateY(-50%);\n  width: 8px;\n}\n\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n  display: inline-block;\n  transition: 200ms transform, 200ms top;\n}\n\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n  margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n  left: 50%;\n  transform: translateX(-50%);\n  white-space: nowrap;\n}\n\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n  transition: 200ms transform, 200ms left;\n}\n\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n  transition: 200ms transform, 200ms right;\n}\n\n/* Fraction */\n.swiper-pagination-fraction {\n  color: var(--swiper-pagination-fraction-color, inherit);\n}\n\n/* Progress */\n.swiper-pagination-progressbar {\n  background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n  position: absolute;\n}\n\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n  background: var(--swiper-pagination-color, var(--swiper-theme-color));\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  transform: scale(0);\n  transform-origin: left top;\n}\n\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n  transform-origin: right top;\n}\n\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n  width: 100%;\n  height: var(--swiper-pagination-progressbar-size, 4px);\n  left: 0;\n  top: 0;\n}\n\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n  width: var(--swiper-pagination-progressbar-size, 4px);\n  height: 100%;\n  left: 0;\n  top: 0;\n}\n\n.swiper-pagination-lock {\n  display: none;\n}", ""]);
3662// Exports
3663module.exports = exports;
3664
3665
3666/***/ }),
3667
vendor: 19,069 bytes, lines 3668-4145
3668/***/ "./node_modules/swiper/modules/pagination.mjs":
3669/*!****************************************************!*\
3670  !*** ./node_modules/swiper/modules/pagination.mjs ***!
3671  \****************************************************/
3672/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3673
3674"use strict";
3675__webpack_require__.r(__webpack_exports__);
3676/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3677/* harmony export */   "default": function() { return /* binding */ Pagination; }
3678/* harmony export */ });
3679/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs");
3680/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs");
3681/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3682
3683
3684
3685
3686function Pagination(_ref) {
3687  let {
3688    swiper,
3689    extendParams,
3690    on,
3691    emit
3692  } = _ref;
3693  const pfx = 'swiper-pagination';
3694  extendParams({
3695    pagination: {
3696      el: null,
3697      bulletElement: 'span',
3698      clickable: false,
3699      hideOnClick: false,
3700      renderBullet: null,
3701      renderProgressbar: null,
3702      renderFraction: null,
3703      renderCustom: null,
3704      progressbarOpposite: false,
3705      type: 'bullets',
3706      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
3707      dynamicBullets: false,
3708      dynamicMainBullets: 1,
3709      formatFractionCurrent: number => number,
3710      formatFractionTotal: number => number,
3711      bulletClass: `${pfx}-bullet`,
3712      bulletActiveClass: `${pfx}-bullet-active`,
3713      modifierClass: `${pfx}-`,
3714      currentClass: `${pfx}-current`,
3715      totalClass: `${pfx}-total`,
3716      hiddenClass: `${pfx}-hidden`,
3717      progressbarFillClass: `${pfx}-progressbar-fill`,
3718      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
3719      clickableClass: `${pfx}-clickable`,
3720      lockClass: `${pfx}-lock`,
3721      horizontalClass: `${pfx}-horizontal`,
3722      verticalClass: `${pfx}-vertical`,
3723      paginationDisabledClass: `${pfx}-disabled`
3724    }
3725  });
3726  swiper.pagination = {
3727    el: null,
3728    bullets: []
3729  };
3730  let bulletSize;
3731  let dynamicBulletIndex = 0;
3732  function isPaginationDisabled() {
3733    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
3734  }
3735  function setSideBullets(bulletEl, position) {
3736    const {
3737      bulletActiveClass
3738    } = swiper.params.pagination;
3739    if (!bulletEl) return;
3740    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
3741    if (bulletEl) {
3742      bulletEl.classList.add(`${bulletActiveClass}-${position}`);
3743      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
3744      if (bulletEl) {
3745        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
3746      }
3747    }
3748  }
3749  function getMoveDirection(prevIndex, nextIndex, length) {
3750    prevIndex = prevIndex % length;
3751    nextIndex = nextIndex % length;
3752    if (nextIndex === prevIndex + 1) {
3753      return 'next';
3754    } else if (nextIndex === prevIndex - 1) {
3755      return 'previous';
3756    }
3757    return;
3758  }
3759  function onBulletClick(e) {
3760    const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass));
3761    if (!bulletEl) {
3762      return;
3763    }
3764    e.preventDefault();
3765    const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) * swiper.params.slidesPerGroup;
3766    if (swiper.params.loop) {
3767      if (swiper.realIndex === index) return;
3768      const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);
3769      if (moveDirection === 'next') {
3770        swiper.slideNext();
3771      } else if (moveDirection === 'previous') {
3772        swiper.slidePrev();
3773      } else {
3774        swiper.slideToLoop(index);
3775      }
3776    } else {
3777      swiper.slideTo(index);
3778    }
3779  }
3780  function update() {
3781    // Render || Update Pagination bullets/items
3782    const rtl = swiper.rtl;
3783    const params = swiper.params.pagination;
3784    if (isPaginationDisabled()) return;
3785    let el = swiper.pagination.el;
3786    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3787    // Current/Total
3788    let current;
3789    let previousIndex;
3790    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
3791    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
3792    if (swiper.params.loop) {
3793      previousIndex = swiper.previousRealIndex || 0;
3794      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
3795    } else if (typeof swiper.snapIndex !== 'undefined') {
3796      current = swiper.snapIndex;
3797      previousIndex = swiper.previousSnapIndex;
3798    } else {
3799      previousIndex = swiper.previousIndex || 0;
3800      current = swiper.activeIndex || 0;
3801    }
3802    // Types
3803    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
3804      const bullets = swiper.pagination.bullets;
3805      let firstIndex;
3806      let lastIndex;
3807      let midIndex;
3808      if (params.dynamicBullets) {
3809        bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.f)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
3810        el.forEach(subEl => {
3811          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
3812        });
3813        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
3814          dynamicBulletIndex += current - (previousIndex || 0);
3815          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
3816            dynamicBulletIndex = params.dynamicMainBullets - 1;
3817          } else if (dynamicBulletIndex < 0) {
3818            dynamicBulletIndex = 0;
3819          }
3820        }
3821        firstIndex = Math.max(current - dynamicBulletIndex, 0);
3822        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
3823        midIndex = (lastIndex + firstIndex) / 2;
3824      }
3825      bullets.forEach(bulletEl => {
3826        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();
3827        bulletEl.classList.remove(...classesToRemove);
3828      });
3829      if (el.length > 1) {
3830        bullets.forEach(bullet => {
3831          const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullet);
3832          if (bulletIndex === current) {
3833            bullet.classList.add(...params.bulletActiveClass.split(' '));
3834          } else if (swiper.isElement) {
3835            bullet.setAttribute('part', 'bullet');
3836          }
3837          if (params.dynamicBullets) {
3838            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
3839              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));
3840            }
3841            if (bulletIndex === firstIndex) {
3842              setSideBullets(bullet, 'prev');
3843            }
3844            if (bulletIndex === lastIndex) {
3845              setSideBullets(bullet, 'next');
3846            }
3847          }
3848        });
3849      } else {
3850        const bullet = bullets[current];
3851        if (bullet) {
3852          bullet.classList.add(...params.bulletActiveClass.split(' '));
3853        }
3854        if (swiper.isElement) {
3855          bullets.forEach((bulletEl, bulletIndex) => {
3856            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');
3857          });
3858        }
3859        if (params.dynamicBullets) {
3860          const firstDisplayedBullet = bullets[firstIndex];
3861          const lastDisplayedBullet = bullets[lastIndex];
3862          for (let i = firstIndex; i <= lastIndex; i += 1) {
3863            if (bullets[i]) {
3864              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));
3865            }
3866          }
3867          setSideBullets(firstDisplayedBullet, 'prev');
3868          setSideBullets(lastDisplayedBullet, 'next');
3869        }
3870      }
3871      if (params.dynamicBullets) {
3872        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
3873        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
3874        const offsetProp = rtl ? 'right' : 'left';
3875        bullets.forEach(bullet => {
3876          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;
3877        });
3878      }
3879    }
3880    el.forEach((subEl, subElIndex) => {
3881      if (params.type === 'fraction') {
3882        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => {
3883          fractionEl.textContent = params.formatFractionCurrent(current + 1);
3884        });
3885        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => {
3886          totalEl.textContent = params.formatFractionTotal(total);
3887        });
3888      }
3889      if (params.type === 'progressbar') {
3890        let progressbarDirection;
3891        if (params.progressbarOpposite) {
3892          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
3893        } else {
3894          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
3895        }
3896        const scale = (current + 1) / total;
3897        let scaleX = 1;
3898        let scaleY = 1;
3899        if (progressbarDirection === 'horizontal') {
3900          scaleX = scale;
3901        } else {
3902          scaleY = scale;
3903        }
3904        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => {
3905          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
3906          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
3907        });
3908      }
3909      if (params.type === 'custom' && params.renderCustom) {
3910        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
3911        if (subElIndex === 0) emit('paginationRender', subEl);
3912      } else {
3913        if (subElIndex === 0) emit('paginationRender', subEl);
3914        emit('paginationUpdate', subEl);
3915      }
3916      if (swiper.params.watchOverflow && swiper.enabled) {
3917        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
3918      }
3919    });
3920  }
3921  function render() {
3922    // Render Container
3923    const params = swiper.params.pagination;
3924    if (isPaginationDisabled()) return;
3925    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;
3926    let el = swiper.pagination.el;
3927    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3928    let paginationHTML = '';
3929    if (params.type === 'bullets') {
3930      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
3931      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
3932        numberOfBullets = slidesLength;
3933      }
3934      for (let i = 0; i < numberOfBullets; i += 1) {
3935        if (params.renderBullet) {
3936          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
3937        } else {
3938          // prettier-ignore
3939          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`;
3940        }
3941      }
3942    }
3943    if (params.type === 'fraction') {
3944      if (params.renderFraction) {
3945        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
3946      } else {
3947        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
3948      }
3949    }
3950    if (params.type === 'progressbar') {
3951      if (params.renderProgressbar) {
3952        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
3953      } else {
3954        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
3955      }
3956    }
3957    swiper.pagination.bullets = [];
3958    el.forEach(subEl => {
3959      if (params.type !== 'custom') {
3960        subEl.innerHTML = paginationHTML || '';
3961      }
3962      if (params.type === 'bullets') {
3963        swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass)));
3964      }
3965    });
3966    if (params.type !== 'custom') {
3967      emit('paginationRender', el[0]);
3968    }
3969  }
3970  function init() {
3971    swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
3972      el: 'swiper-pagination'
3973    });
3974    const params = swiper.params.pagination;
3975    if (!params.el) return;
3976    let el;
3977    if (typeof params.el === 'string' && swiper.isElement) {
3978      el = swiper.el.querySelector(params.el);
3979    }
3980    if (!el && typeof params.el === 'string') {
3981      el = [...document.querySelectorAll(params.el)];
3982    }
3983    if (!el) {
3984      el = params.el;
3985    }
3986    if (!el || el.length === 0) return;
3987    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
3988      el = [...swiper.el.querySelectorAll(params.el)];
3989      // check if it belongs to another nested Swiper
3990      if (el.length > 1) {
3991        el = el.find(subEl => {
3992          if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.a)(subEl, '.swiper')[0] !== swiper.el) return false;
3993          return true;
3994        });
3995      }
3996    }
3997    if (Array.isArray(el) && el.length === 1) el = el[0];
3998    Object.assign(swiper.pagination, {
3999      el
4000    });
4001    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
4002    el.forEach(subEl => {
4003      if (params.type === 'bullets' && params.clickable) {
4004        subEl.classList.add(...(params.clickableClass || '').split(' '));
4005      }
4006      subEl.classList.add(params.modifierClass + params.type);
4007      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4008      if (params.type === 'bullets' && params.dynamicBullets) {
4009        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
4010        dynamicBulletIndex = 0;
4011        if (params.dynamicMainBullets < 1) {
4012          params.dynamicMainBullets = 1;
4013        }
4014      }
4015      if (params.type === 'progressbar' && params.progressbarOpposite) {
4016        subEl.classList.add(params.progressbarOppositeClass);
4017      }
4018      if (params.clickable) {
4019        subEl.addEventListener('click', onBulletClick);
4020      }
4021      if (!swiper.enabled) {
4022        subEl.classList.add(params.lockClass);
4023      }
4024    });
4025  }
4026  function destroy() {
4027    const params = swiper.params.pagination;
4028    if (isPaginationDisabled()) return;
4029    let el = swiper.pagination.el;
4030    if (el) {
4031      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
4032      el.forEach(subEl => {
4033        subEl.classList.remove(params.hiddenClass);
4034        subEl.classList.remove(params.modifierClass + params.type);
4035        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4036        if (params.clickable) {
4037          subEl.classList.remove(...(params.clickableClass || '').split(' '));
4038          subEl.removeEventListener('click', onBulletClick);
4039        }
4040      });
4041    }
4042    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
4043  }
4044  on('changeDirection', () => {
4045    if (!swiper.pagination || !swiper.pagination.el) return;
4046    const params = swiper.params.pagination;
4047    let {
4048      el
4049    } = swiper.pagination;
4050    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
4051    el.forEach(subEl => {
4052      subEl.classList.remove(params.horizontalClass, params.verticalClass);
4053      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4054    });
4055  });
4056  on('init', () => {
4057    if (swiper.params.pagination.enabled === false) {
4058      // eslint-disable-next-line
4059      disable();
4060    } else {
4061      init();
4062      render();
4063      update();
4064    }
4065  });
4066  on('activeIndexChange', () => {
4067    if (typeof swiper.snapIndex === 'undefined') {
4068      update();
4069    }
4070  });
4071  on('snapIndexChange', () => {
4072    update();
4073  });
4074  on('snapGridLengthChange', () => {
4075    render();
4076    update();
4077  });
4078  on('destroy', () => {
4079    destroy();
4080  });
4081  on('enable disable', () => {
4082    let {
4083      el
4084    } = swiper.pagination;
4085    if (el) {
4086      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
4087      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
4088    }
4089  });
4090  on('lock unlock', () => {
4091    update();
4092  });
4093  on('click', (_s, e) => {
4094    const targetEl = e.target;
4095    const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
4096    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
4097      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
4098      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
4099      if (isHidden === true) {
4100        emit('paginationShow');
4101      } else {
4102        emit('paginationHide');
4103      }
4104      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
4105    }
4106  });
4107  const enable = () => {
4108    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
4109    let {
4110      el
4111    } = swiper.pagination;
4112    if (el) {
4113      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
4114      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
4115    }
4116    init();
4117    render();
4118    update();
4119  };
4120  const disable = () => {
4121    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
4122    let {
4123      el
4124    } = swiper.pagination;
4125    if (el) {
4126      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
4127      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
4128    }
4129    destroy();
4130  };
4131  Object.assign(swiper.pagination, {
4132    enable,
4133    disable,
4134    render,
4135    update,
4136    init,
4137    destroy
4138  });
4139}
4140
4141
4142
4143
4144/***/ }),
4145
vendor: 4,718 bytes, lines 4146-4285
4146/***/ "./node_modules/swiper/modules/parallax.mjs":
4147/*!**************************************************!*\
4148  !*** ./node_modules/swiper/modules/parallax.mjs ***!
4149  \**************************************************/
4150/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4151
4152"use strict";
4153__webpack_require__.r(__webpack_exports__);
4154/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4155/* harmony export */   "default": function() { return /* binding */ Parallax; }
4156/* harmony export */ });
4157/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4158
4159
4160function Parallax(_ref) {
4161  let {
4162    swiper,
4163    extendParams,
4164    on
4165  } = _ref;
4166  extendParams({
4167    parallax: {
4168      enabled: false
4169    }
4170  });
4171  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';
4172  const setTransform = (el, progress) => {
4173    const {
4174      rtl
4175    } = swiper;
4176    const rtlFactor = rtl ? -1 : 1;
4177    const p = el.getAttribute('data-swiper-parallax') || '0';
4178    let x = el.getAttribute('data-swiper-parallax-x');
4179    let y = el.getAttribute('data-swiper-parallax-y');
4180    const scale = el.getAttribute('data-swiper-parallax-scale');
4181    const opacity = el.getAttribute('data-swiper-parallax-opacity');
4182    const rotate = el.getAttribute('data-swiper-parallax-rotate');
4183    if (x || y) {
4184      x = x || '0';
4185      y = y || '0';
4186    } else if (swiper.isHorizontal()) {
4187      x = p;
4188      y = '0';
4189    } else {
4190      y = p;
4191      x = '0';
4192    }
4193    if (x.indexOf('%') >= 0) {
4194      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
4195    } else {
4196      x = `${x * progress * rtlFactor}px`;
4197    }
4198    if (y.indexOf('%') >= 0) {
4199      y = `${parseInt(y, 10) * progress}%`;
4200    } else {
4201      y = `${y * progress}px`;
4202    }
4203    if (typeof opacity !== 'undefined' && opacity !== null) {
4204      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
4205      el.style.opacity = currentOpacity;
4206    }
4207    let transform = `translate3d(${x}, ${y}, 0px)`;
4208    if (typeof scale !== 'undefined' && scale !== null) {
4209      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
4210      transform += ` scale(${currentScale})`;
4211    }
4212    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {
4213      const currentRotate = rotate * progress * -1;
4214      transform += ` rotate(${currentRotate}deg)`;
4215    }
4216    el.style.transform = transform;
4217  };
4218  const setTranslate = () => {
4219    const {
4220      el,
4221      slides,
4222      progress,
4223      snapGrid,
4224      isElement
4225    } = swiper;
4226    const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector);
4227    if (swiper.isElement) {
4228      elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector));
4229    }
4230    elements.forEach(subEl => {
4231      setTransform(subEl, progress);
4232    });
4233    slides.forEach((slideEl, slideIndex) => {
4234      let slideProgress = slideEl.progress;
4235      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
4236        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
4237      }
4238      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
4239      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {
4240        setTransform(subEl, slideProgress);
4241      });
4242    });
4243  };
4244  const setTransition = function (duration) {
4245    if (duration === void 0) {
4246      duration = swiper.params.speed;
4247    }
4248    const {
4249      el,
4250      hostEl
4251    } = swiper;
4252    const elements = [...el.querySelectorAll(elementsSelector)];
4253    if (swiper.isElement) {
4254      elements.push(...hostEl.querySelectorAll(elementsSelector));
4255    }
4256    elements.forEach(parallaxEl => {
4257      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;
4258      if (duration === 0) parallaxDuration = 0;
4259      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;
4260    });
4261  };
4262  on('beforeInit', () => {
4263    if (!swiper.params.parallax.enabled) return;
4264    swiper.params.watchSlidesProgress = true;
4265    swiper.originalParams.watchSlidesProgress = true;
4266  });
4267  on('init', () => {
4268    if (!swiper.params.parallax.enabled) return;
4269    setTranslate();
4270  });
4271  on('setTranslate', () => {
4272    if (!swiper.params.parallax.enabled) return;
4273    setTranslate();
4274  });
4275  on('setTransition', (_swiper, duration) => {
4276    if (!swiper.params.parallax.enabled) return;
4277    setTransition(duration);
4278  });
4279}
4280
4281
4282
4283
4284/***/ }),
4285
vendor: 12,551 bytes, lines 4286-4670
4286/***/ "./node_modules/swiper/modules/scrollbar.mjs":
4287/*!***************************************************!*\
4288  !*** ./node_modules/swiper/modules/scrollbar.mjs ***!
4289  \***************************************************/
4290/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4291
4292"use strict";
4293__webpack_require__.r(__webpack_exports__);
4294/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4295/* harmony export */   "default": function() { return /* binding */ Scrollbar; }
4296/* harmony export */ });
4297/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
4298/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4299/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs");
4300/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs");
4301
4302
4303
4304
4305
4306function Scrollbar(_ref) {
4307  let {
4308    swiper,
4309    extendParams,
4310    on,
4311    emit
4312  } = _ref;
4313  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4314  let isTouched = false;
4315  let timeout = null;
4316  let dragTimeout = null;
4317  let dragStartPos;
4318  let dragSize;
4319  let trackSize;
4320  let divider;
4321  extendParams({
4322    scrollbar: {
4323      el: null,
4324      dragSize: 'auto',
4325      hide: false,
4326      draggable: false,
4327      snapOnRelease: true,
4328      lockClass: 'swiper-scrollbar-lock',
4329      dragClass: 'swiper-scrollbar-drag',
4330      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
4331      horizontalClass: `swiper-scrollbar-horizontal`,
4332      verticalClass: `swiper-scrollbar-vertical`
4333    }
4334  });
4335  swiper.scrollbar = {
4336    el: null,
4337    dragEl: null
4338  };
4339  function setTranslate() {
4340    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4341    const {
4342      scrollbar,
4343      rtlTranslate: rtl
4344    } = swiper;
4345    const {
4346      dragEl,
4347      el
4348    } = scrollbar;
4349    const params = swiper.params.scrollbar;
4350    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;
4351    let newSize = dragSize;
4352    let newPos = (trackSize - dragSize) * progress;
4353    if (rtl) {
4354      newPos = -newPos;
4355      if (newPos > 0) {
4356        newSize = dragSize - newPos;
4357        newPos = 0;
4358      } else if (-newPos + dragSize > trackSize) {
4359        newSize = trackSize + newPos;
4360      }
4361    } else if (newPos < 0) {
4362      newSize = dragSize + newPos;
4363      newPos = 0;
4364    } else if (newPos + dragSize > trackSize) {
4365      newSize = trackSize - newPos;
4366    }
4367    if (swiper.isHorizontal()) {
4368      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;
4369      dragEl.style.width = `${newSize}px`;
4370    } else {
4371      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;
4372      dragEl.style.height = `${newSize}px`;
4373    }
4374    if (params.hide) {
4375      clearTimeout(timeout);
4376      el.style.opacity = 1;
4377      timeout = setTimeout(() => {
4378        el.style.opacity = 0;
4379        el.style.transitionDuration = '400ms';
4380      }, 1000);
4381    }
4382  }
4383  function setTransition(duration) {
4384    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4385    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;
4386  }
4387  function updateSize() {
4388    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4389    const {
4390      scrollbar
4391    } = swiper;
4392    const {
4393      dragEl,
4394      el
4395    } = scrollbar;
4396    dragEl.style.width = '';
4397    dragEl.style.height = '';
4398    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;
4399    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
4400    if (swiper.params.scrollbar.dragSize === 'auto') {
4401      dragSize = trackSize * divider;
4402    } else {
4403      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
4404    }
4405    if (swiper.isHorizontal()) {
4406      dragEl.style.width = `${dragSize}px`;
4407    } else {
4408      dragEl.style.height = `${dragSize}px`;
4409    }
4410    if (divider >= 1) {
4411      el.style.display = 'none';
4412    } else {
4413      el.style.display = '';
4414    }
4415    if (swiper.params.scrollbar.hide) {
4416      el.style.opacity = 0;
4417    }
4418    if (swiper.params.watchOverflow && swiper.enabled) {
4419      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);
4420    }
4421  }
4422  function getPointerPosition(e) {
4423    return swiper.isHorizontal() ? e.clientX : e.clientY;
4424  }
4425  function setDragPosition(e) {
4426    const {
4427      scrollbar,
4428      rtlTranslate: rtl
4429    } = swiper;
4430    const {
4431      el
4432    } = scrollbar;
4433    let positionRatio;
4434    positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
4435    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
4436    if (rtl) {
4437      positionRatio = 1 - positionRatio;
4438    }
4439    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
4440    swiper.updateProgress(position);
4441    swiper.setTranslate(position);
4442    swiper.updateActiveIndex();
4443    swiper.updateSlidesClasses();
4444  }
4445  function onDragStart(e) {
4446    const params = swiper.params.scrollbar;
4447    const {
4448      scrollbar,
4449      wrapperEl
4450    } = swiper;
4451    const {
4452      el,
4453      dragEl
4454    } = scrollbar;
4455    isTouched = true;
4456    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
4457    e.preventDefault();
4458    e.stopPropagation();
4459    wrapperEl.style.transitionDuration = '100ms';
4460    dragEl.style.transitionDuration = '100ms';
4461    setDragPosition(e);
4462    clearTimeout(dragTimeout);
4463    el.style.transitionDuration = '0ms';
4464    if (params.hide) {
4465      el.style.opacity = 1;
4466    }
4467    if (swiper.params.cssMode) {
4468      swiper.wrapperEl.style['scroll-snap-type'] = 'none';
4469    }
4470    emit('scrollbarDragStart', e);
4471  }
4472  function onDragMove(e) {
4473    const {
4474      scrollbar,
4475      wrapperEl
4476    } = swiper;
4477    const {
4478      el,
4479      dragEl
4480    } = scrollbar;
4481    if (!isTouched) return;
4482    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;
4483    setDragPosition(e);
4484    wrapperEl.style.transitionDuration = '0ms';
4485    el.style.transitionDuration = '0ms';
4486    dragEl.style.transitionDuration = '0ms';
4487    emit('scrollbarDragMove', e);
4488  }
4489  function onDragEnd(e) {
4490    const params = swiper.params.scrollbar;
4491    const {
4492      scrollbar,
4493      wrapperEl
4494    } = swiper;
4495    const {
4496      el
4497    } = scrollbar;
4498    if (!isTouched) return;
4499    isTouched = false;
4500    if (swiper.params.cssMode) {
4501      swiper.wrapperEl.style['scroll-snap-type'] = '';
4502      wrapperEl.style.transitionDuration = '';
4503    }
4504    if (params.hide) {
4505      clearTimeout(dragTimeout);
4506      dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
4507        el.style.opacity = 0;
4508        el.style.transitionDuration = '400ms';
4509      }, 1000);
4510    }
4511    emit('scrollbarDragEnd', e);
4512    if (params.snapOnRelease) {
4513      swiper.slideToClosest();
4514    }
4515  }
4516  function events(method) {
4517    const {
4518      scrollbar,
4519      params
4520    } = swiper;
4521    const el = scrollbar.el;
4522    if (!el) return;
4523    const target = el;
4524    const activeListener = params.passiveListeners ? {
4525      passive: false,
4526      capture: false
4527    } : false;
4528    const passiveListener = params.passiveListeners ? {
4529      passive: true,
4530      capture: false
4531    } : false;
4532    if (!target) return;
4533    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
4534    target[eventMethod]('pointerdown', onDragStart, activeListener);
4535    document[eventMethod]('pointermove', onDragMove, activeListener);
4536    document[eventMethod]('pointerup', onDragEnd, passiveListener);
4537  }
4538  function enableDraggable() {
4539    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4540    events('on');
4541  }
4542  function disableDraggable() {
4543    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4544    events('off');
4545  }
4546  function init() {
4547    const {
4548      scrollbar,
4549      el: swiperEl
4550    } = swiper;
4551    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
4552      el: 'swiper-scrollbar'
4553    });
4554    const params = swiper.params.scrollbar;
4555    if (!params.el) return;
4556    let el;
4557    if (typeof params.el === 'string' && swiper.isElement) {
4558      el = swiper.el.querySelector(params.el);
4559    }
4560    if (!el && typeof params.el === 'string') {
4561      el = document.querySelectorAll(params.el);
4562      if (!el.length) return;
4563    } else if (!el) {
4564      el = params.el;
4565    }
4566    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {
4567      el = swiperEl.querySelector(params.el);
4568    }
4569    if (el.length > 0) el = el[0];
4570    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4571    let dragEl;
4572    if (el) {
4573      dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass));
4574      if (!dragEl) {
4575        dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass);
4576        el.append(dragEl);
4577      }
4578    }
4579    Object.assign(scrollbar, {
4580      el,
4581      dragEl
4582    });
4583    if (params.draggable) {
4584      enableDraggable();
4585    }
4586    if (el) {
4587      el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass));
4588    }
4589  }
4590  function destroy() {
4591    const params = swiper.params.scrollbar;
4592    const el = swiper.scrollbar.el;
4593    if (el) {
4594      el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));
4595    }
4596    disableDraggable();
4597  }
4598  on('changeDirection', () => {
4599    if (!swiper.scrollbar || !swiper.scrollbar.el) return;
4600    const params = swiper.params.scrollbar;
4601    let {
4602      el
4603    } = swiper.scrollbar;
4604    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el);
4605    el.forEach(subEl => {
4606      subEl.classList.remove(params.horizontalClass, params.verticalClass);
4607      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4608    });
4609  });
4610  on('init', () => {
4611    if (swiper.params.scrollbar.enabled === false) {
4612      // eslint-disable-next-line
4613      disable();
4614    } else {
4615      init();
4616      updateSize();
4617      setTranslate();
4618    }
4619  });
4620  on('update resize observerUpdate lock unlock changeDirection', () => {
4621    updateSize();
4622  });
4623  on('setTranslate', () => {
4624    setTranslate();
4625  });
4626  on('setTransition', (_s, duration) => {
4627    setTransition(duration);
4628  });
4629  on('enable disable', () => {
4630    const {
4631      el
4632    } = swiper.scrollbar;
4633    if (el) {
4634      el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass));
4635    }
4636  });
4637  on('destroy', () => {
4638    destroy();
4639  });
4640  const enable = () => {
4641    swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
4642    if (swiper.scrollbar.el) {
4643      swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
4644    }
4645    init();
4646    updateSize();
4647    setTranslate();
4648  };
4649  const disable = () => {
4650    swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
4651    if (swiper.scrollbar.el) {
4652      swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
4653    }
4654    destroy();
4655  };
4656  Object.assign(swiper.scrollbar, {
4657    enable,
4658    disable,
4659    updateSize,
4660    setTranslate,
4661    init,
4662    destroy
4663  });
4664}
4665
4666
4667
4668
4669/***/ }),
4670
vendor: 8,213 bytes, lines 4671-4884
4671/***/ "./node_modules/swiper/modules/thumbs.mjs":
4672/*!************************************************!*\
4673  !*** ./node_modules/swiper/modules/thumbs.mjs ***!
4674  \************************************************/
4675/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4676
4677"use strict";
4678__webpack_require__.r(__webpack_exports__);
4679/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4680/* harmony export */   "default": function() { return /* binding */ Thumb; }
4681/* harmony export */ });
4682/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
4683/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4684
4685
4686
4687function Thumb(_ref) {
4688  let {
4689    swiper,
4690    extendParams,
4691    on
4692  } = _ref;
4693  extendParams({
4694    thumbs: {
4695      swiper: null,
4696      multipleActiveThumbs: true,
4697      autoScrollOffset: 0,
4698      slideThumbActiveClass: 'swiper-slide-thumb-active',
4699      thumbsContainerClass: 'swiper-thumbs'
4700    }
4701  });
4702  let initialized = false;
4703  let swiperCreated = false;
4704  swiper.thumbs = {
4705    swiper: null
4706  };
4707  function onThumbClick() {
4708    const thumbsSwiper = swiper.thumbs.swiper;
4709    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4710    const clickedIndex = thumbsSwiper.clickedIndex;
4711    const clickedSlide = thumbsSwiper.clickedSlide;
4712    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;
4713    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
4714    let slideToIndex;
4715    if (thumbsSwiper.params.loop) {
4716      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
4717    } else {
4718      slideToIndex = clickedIndex;
4719    }
4720    if (swiper.params.loop) {
4721      swiper.slideToLoop(slideToIndex);
4722    } else {
4723      swiper.slideTo(slideToIndex);
4724    }
4725  }
4726  function init() {
4727    const {
4728      thumbs: thumbsParams
4729    } = swiper.params;
4730    if (initialized) return false;
4731    initialized = true;
4732    const SwiperClass = swiper.constructor;
4733    if (thumbsParams.swiper instanceof SwiperClass) {
4734      if (thumbsParams.swiper.destroyed) {
4735        initialized = false;
4736        return false;
4737      }
4738      swiper.thumbs.swiper = thumbsParams.swiper;
4739      Object.assign(swiper.thumbs.swiper.originalParams, {
4740        watchSlidesProgress: true,
4741        slideToClickedSlide: false
4742      });
4743      Object.assign(swiper.thumbs.swiper.params, {
4744        watchSlidesProgress: true,
4745        slideToClickedSlide: false
4746      });
4747      swiper.thumbs.swiper.update();
4748    } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.l)(thumbsParams.swiper)) {
4749      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
4750      Object.assign(thumbsSwiperParams, {
4751        watchSlidesProgress: true,
4752        slideToClickedSlide: false
4753      });
4754      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
4755      swiperCreated = true;
4756    }
4757    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);
4758    swiper.thumbs.swiper.on('tap', onThumbClick);
4759    return true;
4760  }
4761  function update(initial) {
4762    const thumbsSwiper = swiper.thumbs.swiper;
4763    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4764    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
4765
4766    // Activate thumbs
4767    let thumbsToActivate = 1;
4768    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
4769    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
4770      thumbsToActivate = swiper.params.slidesPerView;
4771    }
4772    if (!swiper.params.thumbs.multipleActiveThumbs) {
4773      thumbsToActivate = 1;
4774    }
4775    thumbsToActivate = Math.floor(thumbsToActivate);
4776    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));
4777    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
4778      for (let i = 0; i < thumbsToActivate; i += 1) {
4779        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => {
4780          slideEl.classList.add(thumbActiveClass);
4781        });
4782      }
4783    } else {
4784      for (let i = 0; i < thumbsToActivate; i += 1) {
4785        if (thumbsSwiper.slides[swiper.realIndex + i]) {
4786          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);
4787        }
4788      }
4789    }
4790    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
4791    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
4792    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
4793      const currentThumbsIndex = thumbsSwiper.activeIndex;
4794      let newThumbsIndex;
4795      let direction;
4796      if (thumbsSwiper.params.loop) {
4797        const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);
4798        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);
4799        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
4800      } else {
4801        newThumbsIndex = swiper.realIndex;
4802        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
4803      }
4804      if (useOffset) {
4805        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
4806      }
4807      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
4808        if (thumbsSwiper.params.centeredSlides) {
4809          if (newThumbsIndex > currentThumbsIndex) {
4810            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
4811          } else {
4812            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
4813          }
4814        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;
4815        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
4816      }
4817    }
4818  }
4819  on('beforeInit', () => {
4820    const {
4821      thumbs
4822    } = swiper.params;
4823    if (!thumbs || !thumbs.swiper) return;
4824    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {
4825      const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4826      const getThumbsElementAndInit = () => {
4827        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;
4828        if (thumbsElement && thumbsElement.swiper) {
4829          thumbs.swiper = thumbsElement.swiper;
4830          init();
4831          update(true);
4832        } else if (thumbsElement) {
4833          const eventName = `${swiper.params.eventsPrefix}init`;
4834          const onThumbsSwiper = e => {
4835            thumbs.swiper = e.detail[0];
4836            thumbsElement.removeEventListener(eventName, onThumbsSwiper);
4837            init();
4838            update(true);
4839            thumbs.swiper.update();
4840            swiper.update();
4841          };
4842          thumbsElement.addEventListener(eventName, onThumbsSwiper);
4843        }
4844        return thumbsElement;
4845      };
4846      const watchForThumbsToAppear = () => {
4847        if (swiper.destroyed) return;
4848        const thumbsElement = getThumbsElementAndInit();
4849        if (!thumbsElement) {
4850          requestAnimationFrame(watchForThumbsToAppear);
4851        }
4852      };
4853      requestAnimationFrame(watchForThumbsToAppear);
4854    } else {
4855      init();
4856      update(true);
4857    }
4858  });
4859  on('slideChange update resize observerUpdate', () => {
4860    update();
4861  });
4862  on('setTransition', (_s, duration) => {
4863    const thumbsSwiper = swiper.thumbs.swiper;
4864    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4865    thumbsSwiper.setTransition(duration);
4866  });
4867  on('beforeDestroy', () => {
4868    const thumbsSwiper = swiper.thumbs.swiper;
4869    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4870    if (swiperCreated) {
4871      thumbsSwiper.destroy();
4872    }
4873  });
4874  Object.assign(swiper.thumbs, {
4875    init,
4876    update
4877  });
4878}
4879
4880
4881
4882
4883/***/ }),
4884
vendor: 12,502 bytes, lines 4885-5250
4885/***/ "./node_modules/swiper/modules/virtual.mjs":
4886/*!*************************************************!*\
4887  !*** ./node_modules/swiper/modules/virtual.mjs ***!
4888  \*************************************************/
4889/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4890
4891"use strict";
4892__webpack_require__.r(__webpack_exports__);
4893/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4894/* harmony export */   "default": function() { return /* binding */ Virtual; }
4895/* harmony export */ });
4896/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
4897/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4898
4899
4900
4901function Virtual(_ref) {
4902  let {
4903    swiper,
4904    extendParams,
4905    on,
4906    emit
4907  } = _ref;
4908  extendParams({
4909    virtual: {
4910      enabled: false,
4911      slides: [],
4912      cache: true,
4913      renderSlide: null,
4914      renderExternal: null,
4915      renderExternalUpdate: true,
4916      addSlidesBefore: 0,
4917      addSlidesAfter: 0
4918    }
4919  });
4920  let cssModeTimeout;
4921  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4922  swiper.virtual = {
4923    cache: {},
4924    from: undefined,
4925    to: undefined,
4926    slides: [],
4927    offset: 0,
4928    slidesGrid: []
4929  };
4930  const tempDOM = document.createElement('div');
4931  function renderSlide(slide, index) {
4932    const params = swiper.params.virtual;
4933    if (params.cache && swiper.virtual.cache[index]) {
4934      return swiper.virtual.cache[index];
4935    }
4936    // eslint-disable-next-line
4937    let slideEl;
4938    if (params.renderSlide) {
4939      slideEl = params.renderSlide.call(swiper, slide, index);
4940      if (typeof slideEl === 'string') {
4941        tempDOM.innerHTML = slideEl;
4942        slideEl = tempDOM.children[0];
4943      }
4944    } else if (swiper.isElement) {
4945      slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide');
4946    } else {
4947      slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass);
4948    }
4949    slideEl.setAttribute('data-swiper-slide-index', index);
4950    if (!params.renderSlide) {
4951      slideEl.innerHTML = slide;
4952    }
4953    if (params.cache) {
4954      swiper.virtual.cache[index] = slideEl;
4955    }
4956    return slideEl;
4957  }
4958  function update(force, beforeInit, forceActiveIndex) {
4959    const {
4960      slidesPerView,
4961      slidesPerGroup,
4962      centeredSlides,
4963      loop: isLoop,
4964      initialSlide
4965    } = swiper.params;
4966    if (beforeInit && !isLoop && initialSlide > 0) {
4967      return;
4968    }
4969    const {
4970      addSlidesBefore,
4971      addSlidesAfter
4972    } = swiper.params.virtual;
4973    const {
4974      from: previousFrom,
4975      to: previousTo,
4976      slides,
4977      slidesGrid: previousSlidesGrid,
4978      offset: previousOffset
4979    } = swiper.virtual;
4980    if (!swiper.params.cssMode) {
4981      swiper.updateActiveIndex();
4982    }
4983    const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;
4984    let offsetProp;
4985    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
4986    let slidesAfter;
4987    let slidesBefore;
4988    if (centeredSlides) {
4989      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
4990      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
4991    } else {
4992      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
4993      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;
4994    }
4995    let from = activeIndex - slidesBefore;
4996    let to = activeIndex + slidesAfter;
4997    if (!isLoop) {
4998      from = Math.max(from, 0);
4999      to = Math.min(to, slides.length - 1);
5000    }
5001    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
5002    if (isLoop && activeIndex >= slidesBefore) {
5003      from -= slidesBefore;
5004      if (!centeredSlides) offset += swiper.slidesGrid[0];
5005    } else if (isLoop && activeIndex < slidesBefore) {
5006      from = -slidesBefore;
5007      if (centeredSlides) offset += swiper.slidesGrid[0];
5008    }
5009    Object.assign(swiper.virtual, {
5010      from,
5011      to,
5012      offset,
5013      slidesGrid: swiper.slidesGrid,
5014      slidesBefore,
5015      slidesAfter
5016    });
5017    function onRendered() {
5018      swiper.updateSlides();
5019      swiper.updateProgress();
5020      swiper.updateSlidesClasses();
5021      emit('virtualUpdate');
5022    }
5023    if (previousFrom === from && previousTo === to && !force) {
5024      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
5025        swiper.slides.forEach(slideEl => {
5026          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
5027        });
5028      }
5029      swiper.updateProgress();
5030      emit('virtualUpdate');
5031      return;
5032    }
5033    if (swiper.params.virtual.renderExternal) {
5034      swiper.params.virtual.renderExternal.call(swiper, {
5035        offset,
5036        from,
5037        to,
5038        slides: function getSlides() {
5039          const slidesToRender = [];
5040          for (let i = from; i <= to; i += 1) {
5041            slidesToRender.push(slides[i]);
5042          }
5043          return slidesToRender;
5044        }()
5045      });
5046      if (swiper.params.virtual.renderExternalUpdate) {
5047        onRendered();
5048      } else {
5049        emit('virtualUpdate');
5050      }
5051      return;
5052    }
5053    const prependIndexes = [];
5054    const appendIndexes = [];
5055    const getSlideIndex = index => {
5056      let slideIndex = index;
5057      if (index < 0) {
5058        slideIndex = slides.length + index;
5059      } else if (slideIndex >= slides.length) {
5060        // eslint-disable-next-line
5061        slideIndex = slideIndex - slides.length;
5062      }
5063      return slideIndex;
5064    };
5065    if (force) {
5066      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {
5067        slideEl.remove();
5068      });
5069    } else {
5070      for (let i = previousFrom; i <= previousTo; i += 1) {
5071        if (i < from || i > to) {
5072          const slideIndex = getSlideIndex(i);
5073          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => {
5074            slideEl.remove();
5075          });
5076        }
5077      }
5078    }
5079    const loopFrom = isLoop ? -slides.length : 0;
5080    const loopTo = isLoop ? slides.length * 2 : slides.length;
5081    for (let i = loopFrom; i < loopTo; i += 1) {
5082      if (i >= from && i <= to) {
5083        const slideIndex = getSlideIndex(i);
5084        if (typeof previousTo === 'undefined' || force) {
5085          appendIndexes.push(slideIndex);
5086        } else {
5087          if (i > previousTo) appendIndexes.push(slideIndex);
5088          if (i < previousFrom) prependIndexes.push(slideIndex);
5089        }
5090      }
5091    }
5092    appendIndexes.forEach(index => {
5093      swiper.slidesEl.append(renderSlide(slides[index], index));
5094    });
5095    if (isLoop) {
5096      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
5097        const index = prependIndexes[i];
5098        swiper.slidesEl.prepend(renderSlide(slides[index], index));
5099      }
5100    } else {
5101      prependIndexes.sort((a, b) => b - a);
5102      prependIndexes.forEach(index => {
5103        swiper.slidesEl.prepend(renderSlide(slides[index], index));
5104      });
5105    }
5106    (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {
5107      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
5108    });
5109    onRendered();
5110  }
5111  function appendSlide(slides) {
5112    if (typeof slides === 'object' && 'length' in slides) {
5113      for (let i = 0; i < slides.length; i += 1) {
5114        if (slides[i]) swiper.virtual.slides.push(slides[i]);
5115      }
5116    } else {
5117      swiper.virtual.slides.push(slides);
5118    }
5119    update(true);
5120  }
5121  function prependSlide(slides) {
5122    const activeIndex = swiper.activeIndex;
5123    let newActiveIndex = activeIndex + 1;
5124    let numberOfNewSlides = 1;
5125    if (Array.isArray(slides)) {
5126      for (let i = 0; i < slides.length; i += 1) {
5127        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
5128      }
5129      newActiveIndex = activeIndex + slides.length;
5130      numberOfNewSlides = slides.length;
5131    } else {
5132      swiper.virtual.slides.unshift(slides);
5133    }
5134    if (swiper.params.virtual.cache) {
5135      const cache = swiper.virtual.cache;
5136      const newCache = {};
5137      Object.keys(cache).forEach(cachedIndex => {
5138        const cachedEl = cache[cachedIndex];
5139        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');
5140        if (cachedElIndex) {
5141          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
5142        }
5143        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
5144      });
5145      swiper.virtual.cache = newCache;
5146    }
5147    update(true);
5148    swiper.slideTo(newActiveIndex, 0);
5149  }
5150  function removeSlide(slidesIndexes) {
5151    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
5152    let activeIndex = swiper.activeIndex;
5153    if (Array.isArray(slidesIndexes)) {
5154      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
5155        if (swiper.params.virtual.cache) {
5156          delete swiper.virtual.cache[slidesIndexes[i]];
5157          // shift cache indexes
5158          Object.keys(swiper.virtual.cache).forEach(key => {
5159            if (key > slidesIndexes) {
5160              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
5161              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
5162              delete swiper.virtual.cache[key];
5163            }
5164          });
5165        }
5166        swiper.virtual.slides.splice(slidesIndexes[i], 1);
5167        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
5168        activeIndex = Math.max(activeIndex, 0);
5169      }
5170    } else {
5171      if (swiper.params.virtual.cache) {
5172        delete swiper.virtual.cache[slidesIndexes];
5173        // shift cache indexes
5174        Object.keys(swiper.virtual.cache).forEach(key => {
5175          if (key > slidesIndexes) {
5176            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
5177            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
5178            delete swiper.virtual.cache[key];
5179          }
5180        });
5181      }
5182      swiper.virtual.slides.splice(slidesIndexes, 1);
5183      if (slidesIndexes < activeIndex) activeIndex -= 1;
5184      activeIndex = Math.max(activeIndex, 0);
5185    }
5186    update(true);
5187    swiper.slideTo(activeIndex, 0);
5188  }
5189  function removeAllSlides() {
5190    swiper.virtual.slides = [];
5191    if (swiper.params.virtual.cache) {
5192      swiper.virtual.cache = {};
5193    }
5194    update(true);
5195    swiper.slideTo(0, 0);
5196  }
5197  on('beforeInit', () => {
5198    if (!swiper.params.virtual.enabled) return;
5199    let domSlidesAssigned;
5200    if (typeof swiper.passedParams.virtual.slides === 'undefined') {
5201      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));
5202      if (slides && slides.length) {
5203        swiper.virtual.slides = [...slides];
5204        domSlidesAssigned = true;
5205        slides.forEach((slideEl, slideIndex) => {
5206          slideEl.setAttribute('data-swiper-slide-index', slideIndex);
5207          swiper.virtual.cache[slideIndex] = slideEl;
5208          slideEl.remove();
5209        });
5210      }
5211    }
5212    if (!domSlidesAssigned) {
5213      swiper.virtual.slides = swiper.params.virtual.slides;
5214    }
5215    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
5216    swiper.params.watchSlidesProgress = true;
5217    swiper.originalParams.watchSlidesProgress = true;
5218    update(false, true);
5219  });
5220  on('setTranslate', () => {
5221    if (!swiper.params.virtual.enabled) return;
5222    if (swiper.params.cssMode && !swiper._immediateVirtual) {
5223      clearTimeout(cssModeTimeout);
5224      cssModeTimeout = setTimeout(() => {
5225        update();
5226      }, 100);
5227    } else {
5228      update();
5229    }
5230  });
5231  on('init update resize', () => {
5232    if (!swiper.params.virtual.enabled) return;
5233    if (swiper.params.cssMode) {
5234      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
5235    }
5236  });
5237  Object.assign(swiper.virtual, {
5238    appendSlide,
5239    prependSlide,
5240    removeSlide,
5241    removeAllSlides,
5242    update
5243  });
5244}
5245
5246
5247
5248
5249/***/ }),
5250
vendor: 26,521 bytes, lines 5251-5968
5251/***/ "./node_modules/swiper/modules/zoom.mjs":
5252/*!**********************************************!*\
5253  !*** ./node_modules/swiper/modules/zoom.mjs ***!
5254  \**********************************************/
5255/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5256
5257"use strict";
5258__webpack_require__.r(__webpack_exports__);
5259/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5260/* harmony export */   "default": function() { return /* binding */ Zoom; }
5261/* harmony export */ });
5262/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
5263/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
5264
5265
5266
5267function Zoom(_ref) {
5268  let {
5269    swiper,
5270    extendParams,
5271    on,
5272    emit
5273  } = _ref;
5274  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
5275  extendParams({
5276    zoom: {
5277      enabled: false,
5278      limitToOriginalSize: false,
5279      maxRatio: 3,
5280      minRatio: 1,
5281      panOnMouseMove: false,
5282      toggle: true,
5283      containerClass: 'swiper-zoom-container',
5284      zoomedSlideClass: 'swiper-slide-zoomed'
5285    }
5286  });
5287  swiper.zoom = {
5288    enabled: false
5289  };
5290  let currentScale = 1;
5291  let isScaling = false;
5292  let isPanningWithMouse = false;
5293  let mousePanStart = {
5294    x: 0,
5295    y: 0
5296  };
5297  const mousePanSensitivity = -3; // Negative to invert pan direction
5298  let fakeGestureTouched;
5299  let fakeGestureMoved;
5300  const evCache = [];
5301  const gesture = {
5302    originX: 0,
5303    originY: 0,
5304    slideEl: undefined,
5305    slideWidth: undefined,
5306    slideHeight: undefined,
5307    imageEl: undefined,
5308    imageWrapEl: undefined,
5309    maxRatio: 3
5310  };
5311  const image = {
5312    isTouched: undefined,
5313    isMoved: undefined,
5314    currentX: undefined,
5315    currentY: undefined,
5316    minX: undefined,
5317    minY: undefined,
5318    maxX: undefined,
5319    maxY: undefined,
5320    width: undefined,
5321    height: undefined,
5322    startX: undefined,
5323    startY: undefined,
5324    touchesStart: {},
5325    touchesCurrent: {}
5326  };
5327  const velocity = {
5328    x: undefined,
5329    y: undefined,
5330    prevPositionX: undefined,
5331    prevPositionY: undefined,
5332    prevTime: undefined
5333  };
5334  let scale = 1;
5335  Object.defineProperty(swiper.zoom, 'scale', {
5336    get() {
5337      return scale;
5338    },
5339    set(value) {
5340      if (scale !== value) {
5341        const imageEl = gesture.imageEl;
5342        const slideEl = gesture.slideEl;
5343        emit('zoomChange', value, imageEl, slideEl);
5344      }
5345      scale = value;
5346    }
5347  });
5348  function getDistanceBetweenTouches() {
5349    if (evCache.length < 2) return 1;
5350    const x1 = evCache[0].pageX;
5351    const y1 = evCache[0].pageY;
5352    const x2 = evCache[1].pageX;
5353    const y2 = evCache[1].pageY;
5354    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
5355    return distance;
5356  }
5357  function getMaxRatio() {
5358    const params = swiper.params.zoom;
5359    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
5360    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {
5361      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;
5362      return Math.min(imageMaxRatio, maxRatio);
5363    }
5364    return maxRatio;
5365  }
5366  function getScaleOrigin() {
5367    if (evCache.length < 2) return {
5368      x: null,
5369      y: null
5370    };
5371    const box = gesture.imageEl.getBoundingClientRect();
5372    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];
5373  }
5374  function getSlideSelector() {
5375    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
5376  }
5377  function eventWithinSlide(e) {
5378    const slideSelector = getSlideSelector();
5379    if (e.target.matches(slideSelector)) return true;
5380    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;
5381    return false;
5382  }
5383  function eventWithinZoomContainer(e) {
5384    const selector = `.${swiper.params.zoom.containerClass}`;
5385    if (e.target.matches(selector)) return true;
5386    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
5387    return false;
5388  }
5389
5390  // Events
5391  function onGestureStart(e) {
5392    if (e.pointerType === 'mouse') {
5393      evCache.splice(0, evCache.length);
5394    }
5395    if (!eventWithinSlide(e)) return;
5396    const params = swiper.params.zoom;
5397    fakeGestureTouched = false;
5398    fakeGestureMoved = false;
5399    evCache.push(e);
5400    if (evCache.length < 2) {
5401      return;
5402    }
5403    fakeGestureTouched = true;
5404    gesture.scaleStart = getDistanceBetweenTouches();
5405    if (!gesture.slideEl) {
5406      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
5407      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
5408      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
5409      if (imageEl) {
5410        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
5411      }
5412      gesture.imageEl = imageEl;
5413      if (imageEl) {
5414        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0];
5415      } else {
5416        gesture.imageWrapEl = undefined;
5417      }
5418      if (!gesture.imageWrapEl) {
5419        gesture.imageEl = undefined;
5420        return;
5421      }
5422      gesture.maxRatio = getMaxRatio();
5423    }
5424    if (gesture.imageEl) {
5425      const [originX, originY] = getScaleOrigin();
5426      gesture.originX = originX;
5427      gesture.originY = originY;
5428      gesture.imageEl.style.transitionDuration = '0ms';
5429    }
5430    isScaling = true;
5431  }
5432  function onGestureChange(e) {
5433    if (!eventWithinSlide(e)) return;
5434    const params = swiper.params.zoom;
5435    const zoom = swiper.zoom;
5436    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
5437    if (pointerIndex >= 0) evCache[pointerIndex] = e;
5438    if (evCache.length < 2) {
5439      return;
5440    }
5441    fakeGestureMoved = true;
5442    gesture.scaleMove = getDistanceBetweenTouches();
5443    if (!gesture.imageEl) {
5444      return;
5445    }
5446    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
5447    if (zoom.scale > gesture.maxRatio) {
5448      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
5449    }
5450    if (zoom.scale < params.minRatio) {
5451      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
5452    }
5453    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
5454  }
5455  function onGestureEnd(e) {
5456    if (!eventWithinSlide(e)) return;
5457    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;
5458    const params = swiper.params.zoom;
5459    const zoom = swiper.zoom;
5460    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
5461    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
5462    if (!fakeGestureTouched || !fakeGestureMoved) {
5463      return;
5464    }
5465    fakeGestureTouched = false;
5466    fakeGestureMoved = false;
5467    if (!gesture.imageEl) return;
5468    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
5469    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;
5470    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
5471    currentScale = zoom.scale;
5472    isScaling = false;
5473    if (zoom.scale > 1 && gesture.slideEl) {
5474      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
5475    } else if (zoom.scale <= 1 && gesture.slideEl) {
5476      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
5477    }
5478    if (zoom.scale === 1) {
5479      gesture.originX = 0;
5480      gesture.originY = 0;
5481      gesture.slideEl = undefined;
5482    }
5483  }
5484  let allowTouchMoveTimeout;
5485  function allowTouchMove() {
5486    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;
5487  }
5488  function preventTouchMove() {
5489    clearTimeout(allowTouchMoveTimeout);
5490    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;
5491    allowTouchMoveTimeout = setTimeout(() => {
5492      if (swiper.destroyed) return;
5493      allowTouchMove();
5494    });
5495  }
5496  function onTouchStart(e) {
5497    const device = swiper.device;
5498    if (!gesture.imageEl) return;
5499    if (image.isTouched) return;
5500    if (device.android && e.cancelable) e.preventDefault();
5501    image.isTouched = true;
5502    const event = evCache.length > 0 ? evCache[0] : e;
5503    image.touchesStart.x = event.pageX;
5504    image.touchesStart.y = event.pageY;
5505  }
5506  function onTouchMove(e) {
5507    const isMouseEvent = e.pointerType === 'mouse';
5508    const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;
5509    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {
5510      return;
5511    }
5512    const zoom = swiper.zoom;
5513    if (!gesture.imageEl) {
5514      return;
5515    }
5516    if (!image.isTouched || !gesture.slideEl) {
5517      if (isMousePan) onMouseMove(e);
5518      return;
5519    }
5520    if (isMousePan) {
5521      onMouseMove(e);
5522      return;
5523    }
5524    if (!image.isMoved) {
5525      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
5526      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
5527      image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'x') || 0;
5528      image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'y') || 0;
5529      gesture.slideWidth = gesture.slideEl.offsetWidth;
5530      gesture.slideHeight = gesture.slideEl.offsetHeight;
5531      gesture.imageWrapEl.style.transitionDuration = '0ms';
5532    }
5533    // Define if we need image drag
5534    const scaledWidth = image.width * zoom.scale;
5535    const scaledHeight = image.height * zoom.scale;
5536    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
5537    image.maxX = -image.minX;
5538    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
5539    image.maxY = -image.minY;
5540    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
5541    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
5542    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
5543    if (touchesDiff > 5) {
5544      swiper.allowClick = false;
5545    }
5546    if (!image.isMoved && !isScaling) {
5547      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
5548        image.isTouched = false;
5549        allowTouchMove();
5550        return;
5551      }
5552      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
5553        image.isTouched = false;
5554        allowTouchMove();
5555        return;
5556      }
5557    }
5558    if (e.cancelable) {
5559      e.preventDefault();
5560    }
5561    e.stopPropagation();
5562    preventTouchMove();
5563    image.isMoved = true;
5564    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
5565    const {
5566      originX,
5567      originY
5568    } = gesture;
5569    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
5570    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
5571    if (image.currentX < image.minX) {
5572      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
5573    }
5574    if (image.currentX > image.maxX) {
5575      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
5576    }
5577    if (image.currentY < image.minY) {
5578      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
5579    }
5580    if (image.currentY > image.maxY) {
5581      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
5582    }
5583
5584    // Velocity
5585    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
5586    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
5587    if (!velocity.prevTime) velocity.prevTime = Date.now();
5588    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
5589    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
5590    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
5591    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
5592    velocity.prevPositionX = image.touchesCurrent.x;
5593    velocity.prevPositionY = image.touchesCurrent.y;
5594    velocity.prevTime = Date.now();
5595    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
5596  }
5597  function onTouchEnd() {
5598    const zoom = swiper.zoom;
5599    evCache.length = 0;
5600    if (!gesture.imageEl) return;
5601    if (!image.isTouched || !image.isMoved) {
5602      image.isTouched = false;
5603      image.isMoved = false;
5604      return;
5605    }
5606    image.isTouched = false;
5607    image.isMoved = false;
5608    let momentumDurationX = 300;
5609    let momentumDurationY = 300;
5610    const momentumDistanceX = velocity.x * momentumDurationX;
5611    const newPositionX = image.currentX + momentumDistanceX;
5612    const momentumDistanceY = velocity.y * momentumDurationY;
5613    const newPositionY = image.currentY + momentumDistanceY;
5614
5615    // Fix duration
5616    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
5617    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
5618    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
5619    image.currentX = newPositionX;
5620    image.currentY = newPositionY;
5621    // Define if we need image drag
5622    const scaledWidth = image.width * zoom.scale;
5623    const scaledHeight = image.height * zoom.scale;
5624    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
5625    image.maxX = -image.minX;
5626    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
5627    image.maxY = -image.minY;
5628    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
5629    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
5630    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;
5631    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
5632  }
5633  function onTransitionEnd() {
5634    const zoom = swiper.zoom;
5635    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
5636      if (gesture.imageEl) {
5637        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
5638      }
5639      if (gesture.imageWrapEl) {
5640        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
5641      }
5642      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);
5643      zoom.scale = 1;
5644      currentScale = 1;
5645      gesture.slideEl = undefined;
5646      gesture.imageEl = undefined;
5647      gesture.imageWrapEl = undefined;
5648      gesture.originX = 0;
5649      gesture.originY = 0;
5650    }
5651  }
5652  function onMouseMove(e) {
5653    // Only pan if zoomed in and mouse panning is enabled
5654    if (currentScale <= 1 || !gesture.imageWrapEl) return;
5655    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;
5656    const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;
5657    const matrix = new window.DOMMatrix(currentTransform);
5658    if (!isPanningWithMouse) {
5659      isPanningWithMouse = true;
5660      mousePanStart.x = e.clientX;
5661      mousePanStart.y = e.clientY;
5662      image.startX = matrix.e;
5663      image.startY = matrix.f;
5664      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
5665      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
5666      gesture.slideWidth = gesture.slideEl.offsetWidth;
5667      gesture.slideHeight = gesture.slideEl.offsetHeight;
5668      return;
5669    }
5670    const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;
5671    const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;
5672    const scaledWidth = image.width * currentScale;
5673    const scaledHeight = image.height * currentScale;
5674    const slideWidth = gesture.slideWidth;
5675    const slideHeight = gesture.slideHeight;
5676    const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
5677    const maxX = -minX;
5678    const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
5679    const maxY = -minY;
5680    const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);
5681    const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);
5682    gesture.imageWrapEl.style.transitionDuration = '0ms';
5683    gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;
5684    mousePanStart.x = e.clientX;
5685    mousePanStart.y = e.clientY;
5686    image.startX = newX;
5687    image.startY = newY;
5688    image.currentX = newX;
5689    image.currentY = newY;
5690  }
5691  function zoomIn(e) {
5692    const zoom = swiper.zoom;
5693    const params = swiper.params.zoom;
5694    if (!gesture.slideEl) {
5695      if (e && e.target) {
5696        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
5697      }
5698      if (!gesture.slideEl) {
5699        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5700          gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
5701        } else {
5702          gesture.slideEl = swiper.slides[swiper.activeIndex];
5703        }
5704      }
5705      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
5706      if (imageEl) {
5707        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
5708      }
5709      gesture.imageEl = imageEl;
5710      if (imageEl) {
5711        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0];
5712      } else {
5713        gesture.imageWrapEl = undefined;
5714      }
5715    }
5716    if (!gesture.imageEl || !gesture.imageWrapEl) return;
5717    if (swiper.params.cssMode) {
5718      swiper.wrapperEl.style.overflow = 'hidden';
5719      swiper.wrapperEl.style.touchAction = 'none';
5720    }
5721    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
5722    let touchX;
5723    let touchY;
5724    let offsetX;
5725    let offsetY;
5726    let diffX;
5727    let diffY;
5728    let translateX;
5729    let translateY;
5730    let imageWidth;
5731    let imageHeight;
5732    let scaledWidth;
5733    let scaledHeight;
5734    let translateMinX;
5735    let translateMinY;
5736    let translateMaxX;
5737    let translateMaxY;
5738    let slideWidth;
5739    let slideHeight;
5740    if (typeof image.touchesStart.x === 'undefined' && e) {
5741      touchX = e.pageX;
5742      touchY = e.pageY;
5743    } else {
5744      touchX = image.touchesStart.x;
5745      touchY = image.touchesStart.y;
5746    }
5747    const prevScale = currentScale;
5748    const forceZoomRatio = typeof e === 'number' ? e : null;
5749    if (currentScale === 1 && forceZoomRatio) {
5750      touchX = undefined;
5751      touchY = undefined;
5752      image.touchesStart.x = undefined;
5753      image.touchesStart.y = undefined;
5754    }
5755    const maxRatio = getMaxRatio();
5756    zoom.scale = forceZoomRatio || maxRatio;
5757    currentScale = forceZoomRatio || maxRatio;
5758    if (e && !(currentScale === 1 && forceZoomRatio)) {
5759      slideWidth = gesture.slideEl.offsetWidth;
5760      slideHeight = gesture.slideEl.offsetHeight;
5761      offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).left + window.scrollX;
5762      offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).top + window.scrollY;
5763      diffX = offsetX + slideWidth / 2 - touchX;
5764      diffY = offsetY + slideHeight / 2 - touchY;
5765      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
5766      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
5767      scaledWidth = imageWidth * zoom.scale;
5768      scaledHeight = imageHeight * zoom.scale;
5769      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
5770      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
5771      translateMaxX = -translateMinX;
5772      translateMaxY = -translateMinY;
5773      if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') {
5774        translateX = image.currentX * zoom.scale / prevScale;
5775        translateY = image.currentY * zoom.scale / prevScale;
5776      } else {
5777        translateX = diffX * zoom.scale;
5778        translateY = diffY * zoom.scale;
5779      }
5780      if (translateX < translateMinX) {
5781        translateX = translateMinX;
5782      }
5783      if (translateX > translateMaxX) {
5784        translateX = translateMaxX;
5785      }
5786      if (translateY < translateMinY) {
5787        translateY = translateMinY;
5788      }
5789      if (translateY > translateMaxY) {
5790        translateY = translateMaxY;
5791      }
5792    } else {
5793      translateX = 0;
5794      translateY = 0;
5795    }
5796    if (forceZoomRatio && zoom.scale === 1) {
5797      gesture.originX = 0;
5798      gesture.originY = 0;
5799    }
5800    image.currentX = translateX;
5801    image.currentY = translateY;
5802    gesture.imageWrapEl.style.transitionDuration = '300ms';
5803    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;
5804    gesture.imageEl.style.transitionDuration = '300ms';
5805    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
5806  }
5807  function zoomOut() {
5808    const zoom = swiper.zoom;
5809    const params = swiper.params.zoom;
5810    if (!gesture.slideEl) {
5811      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5812        gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
5813      } else {
5814        gesture.slideEl = swiper.slides[swiper.activeIndex];
5815      }
5816      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
5817      if (imageEl) {
5818        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
5819      }
5820      gesture.imageEl = imageEl;
5821      if (imageEl) {
5822        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0];
5823      } else {
5824        gesture.imageWrapEl = undefined;
5825      }
5826    }
5827    if (!gesture.imageEl || !gesture.imageWrapEl) return;
5828    if (swiper.params.cssMode) {
5829      swiper.wrapperEl.style.overflow = '';
5830      swiper.wrapperEl.style.touchAction = '';
5831    }
5832    zoom.scale = 1;
5833    currentScale = 1;
5834    image.currentX = undefined;
5835    image.currentY = undefined;
5836    image.touchesStart.x = undefined;
5837    image.touchesStart.y = undefined;
5838    gesture.imageWrapEl.style.transitionDuration = '300ms';
5839    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
5840    gesture.imageEl.style.transitionDuration = '300ms';
5841    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
5842    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
5843    gesture.slideEl = undefined;
5844    gesture.originX = 0;
5845    gesture.originY = 0;
5846    if (swiper.params.zoom.panOnMouseMove) {
5847      mousePanStart = {
5848        x: 0,
5849        y: 0
5850      };
5851      if (isPanningWithMouse) {
5852        isPanningWithMouse = false;
5853        image.startX = 0;
5854        image.startY = 0;
5855      }
5856    }
5857  }
5858
5859  // Toggle Zoom
5860  function zoomToggle(e) {
5861    const zoom = swiper.zoom;
5862    if (zoom.scale && zoom.scale !== 1) {
5863      // Zoom Out
5864      zoomOut();
5865    } else {
5866      // Zoom In
5867      zoomIn(e);
5868    }
5869  }
5870  function getListeners() {
5871    const passiveListener = swiper.params.passiveListeners ? {
5872      passive: true,
5873      capture: false
5874    } : false;
5875    const activeListenerWithCapture = swiper.params.passiveListeners ? {
5876      passive: false,
5877      capture: true
5878    } : true;
5879    return {
5880      passiveListener,
5881      activeListenerWithCapture
5882    };
5883  }
5884
5885  // Attach/Detach Events
5886  function enable() {
5887    const zoom = swiper.zoom;
5888    if (zoom.enabled) return;
5889    zoom.enabled = true;
5890    const {
5891      passiveListener,
5892      activeListenerWithCapture
5893    } = getListeners();
5894
5895    // Scale image
5896    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);
5897    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);
5898    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
5899      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
5900    });
5901
5902    // Move image
5903    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);
5904  }
5905  function disable() {
5906    const zoom = swiper.zoom;
5907    if (!zoom.enabled) return;
5908    zoom.enabled = false;
5909    const {
5910      passiveListener,
5911      activeListenerWithCapture
5912    } = getListeners();
5913
5914    // Scale image
5915    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);
5916    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);
5917    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
5918      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
5919    });
5920
5921    // Move image
5922    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);
5923  }
5924  on('init', () => {
5925    if (swiper.params.zoom.enabled) {
5926      enable();
5927    }
5928  });
5929  on('destroy', () => {
5930    disable();
5931  });
5932  on('touchStart', (_s, e) => {
5933    if (!swiper.zoom.enabled) return;
5934    onTouchStart(e);
5935  });
5936  on('touchEnd', (_s, e) => {
5937    if (!swiper.zoom.enabled) return;
5938    onTouchEnd();
5939  });
5940  on('doubleTap', (_s, e) => {
5941    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
5942      zoomToggle(e);
5943    }
5944  });
5945  on('transitionEnd', () => {
5946    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
5947      onTransitionEnd();
5948    }
5949  });
5950  on('slideChange', () => {
5951    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
5952      onTransitionEnd();
5953    }
5954  });
5955  Object.assign(swiper.zoom, {
5956    enable,
5957    disable,
5958    in: zoomIn,
5959    out: zoomOut,
5960    toggle: zoomToggle
5961  });
5962}
5963
5964
5965
5966
5967/***/ }),
5968
vendor: 800 bytes, lines 5969-5992
5969/***/ "./node_modules/swiper/shared/classes-to-selector.mjs":
5970/*!************************************************************!*\
5971  !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***!
5972  \************************************************************/
5973/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5974
5975"use strict";
5976__webpack_require__.r(__webpack_exports__);
5977/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5978/* harmony export */   c: function() { return /* binding */ classesToSelector; }
5979/* harmony export */ });
5980function classesToSelector(classes) {
5981  if (classes === void 0) {
5982    classes = '';
5983  }
5984  return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
5985  .replace(/ /g, '.')}`;
5986}
5987
5988
5989
5990
5991/***/ }),
5992
vendor: 1,439 bytes, lines 5993-6029
5993/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs":
5994/*!**********************************************************************!*\
5995  !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***!
5996  \**********************************************************************/
5997/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5998
5999"use strict";
6000__webpack_require__.r(__webpack_exports__);
6001/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6002/* harmony export */   c: function() { return /* binding */ createElementIfNotDefined; }
6003/* harmony export */ });
6004/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6005
6006
6007function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
6008  if (swiper.params.createElements) {
6009    Object.keys(checkProps).forEach(key => {
6010      if (!params[key] && params.auto === true) {
6011        let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0];
6012        if (!element) {
6013          element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]);
6014          element.className = checkProps[key];
6015          swiper.el.append(element);
6016        }
6017        params[key] = element;
6018        originalParams[key] = element;
6019      }
6020    });
6021  }
6022  return params;
6023}
6024
6025
6026
6027
6028/***/ }),
6029
vendor: 1,235 bytes, lines 6030-6059
6030/***/ "./node_modules/swiper/shared/create-shadow.mjs":
6031/*!******************************************************!*\
6032  !*** ./node_modules/swiper/shared/create-shadow.mjs ***!
6033  \******************************************************/
6034/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6035
6036"use strict";
6037__webpack_require__.r(__webpack_exports__);
6038/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6039/* harmony export */   c: function() { return /* binding */ createShadow; }
6040/* harmony export */ });
6041/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6042
6043
6044function createShadow(suffix, slideEl, side) {
6045  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;
6046  const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl);
6047  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);
6048  if (!shadowEl) {
6049    shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' '));
6050    shadowContainer.append(shadowEl);
6051  }
6052  return shadowEl;
6053}
6054
6055
6056
6057
6058/***/ }),
6059
vendor: 2,358 bytes, lines 6060-6132
6060/***/ "./node_modules/swiper/shared/effect-init.mjs":
6061/*!****************************************************!*\
6062  !*** ./node_modules/swiper/shared/effect-init.mjs ***!
6063  \****************************************************/
6064/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6065
6066"use strict";
6067__webpack_require__.r(__webpack_exports__);
6068/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6069/* harmony export */   e: function() { return /* binding */ effectInit; }
6070/* harmony export */ });
6071function effectInit(params) {
6072  const {
6073    effect,
6074    swiper,
6075    on,
6076    setTranslate,
6077    setTransition,
6078    overwriteParams,
6079    perspective,
6080    recreateShadows,
6081    getEffectParams
6082  } = params;
6083  on('beforeInit', () => {
6084    if (swiper.params.effect !== effect) return;
6085    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
6086    if (perspective && perspective()) {
6087      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
6088    }
6089    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
6090    Object.assign(swiper.params, overwriteParamsResult);
6091    Object.assign(swiper.originalParams, overwriteParamsResult);
6092  });
6093  on('setTranslate', () => {
6094    if (swiper.params.effect !== effect) return;
6095    setTranslate();
6096  });
6097  on('setTransition', (_s, duration) => {
6098    if (swiper.params.effect !== effect) return;
6099    setTransition(duration);
6100  });
6101  on('transitionEnd', () => {
6102    if (swiper.params.effect !== effect) return;
6103    if (recreateShadows) {
6104      if (!getEffectParams || !getEffectParams().slideShadows) return;
6105      // remove shadows
6106      swiper.slides.forEach(slideEl => {
6107        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());
6108      });
6109      // create new one
6110      recreateShadows();
6111    }
6112  });
6113  let requireUpdateOnVirtual;
6114  on('virtualUpdate', () => {
6115    if (swiper.params.effect !== effect) return;
6116    if (!swiper.slides.length) {
6117      requireUpdateOnVirtual = true;
6118    }
6119    requestAnimationFrame(() => {
6120      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
6121        setTranslate();
6122        requireUpdateOnVirtual = false;
6123      }
6124    });
6125  });
6126}
6127
6128
6129
6130
6131/***/ }),
6132
vendor: 1,028 bytes, lines 6133-6160
6133/***/ "./node_modules/swiper/shared/effect-target.mjs":
6134/*!******************************************************!*\
6135  !*** ./node_modules/swiper/shared/effect-target.mjs ***!
6136  \******************************************************/
6137/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6138
6139"use strict";
6140__webpack_require__.r(__webpack_exports__);
6141/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6142/* harmony export */   e: function() { return /* binding */ effectTarget; }
6143/* harmony export */ });
6144/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6145
6146
6147function effectTarget(effectParams, slideEl) {
6148  const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl);
6149  if (transformEl !== slideEl) {
6150    transformEl.style.backfaceVisibility = 'hidden';
6151    transformEl.style['-webkit-backface-visibility'] = 'hidden';
6152  }
6153  return transformEl;
6154}
6155
6156
6157
6158
6159/***/ }),
6160
vendor: 2,131 bytes, lines 6161-6224
6161/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs":
6162/*!**********************************************************************!*\
6163  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***!
6164  \**********************************************************************/
6165/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6166
6167"use strict";
6168__webpack_require__.r(__webpack_exports__);
6169/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6170/* harmony export */   e: function() { return /* binding */ effectVirtualTransitionEnd; }
6171/* harmony export */ });
6172/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6173
6174
6175function effectVirtualTransitionEnd(_ref) {
6176  let {
6177    swiper,
6178    duration,
6179    transformElements,
6180    allSlides
6181  } = _ref;
6182  const {
6183    activeIndex
6184  } = swiper;
6185  const getSlide = el => {
6186    if (!el.parentElement) {
6187      // assume shadow root
6188      const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);
6189      return slide;
6190    }
6191    return el.parentElement;
6192  };
6193  if (swiper.params.virtualTranslate && duration !== 0) {
6194    let eventTriggered = false;
6195    let transitionEndTarget;
6196    if (allSlides) {
6197      transitionEndTarget = transformElements;
6198    } else {
6199      transitionEndTarget = transformElements.filter(transformEl => {
6200        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;
6201        return swiper.getSlideIndex(el) === activeIndex;
6202      });
6203    }
6204    transitionEndTarget.forEach(el => {
6205      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(el, () => {
6206        if (eventTriggered) return;
6207        if (!swiper || swiper.destroyed) return;
6208        eventTriggered = true;
6209        swiper.animating = false;
6210        const evt = new window.CustomEvent('transitionend', {
6211          bubbles: true,
6212          cancelable: true
6213        });
6214        swiper.wrapperEl.dispatchEvent(evt);
6215      });
6216    });
6217  }
6218}
6219
6220
6221
6222
6223/***/ }),
6224
vendor: 3,472 bytes, lines 6225-6386
6225/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs":
6226/*!*******************************************************!*\
6227  !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***!
6228  \*******************************************************/
6229/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6230
6231"use strict";
6232__webpack_require__.r(__webpack_exports__);
6233/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6234/* harmony export */   a: function() { return /* binding */ getWindow; },
6235/* harmony export */   g: function() { return /* binding */ getDocument; }
6236/* harmony export */ });
6237/**
6238 * SSR Window 5.0.0
6239 * Better handling for window object in SSR environment
6240 * https://github.com/nolimits4web/ssr-window
6241 *
6242 * Copyright 2025, Vladimir Kharlampidi
6243 *
6244 * Licensed under MIT
6245 *
6246 * Released on: February 12, 2025
6247 */
6248/* eslint-disable no-param-reassign */
6249function isObject(obj) {
6250  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
6251}
6252function extend(target, src) {
6253  if (target === void 0) {
6254    target = {};
6255  }
6256  if (src === void 0) {
6257    src = {};
6258  }
6259  const noExtend = ['__proto__', 'constructor', 'prototype'];
6260  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {
6261    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
6262      extend(target[key], src[key]);
6263    }
6264  });
6265}
6266const ssrDocument = {
6267  body: {},
6268  addEventListener() {},
6269  removeEventListener() {},
6270  activeElement: {
6271    blur() {},
6272    nodeName: ''
6273  },
6274  querySelector() {
6275    return null;
6276  },
6277  querySelectorAll() {
6278    return [];
6279  },
6280  getElementById() {
6281    return null;
6282  },
6283  createEvent() {
6284    return {
6285      initEvent() {}
6286    };
6287  },
6288  createElement() {
6289    return {
6290      children: [],
6291      childNodes: [],
6292      style: {},
6293      setAttribute() {},
6294      getElementsByTagName() {
6295        return [];
6296      }
6297    };
6298  },
6299  createElementNS() {
6300    return {};
6301  },
6302  importNode() {
6303    return null;
6304  },
6305  location: {
6306    hash: '',
6307    host: '',
6308    hostname: '',
6309    href: '',
6310    origin: '',
6311    pathname: '',
6312    protocol: '',
6313    search: ''
6314  }
6315};
6316function getDocument() {
6317  const doc = typeof document !== 'undefined' ? document : {};
6318  extend(doc, ssrDocument);
6319  return doc;
6320}
6321const ssrWindow = {
6322  document: ssrDocument,
6323  navigator: {
6324    userAgent: ''
6325  },
6326  location: {
6327    hash: '',
6328    host: '',
6329    hostname: '',
6330    href: '',
6331    origin: '',
6332    pathname: '',
6333    protocol: '',
6334    search: ''
6335  },
6336  history: {
6337    replaceState() {},
6338    pushState() {},
6339    go() {},
6340    back() {}
6341  },
6342  CustomEvent: function CustomEvent() {
6343    return this;
6344  },
6345  addEventListener() {},
6346  removeEventListener() {},
6347  getComputedStyle() {
6348    return {
6349      getPropertyValue() {
6350        return '';
6351      }
6352    };
6353  },
6354  Image() {},
6355  Date() {},
6356  screen: {},
6357  setTimeout() {},
6358  clearTimeout() {},
6359  matchMedia() {
6360    return {};
6361  },
6362  requestAnimationFrame(callback) {
6363    if (typeof setTimeout === 'undefined') {
6364      callback();
6365      return null;
6366    }
6367    return setTimeout(callback, 0);
6368  },
6369  cancelAnimationFrame(id) {
6370    if (typeof setTimeout === 'undefined') {
6371      return;
6372    }
6373    clearTimeout(id);
6374  }
6375};
6376function getWindow() {
6377  const win = typeof window !== 'undefined' ? window : {};
6378  extend(win, ssrWindow);
6379  return win;
6380}
6381
6382
6383
6384
6385/***/ }),
6386
vendor: 134,512 bytes, lines 6387-10342
6387/***/ "./node_modules/swiper/shared/swiper-core.mjs":
6388/*!****************************************************!*\
6389  !*** ./node_modules/swiper/shared/swiper-core.mjs ***!
6390  \****************************************************/
6391/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6392
6393"use strict";
6394__webpack_require__.r(__webpack_exports__);
6395/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6396/* harmony export */   S: function() { return /* binding */ Swiper; },
6397/* harmony export */   d: function() { return /* binding */ defaults; }
6398/* harmony export */ });
6399/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
6400/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6401
6402
6403
6404let support;
6405function calcSupport() {
6406  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6407  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
6408  return {
6409    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,
6410    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
6411  };
6412}
6413function getSupport() {
6414  if (!support) {
6415    support = calcSupport();
6416  }
6417  return support;
6418}
6419
6420let deviceCached;
6421function calcDevice(_temp) {
6422  let {
6423    userAgent
6424  } = _temp === void 0 ? {} : _temp;
6425  const support = getSupport();
6426  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6427  const platform = window.navigator.platform;
6428  const ua = userAgent || window.navigator.userAgent;
6429  const device = {
6430    ios: false,
6431    android: false
6432  };
6433  const screenWidth = window.screen.width;
6434  const screenHeight = window.screen.height;
6435  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
6436  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
6437  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
6438  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
6439  const windows = platform === 'Win32';
6440  let macos = platform === 'MacIntel';
6441
6442  // iPadOs 13 fix
6443  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
6444  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
6445    ipad = ua.match(/(Version)\/([\d.]+)/);
6446    if (!ipad) ipad = [0, 1, '13_0_0'];
6447    macos = false;
6448  }
6449
6450  // Android
6451  if (android && !windows) {
6452    device.os = 'android';
6453    device.android = true;
6454  }
6455  if (ipad || iphone || ipod) {
6456    device.os = 'ios';
6457    device.ios = true;
6458  }
6459
6460  // Export object
6461  return device;
6462}
6463function getDevice(overrides) {
6464  if (overrides === void 0) {
6465    overrides = {};
6466  }
6467  if (!deviceCached) {
6468    deviceCached = calcDevice(overrides);
6469  }
6470  return deviceCached;
6471}
6472
6473let browser;
6474function calcBrowser() {
6475  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6476  const device = getDevice();
6477  let needPerspectiveFix = false;
6478  function isSafari() {
6479    const ua = window.navigator.userAgent.toLowerCase();
6480    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
6481  }
6482  if (isSafari()) {
6483    const ua = String(window.navigator.userAgent);
6484    if (ua.includes('Version/')) {
6485      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));
6486      needPerspectiveFix = major < 16 || major === 16 && minor < 2;
6487    }
6488  }
6489  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);
6490  const isSafariBrowser = isSafari();
6491  const need3dFix = isSafariBrowser || isWebView && device.ios;
6492  return {
6493    isSafari: needPerspectiveFix || isSafariBrowser,
6494    needPerspectiveFix,
6495    need3dFix,
6496    isWebView
6497  };
6498}
6499function getBrowser() {
6500  if (!browser) {
6501    browser = calcBrowser();
6502  }
6503  return browser;
6504}
6505
6506function Resize(_ref) {
6507  let {
6508    swiper,
6509    on,
6510    emit
6511  } = _ref;
6512  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6513  let observer = null;
6514  let animationFrame = null;
6515  const resizeHandler = () => {
6516    if (!swiper || swiper.destroyed || !swiper.initialized) return;
6517    emit('beforeResize');
6518    emit('resize');
6519  };
6520  const createObserver = () => {
6521    if (!swiper || swiper.destroyed || !swiper.initialized) return;
6522    observer = new ResizeObserver(entries => {
6523      animationFrame = window.requestAnimationFrame(() => {
6524        const {
6525          width,
6526          height
6527        } = swiper;
6528        let newWidth = width;
6529        let newHeight = height;
6530        entries.forEach(_ref2 => {
6531          let {
6532            contentBoxSize,
6533            contentRect,
6534            target
6535          } = _ref2;
6536          if (target && target !== swiper.el) return;
6537          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
6538          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
6539        });
6540        if (newWidth !== width || newHeight !== height) {
6541          resizeHandler();
6542        }
6543      });
6544    });
6545    observer.observe(swiper.el);
6546  };
6547  const removeObserver = () => {
6548    if (animationFrame) {
6549      window.cancelAnimationFrame(animationFrame);
6550    }
6551    if (observer && observer.unobserve && swiper.el) {
6552      observer.unobserve(swiper.el);
6553      observer = null;
6554    }
6555  };
6556  const orientationChangeHandler = () => {
6557    if (!swiper || swiper.destroyed || !swiper.initialized) return;
6558    emit('orientationchange');
6559  };
6560  on('init', () => {
6561    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
6562      createObserver();
6563      return;
6564    }
6565    window.addEventListener('resize', resizeHandler);
6566    window.addEventListener('orientationchange', orientationChangeHandler);
6567  });
6568  on('destroy', () => {
6569    removeObserver();
6570    window.removeEventListener('resize', resizeHandler);
6571    window.removeEventListener('orientationchange', orientationChangeHandler);
6572  });
6573}
6574
6575function Observer(_ref) {
6576  let {
6577    swiper,
6578    extendParams,
6579    on,
6580    emit
6581  } = _ref;
6582  const observers = [];
6583  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6584  const attach = function (target, options) {
6585    if (options === void 0) {
6586      options = {};
6587    }
6588    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
6589    const observer = new ObserverFunc(mutations => {
6590      // The observerUpdate event should only be triggered
6591      // once despite the number of mutations.  Additional
6592      // triggers are redundant and are very costly
6593      if (swiper.__preventObserver__) return;
6594      if (mutations.length === 1) {
6595        emit('observerUpdate', mutations[0]);
6596        return;
6597      }
6598      const observerUpdate = function observerUpdate() {
6599        emit('observerUpdate', mutations[0]);
6600      };
6601      if (window.requestAnimationFrame) {
6602        window.requestAnimationFrame(observerUpdate);
6603      } else {
6604        window.setTimeout(observerUpdate, 0);
6605      }
6606    });
6607    observer.observe(target, {
6608      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
6609      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,
6610      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
6611    });
6612    observers.push(observer);
6613  };
6614  const init = () => {
6615    if (!swiper.params.observer) return;
6616    if (swiper.params.observeParents) {
6617      const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.hostEl);
6618      for (let i = 0; i < containerParents.length; i += 1) {
6619        attach(containerParents[i]);
6620      }
6621    }
6622    // Observe container
6623    attach(swiper.hostEl, {
6624      childList: swiper.params.observeSlideChildren
6625    });
6626
6627    // Observe wrapper
6628    attach(swiper.wrapperEl, {
6629      attributes: false
6630    });
6631  };
6632  const destroy = () => {
6633    observers.forEach(observer => {
6634      observer.disconnect();
6635    });
6636    observers.splice(0, observers.length);
6637  };
6638  extendParams({
6639    observer: false,
6640    observeParents: false,
6641    observeSlideChildren: false
6642  });
6643  on('init', init);
6644  on('destroy', destroy);
6645}
6646
6647/* eslint-disable no-underscore-dangle */
6648
6649var eventsEmitter = {
6650  on(events, handler, priority) {
6651    const self = this;
6652    if (!self.eventsListeners || self.destroyed) return self;
6653    if (typeof handler !== 'function') return self;
6654    const method = priority ? 'unshift' : 'push';
6655    events.split(' ').forEach(event => {
6656      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
6657      self.eventsListeners[event][method](handler);
6658    });
6659    return self;
6660  },
6661  once(events, handler, priority) {
6662    const self = this;
6663    if (!self.eventsListeners || self.destroyed) return self;
6664    if (typeof handler !== 'function') return self;
6665    function onceHandler() {
6666      self.off(events, onceHandler);
6667      if (onceHandler.__emitterProxy) {
6668        delete onceHandler.__emitterProxy;
6669      }
6670      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
6671        args[_key] = arguments[_key];
6672      }
6673      handler.apply(self, args);
6674    }
6675    onceHandler.__emitterProxy = handler;
6676    return self.on(events, onceHandler, priority);
6677  },
6678  onAny(handler, priority) {
6679    const self = this;
6680    if (!self.eventsListeners || self.destroyed) return self;
6681    if (typeof handler !== 'function') return self;
6682    const method = priority ? 'unshift' : 'push';
6683    if (self.eventsAnyListeners.indexOf(handler) < 0) {
6684      self.eventsAnyListeners[method](handler);
6685    }
6686    return self;
6687  },
6688  offAny(handler) {
6689    const self = this;
6690    if (!self.eventsListeners || self.destroyed) return self;
6691    if (!self.eventsAnyListeners) return self;
6692    const index = self.eventsAnyListeners.indexOf(handler);
6693    if (index >= 0) {
6694      self.eventsAnyListeners.splice(index, 1);
6695    }
6696    return self;
6697  },
6698  off(events, handler) {
6699    const self = this;
6700    if (!self.eventsListeners || self.destroyed) return self;
6701    if (!self.eventsListeners) return self;
6702    events.split(' ').forEach(event => {
6703      if (typeof handler === 'undefined') {
6704        self.eventsListeners[event] = [];
6705      } else if (self.eventsListeners[event]) {
6706        self.eventsListeners[event].forEach((eventHandler, index) => {
6707          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
6708            self.eventsListeners[event].splice(index, 1);
6709          }
6710        });
6711      }
6712    });
6713    return self;
6714  },
6715  emit() {
6716    const self = this;
6717    if (!self.eventsListeners || self.destroyed) return self;
6718    if (!self.eventsListeners) return self;
6719    let events;
6720    let data;
6721    let context;
6722    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
6723      args[_key2] = arguments[_key2];
6724    }
6725    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
6726      events = args[0];
6727      data = args.slice(1, args.length);
6728      context = self;
6729    } else {
6730      events = args[0].events;
6731      data = args[0].data;
6732      context = args[0].context || self;
6733    }
6734    data.unshift(context);
6735    const eventsArray = Array.isArray(events) ? events : events.split(' ');
6736    eventsArray.forEach(event => {
6737      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
6738        self.eventsAnyListeners.forEach(eventHandler => {
6739          eventHandler.apply(context, [event, ...data]);
6740        });
6741      }
6742      if (self.eventsListeners && self.eventsListeners[event]) {
6743        self.eventsListeners[event].forEach(eventHandler => {
6744          eventHandler.apply(context, data);
6745        });
6746      }
6747    });
6748    return self;
6749  }
6750};
6751
6752function updateSize() {
6753  const swiper = this;
6754  let width;
6755  let height;
6756  const el = swiper.el;
6757  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
6758    width = swiper.params.width;
6759  } else {
6760    width = el.clientWidth;
6761  }
6762  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
6763    height = swiper.params.height;
6764  } else {
6765    height = el.clientHeight;
6766  }
6767  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
6768    return;
6769  }
6770
6771  // Subtract paddings
6772  width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-right') || 0, 10);
6773  height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-bottom') || 0, 10);
6774  if (Number.isNaN(width)) width = 0;
6775  if (Number.isNaN(height)) height = 0;
6776  Object.assign(swiper, {
6777    width,
6778    height,
6779    size: swiper.isHorizontal() ? width : height
6780  });
6781}
6782
6783function updateSlides() {
6784  const swiper = this;
6785  function getDirectionPropertyValue(node, label) {
6786    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);
6787  }
6788  const params = swiper.params;
6789  const {
6790    wrapperEl,
6791    slidesEl,
6792    size: swiperSize,
6793    rtlTranslate: rtl,
6794    wrongRTL
6795  } = swiper;
6796  const isVirtual = swiper.virtual && params.virtual.enabled;
6797  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
6798  const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
6799  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
6800  let snapGrid = [];
6801  const slidesGrid = [];
6802  const slidesSizesGrid = [];
6803  let offsetBefore = params.slidesOffsetBefore;
6804  if (typeof offsetBefore === 'function') {
6805    offsetBefore = params.slidesOffsetBefore.call(swiper);
6806  }
6807  let offsetAfter = params.slidesOffsetAfter;
6808  if (typeof offsetAfter === 'function') {
6809    offsetAfter = params.slidesOffsetAfter.call(swiper);
6810  }
6811  const previousSnapGridLength = swiper.snapGrid.length;
6812  const previousSlidesGridLength = swiper.slidesGrid.length;
6813  let spaceBetween = params.spaceBetween;
6814  let slidePosition = -offsetBefore;
6815  let prevSlideSize = 0;
6816  let index = 0;
6817  if (typeof swiperSize === 'undefined') {
6818    return;
6819  }
6820  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
6821    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
6822  } else if (typeof spaceBetween === 'string') {
6823    spaceBetween = parseFloat(spaceBetween);
6824  }
6825  swiper.virtualSize = -spaceBetween;
6826
6827  // reset margins
6828  slides.forEach(slideEl => {
6829    if (rtl) {
6830      slideEl.style.marginLeft = '';
6831    } else {
6832      slideEl.style.marginRight = '';
6833    }
6834    slideEl.style.marginBottom = '';
6835    slideEl.style.marginTop = '';
6836  });
6837
6838  // reset cssMode offsets
6839  if (params.centeredSlides && params.cssMode) {
6840    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', '');
6841    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', '');
6842  }
6843  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
6844  if (gridEnabled) {
6845    swiper.grid.initSlides(slides);
6846  } else if (swiper.grid) {
6847    swiper.grid.unsetSlides();
6848  }
6849
6850  // Calc slides
6851  let slideSize;
6852  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
6853    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
6854  }).length > 0;
6855  for (let i = 0; i < slidesLength; i += 1) {
6856    slideSize = 0;
6857    let slide;
6858    if (slides[i]) slide = slides[i];
6859    if (gridEnabled) {
6860      swiper.grid.updateSlide(i, slide, slides);
6861    }
6862    if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(slide, 'display') === 'none') continue; // eslint-disable-line
6863
6864    if (params.slidesPerView === 'auto') {
6865      if (shouldResetSlideSize) {
6866        slides[i].style[swiper.getDirectionLabel('width')] = ``;
6867      }
6868      const slideStyles = getComputedStyle(slide);
6869      const currentTransform = slide.style.transform;
6870      const currentWebKitTransform = slide.style.webkitTransform;
6871      if (currentTransform) {
6872        slide.style.transform = 'none';
6873      }
6874      if (currentWebKitTransform) {
6875        slide.style.webkitTransform = 'none';
6876      }
6877      if (params.roundLengths) {
6878        slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'height', true);
6879      } else {
6880        // eslint-disable-next-line
6881        const width = getDirectionPropertyValue(slideStyles, 'width');
6882        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
6883        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
6884        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
6885        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
6886        const boxSizing = slideStyles.getPropertyValue('box-sizing');
6887        if (boxSizing && boxSizing === 'border-box') {
6888          slideSize = width + marginLeft + marginRight;
6889        } else {
6890          const {
6891            clientWidth,
6892            offsetWidth
6893          } = slide;
6894          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
6895        }
6896      }
6897      if (currentTransform) {
6898        slide.style.transform = currentTransform;
6899      }
6900      if (currentWebKitTransform) {
6901        slide.style.webkitTransform = currentWebKitTransform;
6902      }
6903      if (params.roundLengths) slideSize = Math.floor(slideSize);
6904    } else {
6905      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
6906      if (params.roundLengths) slideSize = Math.floor(slideSize);
6907      if (slides[i]) {
6908        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
6909      }
6910    }
6911    if (slides[i]) {
6912      slides[i].swiperSlideSize = slideSize;
6913    }
6914    slidesSizesGrid.push(slideSize);
6915    if (params.centeredSlides) {
6916      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
6917      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
6918      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
6919      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
6920      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
6921      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
6922      slidesGrid.push(slidePosition);
6923    } else {
6924      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
6925      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
6926      slidesGrid.push(slidePosition);
6927      slidePosition = slidePosition + slideSize + spaceBetween;
6928    }
6929    swiper.virtualSize += slideSize + spaceBetween;
6930    prevSlideSize = slideSize;
6931    index += 1;
6932  }
6933  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
6934  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
6935    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
6936  }
6937  if (params.setWrapperSize) {
6938    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
6939  }
6940  if (gridEnabled) {
6941    swiper.grid.updateWrapperSize(slideSize, snapGrid);
6942  }
6943
6944  // Remove last grid elements depending on width
6945  if (!params.centeredSlides) {
6946    const newSlidesGrid = [];
6947    for (let i = 0; i < snapGrid.length; i += 1) {
6948      let slidesGridItem = snapGrid[i];
6949      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
6950      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
6951        newSlidesGrid.push(slidesGridItem);
6952      }
6953    }
6954    snapGrid = newSlidesGrid;
6955    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
6956      snapGrid.push(swiper.virtualSize - swiperSize);
6957    }
6958  }
6959  if (isVirtual && params.loop) {
6960    const size = slidesSizesGrid[0] + spaceBetween;
6961    if (params.slidesPerGroup > 1) {
6962      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
6963      const groupSize = size * params.slidesPerGroup;
6964      for (let i = 0; i < groups; i += 1) {
6965        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
6966      }
6967    }
6968    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
6969      if (params.slidesPerGroup === 1) {
6970        snapGrid.push(snapGrid[snapGrid.length - 1] + size);
6971      }
6972      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
6973      swiper.virtualSize += size;
6974    }
6975  }
6976  if (snapGrid.length === 0) snapGrid = [0];
6977  if (spaceBetween !== 0) {
6978    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');
6979    slides.filter((_, slideIndex) => {
6980      if (!params.cssMode || params.loop) return true;
6981      if (slideIndex === slides.length - 1) {
6982        return false;
6983      }
6984      return true;
6985    }).forEach(slideEl => {
6986      slideEl.style[key] = `${spaceBetween}px`;
6987    });
6988  }
6989  if (params.centeredSlides && params.centeredSlidesBounds) {
6990    let allSlidesSize = 0;
6991    slidesSizesGrid.forEach(slideSizeValue => {
6992      allSlidesSize += slideSizeValue + (spaceBetween || 0);
6993    });
6994    allSlidesSize -= spaceBetween;
6995    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;
6996    snapGrid = snapGrid.map(snap => {
6997      if (snap <= 0) return -offsetBefore;
6998      if (snap > maxSnap) return maxSnap + offsetAfter;
6999      return snap;
7000    });
7001  }
7002  if (params.centerInsufficientSlides) {
7003    let allSlidesSize = 0;
7004    slidesSizesGrid.forEach(slideSizeValue => {
7005      allSlidesSize += slideSizeValue + (spaceBetween || 0);
7006    });
7007    allSlidesSize -= spaceBetween;
7008    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
7009    if (allSlidesSize + offsetSize < swiperSize) {
7010      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
7011      snapGrid.forEach((snap, snapIndex) => {
7012        snapGrid[snapIndex] = snap - allSlidesOffset;
7013      });
7014      slidesGrid.forEach((snap, snapIndex) => {
7015        slidesGrid[snapIndex] = snap + allSlidesOffset;
7016      });
7017    }
7018  }
7019  Object.assign(swiper, {
7020    slides,
7021    snapGrid,
7022    slidesGrid,
7023    slidesSizesGrid
7024  });
7025  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
7026    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
7027    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
7028    const addToSnapGrid = -swiper.snapGrid[0];
7029    const addToSlidesGrid = -swiper.slidesGrid[0];
7030    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
7031    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
7032  }
7033  if (slidesLength !== previousSlidesLength) {
7034    swiper.emit('slidesLengthChange');
7035  }
7036  if (snapGrid.length !== previousSnapGridLength) {
7037    if (swiper.params.watchOverflow) swiper.checkOverflow();
7038    swiper.emit('snapGridLengthChange');
7039  }
7040  if (slidesGrid.length !== previousSlidesGridLength) {
7041    swiper.emit('slidesGridLengthChange');
7042  }
7043  if (params.watchSlidesProgress) {
7044    swiper.updateSlidesOffset();
7045  }
7046  swiper.emit('slidesUpdated');
7047  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
7048    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
7049    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
7050    if (slidesLength <= params.maxBackfaceHiddenSlides) {
7051      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
7052    } else if (hasClassBackfaceClassAdded) {
7053      swiper.el.classList.remove(backFaceHiddenClass);
7054    }
7055  }
7056}
7057
7058function updateAutoHeight(speed) {
7059  const swiper = this;
7060  const activeSlides = [];
7061  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7062  let newHeight = 0;
7063  let i;
7064  if (typeof speed === 'number') {
7065    swiper.setTransition(speed);
7066  } else if (speed === true) {
7067    swiper.setTransition(swiper.params.speed);
7068  }
7069  const getSlideByIndex = index => {
7070    if (isVirtual) {
7071      return swiper.slides[swiper.getSlideIndexByData(index)];
7072    }
7073    return swiper.slides[index];
7074  };
7075  // Find slides currently in view
7076  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
7077    if (swiper.params.centeredSlides) {
7078      (swiper.visibleSlides || []).forEach(slide => {
7079        activeSlides.push(slide);
7080      });
7081    } else {
7082      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
7083        const index = swiper.activeIndex + i;
7084        if (index > swiper.slides.length && !isVirtual) break;
7085        activeSlides.push(getSlideByIndex(index));
7086      }
7087    }
7088  } else {
7089    activeSlides.push(getSlideByIndex(swiper.activeIndex));
7090  }
7091
7092  // Find new height from highest slide in view
7093  for (i = 0; i < activeSlides.length; i += 1) {
7094    if (typeof activeSlides[i] !== 'undefined') {
7095      const height = activeSlides[i].offsetHeight;
7096      newHeight = height > newHeight ? height : newHeight;
7097    }
7098  }
7099
7100  // Update Height
7101  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
7102}
7103
7104function updateSlidesOffset() {
7105  const swiper = this;
7106  const slides = swiper.slides;
7107  // eslint-disable-next-line
7108  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
7109  for (let i = 0; i < slides.length; i += 1) {
7110    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
7111  }
7112}
7113
7114const toggleSlideClasses$1 = (slideEl, condition, className) => {
7115  if (condition && !slideEl.classList.contains(className)) {
7116    slideEl.classList.add(className);
7117  } else if (!condition && slideEl.classList.contains(className)) {
7118    slideEl.classList.remove(className);
7119  }
7120};
7121function updateSlidesProgress(translate) {
7122  if (translate === void 0) {
7123    translate = this && this.translate || 0;
7124  }
7125  const swiper = this;
7126  const params = swiper.params;
7127  const {
7128    slides,
7129    rtlTranslate: rtl,
7130    snapGrid
7131  } = swiper;
7132  if (slides.length === 0) return;
7133  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
7134  let offsetCenter = -translate;
7135  if (rtl) offsetCenter = translate;
7136  swiper.visibleSlidesIndexes = [];
7137  swiper.visibleSlides = [];
7138  let spaceBetween = params.spaceBetween;
7139  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
7140    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
7141  } else if (typeof spaceBetween === 'string') {
7142    spaceBetween = parseFloat(spaceBetween);
7143  }
7144  for (let i = 0; i < slides.length; i += 1) {
7145    const slide = slides[i];
7146    let slideOffset = slide.swiperSlideOffset;
7147    if (params.cssMode && params.centeredSlides) {
7148      slideOffset -= slides[0].swiperSlideOffset;
7149    }
7150    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
7151    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
7152    const slideBefore = -(offsetCenter - slideOffset);
7153    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
7154    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];
7155    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
7156    if (isVisible) {
7157      swiper.visibleSlides.push(slide);
7158      swiper.visibleSlidesIndexes.push(i);
7159    }
7160    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);
7161    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);
7162    slide.progress = rtl ? -slideProgress : slideProgress;
7163    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
7164  }
7165}
7166
7167function updateProgress(translate) {
7168  const swiper = this;
7169  if (typeof translate === 'undefined') {
7170    const multiplier = swiper.rtlTranslate ? -1 : 1;
7171    // eslint-disable-next-line
7172    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
7173  }
7174  const params = swiper.params;
7175  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
7176  let {
7177    progress,
7178    isBeginning,
7179    isEnd,
7180    progressLoop
7181  } = swiper;
7182  const wasBeginning = isBeginning;
7183  const wasEnd = isEnd;
7184  if (translatesDiff === 0) {
7185    progress = 0;
7186    isBeginning = true;
7187    isEnd = true;
7188  } else {
7189    progress = (translate - swiper.minTranslate()) / translatesDiff;
7190    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;
7191    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;
7192    isBeginning = isBeginningRounded || progress <= 0;
7193    isEnd = isEndRounded || progress >= 1;
7194    if (isBeginningRounded) progress = 0;
7195    if (isEndRounded) progress = 1;
7196  }
7197  if (params.loop) {
7198    const firstSlideIndex = swiper.getSlideIndexByData(0);
7199    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
7200    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
7201    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
7202    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
7203    const translateAbs = Math.abs(translate);
7204    if (translateAbs >= firstSlideTranslate) {
7205      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
7206    } else {
7207      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
7208    }
7209    if (progressLoop > 1) progressLoop -= 1;
7210  }
7211  Object.assign(swiper, {
7212    progress,
7213    progressLoop,
7214    isBeginning,
7215    isEnd
7216  });
7217  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
7218  if (isBeginning && !wasBeginning) {
7219    swiper.emit('reachBeginning toEdge');
7220  }
7221  if (isEnd && !wasEnd) {
7222    swiper.emit('reachEnd toEdge');
7223  }
7224  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
7225    swiper.emit('fromEdge');
7226  }
7227  swiper.emit('progress', progress);
7228}
7229
7230const toggleSlideClasses = (slideEl, condition, className) => {
7231  if (condition && !slideEl.classList.contains(className)) {
7232    slideEl.classList.add(className);
7233  } else if (!condition && slideEl.classList.contains(className)) {
7234    slideEl.classList.remove(className);
7235  }
7236};
7237function updateSlidesClasses() {
7238  const swiper = this;
7239  const {
7240    slides,
7241    params,
7242    slidesEl,
7243    activeIndex
7244  } = swiper;
7245  const isVirtual = swiper.virtual && params.virtual.enabled;
7246  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
7247  const getFilteredSlide = selector => {
7248    return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
7249  };
7250  let activeSlide;
7251  let prevSlide;
7252  let nextSlide;
7253  if (isVirtual) {
7254    if (params.loop) {
7255      let slideIndex = activeIndex - swiper.virtual.slidesBefore;
7256      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
7257      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
7258      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
7259    } else {
7260      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
7261    }
7262  } else {
7263    if (gridEnabled) {
7264      activeSlide = slides.find(slideEl => slideEl.column === activeIndex);
7265      nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);
7266      prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);
7267    } else {
7268      activeSlide = slides[activeIndex];
7269    }
7270  }
7271  if (activeSlide) {
7272    if (!gridEnabled) {
7273      // Next Slide
7274      nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
7275      if (params.loop && !nextSlide) {
7276        nextSlide = slides[0];
7277      }
7278
7279      // Prev Slide
7280      prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
7281      if (params.loop && !prevSlide === 0) {
7282        prevSlide = slides[slides.length - 1];
7283      }
7284    }
7285  }
7286  slides.forEach(slideEl => {
7287    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);
7288    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);
7289    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);
7290  });
7291  swiper.emitSlidesClasses();
7292}
7293
7294const processLazyPreloader = (swiper, imageEl) => {
7295  if (!swiper || swiper.destroyed || !swiper.params) return;
7296  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
7297  const slideEl = imageEl.closest(slideSelector());
7298  if (slideEl) {
7299    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
7300    if (!lazyEl && swiper.isElement) {
7301      if (slideEl.shadowRoot) {
7302        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
7303      } else {
7304        // init later
7305        requestAnimationFrame(() => {
7306          if (slideEl.shadowRoot) {
7307            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
7308            if (lazyEl) lazyEl.remove();
7309          }
7310        });
7311      }
7312    }
7313    if (lazyEl) lazyEl.remove();
7314  }
7315};
7316const unlazy = (swiper, index) => {
7317  if (!swiper.slides[index]) return;
7318  const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
7319  if (imageEl) imageEl.removeAttribute('loading');
7320};
7321const preload = swiper => {
7322  if (!swiper || swiper.destroyed || !swiper.params) return;
7323  let amount = swiper.params.lazyPreloadPrevNext;
7324  const len = swiper.slides.length;
7325  if (!len || !amount || amount < 0) return;
7326  amount = Math.min(amount, len);
7327  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
7328  const activeIndex = swiper.activeIndex;
7329  if (swiper.params.grid && swiper.params.grid.rows > 1) {
7330    const activeColumn = activeIndex;
7331    const preloadColumns = [activeColumn - amount];
7332    preloadColumns.push(...Array.from({
7333      length: amount
7334    }).map((_, i) => {
7335      return activeColumn + slidesPerView + i;
7336    }));
7337    swiper.slides.forEach((slideEl, i) => {
7338      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
7339    });
7340    return;
7341  }
7342  const slideIndexLastInView = activeIndex + slidesPerView - 1;
7343  if (swiper.params.rewind || swiper.params.loop) {
7344    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
7345      const realIndex = (i % len + len) % len;
7346      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
7347    }
7348  } else {
7349    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
7350      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
7351        unlazy(swiper, i);
7352      }
7353    }
7354  }
7355};
7356
7357function getActiveIndexByTranslate(swiper) {
7358  const {
7359    slidesGrid,
7360    params
7361  } = swiper;
7362  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
7363  let activeIndex;
7364  for (let i = 0; i < slidesGrid.length; i += 1) {
7365    if (typeof slidesGrid[i + 1] !== 'undefined') {
7366      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
7367        activeIndex = i;
7368      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
7369        activeIndex = i + 1;
7370      }
7371    } else if (translate >= slidesGrid[i]) {
7372      activeIndex = i;
7373    }
7374  }
7375  // Normalize slideIndex
7376  if (params.normalizeSlideIndex) {
7377    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
7378  }
7379  return activeIndex;
7380}
7381function updateActiveIndex(newActiveIndex) {
7382  const swiper = this;
7383  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
7384  const {
7385    snapGrid,
7386    params,
7387    activeIndex: previousIndex,
7388    realIndex: previousRealIndex,
7389    snapIndex: previousSnapIndex
7390  } = swiper;
7391  let activeIndex = newActiveIndex;
7392  let snapIndex;
7393  const getVirtualRealIndex = aIndex => {
7394    let realIndex = aIndex - swiper.virtual.slidesBefore;
7395    if (realIndex < 0) {
7396      realIndex = swiper.virtual.slides.length + realIndex;
7397    }
7398    if (realIndex >= swiper.virtual.slides.length) {
7399      realIndex -= swiper.virtual.slides.length;
7400    }
7401    return realIndex;
7402  };
7403  if (typeof activeIndex === 'undefined') {
7404    activeIndex = getActiveIndexByTranslate(swiper);
7405  }
7406  if (snapGrid.indexOf(translate) >= 0) {
7407    snapIndex = snapGrid.indexOf(translate);
7408  } else {
7409    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
7410    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
7411  }
7412  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
7413  if (activeIndex === previousIndex && !swiper.params.loop) {
7414    if (snapIndex !== previousSnapIndex) {
7415      swiper.snapIndex = snapIndex;
7416      swiper.emit('snapIndexChange');
7417    }
7418    return;
7419  }
7420  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
7421    swiper.realIndex = getVirtualRealIndex(activeIndex);
7422    return;
7423  }
7424  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
7425
7426  // Get real index
7427  let realIndex;
7428  if (swiper.virtual && params.virtual.enabled && params.loop) {
7429    realIndex = getVirtualRealIndex(activeIndex);
7430  } else if (gridEnabled) {
7431    const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);
7432    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
7433    if (Number.isNaN(activeSlideIndex)) {
7434      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
7435    }
7436    realIndex = Math.floor(activeSlideIndex / params.grid.rows);
7437  } else if (swiper.slides[activeIndex]) {
7438    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');
7439    if (slideIndex) {
7440      realIndex = parseInt(slideIndex, 10);
7441    } else {
7442      realIndex = activeIndex;
7443    }
7444  } else {
7445    realIndex = activeIndex;
7446  }
7447  Object.assign(swiper, {
7448    previousSnapIndex,
7449    snapIndex,
7450    previousRealIndex,
7451    realIndex,
7452    previousIndex,
7453    activeIndex
7454  });
7455  if (swiper.initialized) {
7456    preload(swiper);
7457  }
7458  swiper.emit('activeIndexChange');
7459  swiper.emit('snapIndexChange');
7460  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
7461    if (previousRealIndex !== realIndex) {
7462      swiper.emit('realIndexChange');
7463    }
7464    swiper.emit('slideChange');
7465  }
7466}
7467
7468function updateClickedSlide(el, path) {
7469  const swiper = this;
7470  const params = swiper.params;
7471  let slide = el.closest(`.${params.slideClass}, swiper-slide`);
7472  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {
7473    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {
7474      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {
7475        slide = pathEl;
7476      }
7477    });
7478  }
7479  let slideFound = false;
7480  let slideIndex;
7481  if (slide) {
7482    for (let i = 0; i < swiper.slides.length; i += 1) {
7483      if (swiper.slides[i] === slide) {
7484        slideFound = true;
7485        slideIndex = i;
7486        break;
7487      }
7488    }
7489  }
7490  if (slide && slideFound) {
7491    swiper.clickedSlide = slide;
7492    if (swiper.virtual && swiper.params.virtual.enabled) {
7493      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);
7494    } else {
7495      swiper.clickedIndex = slideIndex;
7496    }
7497  } else {
7498    swiper.clickedSlide = undefined;
7499    swiper.clickedIndex = undefined;
7500    return;
7501  }
7502  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
7503    swiper.slideToClickedSlide();
7504  }
7505}
7506
7507var update = {
7508  updateSize,
7509  updateSlides,
7510  updateAutoHeight,
7511  updateSlidesOffset,
7512  updateSlidesProgress,
7513  updateProgress,
7514  updateSlidesClasses,
7515  updateActiveIndex,
7516  updateClickedSlide
7517};
7518
7519function getSwiperTranslate(axis) {
7520  if (axis === void 0) {
7521    axis = this.isHorizontal() ? 'x' : 'y';
7522  }
7523  const swiper = this;
7524  const {
7525    params,
7526    rtlTranslate: rtl,
7527    translate,
7528    wrapperEl
7529  } = swiper;
7530  if (params.virtualTranslate) {
7531    return rtl ? -translate : translate;
7532  }
7533  if (params.cssMode) {
7534    return translate;
7535  }
7536  let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(wrapperEl, axis);
7537  currentTranslate += swiper.cssOverflowAdjustment();
7538  if (rtl) currentTranslate = -currentTranslate;
7539  return currentTranslate || 0;
7540}
7541
7542function setTranslate(translate, byController) {
7543  const swiper = this;
7544  const {
7545    rtlTranslate: rtl,
7546    params,
7547    wrapperEl,
7548    progress
7549  } = swiper;
7550  let x = 0;
7551  let y = 0;
7552  const z = 0;
7553  if (swiper.isHorizontal()) {
7554    x = rtl ? -translate : translate;
7555  } else {
7556    y = translate;
7557  }
7558  if (params.roundLengths) {
7559    x = Math.floor(x);
7560    y = Math.floor(y);
7561  }
7562  swiper.previousTranslate = swiper.translate;
7563  swiper.translate = swiper.isHorizontal() ? x : y;
7564  if (params.cssMode) {
7565    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
7566  } else if (!params.virtualTranslate) {
7567    if (swiper.isHorizontal()) {
7568      x -= swiper.cssOverflowAdjustment();
7569    } else {
7570      y -= swiper.cssOverflowAdjustment();
7571    }
7572    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
7573  }
7574
7575  // Check if we need to update progress
7576  let newProgress;
7577  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
7578  if (translatesDiff === 0) {
7579    newProgress = 0;
7580  } else {
7581    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
7582  }
7583  if (newProgress !== progress) {
7584    swiper.updateProgress(translate);
7585  }
7586  swiper.emit('setTranslate', swiper.translate, byController);
7587}
7588
7589function minTranslate() {
7590  return -this.snapGrid[0];
7591}
7592
7593function maxTranslate() {
7594  return -this.snapGrid[this.snapGrid.length - 1];
7595}
7596
7597function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
7598  if (translate === void 0) {
7599    translate = 0;
7600  }
7601  if (speed === void 0) {
7602    speed = this.params.speed;
7603  }
7604  if (runCallbacks === void 0) {
7605    runCallbacks = true;
7606  }
7607  if (translateBounds === void 0) {
7608    translateBounds = true;
7609  }
7610  const swiper = this;
7611  const {
7612    params,
7613    wrapperEl
7614  } = swiper;
7615  if (swiper.animating && params.preventInteractionOnTransition) {
7616    return false;
7617  }
7618  const minTranslate = swiper.minTranslate();
7619  const maxTranslate = swiper.maxTranslate();
7620  let newTranslate;
7621  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
7622
7623  // Update progress
7624  swiper.updateProgress(newTranslate);
7625  if (params.cssMode) {
7626    const isH = swiper.isHorizontal();
7627    if (speed === 0) {
7628      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
7629    } else {
7630      if (!swiper.support.smoothScroll) {
7631        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({
7632          swiper,
7633          targetPosition: -newTranslate,
7634          side: isH ? 'left' : 'top'
7635        });
7636        return true;
7637      }
7638      wrapperEl.scrollTo({
7639        [isH ? 'left' : 'top']: -newTranslate,
7640        behavior: 'smooth'
7641      });
7642    }
7643    return true;
7644  }
7645  if (speed === 0) {
7646    swiper.setTransition(0);
7647    swiper.setTranslate(newTranslate);
7648    if (runCallbacks) {
7649      swiper.emit('beforeTransitionStart', speed, internal);
7650      swiper.emit('transitionEnd');
7651    }
7652  } else {
7653    swiper.setTransition(speed);
7654    swiper.setTranslate(newTranslate);
7655    if (runCallbacks) {
7656      swiper.emit('beforeTransitionStart', speed, internal);
7657      swiper.emit('transitionStart');
7658    }
7659    if (!swiper.animating) {
7660      swiper.animating = true;
7661      if (!swiper.onTranslateToWrapperTransitionEnd) {
7662        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
7663          if (!swiper || swiper.destroyed) return;
7664          if (e.target !== this) return;
7665          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
7666          swiper.onTranslateToWrapperTransitionEnd = null;
7667          delete swiper.onTranslateToWrapperTransitionEnd;
7668          swiper.animating = false;
7669          if (runCallbacks) {
7670            swiper.emit('transitionEnd');
7671          }
7672        };
7673      }
7674      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
7675    }
7676  }
7677  return true;
7678}
7679
7680var translate = {
7681  getTranslate: getSwiperTranslate,
7682  setTranslate,
7683  minTranslate,
7684  maxTranslate,
7685  translateTo
7686};
7687
7688function setTransition(duration, byController) {
7689  const swiper = this;
7690  if (!swiper.params.cssMode) {
7691    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
7692    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';
7693  }
7694  swiper.emit('setTransition', duration, byController);
7695}
7696
7697function transitionEmit(_ref) {
7698  let {
7699    swiper,
7700    runCallbacks,
7701    direction,
7702    step
7703  } = _ref;
7704  const {
7705    activeIndex,
7706    previousIndex
7707  } = swiper;
7708  let dir = direction;
7709  if (!dir) {
7710    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
7711  }
7712  swiper.emit(`transition${step}`);
7713  if (runCallbacks && activeIndex !== previousIndex) {
7714    if (dir === 'reset') {
7715      swiper.emit(`slideResetTransition${step}`);
7716      return;
7717    }
7718    swiper.emit(`slideChangeTransition${step}`);
7719    if (dir === 'next') {
7720      swiper.emit(`slideNextTransition${step}`);
7721    } else {
7722      swiper.emit(`slidePrevTransition${step}`);
7723    }
7724  }
7725}
7726
7727function transitionStart(runCallbacks, direction) {
7728  if (runCallbacks === void 0) {
7729    runCallbacks = true;
7730  }
7731  const swiper = this;
7732  const {
7733    params
7734  } = swiper;
7735  if (params.cssMode) return;
7736  if (params.autoHeight) {
7737    swiper.updateAutoHeight();
7738  }
7739  transitionEmit({
7740    swiper,
7741    runCallbacks,
7742    direction,
7743    step: 'Start'
7744  });
7745}
7746
7747function transitionEnd(runCallbacks, direction) {
7748  if (runCallbacks === void 0) {
7749    runCallbacks = true;
7750  }
7751  const swiper = this;
7752  const {
7753    params
7754  } = swiper;
7755  swiper.animating = false;
7756  if (params.cssMode) return;
7757  swiper.setTransition(0);
7758  transitionEmit({
7759    swiper,
7760    runCallbacks,
7761    direction,
7762    step: 'End'
7763  });
7764}
7765
7766var transition = {
7767  setTransition,
7768  transitionStart,
7769  transitionEnd
7770};
7771
7772function slideTo(index, speed, runCallbacks, internal, initial) {
7773  if (index === void 0) {
7774    index = 0;
7775  }
7776  if (runCallbacks === void 0) {
7777    runCallbacks = true;
7778  }
7779  if (typeof index === 'string') {
7780    index = parseInt(index, 10);
7781  }
7782  const swiper = this;
7783  let slideIndex = index;
7784  if (slideIndex < 0) slideIndex = 0;
7785  const {
7786    params,
7787    snapGrid,
7788    slidesGrid,
7789    previousIndex,
7790    activeIndex,
7791    rtlTranslate: rtl,
7792    wrapperEl,
7793    enabled
7794  } = swiper;
7795  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {
7796    return false;
7797  }
7798  if (typeof speed === 'undefined') {
7799    speed = swiper.params.speed;
7800  }
7801  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
7802  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
7803  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
7804  const translate = -snapGrid[snapIndex];
7805  // Normalize slideIndex
7806  if (params.normalizeSlideIndex) {
7807    for (let i = 0; i < slidesGrid.length; i += 1) {
7808      const normalizedTranslate = -Math.floor(translate * 100);
7809      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
7810      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
7811      if (typeof slidesGrid[i + 1] !== 'undefined') {
7812        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
7813          slideIndex = i;
7814        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
7815          slideIndex = i + 1;
7816        }
7817      } else if (normalizedTranslate >= normalizedGrid) {
7818        slideIndex = i;
7819      }
7820    }
7821  }
7822  // Directions locks
7823  if (swiper.initialized && slideIndex !== activeIndex) {
7824    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {
7825      return false;
7826    }
7827    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
7828      if ((activeIndex || 0) !== slideIndex) {
7829        return false;
7830      }
7831    }
7832  }
7833  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
7834    swiper.emit('beforeSlideChangeStart');
7835  }
7836
7837  // Update progress
7838  swiper.updateProgress(translate);
7839  let direction;
7840  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
7841
7842  // initial virtual
7843  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7844  const isInitialVirtual = isVirtual && initial;
7845  // Update Index
7846  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {
7847    swiper.updateActiveIndex(slideIndex);
7848    // Update Height
7849    if (params.autoHeight) {
7850      swiper.updateAutoHeight();
7851    }
7852    swiper.updateSlidesClasses();
7853    if (params.effect !== 'slide') {
7854      swiper.setTranslate(translate);
7855    }
7856    if (direction !== 'reset') {
7857      swiper.transitionStart(runCallbacks, direction);
7858      swiper.transitionEnd(runCallbacks, direction);
7859    }
7860    return false;
7861  }
7862  if (params.cssMode) {
7863    const isH = swiper.isHorizontal();
7864    const t = rtl ? translate : -translate;
7865    if (speed === 0) {
7866      if (isVirtual) {
7867        swiper.wrapperEl.style.scrollSnapType = 'none';
7868        swiper._immediateVirtual = true;
7869      }
7870      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
7871        swiper._cssModeVirtualInitialSet = true;
7872        requestAnimationFrame(() => {
7873          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
7874        });
7875      } else {
7876        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
7877      }
7878      if (isVirtual) {
7879        requestAnimationFrame(() => {
7880          swiper.wrapperEl.style.scrollSnapType = '';
7881          swiper._immediateVirtual = false;
7882        });
7883      }
7884    } else {
7885      if (!swiper.support.smoothScroll) {
7886        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({
7887          swiper,
7888          targetPosition: t,
7889          side: isH ? 'left' : 'top'
7890        });
7891        return true;
7892      }
7893      wrapperEl.scrollTo({
7894        [isH ? 'left' : 'top']: t,
7895        behavior: 'smooth'
7896      });
7897    }
7898    return true;
7899  }
7900  const browser = getBrowser();
7901  const isSafari = browser.isSafari;
7902  if (isVirtual && !initial && isSafari && swiper.isElement) {
7903    swiper.virtual.update(false, false, slideIndex);
7904  }
7905  swiper.setTransition(speed);
7906  swiper.setTranslate(translate);
7907  swiper.updateActiveIndex(slideIndex);
7908  swiper.updateSlidesClasses();
7909  swiper.emit('beforeTransitionStart', speed, internal);
7910  swiper.transitionStart(runCallbacks, direction);
7911  if (speed === 0) {
7912    swiper.transitionEnd(runCallbacks, direction);
7913  } else if (!swiper.animating) {
7914    swiper.animating = true;
7915    if (!swiper.onSlideToWrapperTransitionEnd) {
7916      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
7917        if (!swiper || swiper.destroyed) return;
7918        if (e.target !== this) return;
7919        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
7920        swiper.onSlideToWrapperTransitionEnd = null;
7921        delete swiper.onSlideToWrapperTransitionEnd;
7922        swiper.transitionEnd(runCallbacks, direction);
7923      };
7924    }
7925    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
7926  }
7927  return true;
7928}
7929
7930function slideToLoop(index, speed, runCallbacks, internal) {
7931  if (index === void 0) {
7932    index = 0;
7933  }
7934  if (runCallbacks === void 0) {
7935    runCallbacks = true;
7936  }
7937  if (typeof index === 'string') {
7938    const indexAsNumber = parseInt(index, 10);
7939    index = indexAsNumber;
7940  }
7941  const swiper = this;
7942  if (swiper.destroyed) return;
7943  if (typeof speed === 'undefined') {
7944    speed = swiper.params.speed;
7945  }
7946  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
7947  let newIndex = index;
7948  if (swiper.params.loop) {
7949    if (swiper.virtual && swiper.params.virtual.enabled) {
7950      // eslint-disable-next-line
7951      newIndex = newIndex + swiper.virtual.slidesBefore;
7952    } else {
7953      let targetSlideIndex;
7954      if (gridEnabled) {
7955        const slideIndex = newIndex * swiper.params.grid.rows;
7956        targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
7957      } else {
7958        targetSlideIndex = swiper.getSlideIndexByData(newIndex);
7959      }
7960      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
7961      const {
7962        centeredSlides
7963      } = swiper.params;
7964      let slidesPerView = swiper.params.slidesPerView;
7965      if (slidesPerView === 'auto') {
7966        slidesPerView = swiper.slidesPerViewDynamic();
7967      } else {
7968        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
7969        if (centeredSlides && slidesPerView % 2 === 0) {
7970          slidesPerView = slidesPerView + 1;
7971        }
7972      }
7973      let needLoopFix = cols - targetSlideIndex < slidesPerView;
7974      if (centeredSlides) {
7975        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
7976      }
7977      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
7978        needLoopFix = false;
7979      }
7980      if (needLoopFix) {
7981        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
7982        swiper.loopFix({
7983          direction,
7984          slideTo: true,
7985          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,
7986          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined
7987        });
7988      }
7989      if (gridEnabled) {
7990        const slideIndex = newIndex * swiper.params.grid.rows;
7991        newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
7992      } else {
7993        newIndex = swiper.getSlideIndexByData(newIndex);
7994      }
7995    }
7996  }
7997  requestAnimationFrame(() => {
7998    swiper.slideTo(newIndex, speed, runCallbacks, internal);
7999  });
8000  return swiper;
8001}
8002
8003/* eslint no-unused-vars: "off" */
8004function slideNext(speed, runCallbacks, internal) {
8005  if (runCallbacks === void 0) {
8006    runCallbacks = true;
8007  }
8008  const swiper = this;
8009  const {
8010    enabled,
8011    params,
8012    animating
8013  } = swiper;
8014  if (!enabled || swiper.destroyed) return swiper;
8015  if (typeof speed === 'undefined') {
8016    speed = swiper.params.speed;
8017  }
8018  let perGroup = params.slidesPerGroup;
8019  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
8020    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
8021  }
8022  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
8023  const isVirtual = swiper.virtual && params.virtual.enabled;
8024  if (params.loop) {
8025    if (animating && !isVirtual && params.loopPreventsSliding) return false;
8026    swiper.loopFix({
8027      direction: 'next'
8028    });
8029    // eslint-disable-next-line
8030    swiper._clientLeft = swiper.wrapperEl.clientLeft;
8031    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {
8032      requestAnimationFrame(() => {
8033        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
8034      });
8035      return true;
8036    }
8037  }
8038  if (params.rewind && swiper.isEnd) {
8039    return swiper.slideTo(0, speed, runCallbacks, internal);
8040  }
8041  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
8042}
8043
8044/* eslint no-unused-vars: "off" */
8045function slidePrev(speed, runCallbacks, internal) {
8046  if (runCallbacks === void 0) {
8047    runCallbacks = true;
8048  }
8049  const swiper = this;
8050  const {
8051    params,
8052    snapGrid,
8053    slidesGrid,
8054    rtlTranslate,
8055    enabled,
8056    animating
8057  } = swiper;
8058  if (!enabled || swiper.destroyed) return swiper;
8059  if (typeof speed === 'undefined') {
8060    speed = swiper.params.speed;
8061  }
8062  const isVirtual = swiper.virtual && params.virtual.enabled;
8063  if (params.loop) {
8064    if (animating && !isVirtual && params.loopPreventsSliding) return false;
8065    swiper.loopFix({
8066      direction: 'prev'
8067    });
8068    // eslint-disable-next-line
8069    swiper._clientLeft = swiper.wrapperEl.clientLeft;
8070  }
8071  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
8072  function normalize(val) {
8073    if (val < 0) return -Math.floor(Math.abs(val));
8074    return Math.floor(val);
8075  }
8076  const normalizedTranslate = normalize(translate);
8077  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
8078  const isFreeMode = params.freeMode && params.freeMode.enabled;
8079  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
8080  if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {
8081    let prevSnapIndex;
8082    snapGrid.forEach((snap, snapIndex) => {
8083      if (normalizedTranslate >= snap) {
8084        // prevSnap = snap;
8085        prevSnapIndex = snapIndex;
8086      }
8087    });
8088    if (typeof prevSnapIndex !== 'undefined') {
8089      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
8090    }
8091  }
8092  let prevIndex = 0;
8093  if (typeof prevSnap !== 'undefined') {
8094    prevIndex = slidesGrid.indexOf(prevSnap);
8095    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
8096    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
8097      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
8098      prevIndex = Math.max(prevIndex, 0);
8099    }
8100  }
8101  if (params.rewind && swiper.isBeginning) {
8102    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
8103    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
8104  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {
8105    requestAnimationFrame(() => {
8106      swiper.slideTo(prevIndex, speed, runCallbacks, internal);
8107    });
8108    return true;
8109  }
8110  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
8111}
8112
8113/* eslint no-unused-vars: "off" */
8114function slideReset(speed, runCallbacks, internal) {
8115  if (runCallbacks === void 0) {
8116    runCallbacks = true;
8117  }
8118  const swiper = this;
8119  if (swiper.destroyed) return;
8120  if (typeof speed === 'undefined') {
8121    speed = swiper.params.speed;
8122  }
8123  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
8124}
8125
8126/* eslint no-unused-vars: "off" */
8127function slideToClosest(speed, runCallbacks, internal, threshold) {
8128  if (runCallbacks === void 0) {
8129    runCallbacks = true;
8130  }
8131  if (threshold === void 0) {
8132    threshold = 0.5;
8133  }
8134  const swiper = this;
8135  if (swiper.destroyed) return;
8136  if (typeof speed === 'undefined') {
8137    speed = swiper.params.speed;
8138  }
8139  let index = swiper.activeIndex;
8140  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
8141  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
8142  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
8143  if (translate >= swiper.snapGrid[snapIndex]) {
8144    // The current translate is on or after the current snap index, so the choice
8145    // is between the current index and the one after it.
8146    const currentSnap = swiper.snapGrid[snapIndex];
8147    const nextSnap = swiper.snapGrid[snapIndex + 1];
8148    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
8149      index += swiper.params.slidesPerGroup;
8150    }
8151  } else {
8152    // The current translate is before the current snap index, so the choice
8153    // is between the current index and the one before it.
8154    const prevSnap = swiper.snapGrid[snapIndex - 1];
8155    const currentSnap = swiper.snapGrid[snapIndex];
8156    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
8157      index -= swiper.params.slidesPerGroup;
8158    }
8159  }
8160  index = Math.max(index, 0);
8161  index = Math.min(index, swiper.slidesGrid.length - 1);
8162  return swiper.slideTo(index, speed, runCallbacks, internal);
8163}
8164
8165function slideToClickedSlide() {
8166  const swiper = this;
8167  if (swiper.destroyed) return;
8168  const {
8169    params,
8170    slidesEl
8171  } = swiper;
8172  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
8173  let slideToIndex = swiper.clickedIndex;
8174  let realIndex;
8175  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
8176  if (params.loop) {
8177    if (swiper.animating) return;
8178    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
8179    if (params.centeredSlides) {
8180      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
8181        swiper.loopFix();
8182        slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
8183        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
8184          swiper.slideTo(slideToIndex);
8185        });
8186      } else {
8187        swiper.slideTo(slideToIndex);
8188      }
8189    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
8190      swiper.loopFix();
8191      slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
8192      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
8193        swiper.slideTo(slideToIndex);
8194      });
8195    } else {
8196      swiper.slideTo(slideToIndex);
8197    }
8198  } else {
8199    swiper.slideTo(slideToIndex);
8200  }
8201}
8202
8203var slide = {
8204  slideTo,
8205  slideToLoop,
8206  slideNext,
8207  slidePrev,
8208  slideReset,
8209  slideToClosest,
8210  slideToClickedSlide
8211};
8212
8213function loopCreate(slideRealIndex, initial) {
8214  const swiper = this;
8215  const {
8216    params,
8217    slidesEl
8218  } = swiper;
8219  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
8220  const initSlides = () => {
8221    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`);
8222    slides.forEach((el, index) => {
8223      el.setAttribute('data-swiper-slide-index', index);
8224    });
8225  };
8226  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
8227  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
8228  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
8229  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
8230  const addBlankSlides = amountOfSlides => {
8231    for (let i = 0; i < amountOfSlides; i += 1) {
8232      const slideEl = swiper.isElement ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide', [params.slideBlankClass]) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', [params.slideClass, params.slideBlankClass]);
8233      swiper.slidesEl.append(slideEl);
8234    }
8235  };
8236  if (shouldFillGroup) {
8237    if (params.loopAddBlankSlides) {
8238      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;
8239      addBlankSlides(slidesToAdd);
8240      swiper.recalcSlides();
8241      swiper.updateSlides();
8242    } else {
8243      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
8244    }
8245    initSlides();
8246  } else if (shouldFillGrid) {
8247    if (params.loopAddBlankSlides) {
8248      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;
8249      addBlankSlides(slidesToAdd);
8250      swiper.recalcSlides();
8251      swiper.updateSlides();
8252    } else {
8253      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('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)');
8254    }
8255    initSlides();
8256  } else {
8257    initSlides();
8258  }
8259  swiper.loopFix({
8260    slideRealIndex,
8261    direction: params.centeredSlides ? undefined : 'next',
8262    initial
8263  });
8264}
8265
8266function loopFix(_temp) {
8267  let {
8268    slideRealIndex,
8269    slideTo = true,
8270    direction,
8271    setTranslate,
8272    activeSlideIndex,
8273    initial,
8274    byController,
8275    byMousewheel
8276  } = _temp === void 0 ? {} : _temp;
8277  const swiper = this;
8278  if (!swiper.params.loop) return;
8279  swiper.emit('beforeLoopFix');
8280  const {
8281    slides,
8282    allowSlidePrev,
8283    allowSlideNext,
8284    slidesEl,
8285    params
8286  } = swiper;
8287  const {
8288    centeredSlides,
8289    initialSlide
8290  } = params;
8291  swiper.allowSlidePrev = true;
8292  swiper.allowSlideNext = true;
8293  if (swiper.virtual && params.virtual.enabled) {
8294    if (slideTo) {
8295      if (!params.centeredSlides && swiper.snapIndex === 0) {
8296        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
8297      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
8298        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
8299      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
8300        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
8301      }
8302    }
8303    swiper.allowSlidePrev = allowSlidePrev;
8304    swiper.allowSlideNext = allowSlideNext;
8305    swiper.emit('loopFix');
8306    return;
8307  }
8308  let slidesPerView = params.slidesPerView;
8309  if (slidesPerView === 'auto') {
8310    slidesPerView = swiper.slidesPerViewDynamic();
8311  } else {
8312    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
8313    if (centeredSlides && slidesPerView % 2 === 0) {
8314      slidesPerView = slidesPerView + 1;
8315    }
8316  }
8317  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
8318  let loopedSlides = slidesPerGroup;
8319  if (loopedSlides % slidesPerGroup !== 0) {
8320    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
8321  }
8322  loopedSlides += params.loopAdditionalSlides;
8323  swiper.loopedSlides = loopedSlides;
8324  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
8325  if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
8326    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('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');
8327  } else if (gridEnabled && params.grid.fill === 'row') {
8328    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');
8329  }
8330  const prependSlidesIndexes = [];
8331  const appendSlidesIndexes = [];
8332  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
8333  const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;
8334  let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
8335  if (typeof activeSlideIndex === 'undefined') {
8336    activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));
8337  } else {
8338    activeIndex = activeSlideIndex;
8339  }
8340  const isNext = direction === 'next' || !direction;
8341  const isPrev = direction === 'prev' || !direction;
8342  let slidesPrepended = 0;
8343  let slidesAppended = 0;
8344  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
8345  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
8346  // prepend last slides before start
8347  if (activeColIndexWithShift < loopedSlides) {
8348    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
8349    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {
8350      const index = i - Math.floor(i / cols) * cols;
8351      if (gridEnabled) {
8352        const colIndexToPrepend = cols - index - 1;
8353        for (let i = slides.length - 1; i >= 0; i -= 1) {
8354          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);
8355        }
8356        // slides.forEach((slide, slideIndex) => {
8357        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);
8358        // });
8359      } else {
8360        prependSlidesIndexes.push(cols - index - 1);
8361      }
8362    }
8363  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
8364    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
8365    if (isInitialOverflow) {
8366      slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
8367    }
8368    for (let i = 0; i < slidesAppended; i += 1) {
8369      const index = i - Math.floor(i / cols) * cols;
8370      if (gridEnabled) {
8371        slides.forEach((slide, slideIndex) => {
8372          if (slide.column === index) appendSlidesIndexes.push(slideIndex);
8373        });
8374      } else {
8375        appendSlidesIndexes.push(index);
8376      }
8377    }
8378  }
8379  swiper.__preventObserver__ = true;
8380  requestAnimationFrame(() => {
8381    swiper.__preventObserver__ = false;
8382  });
8383  if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
8384    if (appendSlidesIndexes.includes(activeSlideIndex)) {
8385      appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
8386    }
8387    if (prependSlidesIndexes.includes(activeSlideIndex)) {
8388      prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
8389    }
8390  }
8391  if (isPrev) {
8392    prependSlidesIndexes.forEach(index => {
8393      slides[index].swiperLoopMoveDOM = true;
8394      slidesEl.prepend(slides[index]);
8395      slides[index].swiperLoopMoveDOM = false;
8396    });
8397  }
8398  if (isNext) {
8399    appendSlidesIndexes.forEach(index => {
8400      slides[index].swiperLoopMoveDOM = true;
8401      slidesEl.append(slides[index]);
8402      slides[index].swiperLoopMoveDOM = false;
8403    });
8404  }
8405  swiper.recalcSlides();
8406  if (params.slidesPerView === 'auto') {
8407    swiper.updateSlides();
8408  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {
8409    swiper.slides.forEach((slide, slideIndex) => {
8410      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);
8411    });
8412  }
8413  if (params.watchSlidesProgress) {
8414    swiper.updateSlidesOffset();
8415  }
8416  if (slideTo) {
8417    if (prependSlidesIndexes.length > 0 && isPrev) {
8418      if (typeof slideRealIndex === 'undefined') {
8419        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
8420        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
8421        const diff = newSlideTranslate - currentSlideTranslate;
8422        if (byMousewheel) {
8423          swiper.setTranslate(swiper.translate - diff);
8424        } else {
8425          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);
8426          if (setTranslate) {
8427            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
8428            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
8429          }
8430        }
8431      } else {
8432        if (setTranslate) {
8433          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;
8434          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);
8435          swiper.touchEventsData.currentTranslate = swiper.translate;
8436        }
8437      }
8438    } else if (appendSlidesIndexes.length > 0 && isNext) {
8439      if (typeof slideRealIndex === 'undefined') {
8440        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
8441        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
8442        const diff = newSlideTranslate - currentSlideTranslate;
8443        if (byMousewheel) {
8444          swiper.setTranslate(swiper.translate - diff);
8445        } else {
8446          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
8447          if (setTranslate) {
8448            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
8449            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
8450          }
8451        }
8452      } else {
8453        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;
8454        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);
8455      }
8456    }
8457  }
8458  swiper.allowSlidePrev = allowSlidePrev;
8459  swiper.allowSlideNext = allowSlideNext;
8460  if (swiper.controller && swiper.controller.control && !byController) {
8461    const loopParams = {
8462      slideRealIndex,
8463      direction,
8464      setTranslate,
8465      activeSlideIndex,
8466      byController: true
8467    };
8468    if (Array.isArray(swiper.controller.control)) {
8469      swiper.controller.control.forEach(c => {
8470        if (!c.destroyed && c.params.loop) c.loopFix({
8471          ...loopParams,
8472          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false
8473        });
8474      });
8475    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
8476      swiper.controller.control.loopFix({
8477        ...loopParams,
8478        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false
8479      });
8480    }
8481  }
8482  swiper.emit('loopFix');
8483}
8484
8485function loopDestroy() {
8486  const swiper = this;
8487  const {
8488    params,
8489    slidesEl
8490  } = swiper;
8491  if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
8492  swiper.recalcSlides();
8493  const newSlidesOrder = [];
8494  swiper.slides.forEach(slideEl => {
8495    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;
8496    newSlidesOrder[index] = slideEl;
8497  });
8498  swiper.slides.forEach(slideEl => {
8499    slideEl.removeAttribute('data-swiper-slide-index');
8500  });
8501  newSlidesOrder.forEach(slideEl => {
8502    slidesEl.append(slideEl);
8503  });
8504  swiper.recalcSlides();
8505  swiper.slideTo(swiper.realIndex, 0);
8506}
8507
8508var loop = {
8509  loopCreate,
8510  loopFix,
8511  loopDestroy
8512};
8513
8514function setGrabCursor(moving) {
8515  const swiper = this;
8516  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
8517  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
8518  if (swiper.isElement) {
8519    swiper.__preventObserver__ = true;
8520  }
8521  el.style.cursor = 'move';
8522  el.style.cursor = moving ? 'grabbing' : 'grab';
8523  if (swiper.isElement) {
8524    requestAnimationFrame(() => {
8525      swiper.__preventObserver__ = false;
8526    });
8527  }
8528}
8529
8530function unsetGrabCursor() {
8531  const swiper = this;
8532  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
8533    return;
8534  }
8535  if (swiper.isElement) {
8536    swiper.__preventObserver__ = true;
8537  }
8538  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
8539  if (swiper.isElement) {
8540    requestAnimationFrame(() => {
8541      swiper.__preventObserver__ = false;
8542    });
8543  }
8544}
8545
8546var grabCursor = {
8547  setGrabCursor,
8548  unsetGrabCursor
8549};
8550
8551// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
8552function closestElement(selector, base) {
8553  if (base === void 0) {
8554    base = this;
8555  }
8556  function __closestFrom(el) {
8557    if (!el || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)() || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)()) return null;
8558    if (el.assignedSlot) el = el.assignedSlot;
8559    const found = el.closest(selector);
8560    if (!found && !el.getRootNode) {
8561      return null;
8562    }
8563    return found || __closestFrom(el.getRootNode().host);
8564  }
8565  return __closestFrom(base);
8566}
8567function preventEdgeSwipe(swiper, event, startX) {
8568  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8569  const {
8570    params
8571  } = swiper;
8572  const edgeSwipeDetection = params.edgeSwipeDetection;
8573  const edgeSwipeThreshold = params.edgeSwipeThreshold;
8574  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
8575    if (edgeSwipeDetection === 'prevent') {
8576      event.preventDefault();
8577      return true;
8578    }
8579    return false;
8580  }
8581  return true;
8582}
8583function onTouchStart(event) {
8584  const swiper = this;
8585  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8586  let e = event;
8587  if (e.originalEvent) e = e.originalEvent;
8588  const data = swiper.touchEventsData;
8589  if (e.type === 'pointerdown') {
8590    if (data.pointerId !== null && data.pointerId !== e.pointerId) {
8591      return;
8592    }
8593    data.pointerId = e.pointerId;
8594  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {
8595    data.touchId = e.targetTouches[0].identifier;
8596  }
8597  if (e.type === 'touchstart') {
8598    // don't proceed touch event
8599    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);
8600    return;
8601  }
8602  const {
8603    params,
8604    touches,
8605    enabled
8606  } = swiper;
8607  if (!enabled) return;
8608  if (!params.simulateTouch && e.pointerType === 'mouse') return;
8609  if (swiper.animating && params.preventInteractionOnTransition) {
8610    return;
8611  }
8612  if (!swiper.animating && params.cssMode && params.loop) {
8613    swiper.loopFix();
8614  }
8615  let targetEl = e.target;
8616  if (params.touchEventsTarget === 'wrapper') {
8617    if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)(targetEl, swiper.wrapperEl)) return;
8618  }
8619  if ('which' in e && e.which === 3) return;
8620  if ('button' in e && e.button > 0) return;
8621  if (data.isTouched && data.isMoved) return;
8622
8623  // change target el for shadow root component
8624  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
8625  // eslint-disable-next-line
8626  const eventPath = e.composedPath ? e.composedPath() : e.path;
8627  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
8628    targetEl = eventPath[0];
8629  }
8630  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
8631  const isTargetShadow = !!(e.target && e.target.shadowRoot);
8632
8633  // use closestElement for shadow root element to get the actual closest for nested shadow root element
8634  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
8635    swiper.allowClick = true;
8636    return;
8637  }
8638  if (params.swipeHandler) {
8639    if (!targetEl.closest(params.swipeHandler)) return;
8640  }
8641  touches.currentX = e.pageX;
8642  touches.currentY = e.pageY;
8643  const startX = touches.currentX;
8644  const startY = touches.currentY;
8645
8646  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
8647
8648  if (!preventEdgeSwipe(swiper, e, startX)) {
8649    return;
8650  }
8651  Object.assign(data, {
8652    isTouched: true,
8653    isMoved: false,
8654    allowTouchCallbacks: true,
8655    isScrolling: undefined,
8656    startMoving: undefined
8657  });
8658  touches.startX = startX;
8659  touches.startY = startY;
8660  data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
8661  swiper.allowClick = true;
8662  swiper.updateSize();
8663  swiper.swipeDirection = undefined;
8664  if (params.threshold > 0) data.allowThresholdMove = false;
8665  let preventDefault = true;
8666  if (targetEl.matches(data.focusableElements)) {
8667    preventDefault = false;
8668    if (targetEl.nodeName === 'SELECT') {
8669      data.isTouched = false;
8670    }
8671  }
8672  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
8673    document.activeElement.blur();
8674  }
8675  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
8676  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
8677    e.preventDefault();
8678  }
8679  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
8680    swiper.freeMode.onTouchStart();
8681  }
8682  swiper.emit('touchStart', e);
8683}
8684
8685function onTouchMove(event) {
8686  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8687  const swiper = this;
8688  const data = swiper.touchEventsData;
8689  const {
8690    params,
8691    touches,
8692    rtlTranslate: rtl,
8693    enabled
8694  } = swiper;
8695  if (!enabled) return;
8696  if (!params.simulateTouch && event.pointerType === 'mouse') return;
8697  let e = event;
8698  if (e.originalEvent) e = e.originalEvent;
8699  if (e.type === 'pointermove') {
8700    if (data.touchId !== null) return; // return from pointer if we use touch
8701    const id = e.pointerId;
8702    if (id !== data.pointerId) return;
8703  }
8704  let targetTouch;
8705  if (e.type === 'touchmove') {
8706    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
8707    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
8708  } else {
8709    targetTouch = e;
8710  }
8711  if (!data.isTouched) {
8712    if (data.startMoving && data.isScrolling) {
8713      swiper.emit('touchMoveOpposite', e);
8714    }
8715    return;
8716  }
8717  const pageX = targetTouch.pageX;
8718  const pageY = targetTouch.pageY;
8719  if (e.preventedByNestedSwiper) {
8720    touches.startX = pageX;
8721    touches.startY = pageY;
8722    return;
8723  }
8724  if (!swiper.allowTouchMove) {
8725    if (!e.target.matches(data.focusableElements)) {
8726      swiper.allowClick = false;
8727    }
8728    if (data.isTouched) {
8729      Object.assign(touches, {
8730        startX: pageX,
8731        startY: pageY,
8732        currentX: pageX,
8733        currentY: pageY
8734      });
8735      data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
8736    }
8737    return;
8738  }
8739  if (params.touchReleaseOnEdges && !params.loop) {
8740    if (swiper.isVertical()) {
8741      // Vertical
8742      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
8743        data.isTouched = false;
8744        data.isMoved = false;
8745        return;
8746      }
8747    } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
8748      return;
8749    } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
8750      return;
8751    }
8752  }
8753  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
8754    document.activeElement.blur();
8755  }
8756  if (document.activeElement) {
8757    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
8758      data.isMoved = true;
8759      swiper.allowClick = false;
8760      return;
8761    }
8762  }
8763  if (data.allowTouchCallbacks) {
8764    swiper.emit('touchMove', e);
8765  }
8766  touches.previousX = touches.currentX;
8767  touches.previousY = touches.currentY;
8768  touches.currentX = pageX;
8769  touches.currentY = pageY;
8770  const diffX = touches.currentX - touches.startX;
8771  const diffY = touches.currentY - touches.startY;
8772  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
8773  if (typeof data.isScrolling === 'undefined') {
8774    let touchAngle;
8775    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
8776      data.isScrolling = false;
8777    } else {
8778      // eslint-disable-next-line
8779      if (diffX * diffX + diffY * diffY >= 25) {
8780        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
8781        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
8782      }
8783    }
8784  }
8785  if (data.isScrolling) {
8786    swiper.emit('touchMoveOpposite', e);
8787  }
8788  if (typeof data.startMoving === 'undefined') {
8789    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
8790      data.startMoving = true;
8791    }
8792  }
8793  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {
8794    data.isTouched = false;
8795    return;
8796  }
8797  if (!data.startMoving) {
8798    return;
8799  }
8800  swiper.allowClick = false;
8801  if (!params.cssMode && e.cancelable) {
8802    e.preventDefault();
8803  }
8804  if (params.touchMoveStopPropagation && !params.nested) {
8805    e.stopPropagation();
8806  }
8807  let diff = swiper.isHorizontal() ? diffX : diffY;
8808  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
8809  if (params.oneWayMovement) {
8810    diff = Math.abs(diff) * (rtl ? 1 : -1);
8811    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
8812  }
8813  touches.diff = diff;
8814  diff *= params.touchRatio;
8815  if (rtl) {
8816    diff = -diff;
8817    touchesDiff = -touchesDiff;
8818  }
8819  const prevTouchesDirection = swiper.touchesDirection;
8820  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
8821  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';
8822  const isLoop = swiper.params.loop && !params.cssMode;
8823  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;
8824  if (!data.isMoved) {
8825    if (isLoop && allowLoopFix) {
8826      swiper.loopFix({
8827        direction: swiper.swipeDirection
8828      });
8829    }
8830    data.startTranslate = swiper.getTranslate();
8831    swiper.setTransition(0);
8832    if (swiper.animating) {
8833      const evt = new window.CustomEvent('transitionend', {
8834        bubbles: true,
8835        cancelable: true,
8836        detail: {
8837          bySwiperTouchMove: true
8838        }
8839      });
8840      swiper.wrapperEl.dispatchEvent(evt);
8841    }
8842    data.allowMomentumBounce = false;
8843    // Grab Cursor
8844    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
8845      swiper.setGrabCursor(true);
8846    }
8847    swiper.emit('sliderFirstMove', e);
8848  }
8849  let loopFixed;
8850  new Date().getTime();
8851  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
8852    Object.assign(touches, {
8853      startX: pageX,
8854      startY: pageY,
8855      currentX: pageX,
8856      currentY: pageY,
8857      startTranslate: data.currentTranslate
8858    });
8859    data.loopSwapReset = true;
8860    data.startTranslate = data.currentTranslate;
8861    return;
8862  }
8863  swiper.emit('sliderMove', e);
8864  data.isMoved = true;
8865  data.currentTranslate = diff + data.startTranslate;
8866  let disableParentSwiper = true;
8867  let resistanceRatio = params.resistanceRatio;
8868  if (params.touchReleaseOnEdges) {
8869    resistanceRatio = 0;
8870  }
8871  if (diff > 0) {
8872    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {
8873      swiper.loopFix({
8874        direction: 'prev',
8875        setTranslate: true,
8876        activeSlideIndex: 0
8877      });
8878    }
8879    if (data.currentTranslate > swiper.minTranslate()) {
8880      disableParentSwiper = false;
8881      if (params.resistance) {
8882        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
8883      }
8884    }
8885  } else if (diff < 0) {
8886    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {
8887      swiper.loopFix({
8888        direction: 'next',
8889        setTranslate: true,
8890        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
8891      });
8892    }
8893    if (data.currentTranslate < swiper.maxTranslate()) {
8894      disableParentSwiper = false;
8895      if (params.resistance) {
8896        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
8897      }
8898    }
8899  }
8900  if (disableParentSwiper) {
8901    e.preventedByNestedSwiper = true;
8902  }
8903
8904  // Directions locks
8905  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
8906    data.currentTranslate = data.startTranslate;
8907  }
8908  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
8909    data.currentTranslate = data.startTranslate;
8910  }
8911  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
8912    data.currentTranslate = data.startTranslate;
8913  }
8914
8915  // Threshold
8916  if (params.threshold > 0) {
8917    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
8918      if (!data.allowThresholdMove) {
8919        data.allowThresholdMove = true;
8920        touches.startX = touches.currentX;
8921        touches.startY = touches.currentY;
8922        data.currentTranslate = data.startTranslate;
8923        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
8924        return;
8925      }
8926    } else {
8927      data.currentTranslate = data.startTranslate;
8928      return;
8929    }
8930  }
8931  if (!params.followFinger || params.cssMode) return;
8932
8933  // Update active index in free mode
8934  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
8935    swiper.updateActiveIndex();
8936    swiper.updateSlidesClasses();
8937  }
8938  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
8939    swiper.freeMode.onTouchMove();
8940  }
8941  // Update progress
8942  swiper.updateProgress(data.currentTranslate);
8943  // Update translate
8944  swiper.setTranslate(data.currentTranslate);
8945}
8946
8947function onTouchEnd(event) {
8948  const swiper = this;
8949  const data = swiper.touchEventsData;
8950  let e = event;
8951  if (e.originalEvent) e = e.originalEvent;
8952  let targetTouch;
8953  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';
8954  if (!isTouchEvent) {
8955    if (data.touchId !== null) return; // return from pointer if we use touch
8956    if (e.pointerId !== data.pointerId) return;
8957    targetTouch = e;
8958  } else {
8959    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
8960    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
8961  }
8962  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
8963    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
8964    if (!proceed) {
8965      return;
8966    }
8967  }
8968  data.pointerId = null;
8969  data.touchId = null;
8970  const {
8971    params,
8972    touches,
8973    rtlTranslate: rtl,
8974    slidesGrid,
8975    enabled
8976  } = swiper;
8977  if (!enabled) return;
8978  if (!params.simulateTouch && e.pointerType === 'mouse') return;
8979  if (data.allowTouchCallbacks) {
8980    swiper.emit('touchEnd', e);
8981  }
8982  data.allowTouchCallbacks = false;
8983  if (!data.isTouched) {
8984    if (data.isMoved && params.grabCursor) {
8985      swiper.setGrabCursor(false);
8986    }
8987    data.isMoved = false;
8988    data.startMoving = false;
8989    return;
8990  }
8991
8992  // Return Grab Cursor
8993  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
8994    swiper.setGrabCursor(false);
8995  }
8996
8997  // Time diff
8998  const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
8999  const timeDiff = touchEndTime - data.touchStartTime;
9000
9001  // Tap, doubleTap, Click
9002  if (swiper.allowClick) {
9003    const pathTree = e.path || e.composedPath && e.composedPath();
9004    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);
9005    swiper.emit('tap click', e);
9006    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
9007      swiper.emit('doubleTap doubleClick', e);
9008    }
9009  }
9010  data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
9011  (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
9012    if (!swiper.destroyed) swiper.allowClick = true;
9013  });
9014  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {
9015    data.isTouched = false;
9016    data.isMoved = false;
9017    data.startMoving = false;
9018    return;
9019  }
9020  data.isTouched = false;
9021  data.isMoved = false;
9022  data.startMoving = false;
9023  let currentPos;
9024  if (params.followFinger) {
9025    currentPos = rtl ? swiper.translate : -swiper.translate;
9026  } else {
9027    currentPos = -data.currentTranslate;
9028  }
9029  if (params.cssMode) {
9030    return;
9031  }
9032  if (params.freeMode && params.freeMode.enabled) {
9033    swiper.freeMode.onTouchEnd({
9034      currentPos
9035    });
9036    return;
9037  }
9038
9039  // Find current slide
9040  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;
9041  let stopIndex = 0;
9042  let groupSize = swiper.slidesSizesGrid[0];
9043  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
9044    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
9045    if (typeof slidesGrid[i + increment] !== 'undefined') {
9046      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
9047        stopIndex = i;
9048        groupSize = slidesGrid[i + increment] - slidesGrid[i];
9049      }
9050    } else if (swipeToLast || currentPos >= slidesGrid[i]) {
9051      stopIndex = i;
9052      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
9053    }
9054  }
9055  let rewindFirstIndex = null;
9056  let rewindLastIndex = null;
9057  if (params.rewind) {
9058    if (swiper.isBeginning) {
9059      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
9060    } else if (swiper.isEnd) {
9061      rewindFirstIndex = 0;
9062    }
9063  }
9064  // Find current slide size
9065  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
9066  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
9067  if (timeDiff > params.longSwipesMs) {
9068    // Long touches
9069    if (!params.longSwipes) {
9070      swiper.slideTo(swiper.activeIndex);
9071      return;
9072    }
9073    if (swiper.swipeDirection === 'next') {
9074      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
9075    }
9076    if (swiper.swipeDirection === 'prev') {
9077      if (ratio > 1 - params.longSwipesRatio) {
9078        swiper.slideTo(stopIndex + increment);
9079      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
9080        swiper.slideTo(rewindLastIndex);
9081      } else {
9082        swiper.slideTo(stopIndex);
9083      }
9084    }
9085  } else {
9086    // Short swipes
9087    if (!params.shortSwipes) {
9088      swiper.slideTo(swiper.activeIndex);
9089      return;
9090    }
9091    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
9092    if (!isNavButtonTarget) {
9093      if (swiper.swipeDirection === 'next') {
9094        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
9095      }
9096      if (swiper.swipeDirection === 'prev') {
9097        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
9098      }
9099    } else if (e.target === swiper.navigation.nextEl) {
9100      swiper.slideTo(stopIndex + increment);
9101    } else {
9102      swiper.slideTo(stopIndex);
9103    }
9104  }
9105}
9106
9107function onResize() {
9108  const swiper = this;
9109  const {
9110    params,
9111    el
9112  } = swiper;
9113  if (el && el.offsetWidth === 0) return;
9114
9115  // Breakpoints
9116  if (params.breakpoints) {
9117    swiper.setBreakpoint();
9118  }
9119
9120  // Save locks
9121  const {
9122    allowSlideNext,
9123    allowSlidePrev,
9124    snapGrid
9125  } = swiper;
9126  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
9127
9128  // Disable locks on resize
9129  swiper.allowSlideNext = true;
9130  swiper.allowSlidePrev = true;
9131  swiper.updateSize();
9132  swiper.updateSlides();
9133  swiper.updateSlidesClasses();
9134  const isVirtualLoop = isVirtual && params.loop;
9135  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
9136    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
9137  } else {
9138    if (swiper.params.loop && !isVirtual) {
9139      swiper.slideToLoop(swiper.realIndex, 0, false, true);
9140    } else {
9141      swiper.slideTo(swiper.activeIndex, 0, false, true);
9142    }
9143  }
9144  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
9145    clearTimeout(swiper.autoplay.resizeTimeout);
9146    swiper.autoplay.resizeTimeout = setTimeout(() => {
9147      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
9148        swiper.autoplay.resume();
9149      }
9150    }, 500);
9151  }
9152  // Return locks after resize
9153  swiper.allowSlidePrev = allowSlidePrev;
9154  swiper.allowSlideNext = allowSlideNext;
9155  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
9156    swiper.checkOverflow();
9157  }
9158}
9159
9160function onClick(e) {
9161  const swiper = this;
9162  if (!swiper.enabled) return;
9163  if (!swiper.allowClick) {
9164    if (swiper.params.preventClicks) e.preventDefault();
9165    if (swiper.params.preventClicksPropagation && swiper.animating) {
9166      e.stopPropagation();
9167      e.stopImmediatePropagation();
9168    }
9169  }
9170}
9171
9172function onScroll() {
9173  const swiper = this;
9174  const {
9175    wrapperEl,
9176    rtlTranslate,
9177    enabled
9178  } = swiper;
9179  if (!enabled) return;
9180  swiper.previousTranslate = swiper.translate;
9181  if (swiper.isHorizontal()) {
9182    swiper.translate = -wrapperEl.scrollLeft;
9183  } else {
9184    swiper.translate = -wrapperEl.scrollTop;
9185  }
9186  // eslint-disable-next-line
9187  if (swiper.translate === 0) swiper.translate = 0;
9188  swiper.updateActiveIndex();
9189  swiper.updateSlidesClasses();
9190  let newProgress;
9191  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
9192  if (translatesDiff === 0) {
9193    newProgress = 0;
9194  } else {
9195    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
9196  }
9197  if (newProgress !== swiper.progress) {
9198    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
9199  }
9200  swiper.emit('setTranslate', swiper.translate, false);
9201}
9202
9203function onLoad(e) {
9204  const swiper = this;
9205  processLazyPreloader(swiper, e.target);
9206  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {
9207    return;
9208  }
9209  swiper.update();
9210}
9211
9212function onDocumentTouchStart() {
9213  const swiper = this;
9214  if (swiper.documentTouchHandlerProceeded) return;
9215  swiper.documentTouchHandlerProceeded = true;
9216  if (swiper.params.touchReleaseOnEdges) {
9217    swiper.el.style.touchAction = 'auto';
9218  }
9219}
9220
9221const events = (swiper, method) => {
9222  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
9223  const {
9224    params,
9225    el,
9226    wrapperEl,
9227    device
9228  } = swiper;
9229  const capture = !!params.nested;
9230  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
9231  const swiperMethod = method;
9232  if (!el || typeof el === 'string') return;
9233
9234  // Touch Events
9235  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {
9236    passive: false,
9237    capture
9238  });
9239  el[domMethod]('touchstart', swiper.onTouchStart, {
9240    passive: false
9241  });
9242  el[domMethod]('pointerdown', swiper.onTouchStart, {
9243    passive: false
9244  });
9245  document[domMethod]('touchmove', swiper.onTouchMove, {
9246    passive: false,
9247    capture
9248  });
9249  document[domMethod]('pointermove', swiper.onTouchMove, {
9250    passive: false,
9251    capture
9252  });
9253  document[domMethod]('touchend', swiper.onTouchEnd, {
9254    passive: true
9255  });
9256  document[domMethod]('pointerup', swiper.onTouchEnd, {
9257    passive: true
9258  });
9259  document[domMethod]('pointercancel', swiper.onTouchEnd, {
9260    passive: true
9261  });
9262  document[domMethod]('touchcancel', swiper.onTouchEnd, {
9263    passive: true
9264  });
9265  document[domMethod]('pointerout', swiper.onTouchEnd, {
9266    passive: true
9267  });
9268  document[domMethod]('pointerleave', swiper.onTouchEnd, {
9269    passive: true
9270  });
9271  document[domMethod]('contextmenu', swiper.onTouchEnd, {
9272    passive: true
9273  });
9274
9275  // Prevent Links Clicks
9276  if (params.preventClicks || params.preventClicksPropagation) {
9277    el[domMethod]('click', swiper.onClick, true);
9278  }
9279  if (params.cssMode) {
9280    wrapperEl[domMethod]('scroll', swiper.onScroll);
9281  }
9282
9283  // Resize handler
9284  if (params.updateOnWindowResize) {
9285    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
9286  } else {
9287    swiper[swiperMethod]('observerUpdate', onResize, true);
9288  }
9289
9290  // Images loader
9291  el[domMethod]('load', swiper.onLoad, {
9292    capture: true
9293  });
9294};
9295function attachEvents() {
9296  const swiper = this;
9297  const {
9298    params
9299  } = swiper;
9300  swiper.onTouchStart = onTouchStart.bind(swiper);
9301  swiper.onTouchMove = onTouchMove.bind(swiper);
9302  swiper.onTouchEnd = onTouchEnd.bind(swiper);
9303  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);
9304  if (params.cssMode) {
9305    swiper.onScroll = onScroll.bind(swiper);
9306  }
9307  swiper.onClick = onClick.bind(swiper);
9308  swiper.onLoad = onLoad.bind(swiper);
9309  events(swiper, 'on');
9310}
9311function detachEvents() {
9312  const swiper = this;
9313  events(swiper, 'off');
9314}
9315var events$1 = {
9316  attachEvents,
9317  detachEvents
9318};
9319
9320const isGridEnabled = (swiper, params) => {
9321  return swiper.grid && params.grid && params.grid.rows > 1;
9322};
9323function setBreakpoint() {
9324  const swiper = this;
9325  const {
9326    realIndex,
9327    initialized,
9328    params,
9329    el
9330  } = swiper;
9331  const breakpoints = params.breakpoints;
9332  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
9333  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
9334
9335  // Get breakpoint for window/container width and update parameters
9336  const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';
9337  const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);
9338  const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);
9339  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
9340  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
9341  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
9342  const wasMultiRow = isGridEnabled(swiper, params);
9343  const isMultiRow = isGridEnabled(swiper, breakpointParams);
9344  const wasGrabCursor = swiper.params.grabCursor;
9345  const isGrabCursor = breakpointParams.grabCursor;
9346  const wasEnabled = params.enabled;
9347  if (wasMultiRow && !isMultiRow) {
9348    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
9349    swiper.emitContainerClasses();
9350  } else if (!wasMultiRow && isMultiRow) {
9351    el.classList.add(`${params.containerModifierClass}grid`);
9352    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
9353      el.classList.add(`${params.containerModifierClass}grid-column`);
9354    }
9355    swiper.emitContainerClasses();
9356  }
9357  if (wasGrabCursor && !isGrabCursor) {
9358    swiper.unsetGrabCursor();
9359  } else if (!wasGrabCursor && isGrabCursor) {
9360    swiper.setGrabCursor();
9361  }
9362
9363  // Toggle navigation, pagination, scrollbar
9364  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
9365    if (typeof breakpointParams[prop] === 'undefined') return;
9366    const wasModuleEnabled = params[prop] && params[prop].enabled;
9367    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
9368    if (wasModuleEnabled && !isModuleEnabled) {
9369      swiper[prop].disable();
9370    }
9371    if (!wasModuleEnabled && isModuleEnabled) {
9372      swiper[prop].enable();
9373    }
9374  });
9375  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
9376  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
9377  const wasLoop = params.loop;
9378  if (directionChanged && initialized) {
9379    swiper.changeDirection();
9380  }
9381  (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(swiper.params, breakpointParams);
9382  const isEnabled = swiper.params.enabled;
9383  const hasLoop = swiper.params.loop;
9384  Object.assign(swiper, {
9385    allowTouchMove: swiper.params.allowTouchMove,
9386    allowSlideNext: swiper.params.allowSlideNext,
9387    allowSlidePrev: swiper.params.allowSlidePrev
9388  });
9389  if (wasEnabled && !isEnabled) {
9390    swiper.disable();
9391  } else if (!wasEnabled && isEnabled) {
9392    swiper.enable();
9393  }
9394  swiper.currentBreakpoint = breakpoint;
9395  swiper.emit('_beforeBreakpoint', breakpointParams);
9396  if (initialized) {
9397    if (needsReLoop) {
9398      swiper.loopDestroy();
9399      swiper.loopCreate(realIndex);
9400      swiper.updateSlides();
9401    } else if (!wasLoop && hasLoop) {
9402      swiper.loopCreate(realIndex);
9403      swiper.updateSlides();
9404    } else if (wasLoop && !hasLoop) {
9405      swiper.loopDestroy();
9406    }
9407  }
9408  swiper.emit('breakpoint', breakpointParams);
9409}
9410
9411function getBreakpoint(breakpoints, base, containerEl) {
9412  if (base === void 0) {
9413    base = 'window';
9414  }
9415  if (!breakpoints || base === 'container' && !containerEl) return undefined;
9416  let breakpoint = false;
9417  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
9418  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
9419  const points = Object.keys(breakpoints).map(point => {
9420    if (typeof point === 'string' && point.indexOf('@') === 0) {
9421      const minRatio = parseFloat(point.substr(1));
9422      const value = currentHeight * minRatio;
9423      return {
9424        value,
9425        point
9426      };
9427    }
9428    return {
9429      value: point,
9430      point
9431    };
9432  });
9433  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
9434  for (let i = 0; i < points.length; i += 1) {
9435    const {
9436      point,
9437      value
9438    } = points[i];
9439    if (base === 'window') {
9440      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
9441        breakpoint = point;
9442      }
9443    } else if (value <= containerEl.clientWidth) {
9444      breakpoint = point;
9445    }
9446  }
9447  return breakpoint || 'max';
9448}
9449
9450var breakpoints = {
9451  setBreakpoint,
9452  getBreakpoint
9453};
9454
9455function prepareClasses(entries, prefix) {
9456  const resultClasses = [];
9457  entries.forEach(item => {
9458    if (typeof item === 'object') {
9459      Object.keys(item).forEach(classNames => {
9460        if (item[classNames]) {
9461          resultClasses.push(prefix + classNames);
9462        }
9463      });
9464    } else if (typeof item === 'string') {
9465      resultClasses.push(prefix + item);
9466    }
9467  });
9468  return resultClasses;
9469}
9470function addClasses() {
9471  const swiper = this;
9472  const {
9473    classNames,
9474    params,
9475    rtl,
9476    el,
9477    device
9478  } = swiper;
9479  // prettier-ignore
9480  const suffixes = prepareClasses(['initialized', params.direction, {
9481    'free-mode': swiper.params.freeMode && params.freeMode.enabled
9482  }, {
9483    'autoheight': params.autoHeight
9484  }, {
9485    'rtl': rtl
9486  }, {
9487    'grid': params.grid && params.grid.rows > 1
9488  }, {
9489    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
9490  }, {
9491    'android': device.android
9492  }, {
9493    'ios': device.ios
9494  }, {
9495    'css-mode': params.cssMode
9496  }, {
9497    'centered': params.cssMode && params.centeredSlides
9498  }, {
9499    'watch-progress': params.watchSlidesProgress
9500  }], params.containerModifierClass);
9501  classNames.push(...suffixes);
9502  el.classList.add(...classNames);
9503  swiper.emitContainerClasses();
9504}
9505
9506function removeClasses() {
9507  const swiper = this;
9508  const {
9509    el,
9510    classNames
9511  } = swiper;
9512  if (!el || typeof el === 'string') return;
9513  el.classList.remove(...classNames);
9514  swiper.emitContainerClasses();
9515}
9516
9517var classes = {
9518  addClasses,
9519  removeClasses
9520};
9521
9522function checkOverflow() {
9523  const swiper = this;
9524  const {
9525    isLocked: wasLocked,
9526    params
9527  } = swiper;
9528  const {
9529    slidesOffsetBefore
9530  } = params;
9531  if (slidesOffsetBefore) {
9532    const lastSlideIndex = swiper.slides.length - 1;
9533    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
9534    swiper.isLocked = swiper.size > lastSlideRightEdge;
9535  } else {
9536    swiper.isLocked = swiper.snapGrid.length === 1;
9537  }
9538  if (params.allowSlideNext === true) {
9539    swiper.allowSlideNext = !swiper.isLocked;
9540  }
9541  if (params.allowSlidePrev === true) {
9542    swiper.allowSlidePrev = !swiper.isLocked;
9543  }
9544  if (wasLocked && wasLocked !== swiper.isLocked) {
9545    swiper.isEnd = false;
9546  }
9547  if (wasLocked !== swiper.isLocked) {
9548    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
9549  }
9550}
9551var checkOverflow$1 = {
9552  checkOverflow
9553};
9554
9555var defaults = {
9556  init: true,
9557  direction: 'horizontal',
9558  oneWayMovement: false,
9559  swiperElementNodeName: 'SWIPER-CONTAINER',
9560  touchEventsTarget: 'wrapper',
9561  initialSlide: 0,
9562  speed: 300,
9563  cssMode: false,
9564  updateOnWindowResize: true,
9565  resizeObserver: true,
9566  nested: false,
9567  createElements: false,
9568  eventsPrefix: 'swiper',
9569  enabled: true,
9570  focusableElements: 'input, select, option, textarea, button, video, label',
9571  // Overrides
9572  width: null,
9573  height: null,
9574  //
9575  preventInteractionOnTransition: false,
9576  // ssr
9577  userAgent: null,
9578  url: null,
9579  // To support iOS's swipe-to-go-back gesture (when being used in-app).
9580  edgeSwipeDetection: false,
9581  edgeSwipeThreshold: 20,
9582  // Autoheight
9583  autoHeight: false,
9584  // Set wrapper width
9585  setWrapperSize: false,
9586  // Virtual Translate
9587  virtualTranslate: false,
9588  // Effects
9589  effect: 'slide',
9590  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
9591
9592  // Breakpoints
9593  breakpoints: undefined,
9594  breakpointsBase: 'window',
9595  // Slides grid
9596  spaceBetween: 0,
9597  slidesPerView: 1,
9598  slidesPerGroup: 1,
9599  slidesPerGroupSkip: 0,
9600  slidesPerGroupAuto: false,
9601  centeredSlides: false,
9602  centeredSlidesBounds: false,
9603  slidesOffsetBefore: 0,
9604  // in px
9605  slidesOffsetAfter: 0,
9606  // in px
9607  normalizeSlideIndex: true,
9608  centerInsufficientSlides: false,
9609  // Disable swiper and hide navigation when container not overflow
9610  watchOverflow: true,
9611  // Round length
9612  roundLengths: false,
9613  // Touches
9614  touchRatio: 1,
9615  touchAngle: 45,
9616  simulateTouch: true,
9617  shortSwipes: true,
9618  longSwipes: true,
9619  longSwipesRatio: 0.5,
9620  longSwipesMs: 300,
9621  followFinger: true,
9622  allowTouchMove: true,
9623  threshold: 5,
9624  touchMoveStopPropagation: false,
9625  touchStartPreventDefault: true,
9626  touchStartForcePreventDefault: false,
9627  touchReleaseOnEdges: false,
9628  // Unique Navigation Elements
9629  uniqueNavElements: true,
9630  // Resistance
9631  resistance: true,
9632  resistanceRatio: 0.85,
9633  // Progress
9634  watchSlidesProgress: false,
9635  // Cursor
9636  grabCursor: false,
9637  // Clicks
9638  preventClicks: true,
9639  preventClicksPropagation: true,
9640  slideToClickedSlide: false,
9641  // loop
9642  loop: false,
9643  loopAddBlankSlides: true,
9644  loopAdditionalSlides: 0,
9645  loopPreventsSliding: true,
9646  // rewind
9647  rewind: false,
9648  // Swiping/no swiping
9649  allowSlidePrev: true,
9650  allowSlideNext: true,
9651  swipeHandler: null,
9652  // '.swipe-handler',
9653  noSwiping: true,
9654  noSwipingClass: 'swiper-no-swiping',
9655  noSwipingSelector: null,
9656  // Passive Listeners
9657  passiveListeners: true,
9658  maxBackfaceHiddenSlides: 10,
9659  // NS
9660  containerModifierClass: 'swiper-',
9661  // NEW
9662  slideClass: 'swiper-slide',
9663  slideBlankClass: 'swiper-slide-blank',
9664  slideActiveClass: 'swiper-slide-active',
9665  slideVisibleClass: 'swiper-slide-visible',
9666  slideFullyVisibleClass: 'swiper-slide-fully-visible',
9667  slideNextClass: 'swiper-slide-next',
9668  slidePrevClass: 'swiper-slide-prev',
9669  wrapperClass: 'swiper-wrapper',
9670  lazyPreloaderClass: 'swiper-lazy-preloader',
9671  lazyPreloadPrevNext: 0,
9672  // Callbacks
9673  runCallbacksOnInit: true,
9674  // Internals
9675  _emitClasses: false
9676};
9677
9678function moduleExtendParams(params, allModulesParams) {
9679  return function extendParams(obj) {
9680    if (obj === void 0) {
9681      obj = {};
9682    }
9683    const moduleParamName = Object.keys(obj)[0];
9684    const moduleParams = obj[moduleParamName];
9685    if (typeof moduleParams !== 'object' || moduleParams === null) {
9686      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj);
9687      return;
9688    }
9689    if (params[moduleParamName] === true) {
9690      params[moduleParamName] = {
9691        enabled: true
9692      };
9693    }
9694    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {
9695      params[moduleParamName].auto = true;
9696    }
9697    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {
9698      params[moduleParamName].auto = true;
9699    }
9700    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
9701      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj);
9702      return;
9703    }
9704    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
9705      params[moduleParamName].enabled = true;
9706    }
9707    if (!params[moduleParamName]) params[moduleParamName] = {
9708      enabled: false
9709    };
9710    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj);
9711  };
9712}
9713
9714/* eslint no-param-reassign: "off" */
9715const prototypes = {
9716  eventsEmitter,
9717  update,
9718  translate,
9719  transition,
9720  slide,
9721  loop,
9722  grabCursor,
9723  events: events$1,
9724  breakpoints,
9725  checkOverflow: checkOverflow$1,
9726  classes
9727};
9728const extendedDefaults = {};
9729class Swiper {
9730  constructor() {
9731    let el;
9732    let params;
9733    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
9734      args[_key] = arguments[_key];
9735    }
9736    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
9737      params = args[0];
9738    } else {
9739      [el, params] = args;
9740    }
9741    if (!params) params = {};
9742    params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params);
9743    if (el && !params.el) params.el = el;
9744    const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
9745    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {
9746      const swipers = [];
9747      document.querySelectorAll(params.el).forEach(containerEl => {
9748        const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params, {
9749          el: containerEl
9750        });
9751        swipers.push(new Swiper(newParams));
9752      });
9753      // eslint-disable-next-line no-constructor-return
9754      return swipers;
9755    }
9756
9757    // Swiper Instance
9758    const swiper = this;
9759    swiper.__swiper__ = true;
9760    swiper.support = getSupport();
9761    swiper.device = getDevice({
9762      userAgent: params.userAgent
9763    });
9764    swiper.browser = getBrowser();
9765    swiper.eventsListeners = {};
9766    swiper.eventsAnyListeners = [];
9767    swiper.modules = [...swiper.__modules__];
9768    if (params.modules && Array.isArray(params.modules)) {
9769      swiper.modules.push(...params.modules);
9770    }
9771    const allModulesParams = {};
9772    swiper.modules.forEach(mod => {
9773      mod({
9774        params,
9775        swiper,
9776        extendParams: moduleExtendParams(params, allModulesParams),
9777        on: swiper.on.bind(swiper),
9778        once: swiper.once.bind(swiper),
9779        off: swiper.off.bind(swiper),
9780        emit: swiper.emit.bind(swiper)
9781      });
9782    });
9783
9784    // Extend defaults with modules params
9785    const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, defaults, allModulesParams);
9786
9787    // Extend defaults with passed params
9788    swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiperParams, extendedDefaults, params);
9789    swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiper.params);
9790    swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params);
9791
9792    // add event listeners
9793    if (swiper.params && swiper.params.on) {
9794      Object.keys(swiper.params.on).forEach(eventName => {
9795        swiper.on(eventName, swiper.params.on[eventName]);
9796      });
9797    }
9798    if (swiper.params && swiper.params.onAny) {
9799      swiper.onAny(swiper.params.onAny);
9800    }
9801
9802    // Extend Swiper
9803    Object.assign(swiper, {
9804      enabled: swiper.params.enabled,
9805      el,
9806      // Classes
9807      classNames: [],
9808      // Slides
9809      slides: [],
9810      slidesGrid: [],
9811      snapGrid: [],
9812      slidesSizesGrid: [],
9813      // isDirection
9814      isHorizontal() {
9815        return swiper.params.direction === 'horizontal';
9816      },
9817      isVertical() {
9818        return swiper.params.direction === 'vertical';
9819      },
9820      // Indexes
9821      activeIndex: 0,
9822      realIndex: 0,
9823      //
9824      isBeginning: true,
9825      isEnd: false,
9826      // Props
9827      translate: 0,
9828      previousTranslate: 0,
9829      progress: 0,
9830      velocity: 0,
9831      animating: false,
9832      cssOverflowAdjustment() {
9833        // Returns 0 unless `translate` is > 2**23
9834        // Should be subtracted from css values to prevent overflow
9835        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
9836      },
9837      // Locks
9838      allowSlideNext: swiper.params.allowSlideNext,
9839      allowSlidePrev: swiper.params.allowSlidePrev,
9840      // Touch Events
9841      touchEventsData: {
9842        isTouched: undefined,
9843        isMoved: undefined,
9844        allowTouchCallbacks: undefined,
9845        touchStartTime: undefined,
9846        isScrolling: undefined,
9847        currentTranslate: undefined,
9848        startTranslate: undefined,
9849        allowThresholdMove: undefined,
9850        // Form elements to match
9851        focusableElements: swiper.params.focusableElements,
9852        // Last click time
9853        lastClickTime: 0,
9854        clickTimeout: undefined,
9855        // Velocities
9856        velocities: [],
9857        allowMomentumBounce: undefined,
9858        startMoving: undefined,
9859        pointerId: null,
9860        touchId: null
9861      },
9862      // Clicks
9863      allowClick: true,
9864      // Touches
9865      allowTouchMove: swiper.params.allowTouchMove,
9866      touches: {
9867        startX: 0,
9868        startY: 0,
9869        currentX: 0,
9870        currentY: 0,
9871        diff: 0
9872      },
9873      // Images
9874      imagesToLoad: [],
9875      imagesLoaded: 0
9876    });
9877    swiper.emit('_swiper');
9878
9879    // Init
9880    if (swiper.params.init) {
9881      swiper.init();
9882    }
9883
9884    // Return app instance
9885    // eslint-disable-next-line no-constructor-return
9886    return swiper;
9887  }
9888  getDirectionLabel(property) {
9889    if (this.isHorizontal()) {
9890      return property;
9891    }
9892    // prettier-ignore
9893    return {
9894      'width': 'height',
9895      'margin-top': 'margin-left',
9896      'margin-bottom ': 'margin-right',
9897      'margin-left': 'margin-top',
9898      'margin-right': 'margin-bottom',
9899      'padding-left': 'padding-top',
9900      'padding-right': 'padding-bottom',
9901      'marginRight': 'marginBottom'
9902    }[property];
9903  }
9904  getSlideIndex(slideEl) {
9905    const {
9906      slidesEl,
9907      params
9908    } = this;
9909    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`);
9910    const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slides[0]);
9911    return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slideEl) - firstSlideIndex;
9912  }
9913  getSlideIndexByData(index) {
9914    return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));
9915  }
9916  recalcSlides() {
9917    const swiper = this;
9918    const {
9919      slidesEl,
9920      params
9921    } = swiper;
9922    swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`);
9923  }
9924  enable() {
9925    const swiper = this;
9926    if (swiper.enabled) return;
9927    swiper.enabled = true;
9928    if (swiper.params.grabCursor) {
9929      swiper.setGrabCursor();
9930    }
9931    swiper.emit('enable');
9932  }
9933  disable() {
9934    const swiper = this;
9935    if (!swiper.enabled) return;
9936    swiper.enabled = false;
9937    if (swiper.params.grabCursor) {
9938      swiper.unsetGrabCursor();
9939    }
9940    swiper.emit('disable');
9941  }
9942  setProgress(progress, speed) {
9943    const swiper = this;
9944    progress = Math.min(Math.max(progress, 0), 1);
9945    const min = swiper.minTranslate();
9946    const max = swiper.maxTranslate();
9947    const current = (max - min) * progress + min;
9948    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
9949    swiper.updateActiveIndex();
9950    swiper.updateSlidesClasses();
9951  }
9952  emitContainerClasses() {
9953    const swiper = this;
9954    if (!swiper.params._emitClasses || !swiper.el) return;
9955    const cls = swiper.el.className.split(' ').filter(className => {
9956      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
9957    });
9958    swiper.emit('_containerClasses', cls.join(' '));
9959  }
9960  getSlideClasses(slideEl) {
9961    const swiper = this;
9962    if (swiper.destroyed) return '';
9963    return slideEl.className.split(' ').filter(className => {
9964      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
9965    }).join(' ');
9966  }
9967  emitSlidesClasses() {
9968    const swiper = this;
9969    if (!swiper.params._emitClasses || !swiper.el) return;
9970    const updates = [];
9971    swiper.slides.forEach(slideEl => {
9972      const classNames = swiper.getSlideClasses(slideEl);
9973      updates.push({
9974        slideEl,
9975        classNames
9976      });
9977      swiper.emit('_slideClass', slideEl, classNames);
9978    });
9979    swiper.emit('_slideClasses', updates);
9980  }
9981  slidesPerViewDynamic(view, exact) {
9982    if (view === void 0) {
9983      view = 'current';
9984    }
9985    if (exact === void 0) {
9986      exact = false;
9987    }
9988    const swiper = this;
9989    const {
9990      params,
9991      slides,
9992      slidesGrid,
9993      slidesSizesGrid,
9994      size: swiperSize,
9995      activeIndex
9996    } = swiper;
9997    let spv = 1;
9998    if (typeof params.slidesPerView === 'number') return params.slidesPerView;
9999    if (params.centeredSlides) {
10000      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
10001      let breakLoop;
10002      for (let i = activeIndex + 1; i < slides.length; i += 1) {
10003        if (slides[i] && !breakLoop) {
10004          slideSize += Math.ceil(slides[i].swiperSlideSize);
10005          spv += 1;
10006          if (slideSize > swiperSize) breakLoop = true;
10007        }
10008      }
10009      for (let i = activeIndex - 1; i >= 0; i -= 1) {
10010        if (slides[i] && !breakLoop) {
10011          slideSize += slides[i].swiperSlideSize;
10012          spv += 1;
10013          if (slideSize > swiperSize) breakLoop = true;
10014        }
10015      }
10016    } else {
10017      // eslint-disable-next-line
10018      if (view === 'current') {
10019        for (let i = activeIndex + 1; i < slides.length; i += 1) {
10020          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
10021          if (slideInView) {
10022            spv += 1;
10023          }
10024        }
10025      } else {
10026        // previous
10027        for (let i = activeIndex - 1; i >= 0; i -= 1) {
10028          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
10029          if (slideInView) {
10030            spv += 1;
10031          }
10032        }
10033      }
10034    }
10035    return spv;
10036  }
10037  update() {
10038    const swiper = this;
10039    if (!swiper || swiper.destroyed) return;
10040    const {
10041      snapGrid,
10042      params
10043    } = swiper;
10044    // Breakpoints
10045    if (params.breakpoints) {
10046      swiper.setBreakpoint();
10047    }
10048    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
10049      if (imageEl.complete) {
10050        processLazyPreloader(swiper, imageEl);
10051      }
10052    });
10053    swiper.updateSize();
10054    swiper.updateSlides();
10055    swiper.updateProgress();
10056    swiper.updateSlidesClasses();
10057    function setTranslate() {
10058      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
10059      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
10060      swiper.setTranslate(newTranslate);
10061      swiper.updateActiveIndex();
10062      swiper.updateSlidesClasses();
10063    }
10064    let translated;
10065    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
10066      setTranslate();
10067      if (params.autoHeight) {
10068        swiper.updateAutoHeight();
10069      }
10070    } else {
10071      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
10072        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
10073        translated = swiper.slideTo(slides.length - 1, 0, false, true);
10074      } else {
10075        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
10076      }
10077      if (!translated) {
10078        setTranslate();
10079      }
10080    }
10081    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
10082      swiper.checkOverflow();
10083    }
10084    swiper.emit('update');
10085  }
10086  changeDirection(newDirection, needUpdate) {
10087    if (needUpdate === void 0) {
10088      needUpdate = true;
10089    }
10090    const swiper = this;
10091    const currentDirection = swiper.params.direction;
10092    if (!newDirection) {
10093      // eslint-disable-next-line
10094      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
10095    }
10096    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
10097      return swiper;
10098    }
10099    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
10100    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
10101    swiper.emitContainerClasses();
10102    swiper.params.direction = newDirection;
10103    swiper.slides.forEach(slideEl => {
10104      if (newDirection === 'vertical') {
10105        slideEl.style.width = '';
10106      } else {
10107        slideEl.style.height = '';
10108      }
10109    });
10110    swiper.emit('changeDirection');
10111    if (needUpdate) swiper.update();
10112    return swiper;
10113  }
10114  changeLanguageDirection(direction) {
10115    const swiper = this;
10116    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
10117    swiper.rtl = direction === 'rtl';
10118    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
10119    if (swiper.rtl) {
10120      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
10121      swiper.el.dir = 'rtl';
10122    } else {
10123      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
10124      swiper.el.dir = 'ltr';
10125    }
10126    swiper.update();
10127  }
10128  mount(element) {
10129    const swiper = this;
10130    if (swiper.mounted) return true;
10131
10132    // Find el
10133    let el = element || swiper.params.el;
10134    if (typeof el === 'string') {
10135      el = document.querySelector(el);
10136    }
10137    if (!el) {
10138      return false;
10139    }
10140    el.swiper = swiper;
10141    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
10142      swiper.isElement = true;
10143    }
10144    const getWrapperSelector = () => {
10145      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
10146    };
10147    const getWrapper = () => {
10148      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
10149        const res = el.shadowRoot.querySelector(getWrapperSelector());
10150        // Children needs to return slot items
10151        return res;
10152      }
10153      return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0];
10154    };
10155    // Find Wrapper
10156    let wrapperEl = getWrapper();
10157    if (!wrapperEl && swiper.params.createElements) {
10158      wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass);
10159      el.append(wrapperEl);
10160      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => {
10161        wrapperEl.append(slideEl);
10162      });
10163    }
10164    Object.assign(swiper, {
10165      el,
10166      wrapperEl,
10167      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
10168      hostEl: swiper.isElement ? el.parentNode.host : el,
10169      mounted: true,
10170      // RTL
10171      rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl',
10172      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl'),
10173      wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(wrapperEl, 'display') === '-webkit-box'
10174    });
10175    return true;
10176  }
10177  init(el) {
10178    const swiper = this;
10179    if (swiper.initialized) return swiper;
10180    const mounted = swiper.mount(el);
10181    if (mounted === false) return swiper;
10182    swiper.emit('beforeInit');
10183
10184    // Set breakpoint
10185    if (swiper.params.breakpoints) {
10186      swiper.setBreakpoint();
10187    }
10188
10189    // Add Classes
10190    swiper.addClasses();
10191
10192    // Update size
10193    swiper.updateSize();
10194
10195    // Update slides
10196    swiper.updateSlides();
10197    if (swiper.params.watchOverflow) {
10198      swiper.checkOverflow();
10199    }
10200
10201    // Set Grab Cursor
10202    if (swiper.params.grabCursor && swiper.enabled) {
10203      swiper.setGrabCursor();
10204    }
10205
10206    // Slide To Initial Slide
10207    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
10208      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
10209    } else {
10210      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
10211    }
10212
10213    // Create loop
10214    if (swiper.params.loop) {
10215      swiper.loopCreate(undefined, true);
10216    }
10217
10218    // Attach events
10219    swiper.attachEvents();
10220    const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
10221    if (swiper.isElement) {
10222      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
10223    }
10224    lazyElements.forEach(imageEl => {
10225      if (imageEl.complete) {
10226        processLazyPreloader(swiper, imageEl);
10227      } else {
10228        imageEl.addEventListener('load', e => {
10229          processLazyPreloader(swiper, e.target);
10230        });
10231      }
10232    });
10233    preload(swiper);
10234
10235    // Init Flag
10236    swiper.initialized = true;
10237    preload(swiper);
10238
10239    // Emit
10240    swiper.emit('init');
10241    swiper.emit('afterInit');
10242    return swiper;
10243  }
10244  destroy(deleteInstance, cleanStyles) {
10245    if (deleteInstance === void 0) {
10246      deleteInstance = true;
10247    }
10248    if (cleanStyles === void 0) {
10249      cleanStyles = true;
10250    }
10251    const swiper = this;
10252    const {
10253      params,
10254      el,
10255      wrapperEl,
10256      slides
10257    } = swiper;
10258    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
10259      return null;
10260    }
10261    swiper.emit('beforeDestroy');
10262
10263    // Init Flag
10264    swiper.initialized = false;
10265
10266    // Detach events
10267    swiper.detachEvents();
10268
10269    // Destroy loop
10270    if (params.loop) {
10271      swiper.loopDestroy();
10272    }
10273
10274    // Cleanup styles
10275    if (cleanStyles) {
10276      swiper.removeClasses();
10277      if (el && typeof el !== 'string') {
10278        el.removeAttribute('style');
10279      }
10280      if (wrapperEl) {
10281        wrapperEl.removeAttribute('style');
10282      }
10283      if (slides && slides.length) {
10284        slides.forEach(slideEl => {
10285          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
10286          slideEl.removeAttribute('style');
10287          slideEl.removeAttribute('data-swiper-slide-index');
10288        });
10289      }
10290    }
10291    swiper.emit('destroy');
10292
10293    // Detach emitter events
10294    Object.keys(swiper.eventsListeners).forEach(eventName => {
10295      swiper.off(eventName);
10296    });
10297    if (deleteInstance !== false) {
10298      if (swiper.el && typeof swiper.el !== 'string') {
10299        swiper.el.swiper = null;
10300      }
10301      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper);
10302    }
10303    swiper.destroyed = true;
10304    return null;
10305  }
10306  static extendDefaults(newDefaults) {
10307    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(extendedDefaults, newDefaults);
10308  }
10309  static get extendedDefaults() {
10310    return extendedDefaults;
10311  }
10312  static get defaults() {
10313    return defaults;
10314  }
10315  static installModule(mod) {
10316    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
10317    const modules = Swiper.prototype.__modules__;
10318    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
10319      modules.push(mod);
10320    }
10321  }
10322  static use(module) {
10323    if (Array.isArray(module)) {
10324      module.forEach(m => Swiper.installModule(m));
10325      return Swiper;
10326    }
10327    Swiper.installModule(module);
10328    return Swiper;
10329  }
10330}
10331Object.keys(prototypes).forEach(prototypeGroup => {
10332  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
10333    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
10334  });
10335});
10336Swiper.use([Resize, Observer]);
10337
10338
10339
10340
10341/***/ }),
10342
vendor: 13,526 bytes, lines 10343-10712
10343/***/ "./node_modules/swiper/shared/utils.mjs":
10344/*!**********************************************!*\
10345  !*** ./node_modules/swiper/shared/utils.mjs ***!
10346  \**********************************************/
10347/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10348
10349"use strict";
10350__webpack_require__.r(__webpack_exports__);
10351/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10352/* harmony export */   a: function() { return /* binding */ elementParents; },
10353/* harmony export */   b: function() { return /* binding */ elementOffset; },
10354/* harmony export */   c: function() { return /* binding */ createElement; },
10355/* harmony export */   d: function() { return /* binding */ now; },
10356/* harmony export */   e: function() { return /* binding */ elementChildren; },
10357/* harmony export */   f: function() { return /* binding */ elementOuterSize; },
10358/* harmony export */   g: function() { return /* binding */ getSlideTransformEl; },
10359/* harmony export */   h: function() { return /* binding */ elementIndex; },
10360/* harmony export */   i: function() { return /* binding */ classesToTokens; },
10361/* harmony export */   j: function() { return /* binding */ getTranslate; },
10362/* harmony export */   k: function() { return /* binding */ elementTransitionEnd; },
10363/* harmony export */   l: function() { return /* binding */ isObject; },
10364/* harmony export */   m: function() { return /* binding */ makeElementsArray; },
10365/* harmony export */   n: function() { return /* binding */ nextTick; },
10366/* harmony export */   o: function() { return /* binding */ getRotateFix; },
10367/* harmony export */   p: function() { return /* binding */ elementStyle; },
10368/* harmony export */   q: function() { return /* binding */ elementNextAll; },
10369/* harmony export */   r: function() { return /* binding */ elementPrevAll; },
10370/* harmony export */   s: function() { return /* binding */ setCSSProperty; },
10371/* harmony export */   t: function() { return /* binding */ animateCSSModeScroll; },
10372/* harmony export */   u: function() { return /* binding */ showWarning; },
10373/* harmony export */   v: function() { return /* binding */ elementIsChildOf; },
10374/* harmony export */   w: function() { return /* binding */ extend; },
10375/* harmony export */   x: function() { return /* binding */ deleteProps; }
10376/* harmony export */ });
10377/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
10378
10379
10380function classesToTokens(classes) {
10381  if (classes === void 0) {
10382    classes = '';
10383  }
10384  return classes.trim().split(' ').filter(c => !!c.trim());
10385}
10386
10387function deleteProps(obj) {
10388  const object = obj;
10389  Object.keys(object).forEach(key => {
10390    try {
10391      object[key] = null;
10392    } catch (e) {
10393      // no getter for object
10394    }
10395    try {
10396      delete object[key];
10397    } catch (e) {
10398      // something got wrong
10399    }
10400  });
10401}
10402function nextTick(callback, delay) {
10403  if (delay === void 0) {
10404    delay = 0;
10405  }
10406  return setTimeout(callback, delay);
10407}
10408function now() {
10409  return Date.now();
10410}
10411function getComputedStyle(el) {
10412  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10413  let style;
10414  if (window.getComputedStyle) {
10415    style = window.getComputedStyle(el, null);
10416  }
10417  if (!style && el.currentStyle) {
10418    style = el.currentStyle;
10419  }
10420  if (!style) {
10421    style = el.style;
10422  }
10423  return style;
10424}
10425function getTranslate(el, axis) {
10426  if (axis === void 0) {
10427    axis = 'x';
10428  }
10429  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10430  let matrix;
10431  let curTransform;
10432  let transformMatrix;
10433  const curStyle = getComputedStyle(el);
10434  if (window.WebKitCSSMatrix) {
10435    curTransform = curStyle.transform || curStyle.webkitTransform;
10436    if (curTransform.split(',').length > 6) {
10437      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
10438    }
10439    // Some old versions of Webkit choke when 'none' is passed; pass
10440    // empty string instead in this case
10441    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
10442  } else {
10443    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
10444    matrix = transformMatrix.toString().split(',');
10445  }
10446  if (axis === 'x') {
10447    // Latest Chrome and webkits Fix
10448    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
10449    // Crazy IE10 Matrix
10450    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
10451    // Normal Browsers
10452    else curTransform = parseFloat(matrix[4]);
10453  }
10454  if (axis === 'y') {
10455    // Latest Chrome and webkits Fix
10456    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
10457    // Crazy IE10 Matrix
10458    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
10459    // Normal Browsers
10460    else curTransform = parseFloat(matrix[5]);
10461  }
10462  return curTransform || 0;
10463}
10464function isObject(o) {
10465  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
10466}
10467function isNode(node) {
10468  // eslint-disable-next-line
10469  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
10470    return node instanceof HTMLElement;
10471  }
10472  return node && (node.nodeType === 1 || node.nodeType === 11);
10473}
10474function extend() {
10475  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
10476  const noExtend = ['__proto__', 'constructor', 'prototype'];
10477  for (let i = 1; i < arguments.length; i += 1) {
10478    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
10479    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
10480      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
10481      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
10482        const nextKey = keysArray[nextIndex];
10483        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
10484        if (desc !== undefined && desc.enumerable) {
10485          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
10486            if (nextSource[nextKey].__swiper__) {
10487              to[nextKey] = nextSource[nextKey];
10488            } else {
10489              extend(to[nextKey], nextSource[nextKey]);
10490            }
10491          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
10492            to[nextKey] = {};
10493            if (nextSource[nextKey].__swiper__) {
10494              to[nextKey] = nextSource[nextKey];
10495            } else {
10496              extend(to[nextKey], nextSource[nextKey]);
10497            }
10498          } else {
10499            to[nextKey] = nextSource[nextKey];
10500          }
10501        }
10502      }
10503    }
10504  }
10505  return to;
10506}
10507function setCSSProperty(el, varName, varValue) {
10508  el.style.setProperty(varName, varValue);
10509}
10510function animateCSSModeScroll(_ref) {
10511  let {
10512    swiper,
10513    targetPosition,
10514    side
10515  } = _ref;
10516  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10517  const startPosition = -swiper.translate;
10518  let startTime = null;
10519  let time;
10520  const duration = swiper.params.speed;
10521  swiper.wrapperEl.style.scrollSnapType = 'none';
10522  window.cancelAnimationFrame(swiper.cssModeFrameID);
10523  const dir = targetPosition > startPosition ? 'next' : 'prev';
10524  const isOutOfBound = (current, target) => {
10525    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
10526  };
10527  const animate = () => {
10528    time = new Date().getTime();
10529    if (startTime === null) {
10530      startTime = time;
10531    }
10532    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
10533    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
10534    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
10535    if (isOutOfBound(currentPosition, targetPosition)) {
10536      currentPosition = targetPosition;
10537    }
10538    swiper.wrapperEl.scrollTo({
10539      [side]: currentPosition
10540    });
10541    if (isOutOfBound(currentPosition, targetPosition)) {
10542      swiper.wrapperEl.style.overflow = 'hidden';
10543      swiper.wrapperEl.style.scrollSnapType = '';
10544      setTimeout(() => {
10545        swiper.wrapperEl.style.overflow = '';
10546        swiper.wrapperEl.scrollTo({
10547          [side]: currentPosition
10548        });
10549      });
10550      window.cancelAnimationFrame(swiper.cssModeFrameID);
10551      return;
10552    }
10553    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
10554  };
10555  animate();
10556}
10557function getSlideTransformEl(slideEl) {
10558  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
10559}
10560function elementChildren(element, selector) {
10561  if (selector === void 0) {
10562    selector = '';
10563  }
10564  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10565  const children = [...element.children];
10566  if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {
10567    children.push(...element.assignedElements());
10568  }
10569  if (!selector) {
10570    return children;
10571  }
10572  return children.filter(el => el.matches(selector));
10573}
10574function elementIsChildOfSlot(el, slot) {
10575  // Breadth-first search through all parent's children and assigned elements
10576  const elementsQueue = [slot];
10577  while (elementsQueue.length > 0) {
10578    const elementToCheck = elementsQueue.shift();
10579    if (el === elementToCheck) {
10580      return true;
10581    }
10582    elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));
10583  }
10584}
10585function elementIsChildOf(el, parent) {
10586  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10587  let isChild = parent.contains(el);
10588  if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {
10589    const children = [...parent.assignedElements()];
10590    isChild = children.includes(el);
10591    if (!isChild) {
10592      isChild = elementIsChildOfSlot(el, parent);
10593    }
10594  }
10595  return isChild;
10596}
10597function showWarning(text) {
10598  try {
10599    console.warn(text);
10600    return;
10601  } catch (err) {
10602    // err
10603  }
10604}
10605function createElement(tag, classes) {
10606  if (classes === void 0) {
10607    classes = [];
10608  }
10609  const el = document.createElement(tag);
10610  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));
10611  return el;
10612}
10613function elementOffset(el) {
10614  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10615  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
10616  const box = el.getBoundingClientRect();
10617  const body = document.body;
10618  const clientTop = el.clientTop || body.clientTop || 0;
10619  const clientLeft = el.clientLeft || body.clientLeft || 0;
10620  const scrollTop = el === window ? window.scrollY : el.scrollTop;
10621  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
10622  return {
10623    top: box.top + scrollTop - clientTop,
10624    left: box.left + scrollLeft - clientLeft
10625  };
10626}
10627function elementPrevAll(el, selector) {
10628  const prevEls = [];
10629  while (el.previousElementSibling) {
10630    const prev = el.previousElementSibling; // eslint-disable-line
10631    if (selector) {
10632      if (prev.matches(selector)) prevEls.push(prev);
10633    } else prevEls.push(prev);
10634    el = prev;
10635  }
10636  return prevEls;
10637}
10638function elementNextAll(el, selector) {
10639  const nextEls = [];
10640  while (el.nextElementSibling) {
10641    const next = el.nextElementSibling; // eslint-disable-line
10642    if (selector) {
10643      if (next.matches(selector)) nextEls.push(next);
10644    } else nextEls.push(next);
10645    el = next;
10646  }
10647  return nextEls;
10648}
10649function elementStyle(el, prop) {
10650  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10651  return window.getComputedStyle(el, null).getPropertyValue(prop);
10652}
10653function elementIndex(el) {
10654  let child = el;
10655  let i;
10656  if (child) {
10657    i = 0;
10658    // eslint-disable-next-line
10659    while ((child = child.previousSibling) !== null) {
10660      if (child.nodeType === 1) i += 1;
10661    }
10662    return i;
10663  }
10664  return undefined;
10665}
10666function elementParents(el, selector) {
10667  const parents = []; // eslint-disable-line
10668  let parent = el.parentElement; // eslint-disable-line
10669  while (parent) {
10670    if (selector) {
10671      if (parent.matches(selector)) parents.push(parent);
10672    } else {
10673      parents.push(parent);
10674    }
10675    parent = parent.parentElement;
10676  }
10677  return parents;
10678}
10679function elementTransitionEnd(el, callback) {
10680  function fireCallBack(e) {
10681    if (e.target !== el) return;
10682    callback.call(el, e);
10683    el.removeEventListener('transitionend', fireCallBack);
10684  }
10685  if (callback) {
10686    el.addEventListener('transitionend', fireCallBack);
10687  }
10688}
10689function elementOuterSize(el, size, includeMargins) {
10690  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10691  if (includeMargins) {
10692    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));
10693  }
10694  return el.offsetWidth;
10695}
10696function makeElementsArray(el) {
10697  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
10698}
10699function getRotateFix(swiper) {
10700  return v => {
10701    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {
10702      return v + 0.001;
10703    }
10704    return v;
10705  };
10706}
10707
10708
10709
10710
10711/***/ }),
10712
vendor: 8,781 bytes, lines 10713-10729
10713/***/ "./node_modules/swiper/swiper.css":
10714/*!****************************************!*\
10715  !*** ./node_modules/swiper/swiper.css ***!
10716  \****************************************/
10717/***/ (function(module, exports, __webpack_require__) {
10718
10719// Imports
10720var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
10721exports = ___CSS_LOADER_API_IMPORT___(false);
10722// Module
10723exports.push([module.id, "/**\n * Swiper 11.2.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: March 19, 2025\n */\n/* FONT_START */\n@font-face {\n  font-family: \"swiper-icons\";\n  src: url(\"data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA\");\n  font-weight: 400;\n  font-style: normal;\n}\n/* FONT_END */\n:root {\n  --swiper-theme-color: #007aff;\n  /*\n  --swiper-preloader-color: var(--swiper-theme-color);\n  --swiper-wrapper-transition-timing-function: initial;\n  */\n}\n\n:host {\n  position: relative;\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n  z-index: 1;\n}\n\n.swiper {\n  margin-left: auto;\n  margin-right: auto;\n  position: relative;\n  overflow: hidden;\n  list-style: none;\n  padding: 0;\n  /* Fix of Webkit flickering */\n  z-index: 1;\n  display: block;\n}\n\n.swiper-vertical > .swiper-wrapper {\n  flex-direction: column;\n}\n\n.swiper-wrapper {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  z-index: 1;\n  display: flex;\n  transition-property: transform;\n  transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n  box-sizing: content-box;\n}\n\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n  transform: translate3d(0px, 0, 0);\n}\n\n.swiper-horizontal {\n  touch-action: pan-y;\n}\n\n.swiper-vertical {\n  touch-action: pan-x;\n}\n\n.swiper-slide {\n  flex-shrink: 0;\n  width: 100%;\n  height: 100%;\n  position: relative;\n  transition-property: transform;\n  display: block;\n}\n\n.swiper-slide-invisible-blank {\n  visibility: hidden;\n}\n\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n  height: auto;\n}\n\n.swiper-autoheight .swiper-wrapper {\n  align-items: flex-start;\n  transition-property: transform, height;\n}\n\n.swiper-backface-hidden .swiper-slide {\n  transform: translateZ(0);\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n}\n\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n  perspective: 1200px;\n}\n\n.swiper-3d .swiper-wrapper {\n  transform-style: preserve-3d;\n}\n\n.swiper-3d {\n  perspective: 1200px;\n}\n\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n  transform-style: preserve-3d;\n}\n\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n  overflow: auto;\n  scrollbar-width: none;\n  /* For Firefox */\n  -ms-overflow-style: none;\n  /* For Internet Explorer and Edge */\n}\n\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n  display: none;\n}\n\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n  scroll-snap-align: start start;\n}\n\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n  scroll-snap-type: x mandatory;\n}\n\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n  scroll-snap-type: y mandatory;\n}\n\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n  scroll-snap-type: none;\n}\n\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n  scroll-snap-align: none;\n}\n\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n  content: \"\";\n  flex-shrink: 0;\n  order: 9999;\n}\n\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n  scroll-snap-align: center center;\n  scroll-snap-stop: always;\n}\n\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n  margin-inline-start: var(--swiper-centered-offset-before);\n}\n\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n  height: 100%;\n  min-height: 1px;\n  width: var(--swiper-centered-offset-after);\n}\n\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n  margin-block-start: var(--swiper-centered-offset-before);\n}\n\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n  width: 100%;\n  min-width: 1px;\n  height: var(--swiper-centered-offset-after);\n}\n\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  pointer-events: none;\n  z-index: 10;\n}\n\n.swiper-3d .swiper-slide-shadow {\n  background: rgba(0, 0, 0, 0.15);\n}\n\n.swiper-3d .swiper-slide-shadow-left {\n  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n\n.swiper-3d .swiper-slide-shadow-right {\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n\n.swiper-3d .swiper-slide-shadow-top {\n  background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n\n.swiper-3d .swiper-slide-shadow-bottom {\n  background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n\n.swiper-lazy-preloader {\n  width: 42px;\n  height: 42px;\n  position: absolute;\n  left: 50%;\n  top: 50%;\n  margin-left: -21px;\n  margin-top: -21px;\n  z-index: 10;\n  transform-origin: 50%;\n  box-sizing: border-box;\n  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n  border-radius: 50%;\n  border-top-color: transparent;\n}\n\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n  animation: swiper-preloader-spin 1s infinite linear;\n}\n\n.swiper-lazy-preloader-white {\n  --swiper-preloader-color: #fff;\n}\n\n.swiper-lazy-preloader-black {\n  --swiper-preloader-color: #000;\n}\n\n@keyframes swiper-preloader-spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n/* Slide styles end */", ""]);
10724// Exports
10725module.exports = exports;
10726
10727
10728/***/ }),
10729
vendor: 1,135 bytes, lines 10730-10758
10730/***/ "./node_modules/swiper/swiper.mjs":
10731/*!****************************************!*\
10732  !*** ./node_modules/swiper/swiper.mjs ***!
10733  \****************************************/
10734/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10735
10736"use strict";
10737__webpack_require__.r(__webpack_exports__);
10738/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10739/* harmony export */   Swiper: function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; },
10740/* harmony export */   "default": function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; }
10741/* harmony export */ });
10742/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs");
10743/**
10744 * Swiper 11.2.6
10745 * Most modern mobile touch slider and framework with hardware accelerated transitions
10746 * https://swiperjs.com
10747 *
10748 * Copyright 2014-2025 Vladimir Kharlampidi
10749 *
10750 * Released under the MIT License
10751 *
10752 * Released on: March 19, 2025
10753 */
10754
10755
10756
10757
10758/***/ })
vendor: 4,089 bytes, lines 10758-10841
10758
10759
10760/******/ 	});
10761/************************************************************************/
10762/******/ 	// The module cache
10763/******/ 	var __webpack_module_cache__ = {};
10764/******/ 	
10765/******/ 	// The require function
10766/******/ 	function __webpack_require__(moduleId) {
10767/******/ 		// Check if module is in cache
10768/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
10769/******/ 		if (cachedModule !== undefined) {
10770/******/ 			return cachedModule.exports;
10771/******/ 		}
10772/******/ 		// Create a new module (and put it into the cache)
10773/******/ 		var module = __webpack_module_cache__[moduleId] = {
10774/******/ 			id: moduleId,
10775/******/ 			// no module.loaded needed
10776/******/ 			exports: {}
10777/******/ 		};
10778/******/ 	
10779/******/ 		// Execute the module function
10780/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
10781/******/ 	
10782/******/ 		// Return the exports of the module
10783/******/ 		return module.exports;
10784/******/ 	}
10785/******/ 	
10786/************************************************************************/
10787/******/ 	/* webpack/runtime/compat get default export */
10788/******/ 	!function() {
10789/******/ 		// getDefaultExport function for compatibility with non-harmony modules
10790/******/ 		__webpack_require__.n = function(module) {
10791/******/ 			var getter = module && module.__esModule ?
10792/******/ 				function() { return module['default']; } :
10793/******/ 				function() { return module; };
10794/******/ 			__webpack_require__.d(getter, { a: getter });
10795/******/ 			return getter;
10796/******/ 		};
10797/******/ 	}();
10798/******/ 	
10799/******/ 	/* webpack/runtime/define property getters */
10800/******/ 	!function() {
10801/******/ 		// define getter functions for harmony exports
10802/******/ 		__webpack_require__.d = function(exports, definition) {
10803/******/ 			for(var key in definition) {
10804/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
10805/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
10806/******/ 				}
10807/******/ 			}
10808/******/ 		};
10809/******/ 	}();
10810/******/ 	
10811/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
10812/******/ 	!function() {
10813/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
10814/******/ 	}();
10815/******/ 	
10816/******/ 	/* webpack/runtime/make namespace object */
10817/******/ 	!function() {
10818/******/ 		// define __esModule on exports
10819/******/ 		__webpack_require__.r = function(exports) {
10820/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
10821/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
10822/******/ 			}
10823/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
10824/******/ 		};
10825/******/ 	}();
10826/******/ 	
10827/************************************************************************/
10828var __webpack_exports__ = {};
10829// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
10830!function() {
10831"use strict";
10832/*!*****************************************************!*\
10833  !*** ./parts/blocks/grid-of-items/grid-of-items.js ***!
10834  \*****************************************************/
10835__webpack_require__.r(__webpack_exports__);
10836/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.mjs");
10837/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "./node_modules/swiper/modules/index.mjs");
10838/* harmony import */ var swiper_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! swiper/css */ "./node_modules/swiper/swiper.css");
10839/* harmony import */ var swiper_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(swiper_css__WEBPACK_IMPORTED_MODULE_2__);
10840/* harmony import */ var swiper_css_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! swiper/css/navigation */ "./node_modules/swiper/modules/navigation.css");
10841/* harmony import */ var swiper_css_navigation__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(swiper_css_navigation__WEBPACK_IMPORTED_MODULE_3__);
10842/* harmony import */ var swiper_css_autoplay__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! swiper/css/autoplay */ "./node_modules/swiper/modules/autoplay.css");
10843/* harmony import */ var swiper_css_autoplay__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(swiper_css_autoplay__WEBPACK_IMPORTED_MODULE_4__);
10844/* harmony import */ var swiper_css_pagination__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! swiper/css/pagination */ "./node_modules/swiper/modules/pagination.css");
10845/* harmony import */ var swiper_css_pagination__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(swiper_css_pagination__WEBPACK_IMPORTED_MODULE_5__);
10846
10847
10848
10849
10850
10851
10852function initGridOfItemsBlock() {
10853  initGridOfItemsCarousels();
10854}
10855function initGridOfItemsCarousels() {
10856  var carousels = document.querySelectorAll('.js-grid-of-items-swiper');
10857  if (!carousels.length) {
10858    return;
10859  }
10860  carousels.forEach(function (carouselElement) {
10861    var slidesPerViewDesktop = parseFloat(carouselElement.dataset.slidesPerView) || 3;
10862    var autoplaySpeed = parseInt(carouselElement.dataset.autoplay, 10) || 0;
10863    var pauseOnHover = carouselElement.dataset.pauseHover === 'true';
10864    var showNavigation = carouselElement.dataset.showNavigation === 'true';
10865    var showProgressbar = carouselElement.dataset.showProgressbar === 'true';
10866    var container = carouselElement.closest('.grid-of-items__carousel-container');
10867    var prevButton = container ? container.querySelector('.js-grid-of-items-prev') : null;
10868    var nextButton = container ? container.querySelector('.js-grid-of-items-next') : null;
10869    var paginationEl = container ? container.querySelector('.js-grid-of-items-pagination') : null;
10870    try {
10871      var swiperModules = [];
10872      var swiperConfig = {
10873        slidesPerView: 1,
10874        spaceBetween: 16,
10875        loop: false,
10876        // Loop will be conditional based on slides count later
10877        grabCursor: true,
10878        speed: 700,
10879        breakpoints: {
10880          768: {
10881            slidesPerView: Math.min(2, slidesPerViewDesktop),
10882            spaceBetween: 24
10883          },
10884          1024: {
10885            slidesPerView: slidesPerViewDesktop,
10886            spaceBetween: 24
10887          }
10888        }
10889      };
10890      if (showNavigation && prevButton && nextButton) {
10891        swiperModules.push(swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation);
10892        swiperConfig.navigation = {
10893          nextEl: nextButton,
10894          prevEl: prevButton
10895        };
10896      }
10897      if (autoplaySpeed > 0) {
10898        swiperModules.push(swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Autoplay);
10899        swiperConfig.autoplay = {
10900          delay: autoplaySpeed,
10901          disableOnInteraction: false,
10902          pauseOnMouseEnter: pauseOnHover
10903        };
10904      }
10905      if (showProgressbar && paginationEl) {
10906        swiperModules.push(swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination);
10907        swiperConfig.pagination = {
10908          el: paginationEl,
10909          type: 'progressbar',
10910          hide: false
10911        };
10912      }
10913      swiperConfig.modules = swiperModules;
10914      var swiper = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](carouselElement, swiperConfig);
10915
10916      // Conditionally enable loop
10917      var slidesCount = swiper.slides ? swiper.slides.length : 0;
10918      if (slidesCount > slidesPerViewDesktop) {
10919        swiper.params.loop = true;
10920        swiper.update(); // Update swiper instance with new loop parameter
10921      }
10922
10923      // Manual hover listeners for pauseOnHover if autoplay is active
10924      if (swiperConfig.autoplay && pauseOnHover) {
10925        carouselElement.addEventListener('mouseenter', function () {
10926          if (swiper.autoplay && swiper.autoplay.running) {
10927            swiper.autoplay.stop();
10928          }
10929        });
10930        carouselElement.addEventListener('mouseleave', function () {
10931          if (swiper.autoplay && !swiper.autoplay.running) {
10932            swiper.autoplay.start();
10933          }
10934        });
10935      }
10936    } catch (error) {
10937      console.error('Swiper initialization error for grid-of-items:', error);
10938    }
10939  });
10940}
10941initGridOfItemsBlock();
10942}();
10943/******/ })()
10944;
10945//# sourceMappingURL=grid-of-items.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.