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.